diff --git a/abi-bindings/go/ERC20Destination/ERC20Destination.go b/abi-bindings/go/ERC20Destination/ERC20Destination.go index 38db6e44..341d0459 100644 --- a/abi-bindings/go/ERC20Destination/ERC20Destination.go +++ b/abi-bindings/go/ERC20Destination/ERC20Destination.go @@ -42,7 +42,7 @@ type SendTokensInput struct { // ERC20DestinationMetaData contains all meta data concerning the ERC20Destination contract. var ERC20DestinationMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenSourceAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"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\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SendTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"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\":\"SEND_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"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\":[],\"name\":\"feeTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"teleporterRegistry\",\"outputs\":[{\"internalType\":\"contractTeleporterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenSourceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6101406040523480156200001257600080fd5b5060405162002e4338038062002e438339810160408190526200003591620005eb565b6001600055828288888888308484816001600160a01b038116620000c65760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000111573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001379190620006b3565b600255506200014633620003da565b62000151816200042c565b50507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc9190620006b3565b60a05282620002335760405162461bcd60e51b8152602060048201526035602482015260008051602062002e2383398151915260448201527f20736f7572636520626c6f636b636861696e20494400000000000000000000006064820152608401620000bd565b60a0518303620002bb5760405162461bcd60e51b815260206004820152604660248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a2063616e6e60448201527f6f74206465706c6f7920746f2073616d6520626c6f636b636861696e20617320606482015265736f7572636560d01b608482015260a401620000bd565b6001600160a01b038216620003285760405162461bcd60e51b8152602060048201526035602482015260008051602062002e2383398151915260448201527f20746f6b656e20736f75726365206164647265737300000000000000000000006064820152608401620000bd565b6001600160a01b0381166200038a5760405162461bcd60e51b8152602060048201526032602482015260008051602062002e238339815191526044820152712066656520746f6b656e206164647265737360701b6064820152608401620000bd565b60c0929092526001600160a01b0390811660e05216610100525060079050620003b483826200075c565b506008620003c382826200075c565b50505060ff16610120525062000828945050505050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62000436620004ab565b6001600160a01b0381166200049d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620000bd565b620004a881620003da565b50565b6003546001600160a01b03163314620005075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000bd565b565b80516001600160a01b03811681146200052157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200054e57600080fd5b81516001600160401b03808211156200056b576200056b62000526565b604051601f8301601f19908116603f0116810190828211818310171562000596576200059662000526565b81604052838152602092508683858801011115620005b357600080fd5b600091505b83821015620005d75785820183015181830184015290820190620005b8565b600093810190920192909252949350505050565b600080600080600080600060e0888a0312156200060757600080fd5b620006128862000509565b9650620006226020890162000509565b955060408801519450620006396060890162000509565b60808901519094506001600160401b03808211156200065757600080fd5b620006658b838c016200053c565b945060a08a01519150808211156200067c57600080fd5b506200068b8a828b016200053c565b92505060c088015160ff81168114620006a357600080fd5b8091505092959891949750929550565b600060208284031215620006c657600080fd5b5051919050565b600181811c90821680620006e257607f821691505b6020821081036200070357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200075757600081815260208120601f850160051c81016020861015620007325750805b601f850160051c820191505b8181101562000753578281556001016200073e565b5050505b505050565b81516001600160401b0381111562000778576200077862000526565b6200079081620007898454620006cd565b8462000709565b602080601f831160018114620007c85760008415620007af5750858301515b600019600386901b1c1916600185901b17855562000753565b600085815260208120601f198616915b82811015620007f957888601518255948401946001909101908401620007d8565b5085821015620008185787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610100516101205161255e620008c560003960006102a40152600081816103a801526114fe01526000818161044a015281816111140152818161132801526114c40152600081816102660152818161108c015281816112f8015261149e0152600081816103e201526113850152600081816102140152818161083501528181610de90152611b3e015261255e6000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063c868efaa11610097578063dd62ed3e11610071578063dd62ed3e1461040c578063e8535e931461041f578063f2fde38b14610432578063f5ea06031461044557600080fd5b8063c868efaa146103ca578063d127dc9b146103dd578063d2cc7a701461040457600080fd5b806397314297116100d35780639731429714610351578063a457c2d71461037d578063a9059cbb14610390578063b8df0dea146103a357600080fd5b8063715018a6146103305780638da5cb5b1461033857806395d89b411461034957600080fd5b806329b7b3fd11610166578063395093511161014057806339509351146102ce5780634511243e146102e15780635eb99514146102f457806370a082311461030757600080fd5b806329b7b3fd146102615780632b0d8f1814610288578063313ce5671461029d57600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806310397b01146101ef57806318160ddd146102075780631a7f5bec1461020f57806323b872dd1461024e575b600080fd5b6101b661046c565b6040516101c3919061201c565b60405180910390f35b6101df6101da366004612044565b6104fe565b60405190151581526020016101c3565b6101f9620493e081565b6040519081526020016101c3565b6006546101f9565b6102367f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101c3565b6101df61025c366004612070565b610518565b6101f97f000000000000000000000000000000000000000000000000000000000000000081565b61029b6102963660046120b1565b61053c565b005b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101c3565b6101df6102dc366004612044565b610641565b61029b6102ef3660046120b1565b610663565b61029b6103023660046120ce565b610760565b6101f96103153660046120b1565b6001600160a01b031660009081526004602052604090205490565b61029b610774565b6003546001600160a01b0316610236565b6101b6610788565b6101df61035f3660046120b1565b6001600160a01b031660009081526001602052604090205460ff1690565b6101df61038b366004612044565b610797565b6101df61039e366004612044565b610812565b6102367f000000000000000000000000000000000000000000000000000000000000000081565b61029b6103d83660046120e7565b610820565b6101f97f000000000000000000000000000000000000000000000000000000000000000081565b6002546101f9565b6101f961041a366004612170565b6109ea565b61029b61042d3660046121a9565b610a15565b61029b6104403660046120b1565b610a23565b6102367f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461047b906121e5565b80601f01602080910402602001604051908101604052809291908181526020018280546104a7906121e5565b80156104f45780601f106104c9576101008083540402835291602001916104f4565b820191906000526020600020905b8154815290600101906020018083116104d757829003601f168201915b5050505050905090565b60003361050c818585610a99565b60019150505b92915050565b600033610526858285610bbe565b610531858585610c32565b506001949350505050565b610544610ddd565b6001600160a01b0381166105735760405162461bcd60e51b815260040161056a9061221f565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156105f25760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161056a565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b60003361050c81858561065483836109ea565b61065e9190612283565b610a99565b61066b610ddd565b6001600160a01b0381166106915760405162461bcd60e51b815260040161056a9061221f565b6001600160a01b03811660009081526001602052604090205460ff1661070b5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161056a565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b610768610ddd565b61077181610de5565b50565b61077c610f85565b6107866000610fdf565b565b60606008805461047b906121e5565b600033816107a582866109ea565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161056a565b6105318286868403610a99565b60003361050c818585610c32565b610828611031565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190612296565b101561092a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161056a565b6109333361035f565b156109995760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161056a565b6109da848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061108a92505050565b6109e46001600055565b50505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b610a1f82826111e5565b5050565b610a2b610f85565b6001600160a01b038116610a905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161056a565b61077181610fdf565b6001600160a01b038316610afb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161056a565b6001600160a01b038216610b5c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161056a565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610bca84846109ea565b905060001981146109e45781811015610c255760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161056a565b6109e48484848403610a99565b6001600160a01b038316610c965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161056a565b6001600160a01b038216610cf85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161056a565b6001600160a01b03831660009081526004602052604090205481811015610d705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161056a565b6001600160a01b0380851660008181526004602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dd09086815260200190565b60405180910390a36109e4565b610786610f85565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e699190612296565b60025490915081831115610ed95760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161056a565b808311610f4e5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161056a565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6003546001600160a01b031633146107865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161056a565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600054036110835760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161056a565b6002600055565b7f000000000000000000000000000000000000000000000000000000000000000083146111125760405162461bcd60e51b815260206004820152603060248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a20696e766160448201526f3634b21039b7bab931b29031b430b4b760811b606482015260840161056a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146111b95760405162461bcd60e51b815260206004820152603860248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a20696e766160448201527f6c696420746f6b656e20736f7572636520616464726573730000000000000000606482015260840161056a565b600080828060200190518101906111d091906122af565b915091506111de8282611696565b5050505050565b60006111f760408401602085016120b1565b6001600160a01b0316036112735760405162461bcd60e51b815260206004820152603b60248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a207a65726f60448201527f2064657374696e6174696f6e2062726964676520616464726573730000000000606482015260840161056a565b600061128560608401604085016120b1565b6001600160a01b0316036112f65760405162461bcd60e51b815260206004820152603260248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a207a65726f60448201527120726563697069656e74206164647265737360701b606482015260840161056a565b7f0000000000000000000000000000000000000000000000000000000000000000823503611383576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661135860408401602085016120b1565b6001600160a01b03161461137e5760405162461bcd60e51b815260040161056a906122dd565b6113e2565b7f00000000000000000000000000000000000000000000000000000000000000008235036113e257306113bc60408401602085016120b1565b6001600160a01b0316036113e25760405162461bcd60e51b815260040161056a906122dd565b6113eb816116a0565b90506113ff60808301356060840135612283565b81116114735760405162461bcd60e51b815260206004820152603d60248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a20696e737560448201527f6666696369656e7420616d6f756e7420746f20636f7665722066656573000000606482015260840161056a565b61148160608301358261233a565b905061148c816116ac565b60006116536040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200187606001358152508152602001620493e08152602001858060a00190611551919061234d565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160c081018252873581526020928301929091828201916115ad918a01908a016120b1565b6001600160a01b031681526020016115cb6060890160408a016120b1565b6001600160a01b0316815260808801356020820152600060408201526060016115f760a089018961234d565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505091525060405161163c919087906020016123e2565b6040516020818303038152906040528152506116b6565b9050336001600160a01b0316817f35971507d5275c40cb225115b67b12c9e28b4bb02e60366a5863d8320bd6386584604051610bb191815260200190565b505050565b610a1f82826117dc565b6000610512308361189d565b6107713082611a05565b6000806116c1611b39565b60408401516020015190915015611766576040830151516001600160a01b03166117435760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a207a65726f206665652060448201526c746f6b656e206164647265737360981b606482015260840161056a565b604083015160208101519051611766916001600160a01b03909116908390611c4d565b604051630624488560e41b81526001600160a01b0382169063624488509061179290869060040161244f565b6020604051808303816000875af11580156117b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d59190612296565b9392505050565b6001600160a01b0382166118325760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161056a565b80600660008282546118449190612283565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190612296565b90506119216001600160a01b038516333086611d32565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198c9190612296565b90508181116119f25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161056a565b6119fc828261233a565b95945050505050565b6001600160a01b038216611a655760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161056a565b6001600160a01b03821660009081526004602052604090205481811015611ad95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161056a565b6001600160a01b03831660008181526004602090815260408083208686039055600680548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbe91906124cd565b9050611be2816001600160a01b031660009081526001602052604090205460ff1690565b15611c485760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161056a565b919050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc29190612296565b611ccc9190612283565b6040516001600160a01b0385166024820152604481018290529091506109e490859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d6a565b6040516001600160a01b03808516602483015283166044820152606481018290526109e49085906323b872dd60e01b90608401611cfb565b6000611dbf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e3c9092919063ffffffff16565b8051909150156116915780806020019051810190611ddd91906124ea565b6116915760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161056a565b6060611e4b8484600085611e53565b949350505050565b606082471015611eb45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161056a565b600080866001600160a01b03168587604051611ed0919061250c565b60006040518083038185875af1925050503d8060008114611f0d576040519150601f19603f3d011682016040523d82523d6000602084013e611f12565b606091505b5091509150611f2387838387611f2e565b979650505050505050565b60608315611f9d578251600003611f96576001600160a01b0385163b611f965760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161056a565b5081611e4b565b611e4b8383815115611fb25781518083602001fd5b8060405162461bcd60e51b815260040161056a919061201c565b60005b83811015611fe7578181015183820152602001611fcf565b50506000910152565b60008151808452612008816020860160208601611fcc565b601f01601f19169290920160200192915050565b6020815260006117d56020830184611ff0565b6001600160a01b038116811461077157600080fd5b6000806040838503121561205757600080fd5b82356120628161202f565b946020939093013593505050565b60008060006060848603121561208557600080fd5b83356120908161202f565b925060208401356120a08161202f565b929592945050506040919091013590565b6000602082840312156120c357600080fd5b81356117d58161202f565b6000602082840312156120e057600080fd5b5035919050565b600080600080606085870312156120fd57600080fd5b84359350602085013561210f8161202f565b9250604085013567ffffffffffffffff8082111561212c57600080fd5b818701915087601f83011261214057600080fd5b81358181111561214f57600080fd5b88602082850101111561216157600080fd5b95989497505060200194505050565b6000806040838503121561218357600080fd5b823561218e8161202f565b9150602083013561219e8161202f565b809150509250929050565b600080604083850312156121bc57600080fd5b823567ffffffffffffffff8111156121d357600080fd5b830160c0818603121561206257600080fd5b600181811c908216806121f957607f821691505b60208210810361221957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156105125761051261226d565b6000602082840312156122a857600080fd5b5051919050565b600080604083850312156122c257600080fd5b82516122cd8161202f565b6020939093015192949293505050565b6020808252603e908201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a20696e766160408201527f6c69642064657374696e6174696f6e2062726964676520616464726573730000606082015260800190565b818103818111156105125761051261226d565b6000808335601e1984360301811261236457600080fd5b83018035915067ffffffffffffffff82111561237f57600080fd5b6020019150600581901b360382131561239757600080fd5b9250929050565b600081518084526020808501945080840160005b838110156123d75781516001600160a01b0316875295820195908201906001016123b2565b509495945050505050565b60408152825160408201526000602084015160018060a01b0380821660608501528060408701511660808501525050606084015160a0830152608084015160c083015260a084015160c060e084015261243f61010084018261239e565b9150508260208301529392505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526124b061010084018261239e565b905060a0840151601f198483030160e08501526119fc8282611ff0565b6000602082840312156124df57600080fd5b81516117d58161202f565b6000602082840312156124fc57600080fd5b815180151581146117d557600080fd5b6000825161251e818460208701611fcc565b919091019291505056fea264697066735822122086dc1beeb10221ccf0553e3b2b91804fa9073aa6dc426f0975f036c87b8cc1d964736f6c6343000812003354656c65706f72746572546f6b656e44657374696e6174696f6e3a207a65726f", + Bin: "0x6101406040523480156200001257600080fd5b5060405162002e4338038062002e438339810160408190526200003591620005eb565b6001600055828288888888308484816001600160a01b038116620000c65760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000111573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001379190620006b3565b600255506200014633620003da565b62000151816200042c565b50507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc9190620006b3565b60a05282620002335760405162461bcd60e51b8152602060048201526035602482015260008051602062002e2383398151915260448201527f20736f7572636520626c6f636b636861696e20494400000000000000000000006064820152608401620000bd565b60a0518303620002bb5760405162461bcd60e51b815260206004820152604660248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a2063616e6e60448201527f6f74206465706c6f7920746f2073616d6520626c6f636b636861696e20617320606482015265736f7572636560d01b608482015260a401620000bd565b6001600160a01b038216620003285760405162461bcd60e51b8152602060048201526035602482015260008051602062002e2383398151915260448201527f20746f6b656e20736f75726365206164647265737300000000000000000000006064820152608401620000bd565b6001600160a01b0381166200038a5760405162461bcd60e51b8152602060048201526032602482015260008051602062002e238339815191526044820152712066656520746f6b656e206164647265737360701b6064820152608401620000bd565b60c0929092526001600160a01b0390811660e05216610100525060079050620003b483826200075c565b506008620003c382826200075c565b50505060ff16610120525062000828945050505050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62000436620004ab565b6001600160a01b0381166200049d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620000bd565b620004a881620003da565b50565b6003546001600160a01b03163314620005075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000bd565b565b80516001600160a01b03811681146200052157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200054e57600080fd5b81516001600160401b03808211156200056b576200056b62000526565b604051601f8301601f19908116603f0116810190828211818310171562000596576200059662000526565b81604052838152602092508683858801011115620005b357600080fd5b600091505b83821015620005d75785820183015181830184015290820190620005b8565b600093810190920192909252949350505050565b600080600080600080600060e0888a0312156200060757600080fd5b620006128862000509565b9650620006226020890162000509565b955060408801519450620006396060890162000509565b60808901519094506001600160401b03808211156200065757600080fd5b620006658b838c016200053c565b945060a08a01519150808211156200067c57600080fd5b506200068b8a828b016200053c565b92505060c088015160ff81168114620006a357600080fd5b8091505092959891949750929550565b600060208284031215620006c657600080fd5b5051919050565b600181811c90821680620006e257607f821691505b6020821081036200070357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200075757600081815260208120601f850160051c81016020861015620007325750805b601f850160051c820191505b8181101562000753578281556001016200073e565b5050505b505050565b81516001600160401b0381111562000778576200077862000526565b6200079081620007898454620006cd565b8462000709565b602080601f831160018114620007c85760008415620007af5750858301515b600019600386901b1c1916600185901b17855562000753565b600085815260208120601f198616915b82811015620007f957888601518255948401946001909101908401620007d8565b5085821015620008185787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610100516101205161255e620008c560003960006102a40152600081816103a801526114fe01526000818161044a015281816111140152818161132801526114c40152600081816102660152818161108c015281816112f8015261149e0152600081816103e201526113850152600081816102140152818161083501528181610de90152611b3e015261255e6000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063c868efaa11610097578063dd62ed3e11610071578063dd62ed3e1461040c578063e8535e931461041f578063f2fde38b14610432578063f5ea06031461044557600080fd5b8063c868efaa146103ca578063d127dc9b146103dd578063d2cc7a701461040457600080fd5b806397314297116100d35780639731429714610351578063a457c2d71461037d578063a9059cbb14610390578063b8df0dea146103a357600080fd5b8063715018a6146103305780638da5cb5b1461033857806395d89b411461034957600080fd5b806329b7b3fd11610166578063395093511161014057806339509351146102ce5780634511243e146102e15780635eb99514146102f457806370a082311461030757600080fd5b806329b7b3fd146102615780632b0d8f1814610288578063313ce5671461029d57600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806310397b01146101ef57806318160ddd146102075780631a7f5bec1461020f57806323b872dd1461024e575b600080fd5b6101b661046c565b6040516101c3919061201c565b60405180910390f35b6101df6101da366004612044565b6104fe565b60405190151581526020016101c3565b6101f9620493e081565b6040519081526020016101c3565b6006546101f9565b6102367f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101c3565b6101df61025c366004612070565b610518565b6101f97f000000000000000000000000000000000000000000000000000000000000000081565b61029b6102963660046120b1565b61053c565b005b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101c3565b6101df6102dc366004612044565b610641565b61029b6102ef3660046120b1565b610663565b61029b6103023660046120ce565b610760565b6101f96103153660046120b1565b6001600160a01b031660009081526004602052604090205490565b61029b610774565b6003546001600160a01b0316610236565b6101b6610788565b6101df61035f3660046120b1565b6001600160a01b031660009081526001602052604090205460ff1690565b6101df61038b366004612044565b610797565b6101df61039e366004612044565b610812565b6102367f000000000000000000000000000000000000000000000000000000000000000081565b61029b6103d83660046120e7565b610820565b6101f97f000000000000000000000000000000000000000000000000000000000000000081565b6002546101f9565b6101f961041a366004612170565b6109ea565b61029b61042d3660046121a9565b610a15565b61029b6104403660046120b1565b610a23565b6102367f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461047b906121e5565b80601f01602080910402602001604051908101604052809291908181526020018280546104a7906121e5565b80156104f45780601f106104c9576101008083540402835291602001916104f4565b820191906000526020600020905b8154815290600101906020018083116104d757829003601f168201915b5050505050905090565b60003361050c818585610a99565b60019150505b92915050565b600033610526858285610bbe565b610531858585610c32565b506001949350505050565b610544610ddd565b6001600160a01b0381166105735760405162461bcd60e51b815260040161056a9061221f565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156105f25760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161056a565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b60003361050c81858561065483836109ea565b61065e9190612283565b610a99565b61066b610ddd565b6001600160a01b0381166106915760405162461bcd60e51b815260040161056a9061221f565b6001600160a01b03811660009081526001602052604090205460ff1661070b5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161056a565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b610768610ddd565b61077181610de5565b50565b61077c610f85565b6107866000610fdf565b565b60606008805461047b906121e5565b600033816107a582866109ea565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161056a565b6105318286868403610a99565b60003361050c818585610c32565b610828611031565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190612296565b101561092a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161056a565b6109333361035f565b156109995760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161056a565b6109da848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061108a92505050565b6109e46001600055565b50505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b610a1f82826111e5565b5050565b610a2b610f85565b6001600160a01b038116610a905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161056a565b61077181610fdf565b6001600160a01b038316610afb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161056a565b6001600160a01b038216610b5c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161056a565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610bca84846109ea565b905060001981146109e45781811015610c255760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161056a565b6109e48484848403610a99565b6001600160a01b038316610c965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161056a565b6001600160a01b038216610cf85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161056a565b6001600160a01b03831660009081526004602052604090205481811015610d705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161056a565b6001600160a01b0380851660008181526004602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dd09086815260200190565b60405180910390a36109e4565b610786610f85565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e699190612296565b60025490915081831115610ed95760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161056a565b808311610f4e5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161056a565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6003546001600160a01b031633146107865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161056a565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600054036110835760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161056a565b6002600055565b7f000000000000000000000000000000000000000000000000000000000000000083146111125760405162461bcd60e51b815260206004820152603060248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a20696e766160448201526f3634b21039b7bab931b29031b430b4b760811b606482015260840161056a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146111b95760405162461bcd60e51b815260206004820152603860248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a20696e766160448201527f6c696420746f6b656e20736f7572636520616464726573730000000000000000606482015260840161056a565b600080828060200190518101906111d091906122af565b915091506111de8282611696565b5050505050565b60006111f760408401602085016120b1565b6001600160a01b0316036112735760405162461bcd60e51b815260206004820152603b60248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a207a65726f60448201527f2064657374696e6174696f6e2062726964676520616464726573730000000000606482015260840161056a565b600061128560608401604085016120b1565b6001600160a01b0316036112f65760405162461bcd60e51b815260206004820152603260248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a207a65726f60448201527120726563697069656e74206164647265737360701b606482015260840161056a565b7f0000000000000000000000000000000000000000000000000000000000000000823503611383576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661135860408401602085016120b1565b6001600160a01b03161461137e5760405162461bcd60e51b815260040161056a906122dd565b6113e2565b7f00000000000000000000000000000000000000000000000000000000000000008235036113e257306113bc60408401602085016120b1565b6001600160a01b0316036113e25760405162461bcd60e51b815260040161056a906122dd565b6113eb816116a0565b90506113ff60808301356060840135612283565b81116114735760405162461bcd60e51b815260206004820152603d60248201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a20696e737560448201527f6666696369656e7420616d6f756e7420746f20636f7665722066656573000000606482015260840161056a565b61148160608301358261233a565b905061148c816116ac565b60006116536040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200187606001358152508152602001620493e08152602001858060a00190611551919061234d565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160c081018252873581526020928301929091828201916115ad918a01908a016120b1565b6001600160a01b031681526020016115cb6060890160408a016120b1565b6001600160a01b0316815260808801356020820152600060408201526060016115f760a089018961234d565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505091525060405161163c919087906020016123e2565b6040516020818303038152906040528152506116b6565b9050336001600160a01b0316817f35971507d5275c40cb225115b67b12c9e28b4bb02e60366a5863d8320bd6386584604051610bb191815260200190565b505050565b610a1f82826117dc565b6000610512308361189d565b6107713082611a05565b6000806116c1611b39565b60408401516020015190915015611766576040830151516001600160a01b03166117435760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a207a65726f206665652060448201526c746f6b656e206164647265737360981b606482015260840161056a565b604083015160208101519051611766916001600160a01b03909116908390611c4d565b604051630624488560e41b81526001600160a01b0382169063624488509061179290869060040161244f565b6020604051808303816000875af11580156117b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d59190612296565b9392505050565b6001600160a01b0382166118325760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161056a565b80600660008282546118449190612283565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190612296565b90506119216001600160a01b038516333086611d32565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198c9190612296565b90508181116119f25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161056a565b6119fc828261233a565b95945050505050565b6001600160a01b038216611a655760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161056a565b6001600160a01b03821660009081526004602052604090205481811015611ad95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161056a565b6001600160a01b03831660008181526004602090815260408083208686039055600680548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbe91906124cd565b9050611be2816001600160a01b031660009081526001602052604090205460ff1690565b15611c485760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161056a565b919050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc29190612296565b611ccc9190612283565b6040516001600160a01b0385166024820152604481018290529091506109e490859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d6a565b6040516001600160a01b03808516602483015283166044820152606481018290526109e49085906323b872dd60e01b90608401611cfb565b6000611dbf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e3c9092919063ffffffff16565b8051909150156116915780806020019051810190611ddd91906124ea565b6116915760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161056a565b6060611e4b8484600085611e53565b949350505050565b606082471015611eb45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161056a565b600080866001600160a01b03168587604051611ed0919061250c565b60006040518083038185875af1925050503d8060008114611f0d576040519150601f19603f3d011682016040523d82523d6000602084013e611f12565b606091505b5091509150611f2387838387611f2e565b979650505050505050565b60608315611f9d578251600003611f96576001600160a01b0385163b611f965760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161056a565b5081611e4b565b611e4b8383815115611fb25781518083602001fd5b8060405162461bcd60e51b815260040161056a919061201c565b60005b83811015611fe7578181015183820152602001611fcf565b50506000910152565b60008151808452612008816020860160208601611fcc565b601f01601f19169290920160200192915050565b6020815260006117d56020830184611ff0565b6001600160a01b038116811461077157600080fd5b6000806040838503121561205757600080fd5b82356120628161202f565b946020939093013593505050565b60008060006060848603121561208557600080fd5b83356120908161202f565b925060208401356120a08161202f565b929592945050506040919091013590565b6000602082840312156120c357600080fd5b81356117d58161202f565b6000602082840312156120e057600080fd5b5035919050565b600080600080606085870312156120fd57600080fd5b84359350602085013561210f8161202f565b9250604085013567ffffffffffffffff8082111561212c57600080fd5b818701915087601f83011261214057600080fd5b81358181111561214f57600080fd5b88602082850101111561216157600080fd5b95989497505060200194505050565b6000806040838503121561218357600080fd5b823561218e8161202f565b9150602083013561219e8161202f565b809150509250929050565b600080604083850312156121bc57600080fd5b823567ffffffffffffffff8111156121d357600080fd5b830160c0818603121561206257600080fd5b600181811c908216806121f957607f821691505b60208210810361221957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156105125761051261226d565b6000602082840312156122a857600080fd5b5051919050565b600080604083850312156122c257600080fd5b82516122cd8161202f565b6020939093015192949293505050565b6020808252603e908201527f54656c65706f72746572546f6b656e44657374696e6174696f6e3a20696e766160408201527f6c69642064657374696e6174696f6e2062726964676520616464726573730000606082015260800190565b818103818111156105125761051261226d565b6000808335601e1984360301811261236457600080fd5b83018035915067ffffffffffffffff82111561237f57600080fd5b6020019150600581901b360382131561239757600080fd5b9250929050565b600081518084526020808501945080840160005b838110156123d75781516001600160a01b0316875295820195908201906001016123b2565b509495945050505050565b60408152825160408201526000602084015160018060a01b0380821660608501528060408701511660808501525050606084015160a0830152608084015160c083015260a084015160c060e084015261243f61010084018261239e565b9150508260208301529392505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526124b061010084018261239e565b905060a0840151601f198483030160e08501526119fc8282611ff0565b6000602082840312156124df57600080fd5b81516117d58161202f565b6000602082840312156124fc57600080fd5b815180151581146117d557600080fd5b6000825161251e818460208701611fcc565b919091019291505056fea2646970667358221220c64101d9a687f1299a4e0c2b5ab00fc0642ac62417f4b0162ce463ae68af7db064736f6c6343000812003354656c65706f72746572546f6b656e44657374696e6174696f6e3a207a65726f", } // ERC20DestinationABI is the input ABI used to generate the binding from. diff --git a/contracts/README.md b/contracts/README.md deleted file mode 100644 index 9265b455..00000000 --- a/contracts/README.md +++ /dev/null @@ -1,66 +0,0 @@ -## Foundry - -**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** - -Foundry consists of: - -- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). -- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. -- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. -- **Chisel**: Fast, utilitarian, and verbose solidity REPL. - -## Documentation - -https://book.getfoundry.sh/ - -## Usage - -### Build - -```shell -$ forge build -``` - -### Test - -```shell -$ forge test -``` - -### Format - -```shell -$ forge fmt -``` - -### Gas Snapshots - -```shell -$ forge snapshot -``` - -### Anvil - -```shell -$ anvil -``` - -### Deploy - -```shell -$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key -``` - -### Cast - -```shell -$ cast -``` - -### Help - -```shell -$ forge --help -$ anvil --help -$ cast --help -``` diff --git a/contracts/src/ERC20Destination.sol b/contracts/src/ERC20Destination.sol index bc26f74c..ae7ecd44 100644 --- a/contracts/src/ERC20Destination.sol +++ b/contracts/src/ERC20Destination.sol @@ -75,8 +75,6 @@ contract ERC20Destination is IERC20Bridge, TeleporterTokenDestination, ERC20 { * @dev See {TeleportTokenDestination-_deposit} */ function _deposit(uint256 amount) internal virtual override returns (uint256) { - // TODO: can copy logic from SafeERC20TransferFrom.safeTransferFrom directly - // figure out if has gas savings. return SafeERC20TransferFrom.safeTransferFrom(this, amount); }