Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xb2cb83e8e1B326373B7F1068d10C50eBfa04F070
Balance 0 ETH
Nonce 1
Code Size 9042 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

9042 bytes
0x6080604052600436106101fa575f3560e01c80637d1db4a51161010b578063b0f7ec3811610099578063b0f7ec3814610589578063c9567bf9146105a9578063d51ed1c8146105bd578063d543dbeb146105dc578063d78e139d146105fb578063dd62ed3e1461061a578063f2fde38b1461065e578063f360c03c1461067d578063f887ea401461069c578063ffb54a99146106bb575f80fd5b80637d1db4a51461046257806382bf293c14610477578063832790fe14610496578063878a9a61146104b7578063893d20e8146104d65780638da5cb5b146105065780638f9a55c01461052257806395d89b4114610537578063a8aa1b311461054b578063a9059cbb1461056a575f80fd5b80632d838119116101885780632d83811914610344578063313ce567146103635780633c8e556d1461037e57806345ce53651461039f578063571ac8b0146103be5780636308fb98146103dd57806370a08231146103fc578063715018a61461041b578063751039fc1461042f57806377b54bad14610443575f80fd5b80630445b6671461020557806306fdde031461022d578063095ea7b31461024e5780630cfc15f91461027d5780631161ae39146102a857806317800287146102c757806318160ddd146102dc57806323b872dd146102f05780632b112e491461030f5780632d44c93114610323575f80fd5b3661020157005b5f80fd5b348015610210575f80fd5b5061021a60235481565b6040519081526020015b60405180910390f35b348015610238575f80fd5b506102416106db565b6040516102249190611e03565b348015610259575f80fd5b5061026d610268366004611e6a565b61076b565b6040519015158152602001610224565b348015610288575f80fd5b5061021a610297366004611e92565b60076020525f908152604090205481565b3480156102b3575f80fd5b5061026d6102c2366004611eab565b6107d7565b3480156102d2575f80fd5b5061021a60085481565b3480156102e7575f80fd5b5060045461021a565b3480156102fb575f80fd5b5061026d61030a366004611ecb565b6107ea565b34801561031a575f80fd5b5061021a6108a8565b34801561032e575f80fd5b5061021a61033d366004611f14565b5060185490565b34801561034f575f80fd5b5061021a61035e366004611f2f565b6108d7565b34801561036e575f80fd5b5060405160098152602001610224565b348015610389575f80fd5b5061039d610398366004611f46565b6108f9565b005b3480156103aa575f80fd5b5061021a6103b9366004611f2f565b61097a565b3480156103c9575f80fd5b5061026d6103d8366004611e92565b610996565b3480156103e8575f80fd5b5061039d6103f7366004611f97565b6109a2565b348015610407575f80fd5b5061021a610416366004611e92565b610a0d565b348015610426575f80fd5b5061039d610a2e565b34801561043a575f80fd5b5061039d610a9f565b34801561044e575f80fd5b5061026d61045d366004611e6a565b610ad5565b34801561046d575f80fd5b5061021a60055481565b348015610482575f80fd5b5061039d610491366004611f2f565b610c24565b3480156104a1575f80fd5b5061021a6104b0366004611f14565b5060175490565b3480156104c2575f80fd5b5061039d6104d1366004611fde565b610cbf565b3480156104e1575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610224565b348015610511575f80fd5b505f546001600160a01b03166104ee565b34801561052d575f80fd5b5061021a60065481565b348015610542575f80fd5b50610241610e23565b348015610556575f80fd5b506020546104ee906001600160a01b031681565b348015610575575f80fd5b5061026d610584366004611e6a565b610e32565b348015610594575f80fd5b5060205461026d90600160a81b900460ff1681565b3480156105b4575f80fd5b5061039d610e3e565b3480156105c8575f80fd5b5061021a6105d7366004611f2f565b610e7c565b3480156105e7575f80fd5b5061039d6105f6366004611f2f565b610eb5565b348015610606575f80fd5b5061039d610615366004611f2f565b610f50565b348015610625575f80fd5b5061021a610634366004612049565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610669575f80fd5b5061039d610678366004611e92565b610fa1565b348015610688575f80fd5b5061039d6106973660046120c2565b611088565b3480156106a7575f80fd5b50601f546104ee906001600160a01b031681565b3480156106c6575f80fd5b5060205461026d90600160a01b900460ff1681565b6060600280546106ea9061213d565b80601f01602080910402602001604051908101604052809291908181526020018280546107169061213d565b80156107615780601f1061073857610100808354040283529160200191610761565b820191905f5260205f20905b81548152906001019060200180831161074457829003601f168201915b5050505050905090565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107c59086815260200190565b60405180910390a35060015b92915050565b5f826107e283610e7c565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610893576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260098252838120338252909152919091205461086f918490611207565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b61089e84848461123f565b90505b9392505050565b5f6108d26108b55f610a0d565b6108cc6108c361dead610a0d565b6004549061159c565b9061159c565b905090565b5f6107d16008546108f3600454856115dd90919063ffffffff16565b9061165b565b5f546001600160a01b0316331461092b5760405162461bcd60e51b815260040161092290612175565b60405180910390fd5b601a80546001600160a01b03199081166001600160a01b0396871617909155601b805482169286169290921790915560198054821692851692909217909155601c805490911691909216179055565b5f6107d16004546108f3600854856115dd90919063ffffffff16565b5f6107d1825f1961076b565b5f546001600160a01b031633146109cb5760405162461bcd60e51b815260040161092290612175565b60208054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b1990951694909417179092556021819055602291909155602355565b6001600160a01b0381165f908152600760205260408120546107d1906108d7565b5f546001600160a01b03163314610a575760405162461bcd60e51b815260040161092290612175565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610ac85760405162461bcd60e51b815260040161092290612175565b6004546006819055600555565b5f306001600160a01b03841603610b405760405162461bcd60e51b815260206004820152602960248201527f746f6b656e20416464726573732063616e206e6f7420626520746865206e617460448201526834bb32903a37b5b2b760b91b6064820152608401610922565b815f03610bb0576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bad91906121aa565b91505b60195460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c00573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a191906121c1565b5f546001600160a01b03163314610c4d5760405162461bcd60e51b815260040161092290612175565b6001811015610c9e5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206d61782077616c6c65742062656c6f77202e3125006044820152606401610922565b6103e881600454610caf91906121f0565b610cb99190612207565b60065550565b5f546001600160a01b03163314610ce85760405162461bcd60e51b815260040161092290612175565b8a600c819055508960108190555088600f8190555087600d8190555086600e81905550610d3a600e54610d34600d54610d34600f54610d34601054600c5461169990919063ffffffff16565b90611699565b60175560118590556015849055601483905560128290556013819055610d6881610d34848187818b8b611699565b601855601686905560175460191015610dc35760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207365742062757920666565732061626f7665203235250000006044820152606401610922565b60326018541115610e165760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207365742073656c6c20666565732061626f76652035302500006044820152606401610922565b5050505050505050505050565b6060600380546106ea9061213d565b5f6108a133848461123f565b5f546001600160a01b03163314610e675760405162461bcd60e51b815260040161092290612175565b6020805460ff60a01b1916600160a01b179055565b5f6107d1610e886108a8565b6020546108f390610eae90600290610ea8906001600160a01b0316610a0d565b906115dd565b85906115dd565b5f546001600160a01b03163314610ede5760405162461bcd60e51b815260040161092290612175565b6001811015610f2f5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000006044820152606401610922565b6103e881600454610f4091906121f0565b610f4a9190612207565b60055550565b60195447906001600160a01b03166108fc6064610f6d85856121f0565b610f779190612207565b6040518115909202915f818181858888f19350505050158015610f9c573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610fca5760405162461bcd60e51b815260040161092290612175565b6001600160a01b03811661102f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610922565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110b15760405162461bcd60e51b815260040161092290612175565b6020805460ff60a01b1916815560405162461bcd60e51b81526004810191909152602360248201527f43616e6e6f742065786563757465206f6e63652074726164696e67206973206f6044820152623832b760e91b6064820152608401610922565b848110156111495783838281811061112d5761112d612226565b905060200201358261113f919061223a565b9150600101611113565b508061115487610a0d565b10156111a25760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610922565b5f5b848110156111fe576111f5878787848181106111c2576111c2612226565b90506020020160208101906111d79190611e92565b8686858181106111e9576111e9612226565b905060200201356116f7565b506001016111a4565b50505050505050565b5f818484111561122a5760405162461bcd60e51b81526004016109229190611e03565b505f611236848661224d565b95945050505050565b6024545f9060ff161561125e576112578484846116f7565b90506108a1565b6020546001600160a01b0384811691161480159061128757506001600160a01b03831661dead14155b80156112a15750601a546001600160a01b03848116911614155b80156112c557506001600160a01b0383165f908152600b602052604090205460ff16155b1561132557600654826112d785610a0d565b6112e1919061223a565b11156113255760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610922565b6001600160a01b0384165f908152600b602052604090205460ff16611396576005548211156113965760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e20416d6f756e7420457863656564656400000000006044820152606401610922565b6020546001600160a01b038481169116148015906113bf57506001600160a01b03831661dead14155b80156113e357506001600160a01b0383165f908152600b602052604090205460ff16155b1561143857602054600160a01b900460ff166114385760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610922565b6114406117e9565b1561144d5761144d611838565b5f6114578361097a565b90506114bd8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060075f896001600160a01b03166001600160a01b031681526020019081526020015f20546112079092919063ffffffff16565b6001600160a01b0386165f908152600760205260408120919091556114e186611c64565b80156114f157506114f185611c64565b6114fb5781611525565b602054611525906001600160a01b0388811691161461151a575f61151d565b60015b878785611c82565b6001600160a01b0386165f9081526007602052604090205490915061154a9082611699565b6001600160a01b038087165f8181526007602052604090209290925587165f805160206122fd83398151915261157f846108d7565b60405190815260200160405180910390a350600195945050505050565b5f6108a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611207565b5f825f036115ec57505f6107d1565b5f6115f783856121f0565b9050826116048583612207565b146108a15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610922565b5f6108a183836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611dd7565b5f806116a5838561223a565b9050838110156108a15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610922565b5f806117028361097a565b90506117688160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060075f896001600160a01b03166001600160a01b031681526020019081526020015f20546112079092919063ffffffff16565b6001600160a01b038087165f9081526007602052604080822093909355908616815220546117969082611699565b6001600160a01b038086165f8181526007602052604090819020939093559151908716905f805160206122fd833981519152906117d69087815260200190565b60405180910390a3506001949350505050565b6020545f906001600160a01b03163314801590611809575060245460ff16155b801561181e5750602054600160a81b900460ff165b80156108d2575060235461183130610a0d565b1015905090565b6024805460ff19166001179055601d54601e545f91611856916107d7565b61186257601154611864565b5f5b90505f61187e60155460185461159c90919063ffffffff16565b90505f61189f60026108f3846108f3876023546115dd90919063ffffffff16565b90505f6118b78260235461159c90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106118ef576118ef612226565b6001600160a01b039283166020918202929092010152600180548351921691839190811061191f5761191f612226565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac947906119689086905f90879030904290600401612260565b5f604051808303815f87803b15801561197f575f80fd5b505af1158015611991573d5f803e3d5ffd5b505050505f6119a9824761159c90919063ffffffff16565b90505f6119c16119ba89600261165b565b889061159c565b90505f6119e260026108f3846108f3601154886115dd90919063ffffffff16565b90505f6119fe836108f3601454876115dd90919063ffffffff16565b90505f611a1a846108f3601254886115dd90919063ffffffff16565b90505f611a36856108f3601354896115dd90919063ffffffff16565b601a546040519192505f916001600160a01b039091169061753090869084818181858888f193505050503d805f8114611a8a576040519150601f19603f3d011682016040523d82523d5f602084013e611a8f565b606091505b5050601b546040519192506001600160a01b0316906175309085905f818181858888f193505050503d805f8114611ae1576040519150601f19603f3d011682016040523d82523d5f602084013e611ae6565b606091505b5050601c546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114611b38576040519150601f19603f3d011682016040523d82523d5f602084013e611b3d565b606091505b50909150508a15611c1757601f5460195460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611bb5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bda91906122d1565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b602054600160b01b900460ff1615611c445760215460235414611c3c57602154611c48565b602254611c48565b6023545b60235550506024805460ff191690555050505050505050505050565b6001600160a01b03165f908152600a602052604090205460ff161590565b5f80600186151514611caa57601654601854611ca591906108f3905b86906115dd565b611cbe565b601654601754611cbe91906108f390611c9e565b90505f600187151514611ceb57611ce66018546108f3601554856115dd90919063ffffffff16565b611d06565b611d066017546108f3601054856115dd90919063ffffffff16565b600854909150611d16908261159c565b6008555f611d24838361159c565b305f90815260076020526040902054909150611d409082611699565b305f818152600760205260409020919091556001600160a01b0388165f805160206122fd833981519152611d73846108d7565b60405190815260200160405180910390a36008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611dcb858461159c565b98975050505050505050565b5f8183611df75760405162461bcd60e51b81526004016109229190611e03565b505f6112368486612207565b5f602080835283518060208501525f5b81811015611e2f57858101830151858201604001528201611e13565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611e65575f80fd5b919050565b5f8060408385031215611e7b575f80fd5b611e8483611e4f565b946020939093013593505050565b5f60208284031215611ea2575f80fd5b6108a182611e4f565b5f8060408385031215611ebc575f80fd5b50508035926020909101359150565b5f805f60608486031215611edd575f80fd5b611ee684611e4f565b9250611ef460208501611e4f565b9150604084013590509250925092565b8015158114611f11575f80fd5b50565b5f60208284031215611f24575f80fd5b81356108a181611f04565b5f60208284031215611f3f575f80fd5b5035919050565b5f805f8060808587031215611f59575f80fd5b611f6285611e4f565b9350611f7060208601611e4f565b9250611f7e60408601611e4f565b9150611f8c60608601611e4f565b905092959194509250565b5f805f8060808587031215611faa575f80fd5b8435611fb581611f04565b935060208501359250604085013591506060850135611fd381611f04565b939692955090935050565b5f805f805f805f805f805f6101608c8e031215611ff9575f80fd5b505089359b60208b01359b5060408b01359a60608101359a506080810135995060a0810135985060c0810135975060e0810135965061010081013595506101208101359450610140013592509050565b5f806040838503121561205a575f80fd5b61206383611e4f565b915061207160208401611e4f565b90509250929050565b5f8083601f84011261208a575f80fd5b50813567ffffffffffffffff8111156120a1575f80fd5b6020830191508360208260051b85010111156120bb575f80fd5b9250929050565b5f805f805f606086880312156120d6575f80fd5b6120df86611e4f565b9450602086013567ffffffffffffffff808211156120fb575f80fd5b61210789838a0161207a565b9096509450604088013591508082111561211f575f80fd5b5061212c8882890161207a565b969995985093965092949392505050565b600181811c9082168061215157607f821691505b60208210810361216f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156121ba575f80fd5b5051919050565b5f602082840312156121d1575f80fd5b81516108a181611f04565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107d1576107d16121dc565b5f8261222157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b808201808211156107d1576107d16121dc565b818103818111156107d1576107d16121dc565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122b05784516001600160a01b03168352938301939183019160010161228b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122e3575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e659c411f6129a07b13b7ea24ed35432e08d59c4068ceb335a860a0b69ad936064736f6c63430008170033

Verified Source Code Partial Match

Compiler: v0.8.23+commit.f704f362 EVM: shanghai Optimization: Yes (69 runs)
Pepito.sol 582 lines
// https://t.me/lilpepito.com
// http://pepitokart.games/
// https://stake.lilpepito.app/
// https://youtube.com/@Pepitobsc
// https://t.me/PepitoBSC
// https://twitter.com/Pepito_Legacy?s=20

//SPDX-License-Identifier: MIT


pragma solidity 0.8.23;


interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */

    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

interface IPancakePair {
    function sync() external;
}

interface IDEXRouter {

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

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

}

contract Ownable is Context {
    address private _owner;

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current 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;
    }
}

contract Pepito is IERC20, Ownable {
    using SafeMath for uint256;
    
    address WETH;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string _name = "Pepito";
    string _symbol = "PEPI";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;
    uint256 public _maxTxAmount = (_totalSupply * 3) / 100;
    uint256 public _maxWalletSize = (_totalSupply * 3) / 100;   

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping (address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

    mapping (address => mapping (address => uint256)) _allowances;

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
 
    uint256 liquidityFeeBuy = 1; 
    uint256 teamFeeBuy = 0; 
    uint256 devFeeBuy = 0; 
    uint256 marketingFeeBuy = 1;  
    uint256 reflectionFeeBuy = 1;   

    uint256 liquidityFeeSell = 1;  
    uint256 teamFeeSell = 0;       
    uint256 devFeeSell = 0;      
    uint256 marketingFeeSell = 1;    
    uint256 reflectionFeeSell = 1;   
    
    uint256 feeDenominator = 100; 

    uint256 totalFeeBuy = marketingFeeBuy + liquidityFeeBuy + teamFeeBuy + devFeeBuy + reflectionFeeBuy;     
    uint256 totalFeeSell = marketingFeeSell + liquidityFeeSell + teamFeeSell + devFeeSell + reflectionFeeSell; 
    
    address autoLiquidityReceiver;
    address marketingFeeReceiver;
    address teamFeeReceiver;
    address devFeeReceiver;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;
    
    bool public claimingFees = true; 
    bool alternateSwaps = true;
    uint256 smallSwapThreshold = _totalSupply * 2 / 1000;
    uint256 largeSwapThreshold = _totalSupply * 4 / 100;

    uint256 public swapThreshold = smallSwapThreshold;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][msg.sender] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(router)] = true;
	    isTxLimitExempt[pair] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isFeeExempt[msg.sender] = true;

        autoLiquidityReceiver = msg.sender; 
        teamFeeReceiver = msg.sender;
        devFeeReceiver = 0x481d3EDDf997f0370530188dC37c5371AF0c5a32;
        marketingFeeReceiver = 0xd6f44c0108B3f397d31768E1ad3c9427F972CE27;

        _rOwned[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function name() external view returns (string memory) { return _name; }
    function symbol() external view returns (string memory) { return _symbol; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != pair && recipient != DEAD && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]) {
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded");

        }

        if(!isTxLimitExempt[sender]) {
            require(amount <= _maxTxAmount, "Transaction Amount Exceeded");
        }
     
        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {
            require(tradingOpen,"Trading not open yet");
        
        }

        if(shouldSwapBack()){ swapBack(); }

        uint256 proportionAmount = tokensToProportion(amount);

        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");

        uint256 proportionReceived = shouldTakeFee(sender) && shouldTakeFee(recipient) ? takeFeeInProportions(sender == pair? true : false, sender, recipient, proportionAmount) : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient].add(proportionReceived);

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens.mul(_totalProportion).div(_totalSupply);
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion.mul(_totalSupply).div(_totalProportion);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");
        _rOwned[recipient] = _rOwned[recipient].add(proportionAmount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];

    }

     function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function getTotalFeeBuy(bool) public view returns (uint256) {
        return totalFeeBuy;
    }

    function getTotalFeeSell(bool) public view returns (uint256) {
        return totalFeeSell;
    }

    function takeFeeInProportions(bool buying, address sender, address receiver, uint256 proportionAmount) internal returns (uint256) {
        uint256 proportionFeeAmount = buying == true? proportionAmount.mul(getTotalFeeBuy(receiver == pair)).div(feeDenominator) :
        proportionAmount.mul(getTotalFeeSell(receiver == pair)).div(feeDenominator);

        // reflect
        uint256 proportionReflected = buying == true? proportionFeeAmount.mul(reflectionFeeBuy).div(totalFeeBuy) :
        proportionFeeAmount.mul(reflectionFeeSell).div(totalFeeSell);

        _totalProportion = _totalProportion.sub(proportionReflected);

        // take fees
        uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected);
        _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract);

        emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount.sub(proportionFeeAmount);
    }

     function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(autoLiquidityReceiver).transfer(amountETH * amountPercentage / 100);
    }

   function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(tokenAddress != address(this), "token Address can not be the native token");
             if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }      
        return IERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

       function removeLimits() external onlyOwner { 
        _maxWalletSize = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && claimingFees
        && balanceOf(address(this)) >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFeeSell;
        uint256 _totalFee = totalFeeSell.sub(reflectionFeeSell);
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(_totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = _totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFeeSell).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFeeSell).div(totalETHFee);
        uint256 amountETHTeam = amountETH.mul(teamFeeSell).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFeeSell).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHTeam, gas: 30000}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev, gas: 30000}("");
        
        

        if(amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }

        swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) external onlyOwner {
        alternateSwaps = _alternate;
        claimingFees = _enabled;
        smallSwapThreshold = _amountS;
        largeSwapThreshold = _amountL;
        swapThreshold = smallSwapThreshold;
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
    
    }

     function changeFees(uint256 _liquidityFeeBuy, uint256 _reflectionFeeBuy, uint256 _marketingFeeBuy, uint256 _teamFeeBuy, uint256 _devFeeBuy, uint256 _feeDenominator,
    uint256 _liquidityFeeSell, uint256 _reflectionFeeSell, uint256 _marketingFeeSell, uint256 _teamFeeSell, uint256 _devFeeSell) external onlyOwner {
        liquidityFeeBuy = _liquidityFeeBuy;
        reflectionFeeBuy = _reflectionFeeBuy;
        marketingFeeBuy = _marketingFeeBuy;
        teamFeeBuy = _teamFeeBuy;
        devFeeBuy = _devFeeBuy;
        totalFeeBuy = liquidityFeeBuy.add(reflectionFeeBuy).add(marketingFeeBuy).add(teamFeeBuy).add(devFeeBuy);

        liquidityFeeSell = _liquidityFeeSell;
        reflectionFeeSell = _reflectionFeeSell;
        marketingFeeSell = _marketingFeeSell;
        teamFeeSell = _teamFeeSell;
        devFeeSell = _devFeeSell;
        totalFeeSell = liquidityFeeSell.add(reflectionFeeSell).add(marketingFeeSell).add(teamFeeSell).add(devFeeSell);

        feeDenominator = _feeDenominator;
        
        require(totalFeeBuy <=25,"Cannot set buy fees above 25%"); 
        require(totalFeeSell <=50,"Cannot set sell fees above 50%");
     }

    function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        require(maxWallPercent >= 1,"Cannot set max wallet below .1%");
        _maxWalletSize = (_totalSupply * maxWallPercent ) / 1000;
    }

    function setMaxTxPercent(uint256 maxTXPercentage) external onlyOwner() {
        require(maxTXPercentage >= 1, "Cannot set max TX below .1%");
        _maxTxAmount = (_totalSupply * maxTXPercentage ) / 1000;
    }

     function setFeeReceivers(address _marketingFeeReceiver, address _devFeeReceiver, address _liquidityReceiver, address _teamFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
        autoLiquidityReceiver = _liquidityReceiver;
        devFeeReceiver = _devFeeReceiver;
     }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());

    }
    function airdropHolders(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
    require (tradingOpen = false, "Cannot execute once trading is open");
    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 airdrop = 0;

    for(uint i=0; i < addresses.length; i++){
        airdrop = airdrop + tokens[i];
    }

    require(balanceOf(from) >= airdrop, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    
    }

    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
}

Read Contract

_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletSize 0x8f9a55c0 → uint256
_rOwned 0x0cfc15f9 → uint256
_totalProportion 0x17800287 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
claimingFees 0xb0f7ec38 → bool
decimals 0x313ce567 → uint8
getCirculatingSupply 0x2b112e49 → uint256
getLiquidityBacking 0xd51ed1c8 → uint256
getOwner 0x893d20e8 → address
getTotalFeeBuy 0x832790fe → uint256
getTotalFeeSell 0x2d44c931 → uint256
isOverLiquified 0x1161ae39 → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
tokenFromReflection 0x2d838119 → uint256
tokensToProportion 0x45ce5365 → uint256
totalSupply 0x18160ddd → uint256
tradingOpen 0xffb54a99 → bool

Write Contract 16 functions

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

airdropHolders 0xf360c03c
address from
address[] addresses
uint256[] tokens
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
changeFees 0x878a9a61
uint256 _liquidityFeeBuy
uint256 _reflectionFeeBuy
uint256 _marketingFeeBuy
uint256 _teamFeeBuy
uint256 _devFeeBuy
uint256 _feeDenominator
uint256 _liquidityFeeSell
uint256 _reflectionFeeSell
uint256 _marketingFeeSell
uint256 _teamFeeSell
uint256 _devFeeSell
clearStuckETH 0xd78e139d
uint256 amountPercentage
clearStuckToken 0x77b54bad
address tokenAddress
uint256 tokens
returns: bool
openTrading 0xc9567bf9
No parameters
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
setFeeReceivers 0x3c8e556d
address _marketingFeeReceiver
address _devFeeReceiver
address _liquidityReceiver
address _teamFeeReceiver
setMaxTxPercent 0xd543dbeb
uint256 maxTXPercentage
setMaxWalletPercent 0x82bf293c
uint256 maxWallPercent
setSwapBackSettings 0x6308fb98
bool _enabled
uint256 _amountS
uint256 _amountL
bool _alternate
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address