[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_ownerAddr", "type": "address" }, { "internalType": "address", "name": "_factoryAddress", "type": "address" }, { "internalType": "uint256", "name": "_omniSupply", "type": "uint256" }, { "internalType": "uint256", "name": "_launchFunds", "type": "uint256" }, { "internalType": "uint256", "name": "_launchTime", "type": "uint256" }, { "internalType": "uint256", "name": "_launchHardCap", "type": "uint256" }, { "internalType": "address", "name": "_creatorAddr", "type": "address" }, { "internalType": "address", "name": "_signer", "type": "address" }, { "internalType": "bytes", "name": "params", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "NotImplement", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "enum ActionType", "name": "_action", "type": "uint8" }, { "indexed": false, "internalType": "uint64", "name": "_srcChainId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_lockedNative", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_lockedToken", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "AssetLocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "_srcChainId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "_sender", "type": "address" }, { "indexed": false, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_token", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "Crossed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "_srcChainId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "_srcAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "MessageReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "_srcChainId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "_srcAddress", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "_action", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "_pongFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_expectPongFee", "type": "uint256" } ], "name": "PongfeeFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint64", "name": "_srcChainId", "type": "uint64" }, { "indexed": false, "internalType": "uint256", "name": "tokenIn", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokenOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "Stake", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0In", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1In", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount0Out", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1Out", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "Swap", "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": "address", "name": "_owner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_native", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_token", "type": "uint256" } ], "name": "Unlocked", "type": "event" }, { "inputs": [], "name": "_channel", "outputs": [ { "internalType": "contract IChannelSlave", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_factory", "outputs": [ { "internalType": "contract IFactorySlave", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "srcChainId", "type": "uint64" }, { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint8", "name": "action", "type": "uint8" }, { "internalType": "uint256", "name": "pongFee", "type": "uint256" }, { "internalType": "bytes", "name": "params", "type": "bytes" } ], "name": "actionCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "airdropAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "buyNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "buyNoncePong", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pongFee", "type": "uint256" }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "buyPingEstimateGas", "outputs": [ { "internalType": "uint256", "name": "pingFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creatorAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "crossNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "crossNoncePing", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "dstChainId", "type": "uint64" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "crossTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "dstChainId", "type": "uint64" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "crossToEstimateGas", "outputs": [ { "internalType": "uint256", "name": "pingFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cutShortTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "", "type": "address" } ], "name": "depositPing", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "depositTotal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factoryAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bool", "name": "", "type": "bool" } ], "name": "getAmountOut", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "biz", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "sender", "type": "address" } ], "name": "getHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getVersion", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [], "name": "launchFunds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launchHardCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launchLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launchTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launched", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "messageReceived", "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": "nativeMax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nativeMin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nativeTotal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nowTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "omniSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "sellNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "sellNoncePong", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pongFee", "type": "uint256" }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "sellPingEstimateGas", "outputs": [ { "internalType": "uint256", "name": "pingFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setAirdropAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setCreatorAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "time", "type": "uint256" } ], "name": "setCutShortTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setFeeAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setLaunchHardCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "launchTime_", "type": "uint256" } ], "name": "setLaunchTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_launched", "type": "bool" } ], "name": "setLaunched", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setNativeMax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setNativeMin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setNativeTotal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "pause_", "type": "bool" } ], "name": "setSignSwitch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr_", "type": "address" } ], "name": "setSigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "pause_", "type": "bool" } ], "name": "setSwapPause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "time", "type": "uint256" } ], "name": "setSwapTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setTokenMin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "signSwitch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "signer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "token", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "stake", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "uint256", "name": "token", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "stakePingEstimateGas", "outputs": [ { "internalType": "uint256", "name": "pingFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pongFee", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "swapExactETHForTokens", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pongFee", "type": "uint256" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "swapExactTokensForETH", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "swapPause", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenMin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "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": "uint256", "name": "pongFee", "type": "uint256" }, { "internalType": "uint256", "name": "token", "type": "uint256" } ], "name": "unStake", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "unStakeNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "unStakeNoncePing", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pongFee", "type": "uint256" }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "uint256", "name": "token", "type": "uint256" } ], "name": "unStakePingEstimateGas", "outputs": [ { "internalType": "uint256", "name": "pingFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052676124fee993bc0000601355674563918244f40000601455655af3107a4000601555670de0b6b3a76400006016556802b5e3af16b18800006017556102586021556022805460ff1990811690915560646023556024805490911690553480156200006d57600080fd5b506040516200409f3803806200409f83398101604081905262000090916200044c565b8a8a8a8a8a8a8a8a8a88886003620000a98382620005f0565b506004620000b88282620005f0565b505050620000d5620000cf6200031160201b60201c565b62000315565b60016006556009805460ff19169055600b80546001600160a01b03199081166001600160a01b038a81169182179093556011805483169091179055600c879055600d869055600e859055600f8490556010805482168484161790556012805490911691881691909117905583620001865760405162461bcd60e51b815260206004820152601060248201526f3630bab731b410333ab732399032b93960811b60448201526064015b60405180910390fd5b6000600c5411620001da5760405162461bcd60e51b815260206004820152601560248201527f746f74616c20737570706c7920696e697420657272000000000000000000000060448201526064016200017d565b50505050505050505081601a60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555087601860006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601860009054906101000a90046001600160a01b03166001600160a01b031663995cf0a46040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab9190620006bc565b601980546001600160a01b0319166001600160a01b0392909216919091179055805115620003005780806020019051810190620002e99190620006e1565b6022805460ff1916911515919091179055601b5550505b505050505050505050505062000729565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200038f57600080fd5b81516001600160401b0380821115620003ac57620003ac62000367565b604051601f8301601f19908116603f01168101908282118183101715620003d757620003d762000367565b8160405283815260209250866020858801011115620003f557600080fd5b600091505b83821015620004195785820183015181830184015290820190620003fa565b6000602085830101528094505050505092915050565b80516001600160a01b03811681146200044757600080fd5b919050565b60008060008060008060008060008060006101608c8e0312156200046f57600080fd5b8b516001600160401b038111156200048657600080fd5b620004948e828f016200037d565b60208e0151909c5090506001600160401b03811115620004b357600080fd5b620004c18e828f016200037d565b9a5050620004d260408d016200042f565b9850620004e260608d016200042f565b975060808c0151965060a08c0151955060c08c0151945060e08c015193506200050f6101008d016200042f565b9250620005206101208d016200042f565b6101408d01519092506001600160401b038111156200053e57600080fd5b6200054c8e828f016200037d565b9150509295989b509295989b9093969950565b600181811c908216806200057457607f821691505b6020821081036200059557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005eb576000816000526020600020601f850160051c81016020861015620005c65750805b601f850160051c820191505b81811015620005e757828155600101620005d2565b5050505b505050565b81516001600160401b038111156200060c576200060c62000367565b62000624816200061d84546200055f565b846200059b565b602080601f8311600181146200065c5760008415620006435750858301515b600019600386901b1c1916600185901b178555620005e7565b600085815260208120601f198616915b828110156200068d578886015182559484019460019091019084016200066c565b5085821015620006ac5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620006cf57600080fd5b620006da826200042f565b9392505050565b60008060008060808587031215620006f857600080fd5b845193506020850151925060408501519150606085015180151581146200071e57600080fd5b939692955090935050565b61396680620007396000396000f3fe6080604052600436106104265760003560e01c80636b0d3a121161022f57806395d89b4111610139578063b8b971b8116100b6578063e40afab21161007a578063e40afab214610d33578063f00e51f914610d60578063f2fde38b14610d80578063f56f403014610da0578063f765d1c614610db357600080fd5b8063b8b971b814610c93578063c5cc6b6a14610cb3578063d54a5c7a14610cd3578063dd62ed3e14610cf3578063e0d313ab14610d1357600080fd5b8063a457c2d7116100fd578063a457c2d714610be5578063a9059cbb14610c05578063acbd65e614610c25578063b3affc5114610c5d578063b883d89c14610c7357600080fd5b806395d89b4114610b5d578063966dae0e14610b725780639a93883614610b925780639ff46e7414610bb2578063a1fe036214610bd257600080fd5b80637be36869116101c75780638091f3bf1161018b5780638091f3bf14610ac55780638705fcd414610adf5780638708fbbc14610aff5780638da5cb5b14610b1f578063944d928d14610b3d57600080fd5b80637be3686914610a2a5780637d189f1714610a635780637fb181c114610a795780637fb3961c14610a8f5780638014f74914610aa557600080fd5b80636b0d3a121461094d5780636c19e7831461096d57806370a082311461098d578063715018a6146109ad578063763b45ba146109c2578063763f3954146109d8578063786627ce146109eb578063790ca41314610a015780637b0472f014610a1757600080fd5b8063313ce567116103305780634c2c8370116102c85780635c0f7dd11161028c5780635c0f7dd1146108a25780635f04a791146108b85780636715f709146108f35780636723b9621461091357806369ac3a4f1461092d57600080fd5b80634c2c8370146107f25780634e2525e6146108125780634fa579411461083f57806351932c9a1461086c5780635252281a1461088c57600080fd5b8063313ce567146106d557806333195d51146106f1578063335f1b3714610711578063372caeb81461072457806339509351146107375780633c58a1541461075757806341275358146107775780634431665e146107975780634856a0cf146107b757600080fd5b806311232b88116103be57806318160ddd1161038257806318160ddd146106335780631b095b3314610648578063238ac9331461066857806323b872dd1461068857806324fbafb0146106a857600080fd5b806311232b88146105b4578063116d464f146105ca57806314ed913c146105e057806315c3fc21146105f3578063165523931461061357600080fd5b806306fdde031461043d5780630810e632146104685780630902f1ac146104a0578063095ea7b3146104ca5780630d7d9fe6146104fa5780630d8e6e2c1461051a5780630eefd8861461053957806310be675f1461057a57806311106ee21461059457600080fd5b3661043857610436600033610dc9565b005b600080fd5b34801561044957600080fd5b50610452610fd2565b60405161045f9190612fae565b60405180910390f35b34801561047457600080fd5b50601954610488906001600160a01b031681565b6040516001600160a01b03909116815260200161045f565b3480156104ac57600080fd5b506104b5611064565b6040805192835260208301919091520161045f565b3480156104d657600080fd5b506104ea6104e5366004612fdd565b611083565b604051901515815260200161045f565b34801561050657600080fd5b50610436610515366004613009565b61109d565b34801561052657600080fd5b506013545b60405190815260200161045f565b34801561054557600080fd5b506104ea610554366004613022565b600760209081526000938452604080852082529284528284209052825290205460ff1681565b34801561058657600080fd5b506022546104ea9060ff1681565b3480156105a057600080fd5b5061052b6105af366004613068565b6110aa565b3480156105c057600080fd5b5061052b60155481565b3480156105d657600080fd5b5061052b600d5481565b6104366105ee3660046130ad565b6110c8565b3480156105ff57600080fd5b5061043661060e366004613009565b6111fe565b34801561061f57600080fd5b50601054610488906001600160a01b031681565b34801561063f57600080fd5b5060025461052b565b34801561065457600080fd5b506104366106633660046130dd565b61120b565b34801561067457600080fd5b50601a54610488906001600160a01b031681565b34801561069457600080fd5b506104ea6106a33660046130fa565b611226565b3480156106b457600080fd5b5061052b6106c336600461311a565b601f6020526000908152604090205481565b3480156106e157600080fd5b506040516012815260200161045f565b3480156106fd57600080fd5b5061043661070c366004613009565b61124a565b34801561071d57600080fd5b504261052b565b610436610732366004613137565b611257565b34801561074357600080fd5b506104ea610752366004612fdd565b61138f565b34801561076357600080fd5b5061052b610772366004613022565b6113b1565b34801561078357600080fd5b50600b54610488906001600160a01b031681565b3480156107a357600080fd5b506104366107b23660046130dd565b611450565b3480156107c357600080fd5b506104ea6107d2366004612fdd565b602560209081526000928352604080842090915290825290205460ff1681565b3480156107fe57600080fd5b5061052b61080d366004613022565b61146b565b34801561081e57600080fd5b5061052b61082d36600461311a565b60266020526000908152604090205481565b34801561084b57600080fd5b5061052b61085a36600461311a565b601c6020526000908152604090205481565b34801561087857600080fd5b50610436610887366004613009565b6114a3565b34801561089857600080fd5b5061052b60175481565b3480156108ae57600080fd5b5061052b601b5481565b3480156108c457600080fd5b506104ea6108d3366004612fdd565b601e60209081526000928352604080842090915290825290205460ff1681565b3480156108ff57600080fd5b5061052b61090e366004613022565b6114b0565b34801561091f57600080fd5b506024546104ea9060ff1681565b34801561093957600080fd5b506104366109483660046130dd565b6114e8565b34801561095957600080fd5b5061052b61096836600461311a565b611563565b34801561097957600080fd5b5061043661098836600461311a565b6115c6565b34801561099957600080fd5b5061052b6109a836600461311a565b6115f0565b3480156109b957600080fd5b5061043661160b565b3480156109ce57600080fd5b5061052b60165481565b6104366109e63660046131e4565b61161f565b3480156109f757600080fd5b5061052b600a5481565b348015610a0d57600080fd5b5061052b600e5481565b610436610a25366004613137565b611755565b348015610a3657600080fd5b506104ea610a45366004612fdd565b60208080526000928352604080842090915290825290205460ff1681565b348015610a6f57600080fd5b5061052b600f5481565b348015610a8557600080fd5b5061052b60235481565b348015610a9b57600080fd5b5061052b600c5481565b348015610ab157600080fd5b5061052b610ac03660046130ad565b611893565b348015610ad157600080fd5b506009546104ea9060ff1681565b348015610aeb57600080fd5b50610436610afa36600461311a565b6118e2565b348015610b0b57600080fd5b50610436610b1a366004613009565b61190c565b348015610b2b57600080fd5b506005546001600160a01b0316610488565b348015610b4957600080fd5b50610436610b58366004613009565b611919565b348015610b6957600080fd5b50610452611926565b348015610b7e57600080fd5b50601254610488906001600160a01b031681565b348015610b9e57600080fd5b50610436610bad366004613009565b611935565b348015610bbe57600080fd5b50610436610bcd366004613009565b611942565b610436610be036600461327c565b61194f565b348015610bf157600080fd5b506104ea610c00366004612fdd565b611995565b348015610c1157600080fd5b506104ea610c20366004612fdd565b611a10565b348015610c3157600080fd5b5061052b610c403660046132b5565b600860209081526000928352604080842090915290825290205481565b348015610c6957600080fd5b5061052b60145481565b348015610c7f57600080fd5b50610436610c8e36600461311a565b611a1e565b348015610c9f57600080fd5b5061052b610cae3660046132fa565b611a48565b348015610cbf57600080fd5b50601854610488906001600160a01b031681565b348015610cdf57600080fd5b50610436610cee36600461311a565b611a81565b348015610cff57600080fd5b5061052b610d0e366004613379565b611aab565b348015610d1f57600080fd5b50601154610488906001600160a01b031681565b348015610d3f57600080fd5b5061052b610d4e36600461311a565b601d6020526000908152604090205481565b348015610d6c57600080fd5b5061052b610d7b3660046133a7565b611ad6565b348015610d8c57600080fd5b50610436610d9b36600461311a565b611b5c565b610436610dae3660046133dc565b611bd5565b348015610dbf57600080fd5b5061052b60215481565b6000610dd683833461146b565b905082600003610de4578092505b600083610df1833461347a565b610dfb919061347a565b9050601554811015610e285760405162461bcd60e51b8152600401610e1f9061348d565b60405180910390fd5b601454811115610e7a5760405162461bcd60e51b815260206004820152601e60248201527f74686520616d6f756e742063616e6e6f7420626520746f6f206c6172676500006044820152606401610e1f565b60095460ff16610eff57336000908152601c602052604081208054839290610ea39084906134c4565b90915550610eb2905033611563565b336000908152601c60205260409020541115610eff5760405162461bcd60e51b815260206004820152600c60248201526b0e0c2f240e8dede40daeac6d60a31b6044820152606401610e1f565b336000908152601d60205260409020546019546001600160a01b031663549aa4a43485610f2c89876134c4565b610f42610f3a8760016134c4565b8a8c8a611cf2565b336040518663ffffffff1660e01b8152600401610f6294939291906134d7565b6000604051808303818588803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b5050505050601d6000610f9f3390565b6001600160a01b0316815260208101919091526040016000908120805491610fc68361350f565b91905055505050505050565b606060038054610fe190613528565b80601f016020809104026020016040519081016040528092919081815260200182805461100d90613528565b801561105a5780601f1061102f5761010080835404028352916020019161105a565b820191906000526020600020905b81548152906001019060200180831161103d57829003601f168201915b5050505050905090565b60008060405160016235f76760e11b0319815260040160405180910390fd5b600033611091818585611d5a565b60019150505b92915050565b6110a5611e7e565b601455565b600060405160016235f76760e11b0319815260040160405180910390fd5b33816110d3826115f0565b10156111185760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b6044820152606401610e1f565b6111228183611ed8565b46600090815260086020908152604080832033845290915281205490611149868686611893565b6019549091506001600160a01b031663549aa4a43483600061117761116f8860016134c4565b8c8c8c611ff8565b336040518663ffffffff1660e01b815260040161119794939291906134d7565b6000604051808303818588803b1580156111b057600080fd5b505af11580156111c4573d6000803e3d6000fd5b5050466000908152600860209081526040808320338452909152812080549450925090506111f18361350f565b9190505550505050505050565b611206611e7e565b602155565b611213611e7e565b6022805460ff1916911515919091179055565b600033611234858285612056565b61123f8585856120ca565b506001949350505050565b611252611e7e565b601755565b61125f612128565b6000811161127f5760405162461bcd60e51b8152600401610e1f90613562565b33600061128d8483856113b1565b905061129984826134c4565b3410156112b85760405162461bcd60e51b8152600401610e1f90613589565b6001600160a01b038216600090815260266020526040812054906112e86112e08360016134c4565b858888612181565b601954604051631526a92960e21b81529192506001600160a01b03169063549aa4a49034906113219087908b90879033906004016134d7565b6000604051808303818588803b15801561133a57600080fd5b505af115801561134e573d6000803e3d6000fd5b5050506001600160a01b03861660009081526026602052604081208054935091506113788361350f565b91905055505050505061138b6001600655565b5050565b6000336110918185856113a28383611aab565b6113ac91906134c4565b611d5a565b336000908152602660205260408120546019546001600160a01b031663cb1b3dd1866113e96113e18560016134c4565b888a89612181565b6040518363ffffffff1660e01b81526004016114069291906135b8565b602060405180830381865afa158015611423573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144791906135d1565b95945050505050565b611458611e7e565b6024805460ff1916911515919091179055565b336000908152601d60205260408120546019546001600160a01b031663cb1b3dd1866113e961149b8560016134c4565b888a89611cf2565b6114ab611e7e565b601555565b336000908152601f60205260408120546019546001600160a01b031663cb1b3dd1866113e96114e08560016134c4565b888a8961218a565b601a546001600160a01b031633148061150b57506005546001600160a01b031633145b6115505760405162461bcd60e51b81526020600482015260166024820152751bdb9b1e481cda59db995c8bdbdddb995c8818d85b1b60521b6044820152606401610e1f565b6009805460ff1916911515919091179055565b60105460009081906001600160a01b039081169084160361159357601b5461158c90600a6135ea565b9050611598565b50601b545b806000036115b2576064600d546115af9190613601565b90505b600d548111156110975750600d5492915050565b6115ce611e7e565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b611613611e7e565b61161d6000612193565b565b601260009054906101000a90046001600160a01b03166001600160a01b031663995cf0a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116969190613623565b6001600160a01b0316336001600160a01b0316146117045760405162461bcd60e51b815260206004820152602560248201527f4c696b77696450726f647563743a2063616c6c6572206d757374206265206368604482015264185b9b995b60da1b6064820152608401610e1f565b7ff496afe4c96f98ccadfe979e32fee625d67b649ab3b164a018eedbaecdcb7b2a858534846040516117399493929190613640565b60405180910390a161174e85858585856121e5565b5050505050565b61175d612128565b6000821161177d5760405162461bcd60e51b8152600401610e1f90613562565b3382611788826115f0565b10156117d65760405162461bcd60e51b815260206004820152601c60248201527f7374616b6520616d6f756e7420657863656564732062616c616e6365000000006044820152606401610e1f565b60006117e3828585611ad6565b9050803410156118055760405162461bcd60e51b8152600401610e1f90613589565b600061181283868661230b565b905061181e8386611ed8565b6019546001600160a01b031663549aa4a43484600085336040518663ffffffff1660e01b815260040161185494939291906134d7565b6000604051808303818588803b15801561186d57600080fd5b505af1158015611881573d6000803e3d6000fd5b505050505050505061138b6001600655565b6001600160401b03831660009081526008602090815260408083206001600160a01b038087168552925282205460195490911663cb1b3dd1836113e96118da8560016134c4565b898989611ff8565b6118ea611e7e565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b611914611e7e565b602355565b611921611e7e565b601655565b606060048054610fe190613528565b61193d611e7e565b600f55565b61194a611e7e565b600e55565b611957612128565b60245460ff161561197a5760405162461bcd60e51b8152600401610e1f90613676565b61198683338385612375565b6119906001600655565b505050565b600033816119a38286611aab565b905083811015611a035760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610e1f565b61123f8286868403611d5a565b6000336110918185856120ca565b611a26611e7e565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600084848484604051602001611a61949392919061369a565b604051602081830303815290604052805190602001209050949350505050565b611a89611e7e565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6019546000906001600160a01b031663cb1b3dd182611af687878761230b565b6040518363ffffffff1660e01b8152600401611b139291906135b8565b602060405180830381865afa158015611b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5491906135d1565b949350505050565b611b64611e7e565b6001600160a01b038116611bc95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e1f565b611bd281612193565b50565b611bdd612128565b60245460ff1615611c005760405162461bcd60e51b8152600401610e1f90613676565b60225460ff168015611c15575060095460ff16155b15611cd8576000611c4a6040518060400160405280600381526020016262757960e81b815250611c43611926565b3433611a48565b601a54604080516020601f8701819004810282018101909252858152929350611c9b926001600160a01b03909216918491879087908190840183828082843760009201919091525061254e92505050565b611cd65760405162461bcd60e51b815260206004820152600c60248201526b3b32b934b33c9032b93937b960a11b6044820152606401610e1f565b505b611ce28484610dc9565b611cec6001600655565b50505050565b606060005b611cff611926565b60408051602081018990526001600160a01b0388168183015260608082018790528251808303909101815260808201909252611d41939291879160a0016136fc565b6040516020818303038152906040529050949350505050565b6001600160a01b038316611dbc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e1f565b6001600160a01b038216611e1d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e1f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b0316331461161d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e1f565b6001600160a01b038216611f385760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610e1f565b6001600160a01b03821660009081526020819052604090205481811015611fac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610e1f565b6001600160a01b038316600081815260208181526040808320868603905560028054879003905551858152919291600080516020613911833981519152910160405180910390a3505050565b60606004612004611926565b60408051602081018990526001600160401b038816818301526001600160a01b038716606082015260808082018790528251808303909101815260a08201909252611d4193929160009160c00161373b565b60006120628484611aab565b90506000198114611cec57818110156120bd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610e1f565b611cec8484848403611d5a565b3330148015906120e257506001600160a01b03821630145b1561211d5760405162461bcd60e51b815260206004820152600b60248201526a155b9cdd5c1c1bdc9d195960aa1b6044820152606401610e1f565b6119908383836125af565b60026006540361217a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610e1f565b6002600655565b60606006611cf7565b60606002611cf7565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60001960ff8416016122305760008060008060008580602001905181019061220d9190613772565b945094509450945094506122268a8a868686868b612741565b505050505061174e565b60021960ff841601612275576000806000808480602001905181019061225691906137ca565b935093509350935061226c8989858486896127f5565b5050505061174e565b60061960ff8416016122b35760008060008380602001905181019061229a9190613808565b9250925092506122ab8282856128f2565b50505061174e565b60031960ff8416016122ef57600080600080848060200190518101906122d99190613841565b935093509350935061226c898985858589612974565b60405160016235f76760e11b0319815260040160405180910390fd5b60606005612317611926565b604080516001600160a01b03881660208201529081018690526060810185905260009060800160408051601f198184030181529082905261235d9493929160200161373b565b60405160208183030381529060405290509392505050565b600081116123b65760405162461bcd60e51b815260206004820152600e60248201526d30b6b7bab73a1034b71032b9391760911b6044820152606401610e1f565b806123c0846115f0565b101561240e5760405162461bcd60e51b815260206004820152601b60248201527f73656c6c20616d6f756e7420657863656564732062616c616e636500000000006044820152606401610e1f565b600061241b8584846114b0565b905084600003612429578094505b61243385826134c4565b3410156124525760405162461bcd60e51b8152600401610e1f90613589565b6016548210156124745760405162461bcd60e51b8152600401610e1f9061348d565b336000908152601f60205260408120549061249b6124938360016134c4565b86898761218a565b90506124a78685611ed8565b6019546001600160a01b031663549aa4a434858a85336040518663ffffffff1660e01b81526004016124dc94939291906134d7565b6000604051808303818588803b1580156124f557600080fd5b505af1158015612509573d6000803e3d6000fd5b5050505050601f60006125193390565b6001600160a01b03168152602081019190915260400160009081208054916125408361350f565b919050555050505050505050565b600080600061255d8585612abf565b90925090506000816004811115612576576125766136e6565b1480156125945750856001600160a01b0316826001600160a01b0316145b806125a557506125a5868686612b04565b9695505050505050565b6001600160a01b0383166126135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e1f565b6001600160a01b0382166126755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e1f565b6001600160a01b038316600090815260208190526040902054818110156126ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610e1f565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020613911833981519152910160405180910390a3611cec565b6001600160a01b0385166000908152601e6020908152604080832084845290915290205460ff16156127855760405162461bcd60e51b8152600401610e1f9061388a565b60095460ff1661279e576009805460ff19168315151790555b6001600160a01b0385166000908152601e602090815260408083208484529091529020805460ff1916600117905582156127dc576127dc8584612bf0565b83156127ec576127ec8585612c9d565b50505050505050565b6001600160a01b03841660009081526020808052604080832084845290915290205460ff16156128375760405162461bcd60e51b8152600401610e1f9061388a565b6001600160a01b0384166000908152602080805260408083208484529091529020805460ff1916600117905560095460ff166128da576001600160a01b0384166000908152601c60205260409020548310156128c0576001600160a01b0384166000908152601c6020526040812080548592906128b590849061347a565b909155506128da9050565b6001600160a01b0384166000908152601c60205260408120555b82156128ea576128ea8484612c9d565b505050505050565b6001600160a01b038316600090815260256020908152604080832084845290915290205460ff16156129365760405162461bcd60e51b8152600401610e1f9061388a565b6001600160a01b03831660009081526025602090815260408083208484529091529020805460ff191660011790558115611990576119908383612bf0565b6001600160401b03861660009081526007602090815260408083206001600160a01b0387168452825280832084845290915290205460ff16156129c95760405162461bcd60e51b8152600401610e1f9061388a565b6001600160401b0380871660009081526007602090815260408083206001600160a01b038816845282528083208584529091529020805460ff1916600117905584164614612a485760405162461bcd60e51b815260206004820152600c60248201526b31b430b4b71034b21032b93960a11b6044820152606401610e1f565b8115612a5857612a588383612bf0565b604080516001600160401b03881681526001600160a01b0385166020820181905281830152606081018490526080810183905290517f1c632a7a248c29ea7884a8324f916f13dbb7519f10f16833f711879a8aa670d29181900360a00190a1505050505050565b6000808251604103612af55760208301516040840151606085015160001a612ae987828585612d3a565b94509450505050612afd565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401612b2e9291906135b8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612b6c91906138b4565b600060405180830381855afa9150503d8060008114612ba7576040519150601f19603f3d011682016040523d82523d6000602084013e612bac565b606091505b5091509150818015612bc057506020815110155b80156125a557508051630b135d3f60e11b90612be590830160209081019084016135d1565b149695505050505050565b6001600160a01b038216612c465760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610e1f565b8060026000828254612c5891906134c4565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020613911833981519152910160405180910390a35050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cea576040519150601f19603f3d011682016040523d82523d6000602084013e612cef565b606091505b5050905080612cfd83612df4565b604051602001612d0d91906138d0565b60405160208183030381529060405290611cec5760405162461bcd60e51b8152600401610e1f9190612fae565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612d675750600090506003612deb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612dbb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612de457600060019250925050612deb565b9150600090505b94509492505050565b60606000612e0183612e86565b60010190506000816001600160401b03811115612e2057612e20613159565b6040519080825280601f01601f191660200182016040528015612e4a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612e5457509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612ec55772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612ef1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612f0f57662386f26fc10000830492506010015b6305f5e1008310612f27576305f5e100830492506008015b6127108310612f3b57612710830492506004015b60648310612f4d576064830492506002015b600a83106110975760010192915050565b60005b83811015612f79578181015183820152602001612f61565b50506000910152565b60008151808452612f9a816020860160208601612f5e565b601f01601f19169290920160200192915050565b602081526000612fc16020830184612f82565b9392505050565b6001600160a01b0381168114611bd257600080fd5b60008060408385031215612ff057600080fd5b8235612ffb81612fc8565b946020939093013593505050565b60006020828403121561301b57600080fd5b5035919050565b60008060006060848603121561303757600080fd5b83359250602084013561304981612fc8565b929592945050506040919091013590565b8015158114611bd257600080fd5b6000806040838503121561307b57600080fd5b82359150602083013561308d8161305a565b809150509250929050565b6001600160401b0381168114611bd257600080fd5b6000806000606084860312156130c257600080fd5b83356130cd81613098565b9250602084013561304981612fc8565b6000602082840312156130ef57600080fd5b8135612fc18161305a565b60008060006060848603121561310f57600080fd5b83356130cd81612fc8565b60006020828403121561312c57600080fd5b8135612fc181612fc8565b6000806040838503121561314a57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561318957613189613159565b604051601f8501601f19908116603f011681019082821181831017156131b1576131b1613159565b816040528093508581528686860111156131ca57600080fd5b858560208301376000602087830101525050509392505050565b600080600080600060a086880312156131fc57600080fd5b853561320781613098565b9450602086013561321781612fc8565b9350604086013560ff8116811461322d57600080fd5b92506060860135915060808601356001600160401b0381111561324f57600080fd5b8601601f8101881361326057600080fd5b61326f8882356020840161316f565b9150509295509295909350565b60008060006060848603121561329157600080fd5b833592506020840135915060408401356132aa81612fc8565b809150509250925092565b600080604083850312156132c857600080fd5b82359150602083013561308d81612fc8565b600082601f8301126132eb57600080fd5b612fc18383356020850161316f565b6000806000806080858703121561331057600080fd5b84356001600160401b038082111561332757600080fd5b613333888389016132da565b9550602087013591508082111561334957600080fd5b50613356878288016132da565b93505060408501359150606085013561336e81612fc8565b939692955090935050565b6000806040838503121561338c57600080fd5b823561339781612fc8565b9150602083013561308d81612fc8565b6000806000606084860312156133bc57600080fd5b83356133c781612fc8565b95602085013595506040909401359392505050565b600080600080606085870312156133f257600080fd5b84359350602085013561340481612fc8565b925060408501356001600160401b038082111561342057600080fd5b818701915087601f83011261343457600080fd5b81358181111561344357600080fd5b88602082850101111561345557600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561109757611097613464565b6020808252601e908201527f74686520616d6f756e742063616e6e6f7420626520746f6f20736d616c6c0000604082015260600190565b8082018082111561109757611097613464565b8481528360208201526080604082015260006134f66080830185612f82565b905060018060a01b038316606083015295945050505050565b60006001820161352157613521613464565b5060010190565b600181811c9082168061353c57607f821691505b60208210810361355c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c3a37b5b2b71034b71032b9391760991b604082015260600190565b6020808252601590820152740c4e4d2c8ceca40cccaca40dcdee840cadcdeeaced605b1b604082015260600190565b828152604060208201526000611b546040830184612f82565b6000602082840312156135e357600080fd5b5051919050565b808202811582820484141761109757611097613464565b60008261361e57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561363557600080fd5b8151612fc181612fc8565b6001600160401b038516815260018060a01b03841660208201528260408201526080606082015260006125a56080830184612f82565b6020808252600a90820152697377617020706175736560b01b604082015260600190565b600085516136ac818460208a01612f5e565b8551908301906136c0818360208a01612f5e565b01938452505060601b6bffffffffffffffffffffffff1916602082015260340192915050565b634e487b7160e01b600052602160045260246000fd5b60ff851681526080602082015260006137186080830186612f82565b84604084015282810360608401526137308185612f82565b979650505050505050565b60ff851681526080602082015260006137576080830186612f82565b60ff8516604084015282810360608401526137308185612f82565b600080600080600060a0868803121561378a57600080fd5b85519450602086015161379c81612fc8565b80945050604086015192506060860151915060808601516137bc8161305a565b809150509295509295909350565b600080600080608085870312156137e057600080fd5b8451935060208501516137f281612fc8565b6040860151606090960151949790965092505050565b60008060006060848603121561381d57600080fd5b83519250602084015161382f81612fc8565b80925050604084015190509250925092565b6000806000806080858703121561385757600080fd5b84519350602085015161386981613098565b604086015190935061387a81612fc8565b6060959095015193969295505050565b60208082526010908201526f3737b731b2903932b832ba34ba34b7b760811b604082015260600190565b600082516138c6818460208701612f5e565b9190910192915050565b77283937b23ab1ba102a3930b739b332b9103330b4b632b21760411b815260008251613903816018850160208701612f5e565b919091016018019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031cf79bb9bc6dcac76ba40156b19c0bb95e5d71c9ca3f01320407cae981d01c064736f6c63430008170033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000ea7744c4fa1101f9e6df5688fc19e3ee941064390000000000000000000000004cdbc49a24c634d67642de875088a45fec39bf530000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000000000002c68af0bb1400000000000000000000000000000000000000000000000000000000000066d6c1a800000000000000000000000000000000000000000000000010a741a462780000000000000000000000000000b8923f316b11f9a5c81070e512139a81a62ffbad000000000000000000000000ca709ea906207b44521f03ecf5b594d247dffac500000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000000d5b4c494b5749445d204c494e550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c494e55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000b1a2bc2ec500000000000000000000000000000000000000000000000000000000000000000000