[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AllowanceOverflow", "type": "error" }, { "inputs": [], "name": "AllowanceUnderflow", "type": "error" }, { "inputs": [], "name": "INVALID_TOKEN_NAME", "type": "error" }, { "inputs": [], "name": "INVALID_TOKEN_SYMBOL", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidPermit", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "ONLY_FACTORY_OWNER", "type": "error" }, { "inputs": [], "name": "PermitExpired", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "result", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "result", "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": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "contract IERC20TokenFactory", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "factory_", "type": "address" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "initialSupply", "type": "uint256" }, { "internalType": "address", "name": "initialSupplyRecipient", "type": "address" } ], "internalType": "struct IERC20TokenFactory.ERC20TokenConfig", "name": "config", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "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" } ]
608060405234801561000f575f80fd5b5061001861001d565b61007e565b63409feecd198054600181161561003b5763f92ee8a95f526004601cfd5b8160c01c808260011c14610079578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b610c958061008b5f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806340c10f1911610093578063a9059cbb11610063578063a9059cbb146101f3578063c45a015514610206578063d505accf14610230578063dd62ed3e14610243575f80fd5b806340c10f191461018e57806370a08231146101a15780637ecebe00146101c657806395d89b41146101eb575f80fd5b806318160ddd116100ce57806318160ddd1461014a57806323b872dd14610164578063313ce567146101775780633644e51514610186575f80fd5b806306fdde03146100f457806307b6532414610112578063095ea7b314610127575b5f80fd5b6100fc61026b565b60405161010991906108f5565b60405180910390f35b610125610120366004610958565b6102fb565b005b61013a6101353660046109ab565b61043b565b6040519015158152602001610109565b6805345cdf77eb68f44c545b604051908152602001610109565b61013a6101723660046109d5565b61048a565b60405160128152602001610109565b610156610544565b61012561019c3660046109ab565b6105c0565b6101566101af366004610a13565b6387a211a2600c9081525f91909152602090205490565b6101566101d4366004610a13565b6338377508600c9081525f91909152602090205490565b6100fc610671565b61013a6102013660046109ab565b610680565b5f54610218906001600160a01b031681565b6040516001600160a01b039091168152602001610109565b61012561023e366004610a35565b6106f7565b610156610251366004610aa6565b602052637f5e9f20600c9081525f91909152603490205490565b60606001805461027a90610ad2565b80601f01602080910402602001604051908101604052809291908181526020018280546102a690610ad2565b80156102f15780601f106102c8576101008083540402835291602001916102f1565b820191905f5260205f20905b8154815290600101906020018083116102d457829003601f168201915b5050505050905090565b63409feecd1980546003825580156103315760018160011c14303b106103285763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f80546001600160a01b0319166001600160a01b0385161790556103568280610b0a565b90505f03610377576040516326bdb20360e11b815260040160405180910390fd5b6103846020830183610b0a565b90505f036103a55760405163787a63a960e11b815260040160405180910390fd5b6103af8280610b0a565b6001916103bd919083610bb3565b506103cb6020830183610b0a565b6002916103d9919083610bb3565b50604082013515610401576104016103f76080840160608501610a13565b8360400135610879565b8015610436576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b33602052637f5e9f208117600c526034600c20805460018101156104c857808511156104c2576313be252b5f526004601cfd5b84810382555b50506387a211a28117600c526020600c208054808511156104f05763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060019392505050565b5f8061054e61026b565b8051906020012090506040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81528160208201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015260a081209250505090565b5f8054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106329190610c6d565b6001600160a01b0316336001600160a01b0316146106635760405163229083f960e21b815260040160405180910390fd5b61066d8282610879565b5050565b60606002805461027a90610ad2565b5f6387a211a2600c52335f526020600c208054808411156106a85763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b5f61070061026b565b8051906020012090508442111561071e57631a15a3cc5f526004601cfd5b6040518860601b60601c98508760601b60601c975065383775081901600e52885f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83528360208401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528a60208401528960408401528860608401528060808401528760a084015260c08320604e526042602c205f528660ff16602052856040528460605260208060805f60015afa8b3d51146108265763ddafbaef5f526004601cfd5b0190556303faf4f960a51b88176040526034602c2087905587897f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f606052505050505050565b6805345cdf77eb68f44c548181018181101561089c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b5f602080835283518060208501525f5b8181101561092157858101830151858201604001528201610905565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610955575f80fd5b50565b5f8060408385031215610969575f80fd5b823561097481610941565b9150602083013567ffffffffffffffff81111561098f575f80fd5b8301608081860312156109a0575f80fd5b809150509250929050565b5f80604083850312156109bc575f80fd5b82356109c781610941565b946020939093013593505050565b5f805f606084860312156109e7575f80fd5b83356109f281610941565b92506020840135610a0281610941565b929592945050506040919091013590565b5f60208284031215610a23575f80fd5b8135610a2e81610941565b9392505050565b5f805f805f805f60e0888a031215610a4b575f80fd5b8735610a5681610941565b96506020880135610a6681610941565b95506040880135945060608801359350608088013560ff81168114610a89575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610ab7575f80fd5b8235610ac281610941565b915060208301356109a081610941565b600181811c90821680610ae657607f821691505b602082108103610b0457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f808335601e19843603018112610b1f575f80fd5b83018035915067ffffffffffffffff821115610b39575f80fd5b602001915036819003821315610b4d575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b601f82111561043657805f5260205f20601f840160051c81016020851015610b8d5750805b601f840160051c820191505b81811015610bac575f8155600101610b99565b5050505050565b67ffffffffffffffff831115610bcb57610bcb610b54565b610bdf83610bd98354610ad2565b83610b68565b5f601f841160018114610c10575f8515610bf95750838201355b5f19600387901b1c1916600186901b178355610bac565b5f83815260208120601f198716915b82811015610c3f5786850135825560209485019460019092019101610c1f565b5086821015610c5b575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208284031215610c7d575f80fd5b8151610a2e8161094156fea164736f6c6343000817000a