[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "AMM", "type": "address" } ], "name": "InvalidAMM", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "InvalidToken", "type": "error" }, { "inputs": [], "name": "MintCannotExceedMaxSupply", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "TransactionBlacklisted", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "AMM", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isAMM", "type": "bool" } ], "name": "AMMUpdated", "type": "event" }, { "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": "bool", "name": "isBlacklisted", "type": "bool" } ], "name": "BlacklistUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "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": "address", "name": "routerV2", "type": "address" } ], "name": "RouterV2Updated", "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "AMMs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_router", "type": "address" } ], "name": "afterConstructor", "outputs": [], "stateMutability": "nonpayable", "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": "value", "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": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isBlacklisted", "type": "bool" } ], "name": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "blacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pairV2", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverForeignERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "routerV2", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "AMM", "type": "address" }, { "internalType": "bool", "name": "isAMM", "type": "bool" } ], "name": "setAMM", "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": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "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": "value", "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" } ]
608060405234801561000f575f80fd5b506509184e72a00033604051806040016040528060098152602001682120a2102a37b5b2b760b91b8152506040518060400160405280600381526020016210905160ea1b81525081600390816100659190610436565b5060046100728282610436565b5050506001600160a01b0381166100a357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100ac81610139565b50600a6100ba6012826105eb565b6100c49083610600565b6100ce9190610617565b600755507324511ba9770d464737f5ef71e723a4a4f1bd701a61011681600a6100f86012826105eb565b610107906402540be400610600565b6101119190610617565b610155565b6101337324511ba9770d464737f5ef71e723a4a4f1bd701a610139565b50610649565b600680546001600160a01b03191690556101528161018d565b50565b6001600160a01b03821661017e5760405163ec442f0560e01b81525f600482015260240161009a565b6101895f83836101de565b5050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6101e983838361020b565b6101f4838383610279565b6102068383836001600160e01b038416565b505050565b6001600160a01b0383165f9081526009602052604090205460ff168061024857506001600160a01b0382165f9081526009602052604090205460ff165b1561020657604051632cc8702b60e01b81526001600160a01b0380851660048301528316602482015260440161009a565b6001600160a01b0383166102a3578060025f8282546102989190610636565b909155506103139050565b6001600160a01b0383165f90815260208190526040902054818110156102f55760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161009a565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661032f5760028054829003905561034d565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161039291815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806103c757607f821691505b6020821081036103e557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561020657805f5260205f20601f840160051c810160208510156104105750805b601f840160051c820191505b8181101561042f575f815560010161041c565b5050505050565b81516001600160401b0381111561044f5761044f61039f565b6104638161045d84546103b3565b846103eb565b602080601f831160018114610496575f841561047f5750858301515b5f19600386901b1c1916600185901b1785556104ed565b5f85815260208120601f198616915b828110156104c4578886015182559484019460019091019084016104a5565b50858210156104e157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561054357815f1904821115610529576105296104f5565b8085161561053657918102915b93841c939080029061050e565b509250929050565b5f82610559575060016105e5565b8161056557505f6105e5565b816001811461057b5760028114610585576105a1565b60019150506105e5565b60ff841115610596576105966104f5565b50506001821b6105e5565b5060208310610133831016604e8410600b84101617156105c4575081810a6105e5565b6105ce8383610509565b805f19048211156105e1576105e16104f5565b0290505b92915050565b5f6105f960ff84168361054b565b9392505050565b80820281158282048414176105e5576105e56104f5565b5f8261063157634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105e5576105e56104f5565b611289806106565f395ff3fe608060405234801561000f575f80fd5b50600436106101a1575f3560e01c806379ba5097116100f3578063cb1a233d11610093578063dd62ed3e1161006e578063dd62ed3e14610390578063e30c3978146103c8578063e73b17d0146103d9578063f2fde38b146103ec575f80fd5b8063cb1a233d14610352578063d5abeb0114610365578063dbac26e91461036e575f80fd5b80638fffabed116100ce5780638fffabed1461031157806395d89b4114610324578063a9059cbb1461032c578063a9d3cd8a1461033f575f80fd5b806379ba5097146102e557806379cc6790146102ed5780638da5cb5b14610300575f80fd5b8063313ce5671161015e57806342966c681161013957806342966c6814610277578063502f74461461028a57806370a08231146102b5578063715018a6146102dd575f80fd5b8063313ce56714610242578063404e51291461025157806340c10f1914610264575f80fd5b806306fdde03146101a5578063095ea7b3146101c357806318160ddd146101e657806318533a0d146101f85780631e9fe6c61461020d57806323b872dd1461022f575b5f80fd5b6101ad6103ff565b6040516101ba919061105d565b60405180910390f35b6101d66101d13660046110a6565b61048f565b60405190151581526020016101ba565b6002545b6040519081526020016101ba565b61020b6102063660046110d0565b6104a8565b005b6101d661021b3660046110d0565b600c6020525f908152604090205460ff1681565b6101d661023d3660046110eb565b61056a565b604051601281526020016101ba565b61020b61025f366004611136565b61058f565b61020b6102723660046110a6565b6105f6565b61020b61028536600461116d565b61063e565b600a5461029d906001600160a01b031681565b6040516001600160a01b0390911681526020016101ba565b6101ea6102c33660046110d0565b6001600160a01b03165f9081526020819052604090205490565b61020b61064b565b61020b61065e565b61020b6102fb3660046110a6565b61069f565b6005546001600160a01b031661029d565b600b5461029d906001600160a01b031681565b6101ad6106b4565b6101d661033a3660046110a6565b6106c3565b61020b61034d366004611136565b6106d0565b61020b61036036600461116d565b610734565b6101ea60075481565b6101d661037c3660046110d0565b60096020525f908152604090205460ff1681565b6101ea61039e366004611184565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031661029d565b61020b6103e73660046110a6565b610747565b61020b6103fa3660046110d0565b610797565b60606003805461040e906111b0565b80601f016020809104026020016040519081016040528092919081815260200182805461043a906111b0565b80156104855780601f1061045c57610100808354040283529160200191610485565b820191905f5260205f20905b81548152906001019060200180831161046857829003601f168201915b5050505050905090565b5f3361049c818585610808565b60019150505b92915050565b600854610100900460ff16806104c1575060085460ff16155b6105295760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600854610100900460ff1615801561054b576008805461ffff19166101011790555b6105548261081a565b8015610566576008805461ff00191690555b5050565b5f336105778582856109fe565b610582858585610a79565b60019150505b9392505050565b610597610ad6565b6001600160a01b0382165f81815260096020908152604091829020805460ff191685151590811790915591519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac91015b60405180910390a25050565b6105fe610ad6565b6007548161060b60025490565b61061591906111e8565b1115610634576040516316a5e6f760e31b815260040160405180910390fd5b6105668282610b03565b6106483382610b37565b50565b610653610ad6565b61065c5f610b6b565b565b60065433906001600160a01b031681146106965760405163118cdaa760e01b81526001600160a01b0382166004820152602401610520565b61064881610b6b565b6106aa8233836109fe565b6105668282610b37565b60606004805461040e906111b0565b5f3361049c818585610a79565b6106d8610ad6565b600b546001600160a01b03838116911614806107015750600a546001600160a01b038381169116145b1561072a5760405163435eaf7b60e11b81526001600160a01b0383166004820152602401610520565b6105668282610b84565b61073c610ad6565b610648303383610bdb565b61074f610ad6565b306001600160a01b038316036107835760405163961c9a4f60e01b81526001600160a01b0383166004820152602401610520565b6105666001600160a01b0383163383610bf1565b61079f610ad6565b600680546001600160a01b0383166001600160a01b031990911681179091556107d06005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6108158383836001610c43565b505050565b600a80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610871573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108959190611207565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109189190611207565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610962573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109869190611207565b600b80546001600160a01b0319166001600160a01b03929092169190911790556109b1816001610b84565b600b546109c8906001600160a01b03166001610b84565b6040516001600160a01b038216907fbc052db65df144ad4f71f02da93cae3d4401104c30ac374d7cc10d87ee07b602905f90a250565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610a735781811015610a6557604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610520565b610a7384848484035f610c43565b50505050565b6001600160a01b038316610aa257604051634b637e8f60e11b81525f6004820152602401610520565b6001600160a01b038216610acb5760405163ec442f0560e01b81525f6004820152602401610520565b610815838383610bdb565b6005546001600160a01b0316331461065c5760405163118cdaa760e01b8152336004820152602401610520565b6001600160a01b038216610b2c5760405163ec442f0560e01b81525f6004820152602401610520565b6105665f8383610bdb565b6001600160a01b038216610b6057604051634b637e8f60e11b81525f6004820152602401610520565b610566825f83610bdb565b600680546001600160a01b031916905561064881610d15565b6001600160a01b0382165f818152600c6020908152604091829020805460ff191685151590811790915591519182527f2cc8631dda80fe178488d3174721fafacf84b0f194a7eddae85c9bcc599ac78b91016105ea565b610be6838383610d66565b610815838383610dd4565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610815908490610efa565b6001600160a01b038416610c6c5760405163e602df0560e01b81525f6004820152602401610520565b6001600160a01b038316610c9557604051634a1406b160e11b81525f6004820152602401610520565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610a7357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d0791815260200190565b60405180910390a350505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383165f9081526009602052604090205460ff1680610da357506001600160a01b0382165f9081526009602052604090205460ff165b1561081557604051632cc8702b60e01b81526001600160a01b03808516600483015283166024820152604401610520565b6001600160a01b038316610dfe578060025f828254610df391906111e8565b90915550610e6e9050565b6001600160a01b0383165f9081526020819052604090205481811015610e505760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610520565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610e8a57600280548290039055610ea8565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eed91815260200190565b60405180910390a3505050565b5f610f0e6001600160a01b03841683610f5b565b905080515f14158015610f32575080806020019051810190610f309190611222565b155b1561081557604051635274afe760e01b81526001600160a01b0384166004820152602401610520565b606061058883835f845f80856001600160a01b03168486604051610f7f919061123d565b5f6040518083038185875af1925050503d805f8114610fb9576040519150601f19603f3d011682016040523d82523d5f602084013e610fbe565b606091505b5091509150610fce868383610fd8565b9695505050505050565b606082610fed57610fe882611034565b610588565b815115801561100457506001600160a01b0384163b155b1561102d57604051639996b31560e01b81526001600160a01b0385166004820152602401610520565b5080610588565b8051156110445780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610648575f80fd5b5f80604083850312156110b7575f80fd5b82356110c281611092565b946020939093013593505050565b5f602082840312156110e0575f80fd5b813561058881611092565b5f805f606084860312156110fd575f80fd5b833561110881611092565b9250602084013561111881611092565b929592945050506040919091013590565b8015158114610648575f80fd5b5f8060408385031215611147575f80fd5b823561115281611092565b9150602083013561116281611129565b809150509250929050565b5f6020828403121561117d575f80fd5b5035919050565b5f8060408385031215611195575f80fd5b82356111a081611092565b9150602083013561116281611092565b600181811c908216806111c457607f821691505b6020821081036111e257634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156104a257634e487b7160e01b5f52601160045260245ffd5b5f60208284031215611217575f80fd5b815161058881611092565b5f60208284031215611232575f80fd5b815161058881611129565b5f82518060208501845e5f92019182525091905056fea264697066735822122043820efb2efd263268f71e133b22d05b1e7b9a478bac6efaffa8d2ca62d953a064736f6c63430008190033