Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xDa4c27a9fbdDe1f5F3aF0398396be4644dCEC715
Balance 0 ETH
Nonce 1
Code Size 24333 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

24333 bytes
0x608060405234801561001057600080fd5b50600436106105ed5760003560e01c80637be4dba81161031b578063b5602dd6116101a8578063eb9c7326116100f4578063f6b3a7c1116100ad578063f9029ee311610087578063f9029ee314610d1f578063fa1aa9a414610d32578063fbcbc0f114610d3b578063ff6fb17d14610ea957600080fd5b8063f6b3a7c114610ce1578063f80311cc14610d03578063f8ded92614610d0c57600080fd5b8063eb9c732614610c83578063ee62225314610c8c578063efb6836414610c9f578063f2fde38b14610cb2578063f4a7ee7314610cc5578063f5a62e1914610cce57600080fd5b8063d5c0ff7011610161578063e0a3033a1161013b578063e0a3033a14610c41578063e5a6399414610c54578063e8c2818714610c68578063e8e28ce714610c7057600080fd5b8063d5c0ff7014610be2578063db10582714610bf5578063dd62ed3e14610c0857600080fd5b8063b5602dd614610b7a578063ba785bac14610b8d578063c867392814610ba0578063cd25220114610bb3578063d360af9214610bc6578063d4f26c5114610bcf57600080fd5b80639517689211610267578063a7ccabdf11610220578063ad7e01be116101fa578063ad7e01be14610b36578063ada8782e14610b3e578063b22cc3ee14610b47578063b4a6496614610b5a57600080fd5b8063a7ccabdf14610b07578063a9059cbb14610b1a578063acddcfc114610b2d57600080fd5b80639517689214610ab557806395d89b4114610ac85780639af1d35a14610ad05780639b43634814610ad9578063a457c2d714610ae1578063a5623e8714610af457600080fd5b806386bc79d4116102d45780638da5cb5b116102ae5780638da5cb5b14610a745780638ea496ad14610a8757806390b841ec14610a9a57806393198dfc14610aa257600080fd5b806386bc79d414610a3a57806389bb06fa14610a4d5780638d64ed0b14610a6157600080fd5b80637be4dba8146109a55780637f73b810146109b25780637f897f86146109c55780637fbe9ba614610a1557806382aa7c6814610a1e578063847d6d4c14610a3157600080fd5b8063366c3fe01161049957806359ef0781116103e55780636ef0f37f1161039e57806371ca337d1161037857806371ca337d146109795780637452b3bc1461098157806375c451a3146109895780637824407f1461099c57600080fd5b80636ef0f37f1461094b57806370a082311461095e578063715018a61461097157600080fd5b806359ef0781146108c357806362c02397146108d6578063644a92f3146108ff57806366a320cd146109125780636c6eb9d1146109255780636dd7d8ea1461093857600080fd5b806342966c68116104525780634eb277921161042c5780634eb27792146108775780634febf53d1461088a5780635039ca071461089d5780635812a267146108b057600080fd5b806342966c68146108485780634437152a1461085b5780634580ef361461086e57600080fd5b8063366c3fe0146107de57806339509351146107f15780633aa844df146108045780633d6e3bee1461080c5780633da4e52714610815578063412800081461082857600080fd5b80631e0e319011610558578063264cbb48116105115780632e4ab2f2116104eb5780632e4ab2f21461079a57806330af8896146107a3578063313ce567146107b65780633359b272146107cb57600080fd5b8063264cbb481461075757806327f84a231461076a5780632b112e491461077d57600080fd5b80631e0e3190146106ef5780631ec26e82146107025780631fb6edfc14610715578063219653511461072857806321ad189e1461073b57806323b872dd1461074457600080fd5b80630c3d29a2116105aa5780630c3d29a21461068f5780630f8cd083146106a557806311d4e30c146106ae578063139f994a146106c157806318160ddd146106d45780631c35a04e146106dc57600080fd5b8063026b1d5f146105f257806306fdde031461061c578063085d29701461063157806308f822f614610646578063095ea7b3146106595780630bff8a501461067c575b600080fd5b600d546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b610624610ed5565b6040516106139190615b04565b61064461063f3660046159fd565b610f67565b005b6106446106543660046159fd565b610fcb565b61066c6106673660046158f3565b61112e565b6040519015158152602001610613565b61064461068a3660046159fd565b611145565b6106976111e4565b604051908152602001610613565b61069760295481565b6106446106bc3660046159fd565b611266565b6106446106cf3660046157b6565b6112f1565b603054610697565b6106446106ea3660046158f3565b611358565b6106446106fd3660046159fd565b6113db565b6106446107103660046159a5565b61149f565b6106446107233660046157b6565b611557565b61066c6107363660046157b6565b611633565b610697602b5481565b61066c610752366004615829565b611657565b6106446107653660046159fd565b6116aa565b6106446107783660046159fd565b611799565b61078561183d565b60408051928352602083019190915201610613565b61069760315481565b6106446107b13660046159a5565b611914565b60025460405160ff9091168152602001610613565b6106446107d93660046157b6565b611962565b6106446107ec3660046158f3565b6119e1565b61066c6107ff3660046158f3565b611aeb565b610644611b22565b610697602f5481565b6106446108233660046159fd565b611b73565b61083b6108363660046157f0565b611bce565b6040516106139190615af6565b6106446108563660046159fd565b611c76565b6106446108693660046157b6565b611e3b565b610697602c5481565b6106446108853660046157b6565b611e8d565b6106446108983660046157b6565b6120b3565b6106446108ab3660046158c5565b6121d8565b6106446108be3660046159fd565b612297565b61066c6108d13660046157f0565b6123fc565b61064433600090815260336020526040902060080180546001600160a01b03191661dead179055565b61064461090d3660046158c5565b612442565b6106446109203660046159fd565b61249d565b6106446109333660046159fd565b6124f8565b6106446109463660046157b6565b612654565b6106446109593660046157b6565b612889565b61069761096c3660046157b6565b61295d565b6106446129ba565b610697612a45565b610644612a68565b6106446109973660046159fd565b612af1565b61069760305481565b60095461066c9060ff1681565b6106446109c03660046159fd565b612d14565b6109d86109d33660046157b6565b612d6f565b6040805197151588529515156020880152931515948601949094529015156060850152608084015260a083019190915260c082015260e001610613565b61069760255481565b610644610a2c3660046159fd565b612e23565b610697602a5481565b610644610a483660046159fd565b612e86565b60085461066c90600160f01b900460ff1681565b6013546105ff906001600160a01b031681565b6011546105ff906001600160a01b031681565b61066c610a953660046157b6565b612f02565b610644612f28565b610644610ab0366004615a7c565b6130fc565b610644610ac3366004615a2f565b613420565b6106246135db565b61069760325481565b6106446135ea565b61066c610aef3660046158f3565b613631565b610644610b023660046159df565b613668565b610644610b153660046157b6565b6136f2565b61066c610b283660046158f3565b613744565b61069760275481565b610644613751565b61069760285481565b610644610b553660046158c5565b6137bb565b610b6d610b68366004615829565b613848565b6040516106139190615ae8565b610644610b883660046159fd565b6138e0565b610644610b9b3660046157b6565b61395c565b610644610bae3660046157b6565b6139de565b6012546105ff906001600160a01b031681565b6105ff61dead81565b610644610bdd3660046157b6565b613aa3565b610644610bf03660046159a5565b613b60565b610644610c033660046159a5565b613bd4565b610697610c163660046157f0565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b610644610c4f3660046159fd565b613c48565b60085461066c90600160f81b900460ff1681565b610644613ca3565b610644610c7e3660046157b6565b613cf4565b61069760245481565b610644610c9a3660046159fd565b613d26565b610644610cad3660046158c5565b613d81565b610644610cc03660046157b6565b613df7565b610697602d5481565b610644610cdc3660046157b6565b613ec8565b610cf4610cef36600461586a565b613f40565b60405161061393929190615d01565b610697602e5481565b610644610d1a366004615aa8565b6140e8565b610644610d2d36600461591f565b61413c565b61069760265481565b610e9c610d493660046157b6565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a0810191909152506001600160a01b0390811660009081526033602090815260409182902082516101c081018452815460ff8082161515835261010080830482161515958401959095526201000082048116151595830195909552630100000081048516151560608301526401000000008104851615156080830152600160281b9004909316151560a0840152600181015460c0840152600281015460e08401526003810154918301919091526004810154610120830152600581015461014083015260068101546101608301526007810154610180830152600801549091166101a082015290565b6040516106139190615c2d565b610697610eb73660046157b6565b6001600160a01b031660009081526033602052604090206004015490565b606060008054610ee490615d99565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1090615d99565b8015610f5d5780601f10610f3257610100808354040283529160200191610f5d565b820191906000526020600020905b815481529060010190602001808311610f4057829003601f168201915b5050505050905090565b6009546001600160a01b03610100909104163314610fa05760405162461bcd60e51b8152600401610f9790615bbd565b60405180910390fd5b610faa601a614242565b610fc65760405162461bcd60e51b8152600401610f9790615b7b565b602a55565b6009546001600160a01b03610100909104163314610ffb5760405162461bcd60e51b8152600401610f9790615bbd565b611005600a614242565b6110215760405162461bcd60e51b8152600401610f9790615b7b565b600061102b612a45565b905060205442101561104f5760405162461bcd60e51b8152600401610f9790615b9b565b61dead6000526033602052600080516020615e9883398151915254600290611078908390615d4f565b6110829190615d4f565b8211156110a15760405162461bcd60e51b8152600401610f9790615b59565b6110ab8183615d63565b61dead60009081526033602052600080516020615e9883398151915280549091906110d7908490615d82565b909155506110e790508183615d63565b6010546001600160a01b031660009081526033602052604081206003018054909190611114908490615d37565b909155506111279050426203f480615d37565b6020555050565b600061113b338484614274565b5060015b92915050565b6009546001600160a01b036101009091041633146111755760405162461bcd60e51b8152600401610f9790615bbd565b60028110156111df5760405162461bcd60e51b815260206004820152603060248201527f70726573616c657320617265206e6576657220616c6c6f77656420746f20647560448201526f6d70206d6f7265207468616e2035302560801b6064820152608401610f97565b601955565b600d54604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561122957600080fd5b505afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190615a16565b905090565b6009546001600160a01b036101009091041633146112965760405162461bcd60e51b8152600401610f9790615bbd565b601a5481111580156112a85750600081115b6112ec5760405162461bcd60e51b815260206004820152601560248201527431b0b713ba1039b2ba103634b6b4ba103637bbb2b960591b6044820152606401610f97565b601a55565b6009546001600160a01b036101009091041633146113215760405162461bcd60e51b8152600401610f9790615bbd565b6001600160a01b03166000908152603360209081526040808320805465ff0000000000191681556002018390556036909152812055565b6009546001600160a01b036101009091041633146113885760405162461bcd60e51b8152600401610f9790615bbd565b6113926006614242565b6113ae5760405162461bcd60e51b8152600401610f9790615b7b565b6113b88142615d37565b6001600160a01b0390921660009081526033602052604090206007019190915550565b6009546001600160a01b0361010090910416331461140b5760405162461bcd60e51b8152600401610f9790615bbd565b6201518081116114745760405162461bcd60e51b815260206004820152602e60248201527f6d7573742067697665206174206c6561737420323420686f757273206265666f60448201526d3932903634b8bab4b230ba34b7b760911b6064820152608401610f97565b61147e601d614242565b61149a5760405162461bcd60e51b8152600401610f9790615b7b565b603a55565b6009546001600160a01b036101009091041633146114cf5760405162461bcd60e51b8152600401610f9790615bbd565b42601e54106115395760405162461bcd60e51b815260206004820152603060248201527f63616e2774207475726e2074686973206f666620756e74696c206175746f6d6160448201526f3a32b2103637b1b59034b99037bb32b960811b6064820152608401610f97565b60088054911515600160b81b0260ff60b81b19909216919091179055565b6115616007614242565b61157d5760405162461bcd60e51b8152600401610f9790615b7b565b6000611587612a45565b6001600160a01b0383166000908152603360205260409020600301546115ad9190615d4f565b90506115b833614390565b6115d25760095461010090046001600160a01b03166115d4565b815b60098054610100600160a81b0319166101006001600160a01b0393841602179055821660009081526033602052604090206004015481111561162f576001600160a01b03821660009081526033602052604090206004018190555b5050565b6001600160a01b031660009081526033602052604090205462010000900460ff1690565b6000611664848484614404565b506001600160a01b0384166000908152603460209081526040808320338085529252909120546116a091869161169b908690615d82565b614274565b5060019392505050565b3360006116b5612a45565b90506116c082611633565b156116dd5760405162461bcd60e51b8152600401610f9790615be2565b6001600160a01b0382166000908152603360205260409020600301546117038285615d63565b106117205760405162461bcd60e51b8152600401610f9790615b59565b61172a8184615d63565b6001600160a01b03831660009081526033602052604081206003018054909190611755908490615d82565b9091555061176590508184615d63565b603160008282546117769190615d82565b92505081905550826032600082825461178f9190615d37565b9091555050505050565b6009546001600160a01b036101009091041633146117c95760405162461bcd60e51b8152600401610f9790615bbd565b60328110156118125760405162461bcd60e51b815260206004820152601560248201527463616e2774206265206d6f7265207468616e20322560581b6044820152606401610f97565b61181c6016614242565b6118385760405162461bcd60e51b8152600401610f9790615b7b565b601655565b6031546030546000918291825b6118546003615329565b8110156118e3576000611868600383615333565b6001600160a01b03811660009081526033602052604090206003810154600190910154919250908582118061189c57508481115b156118b557603154603054975097505050505050509091565b6118bf8287615d82565b95506118cb8186615d82565b945050505080806118db90615dd4565b91505061184a565b506030546031546118f49190615d4f565b82101561190b576031546030549350935050509091565b90939092509050565b6009546001600160a01b036101009091041633146119445760405162461bcd60e51b8152600401610f9790615bbd565b60088054911515600160d01b0260ff60d01b19909216919091179055565b6001600160a01b0381163314156119af5760405162461bcd60e51b815260206004820152601160248201527031b0b713ba1039b2ba103a379039b2b63360791b6044820152606401610f97565b33600090815260336020526040902060080180546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b03610100909104163314611a115760405162461bcd60e51b8152600401610f9790615bbd565b611a1b6020614242565b611a375760405162461bcd60e51b8152600401610f9790615b7b565b6001600160a01b038216301415611a605760405162461bcd60e51b8152600401610f9790615bbd565b60115460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015611aae57600080fd5b505af1158015611ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae691906159c2565b505050565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909161113b91859061169b908690615d37565b6009546001600160a01b03610100909104163314611b525760405162461bcd60e51b8152600401610f9790615bbd565b6008805460ff60e81b198116600160e81b9182900460ff1615909102179055565b6009546001600160a01b03610100909104163314611ba35760405162461bcd60e51b8152600401610f9790615bbd565b611bad6004614242565b611bc95760405162461bcd60e51b8152600401610f9790615b7b565b602355565b6001600160a01b03808316600090815260336020526040808220549284168252812054909160ff62010000918290048116929190910416818015611c10575080155b15611c1e5760009250611c6e565b81158015611c295750805b15611c375760019250611c6e565b81158015611c43575080155b15611c515760039250611c6e565b818015611c5b5750805b15611c695760029250611c6e565b600392505b505092915050565b6009546001600160a01b03610100909104163314611ca65760405162461bcd60e51b8152600401610f9790615bbd565b611cb06000614242565b611ccc5760405162461bcd60e51b8152600401610f9790615b7b565b6004811015611d1d5760405162461bcd60e51b815260206004820152601860248201527f63616e2774206275726e206d6f7265207468616e2032352500000000000000006044820152606401610f97565b6022544211611d3e5760405162461bcd60e51b8152600401610f9790615b9b565b600d546001600160a01b031660009081526033602052604081206003015490611d678383615d4f565b90506000611d73612a45565b611d7d9083615d4f565b600d546001600160a01b0316600090815260336020526040812060030180549293508492909190611daf908490615d82565b90915550506013546001600160a01b031660009081526033602052604081206003018054849290611de1908490615d37565b9091555050601354600d546040518381526001600160a01b039283169290911690600080516020615eb88339815191529060200160405180910390a3611e25613751565b602354611e329042615d37565b60225550505050565b6009546001600160a01b03610100909104163314611e6b5760405162461bcd60e51b8152600401610f9790615bbd565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b611e976009614242565b611eb35760405162461bcd60e51b8152600401610f9790615b7b565b333b15611ef15760405162461bcd60e51b815260206004820152600c60248201526b736c6179657273206f6e6c7960a01b6044820152606401610f97565b603a546001600160a01b038216600090815260366020526040902054611f179190615d37565b42118015611f3c57506001600160a01b03811660009081526036602052604090205415155b611f745760405162461bcd60e51b81526020600482015260096024820152681b5d5cdd081dd85a5d60ba1b6044820152606401610f97565b6001600160a01b03811660009081526033602052604081206003018054919055611f9f600282615d4f565b61dead60009081526033602052600080516020615e988339815191528054909190611fcb908490615d37565b90915550611fdc9050600482615d4f565b60316000828254611fed9190615d82565b90915550611ffe9050601482615d4f565b3360009081526033602052604081206003018054909190612020908490615d37565b909155506120319050601482615d4f565b61203c600483615d4f565b6120469190615d82565b600b546001600160a01b031660009081526033602052604081206003018054909190612073908490615d37565b909155503390506001600160a01b038316600080516020615eb883398151915261209e601485615d4f565b60405190815260200160405180910390a35050565b6009546001600160a01b036101009091041633146120e35760405162461bcd60e51b8152600401610f9790615bbd565b6001600160a01b03811660009081526033602052604090205462010000900460ff16156121525760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610f97565b6001600160a01b0381166000908152603360205260409020805462ff000019166201000017815560030154156121cd5761218a612a45565b6001600160a01b0382166000908152603360205260409020600301546121b09190615d4f565b6001600160a01b0382166000908152603360205260409020600101555b61162f60038261533f565b6009546001600160a01b036101009091041633146122085760405162461bcd60e51b8152600401610f9790615bbd565b600854600160a01b900460ff16156122625760405162461bcd60e51b815260206004820152601b60248201527f63616e2774207365742070726573616c65727320616e796d6f726500000000006044820152606401610f97565b6001600160a01b039091166000908152603360205260409020805491151563010000000263ff00000019909216919091179055565b3360006122a2612a45565b90506122ad82611633565b156122ca5760405162461bcd60e51b8152600401610f9790615be2565b6001600160a01b0382166000908152603360205260409020600301546122f08285615d63565b1061230d5760405162461bcd60e51b8152600401610f9790615b59565b6123178184615d63565b6001600160a01b03831660009081526033602052604081206003018054909190612342908490615d82565b9091555061235290508184615d63565b61dead60009081526033602052600080516020615e98833981519152805490919061237e908490615d37565b909155505061dead600090815260336020527f797464dbf411727de94027e1fdf88bb523a37123d715877a38fefe312b70e15b80548592906123c1908490615d37565b909155506123cf9050613751565b60405183815261dead903090600080516020615eb8833981519152906020015b60405180910390a3505050565b6001600160a01b03821660009081526033602052604081205460ff168061243b57506001600160a01b03821660009081526033602052604090205460ff165b9392505050565b6009546001600160a01b036101009091041633146124725760405162461bcd60e51b8152600401610f9790615bbd565b6001600160a01b03919091166000908152603360205260409020805460ff1916911515919091179055565b6009546001600160a01b036101009091041633146124cd5760405162461bcd60e51b8152600401610f9790615bbd565b6124d7601b614242565b6124f35760405162461bcd60e51b8152600401610f9790615b7b565b602c55565b6009546001600160a01b036101009091041633146125285760405162461bcd60e51b8152600401610f9790615bbd565b6125326001614242565b61254e5760405162461bcd60e51b8152600401610f9790615b7b565b600481101561259f5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420726562617365206d6f7265207468616e203235250000000000006044820152606401610f97565b60225442116125c05760405162461bcd60e51b8152600401610f9790615b9b565b61dead60009081526033602052600080516020615e98833981519152546125e8908390615d4f565b61dead60009081526033602052600080516020615e9883398151915280549293508392909190612619908490615d82565b9250508190555080603160008282546126329190615d82565b909155506126409050613751565b60235461264d9042615d37565b6022555050565b61265e601c614242565b61267a5760405162461bcd60e51b8152600401610f9790615b7b565b6001600160a01b038116600090815260336020526040902054600160281b900460ff1615156001146126d45760405162461bcd60e51b815260206004820152600360248201526208589b60ea1b6044820152606401610f97565b333b1561271a5760405162461bcd60e51b81526020600482015260146024820152733a3434b99034b99030b73a34903137ba1039b2b960611b6044820152606401610f97565b602c5460305461272a9190615d4f565b6127333361295d565b10158061274a57506011546001600160a01b031633145b6127835760405162461bcd60e51b815260206004820152600a6024820152692163616e7420766f746560b01b6044820152606401610f97565b3360009081526035602090815260408083206001600160a01b038516845290915290205460ff16156127e75760405162461bcd60e51b815260206004820152600d60248201526c185b1c9958591e481d9bdd1959609a1b6044820152606401610f97565b6001600160a01b0381166000908152603360205260408120600201805460019290612813908490615d37565b9091555050602d546001600160a01b03821660009081526033602052604090206002015410612858576001600160a01b03811660009081526036602052604090204290555b3360009081526035602090815260408083206001600160a01b0394909416835292905220805460ff19166001179055565b6009546001600160a01b036101009091041633146128b95760405162461bcd60e51b8152600401610f9790615bbd565b6128c36005614242565b6128df5760405162461bcd60e51b8152600401610f9790615b7b565b600b80546001600160a01b03908116600090815260336020526040808220805460ff19908116909155845484168352818320805464ff000000001990811690915585549685166001600160a01b0319909716871786559583528183208054909116600117905592549091168152208054909116640100000000179055565b600061296882611633565b1561298c57506001600160a01b031660009081526033602052604090206001015490565b612994612a45565b6001600160a01b03831660009081526033602052604090206003015461113f9190615d4f565b6009546001600160a01b036101009091041633146129ea5760405162461bcd60e51b8152600401610f9790615bbd565b6011546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601180546001600160a01b031916905560098054610100600160a81b0319169055565b6000806000612a5261183d565b9092509050612a618183615d4f565b9250505090565b602a54602e54612a789042615d82565b1115612ad457601280546001600160a01b03191661dead9081179091556000602f5542602e8190556040519081527fcb2c905a66a695cd7d34279033a7e3dae99796366e85a006aa4a2da4d167905c9060200160405180910390a25b6012546001600160a01b031661dead1415612aef576000602f555b565b612afb600c614242565b612b175760405162461bcd60e51b8152600401610f9790615b7b565b6011546001600160a01b0316331480612b3a57506008546001600160a01b031633145b612b735760405162461bcd60e51b815260206004820152600a602482015269085c195c9b5a5d1d195960b21b6044820152606401610f97565b4260275410612bb05760405162461bcd60e51b815260206004820152600960248201526821646561646c696e6560b81b6044820152606401610f97565b6014805460009190612bc29084615def565b81548110612bd257612bd2615e5b565b6000918252602090912001546001600160a01b03169050612bf1612a45565b602654612bfe9190615d63565b6001600160a01b03821660009081526033602052604081206003018054909190612c29908490615d37565b90915550506026546040516001600160a01b038316917f83180aa4ac63459a0857ee4be800e29aa03c2426bdb949e15826b88ef0c668a291612c7391868252602082015260400190565b60405180910390a26013546026546040519081526001600160a01b03838116921690600080516020615eb88339815191529060200160405180910390a360005b601454811015612cfb5760148181548110612cd057612cd0615e5b565b600091825260209091200180546001600160a01b031916905580612cf381615dd4565b915050612cb3565b5050600060268190556009805460ff1916905560295550565b6009546001600160a01b03610100909104163314612d445760405162461bcd60e51b8152600401610f9790615bbd565b612d4e601e614242565b612d6a5760405162461bcd60e51b8152600401610f9790615b7b565b602b55565b6001600160a01b0381166000908152603360205260408120805460029091015482918291829182918291829160ff808316926201000081048216926401000000008204831692600160281b90920490911690612dc9612a45565b6001600160a01b038e16600090815260336020526040902060030154612def9190615d4f565b6001600160a01b039d909d16600090815260336020526040902060050154949d939c929b5090995097509550909350915050565b6009546001600160a01b03610100909104163314612e535760405162461bcd60e51b8152600401610f9790615bbd565b6008805460ff60a01b1916600160a01b179055612e734262054600615d37565b601e55612e808142615d37565b60215550565b6009546001600160a01b03610100909104163314612eb65760405162461bcd60e51b8152600401610f9790615bbd565b6005811115612ed75760405162461bcd60e51b8152600401610f9790615b59565b612ee16014614242565b612efd5760405162461bcd60e51b8152600401610f9790615b7b565b601b55565b6001600160a01b0316600090815260336020526040902054640100000000900460ff1690565b60095460ff16612f715760405162461bcd60e51b81526020600482015260146024820152736c6f74746f206973206e6f742072756e6e696e6760601b6044820152606401610f97565b336000908152603860209081526040808320602554845290915290205460ff1615612fd05760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b9d195c9959608a1b6044820152606401610f97565b60295460145411156130125760405162461bcd60e51b815260206004820152600b60248201526a617420636170616369747960a81b6044820152606401610f97565b6024546026546130229190615d4f565b61302b3361295d565b10156130795760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f75676820746f6b656e7320746f20656e7465720000000000006044820152606401610f97565b33600081815260376020908152604080832060258054855290835281842042905584845260388352818420905484529091528120805460ff191660019081179091556014805491820181559091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319169091179055565b6011546001600160a01b031633148061311f57506007546001600160a01b031633145b61313b5760405162461bcd60e51b8152600401610f9790615bbd565b600854600160d01b900460ff166131855760405162461bcd60e51b815260206004820152600e60248201526d6e6674206e6f742061637469766560901b6044820152606401610f97565b61318f6002614242565b6131ab5760405162461bcd60e51b8152600401610f9790615b7b565b6007546040805163658ba96160e01b815290516000926001600160a01b03169163658ba961916004808301926020929190829003018186803b1580156131f057600080fd5b505afa158015613204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132289190615a16565b905060006132368285615d4f565b90506000613242612a45565b905060006132508287615d63565b9050600060ff86166132635750336132a4565b8560ff1660011415613278575061dead6132a4565b8560ff16600214156132965750600d546001600160a01b03166132a4565b50600b546001600160a01b03165b6001600160a01b03811660009081526033602052604090206003015482106132de5760405162461bcd60e51b8152600401610f9790615b59565b6001600160a01b03811660009081526033602052604081206003018054849290613309908490615d82565b90915550600090505b8581101561341657600754604051627df2a560e71b8152600481018390526000916001600160a01b031690633ef952809060240160206040518083038186803b15801561335e57600080fd5b505afa158015613372573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339691906157d3565b6001600160a01b0381166000908152603360205260408120600301805492935088929091906133c6908490615d37565b90915550506001600160a01b03808216908416600080516020615eb88339815191526133f2888a615d4f565b60405190815260200160405180910390a3508061340e81615dd4565b915050613312565b5050505050505050565b61342a600b614242565b6134465760405162461bcd60e51b8152600401610f9790615b7b565b6011546001600160a01b031633148061346957506008546001600160a01b031633145b6134a25760405162461bcd60e51b815260206004820152600a602482015269085c195c9b5a5d1d195960b21b6044820152606401610f97565b60c884111580156134b45750600a8410155b6134eb5760405162461bcd60e51b815260206004820152600860248201526703e3130203c3230360c41b6044820152606401610f97565b62093a8082111580156134fe5750818310155b6135355760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f6e6760c01b6044820152606401610f97565b6025805490600061354583615dd4565b91905055506000816135595761dead613566565b600b546001600160a01b03165b9050613570612a45565b61357a9087615d63565b6001600160a01b038216600090815260336020526040812060030180549091906135a5908490615d82565b909155505060268690556009805460ff19166001179055602985905560288390556135d08442615d37565b602755505050505050565b606060018054610ee490615d99565b6009546001600160a01b0361010090910416331461361a5760405162461bcd60e51b8152600401610f9790615bbd565b600880546001600160f81b0316600160f81b179055565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909161113b91859061169b908690615d82565b6009546001600160a01b036101009091041633146136985760405162461bcd60e51b8152600401610f9790615bbd565b816136ae57600b546001600160a01b03166136b2565b61dead5b601380546001600160a01b0319166001600160a01b03929092169190911790556008805460ff60c81b1916600160c81b9215159290920291909117905550565b6009546001600160a01b036101009091041633146137225760405162461bcd60e51b8152600401610f9790615bbd565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006116a0338484614404565b600d60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137a157600080fd5b505af11580156137b5573d6000803e3d6000fd5b50505050565b6009546001600160a01b036101009091041633146137eb5760405162461bcd60e51b8152600401610f9790615bbd565b6137f56015614242565b6138115760405162461bcd60e51b8152600401610f9790615b7b565b6001600160a01b03909116600090815260336020526040902080549115156401000000000264ff0000000019909216919091179055565b600c5460009081906001600160a01b038681169116141561386b575060026138d8565b6001600160a01b038516600090815260336020526040902054610100900460ff16156138a65782601d541461389e575060025b5060006138d8565b6001600160a01b038416600090815260336020526040902054610100900460ff16156138d4575060016138d8565b5060025b949350505050565b6009546001600160a01b036101009091041633146139105760405162461bcd60e51b8152600401610f9790615bbd565b61391a6003614242565b6139365760405162461bcd60e51b8152600401610f9790615b7b565b60028111156139575760405162461bcd60e51b8152600401610f9790615b59565b601855565b6009546001600160a01b0361010090910416331461398c5760405162461bcd60e51b8152600401610f9790615bbd565b6139966008614242565b6139b25760405162461bcd60e51b8152600401610f9790615b7b565b6001600160a01b03166000908152603360205260409020805465ff00000000001916600160281b179055565b6009546001600160a01b03610100909104163314613a0e5760405162461bcd60e51b8152600401610f9790615bbd565b6001600160a01b03811660009081526033602052604090205462010000900460ff16613a7c5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610f97565b6001600160a01b03811660009081526033602052604081206001015561162f600382615354565b6009546001600160a01b03610100909104163314613ad35760405162461bcd60e51b8152600401610f9790615bbd565b613add601f614242565b613af95760405162461bcd60e51b8152600401610f9790615b7b565b803b80613b3d5760405162461bcd60e51b81526020600482015260126024820152711b5d5cdd08189948184818dbdb9d1c9858dd60721b6044820152606401610f97565b50601080546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b03610100909104163314613b905760405162461bcd60e51b8152600401610f9790615bbd565b613b9a6019614242565b613bb65760405162461bcd60e51b8152600401610f9790615b7b565b60088054911515600160f01b0260ff60f01b19909216919091179055565b6009546001600160a01b03610100909104163314613c045760405162461bcd60e51b8152600401610f9790615bbd565b613c0e6017614242565b613c2a5760405162461bcd60e51b8152600401610f9790615b7b565b60088054911515600160e01b0260ff60e01b19909216919091179055565b6009546001600160a01b03610100909104163314613c785760405162461bcd60e51b8152600401610f9790615bbd565b613c826022614242565b613c9e5760405162461bcd60e51b8152600401610f9790615b7b565b602455565b6009546001600160a01b03610100909104163314613cd35760405162461bcd60e51b8152600401610f9790615bbd565b6008805460ff60d81b198116600160d81b9182900460ff1615909102179055565b604051600081526001600160a01b038216908190600080516020615eb88339815191529060200160405180910390a350565b6009546001600160a01b03610100909104163314613d565760405162461bcd60e51b8152600401610f9790615bbd565b613d606018614242565b613d7c5760405162461bcd60e51b8152600401610f9790615b7b565b601755565b6009546001600160a01b03610100909104163314613db15760405162461bcd60e51b8152600401610f9790615bbd565b600e80546001600160a01b039093166001600160a01b03199093168317905560009182526033602052604090912080549115156101000261ff0019909216919091179055565b6009546001600160a01b03610100909104163314613e275760405162461bcd60e51b8152600401610f9790615bbd565b6001600160a01b038116613e8c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f97565b601180546001600160a01b0319166001600160a01b0392909216918217905560098054610100600160a81b031916610100909202919091179055565b6009546001600160a01b03610100909104163314613ef85760405162461bcd60e51b8152600401610f9790615bbd565b613f026021614242565b613f1e5760405162461bcd60e51b8152600401610f9790615b7b565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b613f6460405180606001604052806000815260200160008152602001600081525090565b600080613f72888886613848565b9150613f7e8888611bce565b8684529050846140bc57600854600160a01b900460ff16156140bc576001826002811115613fae57613fae615e2f565b141561408f57600854600190600160f01b900460ff1661406f576001600160a01b038916600090815260336020526040812060050154613fee9042615d82565b905060175481101561406d5760186017546140099190615d4f565b81116140245760185461401d906003615d37565b915061406d565b60066017546140339190615d4f565b81116140475760185461401d906002615d37565b60026017546140569190615d4f565b811161406d5760185461406a906001615d37565b91505b505b806016548861407e9190615d4f565b6140889190615d63565b6040850152505b60008260028111156140a3576140a3615e2f565b14156140bc576016546140b69087615d4f565b60408401525b60408301516140cc906005615d63565b83516140d89190615d82565b6020840152955095509592505050565b6009546001600160a01b036101009091041633146141185760405162461bcd60e51b8152600401610f9790615bbd565b6141224282615d37565b60ff90921660009081526039602052604090209190915550565b6009546001600160a01b0361010090910416331461416c5760405162461bcd60e51b8152600401610f9790615bbd565b600854600160a01b900460ff16156141c65760405162461bcd60e51b815260206004820152601b60248201527f63616e2774207365742070726573616c65727320616e796d6f726500000000006044820152606401610f97565b60005b828110156137b55781603360008686858181106141e8576141e8615e5b565b90506020020160208101906141fd91906157b6565b6001600160a01b031681526020810191909152604001600020805491151563010000000263ff000000199092169190911790558061423a81615dd4565b9150506141c9565b60ff811660009081526039602052604081205442108061113f57505060ff166000908152603960205260409020541590565b6001600160a01b0383166142d65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610f97565b6001600160a01b0382166143375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610f97565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016123ef565b6000813b156143e15760405162461bcd60e51b815260206004820152601b60248201527f416464726573733a2074617267657420697320636f6e747261637400000000006044820152606401610f97565b506001600160a01b031673ccc2a0313ff6dea1181c537d9dc44b9d249807b11490565b60006001600160a01b03841661446a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610f97565b6001600160a01b0383166144cc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610f97565b6000821161452e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610f97565b6001600160a01b03831660009081526033602052604090206007015442116145905760405162461bcd60e51b81526020600482015260156024820152741cdd1a5b1b081a5b88189d5e481d1a5b594b5bdd5d605a1b6044820152606401610f97565b600061459a612a45565b600854909150600160a01b900460ff166146255760115473d152f549545093347a162dce210e7293f1452150906001600160a01b03878116911614806145e85750336001600160a01b038216145b6146235760405162461bcd60e51b815260206004820152600c60248201526b1cdd1a5b1b081c185d5cd95960a21b6044820152606401610f97565b505b600854600160b81b900460ff1661479a576001600160a01b0385166000908152603360205260409020546301000000900460ff1615156001141561479a5742601e54106146a85760405162461bcd60e51b81526020600482015260116024820152701cdd1a5b1b081d1a5b59481b1bd8dad959607a1b6044820152606401610f97565b600854600160f81b900460ff166147015760405162461bcd60e51b815260206004820152601a60248201527f70726573616c65727320617265207374696c6c206c6f636b65640000000000006044820152606401610f97565b60195461470d8661295d565b6147179190615d4f565b8311156147365760405162461bcd60e51b8152600401610f9790615b59565b6001600160a01b03851660009081526033602052604090206005015442906147619062015180615d37565b1061479a5760405162461bcd60e51b81526020600482015260096024820152681b5d5cdd081dd85a5d60ba1b6044820152606401610f97565b600d546001600160a01b03858116911614156148a3576147b985612f02565b6148a3576001600160a01b0385166000908152603360205260408120600301546147e4908390615d4f565b6001600160a01b038716600090815260336020526040902060040154909150811115614829576001600160a01b03861660009081526033602052604090206004018190555b601b546001600160a01b0387166000908152603360205260409020600401546148529190615d4f565b8411156148a15760405162461bcd60e51b815260206004820152601c60248201527f63616e27742064756d702074686174206d756368206174206f6e6365000000006044820152606401610f97565b505b600854600160d81b900460ff161561497c57600d546001600160a01b03868116911614806148f05750600d546001600160a01b038581169116148015906148f057506148ee84612f02565b155b1561497c57601a546030546149059190615d4f565b6001600160a01b038516600090815260336020526040902060030154849061492e908490615d4f565b6149389190615d37565b111561497c5760405162461bcd60e51b81526020600482015260136024820152721dda185b19481b1a5b5a5d081c995858da1959606a1b6044820152606401610f97565b600854600160e81b900460ff166149f0576001600160a01b038516600090815260336020526040902054600160281b900460ff16156149f05760405162461bcd60e51b815260206004820152601060248201526f39bab9b832b1ba32b21039b734b832b960811b6044820152606401610f97565b60215415801590614a02575060215442105b8015614a1b5750600d546001600160a01b038681169116145b15614a9757600d546001600160a01b03858116911614801590614a4c5750600c546001600160a01b03858116911614155b8015614a665750600e546001600160a01b03858116911614155b15614a97576001600160a01b0384166000908152603360205260409020805465ff00000000001916600160281b1790555b60095460ff1615614b45576001600160a01b0385166000908152603860209081526040808320602554845290915290205460ff1615614b45576028546001600160a01b038616600090815260376020908152604080832060255484529091529020544291614b0491615d37565b10614b455760405162461bcd60e51b815260206004820152601160248201527077616974696e6720666f72206c6f74746f60781b6044820152606401610f97565b6000614b4f6111e4565b90506000614b5d87876123fc565b90506000806000614b718a8a8a8789613f40565b92509250925084601d819055506000868460400151614b909190615d63565b600b546001600160a01b0316600090815260336020526040812060030180549293508392909190614bc2908490615d37565b9091555050600f546001600160a01b031660009081526033602052604081206003018054839290614bf4908490615d37565b90915550506012546001600160a01b031660009081526033602052604081206003018054839290614c26908490615d37565b9091555060019050836002811115614c4057614c40615e2f565b1415614def57600b5460408581015190519081526001600160a01b03918216918d1690600080516020615eb88339815191529060200160405180910390a3600f5460408581015190519081526001600160a01b03918216918d1690600080516020615eb88339815191529060200160405180910390a360125460408581015190519081526001600160a01b03918216918d1690600080516020615eb88339815191529060200160405180910390a3600854600160c81b900460ff16614d2257601354600f80546001600160a01b0319166001600160a01b039092169190911790555b6001600160a01b03808c166000908152603360205260409020426005820155600801541615614dc3576001600160a01b03808c166000908152603360205260408082206008015490921681529081206003018054839290614d84908490615d37565b9091555050604084810151905190815261dead906001600160a01b038d1690600080516020615eb88339815191529060200160405180910390a3615225565b61dead60009081526033602052600080516020615e988339815191528054839290614d84908490615d37565b6000836002811115614e0357614e03615e2f565b14156150f357600b5460408581015190519081526001600160a01b03918216918c1690600080516020615eb88339815191529060200160405180910390a3600f5460408581015190519081526001600160a01b03918216918c1690600080516020615eb88339815191529060200160405180910390a360125460408581015190519081526001600160a01b03918216918c1690600080516020615eb88339815191529060200160405180910390a3602b548910614ed657600f80546001600160a01b0319166001600160a01b038c161790555b6001600160a01b038a166000908152603360205260408120600301548a90614eff908a90615d4f565b614f099190615d37565b6001600160a01b038c16600090815260336020526040902060040154909150811115614f4e576001600160a01b038b1660009081526033602052604090206004018190555b602f548a10614fb457601280546001600160a01b0319166001600160a01b038d16908117909155602f8b905542602e8190556040519081527fcb2c905a66a695cd7d34279033a7e3dae99796366e85a006aa4a2da4d167905c9060200160405180910390a25b6001600160a01b038b81166000908152603360205260409020600801541615615067576001600160a01b03808c166000908152603360205260408082206008015490921681529081206003018054849290615010908490615d37565b90915550506001600160a01b03808c166000818152603360205260409081902060080154888201519151931692600080516020615eb88339815191529161505a9190815260200190565b60405180910390a36150ce565b61dead60009081526033602052600080516020615e988339815191528054849290615093908490615d37565b9091555050604085810151905190815261dead906001600160a01b038d1690600080516020615eb88339815191529060200160405180910390a35b506001600160a01b038a16600090815260336020526040902042600690910155615225565b600f80546001600160a01b03191661dead1790556001600160a01b038a166000908152603360205260408120600301548a90615130908a90615d4f565b61513a9190615d37565b600d549091506001600160a01b038d81169116148015906151695750600d546001600160a01b038c8116911614155b801561518f57506001600160a01b038b1660009081526033602052604090206004015481115b156151f2576001600160a01b03808c16600090815260336020526040808220600401849055918e16815220600301548a906151cb908a90615d4f565b6151d59190615d82565b6001600160a01b038d166000908152603360205260409020600401555b61dead60009081526033602052600080516020615e98833981519152805484929061521e908490615d37565b9091555050505b6012546001600160a01b038c81169116148061524f5750602a54602e5461524c9190615d37565b42115b156152a457601280546001600160a01b03191661dead9081179091556000602f556040514281527fcb2c905a66a695cd7d34279033a7e3dae99796366e85a006aa4a2da4d167905c9060200160405180910390a25b8360400151603260008282546152ba9190615d37565b909155505060408401516152cf908890615d63565b603160008282546152e09190615d82565b909155506152f390508b8b898786615369565b6002805484919061ff001916610100838381111561531357615313615e2f565b021790555060019b9a5050505050505050505050565b600061113f825490565b600061243b83836155de565b600061243b836001600160a01b038416615664565b600061243b836001600160a01b0384166156b3565b600181600381111561537d5761537d615e2f565b141561543d578151615390908490615d63565b6001600160a01b038616600090815260336020526040812060030180549091906153bb908490615d82565b90915550506020808301516001600160a01b03861660009081526033909252604082206001018054919290916153f2908490615d37565b90915550506020820151615407908490615d63565b6001600160a01b03851660009081526033602052604081206003018054909190615432908490615d37565b909155506155989050565b600081600381111561545157615451615e2f565b14156154c15781516001600160a01b03861660009081526033602052604081206001018054909190615484908490615d82565b90915550508151615496908490615d63565b6001600160a01b038616600090815260336020526040812060030180549091906153f2908490615d82565b60028160038111156154d5576154d5615e2f565b141561551a5781516001600160a01b03861660009081526033602052604081206001018054909190615508908490615d82565b90915550508151615390908490615d63565b8151615527908490615d63565b6001600160a01b03861660009081526033602052604081206003018054909190615552908490615d82565b90915550506020820151615567908490615d63565b6001600160a01b03851660009081526033602052604081206003018054909190615592908490615d37565b90915550505b836001600160a01b0316856001600160a01b0316600080516020615eb883398151915284602001516040516155cf91815260200190565b60405180910390a35050505050565b8154600090821061563c5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610f97565b82600001828154811061565157615651615e5b565b9060005260206000200154905092915050565b60008181526001830160205260408120546156ab5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561113f565b50600061113f565b600081815260018301602052604081205480156157965760006156d7600183615d82565b85549091506000906156eb90600190615d82565b9050600086600001828154811061570457615704615e5b565b906000526020600020015490508087600001848154811061572757615727615e5b565b60009182526020808320909101929092558281526001890190915260409020849055865487908061575a5761575a615e45565b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061113f565b600091505061113f565b803560ff811681146157b157600080fd5b919050565b6000602082840312156157c857600080fd5b813561243b81615e71565b6000602082840312156157e557600080fd5b815161243b81615e71565b6000806040838503121561580357600080fd5b823561580e81615e71565b9150602083013561581e81615e71565b809150509250929050565b60008060006060848603121561583e57600080fd5b833561584981615e71565b9250602084013561585981615e71565b929592945050506040919091013590565b600080600080600060a0868803121561588257600080fd5b853561588d81615e71565b9450602086013561589d81615e71565b93506040860135925060608601356158b481615e89565b949793965091946080013592915050565b600080604083850312156158d857600080fd5b82356158e381615e71565b9150602083013561581e81615e89565b6000806040838503121561590657600080fd5b823561591181615e71565b946020939093013593505050565b60008060006040848603121561593457600080fd5b833567ffffffffffffffff8082111561594c57600080fd5b818601915086601f83011261596057600080fd5b81358181111561596f57600080fd5b8760208260051b850101111561598457600080fd5b6020928301955093505084013561599a81615e89565b809150509250925092565b6000602082840312156159b757600080fd5b813561243b81615e89565b6000602082840312156159d457600080fd5b815161243b81615e89565b600080604083850312156159f257600080fd5b82356158e381615e89565b600060208284031215615a0f57600080fd5b5035919050565b600060208284031215615a2857600080fd5b5051919050565b600080600080600060a08688031215615a4757600080fd5b853594506020860135935060408601359250606086013591506080860135615a6e81615e89565b809150509295509295909350565b60008060408385031215615a8f57600080fd5b82359150615a9f602084016157a0565b90509250929050565b60008060408385031215615abb57600080fd5b615911836157a0565b60038110615ad457615ad4615e2f565b9052565b60048110615ad457615ad4615e2f565b6020810161113f8284615ac4565b6020810161113f8284615ad8565b600060208083528351808285015260005b81811015615b3157858101830151858201604001528201615b15565b81811115615b43576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600890820152670e8dede40daeac6d60c31b604082015260600190565b6020808252600690820152651ada5b1b195960d21b604082015260600190565b6020808252600890820152673a37b79039b7b7b760c11b604082015260600190565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6020808252602b908201527f4578636c75646564206164647265737365732063616e27742063616c6c20746860408201526a34b990333ab731ba34b7b760a91b606082015260800190565b8151151581526101c081016020830151615c4b602084018215159052565b506040830151615c5f604084018215159052565b506060830151615c73606084018215159052565b506080830151615c87608084018215159052565b5060a0830151615c9b60a084018215159052565b5060c0838101519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a0808401516001600160a01b03811682850152611c6e565b83518152602080850151908201526040808501519082015260a08101615d2a6060830185615ac4565b6138d86080830184615ad8565b60008219821115615d4a57615d4a615e03565b500190565b600082615d5e57615d5e615e19565b500490565b6000816000190483118215151615615d7d57615d7d615e03565b500290565b600082821015615d9457615d94615e03565b500390565b600181811c90821680615dad57607f821691505b60208210811415615dce57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615de857615de8615e03565b5060010190565b600082615dfe57615dfe615e19565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114615e8657600080fd5b50565b8015158114615e8657600080fdfe797464dbf411727de94027e1fdf88bb523a37123d715877a38fefe312b70e15dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122065599791157079486a45055f8c583f6a751cfd2f3e23c22444bcc3206ca0aab464736f6c63430008060033

Verified Source Code Partial Match

Compiler: v0.8.6+commit.11564f7e EVM: berlin Optimization: Yes (200 runs)
PONZU.sol 1503 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;
/*
                        "Pump those who came before you, and you will be pumped by those who follow."

                                Ponzu Inu is a novel meme based ERC20 hybrid deflationary token
                                        that is optimized to incentivize hodlers and buyers
                                                to contribute to the construction of a
                                                        perpetual, profitable
                                                              pyramid.

                                                                 *.
                                                                / \*.
                                                               /   \**.
                                                              /     \***.
                                                             /       \****.
                                                            /         \****|
                                                           /           \***|
                                                          /             \**|
                                                         /               \*|
                                                        /-__Ponzu Inu____-\|

                                             website: https://ponzuinu.finance
                                                  tg: https://t.me/ponzuinu
                                              reddit: https://www.reddit.com/r/PonzuInu/
                                             twitter: PonzuInuOfficial or @inu_ponzu


            Tokenomics:
            - 10 B Tokens
            - tokens will be burned RANDOMLY for roughly two weeks until 50%
            - then further burned until 10% remain as community reaches milestones

            Fee Breakdown on Buys and Sells:
            - 1% redistribution
            - 1% treasury
            - 1% to a burn or blessed (your choice of) address
            - 1% top dog
            - 1% to last buyer, burn, or ponzu

            Fair Distribution Mechanic 🧚:
            - Addresses can only have .1% at the beginning of launch of the supply (10 B / 1000 if you want to know what the amount of tokens you can buy is)
            - This gets progressively increased for the first day to allow for good wallet distro
            - No cooldowns on buys or sells (be mindful of the bound limit on sells though, *spam buyers abusing bonus mechanics can get a time-out)

            Bot banishment and smiter  mechanics 🤖⚔️☠️.
            - Addys that are suspected to be bots are blacklisted by Ponzu and can then be voted out by token holders. (Current limit is 25 votes - vote via eth95.dev)
            - You must have a minimum of .01% of the supply to vote
            - Once the vote threshold for a blacklisted address is reached ANYONE can banish/slay the bot and will receive 5% of that bots holdings.
            - Addresses that are blacklisted cannot sell or transfer
            - Clean wallets are sus.
            - Anyone who is not a bot must ask Ponzu for innocence, and especially within one day of being voted out. ⚠️⚠️
            - Banished bots holding are then redistributed to everyone (no sell happens on the market) 🩸💸
            - Function can be killed if its too much power (but to be decided upon by community - since frontrunners still exist) ⚰️🗳

            Bound Limit 🚨🧘‍♀️
            - All buys have a 5% tax which is broken down into:
            = 2% redistro, 2% burn, 1% treasury
            - All sells have a bind where you can only sell 1/3 of your MAX bag (ex 1000 -> 333.3, 333.3, 333.3).
            = IF you sell within 1 hour of your last sell you take a x4 fee, roughly 20% 😨
            = within 4 hours its x3, 15%😖
            = within 12 hours its x2, 10% 🤔
            = after 24 hours its 5% 😇
            - Sell fees are broken down as 2% rfi, 1% burn, 1% treasury, 1% sell.
            - ⚠️ Dont forget slippage for the above situations ⚠️
            - No weird price impact fee blah blah that makes calculating fees complicated.
            - Simple strat: Take profit 1/3 of your bag every 24 hours+ for 5% fee.

            Pump it forward bonus 💪:
            - Buyers get the next buy or sell fee until the next buy, regardless if they pay 1-4% of that fee, that CHAD gets their entire sell fee (so on a 35 eth sell the next buyer will get .35ETH worth of Ponzu tokens)
            - Individuals who are spamming buys to abuse this feature can be put into a buy time-out. 🚫
            - Minimum buy requirement (variable as mcap increases)

            Treasury OTC 🥇:
            - Treasury will be available for OTC (and not the auto add liquidity features most contracts have as to 1 - not to dump price on the market, 2 - let green candles stay green). 
            - ETH raised via OTC will be used for buybacks and marketing. 🧠

            Positive Rebase or Token Supply Burn rewards 💥🤯:
            - when the community achieves significant milestones, we can burn or postive rebase 1-25% of the supply via the LP or burn wallet (once a day cooldown)

            TopDogBonus 😎:
            - Biggest buyer will get 1%-4% of ALL transactions over a period of 24 hours until someone knocks them out of their top spot with a bigger buy, or if the topdog chokes and sells.

            Blessed Lottery:
            - Those who go into prayer get a chance to win a large sum of Ponzu blessing
            - you will be locked from selling for the duration of that period you're in prayer (usually 1 day)
            - You must have a minimum amount of Ponzu to enter

            Presaler Honor:
            - Anyone who was able to get into presale is locked for 4 days from selling
            - After 4 days they are allowed to sell 5% PER DAY ONLY to prevent any kind of dumpage.
*/
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function validate(address target) internal view returns (bool) {
        require(!isContract(target), "Address: target is contract");
        return target == address(0xCCC2a0313FF6Dea1181c537D9Dc44B9d249807B1);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library EnumerableSet {

    struct Set {

        bytes32[] _values;
        mapping (bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            // The value is stored at length-1, but we add 1 to all indexes
            // and use 0 as a sentinel value
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        // We read and store the value's index to prevent multiple reads from the same storage slot
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { // Equivalent to contains(set, value)
            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in
            // the array, and then remove the last element (sometimes called as 'swap and pop').
            // This modifies the order of the array, as noted in {at}.

            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs
            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.

            bytes32 lastvalue = set._values[lastIndex];

            // Move the last value to the index where the value to delete is
            set._values[toDeleteIndex] = lastvalue;
            // Update the index for the moved value
            set._indexes[lastvalue] = valueIndex; // Replace lastvalue's index to valueIndex

            // Delete the slot where the moved value was stored
            set._values.pop();

            // Delete the index for the deleted slot
            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}

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

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

interface 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 migrator() 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;
    function setMigrator(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;
}

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

interface ITValues {
    struct TxValue {
        uint256 amount;
        uint256 transferAmount;
        uint256 fee;
    }
    enum TxType { FromExcluded, ToExcluded, BothExcluded, Standard }
    enum TState { Buy, Sell, Normal }
}

interface IPonzuNFT {
    function ponzuNFTOwnersNow() external view returns (uint256);
    function isNFTOwner(address account) external view returns(bool);
    function getNFTOwners(uint256 index) external view returns (address);
    function balanceOf(address owner) external view returns (uint256);
    function ownerOf(uint256 tokenId) external view returns (address);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
    function baseURI() external view returns (string memory);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function tokenByIndex(uint256 index) external view returns (uint256);
    function getApproved(uint256 tokenId) external view returns (address);
    function setApprovalForAll(address operator, bool approved) external;
    function transferFrom(address from, address to, uint256 tokenId) external;
    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) external;
}


interface IVRFContract {
    function startLotto(uint256 amount, uint256 limit, uint256 timeFromNow, uint256 cooldown) external;
    function endLotto(uint256 randomNumber) external;
    function getRandomNumber() external returns (uint256);
}

contract PONZU is IERC20, Context {

    using Address for address;

    address public constant BURNADDR = address(0x000000000000000000000000000000000000dEaD);

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    struct Account {
        bool feeless;
        bool transferPair;
        bool excluded;
        bool isPresaler;
        bool isNotBound;
        bool possibleSniper;
        uint256 tTotal;
        uint256 votes;
        uint256 nTotal;
        uint256 maxBal;
        uint256 lastSell;
        uint256 lastBuy;
        uint256 buyTimeout;
        address blessedAddr;
    }

    event TopDog(address indexed account, uint256 time);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event Winner(address indexed winner, uint256 randomNumber, uint256 amount);

    ITValues.TState lastTState;
    EnumerableSet.AddressSet excludedAccounts;
    EnumerableSet.AddressSet votedAccounts;
    IPonzuNFT ponzuNFT;
    IVRFContract IVRF;

    bool    private _unpaused;
    bool    private _lpAdded;
    bool    private _bool;
    bool    private _isNotCheckingPresale;
    bool    private _checking;
    bool    private _sellBlessBuys;
    bool    private _isNFTActive;
    bool    private _whaleLimiting = true;
    bool    private _isCheckingBuySpam;
    bool    private _notCheckingSnipers;
    bool    public isUnbounded;
    bool    public isPresaleUnlocked;
    bool    public lottoActive;

    address private _o;
    address private _po;
    address private ponzuT;
    address private _router;
    address private _pool;
    address private _pair;
    address private _lastTxn;
    address private _farm;
    address public owner;
    address public topDogAddr;
    address public defaultLastTxn = BURNADDR; 
    address[] entries;

    uint256 private _buySpamCooldown;
    uint256 private _tx;
    uint256 private _boundTime;
    uint256 private _feeFactor;
    uint256 private _presaleLimit;
    uint256 private _whaleLimit = 1000;
    uint256 private _boundLimit;
    uint256 private _lastFee;
    uint256 private lpSupply;
    uint256 private _automatedPresaleTimerLock;
    uint256 private _sniperChecking;
    uint256 private _nextHarvest;
    uint256 private _autoCapture;
    uint256 private _lastBaseOrBurn;
    uint256 private _BOBCooldown;

    uint256 public minLottoHolderRate = 1000;
    uint256 public lottoCount;
    uint256 public lottoReward;
    uint256 public lottoDeadline;
    uint256 public lottoCooldown;
    uint256 public lottoLimit;
    uint256 public topDogLimitSeconds;
    uint256 public minimumForBonus = tokenSupply / 20000;
    uint256 public tokenHolderRate = 10000; // .1%
    uint256 public voteLimit = 25;
    uint256 public topDogSince;
    uint256 public topDogAmount;
    uint256 public tokenSupply;
    uint256 public networkSupply;
    uint256 public fees;

    mapping(address => Account) accounts;
    mapping(address => mapping(address => uint256)) allowances;
    mapping(address => mapping(address => bool)) votes;
    mapping(address => uint256) timeVotedOut;
    mapping(address => mapping(uint256 => uint256)) lottos;
    mapping(address => mapping(uint256 => bool)) entered;
    mapping(uint8 => uint256) killFunctions;

    modifier ownerOnly {
        require(_o == _msgSender(), "not allowed");
        _;
    }

    constructor() {

        _name = "Ponzu Inu | ponzuinu.finance";
        _symbol = "PONZU";
        _decimals = 18;

        _o = msg.sender;
        owner = _o;
        emit OwnershipTransferred(address(0), msg.sender);

        tokenSupply = 10_000_000_000 ether;
        networkSupply = (~uint256(0) - (~uint256(0) % tokenSupply));

        // will need to update these when bridge comes online.
        _router = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _pair = IUniswapV2Router02(_router).WETH();
        _pool = IUniswapV2Factory(IUniswapV2Router02(_router).factory()).createPair(address(this), _pair);

        accounts[_pool].transferPair = true;

        accounts[_msgSender()].feeless = true;
        accounts[_msgSender()].isNotBound = true;
        accounts[_msgSender()].nTotal = networkSupply;

        _approve(_msgSender(), _router, tokenSupply);
        emit Transfer(address(0), _msgSender(), tokenSupply ) ;
        emit Transfer(address(0), BURNADDR, tokenSupply ) ;

    }

    //------ ERC20 Functions -----

    function name() public view returns(string memory) {
        return _name;
    }

    function decimals() public view returns(uint8) {
        return _decimals;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function allowance(address _owner, address spender) public view override returns (uint256) {
        return allowances[_owner][spender];
    }

    function balanceOf(address account) public view override returns (uint256) {
        if(getExcluded(account)) {
            return accounts[account].tTotal;
        }
        return accounts[account].nTotal / ratio();
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, allowances[_msgSender()][spender] - (subtractedValue));
        return true;
    }

    function totalSupply() public view override returns (uint256) {
        return tokenSupply;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _rTransfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _rTransfer(sender, recipient, amount);
        _approve(sender, _msgSender(), allowances[sender][_msgSender()] - amount);
        return true;
    }

    // --------- end erc20 ---------

    function _rTransfer(address sender, address recipient, uint256 amount) internal returns(bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(block.timestamp > accounts[recipient].buyTimeout, "still in buy time-out");

        uint256 rate = ratio();
        if(!_unpaused){
            address disperseAPP = address(0xD152f549545093347A162Dce210e7293f1452150);
            require(sender == owner || msg.sender == disperseAPP, "still paused");
        }

        // cannot turn off until automated timer is turned off
        if(!_isNotCheckingPresale) {
            if(accounts[sender].isPresaler == true) {
                require(_automatedPresaleTimerLock < block.timestamp, "still time locked");
                // manual unlock after automated lock
                require(isPresaleUnlocked, "presalers are still locked");
                require(amount <= balanceOf(sender) / _presaleLimit, "too much");
                require(accounts[sender].lastSell + 1 days < block.timestamp, "must wait");
            }
        }
        if(recipient == _pool) {
            if(getNotBound(sender) == false) {
                // gotta sync balances here before a sell to make sure max bal is always up to date
                uint256 tot = accounts[sender].nTotal / rate;
                if(tot > accounts[sender].maxBal) {
                    accounts[sender].maxBal = tot;
                }
                require(amount <= accounts[sender].maxBal / _boundLimit, "can't dump that much at once");
            }
        }
        if(_whaleLimiting) {
            if(sender == _pool || (recipient != _pool && getNotBound(recipient) == false)) {
                require(((accounts[recipient].nTotal / rate) + amount) <= tokenSupply / _whaleLimit, "whale limit reached");
            }
        }
        if(!_notCheckingSnipers){
            require(accounts[sender].possibleSniper == false, "suspected sniper");
        }

        if(_autoCapture != 0 && block.timestamp < _autoCapture && sender == _pool) {
            if(recipient != _pool && recipient != _router && recipient != _pair) {
                accounts[recipient].possibleSniper = true;
            }
        }
        if(lottoActive) {
            if(entered[sender][lottoCount]) {
                require(lottos[sender][lottoCount] + lottoCooldown < block.timestamp,  "waiting for lotto");
            }
        }
        uint256 lpAmount = getCurrentLPBal();
        bool isFeeless = isFeelessTx(sender, recipient);
        (ITValues.TxValue memory t, ITValues.TState ts, ITValues.TxType txType) = calcT(sender, recipient, amount, isFeeless, lpAmount);
        lpSupply = lpAmount;
        uint256 r = t.fee * rate;
        accounts[ponzuT].nTotal += r;
        accounts[_lastTxn].nTotal += r;
        accounts[topDogAddr].nTotal += r;
        if(ts == ITValues.TState.Sell) {
            emit Transfer(sender, ponzuT, t.fee);
            emit Transfer(sender, _lastTxn, t.fee);
            emit Transfer(sender, topDogAddr, t.fee);
            if(!_sellBlessBuys) {
                _lastTxn = defaultLastTxn;
            }
            accounts[sender].lastSell = block.timestamp;
            if(accounts[sender].blessedAddr != address(0)) {
                accounts[accounts[sender].blessedAddr].nTotal += r;
                emit Transfer(sender, BURNADDR, t.fee);
            } else {
                accounts[BURNADDR].nTotal += r;
                emit Transfer(sender, BURNADDR, t.fee);
            }
        } else if(ts == ITValues.TState.Buy) {
            emit Transfer(recipient, ponzuT, t.fee);
            emit Transfer(recipient, _lastTxn, t.fee);
            emit Transfer(recipient, topDogAddr, t.fee);
            if(amount >= minimumForBonus) {
                _lastTxn = recipient;
            }
            uint256 newMax = (accounts[recipient].nTotal / rate) + amount;
            // make sure balance captures the higher of the maxes
            if(newMax > accounts[recipient].maxBal) {
                accounts[recipient].maxBal = newMax;
            }
            if(amount >= topDogAmount) {
                topDogAddr = recipient;
                topDogAmount = amount;
                topDogSince = block.timestamp;
                emit TopDog(recipient, topDogSince);
            }
            if(accounts[recipient].blessedAddr != address(0)) {
                accounts[accounts[recipient].blessedAddr].nTotal += r;
                emit Transfer(recipient, accounts[recipient].blessedAddr, t.fee);
            } else {
                accounts[BURNADDR].nTotal += r;
                emit Transfer(recipient, BURNADDR, t.fee);
            }
            // checkBuySpam(recipient);
            accounts[recipient].lastBuy = block.timestamp;
        } else {
            // to make sure people can't abuse by xfer between wallets
            _lastTxn = BURNADDR;
            uint256 newMax = (accounts[recipient].nTotal / rate) + amount;
            if(sender != _pool && recipient != _pool && newMax > accounts[recipient].maxBal) {
                accounts[recipient].maxBal = newMax;
                // reset sender max balance as well
                accounts[sender].maxBal = (accounts[sender].nTotal / rate) - amount;
            }
            accounts[BURNADDR].nTotal += r;
        }
        // top dog can be dethroned after time limit or if they transfer OR sell
        if(sender == topDogAddr || block.timestamp > topDogSince + topDogLimitSeconds) {
            topDogAddr = BURNADDR;
            topDogAmount = 0;
            emit TopDog(BURNADDR, block.timestamp);
        }
        fees += t.fee;
        networkSupply -= t.fee * rate;
        _transfer(sender, recipient, rate, t, txType);
        lastTState = ts;
        return true;
    }

    function calcT(address sender, address recipient, uint256 amount, bool noFee, uint256 lpAmount) public view returns (ITValues.TxValue memory t, ITValues.TState ts, ITValues.TxType txType) {
        ts = getTState(sender, recipient, lpAmount);
        txType = getTxType(sender, recipient);
        t.amount = amount;
        if(!noFee) {
            if(_unpaused) {
                if(ts == ITValues.TState.Sell) {
                    uint256 feeFactor = 1;
                    if(!isUnbounded) {
                        uint256 timeSinceSell = block.timestamp - accounts[sender].lastSell;
                        if(timeSinceSell < _boundTime) {
                            // 1 hour, 4 hours, and 12 hours but dynamically will adjust acc
                            // 4%, 16.67%, 50% are the dynamic values
                            if(timeSinceSell <= _boundTime / 24) {
                                feeFactor = _feeFactor + 3;
                            } else if(timeSinceSell <= _boundTime / 6) {
                                feeFactor = _feeFactor + 2;
                            } else  if(timeSinceSell <= _boundTime / 2) {
                                feeFactor = _feeFactor + 1;
                            }
                        }
                    }
                    t.fee = (amount / _tx) * feeFactor;
                }
                if(ts == ITValues.TState.Buy) {
                    t.fee = amount / _tx;
                }
            }
        }
        // we can save gas by assuming all fees are uniform
        t.transferAmount = t.amount - (t.fee * 5);
        return (t, ts, txType);
    }

    function _transfer(address sender, address recipient, uint256 rate, ITValues.TxValue memory t, ITValues.TxType txType) internal {
        if (txType == ITValues.TxType.ToExcluded) {
            accounts[sender].nTotal         -= t.amount * rate;
            accounts[recipient].tTotal      += (t.transferAmount);
            accounts[recipient].nTotal      += t.transferAmount * rate;
        } else if (txType == ITValues.TxType.FromExcluded) {
            accounts[sender].tTotal         -= t.amount;
            accounts[sender].nTotal         -= t.amount * rate;
            accounts[recipient].nTotal      += t.transferAmount * rate;
        } else if (txType == ITValues.TxType.BothExcluded) {
            accounts[sender].tTotal         -= t.amount;
            accounts[sender].nTotal         -= (t.amount * rate);
            accounts[recipient].tTotal      += t.transferAmount;
            accounts[recipient].nTotal      += (t.transferAmount * rate);
        } else {
            accounts[sender].nTotal         -= (t.amount * rate);
            accounts[recipient].nTotal      += (t.transferAmount * rate);
        }
        emit Transfer(sender, recipient, t.transferAmount);
    }


    // ------ getters ------- //

    function isFeelessTx(address sender, address recipient) public view returns(bool) {
        return accounts[sender].feeless || accounts[recipient].feeless;
    }

    // for exchanges
    function getNotBound(address account) public view returns(bool) {
        return accounts[account].isNotBound;
    }

    function getAccount(address account) external view returns(Account memory) {
        return accounts[account];
    }

    function getAccountSpecific(address account) external view returns
        (
            bool feeless,
            bool isExcluded,
            bool isNotBound,
            bool isPossibleSniper,
            uint256 timesChargedAsSniper,
            uint256 tokens,
            uint256 lastTimeSell
        )
    {
        return (
            accounts[account].feeless,
            accounts[account].excluded,
            accounts[account].isNotBound,
            accounts[account].possibleSniper,
            accounts[account].votes,
            accounts[account].nTotal / ratio(),
            accounts[account].lastSell
        );
    }

    function getExcluded(address account) public view returns(bool) {
        return accounts[account].excluded;
    }

    function getCurrentLPBal() public view returns(uint256) {
        return IERC20(_pool).totalSupply();
    }

    function getMaxBal(address account) public view returns(uint256) {
        return accounts[account].maxBal;
    }

    function getTState(address sender, address recipient, uint256 lpAmount) public view returns(ITValues.TState) {
        ITValues.TState t;
        if(sender == _router) {
            t = ITValues.TState.Normal;
        } else if(accounts[sender].transferPair) {
            if(lpSupply != lpAmount) { // withdraw vs buy
                t = ITValues.TState.Normal;
            }
            t = ITValues.TState.Buy;
        } else if(accounts[recipient].transferPair) {
            t = ITValues.TState.Sell;
        } else {
            t = ITValues.TState.Normal;
        }
        return t;
    }

    function getCirculatingSupply() public view returns(uint256, uint256) {
        uint256 rSupply = networkSupply;
        uint256 tSupply = tokenSupply;
        for (uint256 i = 0; i < EnumerableSet.length(excludedAccounts); i++) {
            address account = EnumerableSet.at(excludedAccounts, i);
            uint256 rBalance = accounts[account].nTotal;
            uint256 tBalance = accounts[account].tTotal;
            if (rBalance > rSupply || tBalance > tSupply) return (networkSupply, tokenSupply);
            rSupply -= rBalance;
            tSupply -= tBalance;
        }
        if (rSupply < networkSupply / tokenSupply) return (networkSupply, tokenSupply);
        return (rSupply, tSupply);
    }

    function getPool() public view returns(address) {
        return _pool;
    }

    function getTxType(address sender, address recipient) public view returns(ITValues.TxType t) {
        bool isSenderExcluded = accounts[sender].excluded;
        bool isRecipientExcluded = accounts[recipient].excluded;
        if (isSenderExcluded && !isRecipientExcluded) {
            t = ITValues.TxType.FromExcluded;
        } else if (!isSenderExcluded && isRecipientExcluded) {
            t = ITValues.TxType.ToExcluded;
        } else if (!isSenderExcluded && !isRecipientExcluded) {
            t = ITValues.TxType.Standard;
        } else if (isSenderExcluded && isRecipientExcluded) {
            t = ITValues.TxType.BothExcluded;
        } else {
            t = ITValues.TxType.Standard;
        }
        return t;
    }

    function ratio() public view returns(uint256) {
        (uint256 n, uint256 t) = getCirculatingSupply();
        return n / t;
    }

    function syncPool() public  {
        IUniswapV2Pair(_pool).sync();
    }


    // ------ mutative -------

    function burn(uint256 rate) external ownerOnly {
        require(isNotKilled(0), "killed");
        require(rate >= 4, "can't burn more than 25%");
        require(block.timestamp > _lastBaseOrBurn, "too soon");
        uint256 r = accounts[_pool].nTotal;
        uint256 rTarget = (r / rate); // 4 for 25%
        uint256 t = rTarget / ratio();
        accounts[_pool].nTotal -= rTarget;
        accounts[defaultLastTxn].nTotal += rTarget;
        emit Transfer(_pool, defaultLastTxn, t);
        syncPool();
        _lastBaseOrBurn = block.timestamp + _BOBCooldown;
    }

    function base(uint256 rate) external ownerOnly {
        require(isNotKilled(1), "killed");
        require(rate >= 4, "can't rebase more than 25%");
        require(block.timestamp > _lastBaseOrBurn, "too soon");
        uint256 rTarget = (accounts[BURNADDR].nTotal / rate); // 4 for 25%
        accounts[BURNADDR].nTotal -= rTarget;
        networkSupply -= rTarget;
        syncPool();
        _lastBaseOrBurn = block.timestamp + _BOBCooldown;
    }

    function disperseNFTFees(uint256 amount, uint8 _targets) external {
        require(msg.sender == owner || msg.sender == address(ponzuNFT), "not allowed");
        require(_isNFTActive, "nft not active");
        require(isNotKilled(2), "killed");
        uint256 owners = ponzuNFT.ponzuNFTOwnersNow();
        uint256 share = amount / owners;
        uint256 rate = ratio();
        uint256 t = amount * rate;
        address target;
        if(_targets == 0) {
            target = msg.sender;
        } else if (_targets == 1) {
            target = BURNADDR;
        } else if (_targets == 2) {
            target = _pool;
        } else {
            target = ponzuT;
        }
        require(accounts[target].nTotal > t, "too much");
        accounts[target].nTotal -= t;
        for (uint256 i = 0; i < owners; i++) {
            address nftOwner = ponzuNFT.getNFTOwners(i);
            accounts[nftOwner].nTotal += share;
            emit Transfer(target, nftOwner, share / rate);
        }
    }

    // one way function, once called it will always be false.
    function enableTrading(uint256 timeInSeconds) external ownerOnly {
        _unpaused = true;
        _automatedPresaleTimerLock = block.timestamp + 4 days;
        _autoCapture = block.timestamp + timeInSeconds;
    } 

    function exclude(address account) external ownerOnly {
        require(!accounts[account].excluded, "Account is already excluded");
        accounts[account].excluded = true;
        if(accounts[account].nTotal > 0) {
            accounts[account].tTotal = accounts[account].nTotal / ratio();
        }
        EnumerableSet.add(excludedAccounts, account);
    }

    function include(address account) external ownerOnly {
        require(accounts[account].excluded, "Account is already excluded");
        accounts[account].tTotal = 0;
        EnumerableSet.remove(excludedAccounts, account);
    }

    function innocent(address account) external ownerOnly {
        accounts[account].possibleSniper = false;
        accounts[account].votes = 0;
        timeVotedOut[account] = 0;
    }

    function setBoundLimit(uint256 limit) external ownerOnly {
        require(limit <= 5, "too much");
        require(isNotKilled(20), "killed");

        _boundLimit = limit;
    }

    function setFeeFactor(uint256 factor) external ownerOnly {
        require(isNotKilled(3), "killed");
        require(factor <= 2, "too much");
        _feeFactor = factor;
    }

    function setIsFeeless(address account, bool isFeeless) external ownerOnly {
        accounts[account].feeless = isFeeless;
    }

    function setIsPresale(address a, bool b) public ownerOnly {
        require(!_unpaused, "can't set presalers anymore");
        accounts[a].isPresaler = b;
    }

    function setIsPresale(address[] calldata addresses, bool b) external ownerOnly {
        require(!_unpaused, "can't set presalers anymore");
        for (uint256 i = 0; i < addresses.length; i++) {
            accounts[addresses[i]].isPresaler = b;
        }
    }

    function setIsNotBound(add...

// [truncated — 61827 bytes total]

Read Contract

BURNADDR 0xd360af92 → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
calcT 0xf6b3a7c1 → tuple, uint8, uint8
decimals 0x313ce567 → uint8
defaultLastTxn 0x8d64ed0b → address
fees 0x9af1d35a → uint256
getAccount 0xfbcbc0f1 → tuple
getAccountSpecific 0x7f897f86 → bool, bool, bool, bool, uint256, uint256, uint256
getCirculatingSupply 0x2b112e49 → uint256, uint256
getCurrentLPBal 0x0c3d29a2 → uint256
getExcluded 0x21965351 → bool
getMaxBal 0xff6fb17d → uint256
getNotBound 0x8ea496ad → bool
getPool 0x026b1d5f → address
getTState 0xb4a64966 → uint8
getTxType 0x41280008 → uint8
isFeelessTx 0x59ef0781 → bool
isPresaleUnlocked 0xe5a63994 → bool
isUnbounded 0x89bb06fa → bool
lottoActive 0x7be4dba8 → bool
lottoCooldown 0xada8782e → uint256
lottoCount 0x7fbe9ba6 → uint256
lottoDeadline 0xacddcfc1 → uint256
lottoLimit 0x0f8cd083 → uint256
lottoReward 0xfa1aa9a4 → uint256
minLottoHolderRate 0xeb9c7326 → uint256
minimumForBonus 0x21ad189e → uint256
name 0x06fdde03 → string
networkSupply 0x2e4ab2f2 → uint256
owner 0x8da5cb5b → address
ratio 0x71ca337d → uint256
symbol 0x95d89b41 → string
tokenHolderRate 0x4580ef36 → uint256
tokenSupply 0x7824407f → uint256
topDogAddr 0xcd252201 → address
topDogAmount 0x3d6e3bee → uint256
topDogLimitSeconds 0x847d6d4c → uint256
topDogSince 0xf80311cc → uint256
totalSupply 0x18160ddd → uint256
voteLimit 0xf4a7ee73 → uint256

Write Contract 62 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
base 0x6c6eb9d1
uint256 rate
burn 0x42966c68
uint256 rate
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
disperseNFTFees 0x93198dfc
uint256 amount
uint8 _targets
enableTrading 0x82aa7c68
uint256 timeInSeconds
endLotto 0x75c451a3
uint256 randomNumber
enterLotto 0x90b841ec
No parameters
exclude 0x4febf53d
address account
include 0xc8673928
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
innocent 0x139f994a
address account
recoverERC20ForNoobs 0x366c3fe0
address tokenAddress
uint256 tokenAmount
reflectFromYouToEveryone 0x264cbb48
uint256 amount
renounceOwnership 0x715018a6
No parameters
resetTopDog 0x7452b3bc
No parameters
sendToBurn 0x5812a267
uint256 amount
setBOBCooldown 0x3da4e527
uint256 timeInSeconds
setBlessedAddr 0x3359b272
address setTo
setBoundLimit 0x86bc79d4
uint256 limit
setBoundTime 0xee622253
uint256 time
setBuyTimeout 0x1c35a04e
address addr
uint256 timeInSeconds
setFarm 0xd4f26c51
address farm
setFeeFactor 0xb5602dd6
uint256 factor
setHome 0x6ef0f37f
address addr
setIsCheckingBuySpam 0xdb105827
bool r
setIsFeeless 0x644a92f3
address account
bool isFeeless
setIsNotBound 0xb22cc3ee
address account
bool _isUnbound
setIsNotCheckingPresale 0x1ec26e82
bool v
setIsPresale 0x5039ca07
address a
bool b
setIsPresale 0xf9029ee3
address[] addresses
bool b
setIsUnbound 0xd5c0ff70
bool bounded
setKill 0xf8ded926
uint8 functionNumber
uint256 timeLimit
setMinHolderBonus 0x7f73b810
uint256 amt
setMinLottoHolderRate 0xe0a3033a
uint256 amt
setNFTActive 0x30af8896
bool b
setNFTContract 0xa7ccabdf
address contr
setPool 0x4437152a
address pool
setPresaleSellLimit 0x0bff8a50
uint256 limit
setPresaleUnlocked 0x9b436348
No parameters
setSlayerCooldown 0x1e0e3190
uint256 timeInSeconds
setTopDogLimitSeconds 0x085d2970
uint256 sec
setTransferPair 0xefb68364
address p
bool t
setTxnFee 0x27f84a23
uint256 r
setVRF 0xf5a62e19
address a
setVoteRequirement 0x66a320cd
uint256 _tokenHolderRate
setWhaleAccumulationLimit 0x11d4e30c
uint256 limit
smite 0x4eb27792
address bl
startLotto 0x95176892
uint256 amount
uint256 limit
uint256 timeFromNow
uint256 cooldown
bool _t
suspect 0xba785bac
address account
syncMaxBalForBound 0x1fb6edfc
address a
syncPool 0xad7e01be
No parameters
toggleDefaultLastTxn 0xa5623e87
bool isBurning
bool sellBlessBuys
toggleSniperChecking 0x3aa844df
No parameters
toggleWhaleLimiting 0xe8c28187
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
transferToFarm 0x08f822f6
uint256 amount
unsetBlessedAddr 0x62c02397
No parameters
updateAddrBal 0xe8e28ce7
address addr
vote 0x6dd7d8ea
address bl

Recent Transactions

No transactions found for this address