Address Contract Partially Verified
Address
0xd6E90166db7EcAE45e86B3Ad2004d26E844a67bC
Balance
0 ETH
Nonce
1
Code Size
11607 bytes
Creator
0xc6485000...adF4 at tx 0x707c1219...f3abad
Indexed Transactions
0
Contract Bytecode
11607 bytes
0x6080604052600436106103385760003560e01c80637d1db4a5116101ab578063c49b9a80116100f7578063dc44b6a011610095578063ec28438a1161006f578063ec28438a1461093c578063f2fde38b1461095c578063f887ea401461097c578063fb201b1d1461099c57600080fd5b8063dc44b6a0146108c0578063dd62ed3e146108d6578063ea2f0b371461091c57600080fd5b8063c9cf7789116100d1578063c9cf77891461084a578063d0d41fe114610860578063d4ee1d9014610880578063d6a694f5146108a057600080fd5b8063c49b9a80146107fe578063c5d241891461081e578063c86079521461083457600080fd5b806395d89b4111610164578063a5ece9411161013e578063a5ece94114610788578063a9059cbb146107a8578063aee50b1e146107c8578063b863864c146107e857600080fd5b806395d89b411461073e578063a073d37f14610753578063a457c2d71461076857600080fd5b80637d1db4a51461069e57806385ab2b9e146106b457806388790a68146106ca5780638da5cb5b146106e0578063906e9dd0146106fe57806390a3dd9b1461071e57600080fd5b8063437823ec116102855780635342acb41161022357806370a08231116101fd57806370a082311461063d578063715018a61461065d57806372b28e45146106725780637957bd591461068857600080fd5b80635342acb4146105f257806362015852146106125780636fee4f7a1461062857600080fd5b806349bd5a5e1161025f57806349bd5a5e1461055f5780634a74bb02146105935780634b880e88146105b25780634e3c06b1146105d257600080fd5b8063437823ec1461050557806344d4225f1461052557806347535d7b1461054557600080fd5b806318160ddd116102f257806334c56c28116102cc57806334c56c28146104995780633705b392146104af57806339509351146104c55780633ad10ef6146104e557600080fd5b806318160ddd1461044257806323b872dd14610457578063313ce5671461047757600080fd5b8062afb3251461034457806306fdde031461036d578063095ea7b31461038f57806312eb7c79146103bf57806313114a9d146103e15780631694505e146103f657600080fd5b3661033f57005b600080fd5b34801561035057600080fd5b5061035a601e5481565b6040519081526020015b60405180910390f35b34801561037957600080fd5b506103826109b1565b604051610364919061289c565b34801561039b57600080fd5b506103af6103aa3660046128ff565b610a43565b6040519015158152602001610364565b3480156103cb57600080fd5b506103df6103da36600461292b565b610a5a565b005b3480156103ed57600080fd5b5060155461035a565b34801561040257600080fd5b5061042a7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610364565b34801561044e57600080fd5b5060135461035a565b34801561046357600080fd5b506103af610472366004612957565b610af3565b34801561048357600080fd5b5060125460405160ff9091168152602001610364565b3480156104a557600080fd5b5061035a60215481565b3480156104bb57600080fd5b5061035a60195481565b3480156104d157600080fd5b506103af6104e03660046128ff565b610b5c565b3480156104f157600080fd5b5060065461042a906001600160a01b031681565b34801561051157600080fd5b506103df610520366004612998565b610b92565b34801561053157600080fd5b506103df6105403660046129b5565b610be0565b34801561055157600080fd5b506003546103af9060ff1681565b34801561056b57600080fd5b5061042a7f0000000000000000000000006664e7ab9a1090d314ba1d7407d1e46fa8f1c34a81565b34801561059f57600080fd5b506026546103af90610100900460ff1681565b3480156105be57600080fd5b506103df6105cd366004612998565b610c6e565b3480156105de57600080fd5b506103df6105ed3660046129de565b610cbc565b3480156105fe57600080fd5b506103af61060d366004612998565b610d11565b34801561061e57600080fd5b5061035a60185481565b34801561063457600080fd5b506103df610d5f565b34801561064957600080fd5b5061035a610658366004612998565b610e14565b34801561066957600080fd5b506103df610e73565b34801561067e57600080fd5b5061035a60245481565b34801561069457600080fd5b5061035a601f5481565b3480156106aa57600080fd5b5061035a60235481565b3480156106c057600080fd5b5061035a60205481565b3480156106d657600080fd5b5061035a601b5481565b3480156106ec57600080fd5b506000546001600160a01b031661042a565b34801561070a57600080fd5b506103df610719366004612998565b610ee7565b34801561072a57600080fd5b506103df61073936600461292b565b610f33565b34801561074a57600080fd5b50610382610fe9565b34801561075f57600080fd5b5060255461035a565b34801561077457600080fd5b506103af6107833660046128ff565b610ff8565b34801561079457600080fd5b5060055461042a906001600160a01b031681565b3480156107b457600080fd5b506103af6107c33660046128ff565b611047565b3480156107d457600080fd5b506103df6107e33660046129b5565b611054565b3480156107f457600080fd5b5061035a60225481565b34801561080a57600080fd5b506103df610819366004612a13565b611083565b34801561082a57600080fd5b5061035a60175481565b34801561084057600080fd5b5061035a601c5481565b34801561085657600080fd5b5061035a601d5481565b34801561086c57600080fd5b506103df61087b366004612998565b611101565b34801561088c57600080fd5b5060075461042a906001600160a01b031681565b3480156108ac57600080fd5b506103df6108bb36600461292b565b61114d565b3480156108cc57600080fd5b5061035a60165481565b3480156108e257600080fd5b5061035a6108f1366004612a2e565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561092857600080fd5b506103df610937366004612998565b6111da565b34801561094857600080fd5b506103df6109573660046129b5565b611225565b34801561096857600080fd5b506103df610977366004612998565b6112a3565b34801561098857600080fd5b5060085461042a906001600160a01b031681565b3480156109a857600080fd5b506103df61138d565b6060601080546109c090612a67565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec90612a67565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050905090565b6000610a50338484611491565b5060015b92915050565b6000546001600160a01b03163314610a8d5760405162461bcd60e51b8152600401610a8490612aa1565b60405180910390fd5b601f8390556020829055602181905580610aa78385612aec565b610ab19190612aec565b6022556000610aca82610ac486866115b5565b906115b5565b905060c8811115610aed5760405162461bcd60e51b8152600401610a8490612aff565b50505050565b6000610b00848484611614565b610b528433610b4d85604051806060016040528060288152602001612cd5602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611948565b611491565b5060019392505050565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610a50918590610b4d90866115b5565b6000546001600160a01b03163314610bbc5760405162461bcd60e51b8152600401610a8490612aa1565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314610c0a5760405162461bcd60e51b8152600401610a8490612aa1565b6024819055601354610c2a90600190610c249060646113c6565b9061140f565b60245411610c6b5760405162461bcd60e51b815260206004820152600e60248201526d151bdbc81b195cdcc81b1a5b5a5d60921b6044820152606401610a84565b50565b6000546001600160a01b03163314610c985760405162461bcd60e51b8152600401610a8490612aa1565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610ce65760405162461bcd60e51b8152600401610a8490612aa1565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610d3c5760405162461bcd60e51b8152600401610a8490612aa1565b506001600160a01b0381166000908152600c602052604090205460ff165b919050565b6000546001600160a01b03163314610d895760405162461bcd60e51b8152600401610a8490612aa1565b604051600090339047908381818185875af1925050503d8060008114610dcb576040519150601f19603f3d011682016040523d82523d6000602084013e610dd0565b606091505b5050905080610c6b5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610a84565b6001600160a01b0381166000908152600e602052604081205460ff1615610e5157506001600160a01b03166000908152600a602052604090205490565b6001600160a01b038216600090815260096020526040902054610a5490611982565b6000546001600160a01b03163314610e9d5760405162461bcd60e51b8152600401610a8490612aa1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f115760405162461bcd60e51b8152600401610a8490612aa1565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f5d5760405162461bcd60e51b8152600401610a8490612aa1565b6016839055601782905560188190556040805160608101825284815260208101849052908101829052610f9490601a90600361283c565b506000610fa582610ac486866115b5565b9050601854601754601654610fba9190612aec565b610fc49190612aec565b6019556107d0811115610aed5760405162461bcd60e51b8152600401610a8490612aff565b6060601180546109c090612a67565b6000610a503384610b4d85604051806060016040528060258152602001612cfd60259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611948565b6000610a50338484611614565b6000546001600160a01b0316331461107e5760405162461bcd60e51b8152600401610a8490612aa1565b602555565b6000546001600160a01b031633146110ad5760405162461bcd60e51b8152600401610a8490612aa1565b602680548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110f690831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461112b5760405162461bcd60e51b8152600401610a8490612aa1565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111775760405162461bcd60e51b8152600401610a8490612aa1565b601b839055601c829055601d819055600061119682610ac486866115b5565b9050601d54601c54601b546111ab9190612aec565b6111b59190612aec565b601e556107d0811115610aed5760405162461bcd60e51b8152600401610a8490612aff565b6000546001600160a01b031633146112045760405162461bcd60e51b8152600401610a8490612aa1565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b0316331461124f5760405162461bcd60e51b8152600401610a8490612aa1565b60238190556013546112629060056113c6565b6023541015610c6b5760405162461bcd60e51b815260206004820152600d60248201526c151bdbc81b1bddc81b1a5b5a5d609a1b6044820152606401610a84565b6000546001600160a01b031633146112cd5760405162461bcd60e51b8152600401610a8490612aa1565b6001600160a01b0381166113325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a84565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113b75760405162461bcd60e51b8152600401610a8490612aa1565b6003805460ff19166001179055565b600061140883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119ff565b9392505050565b60008260000361142157506000610a54565b600061142d8385612b25565b90508261143a8583612b3c565b146114085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a84565b6001600160a01b0383166114f35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a84565b6001600160a01b0382166115545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a84565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806115c28385612aec565b9050838110156114085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a84565b6003548390839060ff168061164157506001600160a01b03821660009081526004602052604090205460ff165b8061166457506001600160a01b03811660009081526004602052604090205460ff165b61169b5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610a84565b6001600160a01b0385166116ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a84565b6001600160a01b0384166117615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a84565b600083116117c35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a84565b6000546001600160a01b038681169116148015906117ef57506000546001600160a01b03858116911614155b15611857576023548311156118575760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a84565b600061186230610e14565b602554909150811015611876878787611a2d565b60265460ff161580156118905750602654610100900460ff165b80156118ce57507f0000000000000000000000006664e7ab9a1090d314ba1d7407d1e46fa8f1c34a6001600160a01b0316876001600160a01b031614155b156118e75780156118e75760255491506118e782611b29565b6001600160a01b0387166000908152600c602052604090205460019060ff168061192957506001600160a01b0387166000908152600c602052604090205460ff165b15611932575060005b61193e88888884611ce5565b5050505050505050565b6000818484111561196c5760405162461bcd60e51b8152600401610a84919061289c565b5060006119798486612b5e565b95945050505050565b60006014548211156119e95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a84565b60006119f3611eed565b905061140883826113c6565b60008183611a205760405162461bcd60e51b8152600401610a84919061289c565b5060006119798486612b3c565b6000611a3c82610ac485610e14565b6001600160a01b0385166000908152600d602052604090205490915060ff16158015611a8157506001600160a01b0383166000908152600d602052604090205460ff16155b15611aa857602454811115611aa85760405162461bcd60e51b8152600401610a8490612b71565b7f0000000000000000000000006664e7ab9a1090d314ba1d7407d1e46fa8f1c34a6001600160a01b0316846001600160a01b0316148015611b0257506001600160a01b0383166000908152600d602052604090205460ff16155b15610aed57602454811115610aed5760405162461bcd60e51b8152600401610a8490612b71565b6026805460ff19166001179055601854601754601654600092611b51929091610ac4916115b5565b90506000611b72601d54610ac4601c54601b546115b590919063ffffffff16565b90506000611b8083836115b5565b90506000611bad6002611ba784611ba7601b54601654611ba09190612aec565b8a9061140f565b906113c6565b90506000611bbb8683611f10565b9050611bc681611f52565b60004790506000611bf06002611ba787611ba7601b54601654611be99190612aec565b879061140f565b9050600084118015611c025750600081115b15611c1157611c11848261214b565b6000611c3186611ba7601c54601754611c2a9190612aec565b869061140f565b90508015611c75576005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611c73573d6000803e3d6000fd5b505b6000611c8b82611c858686611f10565b90611f10565b90508015611ccf576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611ccd573d6000803e3d6000fd5b505b50506026805460ff191690555050505050505050565b80611d0357611cfe600060168190556017819055601855565b611de3565b7f0000000000000000000000006664e7ab9a1090d314ba1d7407d1e46fa8f1c34a6001600160a01b0316836001600160a01b031603611d5357611d53601b54601655601c54601755601d54601855565b7f0000000000000000000000006664e7ab9a1090d314ba1d7407d1e46fa8f1c34a6001600160a01b0316846001600160a01b031614158015611dc757507f0000000000000000000000006664e7ab9a1090d314ba1d7407d1e46fa8f1c34a6001600160a01b0316836001600160a01b031614155b15611de357611de3601f54601655602054601755602154601855565b6001600160a01b0384166000908152600e602052604090205460ff168015611e2457506001600160a01b0383166000908152600e602052604090205460ff16155b15611e3957611e34848484612251565b611ee5565b6001600160a01b0384166000908152600e602052604090205460ff16158015611e7a57506001600160a01b0383166000908152600e602052604090205460ff165b15611e8a57611e348484846123aa565b6001600160a01b0384166000908152600e602052604090205460ff168015611eca57506001600160a01b0383166000908152600e602052604090205460ff165b15611eda57611e3484848461244b565b611ee58484846124b6565b610aed6124f2565b6000806000611efa612561565b9092509050611f0982826113c6565b9250505090565b600061140883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611948565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f8757611f87612bb9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120299190612bcf565b8160018151811061203c5761203c612bb9565b60200260200101906001600160a01b031690816001600160a01b031681525050612087307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611491565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120dc908590600090869030904290600401612c30565b600060405180830381600087803b1580156120f657600080fd5b505af115801561210a573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161213f929190612c6c565b60405180910390a15050565b612176307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611491565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806121bd6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612225573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061224a9190612c8d565b5050505050565b600080600080612260856126e3565b6001600160a01b038b166000908152600a60205260409020549397509195509350915061228d9086611f10565b6001600160a01b0388166000908152600a60209081526040808320939093556009905220546122bc9085611f10565b6001600160a01b0380891660009081526009602052604080822093909355908816815220546122eb90846115b5565b6001600160a01b03871660009081526009602052604090205561230d81612721565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161235291815260200190565b60405180910390a380156123a15760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050565b6000806000806123b9856126e3565b6001600160a01b038b16600090815260096020526040902054939750919550935091506123e69085611f10565b6001600160a01b038089166000908152600960209081526040808320949094559189168152600a909152205461241c90836115b5565b6001600160a01b0387166000908152600a60209081526040808320939093556009905220546122eb90846115b5565b60008060008061245a856126e3565b6001600160a01b038b166000908152600a6020526040902054939750919550935091506124879086611f10565b6001600160a01b0388166000908152600a60209081526040808320939093556009905220546123e69085611f10565b6000806000806124c5856126e3565b6001600160a01b038b16600090815260096020526040902054939750919550935091506122bc9085611f10565b601a60008154811061250657612506612bb9565b9060005260206000200154601681905550601a60018154811061252b5761252b612bb9565b9060005260206000200154601781905550601a60028154811061255057612550612bb9565b600091825260209091200154601855565b6014546013546000918291825b600f548110156126b3578260096000600f848154811061259057612590612bb9565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806125fb575081600a6000600f84815481106125d4576125d4612bb9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561261157601454601354945094505050509091565b61265760096000600f848154811061262b5761262b612bb9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611f10565b925061269f600a6000600f848154811061267357612673612bb9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611f10565b9150806126ab81612cbb565b91505061256e565b506013546014546126c3916113c6565b8210156126da576014546013549350935050509091565b90939092509050565b6000806000806000806126f5876127aa565b9150915060008061270e8984612709611eed565b6127d1565b909a909950939750919550919350505050565b600061272b611eed565b90506000612739838361140f565b3060009081526009602052604090205490915061275690826115b5565b30600090815260096020908152604080832093909355600e9052205460ff16156127a557306000908152600a602052604090205461279490846115b5565b306000908152600a60205260409020555b505050565b60008060006127b88461280a565b905060006127c68583611f10565b959194509092505050565b600080806127df868561140f565b905060006127ed868661140f565b905060006127fb8383611f10565b92989297509195505050505050565b60008061282a601854610ac46017546016546115b590919063ffffffff16565b90506114086103e8611ba7858461140f565b828054828255906000526020600020908101928215612877579160200282015b8281111561287757825182559160200191906001019061285c565b50612883929150612887565b5090565b5b808211156128835760008155600101612888565b600060208083528351808285015260005b818110156128c9578581018301518582016040015282016128ad565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c6b57600080fd5b6000806040838503121561291257600080fd5b823561291d816128ea565b946020939093013593505050565b60008060006060848603121561294057600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561296c57600080fd5b8335612977816128ea565b92506020840135612987816128ea565b929592945050506040919091013590565b6000602082840312156129aa57600080fd5b8135611408816128ea565b6000602082840312156129c757600080fd5b5035919050565b80358015158114610d5a57600080fd5b600080604083850312156129f157600080fd5b82356129fc816128ea565b9150612a0a602084016129ce565b90509250929050565b600060208284031215612a2557600080fd5b611408826129ce565b60008060408385031215612a4157600080fd5b8235612a4c816128ea565b91506020830135612a5c816128ea565b809150509250929050565b600181811c90821680612a7b57607f821691505b602082108103612a9b57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a5457610a54612ad6565b6020808252600c908201526b546f6f20486967682046656560a01b604082015260600190565b8082028115828204841417610a5457610a54612ad6565b600082612b5957634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a5457610a54612ad6565b60208082526028908201527f457863656564696e67206d617820746f6b656e73206c696d697420696e20746860408201526719481dd85b1b195d60c21b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612be157600080fd5b8151611408816128ea565b600081518084526020808501945080840160005b83811015612c255781516001600160a01b031687529582019590820190600101612c00565b509495945050505050565b85815284602082015260a060408201526000612c4f60a0830186612bec565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612c856040830184612bec565b949350505050565b600080600060608486031215612ca257600080fd5b8351925060208401519150604084015190509250925092565b600060018201612ccd57612ccd612ad6565b506001019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220019d01f0a3b2dcbc4e592606dd5c0cb541cfb8ba1ae4807f913c7338d671d64964736f6c63430008120033
Verified Source Code Partial Match
Compiler: v0.8.18+commit.87f61d96
EVM: paris
Optimization: Yes (200 runs)
DorkLord.sol 761 lines
/** Join the Dork side. https://dork-lord.com
The OG Dork by Matt Furie https://opensea.io/assets/ethereum/0x808e5cd160d8819ca24c2053037049eb611d0542/91
The only Dork Lord on ZOGZ https://www.zogz.fun/
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⠀⠤⠤⠤⢤⣤⣤⣤⣤⣤⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⢄⣒⣮⣿⠖⠒⠛⠛⢻⠿⠛⠻⢿⣷⡒⠚⠛⢳⣶⠯⣵⣒⠤⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠔⢊⣥⣾⠟⠋⠉⠀⠀⠀⠒⢰⠋⣠⠤⣠⠀⢻⡿⡄⠀⠀⢻⡭⣓⠮⣝⢦⣌⠑⠢⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠖⠁⢀⣼⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠋⠈⠀⠀⠈⢦⡄⣷⣷⠀⠀⠘⡇⣀⠙⢜⣿⣮⡛⢦⡀⠉⠲⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠴⠊⠀⠀⢀⣾⠏⠴⠃⠀⢠⠂⢀⠤⠚⠂⠁⠀⠀⠀⠀⠀⠘⣧⢿⢹⠀⠀⠀⣗⢦⢝⢦⡩⡹⣿⡄⠹⣆⠀⠀⠑⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢀⠴⠉⠀⠀⠀⢀⣿⠏⠀⠀⢠⠞⡁⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⢸⢸⠀⠀⠀⢸⠀⠈⢧⡙⢆⠹⣿⡄⠾⣆⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⡾⣯⠀⢀⡴⣡⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⢸⠀⠀⠀⢸⠀⢀⡀⢱⠘⠄⠻⣷⠀⢹⡀⠀⠀⠀⠀⠑⣄⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡔⠁⠀⠀⠀⠀⠀⢠⢧⡅⢠⠎⣼⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢸⣸⠀⠀⠀⢸⠀⠀⠁⠈⠁⠀⠀⣿⡃⠀⣧⠀⠀⠀⠀⠀⠈⢦⠀⠀⠀⠀⠀
⠀⠀⠀⢀⠎⠀⠀⠀⠀⠀⠀⠀⢸⣾⠀⡏⣼⣏⢡⣀⣀⣤⣤⠤⠤⠤⠴⠥⠥⣤⣤⣀⣀⠘⢸⢿⠀⠀⠀⣼⠀⠀⠀⠀⢀⠀⠀⣾⠂⠈⣿⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀
⠀⠀⢀⠎⠀⠀⠀⠀⠀⠀⠀⠀⢸⢿⣸⣥⣿⠟⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⡙⠛⠾⠀⠀⠀⣧⣤⠴⠚⠛⠋⠉⢹⠛⠲⢤⣽⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀
⠀⢀⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⢟⠟⠋⢀⣔⣀⣀⡤⢤⣴⣶⣶⣶⡶⠶⠶⠶⠶⠦⣄⣀⢀⡀⠀⠀⠀⠈⣁⣄⣄⣠⣤⣤⣈⣧⣀⠀⠈⣇⠀⠀⠀⠀⠀⠀⠀⠀⢡⠀⠀
⠀⡘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡿⢘⣲⠿⣿⠏⣉⣴⣶⣿⣻⣿⣟⡩⢀⣀⣀⣀⣀⣀⣙⣿⣿⣿⣦⣄⣴⣾⣟⣩⣥⣄⣶⡖⣬⣽⣿⣿⣶⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠀
⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡷⢫⢣⡾⣻⣾⢿⠟⣱⣾⣿⣿⣶⠞⠻⣿⣻⠉⡟⡋⠈⠀⢹⡿⢻⡟⣻⣏⢲⠻⠋⠙⢿⡿⢗⣿⣍⢻⣿⣮⢷⡀⠀⠀⠀⠀⠀⠀⠀⠸⡄
⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡟⣠⣣⣮⢿⡟⣱⢏⣼⣟⢓⠳⣄⢀⠀⠀⠘⣿⣦⡨⠓⠤⣴⡾⠁⣴⣧⣻⣇⠘⢲⣤⣤⣾⠏⠀⠈⠹⣿⣿⣿⣷⢷⠀⠀⠀⠀⠀⠀⠀⠀⠇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⢠⣷⡟⣁⠞⡼⢃⡾⢿⣿⠿⠿⣮⣝⡻⢷⣤⣀⣈⣹⣩⣭⡥⠖⣛⡵⢿⣮⣝⣛⡷⢶⣟⣁⣀⣀⣶⡿⣿⣿⣿⣿⣯⣧⠀⠀⠀⠀⠀⠀⠀⢰
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠁⢟⠏⢀⠏⡾⢁⡞⡤⠀⢝⣳⠦⣤⣉⣙⣳⣾⠦⠭⢤⣴⣶⡾⠟⠁⢹⡽⣿⣿⣍⠙⠛⠶⠯⢭⣥⣶⠾⣿⣿⣿⣿⣿⡞⣄⠀⠀⠀⠀⠀⠀⢸
⠀⠀⠀⠀⠀⠀⠀⠀⣰⠃⢼⠏⢀⢎⡾⢡⡞⠀⢁⣒⣐⣌⡉⠙⢉⠉⠋⠛⠛⠛⠋⠉⠁⠀⠀⠐⡀⢷⠉⣏⠙⠻⠓⠒⢚⣛⠩⠗⠐⣪⢿⣿⣿⣿⣿⡹⡄⠀⠀⠀⠀⠀⢸
⠀⠀⠀⠀⠀⠀⠀⢠⠏⢠⠋⢠⠋⡼⠀⡾⣡⣾⠿⠛⣋⣉⠉⠛⠓⠲⣶⢦⣦⣤⣀⣀⣀⣀⣀⠀⠠⡸⣀⡏⠀⠀⠀⢀⣀⢀⣀⣈⣺⣵⣾⡏⢻⣿⣿⣷⡹⡀⠀⠀⠀⠀⢸
⠀⠀⠀⠀⠀⠀⠀⡟⢂⠏⢀⠏⣼⠁⣼⠃⢻⡇⠀⣾⣿⡟⠛⣷⣶⣤⣤⣤⣀⣀⠀⠉⠉⠉⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⠉⠉⠉⠈⣁⣤⣿⣿⣿⣿⣷⢿⡀⠀⠀⠀⠸
⢀⠀⠀⠀⠀⠀⣼⡝⡞⣀⡞⢠⠇⣰⡗⠀⠀⢳⣄⠈⢻⣧⣀⣿⣿⡟⠀⣿⣿⣿⠙⣿⣿⣿⠟⢿⣶⣶⠲⢶⣶⣶⡞⢺⣿⣿⣟⣿⣿⣿⡅⠙⣿⣿⣿⣿⣿⣧⣷⠀⠀⠀⡆
⠸⡄⠀⠀⠀⢠⢯⣰⠀⠀⢁⡟⢠⣿⠻⣦⡀⠀⠙⢿⣦⣬⣛⣿⠛⠷⠶⠿⠿⠿⣤⣿⣿⣿⣀⣸⣿⣿⣀⣸⣿⣿⠁⢸⣿⣿⡇⢸⣿⡿⠃⣠⣿⣿⣿⣿⣿⣿⣏⣇⠀⢰⠃
⠀⢡⠀⠀⠀⣾⠆⣏⣠⠴⢾⣶⣿⣿⣷⣿⣿⣆⡂⠀⠙⢿⣿⣿⢿⡗⠶⣶⣦⣤⣤⣀⣀⣈⣉⣉⣉⣉⡉⠉⠉⠉⠉⣉⡉⣉⣉⣉⣉⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣟⣆⡌⠀
⠀⠈⢇⠀⢰⣳⢞⣽⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⡝⢦⡀⠈⠹⢟⢷⣯⡲⣄⠉⠈⠉⠙⠚⠛⠩⠋⠭⠿⠯⠿⠿⠿⠿⠿⠿⠟⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⡽⡿⠀⠀
⠀⠀⠘⢆⠸⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣇⠈⣧⠀⠀⠈⠳⡝⢿⣮⡑⣄⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣵⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⣫⠶⠋⡰⠁⠀⠀
⠀⠀⠀⠈⢆⠙⠺⠿⣿⣿⣿⣿⣿⡿⠋⠉⡿⡀⢻⡄⢸⠂⠀⠀⠀⠑⠀⢹⣿⣮⢦⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⡿⠿⢛⣻⡥⠒⠋⠀⠀⡰⠁⠀⠀⠀
⠀⠀⠀⠀⠈⢢⠀⣀⣀⣶⠋⣁⣾⣿⣱⣿⣷⢸⣿⣷⡘⣧⡀⠀⠀⠀⠀⠀⢻⣿⣎⣆⠳⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⢫⡻⣯⣿⣶⡾⣿⣭⣥⣄⡀⠀⠀⢀⠜⠁⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠙⢽⣏⡰⢸⡟⣿⡇⣿⣇⣿⡄⢫⢻⣷⣷⣿⣢⣀⠁⠀⠀⣸⣿⣿⢸⠀⠁⠀⠀⠀⠀⠀⠀⠀⢸⣽⣇⡉⠑⠋⠉⠻⢷⣝⣷⣾⣝⢶⣤⠊⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⠳⣁⡏⣿⣿⠁⢹⡟⣿⣇⠀⢫⢻⣿⣏⠉⠙⠟⣒⠒⠛⠿⠿⠾⠯⠤⠶⢤⣤⣀⣀⣤⣀⣸⣿⣿⣷⣦⣤⣀⡀⠈⢿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⢿⣿⠀⢸⣇⢛⣿⡄⠈⢣⡻⣻⣦⡀⠀⠀⠁⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠉⠉⠙⡿⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠦⣸⣿⠘⣿⣇⠀⠀⢣⠘⣽⣷⣤⣤⣤⣄⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠔⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠣⢼⣿⡎⠇⢇⢃⠘⢞⣿⣶⣶⣾⣿⣿⣿⣿⣿⣯⣭⣭⣽⣿⣿⣿⣛⣻⣻⣟⡿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠚⠘⠄⣇⠈⣎⢿⣿⣿⢍⠀⠀⠀⠀⠀⠉⠉⠁⠀⢈⣙⠿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠛⠛⠛⠒⠒⠒⠒⠀⠀⠀⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20
{
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
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) {
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;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function createPair(address tokenA, address tokenB) external returns (address pair);}
// pragma solidity >=0.5.0;
interface IUniswapV2Pair {
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
function factory() external view returns (address);
}
// pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
// pragma solidity >=0.6.2;
interface IUniswapV2Router02 is IUniswapV2Router01 {
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract LockToken is Ownable {
bool public isOpen = false;
mapping(address => bool) private _whiteList;
modifier open(address from, address to) {
require(isOpen || _whiteList[from] || _whiteList[to], "Not Open");
_;
}
constructor() {
_whiteList[msg.sender] = true;
_whiteList[address(this)] = true;
}
function openTrade() external onlyOwner
{
isOpen = true;
}
function includeToWhiteList(address _address) public onlyOwner {
_whiteList[_address] = true;
}
}
contract DorkLord is Context, IERC20, LockToken
{
using SafeMath for uint256;
address payable public marketingAddress = payable(0x20a1f7f7f1CD5A1f1E67744a74D7674Dc598cBae);
address payable public devAddress = payable(0xc64850000fe959032314A0d765E414a0c10cadF4);
address public newOwner = 0xc64850000fe959032314A0d765E414a0c10cadF4;
address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
mapping (address => uint256) private _rOwned;
mapping (address => uint256) private _tOwned;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _isExcludedFromWhale;
mapping (address => bool) private _isExcluded;
address[] private _excluded;
string private _name = "Dork Lord";
string private _symbol = "DORK";
uint8 private _decimals = 18;
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal = 1000000000 * 10**18;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
uint256 public _buyLiquidityFee = 0;
uint256 public _buyMarketingFee = 800;
uint256 public _buyDevFee = 100;
uint256 public buyTotalFee = _buyLiquidityFee+_buyMarketingFee+_buyDevFee;
uint256[] buyFeesBackup = [_buyLiquidityFee, _buyMarketingFee, _buyDevFee];
uint256 public _sellLiquidityFee = 0;
uint256 public _sellMarketingFee = 800;
uint256 public _sellDevFee = 100;
uint256 public sellTotalFee = _sellLiquidityFee+_sellMarketingFee+_sellDevFee;
uint256 public _tfrLiquidityFee = 0;
uint256 public _tfrMarketingFee = 5;
uint256 public _tfrDevFee = 5;
uint256 public transferTotalFee = _tfrLiquidityFee+_tfrMarketingFee+_tfrDevFee;
uint256 public _maxTxAmount = _tTotal.div(100).mul(1); //x% of total supply
uint256 public _walletHoldingMaxLimit = _tTotal.div(100).mul(2); //x% of total supply
uint256 private minimumTokensBeforeSwap = 5000000 * 10**18;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapTokensForETH(
uint256 amountIn,
address[] path
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor() {
_rOwned[newOwner] = _rTotal;
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_isExcludedFromFee[newOwner] = true;
_isExcludedFromFee[address(this)] = true;
includeToWhiteList(newOwner);
_isExcludedFromWhale[newOwner] = true;
emit Transfer(address(0), newOwner, _tTotal);
excludeWalletsFromWhales();
transferOwnership(newOwner);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function minimumTokensBeforeSwapAmount() public view returns (uint256) {
return minimumTokensBeforeSwap;
}
function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
require(rAmount <= _rTotal, "Amount must be less than total reflections");
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function _approve(address owner, address spender, uint256 amount) private
{
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) private open(from, to)
{
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
if(from != owner() && to != owner()) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
checkForWhale(from, to, amount);
if (!inSwapAndLiquify && swapAndLiquifyEnabled && from != uniswapV2Pair)
{
if (overMinimumTokenBalance)
{
contractTokenBalance = minimumTokensBeforeSwap;
swapTokens(contractTokenBalance);
}
}
bool takeFee = true;
//if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFee[from] || _isExcludedFromFee[to])
{
takeFee = false;
}
_tokenTransfer(from, to, amount, takeFee);
}
function swapTokens(uint256 contractTokenBalance) private lockTheSwap
{
uint256 __buyTotalFee = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDevFee);
uint256 __sellTotalFee = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee);
uint256 totalSwapableFees = __buyTotalFee.add(__sellTotalFee);
uint256 halfLiquidityTokens = contractTokenBalance.mul(_buyLiquidityFee+_sellLiquidityFee).div(totalSwapableFees).div(2);
uint256 swapableTokens = contractTokenBalance.sub(halfLiquidityTokens);
swapTokensForEth(swapableTokens);
uint256 newBalance = address(this).balance;
uint256 ethForLiquidity = newBalance.mul(_buyLiquidityFee+_sellLiquidityFee).div(totalSwapableFees).div(2);
if(halfLiquidityTokens>0 && ethForLiquidity>0)
{
addLiquidity(halfLiquidityTokens, ethForLiquidity);
}
uint256 ethForMarketing = newBalance.mul(_buyMarketingFee+_sellMarketingFee).div(totalSwapableFees);
if(ethForMarketing>0)
{
marketingAddress.transfer(ethForMarketing);
}
uint256 ethForDev = newBalance.sub(ethForLiquidity).sub(ethForMarketing);
if(ethForDev>0)
{
devAddress.transfer(ethForDev);
}
}
function swapTokensForEth(uint256 tokenAmount) private
{
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private
{
if(!takeFee)
{
removeAllFee();
}
else
{
if(recipient==uniswapV2Pair)
{
setSellFee();
}
if(sender != uniswapV2Pair && recipient != uniswapV2Pair)
{
setWalletToWalletTransferFee();
}
}
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(sender, recipient, amount);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(sender, recipient, amount);
} else {
_transferStandard(sender, recipient, amount);
}
restoreAllFee();
}
function _transferStandard(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
emit Transfer(sender, recipient, tTransferAmount);
if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); }
}
function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
emit Transfer(sender, recipient, tTransferAmount);
if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); }
}
function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
emit Transfer(sender, recipient, tTransferAmount);
if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); }
}
function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
emit Transfer(sender, recipient, tTransferAmount);
if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); }
}
function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
(uint256 tTransferAmount, uint256 tLiquidity) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, tLiquidity, _getRate());
return (rAmount, rTransferAmount, tTransferAmount, tLiquidity);
}
function _getTValues(uint256 tAmount) private view returns (uint256, uint256) {
uint256 tLiquidity = calculateLiquidityFee(tAmount);
uint256 tTransferAmount = tAmount.sub(tLiquidity);
return (tTransferAmount, tLiquidity);
}
function _getRValues(uint256 tAmount, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256) {
uint256 rAmount = tAmount.mul(currentRate);
uint256 rLiquidity = tLiquidity.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rLiquidity);
return (rAmount, rTransferAmount);
}
function _getRate() private view returns(uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns(uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _takeLiquidity(uint256 tLiquidity) private {
uint256 currentRate = _getRate();
uint256 rLiquidity = tLiquidity.mul(currentRate);
_rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
if(_isExcluded[address(this)]) {
_tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
}
}
function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
uint256 fees = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDevFee);
return _amount.mul(fees).div(1000);
}
function isExcludedFromFee(address account) public view onlyOwner returns(bool) {
return _isExcludedFromFee[account];
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function removeAllFee() private {
_buyLiquidityFee = 0;
_buyMarketingFee = 0;
_buyDevFee = 0;
}
function restoreAllFee() private
{
_buyLiquidityFee = buyFeesBackup[0];
_buyMarketingFee = buyFeesBackup[1];
_buyDevFee = buyFeesBackup[2];
}
function setSellFee() private
{
_buyLiquidityFee = _sellLiquidityFee;
_buyMarketingFee = _sellMarketingFee;
_buyDevFee = _sellDevFee;
}
function setWalletToWalletTransferFee() private
{
_buyLiquidityFee = _tfrLiquidityFee;
_buyMarketingFee = _tfrMarketingFee;
_buyDevFee = _tfrDevFee;
}
function setBuyFeePercentages(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee)
external onlyOwner()
{
_buyLiquidityFee = _liquidityFee;
_buyMarketingFee = _marketingFee;
_buyDevFee = _devFee;
buyFeesBackup = [_buyLiquidityFee, _buyMarketingFee, _buyDevFee];
uint256 totalFee = _liquidityFee.add(_marketingFee).add(_devFee);
buyTotalFee = _buyLiquidityFee+_buyMarketingFee+_buyDevFee;
require(totalFee<=2000, "Too High Fee");
}
function setSellFeePercentages(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee)
external onlyOwner()
{
_sellLiquidityFee = _liquidityFee;
_sellMarketingFee = _marketingFee;
_sellDevFee = _devFee;
uint256 totalFee = _liquidityFee.add(_marketingFee).add(_devFee);
sellTotalFee = _sellLiquidityFee+_sellMarketingFee+_sellDevFee;
require(totalFee<=2000, "Too High Fee");
}
function setTransferFeePercentages(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee)
external onlyOwner()
{
_tfrLiquidityFee = _liquidityFee;
_tfrMarketingFee = _marketingFee;
_tfrDevFee = _devFee;
transferTotalFee = _tfrLiquidityFee+_tfrMarketingFee+_tfrDevFee;
uint256 totalFee = _liquidityFee.add(_marketingFee).add(_devFee);
require(totalFee<=200, "Too High Fee");
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner()
{
_maxTxAmount = maxTxAmount;
require(_maxTxAmount>=_tTotal.div(5), "Too low limit");
}
function setMinimumTokensBeforeSwap(uint256 _minimumTokensBeforeSwap) external onlyOwner()
{
minimumTokensBeforeSwap = _minimumTokensBeforeSwap;
}
function setMarketingAddress(address _marketingAddress) external onlyOwner()
{
marketingAddress = payable(_marketingAddress);
}
function setDevAddress(address _devAddress) external onlyOwner()
{
devAddress = payable(_devAddress);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner
{
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function excludeWalletsFromWhales() private
{
_isExcludedFromWhale[owner()]=true;
_isExcludedFromWhale[address(this)]=true;
_isExcludedFromWhale[uniswapV2Pair]=true;
_isExcludedFromWhale[devAddress]=true;
_isExcludedFromWhale[marketingAddress]=true;
}
function checkForWhale(address from, address to, uint256 amount) private view
{
uint256 newBalance = balanceOf(to).add(amount);
if(!_isExcludedFromWhale[from] && !_isExcludedFromWhale[to])
{
require(newBalance <= _walletHoldingMaxLimit, "Exceeding max tokens limit in the wallet");
}
if(from==uniswapV2Pair && !_isExcludedFromWhale[to])
{
require(newBalance <= _walletHoldingMaxLimit, "Exceeding max tokens limit in the wallet");
}
}
function setExcludedFromWhale(address account, bool _enabled) public onlyOwner
{
_isExcludedFromWhale[account] = _enabled;
}
function setWalletMaxHoldingLimit(uint256 _amount) public onlyOwner
{
_walletHoldingMaxLimit = _amount;
require(_walletHoldingMaxLimit > _tTotal.div(100).mul(1), "Too less limit"); //min 1%
}
function rescueStuckBalance () public onlyOwner {
(bool success, ) = msg.sender.call{value: address(this).balance}("");
require(success, "Transfer failed.");
}
receive() external payable {}
}
Read Contract
_buyDevFee 0x62015852 → uint256
_buyLiquidityFee 0xdc44b6a0 → uint256
_buyMarketingFee 0xc5d24189 → uint256
_maxTxAmount 0x7d1db4a5 → uint256
_sellDevFee 0xc9cf7789 → uint256
_sellLiquidityFee 0x88790a68 → uint256
_sellMarketingFee 0xc8607952 → uint256
_tfrDevFee 0x34c56c28 → uint256
_tfrLiquidityFee 0x7957bd59 → uint256
_tfrMarketingFee 0x85ab2b9e → uint256
_walletHoldingMaxLimit 0x72b28e45 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyTotalFee 0x3705b392 → uint256
decimals 0x313ce567 → uint8
devAddress 0x3ad10ef6 → address
isExcludedFromFee 0x5342acb4 → bool
isOpen 0x47535d7b → bool
marketingAddress 0xa5ece941 → address
minimumTokensBeforeSwapAmount 0xa073d37f → uint256
name 0x06fdde03 → string
newOwner 0xd4ee1d90 → address
owner 0x8da5cb5b → address
router 0xf887ea40 → address
sellTotalFee 0x00afb325 → uint256
swapAndLiquifyEnabled 0x4a74bb02 → bool
symbol 0x95d89b41 → string
totalFees 0x13114a9d → uint256
totalSupply 0x18160ddd → uint256
transferTotalFee 0xb863864c → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
Write Contract 22 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromFee 0x437823ec
address account
includeInFee 0xea2f0b37
address account
includeToWhiteList 0x4b880e88
address _address
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
openTrade 0xfb201b1d
No parameters
renounceOwnership 0x715018a6
No parameters
rescueStuckBalance 0x6fee4f7a
No parameters
setBuyFeePercentages 0x90a3dd9b
uint256 _liquidityFee
uint256 _marketingFee
uint256 _devFee
setDevAddress 0xd0d41fe1
address _devAddress
setExcludedFromWhale 0x4e3c06b1
address account
bool _enabled
setMarketingAddress 0x906e9dd0
address _marketingAddress
setMaxTxAmount 0xec28438a
uint256 maxTxAmount
setMinimumTokensBeforeSwap 0xaee50b1e
uint256 _minimumTokensBeforeSwap
setSellFeePercentages 0xd6a694f5
uint256 _liquidityFee
uint256 _marketingFee
uint256 _devFee
setSwapAndLiquifyEnabled 0xc49b9a80
bool _enabled
setTransferFeePercentages 0x12eb7c79
uint256 _liquidityFee
uint256 _marketingFee
uint256 _devFee
setWalletMaxHoldingLimit 0x44d4225f
uint256 _amount
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