Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
1,000,000,000,000.00 GALAXYDOGE

Holders:
45
Profile Summary
Blockchain:
Metis (1088)


Decimals:
2
Contract Source Code Verified (Partial Match)
Contract Name:
GalaxyDoge

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Created At:
Sat, 12 Mar 2022 20:47:16 GMT
GalaxyDoge.sol
GalaxyDoge.sol
GalaxyDoge.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountMETIS",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountBOG",
        "type": "uint256"
      }
    ],
    "name": "AutoLiquify",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "duration",
        "type": "uint256"
      }
    ],
    "name": "BuybackMultiplierActive",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "_maxTxAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_maxWalletToken",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "approveMax",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "adr",
        "type": "address"
      }
    ],
    "name": "authorize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "autoBuybackEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "autoBuybackMultiplier",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "autoLiquidityReceiver",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "buyCooldownEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "claimDividend",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "clearBuybackMultiplier",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_status",
        "type": "bool"
      },
      {
        "internalType": "uint8",
        "name": "_interval",
        "type": "uint8"
      }
    ],
    "name": "cooldownEnabled",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "cooldownTimerInterval",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getCirculatingSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "accuracy",
        "type": "uint256"
      }
    ],
    "name": "getLiquidityBacking",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getMultipliedFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "selling",
        "type": "bool"
      }
    ],
    "name": "getTotalFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "shareholder",
        "type": "address"
      }
    ],
    "name": "getUnpaidEarnings",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "adr",
        "type": "address"
      }
    ],
    "name": "isAuthorized",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "target",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "accuracy",
        "type": "uint256"
      }
    ],
    "name": "isOverLiquified",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "isOwner",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "launchedAt",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "manualSend",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "marketingFeeReceiver",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "router",
    "outputs": [
      {
        "internalType": "contract IDEXRouter",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_enabled",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "_cap",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_period",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "_autoBuybackMultiplier",
        "type": "bool"
      }
    ],
    "name": "setAutoBuybackSettings",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "numerator",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "denominator",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "length",
        "type": "uint256"
      }
    ],
    "name": "setBuybackMultiplierSettings",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_minPeriod",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_minDistribution",
        "type": "uint256"
      }
    ],
    "name": "setDistributionCriteria",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "gas",
        "type": "uint256"
      }
    ],
    "name": "setDistributorSettings",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_autoLiquidityReceiver",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_marketingFeeReceiver",
        "type": "address"
      }
    ],
    "name": "setFeeReceivers",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_liquidityFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_buybackFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_reflectionFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_marketingFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_feeDenominator",
        "type": "uint256"
      }
    ],
    "name": "setFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "exempt",
        "type": "bool"
      }
    ],
    "name": "setIsDividendExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "exempt",
        "type": "bool"
      }
    ],
    "name": "setIsFeeExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "exempt",
        "type": "bool"
      }
    ],
    "name": "setIsTimelockExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "exempt",
        "type": "bool"
      }
    ],
    "name": "setIsTxLimitExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxWallPercent",
        "type": "uint256"
      }
    ],
    "name": "setMaxWalletPercent",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_enabled",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "setSwapBackSettings",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_target",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_denominator",
        "type": "uint256"
      }
    ],
    "name": "setTargetLiquidity",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "setTxLimit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapThreshold",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tradingOpen",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_status",
        "type": "bool"
      }
    ],
    "name": "tradingStatus",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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 payable",
        "name": "adr",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "triggerBuybackMultiplier",
        "type": "bool"
      }
    ],
    "name": "triggerManualBuyback",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "adr",
        "type": "address"
      }
    ],
    "name": "unauthorize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
6080604052600280546001600160a01b031990811673ea32a96608495e54156ae48931a7c20f0dcc1a2117825560038054821673deaddeaddeaddeaddeaddeaddeaddeaddead000017905560048054821661dead1790556005805490911690556200006c90600a62000577565b6200007d9064e8d4a5100062000638565b60065560646002600654600562000095919062000638565b620000a191906200050b565b620000ad91906200050b565b60075560646006546005620000c3919062000638565b620000cf91906200050b565b60085561012c600f55600060105560c860118190556102bc6012556104b0601355612710601490815560175560646018819055601c805460ff19908116909155601d92909255601e8190556107086020556021805461010061ffff19918216179091556207a12060285560298054909116610a01179055602b80549092166001179091556006546200016291906200050b565b602c553480156200017257600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601980547381b9fa50d5f5155ee17817c21702c3ae4780ad09931683179055825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b158015620001f457600080fd5b505afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f9190620004d9565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200027c57600080fd5b505af115801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b79190620004d9565b601a80546001600160a01b0319166001600160a01b03928316179055306000908152600a60209081526040808320601980548616855292529182902060001990555490519116906200030990620004cb565b6001600160a01b039091168152602001604051809103906000f08015801562000336573d6000803e3d6000fd5b50602780546001600160a01b039283166001600160a01b0319918216179091557f2cfd7222d0700205941c3cabfe68dd51e9ca9cbe8d657f7b071bce732bcc461a805460ff1990811660019081179092557fd63d449d70a82c47d2088cec42253dfb17924f854abbc3967c7c8070215e9e038054821683179055336000818152600d60209081526040808320805486168717905560048054891684528184208054871688179055308085528285208054881689179055601a548a168552600e8452828520805488168917905584528184208054871688179055549097168252868220805490941690941790925560158054851690911790556016805490931673700f6b50dc3b4d85a942c61b54a8505c8d5daace17909255600654739b009062d8e85c6701353bed6ca8e7ad611542f5808452600983527f6f5315dd7083150d351f610127d0b429ecd7f0ae597f226472b1afbf41e7e62582905593519081528392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000670565b611068806200307a83390190565b600060208284031215620004ec57600080fd5b81516001600160a01b03811681146200050457600080fd5b9392505050565b6000826200052957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200056f5781600019048211156200055357620005536200065a565b808516156200056157918102915b93841c939080029062000533565b509250929050565b60006200050460ff841683600082620005935750600162000632565b81620005a25750600062000632565b8160018114620005bb5760028114620005c657620005e6565b600191505062000632565b60ff841115620005da57620005da6200065a565b50506001821b62000632565b5060208310610133831016604e8410600b84101617156200060b575081810a62000632565b6200061783836200052e565b80600019048211156200062e576200062e6200065a565b0290505b92915050565b60008160001904831182151516156200065557620006556200065a565b500290565b634e487b7160e01b600052601160045260246000fd5b6129fa80620006806000396000f3fe60806040526004361061036f5760003560e01c806382334b94116101c6578063dd62ed3e116100f7578063f2fde38b11610095578063f84ba65d1161006f578063f84ba65d14610a30578063f887ea4014610a50578063fe9fbb8014610a70578063ffb54a9914610a9057600080fd5b8063f2fde38b146109db578063f4293890146109fb578063f708a64f14610a1057600080fd5b8063e96fada2116100d1578063e96fada214610966578063f0b37c0414610986578063f0fc6bca146109a6578063f1f3bca3146109bb57600080fd5b8063dd62ed3e146108e1578063df20fd4914610927578063e1dcc71f1461094757600080fd5b8063a9059cbb11610164578063bf56b3711161013e578063bf56b37114610876578063ca33e64c1461088c578063d51ed1c8146108ac578063d806d12f146108cc57600080fd5b8063a9059cbb14610821578063b210b06d14610841578063b6a5d7de1461085657600080fd5b806395d89b41116101a057806395d89b411461078e5780639d1944f5146107c1578063a4b45c00146107e1578063a8aa1b311461080157600080fd5b806382334b941461071c57806382bf293c1461073c578063893d20e81461075c57600080fd5b80632f54bf6e116102a0578063617fe0ed1161023e57806370a082311161021857806370a082311461069b578063722b62ad146106d157806378109e54146106f05780637d1db4a51461070657600080fd5b8063617fe0ed14610647578063658d4b7f146106615780636ddd17131461068157600080fd5b80633bb8a8d41161027a5780633bb8a8d4146105cd57806350db71fb146105e7578063571ac8b0146106075780635c85974f1461062757600080fd5b80632f54bf6e1461055c5780632f5620d11461058b578063313ce567146105ab57600080fd5b8063201e79911161030d57806328fd3198116102e757806328fd3198146104e75780632b112e49146105075780632d48e8961461051c5780632d5945671461053c57600080fd5b8063201e7991146104875780632375ce40146104a757806323b872dd146104c757600080fd5b8063095ea7b311610349578063095ea7b3146104025780630d295980146104325780631161ae391461045257806318160ddd1461047257600080fd5b80630445b6671461037b57806304a66b48146103a457806306fdde03146103c657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610391602c5481565b6040519081526020015b60405180910390f35b3480156103b057600080fd5b506103c46103bf366004612786565b610aaa565b005b3480156103d257600080fd5b5060408051808201909152600a81526947616c617879446f676560b01b60208201525b60405161039b919061283a565b34801561040e57600080fd5b5061042261041d3660046125d0565b610b0e565b604051901515815260200161039b565b34801561043e57600080fd5b506103c461044d3660046125fc565b610b7b565b34801561045e57600080fd5b5061042261046d36600461270a565b610bb8565b34801561047e57600080fd5b50600654610391565b34801561049357600080fd5b506103c46104a236600461270a565b610bcc565b3480156104b357600080fd5b506103c46104c236600461272c565b610bfc565b3480156104d357600080fd5b506104226104e236600461255a565b610c51565b3480156104f357600080fd5b50610391610502366004612504565b610d13565b34801561051357600080fd5b50610391610d91565b34801561052857600080fd5b506103c461053736600461270a565b610de3565b34801561054857600080fd5b506103c4610557366004612683565b610e72565b34801561056857600080fd5b50610422610577366004612504565b6000546001600160a01b0391821691161490565b34801561059757600080fd5b506103c46105a6366004612633565b610ec3565b3480156105b757600080fd5b5060025b60405160ff909116815260200161039b565b3480156105d957600080fd5b506021546104229060ff1681565b3480156105f357600080fd5b506103c461060236600461259b565b610f29565b34801561061357600080fd5b50610422610622366004612504565b610f79565b34801561063357600080fd5b506103c46106423660046126b5565b610f87565b34801561065357600080fd5b506029546104229060ff1681565b34801561066d57600080fd5b506103c461067c36600461259b565b610fcd565b34801561068d57600080fd5b50602b546104229060ff1681565b3480156106a757600080fd5b506103916106b6366004612504565b6001600160a01b031660009081526009602052604090205490565b3480156106dd57600080fd5b506029546105bb90610100900460ff1681565b3480156106fc57600080fd5b5061039160085481565b34801561071257600080fd5b5061039160075481565b34801561072857600080fd5b506103c46107373660046126e7565b61101d565b34801561074857600080fd5b506103c46107573660046126b5565b61109d565b34801561076857600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161039b565b34801561079a57600080fd5b5060408051808201909152600a81526947414c415859444f474560b01b60208201526103f5565b3480156107cd57600080fd5b506103c46107dc3660046126b5565b6110e7565b3480156107ed57600080fd5b506103c46107fc366004612521565b611120565b34801561080d57600080fd5b50601a54610776906001600160a01b031681565b34801561082d57600080fd5b5061042261083c3660046125d0565b611173565b34801561084d57600080fd5b506103c4611180565b34801561086257600080fd5b506103c4610871366004612504565b6111ac565b34801561088257600080fd5b50610391601b5481565b34801561089857600080fd5b50601554610776906001600160a01b031681565b3480156108b857600080fd5b506103916108c73660046126b5565b6111fd565b3480156108d857600080fd5b50610391611241565b3480156108ed57600080fd5b506103916108fc366004612521565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561093357600080fd5b506103c4610942366004612617565b6112b4565b34801561095357600080fd5b5060215461042290610100900460ff1681565b34801561097257600080fd5b50601654610776906001600160a01b031681565b34801561099257600080fd5b506103c46109a1366004612504565b6112f0565b3480156109b257600080fd5b506103c461133b565b3480156109c757600080fd5b506103916109d63660046125fc565b61139a565b3480156109e757600080fd5b506103c46109f6366004612504565b6113f6565b348015610a0757600080fd5b506103c461148c565b348015610a1c57600080fd5b506103c4610a2b36600461259b565b6114eb565b348015610a3c57600080fd5b506103c4610a4b36600461259b565b6115ef565b348015610a5c57600080fd5b50601954610776906001600160a01b031681565b348015610a7c57600080fd5b50610422610a8b366004612504565b61163f565b348015610a9c57600080fd5b50601c546104229060ff1681565b610ab33361163f565b610ad85760405162461bcd60e51b8152600401610acf906128af565b60405180910390fd5b600f859055601084905560118390556012829055610b0282610afc8581898961165d565b9061165d565b60135560145550505050565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b699086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610ba55760405162461bcd60e51b8152600401610acf9061288f565b601c805460ff1916911515919091179055565b600082610bc4836111fd565b119392505050565b610bd53361163f565b610bf15760405162461bcd60e51b8152600401610acf906128af565b601791909155601855565b610c053361163f565b610c215760405162461bcd60e51b8152600401610acf906128af565b6002610c2d8385612928565b11158015610c3a57508183115b610c4357600080fd5b601d92909255601e55602055565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914610cfe576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610cd99184906116bc565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610d098484846116f6565b90505b9392505050565b60275460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240160206040518083038186803b158015610d5957600080fd5b505afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7591906126ce565b6005546001600160a01b0316600090815260096020526040812054610dde906004546001600160a01b0316600090815260096020526040902054610dd89060065490611c95565b90611c95565b905090565b610dec3361163f565b610e085760405162461bcd60e51b8152600401610acf906128af565b6027546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610e5657600080fd5b505af1158015610e6a573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610e9c5760405162461bcd60e51b8152600401610acf9061288f565b6029805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b610ecc3361163f565b610ee85760405162461bcd60e51b8152600401610acf906128af565b6021805460229590955560006023556024939093556025919091554360265561ffff1990921692151561ff0019169290921761010091151591909102179055565b610f323361163f565b610f4e5760405162461bcd60e51b8152600401610acf906128af565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000610b7582600019610b0e565b610f903361163f565b610fac5760405162461bcd60e51b8152600401610acf906128af565b6103e8600654610fbc9190612928565b811015610fc857600080fd5b600755565b610fd63361163f565b610ff25760405162461bcd60e51b8152600401610acf906128af565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6110263361163f565b6110425760405162461bcd60e51b8152600401610acf906128af565b6004546110599083906001600160a01b0316611cd7565b80156110995742601f55602080546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a910160405180910390a15b5050565b6000546001600160a01b031633146110c75760405162461bcd60e51b8152600401610acf9061288f565b6064816006546110d7919061294a565b6110e19190612928565b60085550565b6110f03361163f565b61110c5760405162461bcd60e51b8152600401610acf906128af565b620b71b0811061111b57600080fd5b602855565b6111293361163f565b6111455760405162461bcd60e51b8152600401610acf906128af565b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6000610d0c3384846116f6565b6111893361163f565b6111a55760405162461bcd60e51b8152600401610acf906128af565b6000601f55565b6000546001600160a01b031633146111d65760405162461bcd60e51b8152600401610acf9061288f565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610b7561120a610d91565b601a546001600160a01b031660009081526009602052604090205461123b90611234906002611de0565b8590611de0565b90611e5f565b60008061125f42610dd8602054601f5461165d90919063ffffffff16565b90506000611286601354610dd8601e5461123b601d54601354611de090919063ffffffff16565b90506112ad6112a460205461123b8585611de090919063ffffffff16565b6013549061165d565b9250505090565b6112bd3361163f565b6112d95760405162461bcd60e51b8152600401610acf906128af565b602b805460ff191692151592909217909155602c55565b6000546001600160a01b0316331461131a5760405162461bcd60e51b8152600401610acf9061288f565b6001600160a01b03166000908152600160205260409020805460ff19169055565b602754604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561138057600080fd5b505af1158015611394573d6000803e3d6000fd5b50505050565b600043601b5460016113ac9190612910565b106113bf57601454610b75906001611c95565b8180156113e15750426113df602054601f5461165d90919063ffffffff16565b115b156113ee57610b75611241565b505060135490565b6000546001600160a01b031633146114205760405162461bcd60e51b8152600401610acf9061288f565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6114953361163f565b6114b15760405162461bcd60e51b8152600401610acf906128af565b60165460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611099573d6000803e3d6000fd5b6114f43361163f565b6115105760405162461bcd60e51b8152600401610acf906128af565b6001600160a01b03821630148015906115375750601a546001600160a01b03838116911614155b61154057600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff191682158015919091179091556115a657602754604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610e3c565b6027546001600160a01b0383811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610e3c565b6115f83361163f565b6116145760405162461bcd60e51b8152600401610acf906128af565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008061166a8385612910565b905083811015610d0c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610acf565b600081848411156116e05760405162461bcd60e51b8152600401610acf919061283a565b5060006116ed8486612969565b95945050505050565b602d5460009060ff16156117165761170f848484611ea1565b9050610d0c565b6001600160a01b03841660009081526001602052604090205460ff1615801561175857506001600160a01b03831660009081526001602052604090205460ff16155b156117a657601c5460ff166117a65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610acf565b6001600160a01b03841660009081526001602052604090205460ff161580156117d857506001600160a01b0383163014155b80156117f257506004546001600160a01b03848116911614155b801561180c5750601a546001600160a01b03848116911614155b801561182657506016546001600160a01b03848116911614155b801561184057506015546001600160a01b03848116911614155b156118e1576001600160a01b03831660009081526009602052604090205460085461186b8483612910565b11156118df5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610acf565b505b601a546001600160a01b038581169116148015611900575060295460ff165b801561192557506001600160a01b0383166000908152600d602052604090205460ff16155b156119ce576001600160a01b0383166000908152602a6020526040902054421161199f5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610acf565b6029546119b490610100900460ff1642612910565b6001600160a01b0384166000908152602a60205260409020555b6119d88483611f87565b6119e0611ff0565b156119ed576119ed61203f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260099091529190912054611a3f9184906116bc565b6001600160a01b038516600090815260096020908152604080832093909355600b90529081205460ff1615611a745782611a7e565b611a7e858461241b565b6001600160a01b038516600090815260096020526040902054909150611aa4908261165d565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600e909152205460ff16611b48576027546001600160a01b0386811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b3557600080fd5b505af1925050508015611b46575060015b505b6001600160a01b0384166000908152600e602052604090205460ff16611bd9576027546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611bc657600080fd5b505af1925050508015611bd7575060015b505b6027546028546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611c119160040190815260200190565b600060405180830381600087803b158015611c2b57600080fd5b505af1925050508015611c3c575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c8291815260200190565b60405180910390a3506001949350505050565b6000610d0c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116bc565b602d805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b031691839150600090611d2557611d25612996565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611d5957611d59612996565b6001600160a01b03928316602091820292909201015260195460405163b6f9de9560e01b815291169063b6f9de95908590611d9f90600090869088904290600401612805565b6000604051808303818588803b158015611db857600080fd5b505af1158015611dcc573d6000803e3d6000fd5b5050602d805460ff19169055505050505050565b600082611def57506000610b75565b6000611dfb838561294a565b905082611e088583612928565b14610d0c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610acf565b6000610d0c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124c1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600990915291822054611ef29184906116bc565b6001600160a01b038086166000908152600960205260408082209390935590851681522054611f21908361165d565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f759086815260200190565b60405180910390a35060019392505050565b60075481111580611fb057506001600160a01b0382166000908152600c602052604090205460ff165b6110995760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610acf565b601a546000906001600160a01b031633148015906120115750602d5460ff16155b801561201f5750602b5460ff165b8015610dde575050602c5430600090815260096020526040902054101590565b602d805460ff1916600117905560175460185460009161205e91610bb8565b61206a57600f5461206d565b60005b90506000612091600261123b60135461123b86602c54611de090919063ffffffff16565b905060006120aa82602c54611c9590919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106120e4576120e4612996565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061211557612115612996565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b81524792919091169063791ac9479061215f9086906000908790309042906004016128d4565b600060405180830381600087803b15801561217957600080fd5b505af115801561218d573d6000803e3d6000fd5b5050505060006121a68247611c9590919063ffffffff16565b905060006121c16121b8886002611e5f565b60135490611c95565b905060006121d6600261123b8481878d611de0565b905060006121f38361123b60115487611de090919063ffffffff16565b905060006122108461123b60125488611de090919063ffffffff16565b9050602760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561226257600080fd5b505af193505050508015612274575060015b506016546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146122c7576040519150601f19603f3d011682016040523d82523d6000602084013e6122cc565b606091505b505090508061231d5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610acf565b89156124045760195460155460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b15801561238e57600080fd5b505af11580156123a2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123c79190612758565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602d805460ff19169055505050505050505050565b60008061243960145461123b60135486611de090919063ffffffff16565b30600090815260096020526040902054909150612456908261165d565b30600081815260096020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124a79085815260200190565b60405180910390a36124b98382611c95565b949350505050565b600081836124e25760405162461bcd60e51b8152600401610acf919061283a565b5060006116ed8486612928565b803580151581146124ff57600080fd5b919050565b60006020828403121561251657600080fd5b8135610d0c816129ac565b6000806040838503121561253457600080fd5b823561253f816129ac565b9150602083013561254f816129ac565b809150509250929050565b60008060006060848603121561256f57600080fd5b833561257a816129ac565b9250602084013561258a816129ac565b929592945050506040919091013590565b600080604083850312156125ae57600080fd5b82356125b9816129ac565b91506125c7602084016124ef565b90509250929050565b600080604083850312156125e357600080fd5b82356125ee816129ac565b946020939093013593505050565b60006020828403121561260e57600080fd5b610d0c826124ef565b6000806040838503121561262a57600080fd5b6125ee836124ef565b600080600080600060a0868803121561264b57600080fd5b612654866124ef565b9450602086013593506040860135925060608601359150612677608087016124ef565b90509295509295909350565b6000806040838503121561269657600080fd5b61269f836124ef565b9150602083013560ff8116811461254f57600080fd5b6000602082840312156126c757600080fd5b5035919050565b6000602082840312156126e057600080fd5b5051919050565b600080604083850312156126fa57600080fd5b823591506125c7602084016124ef565b6000806040838503121561271d57600080fd5b50508035926020909101359150565b60008060006060848603121561274157600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561276d57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561279e57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600081518084526020808501945080840160005b838110156127fa5781516001600160a01b0316875295820195908201906001016127d5565b509495945050505050565b84815260806020820152600061281e60808301866127c1565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156128675785810183015185820160400152820161284b565b81811115612879576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a0604082015260006128f360a08301866127c1565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561292357612923612980565b500190565b60008261294557634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561296457612964612980565b500290565b60008282101561297b5761297b612980565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146129c157600080fd5b5056fea2646970667358221220b3c0608238833cb12b29bd2ecdfefdafad542c6a49782e8317b023f0396d5d2d64736f6c634300080700336080604052600180546001600160a01b031990811673ea32a96608495e54156ae48931a7c20f0dcc1a21179091556002805490911673deaddeaddeaddeaddeaddeaddeaddeaddead00001790556ec097ce7bc90715b34b9f1000000000600c55610708600d5564e8d4a51000600e5534801561007a57600080fd5b50604051611068380380611068833981016040819052610099916100f3565b6001600160a01b0381166100c1577381b9fa50d5f5155ee17817c21702c3ae4780ad096100c3565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610123565b60006020828403121561010557600080fd5b81516001600160a01b038116811461011c57600080fd5b9392505050565b610f36806101326000396000f3fe6080604052600436106100dd5760003560e01c8063997664d71161007f578063e2d2e21911610059578063e2d2e2191461022e578063efca2eed14610244578063ffb2c4791461025a578063ffd49c841461027a57600080fd5b8063997664d7146101b9578063ce7c2ac2146101cf578063d0e30db01461022657600080fd5b806328fd3198116100bb57806328fd31981461014d5780632d48e8961461016d5780633a98ef391461018d5780634fab0ae8146101a357600080fd5b806311ce023d146100e257806314b6ca961461010b57806315f7e05e1461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610cd4565b610290565b005b34801561013957600080fd5b5061012b610148366004610cb9565b610408565b34801561015957600080fd5b506100f8610168366004610cb9565b61042b565b34801561017957600080fd5b5061012b610188366004610d52565b6104b4565b34801561019957600080fd5b506100f860085481565b3480156101af57600080fd5b506100f8600e5481565b3480156101c557600080fd5b506100f860095481565b3480156101db57600080fd5b5061020b6101ea366004610cb9565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104d6565b34801561023a57600080fd5b506100f8600b5481565b34801561025057600080fd5b506100f8600a5481565b34801561026657600080fd5b5061012b610275366004610d20565b610723565b34801561028657600080fd5b506100f8600d5481565b6000546001600160a01b031633146102a757600080fd5b6001600160a01b038216600090815260076020526040902054156102ce576102ce82610823565b6000811180156102f457506001600160a01b038216600090815260076020526040902054155b1561035a57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905561038d565b8015801561037f57506001600160a01b03821660009081526007602052604090205415155b1561038d5761038d8261094e565b6001600160a01b0382166000908152600760205260409020546008546103be9183916103b891610a63565b90610aae565b6008556001600160a01b03821660009081526007602052604090208190556103e581610b12565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6000546001600160a01b0316331461041f57600080fd5b61042881610823565b50565b6001600160a01b03811660009081526007602052604081205461045057506000919050565b6001600160a01b03821660009081526007602052604081205461047290610b12565b6001600160a01b0384166000908152600760205260409020600101549091508082116104a2575060009392505050565b6104ac8282610a63565b949350505050565b6000546001600160a01b031633146104cb57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104ed57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105699190610d39565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906105af576105af610eea565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105df576105df610eea565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061062590600090869030904290600401610d74565b6000604051808303818588803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106e193508692506001600160a01b03909116906370a082319060240160206040518083038186803b1580156106a357600080fd5b505afa1580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db9190610d39565b90610a63565b6009549091506106f19082610aae565b600955600854600c5461071b916107129161070c9085610b2f565b90610bae565b600b5490610aae565b600b55505050565b6000546001600160a01b0316331461073a57600080fd5b60045480610746575050565b6000805a905060005b848310801561075d57508381105b1561081c5783600f5410610771576000600f555b6107a36004600f548154811061078957610789610eea565b6000918252602090912001546001600160a01b0316610bf0565b156107da576107da6004600f54815481106107c0576107c0610eea565b6000918252602090912001546001600160a01b0316610823565b6107ef6107e85a8490610a63565b8490610aae565b92505a600f8054919350600061080483610ea3565b9190505550808061081490610ea3565b91505061074f565b5050505050565b6001600160a01b0381166000908152600760205260409020546108435750565b600061084e8261042b565b9050801561094a57600a546108639082610aae565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156108b457600080fd5b505af11580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190610cfe565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109209082610aae565b6001600160a01b03831660009081526007602052604090206002810191909155546103e590610b12565b5050565b6004805461095e90600190610e8c565b8154811061096e5761096e610eea565b60009182526020808320909101546001600160a01b03848116845260059092526040909220546004805492909316929181106109ac576109ac610eea565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109f890600190610e8c565b81548110610a0857610a08610eea565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a3e57610a3e610ed4565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c35565b90505b92915050565b600080610abb8385610e33565b905083811015610aa55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610aa8600c5461070c600b5485610b2f90919063ffffffff16565b600082610b3e57506000610aa8565b6000610b4a8385610e6d565b905082610b578583610e4b565b14610aa55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b09565b6000610aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610c6f565b600d546001600160a01b03821660009081526006602052604081205490914291610c1a9190610e33565b108015610aa85750600e54610c2e8361042b565b1192915050565b60008184841115610c595760405162461bcd60e51b8152600401610b099190610dde565b506000610c668486610e8c565b95945050505050565b60008183610c905760405162461bcd60e51b8152600401610b099190610dde565b506000610c668486610e4b565b80356001600160a01b0381168114610cb457600080fd5b919050565b600060208284031215610ccb57600080fd5b610aa582610c9d565b60008060408385031215610ce757600080fd5b610cf083610c9d565b946020939093013593505050565b600060208284031215610d1057600080fd5b81518015158114610aa557600080fd5b600060208284031215610d3257600080fd5b5035919050565b600060208284031215610d4b57600080fd5b5051919050565b60008060408385031215610d6557600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610dbe5784516001600160a01b031683529383019391830191600101610d99565b50506001600160a01b039690961660408501525050506060015292915050565b600060208083528351808285015260005b81811015610e0b57858101830151858201604001528201610def565b81811115610e1d576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610e4657610e46610ebe565b500190565b600082610e6857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610e8757610e87610ebe565b500290565b600082821015610e9e57610e9e610ebe565b500390565b6000600019821415610eb757610eb7610ebe565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122050fbd5cf3ec5e158820c7fad32d6c243c62caa269d51a5d968cf22eedbc79dc664736f6c63430008070033