Address Contract Partially Verified
Address
0x1Aa1762d8403dC98a6EF108a3c43aD822DA2dabF
Balance
0 ETH
Nonce
1
Code Size
12298 bytes
Creator
0xf7338ccd...BE3a at tx 0x5749a814...f873f8
Indexed Transactions
0
Contract Bytecode
12298 bytes
0x6080604052600436106101db575f3560e01c8063751039fc11610101578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610678578063e064648a146106b4578063e2f45605146106dc578063f2fde38b14610706576101e2565b8063a9059cbb146105c2578063aacebbe3146105fe578063afa4f3b214610626578063bbde77c11461064e576101e2565b806394a98390116100d057806394a983901461051e578063958c2e521461054657806395d89b41146105705780639ef833d41461059a576101e2565b8063751039fc1461049e5780638a8c523c146104b45780638bcea939146104ca5780638da5cb5b146104f4576101e2565b80634a62bb6511610179578063686d83c311610148578063686d83c3146103e857806370a082311461042457806370c4767114610460578063715018a614610488576101e2565b80634a62bb65146103305780634ada218b1461035a5780634fbee19314610384578063590ffdce146103c0576101e2565b806323b872dd116101b557806323b872dd146102765780632b14ca56146102b2578063313ce567146102dc5780634706240214610306576101e2565b806306fdde03146101e6578063095ea7b31461021057806318160ddd1461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa61072e565b6040516102079190612305565b60405180910390f35b34801561021b575f80fd5b50610236600480360381019061023191906123b6565b6107be565b604051610243919061240e565b60405180910390f35b348015610257575f80fd5b506102606107e0565b60405161026d9190612436565b60405180910390f35b348015610281575f80fd5b5061029c6004803603810190610297919061244f565b6107e9565b6040516102a9919061240e565b60405180910390f35b3480156102bd575f80fd5b506102c6610817565b6040516102d391906124bb565b60405180910390f35b3480156102e7575f80fd5b506102f061082b565b6040516102fd91906124ef565b60405180910390f35b348015610311575f80fd5b5061031a610833565b60405161032791906124bb565b60405180910390f35b34801561033b575f80fd5b50610344610847565b604051610351919061240e565b60405180910390f35b348015610365575f80fd5b5061036e610859565b60405161037b919061240e565b60405180910390f35b34801561038f575f80fd5b506103aa60048036038101906103a59190612508565b61086b565b6040516103b7919061240e565b60405180910390f35b3480156103cb575f80fd5b506103e660048036038101906103e1919061255d565b6108bd565b005b3480156103f3575f80fd5b5061040e60048036038101906104099190612508565b61091d565b60405161041b919061240e565b60405180910390f35b34801561042f575f80fd5b5061044a60048036038101906104459190612508565b61096f565b6040516104579190612436565b60405180910390f35b34801561046b575f80fd5b50610486600480360381019061048191906125c5565b6109b4565b005b348015610493575f80fd5b5061049c610a5c565b005b3480156104a9575f80fd5b506104b2610a6f565b005b3480156104bf575f80fd5b506104c8610abe565b005b3480156104d5575f80fd5b506104de610b0e565b6040516104eb91906125ff565b60405180910390f35b3480156104ff575f80fd5b50610508610b32565b60405161051591906125ff565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f919061255d565b610b5a565b005b348015610551575f80fd5b5061055a610bba565b6040516105679190612673565b60405180910390f35b34801561057b575f80fd5b50610584610bd2565b6040516105919190612305565b60405180910390f35b3480156105a5575f80fd5b506105c060048036038101906105bb919061268c565b610c62565b005b3480156105cd575f80fd5b506105e860048036038101906105e391906123b6565b610d71565b6040516105f5919061240e565b60405180910390f35b348015610609575f80fd5b50610624600480360381019061061f9190612508565b610d93565b005b348015610631575f80fd5b5061064c600480360381019061064791906126ca565b610e83565b005b348015610659575f80fd5b50610662610f87565b60405161066f9190612436565b60405180910390f35b348015610683575f80fd5b5061069e600480360381019061069991906126f5565b610f8d565b6040516106ab9190612436565b60405180910390f35b3480156106bf575f80fd5b506106da60048036038101906106d591906125c5565b61100f565b005b3480156106e7575f80fd5b506106f06110b7565b6040516106fd9190612436565b60405180910390f35b348015610711575f80fd5b5061072c60048036038101906107279190612508565b6110bd565b005b60606003805461073d90612760565b80601f016020809104026020016040519081016040528092919081815260200182805461076990612760565b80156107b45780601f1061078b576101008083540402835291602001916107b4565b820191905f5260205f20905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b5f806107c8611141565b90506107d5818585611148565b600191505092915050565b5f600254905090565b5f806107f3611141565b905061080085828561115a565b61080b8585856111ec565b60019150509392505050565b600660169054906101000a900461ffff1681565b5f6012905090565b600660149054906101000a900461ffff1681565b600a5f9054906101000a900460ff1681565b600d5f9054906101000a900460ff1681565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6108c5611963565b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109bc611963565b6101908161ffff161115610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90612800565b60405180910390fd5b80600660146101000a81548161ffff021916908361ffff1602179055507f36fa651f7bdbb8a6a7289ed4df5a6e3efb1fdcaef87c1f88dfd66b08d2007dc281604051610a5191906124bb565b60405180910390a150565b610a64611963565b610a6d5f6119ea565b565b610a77611963565b5f600a5f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a1565b610ac6611963565b6001600d5f6101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b7f00000000000000000000000086fd84329a7169e7920ba9ff6f5cf9ed916c434c81565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b62611963565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b606060048054610be190612760565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0d90612760565b8015610c585780601f10610c2f57610100808354040283529160200191610c58565b820191905f5260205f20905b815481529060010190602001808311610c3b57829003601f168201915b5050505050905090565b610c6a611963565b6101908261ffff1611158015610c8657506101908161ffff1611155b610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc9061288e565b60405180910390fd5b81600660166101000a81548161ffff021916908361ffff16021790555080600660146101000a81548161ffff021916908361ffff1602179055507f625428ca3cfddf32cf909a4d7ae5a8b942d838319ae2a8055f271ad78033c2f682604051610d2e91906124bb565b60405180910390a17f36fa651f7bdbb8a6a7289ed4df5a6e3efb1fdcaef87c1f88dfd66b08d2007dc281604051610d6591906124bb565b60405180910390a15050565b5f80610d7b611141565b9050610d888185856111ec565b600191505092915050565b610d9b611963565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e009061291c565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e781604051610e7891906125ff565b60405180910390a150565b610e8b611963565b62010d88610e976107e0565b610ea19190612994565b811015610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda90612a5a565b60405180910390fd5b6103e86005610ef06107e0565b610efa9190612a78565b610f049190612994565b811115610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d90612b4f565b60405180910390fd5b806007819055507f9efd5e66ee602c629f311865749d9af922866664ad3ff96bbfaf8035f5d24b2681604051610f7c9190612436565b60405180910390a150565b600b5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611017611963565b6101908161ffff161115611060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105790612800565b60405180910390fd5b80600660166101000a81548161ffff021916908361ffff1602179055507f625428ca3cfddf32cf909a4d7ae5a8b942d838319ae2a8055f271ad78033c2f6816040516110ac91906124bb565b60405180910390a150565b60075481565b6110c5611963565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611135575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161112c91906125ff565b60405180910390fd5b61113e816119ea565b50565b5f33905090565b6111558383836001611aad565b505050565b5f6111658484610f8d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111e657818110156111d7578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016111ce93929190612b6d565b60405180910390fd5b6111e584848484035f611aad565b5b50505050565b5f811161122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612c12565b60405180910390fd5b600d5f9054906101000a900460ff166112f457611249610b32565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806112b45750611285610b32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea90612ca0565b60405180910390fd5b5b600a5f9054906101000a900460ff16156115bb57611310610b32565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561137e575061134e610b32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156113b657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156113f0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611408575060085f9054906101000a900460ff16155b156115ba577f00000000000000000000000086fd84329a7169e7920ba9ff6f5cf9ed916c434c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156114af5750600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561151157600b546114c08361096f565b826114cb9190612cbe565b111561150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150390612d61565b60405180910390fd5b6115b9565b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166115b857600b5461156b8361096f565b826115769190612cbe565b11156115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90612d61565b60405180910390fd5b5b5b5b5b5f6007546115c83061096f565b101590508080156115e5575060085f9054906101000a900460ff16155b801561163d57507f00000000000000000000000086fd84329a7169e7920ba9ff6f5cf9ed916c434c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611690575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156116e3575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561172457600160085f6101000a81548160ff02191690831515021790555061170a611c7c565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff1615905060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117d2575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156117db575f90505b5f8115611950577f00000000000000000000000086fd84329a7169e7920ba9ff6f5cf9ed916c434c73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614801561185057505f600660149054906101000a900461ffff1661ffff16115b15611889576103e8600660149054906101000a900461ffff1661ffff16856118789190612a78565b6118829190612994565b905061192d565b7f00000000000000000000000086fd84329a7169e7920ba9ff6f5cf9ed916c434c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156118f757505f600660169054906101000a900461ffff1661ffff16115b1561192c576103e8600660169054906101000a900461ffff1661ffff168561191f9190612a78565b6119299190612994565b90505b5b5f81111561194f57611940863083611f72565b808461194c9190612d7f565b93505b5b61195b868686611f72565b505050505050565b61196b611141565b73ffffffffffffffffffffffffffffffffffffffff16611989610b32565b73ffffffffffffffffffffffffffffffffffffffff16146119e8576119ac611141565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016119df91906125ff565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b1d575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611b1491906125ff565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b8d575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611b8491906125ff565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c76578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c6d9190612436565b60405180910390a35b50505050565b5f611c863061096f565b90506014600754611c979190612a78565b811115611cb0576014600754611cad9190612a78565b90505b5f600267ffffffffffffffff811115611ccc57611ccb612db2565b5b604051908082528060200260200182016040528015611cfa5781602001602082028036833780820191505090505b50905030815f81518110611d1157611d10612ddf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcc9190612e20565b81600181518110611de057611ddf612ddf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e6f959493929190612f3b565b5f604051808303815f87803b158015611e86575f80fd5b505af1925050508015611e97575060015b505f4790505f811115611f6d575f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611eea90612fc0565b5f6040518083038185875af1925050503d805f8114611f24576040519150601f19603f3d011682016040523d82523d5f602084013e611f29565b606091505b505090508015611f6b577f8959421a1320789a49eeec01a4750caf8a30733c3db14f000d84484df89300f984604051611f629190612436565b60405180910390a15b505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fe2575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611fd991906125ff565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612052575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161204991906125ff565b60405180910390fd5b61205d838383612062565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120b2578060025f8282546120a69190612cbe565b92505081905550612180565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561213b578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161213293929190612b6d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c7578060025f8282540392505081905550612211565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161226e9190612436565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122b2578082015181840152602081019050612297565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122d78261227b565b6122e18185612285565b93506122f1818560208601612295565b6122fa816122bd565b840191505092915050565b5f6020820190508181035f83015261231d81846122cd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61235282612329565b9050919050565b61236281612348565b811461236c575f80fd5b50565b5f8135905061237d81612359565b92915050565b5f819050919050565b61239581612383565b811461239f575f80fd5b50565b5f813590506123b08161238c565b92915050565b5f80604083850312156123cc576123cb612325565b5b5f6123d98582860161236f565b92505060206123ea858286016123a2565b9150509250929050565b5f8115159050919050565b612408816123f4565b82525050565b5f6020820190506124215f8301846123ff565b92915050565b61243081612383565b82525050565b5f6020820190506124495f830184612427565b92915050565b5f805f6060848603121561246657612465612325565b5b5f6124738682870161236f565b93505060206124848682870161236f565b9250506040612495868287016123a2565b9150509250925092565b5f61ffff82169050919050565b6124b58161249f565b82525050565b5f6020820190506124ce5f8301846124ac565b92915050565b5f60ff82169050919050565b6124e9816124d4565b82525050565b5f6020820190506125025f8301846124e0565b92915050565b5f6020828403121561251d5761251c612325565b5b5f61252a8482850161236f565b91505092915050565b61253c816123f4565b8114612546575f80fd5b50565b5f8135905061255781612533565b92915050565b5f806040838503121561257357612572612325565b5b5f6125808582860161236f565b925050602061259185828601612549565b9150509250929050565b6125a48161249f565b81146125ae575f80fd5b50565b5f813590506125bf8161259b565b92915050565b5f602082840312156125da576125d9612325565b5b5f6125e7848285016125b1565b91505092915050565b6125f981612348565b82525050565b5f6020820190506126125f8301846125f0565b92915050565b5f819050919050565b5f61263b61263661263184612329565b612618565b612329565b9050919050565b5f61264c82612621565b9050919050565b5f61265d82612642565b9050919050565b61266d81612653565b82525050565b5f6020820190506126865f830184612664565b92915050565b5f80604083850312156126a2576126a1612325565b5b5f6126af858286016125b1565b92505060206126c0858286016125b1565b9150509250929050565b5f602082840312156126df576126de612325565b5b5f6126ec848285016123a2565b91505092915050565b5f806040838503121561270b5761270a612325565b5b5f6127188582860161236f565b92505060206127298582860161236f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061277757607f821691505b60208210810361278a57612789612733565b5b50919050565b7f4b494d50534f4e533a206665652063616e6e6f742062652067726561746572205f8201527f7468616e20343025000000000000000000000000000000000000000000000000602082015250565b5f6127ea602883612285565b91506127f582612790565b604082019050919050565b5f6020820190508181035f830152612817816127de565b9050919050565b7f4b494d50534f4e53206665652063616e6e6f74206265206772656174657220745f8201527f68616e2034302500000000000000000000000000000000000000000000000000602082015250565b5f612878602783612285565b91506128838261281e565b604082019050919050565b5f6020820190508181035f8301526128a58161286c565b9050919050565b7f4b494d50534f4e533a20616464726573732063616e6e6f7420626520302061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612906602583612285565b9150612911826128ac565b604082019050919050565b5f6020820190508181035f830152612933816128fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61299e82612383565b91506129a983612383565b9250826129b9576129b861293a565b5b828204905092915050565b7f4b494d50534f4e533a207377617020746f6b656e7320617420616d6f756e74205f8201527f63616e6e6f74206265206c6f776572207468616e20302e30303125206f66207460208201527f6f74616c20737570706c79000000000000000000000000000000000000000000604082015250565b5f612a44604b83612285565b9150612a4f826129c4565b606082019050919050565b5f6020820190508181035f830152612a7181612a38565b9050919050565b5f612a8282612383565b9150612a8d83612383565b9250828202612a9b81612383565b91508282048414831517612ab257612ab1612967565b5b5092915050565b7f4b494d50534f4e533a207377617020746f6b656e7320617420616d6f756e74205f8201527f63616e6e6f7420626520686967686572207468616e20302e3525206f6620746f60208201527f74616c20737570706c7900000000000000000000000000000000000000000000604082015250565b5f612b39604a83612285565b9150612b4482612ab9565b606082019050919050565b5f6020820190508181035f830152612b6681612b2d565b9050919050565b5f606082019050612b805f8301866125f0565b612b8d6020830185612427565b612b9a6040830184612427565b949350505050565b7f4b494d50534f4e533a207472616e7366657220616d6f756e74206d75737420625f8201527f652067726561746572207468616e203000000000000000000000000000000000602082015250565b5f612bfc603083612285565b9150612c0782612ba2565b604082019050919050565b5f6020820190508181035f830152612c2981612bf0565b9050919050565b7f4b494d50534f4e533a2074726164696e6720686173206e6f74206265656e20655f8201527f6e61626c65642079657400000000000000000000000000000000000000000000602082015250565b5f612c8a602a83612285565b9150612c9582612c30565b604082019050919050565b5f6020820190508181035f830152612cb781612c7e565b9050919050565b5f612cc882612383565b9150612cd383612383565b9250828201905080821115612ceb57612cea612967565b5b92915050565b7f4b494d50534f4e533a2062616c616e636520776f756c6420657863656564206d5f8201527f61782077616c6c65742062616c616e6365000000000000000000000000000000602082015250565b5f612d4b603183612285565b9150612d5682612cf1565b604082019050919050565b5f6020820190508181035f830152612d7881612d3f565b9050919050565b5f612d8982612383565b9150612d9483612383565b9250828203905081811115612dac57612dab612967565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612e1a81612359565b92915050565b5f60208284031215612e3557612e34612325565b5b5f612e4284828501612e0c565b91505092915050565b5f819050919050565b5f612e6e612e69612e6484612e4b565b612618565b612383565b9050919050565b612e7e81612e54565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612eb681612348565b82525050565b5f612ec78383612ead565b60208301905092915050565b5f602082019050919050565b5f612ee982612e84565b612ef38185612e8e565b9350612efe83612e9e565b805f5b83811015612f2e578151612f158882612ebc565b9750612f2083612ed3565b925050600181019050612f01565b5085935050505092915050565b5f60a082019050612f4e5f830188612427565b612f5b6020830187612e75565b8181036040830152612f6d8186612edf565b9050612f7c60608301856125f0565b612f896080830184612427565b9695505050505050565b5f81905092915050565b50565b5f612fab5f83612f93565b9150612fb682612f9d565b5f82019050919050565b5f612fca82612fa0565b915081905091905056fea264697066735822122073af0fa0607f064bcfb3e03d469f1c641744fae87c5e67da3c07ee8b41954fec64736f6c63430008170033
Verified Source Code Partial Match
Compiler: v0.8.23+commit.f704f362
EVM: shanghai
Optimization: No
KIMPSONS.sol 499 lines
/*
.----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .-----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
| | ___ ____ | || | _____ | || | ____ ____ | || | ______ | || | _______ | || | ____ | || | ____ _____ | || | _______ | |
| | |_ ||_ _| | || | |_ _| | || ||_ \ / _|| || | |_ __ \ | || | / ___ | | || | .' `. | || ||_ \|_ _| | || | / ___ | | |
| | | |_/ / | || | | | | || | | \/ | | || | | |__) | | || | | (__ \_| | || | / .--. \ | || | | \ | | | || | | (__ \_| | |
| | | __'. | || | | | | || | | |\ /| | | || | | ___/ | || | '.___`-. | || | | | | | | || | | |\ \| | | || | '.___`-. | |
| | _| | \ \_ | || | _| |_ | || | _| |_\/_| |_ | || | _| |_ | || | |`\____) | | || | \ `--' / | || | _| |_\ |_ | || | |`\____) | | |
| | |____||____| | || | |_____| | || ||_____||_____|| || | |_____| | || | |_______.' | || | `.____.' | || ||_____|\____| | || | |_______.' | |
| | | || | | || | | || | | || | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------'
Website: https://KAWSETH.io/
Twitter: https://twitter.com/KIMPSONSETH
Telegram: https://t.me/KIMPSONS
https://www.reddit.com/user/Kimpsons/
*/
// SPDX-License-Identifier: MIT
// File: contracts/interfaces/IUniswapV2Factory.sol
pragma solidity 0.8.23;
interface IUniswapV2Factory {
function getPair(address tokenA, address tokenB) external view returns (address pair);
function createPair(address tokenA, address tokenB) external returns (address pair);
}
// File: contracts/interfaces/IUniswapV2Router.sol
pragma solidity 0.8.23;
interface IUniswapV2Router {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function getAmountsIn(uint256 amountOut, address[] calldata path)
external
view
returns (uint256[] memory amounts);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
}
// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;
interface IERC20Errors {
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
}
interface IERC721Errors {
error ERC721InvalidOwner(address owner);
error ERC721NonexistentToken(uint256 tokenId);
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
error ERC721InvalidSender(address sender);
error ERC721InvalidReceiver(address receiver);
error ERC721InsufficientApproval(address operator, uint256 tokenId);
error ERC721InvalidApprover(address approver);
error ERC721InvalidOperator(address operator);
}
interface IERC1155Errors {
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
error ERC1155InvalidSender(address sender);
error ERC1155InvalidReceiver(address receiver);
error ERC1155MissingApprovalForAll(address operator, address owner);
error ERC1155InvalidApprover(address approver);
error ERC1155InvalidOperator(address operator);
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
abstract contract Ownable is Context {
address private _owner;
error OwnableUnauthorizedAccount(address account);
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
modifier onlyOwner() {
_checkOwner();
_;
}
function owner() public view virtual returns (address) {
return _owner;
}
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
// File: @openzeppelin/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address account => uint256) private _balances;
mapping(address account => mapping(address spender => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual returns (string memory) {
return _name;
}
function symbol() public view virtual returns (string memory) {
return _symbol;
}
function decimals() public view virtual returns (uint8) {
return 18;
}
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
function _transfer(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}
pragma solidity 0.8.23;
contract KIMPSONS is ERC20, Ownable {
address private marketingWallet;
uint16 public buyFee = 0;
uint16 public sellFee = 0;
uint256 public swapTokensAtAmount = 30_000 * 1e18;
bool private _distributingFees;
mapping(address => bool) private _excludedFromFees;
bool public limitsInEffect = true;
uint256 public maxWalletBalance = 1_035_000 * 1e18; // 1.5% of Tokens
mapping(address => bool) private _excludedFromMaxWalletBalance;
address public immutable uniV2Pair;
IUniswapV2Router public constant uniV2Router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
bool public tradingEnabled;
event LimitsRemoved();
event TradingEnabled();
event BuyFeeSet(uint16 newBuyFee);
event SellFeeSet(uint16 newSellFee);
event MarketingWalletUpdated(address newAddress);
event SwapTokensAtAmountSet(uint256 newSwapTokensAtAmount);
event FeesDistributed(uint256 totalTokensDistributed);
constructor() ERC20("KIMPSONS", "KAWS") Ownable(msg.sender) {
uniV2Pair = IUniswapV2Factory(uniV2Router.factory()).createPair(address(this), uniV2Router.WETH());
_excludedFromMaxWalletBalance[uniV2Pair] = true;
_excludedFromFees[owner()] = true;
marketingWallet = owner();
_mint(owner(), 69_000_000 * 1e18);
_approve(address(this), address(uniV2Router), type(uint256).max);
}
receive() external payable {}
function _transfer(address from, address to, uint256 amount) internal override {
require(amount > 0, "KIMPSONS: transfer amount must be greater than 0");
// Check if trading has been enabled
if (!tradingEnabled) {
require(from == owner() || to == owner(), "KIMPSONS: trading has not been enabled yet");
}
// Max TX and Max Balance Limits
if (limitsInEffect) {
if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_distributingFees) {
// On Buys
if (from == uniV2Pair && !_excludedFromMaxWalletBalance[to]) {
require(
amount + balanceOf(to) <= maxWalletBalance, "KIMPSONS: balance would exceed max wallet balance"
);
}
// On Transfers to non-excluded "to" address
else if (!_excludedFromMaxWalletBalance[to]) {
require(
amount + balanceOf(to) <= maxWalletBalance, "KIMPSONS: balance would exceed max wallet balance"
);
}
}
}
// Swap any tokens held as fees for ETH and distribute
bool shouldSwap = balanceOf(address(this)) >= swapTokensAtAmount;
if (shouldSwap && !_distributingFees && from != uniV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to])
{
_distributingFees = true;
_distributeFees();
_distributingFees = false;
}
// Determine if we should take fees
bool takeFees = !_distributingFees;
if (_excludedFromFees[from] || _excludedFromFees[to]) {
takeFees = false;
}
uint256 fees = 0;
// Take Fees if necessary
if (takeFees) {
// Fees on buys
if (from == uniV2Pair && buyFee > 0) {
fees = (amount * buyFee) / 1_000;
}
// Fees on sells
else if (to == uniV2Pair && sellFee > 0) {
fees = (amount * sellFee) / 1_000;
}
// If there are fees to be taken, transfer and substract from amount
if (fees > 0) {
super._transfer(from, address(this), fees);
amount -= fees;
}
}
// Make final transfer
super._transfer(from, to, amount);
}
function _distributeFees() private {
// Determine amount of held fees to distribute
uint256 tokensToDistribute = balanceOf(address(this));
if (tokensToDistribute > swapTokensAtAmount * 20) {
tokensToDistribute = swapTokensAtAmount * 20;
}
// Swap tokens for ETH
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniV2Router.WETH();
try uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokensToDistribute, 0, path, address(this), block.timestamp
) {} catch {}
// Send ETH to Marketing
uint256 ethBalance = address(this).balance;
if (ethBalance > 0) {
(bool success,) = marketingWallet.call{value: ethBalance}("");
if (success) {
emit FeesDistributed(tokensToDistribute);
}
}
}
function isExcludedFromFees(address account) public view returns (bool) {
return _excludedFromFees[account];
}
function isExcludedFromMaxWalletBalance(address account) public view returns (bool) {
return _excludedFromMaxWalletBalance[account];
}
function enableTrading() external onlyOwner {
tradingEnabled = true;
emit TradingEnabled();
}
function updateMarketingWallet(address newAddress) external onlyOwner {
require(newAddress != address(0), "KIMPSONS: address cannot be 0 address");
marketingWallet = newAddress;
emit MarketingWalletUpdated(newAddress);
}
function removeLimits() external onlyOwner {
limitsInEffect = false;
emit LimitsRemoved();
}
function setSwapTokensAtAmount(uint256 newSwapTokensAtAmount) external onlyOwner {
require(
newSwapTokensAtAmount >= totalSupply() / 69_000,
"KIMPSONS: swap tokens at amount cannot be lower than 0.001% of total supply"
);
require(
newSwapTokensAtAmount <= (totalSupply() * 5) / 1_000,
"KIMPSONS: swap tokens at amount cannot be higher than 0.5% of total supply"
);
swapTokensAtAmount = newSwapTokensAtAmount;
emit SwapTokensAtAmountSet(newSwapTokensAtAmount);
}
function setBuyFee(uint16 newBuyFee) external onlyOwner {
require(newBuyFee <= 400, "KIMPSONS: fee cannot be greater than 40%");
buyFee = newBuyFee;
emit BuyFeeSet(newBuyFee);
}
function setSellFee(uint16 newSellFee) external onlyOwner {
require(newSellFee <= 400, "KIMPSONS: fee cannot be greater than 40%");
sellFee = newSellFee;
emit SellFeeSet(newSellFee);
}
function setExcludedFromFees(address account, bool excluded) external onlyOwner {
_excludedFromFees[account] = excluded;
}
function setExcludedFromMaxWalletBalance(address account, bool excluded) external onlyOwner {
_excludedFromMaxWalletBalance[account] = excluded;
}
function setFees(uint16 newSellFee, uint16 newBuyFee) external onlyOwner {
require(newSellFee <= 400 && newBuyFee <=400, "KIMPSONS fee cannot be greater than 40%");
sellFee = newSellFee;
buyFee = newBuyFee;
emit SellFeeSet(newSellFee);
emit BuyFeeSet(newBuyFee);
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyFee 0x47062402 → uint16
decimals 0x313ce567 → uint8
isExcludedFromFees 0x4fbee193 → bool
isExcludedFromMaxWalletBalance 0x686d83c3 → bool
limitsInEffect 0x4a62bb65 → bool
maxWalletBalance 0xbbde77c1 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellFee 0x2b14ca56 → uint16
swapTokensAtAmount 0xe2f45605 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingEnabled 0x4ada218b → bool
uniV2Pair 0x8bcea939 → address
uniV2Router 0x958c2e52 → address
Write Contract 14 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 value
returns: bool
enableTrading 0x8a8c523c
No parameters
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
setBuyFee 0x70c47671
uint16 newBuyFee
setExcludedFromFees 0x590ffdce
address account
bool excluded
setExcludedFromMaxWalletBalance 0x94a98390
address account
bool excluded
setFees 0x9ef833d4
uint16 newSellFee
uint16 newBuyFee
setSellFee 0xe064648a
uint16 newSellFee
setSwapTokensAtAmount 0xafa4f3b2
uint256 newSwapTokensAtAmount
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateMarketingWallet 0xaacebbe3
address newAddress
Recent Transactions
No transactions found for this address