Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xa96eb97bd92c8320CbcAFD9CE95e980a423688A2
Balance 0 ETH
Nonce 1
Code Size 19208 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

19208 bytes
0x60806040526004361061023e575f3560e01c80638da5cb5b1161012d578063ac94151c116100aa578063ca0701b21161006e578063ca0701b214610859578063cc1776d314610881578063cc274b29146108ab578063dd62ed3e146108d3578063f2fde38b1461090f57610245565b8063ac94151c14610777578063ad5dff73146107a1578063b2a1406c146107dd578063bbc0c74214610805578063c8c8ebe41461082f57610245565b8063a457c2d7116100f1578063a457c2d714610683578063a8b08982146106bf578063a9059cbb146106e9578063aa4bde2814610725578063aacebbe31461074f57610245565b80638da5cb5b146105c95780638f70ccf7146105f357806395d89b411461061b5780639f3f077814610645578063a095e8f91461065b57610245565b806339509351116101bb5780634f7041a51161017f5780634f7041a5146104fb5780635b00e5131461052557806370a082311461054d578063715018a61461058957806375f0a8741461059f57610245565b8063395093511461040b5780633af32abf146104475780633cfd5211146104835780633f0417e3146104ab5780634b2f84fa146104d357610245565b806318160ddd1161020257806318160ddd1461032b57806323b872dd146103555780632f37aa6d14610391578063313ce567146103b957806338a5f2f9146103e357610245565b80630445b6671461024957806306fdde03146102735780630758d9241461029d578063095ea7b3146102c75780630c4242841461030357610245565b3661024557005b5f5ffd5b348015610254575f5ffd5b5061025d610937565b60405161026a9190613484565b60405180910390f35b34801561027e575f5ffd5b5061028761093d565b604051610294919061350d565b60405180910390f35b3480156102a8575f5ffd5b506102b16109cd565b6040516102be91906135a7565b60405180910390f35b3480156102d2575f5ffd5b506102ed60048036038101906102e8919061362d565b6109f2565b6040516102fa9190613685565b60405180910390f35b34801561030e575f5ffd5b50610329600480360381019061032491906136c8565b610a0f565b005b348015610336575f5ffd5b5061033f610b4b565b60405161034c9190613484565b60405180910390f35b348015610360575f5ffd5b5061037b60048036038101906103769190613706565b610b54565b6040516103889190613685565b60405180910390f35b34801561039c575f5ffd5b506103b760048036038101906103b29190613756565b610c46565b005b3480156103c4575f5ffd5b506103cd610d76565b6040516103da91906137af565b60405180910390f35b3480156103ee575f5ffd5b50610409600480360381019061040491906136c8565b610d7e565b005b348015610416575f5ffd5b50610431600480360381019061042c919061362d565b610eba565b60405161043e9190613685565b60405180910390f35b348015610452575f5ffd5b5061046d600480360381019061046891906137c8565b610f61565b60405161047a9190613685565b60405180910390f35b34801561048e575f5ffd5b506104a960048036038101906104a491906137f3565b610fb3565b005b3480156104b6575f5ffd5b506104d160048036038101906104cc91906137f3565b611067565b005b3480156104de575f5ffd5b506104f960048036038101906104f491906137c8565b61112c565b005b348015610506575f5ffd5b5061050f61152e565b60405161051c9190613484565b60405180910390f35b348015610530575f5ffd5b5061054b600480360381019061054691906137f3565b611534565b005b348015610558575f5ffd5b50610573600480360381019061056e91906137c8565b61161e565b6040516105809190613484565b60405180910390f35b348015610594575f5ffd5b5061059d611663565b005b3480156105aa575f5ffd5b506105b36117b6565b6040516105c0919061383e565b60405180910390f35b3480156105d4575f5ffd5b506105dd6117db565b6040516105ea9190613866565b60405180910390f35b3480156105fe575f5ffd5b50610619600480360381019061061491906137f3565b611803565b005b348015610626575f5ffd5b5061062f6118ed565b60405161063c919061350d565b60405180910390f35b348015610650575f5ffd5b5061065961197d565b005b348015610666575f5ffd5b50610681600480360381019061067c91906138e0565b611a1d565b005b34801561068e575f5ffd5b506106a960048036038101906106a4919061362d565b611bc6565b6040516106b69190613685565b60405180910390f35b3480156106ca575f5ffd5b506106d3611cac565b6040516106e09190613866565b60405180910390f35b3480156106f4575f5ffd5b5061070f600480360381019061070a919061362d565b611cd0565b60405161071c9190613685565b60405180910390f35b348015610730575f5ffd5b50610739611ced565b6040516107469190613484565b60405180910390f35b34801561075a575f5ffd5b5061077560048036038101906107709190613967565b611cf3565b005b348015610782575f5ffd5b5061078b611e3a565b6040516107989190613685565b60405180910390f35b3480156107ac575f5ffd5b506107c760048036038101906107c291906137c8565b611e4d565b6040516107d49190613685565b60405180910390f35b3480156107e8575f5ffd5b5061080360048036038101906107fe9190613756565b611e9f565b005b348015610810575f5ffd5b5061081961200d565b6040516108269190613685565b60405180910390f35b34801561083a575f5ffd5b50610843612020565b6040516108509190613484565b60405180910390f35b348015610864575f5ffd5b5061087f600480360381019061087a9190613992565b612026565b005b34801561088c575f5ffd5b50610895612115565b6040516108a29190613484565b60405180910390f35b3480156108b6575f5ffd5b506108d160048036038101906108cc9190613992565b61211b565b005b3480156108de575f5ffd5b506108f960048036038101906108f491906139bd565b6121bb565b6040516109069190613484565b60405180910390f35b34801561091a575f5ffd5b50610935600480360381019061093091906137c8565b61223d565b005b60095481565b60606003805461094c90613a28565b80601f016020809104026020016040519081016040528092919081815260200182805461097890613a28565b80156109c35780601f1061099a576101008083540402835291602001916109c3565b820191905f5260205f20905b8154815290600101906020018083116109a657829003601f168201915b5050505050905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610a056109fe6123ff565b8484612406565b6001905092915050565b610a176123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c90613aa2565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d82604051610b3f9190613685565b60405180910390a25050565b5f600254905090565b5f610b608484846125c9565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ba76123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d90613b30565b60405180910390fd5b610c3a85610c326123ff565b858403612406565b60019150509392505050565b610c4e6123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613aa2565b60405180910390fd5b600a821115610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790613b98565b60405180910390fd5b81600781905550600a811115610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613c00565b60405180910390fd5b806008819055505050565b5f6012905090565b610d866123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90613aa2565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9b8f7e0160b0b3dbd1778c94df017a106051c9cfc844b82de0b4036a967d2d2b82604051610eae9190613685565b60405180910390a25050565b5f610f57610ec66123ff565b848460015f610ed36123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f529190613c4b565b612406565b6001905092915050565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610fbb6123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090613aa2565b60405180910390fd5b8015600660146101000a81548160ff02191690831515021790555050565b61106f6123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f490613aa2565b60405180910390fd5b806111155761110a610b4b565b600a81905550611129565b6b033b2e3c9fd0803ce8000000600a819055505b50565b6111346123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990613aa2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611328575f4790505f811161123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290613cc8565b60405180910390fd5b5f6112446117db565b73ffffffffffffffffffffffffffffffffffffffff168260405161126790613d13565b5f6040518083038185875af1925050503d805f81146112a1576040519150601f19603f3d011682016040523d82523d5f602084013e6112a6565b606091505b50509050806112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190613d71565b60405180910390fd5b7fd626025bae88be60fdc3ad9ab659cd89ac712e259db2aa71e5f0c428afc1c5b5826040516113199190613484565b60405180910390a1505061152b565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90613dff565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113d49190613866565b602060405180830381865afa1580156113ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114139190613e31565b90505f8111611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90613ea6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61147b6117db565b836040518363ffffffff1660e01b8152600401611499929190613ec4565b6020604051808303815f875af11580156114b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d99190613eff565b508273ffffffffffffffffffffffffffffffffffffffff167f46d2e6e71fc567877b817ff3d940571f989d4ee4d40f2b70806d36e738feef6f826040516115209190613484565b60405180910390a250505b50565b60075481565b61153c6123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c190613aa2565b60405180910390fd5b80600660166101000a81548160ff0219169083151502179055507f265a32a3888279767f510f77e5a369e8e1a95af05c9ef46b77c93369dd4fea76816040516116139190613685565b60405180910390a150565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61166b6123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f090613aa2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61180b6123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090613aa2565b60405180910390fd5b80600660156101000a81548160ff0219169083151502179055507f63e9bb35ae90a43113bc6f999f1c6395e88ee5f59560b46bd45815fe8560efae816040516118e29190613685565b60405180910390a150565b6060600480546118fc90613a28565b80601f016020809104026020016040519081016040528092919081815260200182805461192890613a28565b80156119735780601f1061194a57610100808354040283529160200191611973565b820191905f5260205f20905b81548152906001019060200180831161195657829003601f168201915b5050505050905090565b6119856123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90613aa2565b60405180910390fd5b611a1b612d0d565b565b611a256123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613aa2565b60405180910390fd5b5f5f90505b83839050811015611bc05781600e5f868685818110611ada57611ad9613f2a565b5b9050602002016020810190611aef91906137c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110611b5157611b50613f2a565b5b9050602002016020810190611b6691906137c8565b73ffffffffffffffffffffffffffffffffffffffff167ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d83604051611bab9190613685565b60405180910390a28080600101915050611ab8565b50505050565b5f5f60015f611bd36123ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8490613fc7565b60405180910390fd5b611ca1611c986123ff565b85858403612406565b600191505092915050565b7f000000000000000000000000d4ef75ea0809e05d4f835e31d69bf5e7ae2ceff881565b5f611ce3611cdc6123ff565b84846125c9565b6001905092915050565b600a5481565b611cfb6123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8090613aa2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee9061402f565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660169054906101000a900460ff1681565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611ea76123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90613aa2565b60405180910390fd5b6103e86005611f42610b4b565b611f4c919061404d565b611f5691906140bb565b821015611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f9061415b565b60405180910390fd5b6103e86005611fa5610b4b565b611faf919061404d565b611fb991906140bb565b811015611ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff2906141e9565b60405180910390fd5b81600b8190555080600a819055505050565b600660159054906101000a900460ff1681565b600b5481565b61202e6123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b390613aa2565b60405180910390fd5b6120c53061161e565b811115612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe90614251565b60405180910390fd5b612112303383613021565b50565b60085481565b6121236123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890613aa2565b60405180910390fd5b8060098190555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6122456123ff565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ca90613aa2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612338906142df565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b9061436d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d9906143fb565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125bc9190613484565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262e90614489565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c906144f1565b60405180910390fd5b5f81036126bc576126b783835f613021565b612d08565b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561275a5750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127735750600660159054906101000a900460ff16155b156127b9575f6127b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127af90614559565b60405180910390fd5b5b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156128575750600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128a257600b548111156128a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612898906145e7565b60405180910390fd5b5b7f000000000000000000000000d4ef75ea0809e05d4f835e31d69bf5e7ae2ceff873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129445750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129975750600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129f0575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a53575f6129ff8361161e565b9050600a548282612a109190613c4b565b1115612a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4890614675565b60405180910390fd5b505b5f612a5d3061161e565b90505f6009548210159050808015612a825750600660149054906101000a900460ff16155b8015612ada57507f000000000000000000000000d4ef75ea0809e05d4f835e31d69bf5e7ae2ceff873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612ae857612ae7612d0d565b5b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612b865750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cfa575f7f000000000000000000000000d4ef75ea0809e05d4f835e31d69bf5e7ae2ceff873ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c0a57612c076064612bf96007548761329690919063ffffffff16565b61330d90919063ffffffff16565b90505b7f000000000000000000000000d4ef75ea0809e05d4f835e31d69bf5e7ae2ceff873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612c8857612c856064612c776008548761329690919063ffffffff16565b61330d90919063ffffffff16565b90505b5f811115612cf857600660169054906101000a900460ff1615612cd657612cd186600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613021565b612ce2565b612ce1863083613021565b5b612cf5818561335690919063ffffffff16565b93505b505b612d05858585613021565b50505b505050565b6001600660146101000a81548160ff0219169083151502179055505f612d323061161e565b90505f8103612d415750613005565b600660169054906101000a900460ff1615612d5c5750613005565b5f600267ffffffffffffffff811115612d7857612d77614693565b5b604051908082528060200260200182016040528015612da65781602001602082028036833780820191505090505b50905030815f81518110612dbd57612dbc613f2a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e61573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e8591906146d4565b81600181518110612e9957612e98613f2a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081612eff3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121bb565b1015612f5257612f513060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612406565b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f84600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612fd595949392919061480f565b5f604051808303815f87803b158015612fec575f5ffd5b505af1158015612ffe573d5f5f3e3d5ffd5b5050505050505b5f600660146101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361308f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613086906148d7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f490614965565b60405180910390fd5b61310883838361339f565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561318b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613182906149f3565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132199190613c4b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161327d9190613484565b60405180910390a36132908484846133a4565b50505050565b5f5f83036132a6575f9050613307565b5f82846132b3919061404d565b90508284826132c291906140bb565b14613302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f990614a81565b60405180910390fd5b809150505b92915050565b5f61334e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133a9565b905092915050565b5f61339783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061340a565b905092915050565b505050565b505050565b5f5f831182906133ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e6919061350d565b60405180910390fd5b505f83856133fd91906140bb565b9050809150509392505050565b5f838311158290613451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613448919061350d565b60405180910390fd5b505f838561345f9190614a9f565b9050809150509392505050565b5f819050919050565b61347e8161346c565b82525050565b5f6020820190506134975f830184613475565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6134df8261349d565b6134e981856134a7565b93506134f98185602086016134b7565b613502816134c5565b840191505092915050565b5f6020820190508181035f83015261352581846134d5565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61356f61356a6135658461352d565b61354c565b61352d565b9050919050565b5f61358082613555565b9050919050565b5f61359182613576565b9050919050565b6135a181613587565b82525050565b5f6020820190506135ba5f830184613598565b92915050565b5f5ffd5b5f5ffd5b5f6135d28261352d565b9050919050565b6135e2816135c8565b81146135ec575f5ffd5b50565b5f813590506135fd816135d9565b92915050565b61360c8161346c565b8114613616575f5ffd5b50565b5f8135905061362781613603565b92915050565b5f5f60408385031215613643576136426135c0565b5b5f613650858286016135ef565b925050602061366185828601613619565b9150509250929050565b5f8115159050919050565b61367f8161366b565b82525050565b5f6020820190506136985f830184613676565b92915050565b6136a78161366b565b81146136b1575f5ffd5b50565b5f813590506136c28161369e565b92915050565b5f5f604083850312156136de576136dd6135c0565b5b5f6136eb858286016135ef565b92505060206136fc858286016136b4565b9150509250929050565b5f5f5f6060848603121561371d5761371c6135c0565b5b5f61372a868287016135ef565b935050602061373b868287016135ef565b925050604061374c86828701613619565b9150509250925092565b5f5f6040838503121561376c5761376b6135c0565b5b5f61377985828601613619565b925050602061378a85828601613619565b9150509250929050565b5f60ff82169050919050565b6137a981613794565b82525050565b5f6020820190506137c25f8301846137a0565b92915050565b5f602082840312156137dd576137dc6135c0565b5b5f6137ea848285016135ef565b91505092915050565b5f60208284031215613808576138076135c0565b5b5f613815848285016136b4565b91505092915050565b5f6138288261352d565b9050919050565b6138388161381e565b82525050565b5f6020820190506138515f83018461382f565b92915050565b613860816135c8565b82525050565b5f6020820190506138795f830184613857565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126138a05761389f61387f565b5b8235905067ffffffffffffffff8111156138bd576138bc613883565b5b6020830191508360208202830111156138d9576138d8613887565b5b9250929050565b5f5f5f604084860312156138f7576138f66135c0565b5b5f84013567ffffffffffffffff811115613914576139136135c4565b5b6139208682870161388b565b93509350506020613933868287016136b4565b9150509250925092565b6139468161381e565b8114613950575f5ffd5b50565b5f813590506139618161393d565b92915050565b5f6020828403121561397c5761397b6135c0565b5b5f61398984828501613953565b91505092915050565b5f602082840312156139a7576139a66135c0565b5b5f6139b484828501613619565b91505092915050565b5f5f604083850312156139d3576139d26135c0565b5b5f6139e0858286016135ef565b92505060206139f1858286016135ef565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a3f57607f821691505b602082108103613a5257613a516139fb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a8c6020836134a7565b9150613a9782613a58565b602082019050919050565b5f6020820190508181035f830152613ab981613a80565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613b1a6028836134a7565b9150613b2582613ac0565b604082019050919050565b5f6020820190508181035f830152613b4781613b0e565b9050919050565b7f4275792074617820746f6f2068696768000000000000000000000000000000005f82015250565b5f613b826010836134a7565b9150613b8d82613b4e565b602082019050919050565b5f6020820190508181035f830152613baf81613b76565b9050919050565b7f53656c6c2074617820746f6f20686967680000000000000000000000000000005f82015250565b5f613bea6011836134a7565b9150613bf582613bb6565b602082019050919050565b5f6020820190508181035f830152613c1781613bde565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c558261346c565b9150613c608361346c565b9250828201905080821115613c7857613c77613c1e565b5b92915050565b7f4e6f206e617469766520746f6b656e7320746f207265636f76657200000000005f82015250565b5f613cb2601b836134a7565b9150613cbd82613c7e565b602082019050919050565b5f6020820190508181035f830152613cdf81613ca6565b9050919050565b5f81905092915050565b50565b5f613cfe5f83613ce6565b9150613d0982613cf0565b5f82019050919050565b5f613d1d82613cf3565b9150819050919050565b7f4e617469766520746f6b656e207265636f76657279206661696c6564000000005f82015250565b5f613d5b601c836134a7565b9150613d6682613d27565b602082019050919050565b5f6020820190508181035f830152613d8881613d4f565b9050919050565b7f43616e6e6f74207265636f7665722074617820746f6b656e73207769746820745f8201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b5f613de9602c836134a7565b9150613df482613d8f565b604082019050919050565b5f6020820190508181035f830152613e1681613ddd565b9050919050565b5f81519050613e2b81613603565b92915050565b5f60208284031215613e4657613e456135c0565b5b5f613e5384828501613e1d565b91505092915050565b7f4e6f20746f6b656e7320746f207265636f7665720000000000000000000000005f82015250565b5f613e906014836134a7565b9150613e9b82613e5c565b602082019050919050565b5f6020820190508181035f830152613ebd81613e84565b9050919050565b5f604082019050613ed75f830185613857565b613ee46020830184613475565b9392505050565b5f81519050613ef98161369e565b92915050565b5f60208284031215613f1457613f136135c0565b5b5f613f2184828501613eeb565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613fb16025836134a7565b9150613fbc82613f57565b604082019050919050565b5f6020820190508181035f830152613fde81613fa5565b9050919050565b7f43616e6e6f7420736574207a65726f20616464726573730000000000000000005f82015250565b5f6140196017836134a7565b915061402482613fe5565b602082019050919050565b5f6020820190508181035f8301526140468161400d565b9050919050565b5f6140578261346c565b91506140628361346c565b92508282026140708161346c565b9150828204841483151761408757614086613c1e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140c58261346c565b91506140d08361346c565b9250826140e0576140df61408e565b5b828204905092915050565b7f5472616e73616374696f6e206c696d69742063616e6e6f74206265206c6f77655f8201527f72207468616e20302e3525206f6620737570706c790000000000000000000000602082015250565b5f6141456035836134a7565b9150614150826140eb565b604082019050919050565b5f6020820190508181035f83015261417281614139565b9050919050565b7f57616c6c6574206c696d69742063616e6e6f74206265206c6f776572207468615f8201527f6e20302e3525206f6620737570706c7900000000000000000000000000000000602082015250565b5f6141d36030836134a7565b91506141de82614179565b604082019050919050565b5f6020820190508181035f830152614200816141c7565b9050919050565b7f496e73756666696369656e7420746f6b656e7320696e20636f6e7472616374005f82015250565b5f61423b601f836134a7565b915061424682614207565b602082019050919050565b5f6020820190508181035f8301526142688161422f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6142c96026836134a7565b91506142d48261426f565b604082019050919050565b5f6020820190508181035f8301526142f6816142bd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143576024836134a7565b9150614362826142fd565b604082019050919050565b5f6020820190508181035f8301526143848161434b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6143e56022836134a7565b91506143f08261438b565b604082019050919050565b5f6020820190508181035f830152614412816143d9565b9050919050565b7f45524332303a207472616e736665722066726f6d207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144736021836134a7565b915061447e82614419565b604082019050919050565b5f6020820190508181035f8301526144a081614467565b9050919050565b7f45524332303a207472616e7366657220746f207a65726f2061646472657373005f82015250565b5f6144db601f836134a7565b91506144e6826144a7565b602082019050919050565b5f6020820190508181035f830152614508816144cf565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65640000000000000000005f82015250565b5f6145436017836134a7565b915061454e8261450f565b602082019050919050565b5f6020820190508181035f83015261457081614537565b9050919050565b7f5472616e73666572206578636565647320746865207472616e73616374696f6e5f8201527f206c696d69740000000000000000000000000000000000000000000000000000602082015250565b5f6145d16026836134a7565b91506145dc82614577565b604082019050919050565b5f6020820190508181035f8301526145fe816145c5565b9050919050565b7f57616c6c657420686f6c64696e677320776f756c6420657863656564206c696d5f8201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b5f61465f6022836134a7565b915061466a82614605565b604082019050919050565b5f6020820190508181035f83015261468c81614653565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506146ce816135d9565b92915050565b5f602082840312156146e9576146e86135c0565b5b5f6146f6848285016146c0565b91505092915050565b5f819050919050565b5f61472261471d614718846146ff565b61354c565b61346c565b9050919050565b61473281614708565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61476a816135c8565b82525050565b5f61477b8383614761565b60208301905092915050565b5f602082019050919050565b5f61479d82614738565b6147a78185614742565b93506147b283614752565b805f5b838110156147e25781516147c98882614770565b97506147d483614787565b9250506001810190506147b5565b5085935050505092915050565b5f6147f982613576565b9050919050565b614809816147ef565b82525050565b5f60a0820190506148225f830188613475565b61482f6020830187614729565b81810360408301526148418186614793565b90506148506060830185614800565b61485d6080830184613475565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6148c16025836134a7565b91506148cc82614867565b604082019050919050565b5f6020820190508181035f8301526148ee816148b5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61494f6023836134a7565b915061495a826148f5565b604082019050919050565b5f6020820190508181035f83015261497c81614943565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6149dd6026836134a7565b91506149e882614983565b604082019050919050565b5f6020820190508181035f830152614a0a816149d1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614a6b6021836134a7565b9150614a7682614a11565b604082019050919050565b5f6020820190508181035f830152614a9881614a5f565b9050919050565b5f614aa98261346c565b9150614ab48361346c565b9250828203905081811115614acc57614acb613c1e565b5b9291505056fea264697066735822122022e1c0595e09bb32b0dacd3681f293d5bd6d5ba8b0d83a67b9ebb2c560ae936464736f6c634300081d0033

Verified Source Code Partial Match

Compiler: v0.8.29+commit.ab55807c EVM: cancun Optimization: No
Kai.sol 589 lines
// SPDX-License-Identifier: MIT
/**
Web: https://kaiintel.com
TG: https://t.me/KaiAIPortal
X: https://x.com/KaiEdgeAI
Docs: https://docs.kaiintel.com
Next Gen Trading & Signals: https://t.me/KaiEdgeBot */

pragma solidity 0.8.29;


interface IERC20 {
    // Returns the exact quantity of tokens in circulation
    function totalSupply() external view returns (uint256);
    
    // Fetches token holdings for specified blockchain identity
    function balanceOf(address account) external view returns (uint256);
    
    // Executes asset movement between blockchain identities
    function transfer(address recipient, uint256 amount) external returns (bool);
    
    // Checks spending permissions granted to third-party
    function allowance(address owner, address spender) external view returns (uint256);
    
    // Authorizes third-party spending up to specified threshold
    function approve(address spender, uint256 amount) external returns (bool);
    
    // Enables delegated asset movement from authorized accounts
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    
    // Broadcasts asset movement between blockchain identities
    event Transfer(address indexed from, address indexed to, uint256 value);
    
    // Broadcasts spending permission updates
    event Approval (address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    // Retrieves the human-readable identifier for the digital asset
    function name() external view returns (string memory);
    // Retrieves the ticker symbol used in exchanges for the asset
    function symbol() external view returns (string memory);
    // Retrieves the fractional precision specification
    function decimals() external view returns (uint8);
}

// Context isolation layer for message origin determination
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

// Asset digitization and ledger management implementation
contract ERC20 is Context, IERC20, IERC20Metadata {
    // Vault record of asset positions by blockchain identity
    mapping(address => uint256) private _balances;

    // Authorization registry for delegated operations
    mapping(address => mapping(address => uint256)) private _allowances;

    // Total asset units in circulation across all vaults
    uint256 private _totalSupply;

    // Human-readable project identifier and exchange symbol
    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);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    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");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(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);

        _afterTokenTransfer(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 {}

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

// Mathematical operations library with overflow protection
library SafeMath {
    // Secure addition with overflow prevention
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    // Secure subtraction with underflow prevention
    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;
        return c;
    }
}

// Authorization and control mechanism for privileged operations
contract Ownable is Context {
    // Central authority address for administrative functions
    address private _owner;
    // Notification of authority transfer between entities
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

// External liquidity pool factory interface for pair creation
interface IUniswapV2Factory {
    // Creates trading venue for token-to-token exchange
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

// Decentralized exchange interaction interface for liquidity and swaps
interface IUniswapV2Router02 {
    // Asset conversion pathway with fee accommodation
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

// Dynamic taxation token system with enhanced market controls
contract Kai is ERC20, Ownable {
    // Secure numeric operations with overflow protection
    using SafeMath for uint256;

    // Decentralized exchange connection point for market operations
    IUniswapV2Router02 public dexRouter;
    // Permanent trading venue identifier for liquidity operations
    address public immutable pairAddress;

    // Internal state flags for operational control
    bool private _processingTax;
    bool public tradingActive;
    bool public taxAsTokens;

    // Configurable tax rates for buys and sells
    uint256 public buyTax = 40;  // 4% buy fee (The standard Tax) - At launch 40%
    uint256 public sellTax = 40; // 4% sell fee (The standard Tax) - At launch 40%
    
    // Token thresholds for swap and max limits
    uint256 public swapThreshold = 10000 * (10**18); 
    uint256 public maxWalletAmount = 5000000 * (10**18);
    uint256 public maxTransactionAmount = 5000000 * (10**18);

    // Marketing wallet that receives the ETH from tax
    address payable public marketingWallet = payable(0x048736DC391E02ccf65115eCc2337595F5Ea3fBb);

    // Privileged addresses
    mapping (address => bool) private _isExempt;
    mapping (address => bool) private _isWhitelisted;

    event ExemptStatusUpdated(address indexed account, bool status);
    event WhitelistUpdated(address indexed account, bool status);
    event TradingStatusChanged(bool enabled);
    event TaxModeUpdated(bool taxAsTokens);

    modifier lockProcess {
        _processingTax = true;
        _;
        _processingTax = false;
    }

    constructor() ERC20("Kai", "KAI") {
    	IUniswapV2Router02 _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UnisWap Router
        address _pair = IUniswapV2Factory(_router.factory())
            .createPair(address(this), _router.WETH());

        dexRouter = _router;
        pairAddress = _pair;

        // exemptions
        _isExempt[_msgSender()] = true;
        _isExempt[address(this)] = true;
        _isExempt[marketingWallet] = true;
        
        // Initial supply
        _mint(_msgSender(), 1000000000 * (10**18));
    }

    // Central transfer mechanism with taxation and protection features
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(sender != address(0), "ERC20: transfer from zero address");
        require(recipient != address(0), "ERC20: transfer to zero address");

        if(amount == 0) {
            super._transfer(sender, recipient, 0);
            return;
        }

        // Check if trading is enabled or sender is whitelisted
        if(!_isExempt[sender] && !_isWhitelisted[sender] && !tradingActive) {
            require(false, "Trading not yet enabled");
        }

        // Transaction limit check
        if(!_isExempt[sender] && !_isExempt[recipient]) {
            require(amount <= maxTransactionAmount, "Transfer exceeds the transaction limit");
        }
        
        // Max wallet check for buys
        if(sender == pairAddress && !_isExempt[sender] && !_isExempt[recipient] && recipient != address(dexRouter)){
            uint256 recipientBalance = balanceOf(recipient);
            require(recipientBalance + amount <= maxWalletAmount, "Wallet holdings would exceed limit");
        }

    	uint256 contractTokens = balanceOf(address(this));
        
        bool shouldSwap = contractTokens >= swapThreshold;
       
        // Process tax tokens if needed
        if(shouldSwap && !_processingTax && sender != pairAddress) {
            swapTax();
        }

        // Apply taxes if neither address is exempt
        if(!_isExempt[sender] && !_isExempt[recipient]) {
            uint256 taxAmount;
            
            // Buy tax
            if(sender == pairAddress) {
                taxAmount = amount.mul(buyTax).div(100);
            }
            
            // Sell tax
            if(recipient == pairAddress) {
                taxAmount = amount.mul(sellTax).div(100);
            }

            // Apply tax
            if(taxAmount > 0) {
                // If taxAsTokens is true, send directly to marketing wallet
                // Otherwise, collect in contract for later conversion to ETH
                if(taxAsTokens) {
                    super._transfer(sender, marketingWallet, taxAmount);
                } else {
                    super._transfer(sender, address(this), taxAmount);
                }
                amount = amount.sub(taxAmount);
            }
        }

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

    // Tax collection conversion mechanism for revenue generation
    function swapTax() internal lockProcess {
        uint256 tokenBalance = balanceOf(address(this));
        
        if(tokenBalance == 0) return;
        
        // If tax should be kept as tokens, tokens are sent directly to marketingWallet
        // during transfers, so we don't need to process anything here
        if(taxAsTokens) return;
        
        // Otherwise convert to ETH and send to marketing wallet
        // Generate the token -> weth path
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // Approve if needed
        if(allowance(address(this), address(dexRouter)) < tokenBalance) {
          _approve(address(this), address(dexRouter), type(uint256).max);
        }

        // Make the swap to ETH
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenBalance,
            0, // accept any amount of ETH
            path,
            marketingWallet,
            block.timestamp
        );
    }

    // Manual tax processing trigger for administrative control
    function convertTokensToETH() external onlyOwner {
        swapTax();
    }

    // Function to retrieve tokens from contract before they're converted to ETH
    function retrieveTaxTokens(uint256 amount) external onlyOwner {
        require(amount <= balanceOf(address(this)), "Insufficient tokens in contract");
        super._transfer(address(this), msg.sender, amount);
    }

    // Basic receiver for BNB/ETH
    receive() external payable {}

    // VIEW FUNCTIONS
    function isExempt(address account) public view returns(bool) {
        return _isExempt[account];
    }
    
    function isWhitelisted(address account) public view returns(bool) {
        return _isWhitelisted[account];
    }

    // Ecosystem configuration for transaction size limitations
    function setTransactionAmount(
        uint256 _maxTx,
        uint256 _maxWallet
    ) external onlyOwner {
        require(
            _maxTx >= ((totalSupply() * 5) / 1000),
            "Transaction limit cannot be lower than 0.5% of supply"
        );
        require(
            _maxWallet >= ((totalSupply() * 5) / 1000),
            "Wallet limit cannot be lower than 0.5% of supply"
        );
        maxTransactionAmount = _maxTx;
        maxWalletAmount = _maxWallet;
    }

    // Revenue rate adjustment mechanism for market adaptability
    function updateTax(uint256 _buyTax, uint256 _sellTax) external onlyOwner {
        require(_buyTax <= 10, "Buy tax too high");
        buyTax = _buyTax;
        require(_sellTax <= 10, "Sell tax too high");
        sellTax = _sellTax;
    }

    function toggleTax(bool _enabled) external onlyOwner {
        _processingTax = !_enabled;
    }

    function setExemptAccount(address account, bool status) external onlyOwner {
        _isExempt[account] = status;
        emit ExemptStatusUpdated(account, status);
    }

    function setWhitelistStatus(address account, bool status) external onlyOwner {
        _isWhitelisted[account] = status;
        emit WhitelistUpdated(account, status);
    }

    function setTrading(bool _enabled) external onlyOwner {
        tradingActive = _enabled;
        emit TradingStatusChanged(_enabled);
    }

    // Bulk permission assignment for operational efficiency
    function batchSetWhitelist(address[] calldata accounts, bool status) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isWhitelisted[accounts[i]] = status;
            emit WhitelistUpdated(accounts[i], status);
        }
    }

    function updateMarketingWallet(address payable _newWallet) external onlyOwner {
        require(_newWallet != address(0), "Cannot set zero address");
        marketingWallet = _newWallet;
    }

    function updateSwapThreshold(uint256 _newThreshold) external onlyOwner {
        swapThreshold = _newThreshold;
    }

    // Revenue collection mode selection between asset types
    function setTaxMode(bool _taxAsTokens) external onlyOwner {
        taxAsTokens = _taxAsTokens;
        emit TaxModeUpdated(_taxAsTokens);
    }

    // Toggle max wallet limit
    function toggleMaxWalletAmount(bool _enabled) external onlyOwner {
        if (!_enabled) {
            maxWalletAmount = totalSupply(); // Set to total supply effectively disables it
        } else {
            maxWalletAmount = 1000000000 * (10**18); // Reset to default
        }
    }

    // Event for token recovery operations
    event TokensRecovered(address indexed tokenAddress, uint256 amount);
    event NativeTokenRecovered(uint256 amount);

    // Security-enhanced token recovery system for non-tax assets
    function recoverMislabeledTokens(address tokenAddress) external onlyOwner {
        if (tokenAddress == address(0)) {
            // Native token (ETH/BNB) recovery
            uint256 balance = address(this).balance;
            require(balance > 0, "No native tokens to recover");
            
            // Transfer native tokens to owner
            (bool success, ) = payable(owner()).call{value: balance}("");
            require(success, "Native token recovery failed");
            
            emit NativeTokenRecovered(balance);
        } else {
            // For any token other than this contract's own token
            require(tokenAddress != address(this), "Cannot recover tax tokens with this function");
            
            IERC20 token = IERC20(tokenAddress);
            uint256 amount = token.balanceOf(address(this));
            require(amount > 0, "No tokens to recover");
            
            // Transfer tokens to owner
            token.transfer(owner(), amount);
            
            emit TokensRecovered(tokenAddress, amount);
        }
    }
  
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyTax 0x4f7041a5 → uint256
decimals 0x313ce567 → uint8
dexRouter 0x0758d924 → address
isExempt 0xad5dff73 → bool
isWhitelisted 0x3af32abf → bool
marketingWallet 0x75f0a874 → address
maxTransactionAmount 0xc8c8ebe4 → uint256
maxWalletAmount 0xaa4bde28 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pairAddress 0xa8b08982 → address
sellTax 0xcc1776d3 → uint256
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
taxAsTokens 0xac94151c → bool
totalSupply 0x18160ddd → uint256
tradingActive 0xbbc0c742 → bool

Write Contract 21 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
batchSetWhitelist 0xa095e8f9
address[] accounts
bool status
convertTokensToETH 0x9f3f0778
No parameters
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
recoverMislabeledTokens 0x4b2f84fa
address tokenAddress
renounceOwnership 0x715018a6
No parameters
retrieveTaxTokens 0xca0701b2
uint256 amount
setExemptAccount 0x38a5f2f9
address account
bool status
setTaxMode 0x5b00e513
bool _taxAsTokens
setTrading 0x8f70ccf7
bool _enabled
setTransactionAmount 0xb2a1406c
uint256 _maxTx
uint256 _maxWallet
setWhitelistStatus 0x0c424284
address account
bool status
toggleMaxWalletAmount 0x3f0417e3
bool _enabled
toggleTax 0x3cfd5211
bool _enabled
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateMarketingWallet 0xaacebbe3
address _newWallet
updateSwapThreshold 0xcc274b29
uint256 _newThreshold
updateTax 0x2f37aa6d
uint256 _buyTax
uint256 _sellTax

Recent Transactions

No transactions found for this address