Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x153Ba9A2809910a072Cc0c4a871Dc2b2d3c04d6A
Balance 0 ETH
Nonce 1
Code Size 11239 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

11239 bytes
0x60806040526004361061014e575f3560e01c80638ea5220f116100b5578063d212a69a1161006e578063d212a69a1461047f578063d3f6a157146104b0578063dd62ed3e146104d8578063f2fde38b14610514578063f5b3c3bf1461053c578063f887ea401461057857610155565b80638ea5220f1461037357806395d89b411461039d5780639fccce32146103c7578063a9059cbb146103f1578063b88631151461042d578063c16dd4a41461045757610155565b8063313ce56711610107578063313ce5671461027957806349bd5a5e146102a35780636ddd1713146102cd57806370a08231146102f7578063715018a6146103335780638da5cb5b1461034957610155565b806306fdde0314610159578063095ea7b31461018357806318160ddd146101bf5780631a8145bb146101e95780631f3fed8f1461021357806323b872dd1461023d57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d6105a2565b60405161017a91906120be565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a4919061216f565b610632565b6040516101b691906121c7565b60405180910390f35b3480156101ca575f80fd5b506101d361064f565b6040516101e091906121ef565b60405180910390f35b3480156101f4575f80fd5b506101fd610658565b60405161020a91906121ef565b60405180910390f35b34801561021e575f80fd5b5061022761065e565b60405161023491906121ef565b60405180910390f35b348015610248575f80fd5b50610263600480360381019061025e9190612208565b610664565b60405161027091906121c7565b60405180910390f35b348015610284575f80fd5b5061028d610738565b60405161029a9190612273565b60405180910390f35b3480156102ae575f80fd5b506102b7610740565b6040516102c4919061229b565b60405180910390f35b3480156102d8575f80fd5b506102e1610764565b6040516102ee91906121c7565b60405180910390f35b348015610302575f80fd5b5061031d600480360381019061031891906122b4565b610777565b60405161032a91906121ef565b60405180910390f35b34801561033e575f80fd5b506103476107bc565b005b348015610354575f80fd5b5061035d61090f565b60405161036a919061229b565b60405180910390f35b34801561037e575f80fd5b50610387610937565b604051610394919061229b565b60405180910390f35b3480156103a8575f80fd5b506103b161095c565b6040516103be91906120be565b60405180910390f35b3480156103d2575f80fd5b506103db6109ec565b6040516103e891906121ef565b60405180910390f35b3480156103fc575f80fd5b506104176004803603810190610412919061216f565b6109f2565b60405161042491906121c7565b60405180910390f35b348015610438575f80fd5b50610441610a0f565b60405161044e91906121c7565b60405180910390f35b348015610462575f80fd5b5061047d60048036038101906104789190612309565b610a22565b005b34801561048a575f80fd5b50610493610b9e565b6040516104a7989796959493929190612347565b60405180910390f35b3480156104bb575f80fd5b506104d660048036038101906104d191906123c3565b610c33565b005b3480156104e3575f80fd5b506104fe60048036038101906104f991906123c3565b610d4d565b60405161050b91906121ef565b60405180910390f35b34801561051f575f80fd5b5061053a600480360381019061053591906122b4565b610dcf565b005b348015610547575f80fd5b50610562600480360381019061055d91906122b4565b610f91565b60405161056f91906121c7565b60405180910390f35b348015610583575f80fd5b5061058c610fae565b604051610599919061245c565b60405180910390f35b6060600380546105b1906124a2565b80601f01602080910402602001604051908101604052809291908181526020018280546105dd906124a2565b80156106285780601f106105ff57610100808354040283529160200191610628565b820191905f5260205f20905b81548152906001019060200180831161060b57829003601f168201915b5050505050905090565b5f61064561063e610fd2565b8484610fd9565b6001905092915050565b5f600254905090565b600f5481565b600e5481565b5f6106708484846110c0565b61072d8461067c610fd2565b61072885604051806060016040528060288152602001612b8a6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106df610fd2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546116899092919063ffffffff16565b610fd9565b600190509392505050565b5f6012905090565b7f0000000000000000000000003b1051db1fe9b73c6ed535d69ef525c1b954e64581565b600c60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107c4610fd2565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108499061251c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461096b906124a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610997906124a2565b80156109e25780601f106109b9576101008083540402835291602001916109e2565b820191905f5260205f20905b8154815290600101906020018083116109c557829003601f168201915b5050505050905090565b60105481565b5f610a056109fe610fd2565b84846110c0565b6001905092915050565b600c60029054906101000a900460ff1681565b610a2a610fd2565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf9061251c565b60405180910390fd5b7f0000000000000000000000003b1051db1fe9b73c6ed535d69ef525c1b954e64573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d90612584565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff1690805f0160029054906101000a900460ff1690805f0160039054906101000a900460ff1690805f0160049054906101000a900460ff1690805f0160059054906101000a900460ff1690805f0160069054906101000a900460ff1690805f0160079054906101000a900460ff16905088565b610c3b610fd2565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc09061251c565b60405180910390fd5b8160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610dd7610fd2565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c9061251c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612612565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6012602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f33905090565b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110b391906121ef565b60405180910390a3505050565b5f81036110d7576110d283835f6116eb565b611684565b6110df61090f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561114d575061111d61090f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156111665750600c60029054906101000a900460ff16155b505f61117130610777565b90505f600b5482101590508080156111955750600c60019054906101000a900460ff165b80156111ae5750600c60029054906101000a900460ff16155b8015611200575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611243576001600c60026101000a81548160ff02191690831515021790555061122861188d565b5f600c60026101000a81548160ff0219169083151502179055505b5f600c60029054906101000a900460ff161590508015611675575f6011544310156112f65761128f6064611281606388611b6390919063ffffffff16565b611bda90919063ffffffff16565b90506063605e826112a0919061265d565b6112aa91906126cb565b600e5f8282546112ba91906126fb565b9250508190555060636005826112d0919061265d565b6112da91906126cb565b60105f8282546112ea91906126fb565b92505081905550611651565b60125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561135f57505f600d5f0160049054906101000a900460ff1660ff16115b156114a75761139e6064611390600d5f0160049054906101000a900460ff1660ff1688611b6390919063ffffffff16565b611bda90919063ffffffff16565b9050600d5f0160049054906101000a900460ff1660ff16600d5f0160079054906101000a900460ff1660ff16826113d5919061265d565b6113df91906126cb565b600f5f8282546113ef91906126fb565b92505081905550600d5f0160049054906101000a900460ff1660ff16600d5f0160059054906101000a900460ff1660ff168261142b919061265d565b61143591906126cb565b600e5f82825461144591906126fb565b92505081905550600d5f0160049054906101000a900460ff1660ff16600d5f0160069054906101000a900460ff1660ff1682611481919061265d565b61148b91906126cb565b60105f82825461149b91906126fb565b92505081905550611650565b60125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561150f57505f600d5f015f9054906101000a900460ff1660ff16115b1561164f5761154d606461153f600d5f015f9054906101000a900460ff1660ff1688611b6390919063ffffffff16565b611bda90919063ffffffff16565b9050600d5f015f9054906101000a900460ff1660ff16600d5f0160039054906101000a900460ff1660ff1682611583919061265d565b61158d91906126cb565b600f5f82825461159d91906126fb565b92505081905550600d5f015f9054906101000a900460ff1660ff16600d5f0160019054906101000a900460ff1660ff16826115d8919061265d565b6115e291906126cb565b600e5f8282546115f291906126fb565b92505081905550600d5f015f9054906101000a900460ff1660ff16600d5f0160029054906101000a900460ff1660ff168261162d919061265d565b61163791906126cb565b60105f82825461164791906126fb565b925050819055505b5b5b5f811115611665576116648730836116eb565b5b8085611671919061272e565b9450505b6116808686866116eb565b5050505b505050565b5f8383111582906116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c791906120be565b60405180910390fd5b505f83856116de919061272e565b9050809150509392505050565b61175481604051806060016040528060268152602001612b64602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546116899092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506117e3815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c2390919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161188091906121ef565b60405180910390a3505050565b5f61189730610777565b90505f601054600e54600f546118ad91906126fb565b6118b791906126fb565b90505f808314806118c757505f82145b156118d457505050611b61565b6014600b546118e3919061265d565b8311156118fc576014600b546118f9919061265d565b92505b5f600283600f548661190e919061265d565b61191891906126cb565b61192291906126cb565b90505f6119388286611c8090919063ffffffff16565b90505f47905061194782611cc9565b5f61195b8247611c8090919063ffffffff16565b90505f61198587611977600e5485611b6390919063ffffffff16565b611bda90919063ffffffff16565b90505f6119af886119a160105486611b6390919063ffffffff16565b611bda90919063ffffffff16565b90505f81836119be91906126fb565b846119c9919061272e565b90505f600f819055505f600e819055505f6010819055505f871180156119ee57505f81115b15611a37576119fd8782611efc565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868682604051611a2e929190612761565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168347611a7b919061272e565b604051611a87906127b5565b5f6040518083038185875af1925050503d805f8114611ac1576040519150601f19603f3d011682016040523d82523d5f602084013e611ac6565b606091505b50508098505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611b11906127b5565b5f6040518083038185875af1925050503d805f8114611b4b576040519150601f19603f3d011682016040523d82523d5f602084013e611b50565b606091505b505080985050505050505050505050505b565b5f808303611b73575f9050611bd4565b5f8284611b80919061265d565b9050828482611b8f91906126cb565b14611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690612839565b60405180910390fd5b809150505b92915050565b5f611c1b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fd3565b905092915050565b5f808284611c3191906126fb565b905083811015611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d906128a1565b60405180910390fd5b8091505092915050565b5f611cc183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611689565b905092915050565b5f600267ffffffffffffffff811115611ce557611ce46128bf565b5b604051908082528060200260200182016040528015611d135781602001602082028036833780820191505090505b50905030815f81518110611d2a57611d296128ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df1919061292d565b81600181518110611e0557611e046128ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e6a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610fd9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ecb959493929190612a48565b5f604051808303815f87803b158015611ee2575f80fd5b505af1158015611ef4573d5f803e3d5ffd5b505050505050565b611f27307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610fd9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401611f8b96959493929190612aa0565b60606040518083038185885af1158015611fa7573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611fcc9190612b13565b5050505050565b5f8083118290612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201091906120be565b60405180910390fd5b505f838561202791906126cb565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561206b578082015181840152602081019050612050565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61209082612034565b61209a818561203e565b93506120aa81856020860161204e565b6120b381612076565b840191505092915050565b5f6020820190508181035f8301526120d68184612086565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61210b826120e2565b9050919050565b61211b81612101565b8114612125575f80fd5b50565b5f8135905061213681612112565b92915050565b5f819050919050565b61214e8161213c565b8114612158575f80fd5b50565b5f8135905061216981612145565b92915050565b5f8060408385031215612185576121846120de565b5b5f61219285828601612128565b92505060206121a38582860161215b565b9150509250929050565b5f8115159050919050565b6121c1816121ad565b82525050565b5f6020820190506121da5f8301846121b8565b92915050565b6121e98161213c565b82525050565b5f6020820190506122025f8301846121e0565b92915050565b5f805f6060848603121561221f5761221e6120de565b5b5f61222c86828701612128565b935050602061223d86828701612128565b925050604061224e8682870161215b565b9150509250925092565b5f60ff82169050919050565b61226d81612258565b82525050565b5f6020820190506122865f830184612264565b92915050565b61229581612101565b82525050565b5f6020820190506122ae5f83018461228c565b92915050565b5f602082840312156122c9576122c86120de565b5b5f6122d684828501612128565b91505092915050565b6122e8816121ad565b81146122f2575f80fd5b50565b5f81359050612303816122df565b92915050565b5f806040838503121561231f5761231e6120de565b5b5f61232c85828601612128565b925050602061233d858286016122f5565b9150509250929050565b5f6101008201905061235b5f83018b612264565b612368602083018a612264565b6123756040830189612264565b6123826060830188612264565b61238f6080830187612264565b61239c60a0830186612264565b6123a960c0830185612264565b6123b660e0830184612264565b9998505050505050505050565b5f80604083850312156123d9576123d86120de565b5b5f6123e685828601612128565b92505060206123f785828601612128565b9150509250929050565b5f819050919050565b5f61242461241f61241a846120e2565b612401565b6120e2565b9050919050565b5f6124358261240a565b9050919050565b5f6124468261242b565b9050919050565b6124568161243c565b82525050565b5f60208201905061246f5f83018461244d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124b957607f821691505b6020821081036124cc576124cb612475565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61250660208361203e565b9150612511826124d2565b602082019050919050565b5f6020820190508181035f830152612533816124fa565b9050919050565b7f4d757374206b65657020756e69737761705632506169720000000000000000005f82015250565b5f61256e60178361203e565b91506125798261253a565b602082019050919050565b5f6020820190508181035f83015261259b81612562565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6125fc60268361203e565b9150612607826125a2565b604082019050919050565b5f6020820190508181035f830152612629816125f0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6126678261213c565b91506126728361213c565b92508282026126808161213c565b9150828204841483151761269757612696612630565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126d58261213c565b91506126e08361213c565b9250826126f0576126ef61269e565b5b828204905092915050565b5f6127058261213c565b91506127108361213c565b925082820190508082111561272857612727612630565b5b92915050565b5f6127388261213c565b91506127438361213c565b925082820390508181111561275b5761275a612630565b5b92915050565b5f6040820190506127745f8301856121e0565b61278160208301846121e0565b9392505050565b5f81905092915050565b50565b5f6127a05f83612788565b91506127ab82612792565b5f82019050919050565b5f6127bf82612795565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61282360218361203e565b915061282e826127c9565b604082019050919050565b5f6020820190508181035f83015261285081612817565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61288b601b8361203e565b915061289682612857565b602082019050919050565b5f6020820190508181035f8301526128b88161287f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061292781612112565b92915050565b5f60208284031215612942576129416120de565b5b5f61294f84828501612919565b91505092915050565b5f819050919050565b5f61297b61297661297184612958565b612401565b61213c565b9050919050565b61298b81612961565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129c381612101565b82525050565b5f6129d483836129ba565b60208301905092915050565b5f602082019050919050565b5f6129f682612991565b612a00818561299b565b9350612a0b836129ab565b805f5b83811015612a3b578151612a2288826129c9565b9750612a2d836129e0565b925050600181019050612a0e565b5085935050505092915050565b5f60a082019050612a5b5f8301886121e0565b612a686020830187612982565b8181036040830152612a7a81866129ec565b9050612a89606083018561228c565b612a9660808301846121e0565b9695505050505050565b5f60c082019050612ab35f83018961228c565b612ac060208301886121e0565b612acd6040830187612982565b612ada6060830186612982565b612ae7608083018561228c565b612af460a08301846121e0565b979650505050505050565b5f81519050612b0d81612145565b92915050565b5f805f60608486031215612b2a57612b296120de565b5b5f612b3786828701612aff565b9350506020612b4886828701612aff565b9250506040612b5986828701612aff565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220da53ad4adf570bb4f8128370baaa0ced5b7952aa99494887ce00ea8ab2356c9964736f6c63430008140033

Verified Source Code Partial Match

Compiler: v0.8.20+commit.a1b79de6 EVM: shanghai Optimization: No
JOBSEEK.sol 889 lines
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.2;

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        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
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => 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 override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

   

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }

    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns (int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);
    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);
    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);
    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);
    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract JOBSEEK is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable router;
    address public immutable uniswapV2Pair;

    // addresses
    address public devWallet;
    address private marketingWallet;

    // limits
    uint256 private maxBuyAmount;
    uint256 private maxSellAmount;
    uint256 private maxWalletAmount;

    uint256 private thresholdSwapAmount;

    // status flags
    bool private isTrading = true;
    bool public swapEnabled = true;
    bool public isSwapping;

    struct Fees {
        uint8 buyTotalFees;
        uint8 buyMarketingFee;
        uint8 buyDevFee;
        uint8 buyLiquidityFee;
        uint8 sellTotalFees;
        uint8 sellMarketingFee;
        uint8 sellDevFee;
        uint8 sellLiquidityFee;
    }

    Fees public _fees =
        Fees({
            buyTotalFees: 0,
            buyMarketingFee: 0,
            buyDevFee: 0,
            buyLiquidityFee: 0,
            sellTotalFees: 0,
            sellMarketingFee: 0,
            sellDevFee: 0,
            sellLiquidityFee: 0
        });

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 private taxTill;
    // exclude from fees and max transaction amount
    // mapping(address => bool) private _isExcludedFromFees;
    // mapping(address => bool) public _isExcludedMaxTransactionAmount;
    // mapping(address => bool) public _isExcludedMaxWalletAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public marketPair;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived);

    constructor() ERC20("JOBSEEK", "JOBSEEK") {
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair(
            address(this),
            router.WETH()
        );

        // _isExcludedMaxTransactionAmount[address(router)] = true;
        // _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        // _isExcludedMaxTransactionAmount[owner()] = true;
        // _isExcludedMaxTransactionAmount[address(this)] = true;

        // _isExcludedFromFees[owner()] = true;
        // _isExcludedFromFees[address(this)] = true;

        // _isExcludedMaxWalletAmount[owner()] = true;
        // _isExcludedMaxWalletAmount[address(this)] = true;
        // _isExcludedMaxWalletAmount[address(uniswapV2Pair)] = true;

        marketPair[address(uniswapV2Pair)] = true;

        approve(address(router), type(uint256).max);
        uint256 totalSupply = 1e8 * 1e18;

        maxBuyAmount = (totalSupply * 1) / 100; // 1% maxTransactionAmountTxn
        maxSellAmount = (totalSupply * 1) / 100; // 1% maxTransactionAmountTxn
        maxWalletAmount = (totalSupply * 1) / 100; // 1% maxWallet
        thresholdSwapAmount = (totalSupply * 4) / 10000;

        _fees.buyMarketingFee = 0;
        _fees.buyLiquidityFee = 0;
        _fees.buyDevFee = 0;
        _fees.buyTotalFees =
            _fees.buyMarketingFee +
            _fees.buyLiquidityFee +
            _fees.buyDevFee;

        _fees.sellMarketingFee = 0;
        _fees.sellLiquidityFee = 0;
        _fees.sellDevFee = 3;
        _fees.sellTotalFees =
            _fees.sellMarketingFee +
            _fees.sellLiquidityFee +
            _fees.sellDevFee;

        marketingWallet = address(0xa2C0C43f82AC6E9Ee89ddCfe6364d6E0D0863C37);
        devWallet = address(0xa2C0C43f82AC6E9Ee89ddCfe6364d6E0D0863C37);

        // exclude from paying fees or having max transaction amount

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    // function swapTrading() external onlyOwner {
    //     isTrading = true;
    //     swapEnabled = true;
    //     taxTill = block.number + 10;
    // }

    // change the minimum amount of tokens to sell from fees
    /*
    function updateThresholdSwapAmount(uint256 newAmount) external onlyOwner returns(bool){
        thresholdSwapAmount = newAmount;
        return true;
    }


    function updateMaxTxnAmount(uint256 newMaxBuy, uint256 newMaxSell) external onlyOwner {
        require(((totalSupply() * newMaxBuy) / 1000) >= (totalSupply() / 100), "maxBuyAmount must be higher than 1%");
        require(((totalSupply() * newMaxSell) / 1000) >= (totalSupply() / 100), "maxSellAmount must be higher than 1%");
        maxBuyAmount = (totalSupply() * newMaxBuy) / 1000;
        maxSellAmount = (totalSupply() * newMaxSell) / 1000;
    }


    function updateMaxWalletAmount(uint256 newPercentage) external onlyOwner {
        require(((totalSupply() * newPercentage) / 1000) >= (totalSupply() / 100), "Cannot set maxWallet lower than 1%");
        maxWalletAmount = (totalSupply() * newPercentage) / 1000;
    }

    function updateFees(uint8 _marketingFeeBuy, uint8 _liquidityFeeBuy,uint8 _devFeeBuy,uint8 _marketingFeeSell, uint8 _liquidityFeeSell,uint8 _devFeeSell) external onlyOwner{
        _fees.buyMarketingFee = _marketingFeeBuy;
        _fees.buyLiquidityFee = _liquidityFeeBuy;
        _fees.buyDevFee = _devFeeBuy;
        _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee;

        _fees.sellMarketingFee = _marketingFeeSell;
        _fees.sellLiquidityFee = _liquidityFeeSell;
        _fees.sellDevFee = _devFeeSell;
        _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee;
        require(_fees.buyTotalFees <= 10, "Must keep fees at 30% or less");   
        require(_fees.sellTotalFees <= 10, "Must keep fees at 30% or less");
     
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }
    function excludeFromWalletLimit(address account, bool excluded) public onlyOwner {
        _isExcludedMaxWalletAmount[account] = excluded;
    }
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    */

    function setMarketPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "Must keep uniswapV2Pair");
        marketPair[pair] = value;
    }
    /*function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    } */

    function setWallets(
        address _marketingWallet,
        address _devWallet
    ) external onlyOwner {
        marketingWallet = _marketingWallet;
        devWallet = _devWallet;
    }

    /*function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }*/

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        if (amount == 0) {
            super._transfer(sender, recipient, 0);
            return;
        }

        if (sender != owner() && recipient != owner() && !isSwapping) {
            // if (!isTrading) {
            //     require(
            //         _isExcludedFromFees[sender] ||
            //             _isExcludedFromFees[recipient],
            //         "Trading is not active."
            //     );
            // }
            

            //  if (
            //     marketPair[sender] &&
            //     !_isExcludedMaxTransactionAmount[recipient]
            // ) 
            
            // {
            //     require(amount <= maxBuyAmount, "buy transfer over max amount");
            // } else if (
            //     marketPair[recipient] &&
            //     !_isExcludedMaxTransactionAmount[sender]
            // ) {
            //     require(
            //         amount <= maxSellAmount,
            //         "Sell transfer over max amount"
            //     );
            // }

            // if (!_isExcludedMaxWalletAmount[recipient]) {
            //     require(
            //         amount + balanceOf(recipient) <= maxWalletAmount,
            //         "Max wallet exceeded"
            //     );
            // }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= thresholdSwapAmount;

        if (
            canSwap && swapEnabled && !isSwapping && marketPair[recipient]
            //  && !_isExcludedFromFees[sender] &&
            // !_isExcludedFromFees[recipient]
        ) {
            isSwapping = true;
            swapBack();
            isSwapping = false;
        }

        bool takeFee = !isSwapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        /*if (_isExcludedFromFees[sender] || _isExcludedFromFees[recipient]) {
            takeFee = false;
        }*/

        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            uint256 fees = 0;
            if (block.number < taxTill) {
                fees = amount.mul(99).div(100);
                tokensForMarketing += (fees * 94) / 99;
                tokensForDev += (fees * 5) / 99;
            } else if (marketPair[recipient] && _fees.sellTotalFees > 0) {
                fees = amount.mul(_fees.sellTotalFees).div(100);
                tokensForLiquidity +=
                    (fees * _fees.sellLiquidityFee) /
                    _fees.sellTotalFees;
                tokensForMarketing +=
                    (fees * _fees.sellMarketingFee) /
                    _fees.sellTotalFees;
                tokensForDev += (fees * _fees.sellDevFee) / _fees.sellTotalFees;
            }
            // on buy
            else if (marketPair[sender] && _fees.buyTotalFees > 0) {
                fees = amount.mul(_fees.buyTotalFees).div(100);
                tokensForLiquidity +=
                    (fees * _fees.buyLiquidityFee) /
                    _fees.buyTotalFees;
                tokensForMarketing +=
                    (fees * _fees.buyMarketingFee) /
                    _fees.buyTotalFees;
                tokensForDev += (fees * _fees.buyDevFee) / _fees.buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(sender, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(sender, recipient, amount);
    }

    function swapTokensForEth(uint256 tAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tAmount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;

        if (contractTokenBalance == 0 || toSwap == 0) {
            return;
        }

        if (contractTokenBalance > thresholdSwapAmount * 20) {
            contractTokenBalance = thresholdSwapAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractTokenBalance * tokensForLiquidity) /
            toSwap /
            2;
        uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 newBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div(
            toSwap
        );
        uint256 ethForDev = newBalance.mul(tokensForDev).div(toSwap);
        uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDev);

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity);
        }

        (success, ) = address(devWallet).call{
            value: (address(this).balance - ethForMarketing)
        }("");
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }
}

Read Contract

_fees 0xd212a69a → uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
devWallet 0x8ea5220f → address
isSwapping 0xb8863115 → bool
marketPair 0xf5b3c3bf → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
router 0xf887ea40 → address
swapEnabled 0x6ddd1713 → bool
symbol 0x95d89b41 → string
tokensForDev 0x9fccce32 → uint256
tokensForLiquidity 0x1a8145bb → uint256
tokensForMarketing 0x1f3fed8f → uint256
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address

Write Contract 7 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
renounceOwnership 0x715018a6
No parameters
setMarketPair 0xc16dd4a4
address pair
bool value
setWallets 0xd3f6a157
address _marketingWallet
address _devWallet
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address