Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x58a4000E95b91592575862962DAb965ecc3106Ec
Balance 0 ETH
Nonce 1
Code Size 15894 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

15894 bytes
0x6080604052600436106101c5575f3560e01c80638fd2da76116100f6578063b92764cc11610094578063ed6a0ef411610063578063ed6a0ef41461064c578063f2fde38b14610662578063fd6578561461068a578063fd6d0eb3146106b4576101cc565b8063b92764cc14610596578063c7a894da146105be578063d42f6e39146105e6578063dd62ed3e14610610576101cc565b806395a39227116100d057806395a39227146104ca57806395d89b41146104f4578063a9059cbb1461051e578063b518c0ab1461055a576101cc565b80638fd2da76146104505780639099bd3f14610478578063946858f5146104a2576101cc565b80633ca25a7f1161016357806370a082311161013d57806370a08231146103aa578063715018a6146103e657806387a5e33c146103fc5780638da5cb5b14610426576101cc565b80633ca25a7f1461032c5780634ada218b146103565780636637e38c14610380576101cc565b806323b872dd1161019f57806323b872dd14610260578063247029441461029c57806329326e8d146102c6578063313ce56714610302576101cc565b806306fdde03146101d0578063095ea7b3146101fa57806318160ddd14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106de565b6040516101f19190612e8f565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190612f40565b61076e565b60405161022d9190612f98565b60405180910390f35b348015610241575f80fd5b5061024a610790565b6040516102579190612fc0565b60405180910390f35b34801561026b575f80fd5b5061028660048036038101906102819190612fd9565b610799565b6040516102939190612f98565b60405180910390f35b3480156102a7575f80fd5b506102b06107c7565b6040516102bd9190613084565b60405180910390f35b3480156102d1575f80fd5b506102ec60048036038101906102e7919061309d565b6107ec565b6040516102f991906130e4565b60405180910390f35b34801561030d575f80fd5b50610316610819565b6040516103239190613118565b60405180910390f35b348015610337575f80fd5b50610340610821565b60405161034d9190612fc0565b60405180910390f35b348015610361575f80fd5b5061036a610845565b6040516103779190612f98565b60405180910390f35b34801561038b575f80fd5b50610394610857565b6040516103a191906130e4565b60405180910390f35b3480156103b5575f80fd5b506103d060048036038101906103cb9190613131565b61085d565b6040516103dd9190612fc0565b60405180910390f35b3480156103f1575f80fd5b506103fa6108a2565b005b348015610407575f80fd5b50610410610932565b60405161041d9190612fc0565b60405180910390f35b348015610431575f80fd5b5061043a610938565b604051610447919061316b565b60405180910390f35b34801561045b575f80fd5b506104766004803603810190610471919061309d565b610960565b005b348015610483575f80fd5b5061048c610a31565b6040516104999190612fc0565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c391906131bf565b610a37565b005b3480156104d5575f80fd5b506104de610be8565b6040516104eb9190612fc0565b60405180910390f35b3480156104ff575f80fd5b50610508610c0c565b6040516105159190612e8f565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f9190612f40565b610c9c565b6040516105519190612f98565b60405180910390f35b348015610565575f80fd5b50610580600480360381019061057b919061309d565b610cbe565b60405161058d919061316b565b60405180910390f35b3480156105a1575f80fd5b506105bc60048036038101906105b79190613214565b610cf2565b005b3480156105c9575f80fd5b506105e460048036038101906105df9190613131565b610e08565b005b3480156105f1575f80fd5b506105fa611078565b604051610607919061316b565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190613252565b61109d565b6040516106439190612fc0565b60405180910390f35b348015610657575f80fd5b5061066061111f565b005b34801561066d575f80fd5b5061068860048036038101906106839190613131565b61123d565b005b348015610695575f80fd5b5061069e61133e565b6040516106ab9190612fc0565b60405180910390f35b3480156106bf575f80fd5b506106c8611344565b6040516106d59190612f98565b60405180910390f35b6060600380546106ed906132bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610719906132bd565b80156107645780601f1061073b57610100808354040283529160200191610764565b820191905f5260205f20905b81548152906001019060200180831161074757829003601f168201915b5050505050905090565b5f80610778611357565b905061078581858561135e565b600191505092915050565b5f600254905090565b5f806107a3611357565b90506107b0858285611370565b6107bb858585611403565b60019150509392505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c81600381106107fb575f80fd5b60109182820401919006600202915054906101000a900461ffff1681565b5f6012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d5f9054906101000a900460ff1681565b61271081565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108aa611357565b73ffffffffffffffffffffffffffffffffffffffff166108c8610938565b73ffffffffffffffffffffffffffffffffffffffff1614610927576108eb611357565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161091e919061316b565b60405180910390fd5b6109305f611c95565b565b60085481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610968611357565b73ffffffffffffffffffffffffffffffffffffffff16610986610938565b73ffffffffffffffffffffffffffffffffffffffff16146109e5576109a9611357565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016109dc919061316b565b60405180910390fd5b5f8111610a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1e90613337565b60405180910390fd5b8060088190555050565b6101f481565b610a3f611357565b73ffffffffffffffffffffffffffffffffffffffff16610a5d610938565b73ffffffffffffffffffffffffffffffffffffffff1614610abc57610a80611357565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ab3919061316b565b60405180910390fd5b5f4790505f8111610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af99061339f565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051610b27906133ea565b5f6040518083038185875af1925050503d805f8114610b61576040519150601f19603f3d011682016040523d82523d5f602084013e610b66565b606091505b5050905080610baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba190613448565b60405180910390fd5b7f41fdd680478135993bc53fb2ffaf9560951b57ef62ff6badd02b61e018b4f17f8383604051610bdb929190613486565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000581565b606060048054610c1b906132bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c47906132bd565b8015610c925780601f10610c6957610100808354040283529160200191610c92565b820191905f5260205f20905b815481529060010190602001808311610c7557829003601f168201915b5050505050905090565b5f80610ca6611357565b9050610cb3818585611403565b600191505092915050565b60098160038110610ccd575f80fd5b015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cfa611357565b73ffffffffffffffffffffffffffffffffffffffff16610d18610938565b73ffffffffffffffffffffffffffffffffffffffff1614610d7757610d3b611357565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d6e919061316b565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6c3adfee332544f29232690459f4fe23a1c9573efbaac65c9fc033355fb413f08282604051610dfc9291906134ad565b60405180910390a15050565b610e10611357565b73ffffffffffffffffffffffffffffffffffffffff16610e2e610938565b73ffffffffffffffffffffffffffffffffffffffff1614610e8d57610e51611357565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610e84919061316b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef29061351e565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f35919061316b565b602060405180830381865afa158015610f50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f749190613550565b90505f8111610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf906135c5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610fdc610938565b836040518363ffffffff1660e01b8152600401610ffa9291906135e3565b6020604051808303815f875af1158015611016573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103a919061361e565b507fc5d689286306e39777c305b4285e1bc86363039b612af79f65a09e2d185c3b63828260405161106c9291906135e3565b60405180910390a15050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611127611357565b73ffffffffffffffffffffffffffffffffffffffff16611145610938565b73ffffffffffffffffffffffffffffffffffffffff16146111a457611168611357565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161119b919061316b565b60405180910390fd5b600d60029054906101000a900460ff16156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb90613693565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055507f7a14a3188411c2f406ce4721233750b4b11e612569f9fa80a35b1cb91bb2e49e60405160405180910390a1565b611245611357565b73ffffffffffffffffffffffffffffffffffffffff16611263610938565b73ffffffffffffffffffffffffffffffffffffffff16146112c257611286611357565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016112b9919061316b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611332575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611329919061316b565b60405180910390fd5b61133b81611c95565b50565b6101f481565b600d60029054906101000a900460ff1681565b5f33905090565b61136b8383836001611d58565b505050565b5f61137b848461109d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156113fd57818110156113ee578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016113e5939291906136b1565b60405180910390fd5b6113fc84848484035f611d58565b5b50505050565b5f8111611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c90613730565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611777575f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611504573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115289190613762565b73ffffffffffffffffffffffffffffffffffffffff1663e6a439053060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d29190613762565b6040518363ffffffff1660e01b81526004016115ef92919061378d565b602060405180830381865afa15801561160a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162e9190613762565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611775578060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6c3adfee332544f29232690459f4fe23a1c9573efbaac65c9fc033355fb413f060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160405161176c9291906134ad565b60405180910390a15b505b600d5f9054906101000a900460ff161580156117e057505f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b801561188f575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061188e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b156118e7576001600d5f6101000a81548160ff0219169083151502179055507f10cbdaa9da572a6586325ac920fff5d091e67fb26d94180f7b6376cbcda1a09e60016040516118de9190612f98565b60405180910390a15b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119855750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119d957600d5f9054906101000a900460ff166119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf906137fe565b60405180910390fd5b5b5f808073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611a84575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b90505f8073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611b30575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b9050600d5f9054906101000a900460ff168015611b5a5750600d60029054906101000a900460ff16155b8015611b6b57508180611b6a5750805b5b8015611ba357503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15611be4575f82611bb6576101f4611bba565b6101f45b90506127108186611bcb9190613849565b611bd591906138b7565b9350611be2873086611f27565b505b600d60019054906101000a900460ff16158015611bfe5750805b8015611c515750600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c77575f611c603061085d565b90506008548110611c7557611c7481612017565b5b505b611c8d86868587611c8891906138e7565b611f27565b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dc8575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611dbf919061316b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e38575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611e2f919061316b565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611f21578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611f189190612fc0565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f97575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f8e919061316b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612007575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611ffe919061316b565b60405180910390fd5b6120128383836124e9565b505050565b600d60019054906101000a900460ff1615612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e90613964565b60405180910390fd5b6001600d60016101000a81548160ff021916908315150217905550600d60029054906101000a900460ff16806120e757505f7f00000000000000000000000000000000000000000000000000000000000000051480156120e657505f7f0000000000000000000000000000000000000000000000000000000000000000145b5b6124cc575f8103156124cc575f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000056121409190613982565b90505f810361214f57506124cc565b5f817f00000000000000000000000000000000000000000000000000000000000000008461217d9190613849565b61218791906138b7565b90505f60028261219791906138b7565b90505f81856121a691906138e7565b90505f4790506121b582612702565b5f81476121c291906138e7565b90505f867f0000000000000000000000000000000000000000000000000000000000000000836121f29190613849565b6121fc91906138b7565b90505f818361220b91906138e7565b90505f8611801561221b57505f82115b1561222b5761222a8683612941565b5b5f811115612488575f805b600381101561238f575f61271061ffff16600c836003811061225b5761225a6139b5565b5b601091828204019190066002029054906101000a900461ffff1661ffff16856122849190613849565b61228e91906138b7565b9050808361229c9190613982565b92505f600983600381106122b3576122b26139b5565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122f7906133ea565b5f6040518083038185875af1925050503d805f8114612331576040519150601f19603f3d011682016040523d82523d5f602084013e612336565b606091505b505090508061237a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237190613a2c565b60405180910390fd5b5050808061238790613a4a565b915050612236565b505f818361239d91906138e7565b90505f811115612485575f60095f600381106123bc576123bb6139b5565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612400906133ea565b5f6040518083038185875af1925050503d805f811461243a576040519150601f19603f3d011682016040523d82523d5f602084013e61243f565b606091505b5050905080612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a90613adb565b60405180910390fd5b505b50505b7fc5ab292b8c9ba63f89c2db518001d87ec0d51236f410bfb5c7e733f8022fce8b8587846040516124bb93929190613af9565b60405180910390a150505050505050505b5f600d60016101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612539578060025f82825461252d9190613982565b92505081905550612607565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156125c2578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016125b9939291906136b1565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361264e578060025f8282540392505081905550612698565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126f59190612fc0565b60405180910390a3505050565b5f81031561293e575f600267ffffffffffffffff81111561272657612725613b2e565b5b6040519080825280602002602001820160405280156127545781602001602082028036833780820191505090505b50905030815f8151811061276b5761276a6139b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561280f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128339190613762565b81600181518110612847576128466139b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128ad3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461135e565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161290f959493929190613c4b565b5f604051808303815f87803b158015612926575f80fd5b505af1158015612938573d5f803e3d5ffd5b50505050505b50565b5f82148061294e57505f81145b612e015761297e3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461135e565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f806129c8610938565b426040518863ffffffff1660e01b81526004016129ea96959493929190613ca3565b60606040518083038185885af1158015612a06573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a2b9190613d02565b5050505f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612d9a575f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b119190613762565b73ffffffffffffffffffffffffffffffffffffffff1663e6a439053060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bbb9190613762565b6040518363ffffffff1660e01b8152600401612bd892919061378d565b602060405180830381865afa158015612bf3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c179190613762565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e90613dc2565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6c3adfee332544f29232690459f4fe23a1c9573efbaac65c9fc033355fb413f060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001604051612d909291906134ad565b60405180910390a1505b600d5f9054906101000a900460ff16612e00576001600d5f6101000a81548160ff0219169083151502179055507f10cbdaa9da572a6586325ac920fff5d091e67fb26d94180f7b6376cbcda1a09e6001604051612df79190612f98565b60405180910390a15b5b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e3c578082015181840152602081019050612e21565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e6182612e05565b612e6b8185612e0f565b9350612e7b818560208601612e1f565b612e8481612e47565b840191505092915050565b5f6020820190508181035f830152612ea78184612e57565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612edc82612eb3565b9050919050565b612eec81612ed2565b8114612ef6575f80fd5b50565b5f81359050612f0781612ee3565b92915050565b5f819050919050565b612f1f81612f0d565b8114612f29575f80fd5b50565b5f81359050612f3a81612f16565b92915050565b5f8060408385031215612f5657612f55612eaf565b5b5f612f6385828601612ef9565b9250506020612f7485828601612f2c565b9150509250929050565b5f8115159050919050565b612f9281612f7e565b82525050565b5f602082019050612fab5f830184612f89565b92915050565b612fba81612f0d565b82525050565b5f602082019050612fd35f830184612fb1565b92915050565b5f805f60608486031215612ff057612fef612eaf565b5b5f612ffd86828701612ef9565b935050602061300e86828701612ef9565b925050604061301f86828701612f2c565b9150509250925092565b5f819050919050565b5f61304c61304761304284612eb3565b613029565b612eb3565b9050919050565b5f61305d82613032565b9050919050565b5f61306e82613053565b9050919050565b61307e81613064565b82525050565b5f6020820190506130975f830184613075565b92915050565b5f602082840312156130b2576130b1612eaf565b5b5f6130bf84828501612f2c565b91505092915050565b5f61ffff82169050919050565b6130de816130c8565b82525050565b5f6020820190506130f75f8301846130d5565b92915050565b5f60ff82169050919050565b613112816130fd565b82525050565b5f60208201905061312b5f830184613109565b92915050565b5f6020828403121561314657613145612eaf565b5b5f61315384828501612ef9565b91505092915050565b61316581612ed2565b82525050565b5f60208201905061317e5f83018461315c565b92915050565b5f61318e82612eb3565b9050919050565b61319e81613184565b81146131a8575f80fd5b50565b5f813590506131b981613195565b92915050565b5f602082840312156131d4576131d3612eaf565b5b5f6131e1848285016131ab565b91505092915050565b6131f381612f7e565b81146131fd575f80fd5b50565b5f8135905061320e816131ea565b92915050565b5f806040838503121561322a57613229612eaf565b5b5f61323785828601612ef9565b925050602061324885828601613200565b9150509250929050565b5f806040838503121561326857613267612eaf565b5b5f61327585828601612ef9565b925050602061328685828601612ef9565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132d457607f821691505b6020821081036132e7576132e6613290565b5b50919050565b7f496e76616c696420616d6f756e740000000000000000000000000000000000005f82015250565b5f613321600e83612e0f565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613389600683612e0f565b915061339482613355565b602082019050919050565b5f6020820190508181035f8301526133b68161337d565b9050919050565b5f81905092915050565b50565b5f6133d55f836133bd565b91506133e0826133c7565b5f82019050919050565b5f6133f4826133ca565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f613432601383612e0f565b915061343d826133fe565b602082019050919050565b5f6020820190508181035f83015261345f81613426565b9050919050565b5f61347082613053565b9050919050565b61348081613466565b82525050565b5f6040820190506134995f830185613477565b6134a66020830184612fb1565b9392505050565b5f6040820190506134c05f83018561315c565b6134cd6020830184612f89565b9392505050565b7f43616e6e6f7420726573637565207468697320746f6b656e00000000000000005f82015250565b5f613508601883612e0f565b9150613513826134d4565b602082019050919050565b5f6020820190508181035f830152613535816134fc565b9050919050565b5f8151905061354a81612f16565b92915050565b5f6020828403121561356557613564612eaf565b5b5f6135728482850161353c565b91505092915050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f6135af600983612e0f565b91506135ba8261357b565b602082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b5f6040820190506135f65f83018561315c565b6136036020830184612fb1565b9392505050565b5f81519050613618816131ea565b92915050565b5f6020828403121561363357613632612eaf565b5b5f6136408482850161360a565b91505092915050565b7f416c72656164792064697361626c6564000000000000000000000000000000005f82015250565b5f61367d601083612e0f565b915061368882613649565b602082019050919050565b5f6020820190508181035f8301526136aa81613671565b9050919050565b5f6060820190506136c45f83018661315c565b6136d16020830185612fb1565b6136de6040830184612fb1565b949350505050565b7f416d6f756e74203e2030000000000000000000000000000000000000000000005f82015250565b5f61371a600a83612e0f565b9150613725826136e6565b602082019050919050565b5f6020820190508181035f8301526137478161370e565b9050919050565b5f8151905061375c81612ee3565b92915050565b5f6020828403121561377757613776612eaf565b5b5f6137848482850161374e565b91505092915050565b5f6040820190506137a05f83018561315c565b6137ad602083018461315c565b9392505050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f6137e8601383612e0f565b91506137f3826137b4565b602082019050919050565b5f6020820190508181035f830152613815816137dc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61385382612f0d565b915061385e83612f0d565b925082820261386c81612f0d565b915082820484148315176138835761388261381c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138c182612f0d565b91506138cc83612f0d565b9250826138dc576138db61388a565b5b828204905092915050565b5f6138f182612f0d565b91506138fc83612f0d565b92508282039050818111156139145761391361381c565b5b92915050565b7f5377617020696e2070726f6772657373000000000000000000000000000000005f82015250565b5f61394e601083612e0f565b91506139598261391a565b602082019050919050565b5f6020820190508181035f83015261397b81613942565b9050919050565b5f61398c82612f0d565b915061399783612f0d565b92508282019050808211156139af576139ae61381c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5472656173757279207061796f7574206661696c6564000000000000000000005f82015250565b5f613a16601683612e0f565b9150613a21826139e2565b602082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b5f613a5482612f0d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a8657613a8561381c565b5b600182019050919050565b7f54726561737572792064757374206661696c65640000000000000000000000005f82015250565b5f613ac5601483612e0f565b9150613ad082613a91565b602082019050919050565b5f6020820190508181035f830152613af281613ab9565b9050919050565b5f606082019050613b0c5f830186612fb1565b613b196020830185612fb1565b613b266040830184612fb1565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f613b7e613b79613b7484613b5b565b613029565b612f0d565b9050919050565b613b8e81613b64565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613bc681612ed2565b82525050565b5f613bd78383613bbd565b60208301905092915050565b5f602082019050919050565b5f613bf982613b94565b613c038185613b9e565b9350613c0e83613bae565b805f5b83811015613c3e578151613c258882613bcc565b9750613c3083613be3565b925050600181019050613c11565b5085935050505092915050565b5f60a082019050613c5e5f830188612fb1565b613c6b6020830187613b85565b8181036040830152613c7d8186613bef565b9050613c8c606083018561315c565b613c996080830184612fb1565b9695505050505050565b5f60c082019050613cb65f83018961315c565b613cc36020830188612fb1565b613cd06040830187613b85565b613cdd6060830186613b85565b613cea608083018561315c565b613cf760a0830184612fb1565b979650505050505050565b5f805f60608486031215613d1957613d18612eaf565b5b5f613d268682870161353c565b9350506020613d378682870161353c565b9250506040613d488682870161353c565b9150509250925092565b7f50616972206e6f7420666f756e64206166746572206164644c697175696469745f8201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b5f613dac602183612e0f565b9150613db782613d52565b604082019050919050565b5f6020820190508181035f830152613dd981613da0565b905091905056fea2646970667358221220fc17be7014e1fb6fe8e883f6b44e654d2bb1514f091d1f5aee1999bee7aa87c564736f6c63430008140033

Verified Source Code Full Match

Compiler: v0.8.20+commit.a1b79de6 EVM: shanghai Optimization: No
arcade.sol 359 lines
/*
Arcade - Trade Crypto like never before

Website - https://arcadebot.io/
X - https://x.com/snipewitharcade
Telegram - https://t.me/snipewitharcade

*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

// ─────────────────────────────────────────────────────────────────────────────
// Oz-lite Context & Ownable
abstract contract Context {
    function _msgSender() internal view virtual returns (address) { return msg.sender; }
    function _msgData() internal view virtual returns (bytes calldata) { return msg.data; }
    function _contextSuffixLength() internal view virtual returns (uint256) { return 0; }
}

abstract contract Ownable is Context {
    address private _owner;
    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor(address initialOwner) {
        if (initialOwner == address(0)) revert OwnableInvalidOwner(address(0));
        _transferOwnership(initialOwner);
    }
    modifier onlyOwner() {
        if (owner() != _msgSender()) revert OwnableUnauthorizedAccount(_msgSender());
        _;
    }
    function owner() public view virtual returns (address) { return _owner; }
    function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) revert OwnableInvalidOwner(address(0));
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner=_owner; _owner=newOwner; emit OwnershipTransferred(oldOwner,newOwner);
    }
}

// ─────────────────────────────────────────────────────────────────────────────
// Minimal ERC20
interface IERC20 {
    event Transfer(address indexed from,address indexed to,uint256 value);
    event Approval(address indexed owner,address indexed spender,uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to,uint256 value) external returns (bool);
    function allowance(address owner,address spender) external view returns (uint256);
    function approve(address spender,uint256 value) external returns (bool);
    function transferFrom(address from,address to,uint256 value) external returns (bool);
}
interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); }
interface IERC20Errors {
    error ERC20InsufficientBalance(address sender,uint256 balance,uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(address spender,uint256 allowance,uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address=>uint256) private _balances;
    mapping(address=>mapping(address=>uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name; string private _symbol;
    constructor(string memory name_, string memory symbol_) { _name=name_; _symbol=symbol_; }
    function name() public view virtual returns (string memory) { return _name; }
    function symbol() public view virtual returns (string memory) { return _symbol; }
    function decimals() public view virtual returns (uint8) { return 18; }
    function totalSupply() public view virtual returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; }
    function transfer(address to,uint256 value) public virtual returns (bool) { address o=_msgSender(); _transfer(o,to,value); return true; }
    function allowance(address o,address s) public view virtual returns (uint256) { return _allowances[o][s]; }
    function approve(address s,uint256 v) public virtual returns (bool) { address o=_msgSender(); _approve(o,s,v); return true; }
    function transferFrom(address f,address t,uint256 v) public virtual returns (bool) { address sp=_msgSender(); _spendAllowance(f,sp,v); _transfer(f,t,v); return true; }
    function _transfer(address from,address to,uint256 value) internal virtual {
        if (from==address(0)) revert ERC20InvalidSender(address(0));
        if (to==address(0)) revert ERC20InvalidReceiver(address(0));
        _update(from,to,value);
    }
    function _update(address from,address to,uint256 value) internal virtual {
        if (from==address(0)) { _totalSupply+=value; }
        else {
            uint256 fb=_balances[from];
            if (fb<value) revert ERC20InsufficientBalance(from,fb,value);
            unchecked { _balances[from]=fb-value; }
        }
        if (to==address(0)) { unchecked { _totalSupply-=value; } }
        else { unchecked { _balances[to]+=value; } }
        emit Transfer(from,to,value);
    }
    function _mint(address a,uint256 v) internal { if (a==address(0)) revert ERC20InvalidReceiver(address(0)); _update(address(0),a,v); }
    function _approve(address o,address s,uint256 v) internal { _approve(o,s,v,true); }
    function _approve(address o,address s,uint256 v,bool emitEvent) internal virtual {
        if (o==address(0)) revert ERC20InvalidApprover(address(0));
        if (s==address(0)) revert ERC20InvalidSpender(address(0));
        _allowances[o][s]=v; if (emitEvent) emit Approval(o,s,v);
    }
    function _spendAllowance(address o,address s,uint256 v) internal virtual {
        uint256 ca=allowance(o,s);
        if (ca<type(uint256).max) {
            if (ca<v) revert ERC20InsufficientAllowance(s,ca,v);
            unchecked { _approve(o,s,ca-v,false); }
        }
    }
}

// ─────────────────────────────────────────────────────────────────────────────
// SafeERC20
library SafeERC20 {
    error SafeERC20FailedOperation(address token);
    function safeTransfer(IERC20 token,address to,uint256 value) internal {
        (bool ok, bytes memory data) = address(token).call(abi.encodeWithSelector(IERC20.transfer.selector,to,value));
        if (!ok || (data.length!=0 && !abi.decode(data,(bool)))) revert SafeERC20FailedOperation(address(token));
    }
}

// ─────────────────────────────────────────────────────────────────────────────
// Uniswap v2 Interfaces
interface IUniswapV2Factory {
    function createPair(address tokenA,address tokenB) external returns (address pair);
    function getPair(address tokenA,address tokenB) external view returns (address pair);
}
interface IUniswapV2Router01 {
    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);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,uint amountOutMin,address[] calldata path,address to,uint deadline
    ) external;
}

// ─────────────────────────────────────────────────────────────────────────────
// ARCADE — Advanced Liquidity Management, Dynamic Tax System, Multi-Treasury Distribution
contract ARCADE is ERC20, Ownable {
    using SafeERC20 for IERC20;

    IUniswapV2Router02 public liquidityRouter;
    address public tradingPair; // will be set only when LP/first pair transfer occurs

    uint256 public liquidityActivationThreshold = 1000 ether;

    uint256 public constant BUY_TAX_BPS  = 500; // 5% buy tax rate
    uint256 public constant SELL_TAX_BPS = 500; // 5% sell tax rate

    uint256 public immutable ethFeePart; // Share of fee ETH for Treasury
    uint256 public immutable liqFeePart; // Share of fee ETH for LP reinvestment

    uint16 public constant BPS_DENOM = 10_000;
    address[3] public treasuryReceivers;
    uint16[3]  public treasuryBps = [4000, 3000, 3000]; // Treasury distribution: 40%/30%/30%

    bool public tradingEnabled;
    bool private liquiditySwapInProgress;
    bool public taxesDisabled;

    mapping(address=>bool) private _accountExemptionStatus;

    modifier swapLock(){ require(!liquiditySwapInProgress,"Swap in progress"); liquiditySwapInProgress=true; _; liquiditySwapInProgress=false; }

    event TaxDisabled(); // Tax system permanently disabled
    event TreasuryWithdrawn(address to,uint256 amount);
    event TokenRescue(address token,uint256 amount);
    event TradingActivated(bool enabled); // Trading status changed
    event LiquidityTriggered(uint256 amountSwapped,uint256 tokensAdded,uint256 ethAdded); // Liquidity pool injection completed
    event ExemptionUpdated(address account,bool isExempt);

    constructor(
        address _router,
        uint256 _ethFeePart,
        uint256 _liqFeePart,
        address _t1,
        address _t2,
        address _t3
    ) ERC20("ARCADE","ARCADE") Ownable(msg.sender)
    {
        _mint(_msgSender(), 1_000_000_000 ether);

        liquidityRouter = IUniswapV2Router02(_router);
        tradingPair   = address(0); // Lazy: no createPair in constructor

        require(_ethFeePart + _liqFeePart > 0, "Invalid fee parts");
        ethFeePart = _ethFeePart;
        liqFeePart = _liqFeePart;

        require(_t1!=address(0) && _t2!=address(0) && _t3!=address(0), "Zero treasury");
        treasuryReceivers = [_t1, _t2, _t3];

        _accountExemptionStatus[address(this)] = true;
        _accountExemptionStatus[msg.sender]    = true;
        _accountExemptionStatus[_router]       = true;
    }

    receive() external payable {}

    function _transfer(address from,address to,uint256 amount) internal override {
        require(amount>0,"Amount > 0");

        // ── Lazy-Pair: fetch once from Factory as soon as it exists
        if (tradingPair == address(0)) {
            address p = IUniswapV2Factory(liquidityRouter.factory()).getPair(address(this), liquidityRouter.WETH());
            if (p != address(0)) {
                tradingPair = p;
                _accountExemptionStatus[tradingPair] = true;
                emit ExemptionUpdated(tradingPair, true);
            }
        }

        // ── Auto-Enable Trading: as soon as a transaction with the pair occurs (LP-Add or first Buy/Sell)
        if (!tradingEnabled && tradingPair != address(0) && (to == tradingPair || from == tradingPair)) {
            tradingEnabled = true;
            emit TradingActivated(true);
        }

        // ── Trading-Gate: only if BOTH sides are not exempt
        if (!_accountExemptionStatus[from] && !_accountExemptionStatus[to]) {
            require(tradingEnabled, "Trading not enabled");
        }

        uint256 taxAmount = 0;
        bool isBuy  = (tradingPair != address(0) && from == tradingPair);
        bool isSell = (tradingPair != address(0) && to   == tradingPair);

        if (tradingEnabled && !taxesDisabled && (isBuy || isSell) && from != address(this)) {
            uint256 rate = isBuy ? BUY_TAX_BPS : SELL_TAX_BPS;
            taxAmount = (amount * rate) / 10_000;
            super._transfer(from, address(this), taxAmount);
        }

        // Check Swap/Liquidity on Sell
        if (!liquiditySwapInProgress && isSell && !_accountExemptionStatus[from]) {
            uint256 contractBal = balanceOf(address(this));
            if (contractBal >= liquidityActivationThreshold) {
                _processLiquidityManagement(contractBal);
            }
        }

        super._transfer(from, to, amount - taxAmount);
    }

    function _processLiquidityManagement(uint256 amount) private swapLock {
        if (taxesDisabled || (ethFeePart == 0 && liqFeePart == 0)) return;
        if (amount == 0) return;

        uint256 parts = ethFeePart + liqFeePart;
        if (parts == 0) return;

        uint256 tokensForLiq     = (amount * liqFeePart) / parts;
        uint256 tokensForLiqHalf = tokensForLiq / 2;
        uint256 tokensToSwap     = amount - tokensForLiqHalf;

        uint256 startETH = address(this).balance;
        _convertTokensToETH(tokensToSwap);
        uint256 ethGained = address(this).balance - startETH;

        uint256 ethForLiq      = (ethGained * liqFeePart) / parts;
        uint256 ethForTreasury = ethGained - ethForLiq;

        if (tokensForLiqHalf > 0 && ethForLiq > 0) {
            _injectLiquidityToPool(tokensForLiqHalf, ethForLiq);
        }

        if (ethForTreasury > 0) {
            uint256 sent = 0;
            for (uint256 i=0; i<3; i++) {
                uint256 share = (ethForTreasury * treasuryBps[i]) / BPS_DENOM;
                sent += share;
                (bool ok,) = payable(treasuryReceivers[i]).call{value: share}("");
                require(ok, "Treasury payout failed");
            }
            uint256 dust = ethForTreasury - sent;
            if (dust > 0) {
                (bool ok2,) = payable(treasuryReceivers[0]).call{value: dust}("");
                require(ok2, "Treasury dust failed");
            }
        }

        emit LiquidityTriggered(tokensToSwap, tokensForLiqHalf, ethForLiq);
    }



    function _convertTokensToETH(uint256 tokens) private {
        if (tokens == 0) return;

        address[] memory route = new address[](2);
        route[0] = address(this);
        route[1] = liquidityRouter.WETH();

        _approve(address(this), address(liquidityRouter), tokens);
        liquidityRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokens,
            0,
            route,
            address(this),
            block.timestamp
        );
    }


    function _injectLiquidityToPool(uint256 tokens,uint256 eth) private {
        if (tokens==0 || eth==0) return;
        _approve(address(this), address(liquidityRouter), tokens);
        liquidityRouter.addLiquidityETH{value: eth}(
            address(this), tokens, 0, 0, owner(), block.timestamp
        );
        // If not yet set (e.g. first internal LP-Add):
        if (tradingPair == address(0)) {
            address pair = IUniswapV2Factory(liquidityRouter.factory())
                .getPair(address(this), liquidityRouter.WETH());
            require(pair != address(0), "Pair not found after addLiquidity");
            tradingPair = pair;
            _accountExemptionStatus[tradingPair] = true;
            emit ExemptionUpdated(tradingPair, true);
        }
        if (!tradingEnabled) {
            tradingEnabled = true;
            emit TradingActivated(true);
        }
    }

    // ── One-way Kill-Switch
    function permanentlyDisableTaxSystem() external onlyOwner {
        require(!taxesDisabled, "Already disabled");
        taxesDisabled = true;
        emit TaxDisabled();
    }

    // ── Utilities
    function withdrawAccumulatedETH(address payable recipient) external onlyOwner {
        uint256 amt = address(this).balance; require(amt>0, "No ETH");
        (bool ok, ) = recipient.call{value: amt}(""); require(ok, "ETH transfer failed");
        emit TreasuryWithdrawn(recipient, amt);
    }

    function withdrawAccumulatedTokens(address token) external onlyOwner {
        require(token != address(this), "Cannot rescue this token");
        uint256 bal = IERC20(token).balanceOf(address(this)); require(bal>0, "No tokens");
        IERC20(token).transfer(owner(), bal);
        emit TokenRescue(token, bal);
    }

    function updateAccountExemptionStatus(address account,bool exempt) external onlyOwner {
        _accountExemptionStatus[account] = exempt; emit ExemptionUpdated(account, exempt);
    }

    function modifyLiquidityTriggerThreshold(uint256 newAmount) external onlyOwner {
        require(newAmount > 0, "Invalid amount"); liquidityActivationThreshold = newAmount;
    }
}

Read Contract

BPS_DENOM 0x6637e38c → uint16
BUY_TAX_BPS 0x9099bd3f → uint256
SELL_TAX_BPS 0xfd657856 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
ethFeePart 0x95a39227 → uint256
liqFeePart 0x3ca25a7f → uint256
liquidityActivationThreshold 0x87a5e33c → uint256
liquidityRouter 0x24702944 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
taxesDisabled 0xfd6d0eb3 → bool
totalSupply 0x18160ddd → uint256
tradingEnabled 0x4ada218b → bool
tradingPair 0xd42f6e39 → address
treasuryBps 0x29326e8d → uint16
treasuryReceivers 0xb518c0ab → address

Write Contract 10 functions

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

approve 0x095ea7b3
address s
uint256 v
returns: bool
modifyLiquidityTriggerThreshold 0x8fd2da76
uint256 newAmount
permanentlyDisableTaxSystem 0xed6a0ef4
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address f
address t
uint256 v
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateAccountExemptionStatus 0xb92764cc
address account
bool exempt
withdrawAccumulatedETH 0x946858f5
address recipient
withdrawAccumulatedTokens 0xc7a894da
address token

Recent Transactions

No transactions found for this address