Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CannotRaiseFees", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "EthTransferFailed", "type": "error" }, { "inputs": [], "name": "GameAlreadyStarted", "type": "error" }, { "inputs": [], "name": "GameNotStarted", "type": "error" }, { "inputs": [], "name": "InvalidEthAmountForSale", "type": "error" }, { "inputs": [], "name": "NoETHSent", "type": "error" }, { "inputs": [], "name": "NoEthRewards", "type": "error" }, { "inputs": [], "name": "NoTokensToClaim", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], "name": "SaleAlreadyStarted", "type": "error" }, { "inputs": [], "name": "SaleCapHit", "type": "error" }, { "inputs": [], "name": "SaleEnded", "type": "error" }, { "inputs": [], "name": "SaleNotOver", "type": "error" }, { "inputs": [], "name": "SaleNotStarted", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "rewardsPool", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethSpent", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensPurchased", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "epochId", "type": "uint256" } ], "name": "BlastWinner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "epochId", "type": "uint256" } ], "name": "EpochExtended", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "epochId", "type": "uint256" } ], "name": "NewEpoch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "ethSpent", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensPurchased", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "epochId", "type": "uint256" } ], "name": "NewTopBlaster", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "pair", "type": "address" } ], "name": "PairCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "rewardsPool", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "epochId", "type": "uint256" } ], "name": "RewardsRolledOver", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKENS_FOR_LP", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKENS_FOR_SALE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKENS_FOR_TEAM", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountOutMin", "type": "uint256" } ], "name": "buyTokens", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "walletAddress", "type": "address" } ], "name": "claimEthByWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentEpochEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentEpochId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentEpochStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentTopBlaster", "outputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "pricePerToken", "type": "uint256" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "epochLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "ethClaimableByWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "ethSentForSale", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "extensionLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "joinSale", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "maximumSaleEntry", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minimumSaleEntry", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minimumTokenBuy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "percentOfSaleForFirstPot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "rescueERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardsPot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardsSellBps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "saleCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "saleLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "saleStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_epochLength", "type": "uint256" } ], "name": "setEpochLength", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "walletAddress", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "setExclusionForWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_extensionLength", "type": "uint256" } ], "name": "setExtensionLength", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minimumTokenBuy", "type": "uint256" } ], "name": "setMinimumTokenBuy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rewardsSellBps", "type": "uint256" } ], "name": "setRewardsSellBps", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startGame", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalEthSentForSale", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "uniswapV2Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040526709935f581f050000600e5561546060105561012c6011556102b260125534801561002e57600080fd5b50336040518060400160405280600b81526020016a2a37b810213630b9ba32b960a91b81525060405180604001604052806005815260200164212629aa2960d91b81525081600390816100819190610acf565b50600461008e8282610acf565b5050506001600160a01b0381166100c057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100c981610288565b506001600655734752ba5dbc23f44d87826276bf6fd6b1c372ad2460808190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101499190610b8d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ba9190610b8d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022b9190610b8d565b6001600160a01b031660a08190526040519081527fb14a725aeeb25d591b81b16b4c5b25403dd8867bdd1876fa787867f566206be19060200160405180910390a1610282306b033b2e3c9fd0803ce80000006102da565b50610cc0565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166103045760405163ec442f0560e01b8152600060048201526024016100b7565b61031060008383610314565b5050565b8060000361032d576103288383600061068a565b505050565b60075460ff1615806103465750600754610100900460ff165b156103565761032883838361068a565b601454421061059957600c546001600160a01b03161580159061037b57506000600f54115b156104ae57600a54600c546001600160a01b0316600090815260208190526040902054106104755760006064600f54605a6103b69190610bd3565b6103c09190610bf0565b905080600f60008282546103d49190610c12565b9091555050600c546001600160a01b03166000908152600d602052604081208054839290610403908490610c25565b9091555050600c54600954600a54600b54601554604080518781526020810195909552840192909252606083015260808201526001600160a01b03909116907f542a6c885ac281c1d83dfec24bbb0c4f1bbb0cab90ab099c654e7e18ab184aed9060a00160405180910390a2506104e3565b600080516020612dbc833981519152600f546015546040516104a1929190918252602082015260400190565b60405180910390a16104e3565b600080516020612dbc833981519152600f546015546040516104da929190918252602082015260400190565b60405180910390a15b4260138190556010546104f591610c25565b601455604080516080810182526000808252602082018190529181018290526060018190526009819055600a819055600b819055600c80546001600160a01b0319169055601580546001929061054c908490610c25565b909155505060135460145460155460408051938452602084019290925282820152517f3bb7b347508b7c148ec2094ac60d2e3d8b7595421025643f08b45cb78b326b589181900360600190a15b6001600160a01b03831660009081526008602052604090205460019060ff16806105db57506001600160a01b03831660009081526008602052604090205460ff165b156105e4575060005b8080156105f357506000601254115b8015610612575060a0516001600160a01b0316836001600160a01b0316145b156106795760006127106012548461062a9190610bd3565b6106349190610bf0565b90508015610677576007805461ff0019166101001790556106558184610c12565b925061066285308361068a565b61066b816107b4565b6007805461ff00191690555b505b61068484848461068a565b50505050565b6001600160a01b0383166106b55780600260008282546106aa9190610c25565b909155506107279050565b6001600160a01b038316600090815260208190526040902054818110156107085760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b7565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661074357600280548290039055610762565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107a791815260200190565b60405180910390a3505050565b476107be826107e8565b60006107ca8247610c12565b905080600f60008282546107de9190610c25565b9091555050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061081d5761081d610c38565b60200260200101906001600160a01b031690816001600160a01b0316815250506080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a19190610b8d565b816001815181106108b4576108b4610c38565b60200260200101906001600160a01b031690816001600160a01b0316815250506108e7306080518461095460201b60201c565b6080516001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b815260040161091e959493929190610c4e565b600060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b505050505050565b61032883838360016001600160a01b0384166109865760405163e602df0560e01b8152600060048201526024016100b7565b6001600160a01b0383166109b057604051634a1406b160e11b8152600060048201526024016100b7565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561068457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a2391815260200190565b60405180910390a350505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610a5b57607f821691505b602082108103610a7b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c81016020851015610aa85750805b601f840160051c820191505b81811015610ac85760008155600101610ab4565b5050505050565b81516001600160401b03811115610ae857610ae8610a31565b610afc81610af68454610a47565b84610a81565b6020601f821160018114610b305760008315610b185750848201515b600019600385901b1c1916600184901b178455610ac8565b600084815260208120601f198516915b82811015610b605787850151825560209485019460019092019101610b40565b5084821015610b7e5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215610b9f57600080fd5b81516001600160a01b0381168114610bb657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bea57610bea610bbd565b92915050565b600082610c0d57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bea57610bea610bbd565b80820180821115610bea57610bea610bbd565b634e487b7160e01b600052603260045260246000fd5b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015610ca05783516001600160a01b0316835260209384019390920191600101610c79565b50506001600160a01b039590951660608401525050608001529392505050565b60805160a0516120a6610d16600039600081816104fd015261192f015260008181610c1001528181610cfc0152818161142f0152818161146201528181611b8601528181611c3f0152611c7b01526120a66000f3fe60806040526004361061028c5760003560e01c806361a8c8c41161015a578063ab0bcc41116100c1578063d65ab5f21161007a578063d65ab5f214610787578063dd62ed3e1461079c578063e13cbe38146107e2578063eacdc5ff146107f8578063f2fde38b1461080e578063f81d583d1461082e57600080fd5b8063ab0bcc4114610703578063b66a0e5d14610719578063bc941a531461072e578063c6ca226314610744578063c8612b2f146105b9578063d2587f111461075a57600080fd5b806385aa4bc21161011357806385aa4bc2146106565780638cd4426d146106715780638da5cb5b1461069157806395d89b41146106af578063a4ec4820146106c4578063a9059cbb146106e357600080fd5b806361a8c8c4146105a35780636ba20ab5146105b95780636d264d35146105d957806370a08231146105f5578063715018a61461062b5780637404a1fd1461064057600080fd5b8063313ce567116101fe57806348c54b9d116101b757806348c54b9d146104d657806349bd5a5e146104eb57806353d260771461053757806354eea7961461054d57806357d775f81461056d5780635f2b7b781461058357600080fd5b8063313ce5671461043b57806332cb6b0c1461045757806332d3a3ed146104775780633610724e1461048d5780634208878b146104a0578063436ba37a146104b657600080fd5b80630e5e0179116102505780630e5e01791461039157806318160ddd146103b15780631b696102146103c657806323b872dd146103e657806326c23c8214610406578063294a63761461040e57600080fd5b8063014170181461029857806306fdde03146102f2578063078fd9ea14610314578063095ea7b31461033f5780630aa322231461036f57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b50600954600a54600b54600c546102c4939291906001600160a01b031684565b604080519485526020850193909352918301526001600160a01b031660608201526080015b60405180910390f35b3480156102fe57600080fd5b50610307610843565b6040516102e99190611cef565b34801561032057600080fd5b5061033168015af1d78b58c4000081565b6040519081526020016102e9565b34801561034b57600080fd5b5061035f61035a366004611d52565b6108d5565b60405190151581526020016102e9565b34801561037b57600080fd5b5061038f61038a366004611d8c565b6108ef565b005b34801561039d57600080fd5b5061038f6103ac366004611dc5565b610922565b3480156103bd57600080fd5b50600254610331565b3480156103d257600080fd5b5061038f6103e1366004611de9565b6109f4565b3480156103f257600080fd5b5061035f610401366004611e02565b610a01565b61038f610a25565b34801561041a57600080fd5b50610331610429366004611dc5565b60176020526000908152604090205481565b34801561044757600080fd5b50604051601281526020016102e9565b34801561046357600080fd5b506103316b033b2e3c9fd0803ce800000081565b34801561048357600080fd5b50610331600e5481565b61038f61049b366004611de9565b610b91565b3480156104ac57600080fd5b5061033160115481565b3480156104c257600080fd5b5061038f6104d1366004611de9565b610db9565b3480156104e257600080fd5b5061038f610dc6565b3480156104f757600080fd5b5061051f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102e9565b34801561054357600080fd5b5061033160185481565b34801561055957600080fd5b5061038f610568366004611de9565b610e62565b34801561057957600080fd5b5061033160105481565b34801561058f57600080fd5b5061038f61059e366004611de9565b610e6f565b3480156105af57600080fd5b5061033160135481565b3480156105c557600080fd5b506103316b01912ebeaeca3e320500000081565b3480156105e557600080fd5b50610331670de0b6b3a764000081565b34801561060157600080fd5b50610331610610366004611dc5565b6001600160a01b031660009081526020819052604090205490565b34801561063757600080fd5b5061038f610e9f565b34801561064c57600080fd5b50610331600f5481565b34801561066257600080fd5b50610331662386f26fc1000081565b34801561067d57600080fd5b5061038f61068c366004611d52565b610eb1565b34801561069d57600080fd5b506005546001600160a01b031661051f565b3480156106bb57600080fd5b50610307610f50565b3480156106d057600080fd5b506103316a18d0bf423c03d8de00000081565b3480156106ef57600080fd5b5061035f6106fe366004611d52565b610f5f565b34801561070f57600080fd5b5061033160165481565b34801561072557600080fd5b5061038f610f6d565b34801561073a57600080fd5b5061033160125481565b34801561075057600080fd5b5061033160145481565b34801561076657600080fd5b50610331610775366004611dc5565b600d6020526000908152604090205481565b34801561079357600080fd5b5061038f610f9c565b3480156107a857600080fd5b506103316107b7366004611e43565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107ee57600080fd5b5061033161038481565b34801561080457600080fd5b5061033160155481565b34801561081a57600080fd5b5061038f610829366004611dc5565b6110f8565b34801561083a57600080fd5b50610331601481565b60606003805461085290611e71565b80601f016020809104026020016040519081016040528092919081815260200182805461087e90611e71565b80156108cb5780601f106108a0576101008083540402835291602001916108cb565b820191906000526020600020905b8154815290600101906020018083116108ae57829003601f168201915b5050505050905090565b6000336108e3818585611138565b60019150505b92915050565b6108f7611145565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b61092a611172565b6001600160a01b0381166000908152600d6020526040812054908190036109645760405163062549f960e01b815260040160405180910390fd5b6001600160a01b0382166000818152600d60205260408082208290555190919083908381818185875af1925050503d80600081146109be576040519150601f19603f3d011682016040523d82523d6000602084013e6109c3565b606091505b50509050806109e557604051630db2c7f160e31b815260040160405180910390fd5b50506109f16001600655565b50565b6109fc611145565b601155565b600033610a0f85828561119c565b610a1a85858561121a565b506001949350505050565b610a2d611172565b601654600003610a50576040516316851a3760e11b815260040160405180910390fd5b610384601654610a609190611ec1565b421115610a8057604051630bd8a3eb60e01b815260040160405180910390fd5b34600003610aa15760405163ea565ae960e01b815260040160405180910390fd5b68015af1d78b58c4000034601854610ab99190611ec1565b1115610ad857604051639dd7439360e01b815260040160405180910390fd5b610ae9662386f26fc1000034611eea565b15610b075760405163ea565ae960e01b815260040160405180910390fd5b33600090815260176020526040812054610b22903490611ec1565b9050662386f26fc10000811080610b405750670de0b6b3a764000081115b15610b5e5760405163ea565ae960e01b815260040160405180910390fd5b33600090815260176020526040812082905560188054349290610b82908490611ec1565b9091555050600160065550565b565b610b99611172565b60075460ff16610bbc57604051633a5f7b5760e01b815260040160405180910390fd5b34600003610bdd57604051630b7cc7c360e11b815260040160405180910390fd5b336000908152602081815260408083205481516002808252606082018452919493909290830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c909190611efe565b81600081518110610ca357610ca3611f1b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610cd757610cd7611f1b565b6001600160a01b03928316602091820292909201015260405163b6f9de9560e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063b6f9de95903490610d3b908790869033904290600401611f76565b6000604051808303818588803b158015610d5457600080fd5b505af1158015610d68573d6000803e3d6000fd5b50505050506000610d8e336001600160a01b031660009081526020819052604090205490565b90506000610d9c8483611fab565b905034610daa338284611279565b50505050506109f16001600655565b610dc1611145565b600e55565b60075460ff16610de957604051633a5f7b5760e01b815260040160405180910390fd5b3360009081526017602052604081205490819003610e195760405162f3f86160e41b815260040160405180910390fd5b601854600090610e356b01912ebeaeca3e320500000084611fbe565b610e3f9190611fd5565b33600081815260176020526040812055909150610e5e9030908361121a565b5050565b610e6a611145565b601055565b610e77611145565b601254811115610e9a5760405163350ff4d960e11b815260040160405180910390fd5b601255565b610ea7611145565b610b8f60006113d7565b610eb9611145565b816001600160a01b031663a9059cbb610eda6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4b9190611fe9565b505050565b60606004805461085290611e71565b6000336108e381858561121a565b610f75611145565b60165415610f965760405163291659fd60e11b815260040160405180910390fd5b42601655565b610fa4611145565b601654600003610fc7576040516316851a3760e11b815260040160405180910390fd5b610384601654610fd79190611ec1565b4211610ff65760405163265dc59d60e01b815260040160405180910390fd5b60075460ff161561101a5760405163ba26162b60e01b815260040160405180910390fd5b611041306110306005546001600160a01b031690565b6a18d0bf423c03d8de00000061121a565b6000601460646018546110549190611fd5565b61105e9190611fbe565b90506000816018546110709190611fab565b905081600f60008282546110849190611ec1565b90915550611093905081611429565b4260138190556010546110a591611ec1565b601481905560016015819055601354604080519182526020820193909352918201527f3bb7b347508b7c148ec2094ac60d2e3d8b7595421025643f08b45cb78b326b589060600160405180910390a15050565b611100611145565b6001600160a01b03811661112f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6109f1816113d7565b610f4b8383836001611553565b6005546001600160a01b03163314610b8f5760405163118cdaa760e01b8152336004820152602401611126565b60026006540361119557604051633ee5aeb560e01b815260040160405180910390fd5b6002600655565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611214578181101561120557604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401611126565b61121484848484036000611553565b50505050565b6001600160a01b03831661124457604051634b637e8f60e11b815260006004820152602401611126565b6001600160a01b03821661126e5760405163ec442f0560e01b815260006004820152602401611126565b610f4b838383611628565b600e5482101561128857505050565b6000816112a4846ec097ce7bc90715b34b9f1000000000611fbe565b6112ae9190611fd5565b600b549091508111806112ca5750600c546001600160a01b0316155b15611214576014546011546112df9042611ec1565b111561133a576011546112f29042611ec1565b60148190556015546040517fdc33e2b80759ea7a933ccfbd652264d95ce39c19d67461a62c927e0a9411911f9261133192908252602082015260400190565b60405180910390a15b604080516080808201835285825260208083018690528284018590526001600160a01b03881660609384018190526009889055600a879055600b869055600c80546001600160a01b0319168217905560155485518981529283018890529482018690529281019390935290917f6b9442ab1eff55b003ba9a6472175b699e4bac0d9ffcb492489e898d25baf7a3910160405180910390a250505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611460307f00000000000000000000000000000000000000000000000000000000000000006b01912ebeaeca3e3205000000611138565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d71982306b01912ebeaeca3e32050000006000806114b36005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561151b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115409190612006565b50506007805460ff191660011790555050565b6001600160a01b03841661157d5760405163e602df0560e01b815260006004820152602401611126565b6001600160a01b0383166115a757604051634a1406b160e11b815260006004820152602401611126565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561121457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161161a91815260200190565b60405180910390a350505050565b8060000361163c57610f4b838360006119d1565b60075460ff1615806116555750600754610100900460ff165b1561166557610f4b8383836119d1565b60145442106118cc57600c546001600160a01b03161580159061168a57506000600f54115b156117cf57600a54600c546001600160a01b0316600090815260208190526040902054106117845760006064600f54605a6116c59190611fbe565b6116cf9190611fd5565b905080600f60008282546116e39190611fab565b9091555050600c546001600160a01b03166000908152600d602052604081208054839290611712908490611ec1565b9091555050600c54600954600a54600b54601554604080518781526020810195909552840192909252606083015260808201526001600160a01b03909116907f542a6c885ac281c1d83dfec24bbb0c4f1bbb0cab90ab099c654e7e18ab184aed9060a00160405180910390a250611816565b7f071266e52b20c70dafeb2d2edcb81921a01b06a15c8c815c7c84fb7db47c7c72600f546015546040516117c2929190918252602082015260400190565b60405180910390a1611816565b7f071266e52b20c70dafeb2d2edcb81921a01b06a15c8c815c7c84fb7db47c7c72600f5460155460405161180d929190918252602082015260400190565b60405180910390a15b42601381905560105461182891611ec1565b601455604080516080810182526000808252602082018190529181018290526060018190526009819055600a819055600b819055600c80546001600160a01b0319169055601580546001929061187f908490611ec1565b909155505060135460145460155460408051938452602084019290925282820152517f3bb7b347508b7c148ec2094ac60d2e3d8b7595421025643f08b45cb78b326b589181900360600190a15b6001600160a01b03831660009081526008602052604090205460019060ff168061190e57506001600160a01b03831660009081526008602052604090205460ff165b15611917575060005b80801561192657506000601254115b801561196357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b156119ca5760006127106012548461197b9190611fbe565b6119859190611fd5565b905080156119c8576007805461ff0019166101001790556119a68184611fab565b92506119b38530836119d1565b6119bc81611afb565b6007805461ff00191690555b505b6112148484845b6001600160a01b0383166119fc5780600260008282546119f19190611ec1565b90915550611a6e9050565b6001600160a01b03831660009081526020819052604090205481811015611a4f5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401611126565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216611a8a57600280548290039055611aa9565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611aee91815260200190565b60405180910390a3505050565b47611b0582611b2f565b6000611b118247611fab565b905080600f6000828254611b259190611ec1565b9091555050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b6457611b64611f1b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c069190611efe565b81600181518110611c1957611c19611f1b565b60200260200101906001600160a01b031690816001600160a01b031681525050611c64307f000000000000000000000000000000000000000000000000000000000000000084611138565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611cb9908590600090869030904290600401612034565b600060405180830381600087803b158015611cd357600080fd5b505af1158015611ce7573d6000803e3d6000fd5b505050505050565b602081526000825180602084015260005b81811015611d1d5760208186018101516040868401015201611d00565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146109f157600080fd5b60008060408385031215611d6557600080fd5b8235611d7081611d3d565b946020939093013593505050565b80151581146109f157600080fd5b60008060408385031215611d9f57600080fd5b8235611daa81611d3d565b91506020830135611dba81611d7e565b809150509250929050565b600060208284031215611dd757600080fd5b8135611de281611d3d565b9392505050565b600060208284031215611dfb57600080fd5b5035919050565b600080600060608486031215611e1757600080fd5b8335611e2281611d3d565b92506020840135611e3281611d3d565b929592945050506040919091013590565b60008060408385031215611e5657600080fd5b8235611e6181611d3d565b91506020830135611dba81611d3d565b600181811c90821680611e8557607f821691505b602082108103611ea557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108e9576108e9611eab565b634e487b7160e01b600052601260045260246000fd5b600082611ef957611ef9611ed4565b500690565b600060208284031215611f1057600080fd5b8151611de281611d3d565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b82811015611f6c5781516001600160a01b0316865260209586019590910190600101611f45565b5093949350505050565b848152608060208201526000611f8f6080830186611f31565b6001600160a01b03949094166040830152506060015292915050565b818103818111156108e9576108e9611eab565b80820281158282048414176108e9576108e9611eab565b600082611fe457611fe4611ed4565b500490565b600060208284031215611ffb57600080fd5b8151611de281611d7e565b60008060006060848603121561201b57600080fd5b5050815160208301516040909301519094929350919050565b85815284602082015260a06040820152600061205360a0830186611f31565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220745b8fe1835295f4db0f43e86d71437512ea8b9ac9c874940c449ed36a4b4dd064736f6c634300081c0033071266e52b20c70dafeb2d2edcb81921a01b06a15c8c815c7c84fb7db47c7c72