Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x41DB19A827c8C06835494d3A3612b49DaBebc8Ec
Balance 0 ETH
Nonce 1
Code Size 10968 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

10968 bytes
0x6080604052600436106101ba575f3560e01c806375f0a874116100eb578063a8aa1b3111610089578063dd62ed3e11610063578063dd62ed3e14610613578063e01af92c1461064f578063f2fde38b14610677578063f887ea401461069f576101c1565b8063a8aa1b3114610571578063a9059cbb1461059b578063dbe66ca0146105d7576101c1565b806395d89b41116100c557806395d89b41146104bb5780639aed7370146104e5578063a3ca847d1461050d578063a457c2d714610535576101c1565b806375f0a8741461043d5780638091f3bf146104675780638da5cb5b14610491576101c1565b8063313ce567116101585780635d098b38116101325780635d098b38146103995780636ddd1713146103c157806370a08231146103eb578063715018a614610427576101c1565b8063313ce5671461030b5780633950935114610335578063590ffdce14610371576101c1565b8063095ea7b311610194578063095ea7b31461022d57806318160ddd1461026957806323b872dd1461029357806325b86edf146102cf576101c1565b806301339c21146101c557806306fdde03146101db5780630940bbc714610205576101c1565b366101c157005b5f5ffd5b3480156101d0575f5ffd5b506101d96106c9565b005b3480156101e6575f5ffd5b506101ef6107f9565b6040516101fc9190611e82565b60405180910390f35b348015610210575f5ffd5b5061022b60048036038101906102269190611ed9565b610889565b005b348015610238575f5ffd5b50610253600480360381019061024e9190611f5e565b61093b565b6040516102609190611fb6565b60405180910390f35b348015610274575f5ffd5b5061027d610958565b60405161028a9190611fde565b60405180910390f35b34801561029e575f5ffd5b506102b960048036038101906102b49190611ff7565b610961565b6040516102c69190611fb6565b60405180910390f35b3480156102da575f5ffd5b506102f560048036038101906102f09190612047565b610a5c565b6040516103029190611fb6565b60405180910390f35b348015610316575f5ffd5b5061031f610c11565b60405161032c91906120a0565b60405180910390f35b348015610340575f5ffd5b5061035b60048036038101906103569190611f5e565b610c19565b6040516103689190611fb6565b60405180910390f35b34801561037c575f5ffd5b50610397600480360381019061039291906120e3565b610cc0565b005b3480156103a4575f5ffd5b506103bf60048036038101906103ba9190612121565b610dc0565b005b3480156103cc575f5ffd5b506103d5610f8e565b6040516103e29190611fb6565b60405180910390f35b3480156103f6575f5ffd5b50610411600480360381019061040c9190612121565b610fa1565b60405161041e9190611fde565b60405180910390f35b348015610432575f5ffd5b5061043b610fe6565b005b348015610448575f5ffd5b5061045161106d565b60405161045e919061215b565b60405180910390f35b348015610472575f5ffd5b5061047b611092565b6040516104889190611fb6565b60405180910390f35b34801561049c575f5ffd5b506104a56110a5565b6040516104b2919061215b565b60405180910390f35b3480156104c6575f5ffd5b506104cf6110cd565b6040516104dc9190611e82565b60405180910390f35b3480156104f0575f5ffd5b5061050b60048036038101906105069190611ed9565b61115d565b005b348015610518575f5ffd5b50610533600480360381019061052e9190611ed9565b611268565b005b348015610540575f5ffd5b5061055b60048036038101906105569190611f5e565b61131a565b6040516105689190611fb6565b60405180910390f35b34801561057c575f5ffd5b50610585611409565b604051610592919061215b565b60405180910390f35b3480156105a6575f5ffd5b506105c160048036038101906105bc9190611f5e565b61142e565b6040516105ce9190611fb6565b60405180910390f35b3480156105e2575f5ffd5b506105fd60048036038101906105f89190612121565b61144b565b60405161060a9190611fb6565b60405180910390f35b34801561061e575f5ffd5b5061063960048036038101906106349190612047565b611468565b6040516106469190611fde565b60405180910390f35b34801561065a575f5ffd5b5061067560048036038101906106709190612174565b6114ea565b005b348015610682575f5ffd5b5061069d60048036038101906106989190612121565b6115af565b005b3480156106aa575f5ffd5b506106b36116a5565b6040516106c091906121fa565b60405180910390f35b6106d16116ca565b73ffffffffffffffffffffffffffffffffffffffff166106ef6110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073c9061225d565b60405180910390fd5b600760159054906101000a900460ff1615610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c906122c5565b60405180910390fd5b6001600760156101000a81548160ff0219169083151502179055506001600760146101000a81548160ff0219169083151502179055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a1565b60606003805461080890612310565b80601f016020809104026020016040519081016040528092919081815260200182805461083490612310565b801561087f5780601f106108565761010080835404028352916020019161087f565b820191905f5260205f20905b81548152906001019060200180831161086257829003601f168201915b5050505050905090565b6108916116ca565b73ffffffffffffffffffffffffffffffffffffffff166108af6110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc9061225d565b60405180910390fd5b80600a819055507f13f91d6936cb30f23ecef75125dc94fead23e2cb4beb9d95058df43aa8c3078560405160405180910390a150565b5f61094e6109476116ca565b84846116d1565b6001905092915050565b5f600254905090565b5f61096d848484611894565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109b46116ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a906123b0565b60405180910390fd5b610a5085610a3f6116ca565b8584610a4b91906123fb565b6116d1565b60019150509392505050565b5f610a656116ca565b73ffffffffffffffffffffffffffffffffffffffff16610a836110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad09061225d565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b13919061215b565b602060405180830381865afa158015610b2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b529190612442565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610b8f92919061246d565b6020604051808303815f875af1158015610bab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bcf91906124a8565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051610c0292919061246d565b60405180910390a15092915050565b5f6012905090565b5f610cb6610c256116ca565b848460015f610c326116ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610cb191906124d3565b6116d1565b6001905092915050565b610cc86116ca565b73ffffffffffffffffffffffffffffffffffffffff16610ce66110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d339061225d565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed60405160405180910390a15050565b610dc86116ca565b73ffffffffffffffffffffffffffffffffffffffff16610de66110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e339061225d565b60405180910390fd5b5f600b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690612576565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e060405160405180910390a150565b600760149054906101000a900460ff1681565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fee6116ca565b73ffffffffffffffffffffffffffffffffffffffff1661100c6110a5565b73ffffffffffffffffffffffffffffffffffffffff1614611062576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110599061225d565b60405180910390fd5b61106b5f611ad7565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546110dc90612310565b80601f016020809104026020016040519081016040528092919081815260200182805461110890612310565b80156111535780601f1061112a57610100808354040283529160200191611153565b820191905f5260205f20905b81548152906001019060200180831161113657829003601f168201915b5050505050905090565b6111656116ca565b73ffffffffffffffffffffffffffffffffffffffff166111836110a5565b73ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d09061225d565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846112059190612594565b61120f9190612602565b90811502906040515f60405180830381858888f19350505050158015611237573d5f5f3e3d5ffd5b507ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf960405160405180910390a15050565b6112706116ca565b73ffffffffffffffffffffffffffffffffffffffff1661128e6110a5565b73ffffffffffffffffffffffffffffffffffffffff16146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db9061225d565b60405180910390fd5b806009819055507f5603f0cab8983038ffb2c31e46a497a67322819231397b1a4eff19e46e39851d60405160405180910390a150565b5f5f60015f6113276116ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d8906126a2565b60405180910390fd5b6113fe6113ec6116ca565b8585846113f991906123fb565b6116d1565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61144161143a6116ca565b8484611894565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114f26116ca565b73ffffffffffffffffffffffffffffffffffffffff166115106110a5565b73ffffffffffffffffffffffffffffffffffffffff1614611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d9061225d565b60405180910390fd5b80600760146101000a81548160ff0219169083151502179055507f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a60405160405180910390a150565b6115b76116ca565b73ffffffffffffffffffffffffffffffffffffffff166115d56110a5565b73ffffffffffffffffffffffffffffffffffffffff161461162b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116229061225d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090612730565b60405180910390fd5b6116a281611ad7565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361173f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611736906127be565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a49061284c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118879190611fde565b60405180910390a3505050565b5f81116118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd906128da565b60405180910390fd5b5f600760169054906101000a900460ff16806119385750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806119895750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611996575f9050611a86565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a0b576064600a54836119fa9190612594565b611a049190612602565b9050611a85565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a8057606460095483611a6f9190612594565b611a799190612602565b9050611a84565b5f90505b5b5b611a9c84848385611a9791906123fb565b611b9a565b5f811115611ad157611ad08460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611b9a565b5b50505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff90612968565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d906129f6565b60405180910390fd5b611c81838383611e0d565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb90612a84565b60405180910390fd5b8181611d1091906123fb565b5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611d9b91906124d3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dff9190611fde565b60405180910390a350505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e5482611e12565b611e5e8185611e1c565b9350611e6e818560208601611e2c565b611e7781611e3a565b840191505092915050565b5f6020820190508181035f830152611e9a8184611e4a565b905092915050565b5f5ffd5b5f819050919050565b611eb881611ea6565b8114611ec2575f5ffd5b50565b5f81359050611ed381611eaf565b92915050565b5f60208284031215611eee57611eed611ea2565b5b5f611efb84828501611ec5565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f2d82611f04565b9050919050565b611f3d81611f23565b8114611f47575f5ffd5b50565b5f81359050611f5881611f34565b92915050565b5f5f60408385031215611f7457611f73611ea2565b5b5f611f8185828601611f4a565b9250506020611f9285828601611ec5565b9150509250929050565b5f8115159050919050565b611fb081611f9c565b82525050565b5f602082019050611fc95f830184611fa7565b92915050565b611fd881611ea6565b82525050565b5f602082019050611ff15f830184611fcf565b92915050565b5f5f5f6060848603121561200e5761200d611ea2565b5b5f61201b86828701611f4a565b935050602061202c86828701611f4a565b925050604061203d86828701611ec5565b9150509250925092565b5f5f6040838503121561205d5761205c611ea2565b5b5f61206a85828601611f4a565b925050602061207b85828601611f4a565b9150509250929050565b5f60ff82169050919050565b61209a81612085565b82525050565b5f6020820190506120b35f830184612091565b92915050565b6120c281611f9c565b81146120cc575f5ffd5b50565b5f813590506120dd816120b9565b92915050565b5f5f604083850312156120f9576120f8611ea2565b5b5f61210685828601611f4a565b9250506020612117858286016120cf565b9150509250929050565b5f6020828403121561213657612135611ea2565b5b5f61214384828501611f4a565b91505092915050565b61215581611f23565b82525050565b5f60208201905061216e5f83018461214c565b92915050565b5f6020828403121561218957612188611ea2565b5b5f612196848285016120cf565b91505092915050565b5f819050919050565b5f6121c26121bd6121b884611f04565b61219f565b611f04565b9050919050565b5f6121d3826121a8565b9050919050565b5f6121e4826121c9565b9050919050565b6121f4816121da565b82525050565b5f60208201905061220d5f8301846121eb565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612247602083611e1c565b915061225282612213565b602082019050919050565b5f6020820190508181035f8301526122748161223b565b9050919050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f6122af601683611e1c565b91506122ba8261227b565b602082019050919050565b5f6020820190508181035f8301526122dc816122a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061232757607f821691505b60208210810361233a576123396122e3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61239a602883611e1c565b91506123a582612340565b604082019050919050565b5f6020820190508181035f8301526123c78161238e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61240582611ea6565b915061241083611ea6565b9250828203905081811115612428576124276123ce565b5b92915050565b5f8151905061243c81611eaf565b92915050565b5f6020828403121561245757612456611ea2565b5b5f6124648482850161242e565b91505092915050565b5f6040820190506124805f83018561214c565b61248d6020830184611fcf565b9392505050565b5f815190506124a2816120b9565b92915050565b5f602082840312156124bd576124bc611ea2565b5b5f6124ca84828501612494565b91505092915050565b5f6124dd82611ea6565b91506124e883611ea6565b9250828201905080821115612500576124ff6123ce565b5b92915050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f612560602783611e1c565b915061256b82612506565b604082019050919050565b5f6020820190508181035f83015261258d81612554565b9050919050565b5f61259e82611ea6565b91506125a983611ea6565b92508282026125b781611ea6565b915082820484148315176125ce576125cd6123ce565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61260c82611ea6565b915061261783611ea6565b925082612627576126266125d5565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61268c602583611e1c565b915061269782612632565b604082019050919050565b5f6020820190508181035f8301526126b981612680565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61271a602683611e1c565b9150612725826126c0565b604082019050919050565b5f6020820190508181035f8301526127478161270e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6127a8602483611e1c565b91506127b38261274e565b604082019050919050565b5f6020820190508181035f8301526127d58161279c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612836602283611e1c565b9150612841826127dc565b604082019050919050565b5f6020820190508181035f8301526128638161282a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6128c4602983611e1c565b91506128cf8261286a565b604082019050919050565b5f6020820190508181035f8301526128f1816128b8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612952602583611e1c565b915061295d826128f8565b604082019050919050565b5f6020820190508181035f83015261297f81612946565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6129e0602383611e1c565b91506129eb82612986565b604082019050919050565b5f6020820190508181035f830152612a0d816129d4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612a6e602683611e1c565b9150612a7982612a14565b604082019050919050565b5f6020820190508181035f830152612a9b81612a62565b905091905056fea2646970667358221220103efd3ed86079214178635ab643b7d108e508ebd2d51cefadcf66efbd82e7ce64736f6c634300081e0033

Verified Source Code Partial Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: No
SansAIAgent.sol 348 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;

/*
 * @title SansAIAgent (SANS)
 * @notice Upgraded to Solidity 0.8.30 compatibility.
 *         No functional changes were made—only compiler‑version bump
 *         and minor style tweaks to silence new compiler warnings.
 */

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// -------------------- ERC‑20 Interfaces --------------------
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);
}

// -------------------- ERC‑20 Base --------------------
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;
    string  private _name;
    string  private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name   = name_;
        _symbol = symbol_;
    }

    // --- IERC20Metadata ---
    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;
    }

    // --- IERC20 ---
    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);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        return true;
    }

    // --- Internal helpers ---
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

// -------------------- Address Utilities --------------------
library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

// -------------------- Ownable --------------------
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// -------------------- DEX Interfaces --------------------
interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

// -------------------- SansAIAgent Token --------------------
contract SansAIAgent is ERC20, Ownable {
    using Address for address payable;

    // --- DEX state ---
    IRouter  public router;
    address  public pair;

    bool public swapEnabled;
    bool public launched;
    bool private swapping;

    // --- Tokenomics ---
    address public marketingWallet = 0x5A075392181A015B088fDF95D6650F6a2D3855F9;
    uint256 private totBuyTax  = 3; // 3%
    uint256 private totSellTax = 3; // 3%

    mapping(address => bool) public excludedFromFees;

    // --- Events ---
    event TransferForeignToken(address token, uint256 amount);
    event Launched();
    event SwapEnabled();
    event BuyTaxesUpdated();
    event SellTaxesUpdated();
    event MarketingWalletUpdated();
    event ExcludedFromFeesUpdated();
    event StuckEthersCleared();

    // --- Constructor ---
    constructor() ERC20("SansTheGoaETH", "SANS") {
        uint256 decimalsFactor = 10 ** decimals();

        // Initial distribution
        _mint(0x9f1688CEa577655865Cd21aeDb69d3B755343e49, 7500000000  * decimalsFactor); // Marketing  (7.5B)
        _mint(0x8BAE590405707027554ff79DC14361D15164e551, 5000000000  * decimalsFactor); // Treasury   (5B)
        _mint(0x5D31a54dA3dfEc61C19f0B0B7356D7EA5B02adAf, 2500000000  * decimalsFactor); // CEX        (2.5B)
        _mint(0xf2c909EbBF33A34DdCB1e9690a2F9BcA27314643, 35000000000 * decimalsFactor); // Public     (35B)

        // Fee exclusions
        excludedFromFees[msg.sender] = true;
        excludedFromFees[0x9f1688CEa577655865Cd21aeDb69d3B755343e49] = true; // Marketing
        excludedFromFees[0x8BAE590405707027554ff79DC14361D15164e551] = true; // Treasury/CEX
        excludedFromFees[0x86790abbaCcD1B21F5ecFDaA67EC6282AFbf3E83] = true; // CoinStore
        excludedFromFees[0xf2067aBfabbBC621211935431519d41825d2F344] = true; // CoinStore Hot Wallet
        excludedFromFees[address(this)] = true;

        // Router & Pair
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap v2
        address _pair   = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair   = _pair;
    }

    // --- Core ERC20 override with fee logic ---
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 fee;
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) {
            fee = 0;
        } else {
            if (recipient == pair) {
                fee = (amount * totSellTax) / 100;
            } else if (sender == pair) {
                fee = (amount * totBuyTax) / 100;
            } else {
                fee = 0;
            }
        }

        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) super._transfer(sender, marketingWallet, fee);
    }

    // --- Admin: trading & taxes ---
    function launch() external onlyOwner {
        require(!launched, "Trading already active");
        launched = true;
        swapEnabled = true;
        emit Launched();
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
        emit SwapEnabled();
    }

    function setBuyTaxes(uint256 _marketing) external onlyOwner {
        totBuyTax = _marketing;
        emit BuyTaxesUpdated();
    }

    function setSellTaxes(uint256 _marketing) external onlyOwner {
        totSellTax = _marketing;
        emit SellTaxesUpdated();
    }

    function setMarketingWallet(address newWallet) external onlyOwner {
        excludedFromFees[marketingWallet] = false;
        require(newWallet != address(0), "Marketing wallet cannot be zero address");
        marketingWallet = newWallet;
        emit MarketingWalletUpdated();
    }

    function setExcludedFromFees(address account, bool state) external onlyOwner {
        excludedFromFees[account] = state;
        emit ExcludedFromFeesUpdated();
    }

    // --- Rescue functions ---
    function withdrawStuckTokens(address token, address to) external onlyOwner returns (bool sent) {
        uint256 balance = IERC20(token).balanceOf(address(this));
        sent = IERC20(token).transfer(to, balance);
        emit TransferForeignToken(token, balance);
    }

    function clearStuckEthers(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
        emit StuckEthersCleared();
    }

    // --- Fallback ---
    receive() external payable {}
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
excludedFromFees 0xdbe66ca0 → bool
launched 0x8091f3bf → bool
marketingWallet 0x75f0a874 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
swapEnabled 0x6ddd1713 → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 15 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
clearStuckEthers 0x9aed7370
uint256 amountPercentage
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
launch 0x01339c21
No parameters
renounceOwnership 0x715018a6
No parameters
setBuyTaxes 0xa3ca847d
uint256 _marketing
setExcludedFromFees 0x590ffdce
address account
bool state
setMarketingWallet 0x5d098b38
address newWallet
setSellTaxes 0x0940bbc7
uint256 _marketing
setSwapEnabled 0xe01af92c
bool state
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
withdrawStuckTokens 0x25b86edf
address token
address to
returns: bool

Recent Transactions

No transactions found for this address