[ { "inputs": [ { "internalType": "string", "name": "__name", "type": "string" }, { "internalType": "string", "name": "__symbol", "type": "string" }, { "internalType": "uint8", "name": "__decimals", "type": "uint8" }, { "internalType": "uint256", "name": "_totalSupply", "type": "uint256" }, { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" }, { "internalType": "uint256", "name": "_maxTransactionAmount", "type": "uint256" }, { "internalType": "address[5]", "name": "_accounts", "type": "address[5]" }, { "internalType": "bool", "name": "_isMarketingFeeBaseToken", "type": "bool" }, { "internalType": "uint16[10]", "name": "_fees", "type": "uint16[10]" } ], "stateMutability": "payable", "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": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "ExcludedFromFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludedFromMaxTransactionAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketingFeeTokens", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "marketingFeeBaseTokenSwapped", "type": "uint256" } ], "name": "MarketingFeeTaken", "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": "pair", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensForLiquidity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "baseTokenForLiquidity", "type": "uint256" } ], "name": "SwapAndLiquify", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TreasuryFeeTaken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "newSellBurnFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "newBuyBurnFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldSellBurnFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldBuyBurnFee", "type": "uint16" } ], "name": "UpdateBurnFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "newSellLiquidityFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "newBuyLiquidityFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldSellLiquidityFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldBuyLiquidityFee", "type": "uint16" } ], "name": "UpdateLiquidityFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "newSellMarketingFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "newBuyMarketingFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldSellMarketingFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldBuyMarketingFee", "type": "uint16" } ], "name": "UpdateMarketingFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newMarketingWallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "newIsMarketingFeeBaseToken", "type": "bool" }, { "indexed": true, "internalType": "address", "name": "oldMarketingWallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "oldIsMarketingFeeBaseToken", "type": "bool" } ], "name": "UpdateMarketingWallet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMaxTransactionAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMaxTransactionAmount", "type": "uint256" } ], "name": "UpdateMaxTransactionAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMaxWallet", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMaxWallet", "type": "uint256" } ], "name": "UpdateMaxWallet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMinAmountToTakeFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMinAmountToTakeFee", "type": "uint256" } ], "name": "UpdateMinAmountToTakeFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "newSellRewardFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "newBuyRewardFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldSellRewardFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldBuyRewardFee", "type": "uint16" } ], "name": "UpdateRewardFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "newSellTreasuryFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "newBuyTreasuryFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldSellTreasuryFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "oldBuyTreasuryFee", "type": "uint16" } ], "name": "UpdateTreasuryFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newTreasuryWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldTreasuryWallet", "type": "address" } ], "name": "UpdateTreasuryWallet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldRouter", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "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": [], "name": "antiBotEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "", "type": "address" } ], "name": "automatedMarketMakerPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenForPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyBurnFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyLiquidityFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyMarketingFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyRewardFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTreasuryFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromMaxTransactionAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludeFromReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feeContract", "outputs": [ { "internalType": "contract IFee", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gemAntiBot", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromMaxTransactionAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMarketingFeeBaseToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mainPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mainRouter", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketingWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTransactionAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minAmountToTakeFee", "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": [ { "internalType": "uint256", "name": "tAmount", "type": "uint256" }, { "internalType": "bool", "name": "deductTransferFee", "type": "bool" } ], "name": "reflectionFromToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellBurnFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellLiquidityFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellMarketingFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellRewardFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellTreasuryFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enabled_", "type": "bool" } ], "name": "setUsingAntiBot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "rAmount", "type": "uint256" } ], "name": "tokenFromReflection", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFees", "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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": [], "name": "treasuryBurn", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "treasuryWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Caller", "outputs": [ { "internalType": "contract IUniswapV2Caller", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_sellBurnFee", "type": "uint16" }, { "internalType": "uint16", "name": "_buyBurnFee", "type": "uint16" } ], "name": "updateBurnFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_sellLiquidityFee", "type": "uint16" }, { "internalType": "uint16", "name": "_buyLiquidityFee", "type": "uint16" } ], "name": "updateLiquidityFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_sellMarketingFee", "type": "uint16" }, { "internalType": "uint16", "name": "_buyMarketingFee", "type": "uint16" } ], "name": "updateMarketingFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_marketingWallet", "type": "address" }, { "internalType": "bool", "name": "_isMarketingFeeBaseToken", "type": "bool" } ], "name": "updateMarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTransactionAmount", "type": "uint256" } ], "name": "updateMaxTransactionAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" } ], "name": "updateMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minAmountToTakeFee", "type": "uint256" } ], "name": "updateMinAmountToTakeFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_sellRewardFee", "type": "uint16" }, { "internalType": "uint16", "name": "_buyRewardFee", "type": "uint16" } ], "name": "updateRewardFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_sellTreasuryFee", "type": "uint16" }, { "internalType": "uint16", "name": "_buyTreasuryFee", "type": "uint16" } ], "name": "updateTreasuryFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_treasuryWallet", "type": "address" } ], "name": "updateTreasuryWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_baseTokenForPair", "type": "address" } ], "name": "updateUniswapV2Pair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "updateUniswapV2Router", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526040516200774838038062007748833981016040819052620000269162001d26565b6200003133620011aa565b604051636944d6f160e11b815260048082015273fd6439aeff9d2389856b7486b9e74a6dacadcdce9063d289ade29034906024016000604051808303818588803b1580156200007f57600080fd5b505af115801562000094573d6000803e3d6000fd5b505050505082600260058110620000af57620000af62001e04565b6020020151600280546001600160a01b039092166001600160a81b031990921691909117600160a01b60ff8a1602179055600b620000ee8a8262001ea9565b50600c620000fd898262001ea9565b506008869055620001118660001962001f8b565b6200011f9060001962001fb8565b60098190553360009081526003602052604090205582516001600160a01b0316620001915760405162461bcd60e51b815260206004820152601d60248201527f6d61726b6574696e672077616c6c65742063616e206e6f74206265203000000060448201526064015b60405180910390fd5b60208301516001600160a01b0316620001ed5760405162461bcd60e51b815260206004820152601b60248201527f526f7574657220616464726573732063616e206e6f7420626520300000000000604482015260640162000188565b60608301516001600160a01b0316620002495760405162461bcd60e51b815260206004820152601c60248201527f54726561737572792077616c6c65742063616e206e6f74206265203000000000604482015260640162000188565b825160608401516001600160a01b03918216911603620002d25760405162461bcd60e51b815260206004820152603560248201527f54726561737572792077616c6c65742063616e206e6f742062652073616d652060448201527f77697468206d61726b6574696e672077616c6c65740000000000000000000000606482015260840162000188565b61010081015160c082015160808301516040840151845161012c94939291620002fb9162001fd4565b62000307919062001fd4565b62000313919062001fd4565b6200031f919062001fd4565b61ffff161115620003735760405162461bcd60e51b815260206004820152601560248201527f73656c6c20746f74616c20666565203c3d203330250000000000000000000000604482015260640162000188565b61012081015160e082015160a08301516060840151602085015161012c949392916200039f9162001fd4565b620003ab919062001fd4565b620003b7919062001fd4565b620003c3919062001fd4565b61ffff161115620004175760405162461bcd60e51b815260206004820152601460248201527f62757920746f74616c20666565203c3d20333025000000000000000000000000604482015260640162000188565b8051609661ffff90911610620004615760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816001602002015161ffff1610620004af5760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816002602002015161ffff1610620004fd5760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816003602002015161ffff16106200054b5760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816004602002015161ffff1610620005995760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816005602002015161ffff1610620005e75760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816006602002015161ffff1610620006355760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816007602002015161ffff1610620006835760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816008602002015161ffff1610620006d15760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6096816009602002015161ffff16106200071f5760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b604482015260640162000188565b6080830151600180546001600160a01b039092166001600160a01b0319909216821790556040516318e02bd960e01b81523360048201526318e02bd990602401600060405180830381600087803b1580156200077a57600080fd5b505af11580156200078f573d6000803e3d6000fd5b505060018054600160a01b60ff60a01b1990911681179091558551601880546060890151601980546001600160a01b039283166001600160a01b03199190911617905588151585026001600160a81b0319909216938116938417821792839055604080519590930460ff161515855260006020860181905296501690911792507fc8dfdd9b91ac62ee1bd8be3541ea02d8e584461c794c6e49e94ccf21c71ebcca910160405180910390a36019546040516000916001600160a01b0316907f79a52cbec002ef70283103eb4140713100276944fca2819713130141d04df183908390a3602083810151601d80546001600160a01b0319166001600160a01b039092169182179055604080516315ab88c960e31b81529051919263ad5c4648926004808401938290030181865afa158015620008ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008f4919062001ff9565b6002546001600160a01b039081169116146200098957600254601d5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000961573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000987919062002017565b505b620009ac30731ccfe8c40ef259566433716002e379dfffbf5a3e600019620011fa565b601d54620009c89030906001600160a01b0316600019620011fa565b601d546040516000916001600160a01b0316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e908390a3601d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a7a919062001ff9565b6002546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801562000acc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000af2919062001ff9565b601e80546001600160a01b0319166001600160a01b039290921691909117905580516017805460208085015163ffffffff60281b1990921661ffff9485166501000000000090810261ffff60381b19169190911767010000000000000093861684021793849055604080519185048616825292909304909316928201929092526000818301819052606082015290517f95c5c99557725e816faf752c6675d63483841c28a7a009ed792470a9cb4dea239181900360800190a16040818101516017805460608086015163ffffffff60481b1990921661ffff948516690100000000000000000090810261ffff60581b1916919091176b0100000000000000000000009386168402179384905585519084048516815291909204909216602083015260008284018190529082015290517f1d6b62961d401d548eb1549c97109c0b905ccd7af9c3777d3076cc8438fdfe659181900360800190a160c08101516017805460e084015163ffffffff60681b1990911661ffff9384166d010000000000000000000000000090810261ffff60781b191691909117600160781b9285168302179283905560408051918404851682529190920490921660208201526000818301819052606082015290517f2893ef6309f9df0d45b134fcb021eb854592432db91782f02ce6b9029d1470319181900360800190a16101008101516017805461012084015163ffffffff60881b1990911661ffff938416600160881b90810261ffff60981b191691909117600160981b9285168302179283905560408051918404851682529190920490921660208201526000818301819052606082015290517f01f5c7a45d273917dfc98816f1dd17a88893a7338e7beaa4d305fc8c84f8fe259181900360800190a16080808201516017805460a085015161ffff908116630100000090810264ffff0000001961010096841687021664ffffffff00199094169390931792909217928390556040805194840482168552919092049091166020830152600090820181905260608201527f0a21d45dab14d5d2f53ae98d95d951cd627fcf1b5bc485174326568b5e0a4572910160405180910390a162000e1d6127108762002035565b601a81905560408051918252600060208301527f772a06bc936eb749842080c472181e970cd4f23bd1ab7d0b84a80aec26910434910160405180910390a162000e696127108762002035565b84101562000ecf5760405162461bcd60e51b815260206004820152602c60248201527f6d61785472616e73616374696f6e416d6f756e74203e3d20746f74616c20737560448201526b070706c79202f2031303030360a41b606482015260840162000188565b62000edd6127108762002035565b85101562000f385760405162461bcd60e51b815260206004820152602160248201527f6d617857616c6c6574203e3d20746f74616c20737570706c79202f20313030306044820152600360fc1b606482015260840162000188565b601b85905560408051868152600060208201527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a1601c84905560408051858152600060208201527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a1600660209081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054600160ff19918216811790925560078054808401825560008051602062007708833981519152908101805461dead6001600160a01b031991821617909155306000818152604080822080548816891790558554808901875585018054851684179055601980546001600160a01b03908116845282842080548a168b17905581548854808c019099559790960180549787169790951696909617909355818152601f8852828120805487168817905560188054851682528382208054881689179055855485168252838220805488168917905533808352848320805489168a1790557fef94442dfc0e910ca743614215a10fad3ff708bf5378f9c5c958c9192b3bf004805489168a1790559880527fcbaad361c71be11fa6bdbe0e740c6259be964b32182da2da47b54472477c6a178054881689179055918152828120805487168817905590548316815281812080548616871790559254821683528083208054851686179055948252939020805490911682179055601e546200116392169062001322565b60405186815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050505050620020ae565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166200125e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000188565b6001600160a01b038216620012c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000188565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526021602052604090205481151560ff909116151503620013ba5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840162000188565b6001600160a01b0382166000908152602160205260409020805460ff19168215801591909117909155620013f957620013f38262001461565b62001404565b620014048262001668565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab910160405180910390a25050565b6000546001600160a01b03163314620014ac5760405162461bcd60e51b8152602060048201819052602482015260008051602062007728833981519152604482015260640162000188565b6001600160a01b03811660009081526006602052604090205460ff1615620015175760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000188565b6007546032906200152a9060016200204c565b1115620015b65760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a40162000188565b6001600160a01b0381166000908152600360205260409020541562001613576001600160a01b038116600090815260036020526040902054620015f990620018de565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600660205260408120805460ff19166001908117909155600780549182018155909152600080516020620077088339815191520180546001600160a01b0319169091179055565b6000546001600160a01b03163314620016b35760405162461bcd60e51b8152602060048201819052602482015260008051602062007728833981519152604482015260640162000188565b6001600160a01b03811660009081526006602052604090205460ff166200171d5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640162000188565b60005b600754811015620018da57816001600160a01b0316600782815481106200174b576200174b62001e04565b6000918252602090912001546001600160a01b031603620018c5576001600160a01b0382166000908152600360205260409020546200178962001968565b6001600160a01b038416600090815260046020526040902054620017ae919062002062565b6001600160a01b0384166000908152600360205260409020819055600954620017d990839062001fb8565b620017e591906200204c565b6009556001600160a01b0383166000908152600660205260409020805460ff19169055600780546200181a9060019062001fb8565b815481106200182d576200182d62001e04565b600091825260209091200154600780546001600160a01b0390921691849081106200185c576200185c62001e04565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060078054806200189e576200189e6200207c565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80620018d18162002092565b91505062001720565b5050565b6000600954821115620019475760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000188565b60006200195362001968565b905062001961818462002035565b9392505050565b60008080620019766200198e565b909250905062001987818362002035565b9250505090565b6009546008546000918291825b60075481101562001af657826003600060078481548110620019c157620019c162001e04565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062001a30575081600460006007848154811062001a095762001a0962001e04565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562001a4757600954600854945094505050509091565b600360006007838154811062001a615762001a6162001e04565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462001a92908462001fb8565b9250600460006007838154811062001aae5762001aae62001e04565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462001adf908362001fb8565b91508062001aed8162002092565b9150506200199b565b5060085460095462001b09919062002035565b82101562001b21576009546008549350935050509091565b90939092509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562001b6b5762001b6b62001b2a565b604052919050565b600082601f83011262001b8557600080fd5b81516001600160401b0381111562001ba15762001ba162001b2a565b602062001bb7601f8301601f1916820162001b40565b828152858284870101111562001bcc57600080fd5b60005b8381101562001bec57858101830151828201840152820162001bcf565b506000928101909101919091529392505050565b80516001600160a01b038116811462001c1857600080fd5b919050565b600082601f83011262001c2f57600080fd5b60405160a081016001600160401b038111828210171562001c545762001c5462001b2a565b6040528060a084018581111562001c6a57600080fd5b845b8181101562001c8f5762001c808162001c00565b83526020928301920162001c6c565b509195945050505050565b8051801515811462001c1857600080fd5b600082601f83011262001cbd57600080fd5b6040516101408082016001600160401b038111838210171562001ce45762001ce462001b2a565b6040528301818582111562001cf857600080fd5b845b8281101562001c8f57805161ffff8116811462001d175760008081fd5b82526020918201910162001cfa565b60008060008060008060008060006102c08a8c03121562001d4657600080fd5b89516001600160401b038082111562001d5e57600080fd5b62001d6c8d838e0162001b73565b9a5060208c015191508082111562001d8357600080fd5b5062001d928c828d0162001b73565b98505060408a015160ff8116811462001daa57600080fd5b8097505060608a0151955060808a0151945060a08a0151935062001dd28b60c08c0162001c1d565b925062001de36101608b0162001c9a565b915062001df58b6101808c0162001cab565b90509295985092959850929598565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168062001e2f57607f821691505b60208210810362001e5057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562001ea457600081815260208120601f850160051c8101602086101562001e7f5750805b601f850160051c820191505b8181101562001ea05782815560010162001e8b565b5050505b505050565b81516001600160401b0381111562001ec55762001ec562001b2a565b62001edd8162001ed6845462001e1a565b8462001e56565b602080601f83116001811462001f15576000841562001efc5750858301515b600019600386901b1c1916600185901b17855562001ea0565b600085815260208120601f198616915b8281101562001f465788860151825594840194600190910190840162001f25565b508582101562001f655787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b60008262001f9d5762001f9d62001f75565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111562001fce5762001fce62001fa2565b92915050565b61ffff81811683821601908082111562001ff25762001ff262001fa2565b5092915050565b6000602082840312156200200c57600080fd5b620019618262001c00565b6000602082840312156200202a57600080fd5b620019618262001c9a565b60008262002047576200204762001f75565b500490565b8082018082111562001fce5762001fce62001fa2565b808202811582820484141762001fce5762001fce62001fa2565b634e487b7160e01b600052603160045260246000fd5b600060018201620020a757620020a762001fa2565b5060010190565b61564a80620020be6000396000f3fe6080604052600436106103d25760003560e01c8063809d458d116101fd578063b62496f511610118578063df8408fe116100ab578063f11a24d31161007a578063f11a24d314610beb578063f2fde38b14610c0d578063f637434214610c2d578063f8b45b0514610c4f578063fc59d23d14610c6557600080fd5b8063df8408fe14610b65578063e086e5ec14610b85578063e71dc3f514610b9a578063e9481eee14610bbc57600080fd5b8063d68f8cde116100e7578063d68f8cde14610abe578063d8c6404b14610ade578063dd62ed3e14610aff578063de0aad5314610b4557600080fd5b8063b62496f514610a38578063c8c8ebe414610a68578063cf089e1314610a7e578063cf188ad014610a9e57600080fd5b80639213691311610190578063a457c2d71161015f578063a457c2d7146109b6578063a9059cbb146109d6578063aa498023146109f6578063adb873bd14610a1657600080fd5b8063921369131461093f578063948384dc1461096157806395d89b41146109815780639a7a23d61461099657600080fd5b806389476069116101cc57806389476069146108d95780638da5cb5b146108f95780638f0bc1671461091757806391c1004a1461091f57600080fd5b8063809d458d146108405780638276e5b01461086057806385af30c51461088057806388f82020146108a057600080fd5b80634626402b116102ed57806370a082311161028057806377ec74491161024f57806377ec7449146107b65780637bce5a04146107d65780637c75ad3a146107f85780637cf84bd71461082057600080fd5b806370a0823114610741578063715018a61461076157806373b9e82c1461077657806375f0a8741461079657600080fd5b806357e62b98116102bc57806357e62b98146106bc5780635c068a8c146106dd57806365b8dbc0146106ff5780636b2fb1241461071f57600080fd5b80634626402b1461062c5780634707c5511461064c57806352390c021461066c5780635342acb41461068c57600080fd5b806323b872dd11610365578063313ce56711610334578063313ce567146105a05780633685d419146105cc57806339509351146105ec5780634549b0391461060c57600080fd5b806323b872dd146105205780632ae2f121146105405780632d5fd55a146105605780632d8381191461058057600080fd5b806313114a9d116103a157806313114a9d146104aa57806318160ddd146104c95780631c499ab0146104de5780632073bd851461050057600080fd5b806306e29712146103de57806306fdde0314610423578063095ea7b3146104455780630cfe2f3f1461047557600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b5061040673fd6439aeff9d2389856b7486b9e74a6dacadcdce81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042f57600080fd5b50610438610c7b565b60405161041a9190615032565b34801561045157600080fd5b5061046561046036600461507a565b610d0d565b604051901515815260200161041a565b34801561048157600080fd5b50601754610497906301000000900461ffff1681565b60405161ffff909116815260200161041a565b3480156104b657600080fd5b50600a545b60405190815260200161041a565b3480156104d557600080fd5b506008546104bb565b3480156104ea57600080fd5b506104fe6104f93660046150a6565b610d24565b005b34801561050c57600080fd5b506104fe61051b3660046150d6565b610e02565b34801561052c57600080fd5b5061046561053b366004615109565b611001565b34801561054c57600080fd5b506104fe61055b366004615158565b611054565b34801561056c57600080fd5b506104fe61057b366004615191565b611135565b34801561058c57600080fd5b506104bb61059b3660046150a6565b61117d565b3480156105ac57600080fd5b50600254600160a01b900460ff1660405160ff909116815260200161041a565b3480156105d857600080fd5b506104fe6105e73660046151ae565b6111fa565b3480156105f857600080fd5b5061046561060736600461507a565b611432565b34801561061857600080fd5b506104bb6106273660046151cb565b611469565b34801561063857600080fd5b50601954610406906001600160a01b031681565b34801561065857600080fd5b506104fe610667366004615158565b611516565b34801561067857600080fd5b506104fe6106873660046151ae565b61167a565b34801561069857600080fd5b506104656106a73660046151ae565b601f6020526000908152604090205460ff1681565b3480156106c857600080fd5b5060185461046590600160a01b900460ff1681565b3480156106e957600080fd5b5060175461049790600160781b900461ffff1681565b34801561070b57600080fd5b506104fe61071a3660046151ae565b611868565b34801561072b57600080fd5b5060175461049790600160681b900461ffff1681565b34801561074d57600080fd5b506104bb61075c3660046151ae565b611b80565b34801561076d57600080fd5b506104fe611bdf565b34801561078257600080fd5b506104fe6107913660046150a6565b611c15565b3480156107a257600080fd5b50601854610406906001600160a01b031681565b3480156107c257600080fd5b50600154610406906001600160a01b031681565b3480156107e257600080fd5b5060175461049790600160581b900461ffff1681565b34801561080457600080fd5b50610406731ccfe8c40ef259566433716002e379dfffbf5a3e81565b34801561082c57600080fd5b50600254610406906001600160a01b031681565b34801561084c57600080fd5b506104fe61085b3660046151ae565b611cca565b34801561086c57600080fd5b506104fe61087b3660046150d6565b611e6e565b34801561088c57600080fd5b50601e54610406906001600160a01b031681565b3480156108ac57600080fd5b506104656108bb3660046151ae565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156108e557600080fd5b506104fe6108f43660046151ae565b61206d565b34801561090557600080fd5b506000546001600160a01b0316610406565b6104fe61216e565b34801561092b57600080fd5b506104fe61093a3660046151ae565b6125c6565b34801561094b57600080fd5b5060175461049790600160481b900461ffff1681565b34801561096d57600080fd5b506104fe61097c3660046150d6565b612889565b34801561098d57600080fd5b50610438612a84565b3480156109a257600080fd5b506104fe6109b1366004615158565b612a93565b3480156109c257600080fd5b506104656109d136600461507a565b612ac7565b3480156109e257600080fd5b506104656109f136600461507a565b612afe565b348015610a0257600080fd5b506104fe610a113660046150a6565b612b0b565b348015610a2257600080fd5b5060175461049790600160881b900461ffff1681565b348015610a4457600080fd5b50610465610a533660046151ae565b60216020526000908152604090205460ff1681565b348015610a7457600080fd5b506104bb601c5481565b348015610a8a57600080fd5b506104fe610a993660046150d6565b612beb565b348015610aaa57600080fd5b50601d54610406906001600160a01b031681565b348015610aca57600080fd5b506104fe610ad93660046150d6565b612df0565b348015610aea57600080fd5b5060015461046590600160a01b900460ff1681565b348015610b0b57600080fd5b506104bb610b1a3660046151f0565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610b5157600080fd5b5060175461049790610100900461ffff1681565b348015610b7157600080fd5b506104fe610b80366004615158565b612ff5565b348015610b9157600080fd5b506104fe6130d1565b348015610ba657600080fd5b5060175461049790600160981b900461ffff1681565b348015610bc857600080fd5b50610465610bd73660046151ae565b602080526000908152604090205460ff1681565b348015610bf757600080fd5b5060175461049790600160381b900461ffff1681565b348015610c1957600080fd5b506104fe610c283660046151ae565b613195565b348015610c3957600080fd5b5060175461049790600160281b900461ffff1681565b348015610c5b57600080fd5b506104bb601b5481565b348015610c7157600080fd5b506104bb601a5481565b6060600b8054610c8a9061521e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb69061521e565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b5050505050905090565b6000610d1a33848461322d565b5060015b92915050565b6000546001600160a01b03163314610d575760405162461bcd60e51b8152600401610d4e90615258565b60405180910390fd5b612710600854610d6791906152a3565b811015610dc05760405162461bcd60e51b815260206004820152602160248201527f6d617857616c6c6574203e3d20746f74616c20737570706c79202f20313030306044820152600360fc1b6064820152608401610d4e565b601b546040805183815260208101929092527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a1601b55565b6000546001600160a01b03163314610e2c5760405162461bcd60e51b8152600401610d4e90615258565b60175461012c9061ffff6101008204811691600160681b8104821691600160481b8204811691610e6591600160281b90910416876152c5565b610e6f91906152c5565b610e7991906152c5565b610e8391906152c5565b61ffff161115610ea55760405162461bcd60e51b8152600401610d4e906152e0565b60175461012c9061ffff63010000008204811691600160781b8104821691600160581b8204811691610ee091600160381b90910416866152c5565b610eea91906152c5565b610ef491906152c5565b610efe91906152c5565b61ffff161115610f205760405162461bcd60e51b8152600401610d4e9061530f565b60968261ffff161115610f455760405162461bcd60e51b8152600401610d4e9061533d565b60968161ffff161115610f6a5760405162461bcd60e51b8152600401610d4e90615366565b6017546040805161ffff85811682528481166020830152600160881b8404811682840152600160981b9093049092166060830152517f01f5c7a45d273917dfc98816f1dd17a88893a7338e7beaa4d305fc8c84f8fe259181900360800190a16017805463ffffffff60881b1916600160881b61ffff9485160261ffff60981b191617600160981b9290931691909102919091179055565b600061100e848484613351565b6001600160a01b03841660009081526005602090815260408083203380855292529091205461104991869161104490869061538e565b61322d565b5060015b9392505050565b6000546001600160a01b0316331461107e5760405162461bcd60e51b8152600401610d4e90615258565b6001600160a01b038216600090815260208052604090205481151560ff9091161515036110d75760405162461bcd60e51b8152602060048201526007602482015266616c726561647960c81b6044820152606401610d4e565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f82170bbd72c16b30c410014b7382121a699ed119a182e48a0b6cadcc89104ac991015b60405180910390a25050565b6000546001600160a01b0316331461115f5760405162461bcd60e51b8152600401610d4e90615258565b60018054911515600160a01b0260ff60a01b19909216919091179055565b60006009548211156111e45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d4e565b60006111ee6137ea565b905061104d81846152a3565b6000546001600160a01b031633146112245760405162461bcd60e51b8152600401610d4e90615258565b6001600160a01b03811660009081526006602052604090205460ff1661128c5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610d4e565b60005b60075481101561142e57816001600160a01b0316600782815481106112b6576112b66153a1565b6000918252602090912001546001600160a01b03160361141c576001600160a01b0382166000908152600360205260409020546112f16137ea565b6001600160a01b03841660009081526004602052604090205461131491906153b7565b6001600160a01b038416600090815260036020526040902081905560095461133d90839061538e565b61134791906153ce565b6009556001600160a01b0383166000908152600660205260409020805460ff191690556007805461137a9060019061538e565b8154811061138a5761138a6153a1565b600091825260209091200154600780546001600160a01b0390921691849081106113b6576113b66153a1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060078054806113f5576113f56153e1565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80611426816153f7565b91505061128f565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610d1a9185906110449086906153ce565b60006008548311156114bd5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d4e565b60006114c76137ea565b9050826114e45760006114da82866153b7565b9250610d1e915050565b60006114ef8561380d565b505050505090506000828261150491906153b7565b9350610d1e92505050565b5092915050565b6000546001600160a01b031633146115405760405162461bcd60e51b8152600401610d4e90615258565b6001600160a01b0382166115965760405162461bcd60e51b815260206004820152601b60248201527f6d61726b6574696e672077616c6c65742063616e2774206265203000000000006044820152606401610d4e565b6019546001600160a01b03908116908316036115c45760405162461bcd60e51b8152600401610d4e90615410565b601854604080518315158152600160a01b830460ff16151560208201526001600160a01b03928316928516917fc8dfdd9b91ac62ee1bd8be3541ea02d8e584461c794c6e49e94ccf21c71ebcca910160405180910390a360188054911515600160a01b026001600160a81b03199092166001600160a01b039093169283179190911790556000908152601f60209081526040808320805460ff199081166001908117909255928052922080549091169091179055565b6000546001600160a01b031633146116a45760405162461bcd60e51b8152600401610d4e90615258565b6001600160a01b03811660009081526006602052604090205460ff161561170d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d4e565b60075460329061171e9060016153ce565b11156117a85760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401610d4e565b6001600160a01b03811660009081526003602052604090205415611802576001600160a01b0381166000908152600360205260409020546117e89061117d565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146118925760405162461bcd60e51b8152600401610d4e90615258565b601d546001600160a01b03908116908216036118fc5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610d4e565b601d546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3601d80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015611993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b79190615463565b6002546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015611a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2c9190615463565b601e80546001600160a01b0319166001600160a01b0383811691909117909155601d54919250611a619130911660001961322d565b601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad89190615463565b6002546001600160a01b03908116911614611b6957600254601d5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015611b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b679190615480565b505b601e5461142e906001600160a01b03166001613877565b6001600160a01b03811660009081526006602052604081205460ff1615611bbd57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610d1e9061117d565b6000546001600160a01b03163314611c095760405162461bcd60e51b8152600401610d4e90615258565b611c1360006139a7565b565b6000546001600160a01b03163314611c3f5760405162461bcd60e51b8152600401610d4e90615258565b60008111611c885760405162461bcd60e51b815260206004820152601660248201527506d696e416d6f756e74546f54616b65466565203e20360541b6044820152606401610d4e565b601a546040805183815260208101929092527f772a06bc936eb749842080c472181e970cd4f23bd1ab7d0b84a80aec26910434910160405180910390a1601a55565b6000546001600160a01b03163314611cf45760405162461bcd60e51b8152600401610d4e90615258565b6001600160a01b038116611d4a5760405162461bcd60e51b815260206004820152601a60248201527f54726561737572792077616c6c65742063616e277420626520300000000000006044820152606401610d4e565b306001600160a01b03821603611db55760405162461bcd60e51b815260206004820152602a60248201527f54726561737572792077616c6c65742063616e2774206265207468652073616d604482015269329030b9903a37b5b2b760b11b6064820152608401610d4e565b6018546001600160a01b03808316911603611de25760405162461bcd60e51b8152600401610d4e90615410565b6019546040516001600160a01b03918216918316907f79a52cbec002ef70283103eb4140713100276944fca2819713130141d04df18390600090a3601980546001600160a01b039092166001600160a01b0319909216821790556000908152601f60209081526040808320805460ff199081166001908117909255928052922080549091169091179055565b6000546001600160a01b03163314611e985760405162461bcd60e51b8152600401610d4e90615258565b60175461012c9061ffff600160881b82048116916101008104821691600160481b8204811691611ed191600160281b90910416876152c5565b611edb91906152c5565b611ee591906152c5565b611eef91906152c5565b61ffff161115611f115760405162461bcd60e51b8152600401610d4e906152e0565b60175461012c9061ffff600160981b820481169163010000008104821691600160581b8204811691611f4c91600160381b90910416866152c5565b611f5691906152c5565b611f6091906152c5565b611f6a91906152c5565b61ffff161115611f8c5760405162461bcd60e51b8152600401610d4e9061530f565b60968261ffff161115611fb15760405162461bcd60e51b8152600401610d4e9061533d565b60968161ffff161115611fd65760405162461bcd60e51b8152600401610d4e90615366565b6017546040805161ffff85811682528481166020830152600160681b8404811682840152600160781b9093049092166060830152517f2893ef6309f9df0d45b134fcb021eb854592432db91782f02ce6b9029d1470319181900360800190a16017805463ffffffff60681b1916600160681b61ffff9485160261ffff60781b191617600160781b9290931691909102919091179055565b6000546001600160a01b031633146120975760405162461bcd60e51b8152600401610d4e90615258565b6001600160a01b03811630036120dd5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b6044820152606401610d4e565b61216b6120f26000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a919061549d565b6001600160a01b03841691906139f7565b50565b604080516002808252606082018352600092602083019080368337505060025482519293506001600160a01b0316918391506000906121af576121af6153a1565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106121e3576121e36153a1565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122609190615463565b6001600160a01b03168160008151811061227c5761227c6153a1565b60200260200101516001600160a01b03160361230657601d5460195460405163b6f9de9560e01b81526001600160a01b039283169263b6f9de959234926122cf92600092889291169042906004016154fa565b6000604051808303818588803b1580156122e857600080fd5b505af11580156122fc573d6000803e3d6000fd5b505050505061240e565b6002546000906001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561235f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612383919061549d565b905061239d336002546001600160a01b0316903084613a5f565b601d54601954604051635c11d79560e01b81526001600160a01b0392831692635c11d795926123da9286926000928992911690429060040161552f565b600060405180830381600087803b1580156123f457600080fd5b505af1158015612408573d6000803e3d6000fd5b50505050505b6019546001600160a01b031660009081526006602052604090205460ff16156124fc576019546001600160a01b0316600090815260046020526040902054600854612459919061538e565b6008556019546001600160a01b0316600090815260036020526040902054600954612484919061538e565b6009556019546001600160a01b031660008181526004602090815260408083205490519081529192916000805160206155f5833981519152910160405180910390a3601980546001600160a01b0390811660009081526003602090815260408083208390559354909216815260049091529081205550565b6019546001600160a01b03166000908152600360205260408120546125209061117d565b905080600854612530919061538e565b6008556019546001600160a01b031660009081526003602052604090205460095461255b919061538e565b6009556019546040518281526000916001600160a01b0316906000805160206155f58339815191529060200160405180910390a350601980546001600160a01b0390811660009081526003602090815260408083208390559354909216815260049091529081205550565b6000546001600160a01b031633146125f05760405162461bcd60e51b8152600401610d4e90615258565b6002546001600160a01b03908116908216036126645760405162461bcd60e51b815260206004820152602d60248201527f5468652062617365546f6b656e466f725061697220616c72656164792068617360448201526c2074686174206164647265737360981b6064820152608401610d4e565b600280546001600160a01b0319166001600160a01b0383811691909117909155601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea9190615463565b6002546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801561273b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275f9190615463565b601e80546001600160a01b0319166001600160a01b03928316179055601d54604080516315ab88c960e31b81529051919092169163ad5c46489160048083019260209291908290030181865afa1580156127bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e19190615463565b6002546001600160a01b0390811691161461287257600254601d5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801561284c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128709190615480565b505b601e5461216b906001600160a01b03166001613877565b6000546001600160a01b031633146128b35760405162461bcd60e51b8152600401610d4e90615258565b60175461012c9061ffff600160881b8204811691600160681b8104821691600160481b82048116916128ee91600160281b90910416876152c5565b6128f891906152c5565b61290291906152c5565b61290c91906152c5565b61ffff16111561292e5760405162461bcd60e51b8152600401610d4e906152e0565b60175461012c9061ffff600160981b8204811691600160781b8104821691600160581b820481169161296991600160381b90910416866152c5565b61297391906152c5565b61297d91906152c5565b61298791906152c5565b61ffff1611156129a95760405162461bcd60e51b8152600401610d4e9061530f565b60968261ffff1611156129ce5760405162461bcd60e51b8152600401610d4e9061533d565b60968161ffff1611156129f35760405162461bcd60e51b8152600401610d4e90615366565b6017546040805161ffff85811682528481166020830152610100840481168284015263010000009093049092166060830152517f0a21d45dab14d5d2f53ae98d95d951cd627fcf1b5bc485174326568b5e0a45729181900360800190a16017805464ffffffff00191661010061ffff9485160264ffff00000019161763010000009290931691909102919091179055565b6060600c8054610c8a9061521e565b6000546001600160a01b03163314612abd5760405162461bcd60e51b8152600401610d4e90615258565b61142e8282613877565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610d1a91859061104490869061538e565b6000610d1a338484613351565b6000546001600160a01b03163314612b355760405162461bcd60e51b8152600401610d4e90615258565b612710600854612b4591906152a3565b811015612ba95760405162461bcd60e51b815260206004820152602c60248201527f6d61785472616e73616374696f6e416d6f756e74203e3d20746f74616c20737560448201526b070706c79202f2031303030360a41b6064820152608401610d4e565b601c546040805183815260208101929092527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a1601c55565b6000546001600160a01b03163314612c155760405162461bcd60e51b8152600401610d4e90615258565b60175461012c9061ffff600160881b8204811691600160681b81048216916101008204811691612c4e91600160281b90910416876152c5565b612c5891906152c5565b612c6291906152c5565b612c6c91906152c5565b61ffff161115612c8e5760405162461bcd60e51b8152600401610d4e906152e0565b60175461012c9061ffff600160981b8204811691600160781b810482169163010000008204811691612cc991600160381b90910416866152c5565b612cd391906152c5565b612cdd91906152c5565b612ce791906152c5565b61ffff161115612d095760405162461bcd60e51b8152600401610d4e9061530f565b60968261ffff161115612d2e5760405162461bcd60e51b8152600401610d4e9061533d565b60968161ffff161115612d535760405162461bcd60e51b8152600401610d4e90615366565b6017546040805161ffff85811682528481166020830152600160481b8404811682840152600160581b9093049092166060830152517f1d6b62961d401d548eb1549c97109c0b905ccd7af9c3777d3076cc8438fdfe659181900360800190a1601780546cffffffff0000000000000000001916600160481b61ffff9485160261ffff60581b191617600160581b9290931691909102919091179055565b6000546001600160a01b03163314612e1a5760405162461bcd60e51b8152600401610d4e90615258565b60175461012c9061ffff600160881b8204811691600160681b81048216916101008204811691612e5391600160481b90910416876152c5565b612e5d91906152c5565b612e6791906152c5565b612e7191906152c5565b61ffff161115612e935760405162461bcd60e51b8152600401610d4e906152e0565b60175461012c9061ffff600160981b8204811691600160781b810482169163010000008204811691612ece91600160581b90910416866152c5565b612ed891906152c5565b612ee291906152c5565b612eec91906152c5565b61ffff161115612f0e5760405162461bcd60e51b8152600401610d4e9061530f565b60968261ffff161115612f335760405162461bcd60e51b8152600401610d4e9061533d565b60968161ffff161115612f585760405162461bcd60e51b8152600401610d4e90615366565b6017546040805161ffff85811682528481166020830152600160281b8404811682840152600160381b9093049092166060830152517f95c5c99557725e816faf752c6675d63483841c28a7a009ed792470a9cb4dea239181900360800190a16017805468ffffffff00000000001916600160281b61ffff9485160268ffff00000000000000191617600160381b9290931691909102919091179055565b6000546001600160a01b0316331461301f5760405162461bcd60e51b8152600401610d4e90615258565b6001600160a01b0382166000908152601f602052604090205481151560ff9091161515036130795760405162461bcd60e51b8152602060048201526007602482015266616c726561647960c81b6044820152606401610d4e565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa99101611129565b6000546001600160a01b031633146130fb5760405162461bcd60e51b8152600401610d4e90615258565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114613148576040519150601f19603f3d011682016040523d82523d6000602084013e61314d565b606091505b505090508061216b5760405162461bcd60e51b815260206004820152601460248201527311985a5b1959081a5b881dda5d1a191c985dd85b60621b6044820152606401610d4e565b6000546001600160a01b031633146131bf5760405162461bcd60e51b8152600401610d4e90615258565b6001600160a01b0381166132245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d4e565b61216b816139a7565b6001600160a01b03831661328f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d4e565b6001600160a01b0382166132f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d4e565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166133b55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d4e565b6001600160a01b0382166134175760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d4e565b60175460ff161580156134335750600154600160a01b900460ff165b801561345857506001600160a01b0383166000908152601f602052604090205460ff16155b801561347d57506001600160a01b0382166000908152601f602052604090205460ff16155b156134f15760015460405163090ec10b60e31b81526001600160a01b03858116600483015284811660248301526044820184905290911690634876085890606401600060405180830381600087803b1580156134d857600080fd5b505af11580156134ec573d6000803e3d6000fd5b505050505b60006134fc30611b80565b601a546017549192508210159060ff161580156135165750805b80156135375750601e54600090613535906001600160a01b0316611b80565b115b801561355b57506001600160a01b03841660009081526021602052604090205460ff165b1561356857613568613a9d565b6135a3600d8054600e55600f805460105560118054601255601380546014556015805460165560009081905590819055908190559182905555565b60175460ff161580156135cf57506001600160a01b0385166000908152601f602052604090205460ff16155b80156135f457506001600160a01b0384166000908152601f602052604090205460ff16155b156136c3576001600160a01b03851660009081526021602052604090205460ff16156136615760175461ffff630100000082048116600d55600160381b82048116600f55600160581b82048116601155600160781b82048116601355600160981b909104166015556136c3565b6001600160a01b03841660009081526021602052604090205460ff16156136c35760175461ffff61010082048116600d55600160281b82048116600f55600160481b82048116601155600160681b82048116601355600160881b909104166015555b6136ce85858561432d565b6136f1601654601555601454601355600e54600d55601054600f55601254601155565b60175460ff166137e3576001600160a01b038516600090815260208052604090205460ff1661376b57601c54831061376b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2065786365656473207472616e73666572206c696d69740000006044820152606401610d4e565b6001600160a01b038416600090815260208052604090205460ff166137e357601b5461379685611b80565b106137e35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2065786365656473206d61782077616c6c6574206c696d6974006044820152606401610d4e565b5050505050565b60008060006137f76147c6565b909250905061380681836152a3565b9250505090565b600080600080600080600061382188614949565b9050600061382e89614966565b9050600061383b8a614979565b905060006138488b61498c565b905060006138558c61499f565b905060006138628d6149b2565b9d959c50939a50919850965094509092505050565b6001600160a01b03821660009081526021602052604090205481151560ff90911615150361390d5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610d4e565b6001600160a01b0382166000908152602160205260409020805460ff19168215801591909117909155613948576139438261167a565b613951565b613951826111fa565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab9101611129565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b038316602482015260448101829052613a5a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a05565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052613a979085906323b872dd60e01b90608401613a23565b50505050565b6017805460ff191660011790556000613ab530611b80565b90506000602454602354602254613acc91906153ce565b613ad691906153ce565b9050801580613ae457508082105b15613af0575050614321565b60006002602254613b0191906152a3565b90506000601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7c9190615463565b6002546001600160a01b03908116911614613c02576002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bfd919061549d565b613c04565b475b9050600080601860149054906101000a900460ff1615613f3057600060245460235486613c3191906153ce565b613c3b91906153ce565b90508015613c4c57613c4c81614ad7565b601d54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015613c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cba9190615463565b6002546001600160a01b03908116911614613d4a576002546040516370a0823160e01b815230600482015286916001600160a01b0316906370a0823190602401602060405180830381865afa158015613d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d3b919061549d565b613d45919061538e565b613d54565b613d54854761538e565b905060008260235483613d6791906153b7565b613d7191906152a3565b905082613d7e88846153b7565b613d8891906152a3565b945084613d95828461538e565b613d9f919061538e565b93508015613f2857601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1e9190615463565b6002546001600160a01b03918216911603613ed0576018546040516000916001600160a01b03169083908381818185875af1925050503d8060008114613e80576040519150601f19603f3d011682016040523d82523d6000602084013e613e85565b606091505b505090508015613eca576040805160008152602081018490527f6f92bce3e91466137aa4d5474fe565c002872fb18ed6af4a856959be0a81277a910160405180910390a15b50613f28565b601854600254613eed916001600160a01b039182169116836139f7565b6040805160008152602081018390527f6f92bce3e91466137aa4d5474fe565c002872fb18ed6af4a856959be0a81277a910160405180910390a15b5050506140e4565b600060245485613f4091906153ce565b90508015613f5157613f5181614ad7565b601d54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015613f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fbf9190615463565b6002546001600160a01b0390811691161461404f576002546040516370a0823160e01b815230600482015286916001600160a01b0316906370a0823190602401602060405180830381865afa15801561401c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614040919061549d565b61404a919061538e565b614059565b614059854761538e565b90508161406687836153b7565b61407091906152a3565b935061407c848261538e565b602354909350156140e1576018546023546140a49130916001600160a01b0390911690613351565b60235460408051918252600060208301527f6f92bce3e91466137aa4d5474fe565c002872fb18ed6af4a856959be0a81277a910160405180910390a15b50505b6000841180156140f45750600082115b1561413d576141038483614ca6565b60408051858152602081018490527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b80156142b657601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ba9190615463565b6002546001600160a01b03918216911603614265576019546040516000916001600160a01b03169083908381818185875af1925050503d806000811461421c576040519150601f19603f3d011682016040523d82523d6000602084013e614221565b606091505b50509050801561425f576040518281527fe3630e0003fb3e9f9d835bb839022e52ffd576f9f35c395dd17517106f78cb339060200160405180910390a15b506142b6565b601954600254614282916001600160a01b039182169116836139f7565b6040518181527fe3630e0003fb3e9f9d835bb839022e52ffd576f9f35c395dd17517106f78cb339060200160405180910390a15b6000602381905560248190556022819055546001600160a01b0316156142ff576142fa306142ec6000546001600160a01b031690565b6142f530611b80565b613351565b61431a565b60195461431a9030906001600160a01b03166142f582611b80565b5050505050505b6017805460ff19169055565b60008060008060008061433f8761380d565b95509550955095509550955060006143556137ea565b905081600854614365919061538e565b60085561437281836153b7565b60095461437f919061538e565b6009556040518281526000906001600160a01b038c16906000805160206155f58339815191529060200160405180910390a3846022546143bf91906153ce565b6022556023546143d09085906153ce565b6023556024546143e19084906153ce565b6024556000836143f186886153ce565b6143fb91906153ce565b905061440782826153b7565b3060009081526003602052604090205461442191906153ce565b3060009081526003602090815260408083209390935560069052205460ff161561447157306000908152600460205260409020546144609082906153ce565b306000908152600460205260409020555b506001600160a01b038a1660009081526006602052604090205460ff1680156144b357506001600160a01b03891660009081526006602052604090205460ff16155b15614586576001600160a01b038a166000908152600460205260409020546144dc90899061538e565b6001600160a01b038b166000908152600460205260409020556144ff81896153b7565b6001600160a01b038b16600090815260036020526040902054614522919061538e565b6001600160a01b038b1660009081526003602052604090205561454581886153b7565b6001600160a01b038a1660009081526003602052604090205461456891906153ce565b6001600160a01b038a1660009081526003602052604090205561476c565b6001600160a01b038a1660009081526006602052604090205460ff161580156145c757506001600160a01b03891660009081526006602052604090205460ff165b15614653576145d681896153b7565b6001600160a01b038b166000908152600360205260409020546145f9919061538e565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546146309088906153ce565b6001600160a01b038a1660009081526004602052604090205561454581886153b7565b6001600160a01b038a1660009081526006602052604090205460ff16801561469357506001600160a01b03891660009081526006602052604090205460ff165b156146df576001600160a01b038a166000908152600460205260409020546146bc90899061538e565b6001600160a01b038b166000908152600460205260409020556145d681896153b7565b6146e981896153b7565b6001600160a01b038b1660009081526003602052604090205461470c919061538e565b6001600160a01b038b1660009081526003602052604090205561472f81886153b7565b6001600160a01b038a1660009081526003602052604090205461475291906153ce565b6001600160a01b038a166000908152600360205260409020555b61477f61477982886153b7565b87614e67565b886001600160a01b03168a6001600160a01b03166000805160206155f5833981519152896040516147b291815260200190565b60405180910390a350505050505050505050565b6009546008546000918291825b600754811015614918578260036000600784815481106147f5576147f56153a1565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806148605750816004600060078481548110614839576148396153a1565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561487657600954600854945094505050509091565b600360006007838154811061488d5761488d6153a1565b60009182526020808320909101546001600160a01b031683528201929092526040019020546148bc908461538e565b925060046000600783815481106148d5576148d56153a1565b60009182526020808320909101546001600160a01b03168352820192909252604001902054614904908361538e565b915080614910816153f7565b9150506147d3565b5060085460095461492991906152a3565b821015614940576009546008549350935050509091565b90939092509050565b60006103e8600d548361495c91906153b7565b610d1e91906152a3565b60006103e8600f548361495c91906153b7565b60006103e86011548361495c91906153b7565b60006103e86013548361495c91906153b7565b60006103e86015548361495c91906153b7565b60006103e8601154600f54600d546013546015546103e86149d3919061538e565b6149dd919061538e565b6149e7919061538e565b6149f1919061538e565b6149fb919061538e565b61495c90846153b7565b6000614a5a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614e8d9092919063ffffffff16565b805190915015613a5a5780806020019051810190614a789190615480565b613a5a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d4e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110614b0c57614b0c6153a1565b6001600160a01b039283166020918202929092010152600254825191169082906001908110614b3d57614b3d6153a1565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015614b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bba9190615463565b6001600160a01b031681600181518110614bd657614bd66153a1565b60200260200101516001600160a01b031603614c5b57601d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790614c2590859060009086903090429060040161552f565b600060405180830381600087803b158015614c3f57600080fd5b505af1158015614c53573d6000803e3d6000fd5b505050505050565b601d54604051637274ca1b60e11b8152731ccfe8c40ef259566433716002e379dfffbf5a3e9163e4e9943691614c25916001600160a01b03169086906000908790429060040161556b565b601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d1d9190615463565b6002546001600160a01b03918216911603614dc557601d5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015614da0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137e391906155aa565b601d5460025460405162e8e33760e81b81523060048201526001600160a01b039182166024820152604481018590526064810184905260006084820181905260a482015261dead60c48201524260e482015291169063e8e3370090610104016060604051808303816000875af1158015614e43573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e391906155aa565b81600954614e75919061538e565b600955600a54614e869082906153ce565b600a555050565b6060614e9c8484600085614ea4565b949350505050565b606082471015614f055760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d4e565b6001600160a01b0385163b614f5c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d4e565b600080866001600160a01b03168587604051614f7891906155d8565b60006040518083038185875af1925050503d8060008114614fb5576040519150601f19603f3d011682016040523d82523d6000602084013e614fba565b606091505b5091509150614fca828286614fd5565b979650505050505050565b60608315614fe457508161104d565b825115614ff45782518084602001fd5b8160405162461bcd60e51b8152600401610d4e9190615032565b60005b83811015615029578181015183820152602001615011565b50506000910152565b602081526000825180602084015261505181604085016020870161500e565b601f01601f19169190910160400192915050565b6001600160a01b038116811461216b57600080fd5b6000806040838503121561508d57600080fd5b823561509881615065565b946020939093013593505050565b6000602082840312156150b857600080fd5b5035919050565b803561ffff811681146150d157600080fd5b919050565b600080604083850312156150e957600080fd5b6150f2836150bf565b9150615100602084016150bf565b90509250929050565b60008060006060848603121561511e57600080fd5b833561512981615065565b9250602084013561513981615065565b929592945050506040919091013590565b801515811461216b57600080fd5b6000806040838503121561516b57600080fd5b823561517681615065565b915060208301356151868161514a565b809150509250929050565b6000602082840312156151a357600080fd5b813561104d8161514a565b6000602082840312156151c057600080fd5b813561104d81615065565b600080604083850312156151de57600080fd5b8235915060208301356151868161514a565b6000806040838503121561520357600080fd5b823561520e81615065565b9150602083013561518681615065565b600181811c9082168061523257607f821691505b60208210810361525257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826152c057634e487b7160e01b600052601260045260246000fd5b500490565b61ffff81811683821601908082111561150f5761150f61528d565b60208082526015908201527473656c6c20746f74616c20666565203c3d2033302560581b604082015260600190565b60208082526014908201527362757920746f74616c20666565203c3d2033302560601b604082015260600190565b6020808252600f908201526e73656c6c20666565203c3d2031352560881b604082015260600190565b6020808252600e908201526d62757920666565203c3d2031352560901b604082015260600190565b81810381811115610d1e57610d1e61528d565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610d1e57610d1e61528d565b80820180821115610d1e57610d1e61528d565b634e487b7160e01b600052603160045260246000fd5b6000600182016154095761540961528d565b5060010190565b60208082526033908201527f6d61726b6574696e672077616c6c65742063616e27742062652073616d6520776040820152721a5d1a08151c99585cdd5c9e481dd85b1b195d606a1b606082015260800190565b60006020828403121561547557600080fd5b815161104d81615065565b60006020828403121561549257600080fd5b815161104d8161514a565b6000602082840312156154af57600080fd5b5051919050565b600081518084526020808501945080840160005b838110156154ef5781516001600160a01b0316875295820195908201906001016154ca565b509495945050505050565b84815260806020820152600061551360808301866154b6565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061554e60a08301866154b6565b6001600160a01b0394909416606083015250608001529392505050565b60018060a01b038616815284602082015283604082015260a06060820152600061559860a08301856154b6565b90508260808301529695505050505050565b6000806000606084860312156155bf57600080fd5b8351925060208401519150604084015190509250925092565b600082516155ea81846020870161500e565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b7488a7385de18f75efb37a1ea8f2941950cf049256e05dce26f2ac80ed0493564736f6c63430008120033a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6884f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000d1024ab8fb5cdcfb575efa123a8c2dd54b7b17e90000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000090e8ac725f8447aa13715f4e3fd38984cde8c47a0000000000000000000000005d73f4b0d6e65323af1955c5f7ceb9a8fa2f3d8e000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006426172626965000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d49440000000000000000000000000000000000000000000000000000000000