Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xE23311294467654E0CaB14cD32A169A41be5ca8E
Balance 0.040025 ETH
Nonce 1
Code Size 16871 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

16871 bytes
0x60806040526004361061028c5760003560e01c80636ed705f81161015a578063b2bdfa7b116100c1578063dfbf53ae1161007a578063dfbf53ae146109d5578063e0f07e3a14610a00578063e745b25414610a2b578063ea2f0b3714610a56578063f2fde38b14610a7f578063fa716d1314610aa857610293565b8063b2bdfa7b146108c5578063b7e03264146108f0578063c49b9a801461091b578063c57a6c4414610944578063d12a76881461096d578063dd62ed3e1461099857610293565b80638cf57cb9116101135780638cf57cb9146107a15780638da5cb5b146107cc578063906e9dd0146107f757806395d89b4114610820578063a457c2d71461084b578063a9059cbb1461088857610293565b80636ed705f8146106a157806370a08231146106cc578063715018a61461070957806375e924e714610720578063889b408c1461074b5780638c0b5e221461077657610293565b806339509351116101fe57806350ccd796116101b757806350ccd796146105a55780635e00e679146105ce5780635eb04347146105f75780635ec01e4d1461062057806366b77e8a1461064b57806369d1d03a1461067657610293565b806339509351146104935780633b3dca76146104d0578063437823ec146104fb57806349bd5a5e146105245780634a74bb021461054f57806350a368bd1461057a57610293565b806318160ddd1161025057806318160ddd1461038157806318cefa36146103ac57806323b872dd146103e9578063313ce5671461042657806333759dfb1461045157806333a99e041461047c57610293565b8063043a28ee1461029857806306e8781a146102c357806306fdde03146102ee578063095ea7b3146103195780631694505e1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610ad3565b6040516102ba9190613254565b60405180910390f35b3480156102cf57600080fd5b506102d8610ad9565b6040516102e59190613254565b60405180910390f35b3480156102fa57600080fd5b50610303610adf565b6040516103109190613308565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b91906133b9565b610b71565b60405161034d9190613414565b60405180910390f35b34801561036257600080fd5b5061036b610b8f565b604051610378919061348e565b60405180910390f35b34801561038d57600080fd5b50610396610bb3565b6040516103a39190613254565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce91906134a9565b610bbd565b6040516103e091906134e5565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613500565b610bfc565b60405161041d9190613414565b60405180910390f35b34801561043257600080fd5b5061043b610cd5565b604051610448919061356f565b60405180910390f35b34801561045d57600080fd5b50610466610cec565b6040516104739190613254565b60405180910390f35b34801561048857600080fd5b50610491610cf2565b005b34801561049f57600080fd5b506104ba60048036038101906104b591906133b9565b610e18565b6040516104c79190613414565b60405180910390f35b3480156104dc57600080fd5b506104e5610ecb565b6040516104f29190613254565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061358a565b610ed1565b005b34801561053057600080fd5b50610539610fc1565b60405161054691906134e5565b60405180910390f35b34801561055b57600080fd5b50610564610fe5565b6040516105719190613414565b60405180910390f35b34801561058657600080fd5b5061058f610ff8565b60405161059c9190613254565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c791906134a9565b610ffe565b005b3480156105da57600080fd5b506105f560048036038101906105f091906135f5565b61109d565b005b34801561060357600080fd5b5061061e600480360381019061061991906134a9565b611176565b005b34801561062c57600080fd5b50610635611215565b6040516106429190613254565b60405180910390f35b34801561065757600080fd5b50610660611315565b60405161066d9190613254565b60405180910390f35b34801561068257600080fd5b5061068b61131b565b6040516106989190613254565b60405180910390f35b3480156106ad57600080fd5b506106b6611321565b6040516106c39190613254565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee919061358a565b611327565b6040516107009190613254565b60405180910390f35b34801561071557600080fd5b5061071e611370565b005b34801561072c57600080fd5b506107356114c3565b6040516107429190613254565b60405180910390f35b34801561075757600080fd5b506107606114c9565b60405161076d9190613254565b60405180910390f35b34801561078257600080fd5b5061078b6114cf565b6040516107989190613254565b60405180910390f35b3480156107ad57600080fd5b506107b66114d5565b6040516107c39190613631565b60405180910390f35b3480156107d857600080fd5b506107e16114fb565b6040516107ee91906134e5565b60405180910390f35b34801561080357600080fd5b5061081e600480360381019061081991906135f5565b611524565b005b34801561082c57600080fd5b506108356115fd565b6040516108429190613308565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d91906133b9565b61168f565b60405161087f9190613414565b60405180910390f35b34801561089457600080fd5b506108af60048036038101906108aa91906133b9565b61175c565b6040516108bc9190613414565b60405180910390f35b3480156108d157600080fd5b506108da61177a565b6040516108e791906134e5565b60405180910390f35b3480156108fc57600080fd5b506109056117a0565b60405161091291906134e5565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d9190613678565b6117ca565b005b34801561095057600080fd5b5061096b600480360381019061096691906134a9565b6118b3565b005b34801561097957600080fd5b50610982611952565b60405161098f9190613254565b60405180910390f35b3480156109a457600080fd5b506109bf60048036038101906109ba91906136a5565b611958565b6040516109cc9190613254565b60405180910390f35b3480156109e157600080fd5b506109ea6119df565b6040516109f791906134e5565b60405180910390f35b348015610a0c57600080fd5b50610a15611a05565b604051610a229190613631565b60405180910390f35b348015610a3757600080fd5b50610a40611a2b565b604051610a4d9190613254565b60405180910390f35b348015610a6257600080fd5b50610a7d6004803603810190610a78919061358a565b611a31565b005b348015610a8b57600080fd5b50610aa66004803603810190610aa1919061358a565b611b21565b005b348015610ab457600080fd5b50610abd611ce2565b604051610aca9190613254565b60405180910390f35b60135481565b600f5481565b606060018054610aee90613714565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1a90613714565b8015610b675780601f10610b3c57610100808354040283529160200191610b67565b820191906000526020600020905b815481529060010190602001808311610b4a57829003601f168201915b5050505050905090565b6000610b85610b7e611d46565b8484611d4e565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b60078181548110610bcd57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c09848484611f17565b610cca84610c15611d46565b610cc58560405180606001604052806028815260200161416560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c7b611d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c729092919063ffffffff16565b611d4e565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60185481565b610cfa611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90613791565b60405180910390fd5b610d8f611215565b601e819055506007601e5481548110610dab57610daa6137b1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610ec1610e25611d46565b84610ebc8560056000610e36611d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b611d4e565b6001905092915050565b601e5481565b610ed9611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90613791565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f0000000000000000000000007bf1bc920e0e21e3b83a2ab589099191f0c441ea81565b601a60159054906101000a900460ff1681565b60105481565b611006611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a90613791565b60405180910390fd5b8060098190555050565b6110a5611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112990613791565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61117e611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290613791565b60405180910390fd5b80601c8190555050565b60008043423360405160200161122b9190613828565b6040516020818303038152906040528051906020012060001c61124e91906138a1565b45424160405160200161126191906138fb565b6040516020818303038152906040528051906020012060001c61128491906138a1565b44426112909190613916565b61129a9190613916565b6112a49190613916565b6112ae9190613916565b6112b89190613916565b6040516020016112c8919061398d565b6040516020818303038152906040528051906020012060001c9050600780549050600780549050826112fa91906138a1565b61130491906139a8565b8161130f9190613a02565b91505090565b60115481565b60155481565b60165481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611378611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613791565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b60175481565b601c5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61152c611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090613791565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606002805461160c90613714565b80601f016020809104026020016040519081016040528092919081815260200182805461163890613714565b80156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b5050505050905090565b600061175261169c611d46565b8461174d8560405180606001604052806025815260200161418d60259139600560006116c6611d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c729092919063ffffffff16565b611d4e565b6001905092915050565b6000611770611769611d46565b8484611f17565b6001905092915050565b601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117d2611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185690613791565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516118a89190613414565b60405180910390a150565b6118bb611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90613791565b60405180910390fd5b80601b8190555050565b601b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611a39611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90613791565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b29611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad90613791565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613aa8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b6000808284611cf79190613916565b905083811015611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3390613b14565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db490613ba6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2390613c38565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f0a9190613254565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7d90613cca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec90613d5c565b60405180910390fd5b611ffd6114fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561206b575061203b6114fb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120b657601c548111156120b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ac90613dc8565b60405180910390fd5b5b60006120c130611327565b90506000601b5482101590508080156120e75750601d60009054906101000a900460ff16155b801561213f57507f0000000000000000000000007bf1bc920e0e21e3b83a2ab589099191f0c441ea73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121575750601a60159054906101000a900460ff165b1561235f576001601d60006101000a81548160ff02191690831515021790555060006121b66018546121a8612199601554601454611ce890919063ffffffff16565b86612cd690919063ffffffff16565b612d5090919063ffffffff16565b905060004790506121c682612d9a565b60006121db8247612fd790919063ffffffff16565b9050600061221c6121f9601454601554611ce890919063ffffffff16565b61220e60145485612cd690919063ffffffff16565b612d5090919063ffffffff16565b905060006122338284612fd790919063ffffffff16565b9050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561229d573d6000803e3d6000fd5b50601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612306573d6000803e3d6000fd5b5060006123326018546123246017548b612cd690919063ffffffff16565b612d5090919063ffffffff16565b905061233d81613021565b6000601d60006101000a81548160ff0219169083151502179055505050505050505b6000601d60009054906101000a900460ff16159050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124155750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561241f57600090505b7f0000000000000000000000007bf1bc920e0e21e3b83a2ab589099191f0c441ea73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156124c757507f0000000000000000000000007bf1bc920e0e21e3b83a2ab589099191f0c441ea73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124d157600090505b80156125da577f0000000000000000000000007bf1bc920e0e21e3b83a2ab589099191f0c441ea73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361255857600f54600a81905550601054600b81905550601254600d81905550601154600c81905550601354600e819055505b7f0000000000000000000000007bf1bc920e0e21e3b83a2ab589099191f0c441ea73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125d957601454600a81905550601554600b81905550601754600d81905550601654600c81905550601854600e819055505b5b80156129f657600061260a60646125fc600e5488612cd690919063ffffffff16565b612d5090919063ffffffff16565b90506000612637600e54612629600c5485612cd690919063ffffffff16565b612d5090919063ffffffff16565b9050600061264e8388612fd790919063ffffffff16565b90506126bc8760405180606001604052806026815260200161413f60269139600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c729092919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275181600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e683600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287b82600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161291b9190613254565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129809190613254565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129e69190613254565b60405180910390a3505050612ba0565b612a628460405180606001604052806026815260200161413f60269139600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c729092919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612af784600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b979190613254565b60405180910390a35b7f0000000000000000000000007bf1bc920e0e21e3b83a2ab589099191f0c441ea73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c6a57600954612bff86611327565b1115612c69576007859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b505050505050565b6000838311158290612cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb19190613308565b60405180910390fd5b5060008385612cc99190613a02565b9050809150509392505050565b6000808303612ce85760009050612d4a565b60008284612cf691906139a8565b9050828482612d0591906138a1565b14612d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3c90613e5a565b60405180910390fd5b809150505b92915050565b6000612d9283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130f7565b905092915050565b6000600267ffffffffffffffff811115612db757612db6613e7a565b5b604051908082528060200260200182016040528015612de55781602001602082028036833780820191505090505b5090503081600081518110612dfd57612dfc6137b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec69190613ebe565b81600181518110612eda57612ed96137b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f3f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d4e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fa1959493929190613fe4565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b505050505050565b600061301983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c72565b905092915050565b6001601a60146101000a81548160ff0219169083151502179055506000613052600283612d5090919063ffffffff16565b905060006130698284612fd790919063ffffffff16565b9050600047905061307983612d9a565b600061308e8247612fd790919063ffffffff16565b905061309a838261315a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516130cd9392919061403e565b60405180910390a1505050506000601a60146101000a81548160ff02191690831515021790555050565b6000808311829061313e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131359190613308565b60405180910390fd5b506000838561314d91906138a1565b9050809150509392505050565b613185307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d4e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806131cf6114fb565b426040518863ffffffff1660e01b81526004016131f196959493929190614075565b60606040518083038185885af115801561320f573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061323491906140eb565b5050505050565b6000819050919050565b61324e8161323b565b82525050565b60006020820190506132696000830184613245565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132a957808201518184015260208101905061328e565b838111156132b8576000848401525b50505050565b6000601f19601f8301169050919050565b60006132da8261326f565b6132e4818561327a565b93506132f481856020860161328b565b6132fd816132be565b840191505092915050565b6000602082019050818103600083015261332281846132cf565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061335a8261332f565b9050919050565b61336a8161334f565b811461337557600080fd5b50565b60008135905061338781613361565b92915050565b6133968161323b565b81146133a157600080fd5b50565b6000813590506133b38161338d565b92915050565b600080604083850312156133d0576133cf61332a565b5b60006133de85828601613378565b92505060206133ef858286016133a4565b9150509250929050565b60008115159050919050565b61340e816133f9565b82525050565b60006020820190506134296000830184613405565b92915050565b6000819050919050565b600061345461344f61344a8461332f565b61342f565b61332f565b9050919050565b600061346682613439565b9050919050565b60006134788261345b565b9050919050565b6134888161346d565b82525050565b60006020820190506134a3600083018461347f565b92915050565b6000602082840312156134bf576134be61332a565b5b60006134cd848285016133a4565b91505092915050565b6134df8161334f565b82525050565b60006020820190506134fa60008301846134d6565b92915050565b6000806000606084860312156135195761351861332a565b5b600061352786828701613378565b935050602061353886828701613378565b9250506040613549868287016133a4565b9150509250925092565b600060ff82169050919050565b61356981613553565b82525050565b60006020820190506135846000830184613560565b92915050565b6000602082840312156135a05761359f61332a565b5b60006135ae84828501613378565b91505092915050565b60006135c28261332f565b9050919050565b6135d2816135b7565b81146135dd57600080fd5b50565b6000813590506135ef816135c9565b92915050565b60006020828403121561360b5761360a61332a565b5b6000613619848285016135e0565b91505092915050565b61362b816135b7565b82525050565b60006020820190506136466000830184613622565b92915050565b613655816133f9565b811461366057600080fd5b50565b6000813590506136728161364c565b92915050565b60006020828403121561368e5761368d61332a565b5b600061369c84828501613663565b91505092915050565b600080604083850312156136bc576136bb61332a565b5b60006136ca85828601613378565b92505060206136db85828601613378565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061372c57607f821691505b60208210810361373f5761373e6136e5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061377b60208361327a565b915061378682613745565b602082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160601b9050919050565b60006137f8826137e0565b9050919050565b600061380a826137ed565b9050919050565b61382261381d8261334f565b6137ff565b82525050565b60006138348284613811565b60148201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138ac8261323b565b91506138b78361323b565b9250826138c7576138c6613843565b5b828204905092915050565b60006138dd826137ed565b9050919050565b6138f56138f0826135b7565b6138d2565b82525050565b600061390782846138e4565b60148201915081905092915050565b60006139218261323b565b915061392c8361323b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561396157613960613872565b5b828201905092915050565b6000819050919050565b6139876139828261323b565b61396c565b82525050565b60006139998284613976565b60208201915081905092915050565b60006139b38261323b565b91506139be8361323b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139f7576139f6613872565b5b828202905092915050565b6000613a0d8261323b565b9150613a188361323b565b925082821015613a2b57613a2a613872565b5b828203905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a9260268361327a565b9150613a9d82613a36565b604082019050919050565b60006020820190508181036000830152613ac181613a85565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613afe601b8361327a565b9150613b0982613ac8565b602082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b9060248361327a565b9150613b9b82613b34565b604082019050919050565b60006020820190508181036000830152613bbf81613b83565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c2260228361327a565b9150613c2d82613bc6565b604082019050919050565b60006020820190508181036000830152613c5181613c15565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613cb460258361327a565b9150613cbf82613c58565b604082019050919050565b60006020820190508181036000830152613ce381613ca7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d4660238361327a565b9150613d5182613cea565b604082019050919050565b60006020820190508181036000830152613d7581613d39565b9050919050565b7f5472616e73616374696f6e2073697a65206c696d697420726561636865640000600082015250565b6000613db2601e8361327a565b9150613dbd82613d7c565b602082019050919050565b60006020820190508181036000830152613de181613da5565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e4460218361327a565b9150613e4f82613de8565b604082019050919050565b60006020820190508181036000830152613e7381613e37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613eb881613361565b92915050565b600060208284031215613ed457613ed361332a565b5b6000613ee284828501613ea9565b91505092915050565b6000819050919050565b6000613f10613f0b613f0684613eeb565b61342f565b61323b565b9050919050565b613f2081613ef5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f5b8161334f565b82525050565b6000613f6d8383613f52565b60208301905092915050565b6000602082019050919050565b6000613f9182613f26565b613f9b8185613f31565b9350613fa683613f42565b8060005b83811015613fd7578151613fbe8882613f61565b9750613fc983613f79565b925050600181019050613faa565b5085935050505092915050565b600060a082019050613ff96000830188613245565b6140066020830187613f17565b81810360408301526140188186613f86565b905061402760608301856134d6565b6140346080830184613245565b9695505050505050565b60006060820190506140536000830186613245565b6140606020830185613245565b61406d6040830184613245565b949350505050565b600060c08201905061408a60008301896134d6565b6140976020830188613245565b6140a46040830187613f17565b6140b16060830186613f17565b6140be60808301856134d6565b6140cb60a0830184613245565b979650505050505050565b6000815190506140e58161338d565b92915050565b6000806000606084860312156141045761410361332a565b5b6000614112868287016140d6565b9350506020614123868287016140d6565b9250506040614134868287016140d6565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122041e839e0742fccf4649e6c79499784e1615583c94ec3351b62e1a96828e5c74764736f6c634300080d0033

Verified Source Code Partial Match

Compiler: v0.8.13+commit.abaa5c0e EVM: london Optimization: No
CRNOTOKEN.sol 753 lines
/**
 ██████╗██████╗ ███╗   ██╗ ██████╗ 
██╔════╝██╔══██╗████╗  ██║██╔═══██╗
██║     ██████╔╝██╔██╗ ██║██║   ██║
██║     ██╔══██╗██║╚██╗██║██║   ██║
╚██████╗██║  ██║██║ ╚████║╚██████╔╝
 ╚═════╝╚═╝  ╚═╝╚═╝  ╚═══╝ ╚═════╝ 
*/

//SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

interface IERC20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

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

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

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

        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
}

contract Context {
    constructor () { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address) {
        return msg.sender;
    }
}

abstract 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 () {
       
        _owner = msg.sender ;
        emit OwnershipTransferred(address(0), _owner);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender() , "Ownable: caller is not the owner");
        _;
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


contract ERC20Detailed {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory tname, string memory tsymbol, uint8 tdecimals) {
        _name = tname;
        _symbol = tsymbol;
        _decimals = tdecimals;
        
    }
    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;
    }
}



library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using SafeMath for uint;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}



interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


contract CRNOTOKEN is Context, Ownable, IERC20, ERC20Detailed {
  using SafeERC20 for IERC20;
  using Address for address;
  using SafeMath for uint256;
  
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    
    mapping (address => uint) internal _balances;
    mapping (address => mapping (address => uint)) internal _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address[] public lotteryEligibles;   
    uint256 internal _totalSupply;

    uint256 public lotteryEligibilityLimit = 100 * 10**18;

    uint256 private marketingFee;
    uint256 private rewardFee;
    uint256 private burnFee;
    uint256 private liquidityFee;
    uint256 private totalFee;

    uint256 public BUYmarketingFee = 2;
    uint256 public BUYrewardFee = 2;
    uint256 public BUYburnFee = 1;
    uint256 public BUYliquidityFee = 1;
    uint256 public BUYtotalFee = BUYliquidityFee.add(BUYmarketingFee).add(BUYrewardFee).add(BUYburnFee);

    uint256 public SELLmarketingFee = 6;
    uint256 public SELLrewardFee = 3;
    uint256 public SELLburnFee = 1;
    uint256 public SELLliquidityFee = 2;
    uint256 public SELLtotalFee = SELLliquidityFee.add(SELLmarketingFee).add(SELLrewardFee).add(SELLburnFee);


    address payable public marketingaddress = payable(0x64fBA66D58442bE0605d3f44b8680B566f667505);
    address payable public rewardAddress = payable(0xc69DA5a56a5c0e9d34d35C88e9619008BA5e5200);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
   

    uint256 public numTokensSellToAddToLiquidity = 1000 * 10**18;
    uint256 public maxTxAmount = 1000000 * 10**18;
   
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
     event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    bool private swapping;
    
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
  
    address public _owner;
  
    constructor () ERC20Detailed("Chronoly", "CRNO", 18) {
      _owner = msg.sender ;
    _totalSupply = 1000000000 * (10**18);
    
	_balances[_owner] = _totalSupply;
	//uniswapv3 router = 0xE592427A0AEce92De3Edee1F18E0157C05861564
	 IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;


          //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingaddress] = true;
        _isExcludedFromFee[rewardAddress] = true;

     emit Transfer(address(0), _msgSender(), _totalSupply);
  }
  
    function totalSupply() public view override returns (uint) {
        return _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) public override  returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address towner, address spender) public view override returns (uint) {
        return _allowances[towner][spender];
    }
    function approve(address spender, uint amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint 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, uint addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setMarketingAddress(address payable wallet) external onlyOwner
    {
        marketingaddress = wallet;
    }

    function setRewardAddress(address payable wallet) external onlyOwner
    {
        rewardAddress = wallet;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function changeNumTokensSellToAddToLiquidity(uint256 _numTokensSellToAddToLiquidity) external onlyOwner
    {
        numTokensSellToAddToLiquidity = _numTokensSellToAddToLiquidity;
    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function changeLotteryEligibilityLimit(uint256 _number) external onlyOwner
    {
        lotteryEligibilityLimit = _number;
    }

        function changeMaxTxLimit(uint256 _number) external onlyOwner
    {
        maxTxAmount = _number;
    }
   
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
    function _transfer(address sender, address recipient, uint amount) internal{

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(sender != owner() && recipient != owner())
        {
            require(amount <= maxTxAmount, "Transaction size limit reached");
        }

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !swapping &&
            sender != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapping = true;
           
            uint256 walletTokens = contractTokenBalance.mul(SELLmarketingFee.add(SELLrewardFee)).div(SELLtotalFee);
            uint256 contractBalance = address(this).balance;
            swapTokensForEth(walletTokens);
            uint256 newBalance = address(this).balance.sub(contractBalance);
            uint256 marketingShare = newBalance.mul(SELLmarketingFee).div(SELLrewardFee.add(SELLmarketingFee));
            uint256 rewardShare = newBalance.sub(marketingShare);
            payable(marketingaddress).transfer(marketingShare);
            payable(rewardAddress).transfer(rewardShare);

            uint256 swapTokens = contractTokenBalance.mul(SELLliquidityFee).div(SELLtotalFee);
            swapAndLiquify(swapTokens);

            swapping = false;

        }
        
         //indicates if fee should be deducted from transfer
        bool takeFee = !swapping;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }

        if(sender != uniswapV2Pair && recipient != uniswapV2Pair)
        {
            takeFee = false;
        }
        if(takeFee){
        if(sender == uniswapV2Pair)
        {
            marketingFee = BUYmarketingFee;
            rewardFee = BUYrewardFee;
            liquidityFee = BUYliquidityFee;
            burnFee = BUYburnFee;
            totalFee = BUYtotalFee;
           
        }
        if(recipient == uniswapV2Pair)
        {
            marketingFee = SELLmarketingFee;
            rewardFee = SELLrewardFee;
            liquidityFee = SELLliquidityFee;
            burnFee = SELLburnFee;
            totalFee = SELLtotalFee;

        }
        }
       
        if(takeFee)
        {
            uint256 taxAmount = amount.mul(totalFee).div(100);
            uint256 burnAmount = taxAmount.mul(burnFee).div(totalFee);
            uint256 TotalSent = amount.sub(taxAmount);
            _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(TotalSent);
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            _balances[address(0)] = _balances[address(0)].add(burnAmount);
            emit Transfer(sender, recipient, TotalSent);
            emit Transfer(sender, address(this), taxAmount);
            emit Transfer(sender, address(0), burnAmount);
        }
        else
        {
            _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }

        if(sender == uniswapV2Pair)
        {
             if(balanceOf(recipient) > lotteryEligibilityLimit)
                {lotteryEligibles.push(recipient);}
        }
       
    }
    uint256 public rand;
    address public winner;
    
    function selectWinner() external onlyOwner
    {
        rand = random();
        winner  = lotteryEligibles[rand];

    }

    function random() public view returns(uint256){
        uint256 seed = uint256(keccak256(abi.encodePacked(
        block.timestamp + block.difficulty +
        ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (block.timestamp)) +
        block.gaslimit + 
        ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (block.timestamp)) +
        block.number
    )));

    return (seed - ((seed / lotteryEligibles.length) * lotteryEligibles.length));

}

    function showWinner() external view returns(address)
    {
   // selectWinner();
    return winner;
    }


     function swapAndLiquify(uint256 tokens) private lockTheSwap {
       
       // split the contract balance into halves
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

      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 swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

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

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

  
}

Read Contract

BUYburnFee 0x66b77e8a → uint256
BUYliquidityFee 0xfa716d13 → uint256
BUYmarketingFee 0x06e8781a → uint256
BUYrewardFee 0x50a368bd → uint256
BUYtotalFee 0x043a28ee → uint256
SELLburnFee 0x6ed705f8 → uint256
SELLliquidityFee 0x889b408c → uint256
SELLmarketingFee 0xe745b254 → uint256
SELLrewardFee 0x69d1d03a → uint256
SELLtotalFee 0x33759dfb → uint256
_owner 0xb2bdfa7b → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
lotteryEligibilityLimit 0x75e924e7 → uint256
lotteryEligibles 0x18cefa36 → address
marketingaddress 0xe0f07e3a → address
maxTxAmount 0x8c0b5e22 → uint256
name 0x06fdde03 → string
numTokensSellToAddToLiquidity 0xd12a7688 → uint256
owner 0x8da5cb5b → address
rand 0x3b3dca76 → uint256
random 0x5ec01e4d → uint256
rewardAddress 0x8cf57cb9 → address
showWinner 0xb7e03264 → address
swapAndLiquifyEnabled 0x4a74bb02 → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
winner 0xdfbf53ae → address

Write Contract 16 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
changeLotteryEligibilityLimit 0x50ccd796
uint256 _number
changeMaxTxLimit 0x5eb04347
uint256 _number
changeNumTokensSellToAddToLiquidity 0xc57a6c44
uint256 _numTokensSellToAddToLiquidity
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromFee 0x437823ec
address account
includeInFee 0xea2f0b37
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
selectWinner 0x33a99e04
No parameters
setMarketingAddress 0x906e9dd0
address wallet
setRewardAddress 0x5e00e679
address wallet
setSwapAndLiquifyEnabled 0xc49b9a80
bool _enabled
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