[ { "inputs": [ { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_marketer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": false, "internalType": "uint256", "name": "_amountETHLiquidity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_amountToLiquify", "type": "uint256" } ], "name": "AutoLiquify", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_duration", "type": "uint256" } ], "name": "BuybackMultiplierActive", "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": 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": "Collect", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "EP", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MASK", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxTxAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "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": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "approveMax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "adr", "type": "address" } ], "name": "authorize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoBuybackEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "autoLiquidityReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_black", "type": "address" } ], "name": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "checkFree", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clearBuybackMultiplier", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "developerFeeReciver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableTransferDelay", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "distributorAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCirculatingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "accuracy", "type": "uint256" } ], "name": "getLiquidityBacking", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "adr", "type": "address" } ], "name": "isAuthorized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isFree", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "target", "type": "uint256" }, { "internalType": "uint256", "name": "accuracy", "type": "uint256" } ], "name": "isOverLiquified", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "launchedAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launchedAtTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketingFeeReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract INetswapRouter02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "routerAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enabled", "type": "bool" }, { "internalType": "uint256", "name": "_cap", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "uint256", "name": "_period", "type": "uint256" } ], "name": "setAutoBuybackSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "setBuybackMultiplierSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "_minDistribution", "type": "uint256" } ], "name": "setDistributionCriteria", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "gas", "type": "uint256" } ], "name": "setDistributorSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_ep", "type": "address" } ], "name": "setEPAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_ep", "type": "address" } ], "name": "setEPContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_autoLiquidityReceiver", "type": "address" }, { "internalType": "address", "name": "_marketingFeeReceiver", "type": "address" } ], "name": "setFeeReceivers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_buybackFee", "type": "uint256" }, { "internalType": "uint256", "name": "_reflectionFee", "type": "uint256" }, { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_feeDenominator", "type": "uint256" } ], "name": "setFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "setFree", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "bool", "name": "exempt", "type": "bool" } ], "name": "setIsFeeExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "bool", "name": "exempt", "type": "bool" } ], "name": "setIsRewardExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "bool", "name": "exempt", "type": "bool" } ], "name": "setIsTxLimitExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enabled", "type": "bool" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "setSwapBackSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_target", "type": "uint256" }, { "internalType": "uint256", "name": "_denominator", "type": "uint256" } ], "name": "setTargetLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setTxLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferDelayEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "unSetFree", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "adr", "type": "address" } ], "name": "unauthorize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_black", "type": "address" } ], "name": "unblacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawEther", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052620000126012600a620006ed565b6200002290633b9aca00620006fe565b6002819055600580546001600160a01b031990811661dead179091556006805482169055600780548216905560088054821673deaddeaddeaddeaddeaddeaddeaddeaddead00001790556207a120600e556011805460ff19166001179055610258601255612710601355606460148190556101f46015556000601681905560178190556018556019805483169055601a805483169055601b80549092169091556103e8601c55601d55620000d8906096620004f8565b601e55600254620000eb906096620004f8565b601f5560c86026556064602755610708602855602a805460ff1990811690915560318054909116600117905560025462000129906103e89062000718565b6032553480156200013957600080fd5b5060405162003e4e38038062003e4e8339810160408190526200015c9162000758565b62000167336200050f565b336000818152600160208181526040808420805460ff191690931790925560078054306001600160a01b03199182161790915560198054821686179055601a805482166001600160a01b0388811691909117909155601b80548316909617909555600a8054821695881695861790556009805490911685179055815163c45a015560e01b8152915192939263c45a01559260048082019392918290030181865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000790565b9050806001600160a01b031663c9c65396600960009054906101000a90046001600160a01b03166001600160a01b031663be159a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cb919062000790565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e919062000790565b600b80546001600160a01b0319166001600160a01b03928316179055306000908152600460209081526040808320938716835292905281902060001990555183906200038a90620005cc565b6001600160a01b039091168152602001604051809103906000f080158015620003b7573d6000803e3d6000fd5b50600c80546001600160a01b039283166001600160a01b03199182168117909255600d80548216909217909155336000818152602360209081526040808320805460ff1990811660019081179092558380528285208054821683179055602184528285208054821683179055600b5488168552602284528285208054821683179055308552828520805482168317905560055490971684528184208054881682179055848452602b90925290912080549094161790925560198054909116909117905562000488836000196200055f565b50600b54620004a3906001600160a01b03166000196200055f565b5060025433600081815260036020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050620007ae565b600062000506828462000718565b90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620005bb9086815260200190565b60405180910390a350600192915050565b610c8d80620031c183390190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000631578160001904821115620006155762000615620005da565b808516156200062357918102915b93841c9390800290620005f5565b509250929050565b6000826200064a5750600162000509565b81620006595750600062000509565b81600181146200067257600281146200067d576200069d565b600191505062000509565b60ff841115620006915762000691620005da565b50506001821b62000509565b5060208310610133831016604e8410600b8410161715620006c2575081810a62000509565b620006ce8383620005f0565b8060001904821115620006e557620006e5620005da565b029392505050565b60006200050660ff84168362000639565b8082028115828204841417620005095762000509620005da565b6000826200073657634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200075357600080fd5b919050565b600080604083850312156200076c57600080fd5b62000777836200073b565b915062000787602084016200073b565b90509250929050565b600060208284031215620007a357600080fd5b62000506826200073b565b612a0380620007be6000396000f3fe6080604052600436106103d25760003560e01c806382247ec0116101fd578063c6d2577d11610118578063e91f214e116100ab578063f84ba65d1161007a578063f84ba65d14610b4e578063f887ea4014610b6e578063f9f92be414610b8e578063fe575a8714610bae578063fe9fbb8014610be757600080fd5b8063e91f214e14610aca578063e96fada214610aee578063f0b37c0414610b0e578063f2fde38b14610b2e57600080fd5b8063d51ed1c8116100e7578063d51ed1c814610a2f578063dd62ed3e14610a4f578063df20fd4914610a95578063e884f26014610ab557600080fd5b8063c6d2577d146109df578063c876d0b9146109f5578063ca33e64c14610a0f578063d1b6a9f01461067e57600080fd5b8063a9059cbb11610190578063b210b06d1161015f578063b210b06d1461097f578063b6a5d7de14610994578063bf56b371146109b4578063c1826d78146109ca57600080fd5b8063a9059cbb146108ef578063ace117831461090f578063ad5c46481461093f578063b10abe441461095f57600080fd5b80639d1944f5116101cc5780639d1944f51461086f578063a4b45c001461088f578063a51af4c5146108af578063a8aa1b31146108cf57600080fd5b806382247ec0146107ee57806389ef69f6146108045780638da5cb5b1461082457806395d89b411461084257600080fd5b80633268cc56116102ed5780635d0044ca11610280578063715018a61161024f578063715018a61461078e57806375e3661e146107a35780637ae316d0146107c35780637d1db4a5146107d857600080fd5b80635d0044ca146106fe578063658d4b7f1461071e5780636ddd17131461073e57806370a082311461075857600080fd5b80634f7821f9116102bc5780634f7821f91461067e578063522f68151461069e578063571ac8b0146106be5780635c85974f146106de57600080fd5b80633268cc56146106045780633425c0011461062457806335ddf3a7146106445780633bb8a8d41461066457600080fd5b806318160ddd1161036557806323b872dd1161033457806323b872dd146105935780632b112e49146105b35780632d48e896146105c8578063313ce567146105e857600080fd5b806318160ddd14610506578063201e79911461051b5780632119fd5a1461053b5780632375ce401461057357600080fd5b806306fdde03116103a157806306fdde031461045e57806307c89fe814610496578063095ea7b3146104c65780631161ae39146104e657600080fd5b806301339c21146103de5780630445b667146103f5578063048c7baf1461041e57806304a66b481461043e57600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610c07565b005b34801561040157600080fd5b5061040b60325481565b6040519081526020015b60405180910390f35b34801561042a57600080fd5b506103f36104393660046125e8565b610c82565b34801561044a57600080fd5b506103f3610459366004612621565b610cd0565b34801561046a57600080fd5b506040805180820190915260068152652a32b9ba191960d11b60208201525b604051610415919061265c565b3480156104a257600080fd5b506104b66104b13660046126bf565b610d46565b6040519015158152602001610415565b3480156104d257600080fd5b506104b66104e13660046126dc565b610d73565b3480156104f257600080fd5b506104b6610501366004612708565b610de0565b34801561051257600080fd5b5060025461040b565b34801561052757600080fd5b506103f3610536366004612708565b610df4565b34801561054757600080fd5b50601b5461055b906001600160a01b031681565b6040516001600160a01b039091168152602001610415565b34801561057f57600080fd5b506103f361058e36600461272a565b610e24565b34801561059f57600080fd5b506104b66105ae366004612756565b610e79565b3480156105bf57600080fd5b5061040b610f3d565b3480156105d457600080fd5b506103f36105e3366004612708565b610f8f565b3480156105f457600080fd5b5060405160128152602001610415565b34801561061057600080fd5b50600a5461055b906001600160a01b031681565b34801561063057600080fd5b506103f361063f3660046126bf565b61101e565b34801561065057600080fd5b506103f361065f366004612797565b611047565b34801561067057600080fd5b50602a546104b69060ff1681565b34801561068a57600080fd5b506103f36106993660046126bf565b61114f565b3480156106aa57600080fd5b506103f36106b93660046126dc565b611179565b3480156106ca57600080fd5b506104b66106d93660046126bf565b61126c565b3480156106ea57600080fd5b506103f36106f93660046127cc565b61127a565b34801561070a57600080fd5b506103f36107193660046127cc565b6112c0565b34801561072a57600080fd5b506103f3610739366004612797565b611306565b34801561074a57600080fd5b506031546104b69060ff1681565b34801561076457600080fd5b5061040b6107733660046126bf565b6001600160a01b031660009081526003602052604090205490565b34801561079a57600080fd5b506103f3611355565b3480156107af57600080fd5b506103f36107be3660046126bf565b611369565b3480156107cf57600080fd5b5060125461040b565b3480156107e457600080fd5b5061040b601e5481565b3480156107fa57600080fd5b5061040b601f5481565b34801561081057600080fd5b506103f361081f3660046126bf565b611392565b34801561083057600080fd5b506000546001600160a01b031661055b565b34801561084e57600080fd5b5060408051808201909152600481526315195cdd60e21b6020820152610489565b34801561087b57600080fd5b506103f361088a3660046127cc565b6113be565b34801561089b57600080fd5b506103f36108aa3660046127e5565b6113f7565b3480156108bb57600080fd5b50600d5461055b906001600160a01b031681565b3480156108db57600080fd5b50600b5461055b906001600160a01b031681565b3480156108fb57600080fd5b506104b661090a3660046126dc565b61144a565b34801561091b57600080fd5b506104b661092a3660046126bf565b60236020526000908152604090205460ff1681565b34801561094b57600080fd5b5060085461055b906001600160a01b031681565b34801561096b57600080fd5b5060075461055b906001600160a01b031681565b34801561098b57600080fd5b506103f3611457565b3480156109a057600080fd5b506103f36109af3660046126bf565b611483565b3480156109c057600080fd5b5061040b60245481565b3480156109d657600080fd5b506103f36114b2565b3480156109eb57600080fd5b5061040b60255481565b348015610a0157600080fd5b506011546104b69060ff1681565b348015610a1b57600080fd5b5060195461055b906001600160a01b031681565b348015610a3b57600080fd5b5061040b610a4a3660046127cc565b6114e9565b348015610a5b57600080fd5b5061040b610a6a3660046127e5565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610aa157600080fd5b506103f3610ab036600461281e565b61152d565b348015610ac157600080fd5b506104b6611569565b348015610ad657600080fd5b5061040b6fffffffffffffffffffffffffffffffff81565b348015610afa57600080fd5b50601a5461055b906001600160a01b031681565b348015610b1a57600080fd5b506103f3610b293660046126bf565b611583565b348015610b3a57600080fd5b506103f3610b493660046126bf565b6115ac565b348015610b5a57600080fd5b506103f3610b69366004612797565b61164b565b348015610b7a57600080fd5b5060095461055b906001600160a01b031681565b348015610b9a57600080fd5b506103f3610ba93660046126bf565b61169b565b348015610bba57600080fd5b506104b6610bc93660046126bf565b6001600160a01b031660009081526010602052604090205460ff1690565b348015610bf357600080fd5b506104b6610c023660046126bf565b6116c7565b610c10336116c7565b610c355760405162461bcd60e51b8152600401610c2c9061283a565b60405180910390fd5b60245415610c785760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610c2c565b4360245542602555565b610c8b336116c7565b610ca75760405162461bcd60e51b8152600401610c2c9061283a565b602a805460ff191694151594909417909355602c919091556000602d55602e55602f5543603055565b610cd9336116c7565b610cf55760405162461bcd60e51b8152600401610c2c9061283a565b6014859055601884905560158390556016829055610d1f82610d19858189896116e5565b906116e5565b6012556013819055610d32600482612875565b60125410610d3f57600080fd5b5050505050565b6000610d506116f1565b506001600160a01b03811660009081526023602052604090205460ff165b919050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610dce9086815260200190565b60405180910390a35060015b92915050565b600082610dec836114e9565b119392505050565b610dfd336116c7565b610e195760405162461bcd60e51b8152600401610c2c9061283a565b601c91909155601d55565b610e2d336116c7565b610e495760405162461bcd60e51b8152600401610c2c9061283a565b6002610e558385612875565b11158015610e6257508183115b610e6b57600080fd5b602692909255602755602855565b6002546001600160a01b0384166000908152600460209081526040808320338452909152812054909114610f28576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600482528381203382529091529190912054610f0391849061174b565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b610f33848484611777565b90505b9392505050565b6006546001600160a01b0316600090815260036020526040812054610f8a906005546001600160a01b0316600090815260036020526040902054610f849060025490611d0e565b90611d0e565b905090565b610f98336116c7565b610fb45760405162461bcd60e51b8152600401610c2c9061283a565b600c546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561100257600080fd5b505af1158015611016573d6000803e3d6000fd5b505050505050565b6110266116f1565b6001600160a01b03166000908152602360205260409020805460ff19169055565b611050336116c7565b61106c5760405162461bcd60e51b8152600401610c2c9061283a565b6001600160a01b03821630148015906110935750600b546001600160a01b03838116911614155b61109c57600080fd5b6001600160a01b0382166000908152602260205260409020805460ff1916821580159190911790915561110257600c54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610fe8565b600c546001600160a01b0383811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610fe8565b5050565b6111576116f1565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6111816116f1565b804710156111d15760405162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742062616c616e636520696e20636f6e74726163746044820152606401610c2c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461121e576040519150601f19603f3d011682016040523d82523d6000602084013e611223565b606091505b50509050806112675760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610c2c565b505050565b6000610dda82600254610d73565b611283336116c7565b61129f5760405162461bcd60e51b8152600401610c2c9061283a565b6103e86002546112af9190612875565b8110156112bb57600080fd5b601e55565b6112c9336116c7565b6112e55760405162461bcd60e51b8152600401610c2c9061283a565b6103e86002546112f59190612875565b81101561130157600080fd5b601f55565b61130f336116c7565b61132b5760405162461bcd60e51b8152600401610c2c9061283a565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b61135d6116f1565b6113676000611d1a565b565b6113716116f1565b6001600160a01b03166000908152601060205260409020805460ff19169055565b61139a6116f1565b6001600160a01b03166000908152602360205260409020805460ff19166001179055565b6113c7336116c7565b6113e35760405162461bcd60e51b8152600401610c2c9061283a565b620b71b081106113f257600080fd5b600e55565b611400336116c7565b61141c5760405162461bcd60e51b8152600401610c2c9061283a565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b6000610f36338484611777565b611460336116c7565b61147c5760405162461bcd60e51b8152600401610c2c9061283a565b6000602955565b61148b6116f1565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6114ba6116f1565b6040514790339082156108fc029083906000818181858888f1935050505015801561114b573d6000803e3d6000fd5b6000610dda6114f6610f3d565b600b546001600160a01b031660009081526003602052604090205461152790611520906002611d6a565b8590611d6a565b90611d76565b611536336116c7565b6115525760405162461bcd60e51b8152600401610c2c9061283a565b6031805460ff191692151592909217909155603255565b60006115736116f1565b506011805460ff19169055600190565b61158b6116f1565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6115b46116f1565b6001600160a01b0381166116195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c2c565b6001600160a01b0381166000908152600160208190526040909120805460ff1916909117905561164881611d1a565b50565b611654336116c7565b6116705760405162461bcd60e51b8152600401610c2c9061283a565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6116a36116f1565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000610f368284612897565b6000546001600160a01b031633146113675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c2c565b6000818484111561176f5760405162461bcd60e51b8152600401610c2c919061265c565b505050900390565b6001600160a01b03831660009081526010602052604081205460ff16156117d55760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dadb1a5cdd195960721b6044820152606401610c2c565b6001600160a01b03831660009081526010602052604090205460ff16156118355760405162461bcd60e51b8152602060048201526014602482015273149958d95a5d995c88189b1858dadb1a5cdd195960621b6044820152606401610c2c565b60335460ff16156118525761184b848484611d82565b9050610f36565b60115460ff1615611962576000546001600160a01b038481169116148015906118895750600a546001600160a01b03848116911614155b80156118a35750600b546001600160a01b03848116911614155b1561196257326000908152600f602052604090205443906118c5906001612897565b1061194f5760405162461bcd60e51b815260206004820152604e60248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260648201526d3637b1b5b99030b63637bbb2b21760911b608482015260a401610c2c565b326000908152600f602052604090204390555b600b546000906001600160a01b038581169116148061198e5750600a546001600160a01b038581169116145b905061199a8584611e25565b801580156119c157506001600160a01b03841660009081526023602052604090205460ff16155b15611a3a57601f546001600160a01b0385166000908152600360205260409020546119ed908590612897565b10611a3a5760405162461bcd60e51b815260206004820152601d60248201527f4d61782077616c6c657420686173206265656e207472696767657265640000006044820152606401610c2c565b8015611a6a57611a48611e8e565b15611a5557611a55611edd565b611a5d6122d5565b15611a6a57611a6a612330565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260039091529190912054611abc91859061174b565b6001600160a01b038616600090815260036020526040812091909155611ae28686612376565b611aec5783611af6565b611af686856123c8565b6001600160a01b038616600090815260036020526040902054909150611b1c90826116e5565b6001600160a01b0380871660009081526003602090815260408083209490945591891681526022909152205460ff16611bc057600c546001600160a01b0387811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611bad57600080fd5b505af1925050508015611bbe575060015b505b6001600160a01b03851660009081526022602052604090205460ff16611c5157600c546001600160a01b0386811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611c3e57600080fd5b505af1925050508015611c4f575060015b505b600c54600e546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611c899160040190815260200190565b600060405180830381600087803b158015611ca357600080fd5b505af1925050508015611cb4575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cfa91815260200190565b60405180910390a350600195945050505050565b6000610f3682846128aa565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610f3682846128bd565b6000610f368284612875565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600390915291822054611dd391849061174b565b6001600160a01b038086166000908152600360205260408082209390935590851681522054611e0290836116e5565b6001600160a01b0384166000908152600360205260409020555060019392505050565b601e5481111580611e4e57506001600160a01b03821660009081526021602052604090205460ff165b61114b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610c2c565b600b546000906001600160a01b03163314801590611eaf575060335460ff16155b8015611ebd575060315460ff165b8015610f8a57505060325430600090815260036020526040902054101590565b6033805460ff19166001179055601c54601d54600091611efc91610de0565b611f0857601454611f0b565b60005b90506000611f2f600261152760125461152786603254611d6a90919063ffffffff16565b3060009081526003602052604081205491925090611f4d9083611d0e565b60408051600280825260608201835292935047926000926020830190803683370190505090503081600081518110611f8757611f876128d4565b6001600160a01b039283166020918202929092010152600854825191169082906001908110611fb857611fb86128d4565b60200260200101906001600160a01b031690816001600160a01b03168152505080600181518110611feb57611feb6128d4565b60200260200101516001600160a01b03168160008151811061200f5761200f6128d4565b60200260200101516001600160a01b0316146120915760095460405163744dd49160e01b81526001600160a01b039091169063744dd4919061205e90869060009086903090429060040161292e565b600060405180830381600087803b15801561207857600080fd5b505af115801561208c573d6000803e3d6000fd5b505050505b600061209d4784611d0e565b905060006120b86120af886002611d76565b60125490611d0e565b905060006120cd60026115278481878d611d6a565b905060006120ea8361152760155487611d6a90919063ffffffff16565b905060006121078461152760165488611d6a90919063ffffffff16565b9050600c60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561215957600080fd5b505af115801561216d573d6000803e3d6000fd5b5050601a546040516001600160a01b03909116935084156108fc0292508491506000818181858888f193505050501580156121ac573d6000803e3d6000fd5b50881561228557600954601954604051636e64478b60e11b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063dcc88f1690859060c40160606040518083038185885af1158015612223573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612248919061296a565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601b546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156122be573d6000803e3d6000fd5b50506033805460ff19169055505050505050505050565b600b546000906001600160a01b031633148015906122f6575060335460ff16155b80156123045750602a5460ff165b801561231f575043602f5460305461231c9190612897565b11155b8015610f8a575050602e5447101590565b602e5460055461234991906001600160a01b031661246e565b43603055602e54602d5461235c916116e5565b602d819055602c54101561136757602a805460ff19169055565b6001600160a01b038216600090815260208052604081205460ff16158015610f3657600b546001600160a01b0385811691161480610f335750600b546001600160a01b03848116911614949350505050565b6000806123e660135461152760125486611d6a90919063ffffffff16565b3060009081526003602052604090205490915061240390826116e5565b30600081815260036020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124549085815260200190565b60405180910390a36124668382611d0e565b949350505050565b6033805460ff19166001179055604080516002808252606082018352600092602083019080368337505060085482519293506001600160a01b0316918391506000906124bc576124bc6128d4565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106124f0576124f06128d4565b60200260200101906001600160a01b031690816001600160a01b03168152505080600181518110612523576125236128d4565b60200260200101516001600160a01b031681600081518110612547576125476128d4565b60200260200101516001600160a01b0316146125c95760095460405163248164a360e11b81526001600160a01b0390911690634902c94690859061259690600090869088904290600401612998565b6000604051808303818588803b1580156125af57600080fd5b505af11580156125c3573d6000803e3d6000fd5b50505050505b50506033805460ff1916905550565b80358015158114610d6e57600080fd5b600080600080608085870312156125fe57600080fd5b612607856125d8565b966020860135965060408601359560600135945092505050565b600080600080600060a0868803121561263957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156126895785810183015185820160400152820161266d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461164857600080fd5b6000602082840312156126d157600080fd5b8135610f36816126aa565b600080604083850312156126ef57600080fd5b82356126fa816126aa565b946020939093013593505050565b6000806040838503121561271b57600080fd5b50508035926020909101359150565b60008060006060848603121561273f57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561276b57600080fd5b8335612776816126aa565b92506020840135612786816126aa565b929592945050506040919091013590565b600080604083850312156127aa57600080fd5b82356127b5816126aa565b91506127c3602084016125d8565b90509250929050565b6000602082840312156127de57600080fd5b5035919050565b600080604083850312156127f857600080fd5b8235612803816126aa565b91506020830135612813816126aa565b809150509250929050565b6000806040838503121561283157600080fd5b6126fa836125d8565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261289257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610dda57610dda61285f565b81810381811115610dda57610dda61285f565b8082028115828204841417610dda57610dda61285f565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156129235781516001600160a01b0316875295820195908201906001016128fe565b509495945050505050565b85815284602082015260a06040820152600061294d60a08301866128ea565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561297f57600080fd5b8351925060208401519150604084015190509250925092565b8481526080602082015260006129b160808301866128ea565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220c2a0cd4ce37ac9f0ef02eb92c53dd5082c9146ecd76c4f732667b9dbb871de5664736f6c634300081300336080604052600180546001600160a01b03191673deaddeaddeaddeaddeaddeaddeaddeaddead00001781556ec097ce7bc90715b34b9f1000000000600b55600c55678ac7230489e80000600d5534801561005857600080fd5b50604051610c8d380380610c8d833981016040819052610077916100ff565b6001600160a01b0381166100d15760405162461bcd60e51b815260206004820152601760248201527f5f726f75746572206973207a65726f2061646472657373000000000000000000604482015260640160405180910390fd5b600280546001600160a01b039092166001600160a01b0319928316179055600080549091163317905561012f565b60006020828403121561011157600080fd5b81516001600160a01b038116811461012857600080fd5b9392505050565b610b4f8061013e6000396000f3fe6080604052600436106100ec5760003560e01c8063b5381e531161008a578063d0e30db011610059578063d0e30db01461025c578063efca2eed14610264578063ffb2c4791461027a578063ffd49c841461029a57600080fd5b8063b5381e53146101c4578063b88a802f146101da578063c7e1d0b1146101ef578063ce7c2ac21461020557600080fd5b80632d48e896116100c65780632d48e896146101635780633a98ef39146101835780634fab0ae814610199578063a873e231146101af57600080fd5b80630e15561a146100f857806314b6ca961461012157806328fd31981461014357600080fd5b366100f357005b600080fd5b34801561010457600080fd5b5061010e60085481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c3660046109c6565b6102b0565b005b34801561014f57600080fd5b5061010e61015e3660046109f0565b610428565b34801561016f57600080fd5b5061014161017e366004610a0b565b6104b3565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e6104d5565b3480156101d057600080fd5b5061010e600b5481565b3480156101e657600080fd5b5061014161054c565b3480156101fb57600080fd5b5061010e600a5481565b34801561021157600080fd5b506102416102203660046109f0565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610557565b34801561027057600080fd5b5061010e60095481565b34801561028657600080fd5b50610141610295366004610a2d565b61061b565b3480156102a657600080fd5b5061010e600c5481565b6000546001600160a01b031633146102c757600080fd5b6001600160a01b038216600090815260066020526040902054156102ee576102ee8261071f565b60008111801561031457506001600160a01b038216600090815260066020526040902054155b1561037a57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103ad565b8015801561039f57506001600160a01b03821660009081526006602052604090205415155b156103ad576103ad826107fc565b6001600160a01b0382166000908152600660205260409020546007546103de9183916103d891610911565b90610924565b6007556001600160a01b038216600090815260066020526040902081905561040581610930565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361044f57506000919050565b6001600160a01b03821660009081526006602052604081205461047190610930565b6001600160a01b0384166000908152600660205260409020600101549091508082116104a1575060009392505050565b6104ab8282610911565b949350505050565b6000546001600160a01b031633146104ca57600080fd5b600c91909155600d55565b6001546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105469190610a46565b92915050565b6105553361071f565b565b6000546001600160a01b0316331461056e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156105b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105db9190610a46565b6008549091506105eb9082610924565b600855600754600b546106159161060c91610606908561094d565b90610959565b600a5490610924565b600a5550565b6000546001600160a01b0316331461063257600080fd5b6003546000819003610642575050565b6000805a905060005b848310801561065957508381105b156107185783600e541061066d576000600e555b61069f6003600e548154811061068557610685610a5f565b6000918252602090912001546001600160a01b0316610965565b156106d6576106d66003600e54815481106106bc576106bc610a5f565b6000918252602090912001546001600160a01b031661071f565b6106eb6106e45a8490610911565b8490610924565b92505a600e8054919350600061070083610a8b565b9190505550808061071090610a8b565b91505061064b565b5050505050565b6001600160a01b03811660009081526006602052604081205490036107415750565b600061074c82610428565b905080156107f8576009546107619082610924565b6009556040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561079a573d6000803e3d6000fd5b506001600160a01b038216600090815260056020908152604080832042905560069091529020600201546107ce9082610924565b6001600160a01b038316600090815260066020526040902060028101919091555461040590610930565b5050565b6003805461080c90600190610aa4565b8154811061081c5761081c610a5f565b60009182526020808320909101546001600160a01b038481168452600490925260409092205460038054929093169291811061085a5761085a610a5f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600491829052604081205460038054919392916108a690600190610aa4565b815481106108b6576108b6610a5f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560038054806108ec576108ec610ab7565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061091d8284610aa4565b9392505050565b600061091d8284610acd565b6000610546600b54610606600a548561094d90919063ffffffff16565b600061091d8284610ae0565b600061091d8284610af7565b600c546001600160a01b0382166000908152600560205260408120549091429161098f9190610acd565b1080156105465750600d546109a383610428565b1192915050565b80356001600160a01b03811681146109c157600080fd5b919050565b600080604083850312156109d957600080fd5b6109e2836109aa565b946020939093013593505050565b600060208284031215610a0257600080fd5b61091d826109aa565b60008060408385031215610a1e57600080fd5b50508035926020909101359150565b600060208284031215610a3f57600080fd5b5035919050565b600060208284031215610a5857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610a9d57610a9d610a75565b5060010190565b8181038181111561054657610546610a75565b634e487b7160e01b600052603160045260246000fd5b8082018082111561054657610546610a75565b808202811582820484141761054657610546610a75565b600082610b1457634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e80ba10956a3288e953b1456f1d59fa94c6065615000b3588a30fa213b766cb564736f6c634300081300330000000000000000000000001e876cce41b7b844fde09e38fa1cf00f213bff5600000000000000000000000080fa5c08751a01dad395c4b666b7b84e6419ecf3