Overview ERC721
Total Supply:
150 BrdChrd

Holders:
57
Profile Summary
Blockchain:
C-Chain (43114)

Contract Source Code Verified (Exact Match)
Contract Name:
BoredChoured

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Created At:
Sun, 17 Jul 2022 19:23:31 GMT
BoredChoured.sol
BoredChoured.sol
BoredChoured.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_devList",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "_fees",
        "type": "uint256[]"
      },
      {
        "internalType": "address",
        "name": "_lzEndpoint",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "MessageFailed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "Migration",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "devAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "WithdrawFees",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "devAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "tokenAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "WithdrawWrongNfts",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "devAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "tokenAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "WithdrawWrongTokens",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "MAX_SUPPLY",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "Owned",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "START_ID",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseExtension",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "devFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "percent",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "emergencyWithdraw",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "failedMessages",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "payloadLength",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "payloadHash",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "lzReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxPerPerson",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxPerTx",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "onLzReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "price",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "addressList",
        "type": "address[]"
      }
    ],
    "name": "removeWhiteList",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "retryMessage",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "royalty",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "royaltyAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_salePrice",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "royaltyAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "safeMint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeMintToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "newBaseURI",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newVal",
        "type": "uint256"
      }
    ],
    "name": "setGasForDestinationLzReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newMaxBuy",
        "type": "uint256"
      }
    ],
    "name": "setMaxPerPerson",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newMaxBuy",
        "type": "uint256"
      }
    ],
    "name": "setMaxPerTx",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newPrice",
        "type": "uint256"
      }
    ],
    "name": "setPrice",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_royalty",
        "type": "uint16"
      }
    ],
    "name": "setRoyalty",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_royaltyAddress",
        "type": "address"
      }
    ],
    "name": "setRoyaltyAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_chainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_trustedRemote",
        "type": "bytes"
      }
    ],
    "name": "setTrustedRemote",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "uri",
        "type": "string"
      }
    ],
    "name": "setURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_id",
        "type": "uint256"
      }
    ],
    "name": "tokenExists",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_chainId",
        "type": "uint16"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "traverseChains",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "name": "trustedRemoteLookup",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "updatePausedStatus",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "updateWhitelistStatus",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_addressList",
        "type": "address[]"
      },
      {
        "internalType": "uint256",
        "name": "count",
        "type": "uint256"
      }
    ],
    "name": "whiteList",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "whiteListed",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "whitelistedOnly",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdraw",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenContract",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "_id",
        "type": "uint256[]"
      }
    ],
    "name": "withdrawNFT",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenContract",
        "type": "address"
      }
    ],
    "name": "withdrawTokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60e0604052600560a090815264173539b7b760d91b60c052600290620000269082620004ea565b5060006010556096601455600160155560056016556706f05b59d3b20000601755601880546001600160a01b031916739561e0f9520d006ad1812be22090b4f398ba99ff1790556103e860195562055730601a553480156200008757600080fd5b5060405162004d7a38038062004d7a833981016040819052620000aa916200069f565b6014546040518060400160405280600c81526020016b109bdc995910da1bdd5c995960a21b81525060405180604001604052806007815260200166109c9910da1c9960ca1b8152508160009081620001039190620004ea565b506001620001128282620004ea565b5050600c805460ff19169055506200012a3362000344565b6080528151835114620001845760405162461bcd60e51b815260206004820152601360248201527f4572726f723a20696e76616c696420646174610000000000000000000000000060448201526064015b60405180910390fd5b6000805b84518160ff161015620002c157601b858260ff1681518110620001af57620001af62000781565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790556040805180820190915284518190869060ff851690811062000210576200021062000781565b602002602001015181526020016000815250601d6000878460ff16815181106200023e576200023e62000781565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010155905050838160ff168151811062000295576200029562000781565b602002602001015182620002aa9190620007ad565b915080620002b881620007c8565b91505062000188565b508061271014620003155760405162461bcd60e51b815260206004820152601860248201527f4572726f723a20696e76616c696420746f74616c20666565000000000000000060448201526064016200017b565b600d80546001600160a01b0319166001600160a01b0384161790556200033a6200039e565b50505050620007ea565b600c80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620003a8620003fb565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620003de3390565b6040516001600160a01b03909116815260200160405180910390a1565b600c5460ff1615620004435760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016200017b565b565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200047057607f821691505b6020821081036200049157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004e557600081815260208120601f850160051c81016020861015620004c05750805b601f850160051c820191505b81811015620004e157828155600101620004cc565b5050505b505050565b81516001600160401b0381111562000506576200050662000445565b6200051e816200051784546200045b565b8462000497565b602080601f8311600181146200055657600084156200053d5750858301515b600019600386901b1c1916600185901b178555620004e1565b600085815260208120601f198616915b82811015620005875788860151825594840194600190910190840162000566565b5085821015620005a65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604051601f8201601f191681016001600160401b0381118282101715620005e157620005e162000445565b604052919050565b60006001600160401b0382111562000605576200060562000445565b5060051b60200190565b80516001600160a01b03811681146200062757600080fd5b919050565b600082601f8301126200063e57600080fd5b81516020620006576200065183620005e9565b620005b6565b82815260059290921b840181019181810190868411156200067757600080fd5b8286015b848110156200069457805183529183019183016200067b565b509695505050505050565b600080600060608486031215620006b557600080fd5b83516001600160401b0380821115620006cd57600080fd5b818601915086601f830112620006e257600080fd5b81516020620006f56200065183620005e9565b82815260059290921b8401810191818101908a8411156200071557600080fd5b948201945b838610156200073e576200072e866200060f565b825294820194908201906200071a565b918901519197509093505050808211156200075857600080fd5b5062000767868287016200062c565b92505062000778604085016200060f565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115620007c357620007c362000797565b500190565b600060ff821660ff8103620007e157620007e162000797565b60010192915050565b608051614574620008066000396000612ce301526145746000f3fe6080604052600436106103ab5760003560e01c8063768d7138116101e7578063b88d4fde1161010d578063d5abeb01116100a0578063f147efeb1161006f578063f147efeb14610b03578063f2fde38b14610b37578063f968adbe14610b57578063fa0fca8414610b6d57600080fd5b8063d5abeb0114610a6f578063db2e21bc14610a85578063e985e9c514610a9a578063eb8d72b714610ae357600080fd5b8063c87b56dd116100dc578063c87b56dd146109fc578063cf89fa0314610a1c578063d1deba1f14610a2f578063d2f8dd4514610a4257600080fd5b8063b88d4fde14610992578063b9bfa0bc146109b2578063c6682862146109c7578063c6f6f216146109dc57600080fd5b8063943fb87211610185578063a0712d6811610154578063a0712d681461092a578063a22cb4651461093d578063aa39fbbe1461095d578063ad2f852a1461097257600080fd5b8063943fb872146108bf57806395d89b41146108df5780639bdedea5146108f4578063a035b1fe1461091457600080fd5b80638da5cb5b116101c15780638da5cb5b146107f75780638ee749121461081a5780639186b4251461088557806391b7f5ed1461089f57600080fd5b8063768d7138146107a15780637e0586f1146107b7578063862440e2146107d757600080fd5b806339745791116102d75780634f6ccce71161026a57806367dded4d1161023957806367dded4d1461073757806370a082311461074c578063715018a61461076c5780637533d7881461078157600080fd5b80634f6ccce7146106bf57806355f804b3146106df5780635c975abb146106ff5780636352211e1461071757600080fd5b806342966c68116102a657806342966c681461063f5780634389de9a1461065f578063483efda21461067f57806349df728c1461069f57600080fd5b806339745791146105ca5780633ccfd60b146105ea57806340d097c3146105ff57806342842e0e1461061f57600080fd5b806318160ddd1161034f5780632a55205a1161031e5780632a55205a146105365780632f745c591461057557806332cb6b0c1461059557806336e79a5a146105aa57600080fd5b806318160ddd146104c15780631c37a822146104e057806323b872dd1461050057806329ee566c1461052057600080fd5b806306d254da1161038b57806306d254da1461042757806306fdde0314610447578063081812fc14610469578063095ea7b3146104a157600080fd5b80621d3567146103b0578062923f9e146103d257806301ffc9a714610407575b600080fd5b3480156103bc57600080fd5b506103d06103cb3660046136e1565b610b9a565b005b3480156103de57600080fd5b506103f26103ed366004613765565b610d94565b60405190151581526020015b60405180910390f35b34801561041357600080fd5b506103f2610422366004613794565b610db5565b34801561043357600080fd5b506103d06104423660046137c6565b610dda565b34801561045357600080fd5b5061045c610e04565b6040516103fe919061383b565b34801561047557600080fd5b50610489610484366004613765565b610e96565b6040516001600160a01b0390911681526020016103fe565b3480156104ad57600080fd5b506103d06104bc36600461384e565b610ebd565b3480156104cd57600080fd5b506009545b6040519081526020016103fe565b3480156104ec57600080fd5b506103d06104fb3660046136e1565b610fd2565b34801561050c57600080fd5b506103d061051b36600461387a565b611041565b34801561052c57600080fd5b506104d260195481565b34801561054257600080fd5b506105566105513660046138bb565b611073565b604080516001600160a01b0390931683526020830191909152016103fe565b34801561058157600080fd5b506104d261059036600461384e565b6110ae565b3480156105a157600080fd5b506104d2609681565b3480156105b657600080fd5b506103d06105c53660046138dd565b611144565b3480156105d657600080fd5b506103d06105e536600461398f565b6111be565b3480156105f657600080fd5b506103d0611273565b34801561060b57600080fd5b506103d061061a3660046137c6565b61139a565b34801561062b57600080fd5b506103d061063a36600461387a565b6113ae565b34801561064b57600080fd5b506103d061065a366004613765565b6113c9565b34801561066b57600080fd5b506103d061067a36600461384e565b6113f7565b34801561068b57600080fd5b506103d061069a366004613765565b611409565b3480156106ab57600080fd5b506103d06106ba3660046137c6565b611416565b3480156106cb57600080fd5b506104d26106da366004613765565b61156f565b3480156106eb57600080fd5b506103d06106fa3660046139c3565b611602565b34801561070b57600080fd5b50600c5460ff166103f2565b34801561072357600080fd5b50610489610732366004613765565b611616565b34801561074357600080fd5b506103d0611676565b34801561075857600080fd5b506104d26107673660046137c6565b61169a565b34801561077857600080fd5b506103d0611720565b34801561078d57600080fd5b5061045c61079c3660046138dd565b611732565b3480156107ad57600080fd5b506104d260165481565b3480156107c357600080fd5b506103d06107d23660046139f7565b6117cc565b3480156107e357600080fd5b506103d06107f2366004613a3b565b6118ee565b34801561080357600080fd5b50600c5461010090046001600160a01b0316610489565b34801561082657600080fd5b50610870610835366004613a81565b600e60209081526000938452604080852084518086018401805192815290840195840195909520945292905282529020805460019091015482565b604080519283526020830191909152016103fe565b34801561089157600080fd5b506013546103f29060ff1681565b3480156108ab57600080fd5b506103d06108ba366004613765565b611900565b3480156108cb57600080fd5b506103d06108da366004613765565b61190d565b3480156108eb57600080fd5b5061045c61191a565b34801561090057600080fd5b506103d061090f366004613ad7565b611929565b34801561092057600080fd5b506104d260175481565b6103d0610938366004613765565b611a6c565b34801561094957600080fd5b506103d0610958366004613b8a565b611cfc565b34801561096957600080fd5b506104d2600181565b34801561097e57600080fd5b50601854610489906001600160a01b031681565b34801561099e57600080fd5b506103d06109ad366004613bc3565b611d07565b3480156109be57600080fd5b506103d0611d39565b3480156109d357600080fd5b5061045c611d55565b3480156109e857600080fd5b506103d06109f7366004613765565b611d62565b348015610a0857600080fd5b5061045c610a17366004613765565b611d6f565b6103d0610a2a366004613c22565b611d7a565b6103d0610a3d366004613c7f565b61204f565b348015610a4e57600080fd5b50610a62610a5d3660046137c6565b6121dc565b6040516103fe9190613d0a565b348015610a7b57600080fd5b506104d260145481565b348015610a9157600080fd5b506103d061229b565b348015610aa657600080fd5b506103f2610ab5366004613d4e565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b348015610aef57600080fd5b506103d0610afe366004613d7c565b612373565b348015610b0f57600080fd5b50610870610b1e3660046137c6565b601d602052600090815260409020805460019091015482565b348015610b4357600080fd5b506103d0610b523660046137c6565b612399565b348015610b6357600080fd5b506104d260155481565b348015610b7957600080fd5b506104d2610b883660046137c6565b601c6020526000908152604090205481565b600d546001600160a01b03163314610bb157600080fd5b61ffff84166000908152600f602052604090208054610bcf90613dce565b90508351148015610c0e575061ffff84166000908152600f6020526040908190209051610bfc9190613e75565b60405180910390208380519060200120145b610c7c5760405162461bcd60e51b815260206004820152603460248201527f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f756044820152731c98d9481cd95b991a5b99c818dbdb9d1c9858dd60621b60648201526084015b60405180910390fd5b604051630e1bd41160e11b81523090631c37a82290610ca5908790879087908790600401613e81565b600060405180830381600087803b158015610cbf57600080fd5b505af1925050508015610cd0575060015b610d8e576040518060400160405280825181526020018280519060200120815250600e60008661ffff1661ffff16815260200190815260200160002084604051610d1a9190613eca565b9081526040805191829003602090810183206001600160401b038716600090815290825291909120835181559201516001909201919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d90610d85908690869086908690613e81565b60405180910390a15b50505050565b6000818152600360205260408120546001600160a01b031615155b92915050565b60006001600160e01b0319821663152a902d60e11b1480610daf5750610daf8261240f565b610de2612434565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b606060008054610e1390613dce565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3f90613dce565b8015610e8c5780601f10610e6157610100808354040283529160200191610e8c565b820191906000526020600020905b815481529060010190602001808311610e6f57829003601f168201915b5050505050905090565b6000610ea182612494565b506000908152600560205260409020546001600160a01b031690565b6000610ec882611616565b9050806001600160a01b0316836001600160a01b031603610f355760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c73565b336001600160a01b0382161480610f515750610f518133610ab5565b610fc35760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610c73565b610fcd83836124f3565b505050565b3330146110355760405162461bcd60e51b815260206004820152602b60248201527f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460448201526a10313290213934b233b29760a91b6064820152608401610c73565b610d8e84848484612561565b61104c335b8261258e565b6110685760405162461bcd60e51b8152600401610c7390613ee6565b610fcd83838361260d565b60185460195460009182916001600160a01b0390911690612710906110989086613f4a565b6110a29190613f7f565b915091505b9250929050565b60006110b98361169a565b821061111b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610c73565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b61114c612434565b6103e88161ffff1611156111b55760405162461bcd60e51b815260206004820152602a60248201527f526f79616c7479206d757374206265206c6f776572207468616e206f7220657160448201526975616c20746f2031302560b01b6064820152608401610c73565b61ffff16601955565b6111c6612434565b600081511161120e5760405162461bcd60e51b81526020600482015260146024820152734572726f723a206c69737420697320656d70747960601b6044820152606401610c73565b60005b815181101561126f576000601c600084848151811061123257611232613f93565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508061126890613fa9565b9050611211565b5050565b336000908152601d60205260409020546112cf5760405162461bcd60e51b815260206004820181905260248201527f446576204f6e6c793a2063616c6c6572206973206e6f742074686520426f73736044820152606401610c73565b336000908152601d6020526040902060010154806113235760405162461bcd60e51b815260206004820152601160248201527008ae4e4dee47440dcde40cccacae640745607b1b6044820152606401610c73565b336000818152601d60205260408082206001018290555183156108fc0291849190818181858888f19350505050158015611361573d6000803e3d6000fd5b5060405181815233907f9bba815921f12cb7b1408e14b5ade745234397d39623ae5e7c82d693cb45815f9060200160405180910390a250565b6113a2612434565b6113ab816127b4565b50565b610fcd83838360405180602001604052806000815250611d07565b6113d233611046565b6113ee5760405162461bcd60e51b8152600401610c7390613ee6565b6113ab816127d6565b6113ff612434565b61126f82826127df565b611411612434565b601655565b61141e612434565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148b9190613fc2565b9050816001600160a01b031663a9059cbb6114b4600c546001600160a01b036101009091041690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015611501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115259190613fdb565b50604080516001600160a01b03851681526020810183905233917f5aa586896a67fb05c3b86276f66eecee7da00719d0e7299c403596fa2ec58ca4910160405180910390a2505050565b600061157a60095490565b82106115dd5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610c73565b600982815481106115f0576115f0613f93565b90600052602060002001549050919050565b61160a612434565b601261126f828261403e565b6000818152600360205260408120546001600160a01b031680610daf5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c73565b61167e612434565b600c5460ff16611692576116906127e9565b565b611690612843565b60006001600160a01b0382166117045760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c73565b506001600160a01b031660009081526004602052604090205490565b611728612434565b611690600061287c565b600f602052600090815260409020805461174b90613dce565b80601f016020809104026020016040519081016040528092919081815260200182805461177790613dce565b80156117c45780601f10611799576101008083540402835291602001916117c4565b820191906000526020600020905b8154815290600101906020018083116117a757829003601f168201915b505050505081565b6117d4612434565b600082511161181c5760405162461bcd60e51b81526020600482015260146024820152734572726f723a206c69737420697320656d70747960601b6044820152606401610c73565b60005b8251811015610fcd5760006001600160a01b031683828151811061184557611845613f93565b60200260200101516001600160a01b03160361189a5760405162461bcd60e51b815260206004820152601460248201527320b2323932b9b99031b0b73737ba10313290181760611b6044820152606401610c73565b81601c60008584815181106118b1576118b1613f93565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550806118e790613fa9565b905061181f565b6118f6612434565b61126f82826128d6565b611908612434565b601755565b611915612434565b601a55565b606060018054610e1390613dce565b611931612434565b8160005b8251811015610d8e57816001600160a01b03166342842e0e30611966600c546001600160a01b036101009091041690565b86858151811061197857611978613f93565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156119d257600080fd5b505af11580156119e6573d6000803e3d6000fd5b50505050336001600160a01b03167fb8dbf4ce06446b88ef02ffd28a948c2637ac80fb0bd4d3a31c70878c1046eb7f85858481518110611a2857611a28613f93565b6020026020010151604051611a529291906001600160a01b03929092168252602082015260400190565b60405180910390a280611a6481613fa9565b915050611935565b611a74612969565b6000611a7f60095490565b6014549091506001611a9184846140fd565b611a9b9190614115565b10611ae85760405162461bcd60e51b815260206004820152601760248201527f4572726f723a20662a636b696e6720534f4c44204f55540000000000000000006044820152606401610c73565b600082118015611afa57506015548211155b611b465760405162461bcd60e51b815260206004820152601f60248201527f4572726f723a204f6e6c79203120706572205478206d79206c6f7264202120006044820152606401610c73565b601654611b523361169a565b611b5d9060016140fd565b1115611bb65760405162461bcd60e51b815260206004820152602260248201527f4572726f723a204d61782035207065722057616c6c6574206d79207768616c65604482015261202160f01b6064820152608401610c73565b60175415611c1a5781601754611bcc9190613f4a565b3414611c1a5760405162461bcd60e51b815260206004820181905260248201527f4572726f723a20596f75206e656564206d6f7265206d6f6e65792042726f20216044820152606401610c73565b60135460ff1615611c9357336000908152601c6020526040902054821115611c935760405162461bcd60e51b815260206004820152602660248201527f4572726f723a20596f75277265204e6f74206120426f7265642057686974656c604482015265034b9ba32b2160d51b6064820152608401610c73565b60005b82811015611cea57611ca7336127b4565b60135460ff1615611cd857336000908152601c60205260408120805460019290611cd2908490614115565b90915550505b80611ce281613fa9565b915050611c96565b506017541561126f5761126f346129af565b61126f338383612a62565b611d11338361258e565b611d2d5760405162461bcd60e51b8152600401610c7390613ee6565b610d8e84848484612b30565b611d41612434565b6013805460ff19811660ff90911615179055565b6002805461174b90613dce565b611d6a612434565b601555565b6060610daf82612b63565b611d8381611616565b6001600160a01b0316336001600160a01b031614611dee5760405162461bcd60e51b815260206004820152602260248201527f596f75206d757374206f776e2074686520746f6b656e20746f20747261766572604482015261736560f01b6064820152608401610c73565b61ffff82166000908152600f602052604081208054611e0c90613dce565b905011611e725760405162461bcd60e51b815260206004820152602e60248201527f5468697320636861696e2069732063757272656e746c7920756e617661696c6160448201526d189b1948199bdc881d1c985d995b60921b6064820152608401610c73565b611e7b816127d6565b60408051336020820152808201839052815180820383018152606082018352601a54600160f01b60808401526082808401919091528351808403909101815260a2830193849052600d5463040a7bb160e41b90945290926001926000916001600160a01b0316906340a7bb1090611efe908990309089908790899060a60161412c565b6040805180830381865afa158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e9190614180565b50905080341015611fca5760405162461bcd60e51b815260206004820152604a60248201527f4572726f723a206d73672e76616c7565206e6f7420656e6f75676820746f206360448201527f6f766572206d6573736167654665652e2053656e642067617320666f72206d656064820152697373616765206665657360b01b608482015260a401610c73565b600d5461ffff87166000908152600f6020526040808220905162c5803160e81b81526001600160a01b039093169263c5803100923492612015928c928b913391908b906004016141a4565b6000604051808303818588803b15801561202e57600080fd5b505af1158015612042573d6000803e3d6000fd5b5050505050505050505050565b61ffff85166000908152600e60205260408082209051612070908790613eca565b90815260408051602092819003830190206001600160401b03871660009081529252902060018101549091506120f75760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60448201526565737361676560d01b6064820152608401610c73565b805482148015612121575080600101548383604051612117929190614289565b6040518091039020145b61216d5760405162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f61640000000000006044820152606401610c73565b60008082556001820155604051630e1bd41160e11b81523090631c37a822906121a29089908990899089908990600401614299565b600060405180830381600087803b1580156121bc57600080fd5b505af11580156121d0573d6000803e3d6000fd5b50505050505050505050565b606060006121e98361169a565b90508060000361220d5760408051600080825260208201909252905b509392505050565b6000816001600160401b0381111561222757612227613615565b604051908082528060200260200182016040528015612250578160200160208202803683370190505b50905060005b828110156122055761226885826110ae565b82828151811061227a5761227a613f93565b602090810291909101015261228e81613fa9565b9050612256565b50919050565b6122a3612434565b47806122e55760405162461bcd60e51b815260206004820152601160248201527008ae4e4dee47440dcde40cccacae640745607b1b6044820152606401610c73565b60005b601b5460ff82161015612345576000601b8260ff168154811061230d5761230d613f93565b60009182526020808320909101546001600160a01b03168252601d90526040812060010155508061233d816142fa565b9150506122e8565b50604051339082156108fc029083906000818181858888f19350505050158015611361573d6000803e3d6000fd5b61237b612434565b61ffff83166000908152600f60205260409020610d8e828483614319565b6123a1612434565b6001600160a01b0381166124065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c73565b6113ab8161287c565b60006001600160e01b0319821663780e9d6360e01b1480610daf5750610daf82612c5e565b600c546001600160a01b036101009091041633146116905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c73565b6000818152600360205260409020546001600160a01b03166113ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c73565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061252882611616565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000808280602001905181019061257891906143d9565b915091506125868282612cae565b505050505050565b60008061259a83611616565b9050806001600160a01b0316846001600160a01b031614806125e157506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b806126055750836001600160a01b03166125fa84610e96565b6001600160a01b0316145b949350505050565b826001600160a01b031661262082611616565b6001600160a01b0316146126845760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610c73565b6001600160a01b0382166126e65760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c73565b6126f1838383612cc8565b6126fc6000826124f3565b6001600160a01b0383166000908152600460205260408120805460019290612725908490614115565b90915550506001600160a01b03821660009081526004602052604081208054600192906127539084906140fd565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600060016127c0612cdb565b6127ca91906140fd565b905061126f8282612cae565b6113ab81612de3565b61126f8282612cae565b6127f1612969565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586128263390565b6040516001600160a01b03909116815260200160405180910390a1565b61284b612e23565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612826565b600c80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000828152600360205260409020546001600160a01b03166129515760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610c73565b6000828152600b60205260409020610fcd828261403e565b600c5460ff16156116905760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610c73565b60005b601b5460ff8216101561126f576000601b8260ff16815481106129d7576129d7613f93565b60009182526020808320909101546001600160a01b0316808352601d909152604082205490925090612a15612710612a0f8785612e6c565b90612e7f565b6001600160a01b0384166000908152601d6020526040812060010180549293508392909190612a459084906140fd565b925050819055505050508080612a5a906142fa565b9150506129b2565b816001600160a01b0316836001600160a01b031603612ac35760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c73565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612b3b84848461260d565b612b4784848484612e8b565b610d8e5760405162461bcd60e51b8152600401610c7390614407565b6060612b6e82612494565b6000828152600b602052604081208054612b8790613dce565b80601f0160208091040260200160405190810160405280929190818152602001828054612bb390613dce565b8015612c005780601f10612bd557610100808354040283529160200191612c00565b820191906000526020600020905b815481529060010190602001808311612be357829003601f168201915b505050505090506000612c11612f8c565b90508051600003612c23575092915050565b815115612c55578082604051602001612c3d929190614459565b60405160208183030381529060405292505050919050565b61260584612f9b565b60006001600160e01b031982166380ac58cd60e01b1480612c8f57506001600160e01b03198216635b5e139f60e01b145b80610daf57506301ffc9a760e01b6001600160e01b0319831614610daf565b61126f828260405180602001604052806000815250613004565b612cd0612969565b610fcd838383613037565b6000806010547f0000000000000000000000000000000000000000000000000000000000000000612d0c9190614115565b9050600080600083612d1c6130ef565b612d269190614488565b905060116000612d37600187614115565b815260200190815260200160002054600003612d5f57612d58600185614115565b9250612d80565b60116000612d6e600187614115565b81526020019081526020016000205492505b6000818152601160205260408120549003612dae576000818152601160205260409020839055905080612dc5565b600081815260116020526040902080549084905591505b60108054906000612dd583613fa9565b909155509195945050505050565b612dec8161312b565b6000818152600b602052604090208054612e0590613dce565b1590506113ab576000818152600b602052604081206113ab916135b0565b600c5460ff166116905760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610c73565b6000612e788284613f4a565b9392505050565b6000612e788284613f7f565b60006001600160a01b0384163b15612f8157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612ecf90339089908890889060040161449c565b6020604051808303816000875af1925050508015612f0a575060408051601f3d908101601f19168201909252612f07918101906144d9565b60015b612f67573d808015612f38576040519150601f19603f3d011682016040523d82523d6000602084013e612f3d565b606091505b508051600003612f5f5760405162461bcd60e51b8152600401610c7390614407565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612605565b506001949350505050565b606060128054610e1390613dce565b6060612fa682612494565b6000612fb0612f8c565b90506000815111612fd05760405180602001604052806000815250612e78565b80612fda846131d2565b6002604051602001612fee939291906144f6565b6040516020818303038152906040529392505050565b61300e83836132d2565b61301b6000848484612e8b565b610fcd5760405162461bcd60e51b8152600401610c7390614407565b6001600160a01b0383166130925761308d81600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b6130b5565b816001600160a01b0316836001600160a01b0316146130b5576130b58382613420565b6001600160a01b0382166130cc57610fcd816134bd565b826001600160a01b0316826001600160a01b031614610fcd57610fcd828261356c565b6000444260405160200161310d929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c905090565b600061313682611616565b905061314481600084612cc8565b61314f6000836124f3565b6001600160a01b0381166000908152600460205260408120805460019290613178908490614115565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6060816000036131f95750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613223578061320d81613fa9565b915061321c9050600a83613f7f565b91506131fd565b6000816001600160401b0381111561323d5761323d613615565b6040519080825280601f01601f191660200182016040528015613267576020820181803683370190505b5090505b84156126055761327c600183614115565b9150613289600a86614488565b6132949060306140fd565b60f81b8183815181106132a9576132a9613f93565b60200101906001600160f81b031916908160001a9053506132cb600a86613f7f565b945061326b565b6001600160a01b0382166133285760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c73565b6000818152600360205260409020546001600160a01b03161561338d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c73565b61339960008383612cc8565b6001600160a01b03821660009081526004602052604081208054600192906133c29084906140fd565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161342d8461169a565b6134379190614115565b60008381526008602052604090205490915080821461348a576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b6009546000906134cf90600190614115565b6000838152600a6020526040812054600980549394509092849081106134f7576134f7613f93565b90600052602060002001549050806009838154811061351857613518613f93565b6000918252602080832090910192909255828152600a9091526040808220849055858252812055600980548061355057613550614528565b6001900381819060005260206000200160009055905550505050565b60006135778361169a565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b5080546135bc90613dce565b6000825580601f106135cc575050565b601f0160209004906000526020600020908101906113ab91905b808211156135fa57600081556001016135e6565b5090565b803561ffff8116811461361057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561365357613653613615565b604052919050565b600082601f83011261366c57600080fd5b81356001600160401b0381111561368557613685613615565b613698601f8201601f191660200161362b565b8181528460208386010111156136ad57600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160401b038116811461361057600080fd5b600080600080608085870312156136f757600080fd5b613700856135fe565b935060208501356001600160401b038082111561371c57600080fd5b6137288883890161365b565b9450613736604088016136ca565b9350606087013591508082111561374c57600080fd5b506137598782880161365b565b91505092959194509250565b60006020828403121561377757600080fd5b5035919050565b6001600160e01b0319811681146113ab57600080fd5b6000602082840312156137a657600080fd5b8135612e788161377e565b6001600160a01b03811681146113ab57600080fd5b6000602082840312156137d857600080fd5b8135612e78816137b1565b60005b838110156137fe5781810151838201526020016137e6565b83811115610d8e5750506000910152565b600081518084526138278160208601602086016137e3565b601f01601f19169290920160200192915050565b602081526000612e78602083018461380f565b6000806040838503121561386157600080fd5b823561386c816137b1565b946020939093013593505050565b60008060006060848603121561388f57600080fd5b833561389a816137b1565b925060208401356138aa816137b1565b929592945050506040919091013590565b600080604083850312156138ce57600080fd5b50508035926020909101359150565b6000602082840312156138ef57600080fd5b612e78826135fe565b60006001600160401b0382111561391157613911613615565b5060051b60200190565b600082601f83011261392c57600080fd5b8135602061394161393c836138f8565b61362b565b82815260059290921b8401810191818101908684111561396057600080fd5b8286015b84811015613984578035613977816137b1565b8352918301918301613964565b509695505050505050565b6000602082840312156139a157600080fd5b81356001600160401b038111156139b757600080fd5b6126058482850161391b565b6000602082840312156139d557600080fd5b81356001600160401b038111156139eb57600080fd5b6126058482850161365b565b60008060408385031215613a0a57600080fd5b82356001600160401b03811115613a2057600080fd5b613a2c8582860161391b565b95602094909401359450505050565b60008060408385031215613a4e57600080fd5b8235915060208301356001600160401b03811115613a6b57600080fd5b613a778582860161365b565b9150509250929050565b600080600060608486031215613a9657600080fd5b613a9f846135fe565b925060208401356001600160401b03811115613aba57600080fd5b613ac68682870161365b565b925050604084013590509250925092565b60008060408385031215613aea57600080fd5b8235613af5816137b1565b91506020838101356001600160401b03811115613b1157600080fd5b8401601f81018613613b2257600080fd5b8035613b3061393c826138f8565b81815260059190911b82018301908381019088831115613b4f57600080fd5b928401925b82841015613b6d57833582529284019290840190613b54565b80955050505050509250929050565b80151581146113ab57600080fd5b60008060408385031215613b9d57600080fd5b8235613ba8816137b1565b91506020830135613bb881613b7c565b809150509250929050565b60008060008060808587031215613bd957600080fd5b8435613be4816137b1565b93506020850135613bf4816137b1565b92506040850135915060608501356001600160401b03811115613c1657600080fd5b6137598782880161365b565b60008060408385031215613c3557600080fd5b61386c836135fe565b60008083601f840112613c5057600080fd5b5081356001600160401b03811115613c6757600080fd5b6020830191508360208285010111156110a757600080fd5b600080600080600060808688031215613c9757600080fd5b613ca0866135fe565b945060208601356001600160401b0380821115613cbc57600080fd5b613cc889838a0161365b565b9550613cd6604089016136ca565b94506060880135915080821115613cec57600080fd5b50613cf988828901613c3e565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015613d4257835183529284019291840191600101613d26565b50909695505050505050565b60008060408385031215613d6157600080fd5b8235613d6c816137b1565b91506020830135613bb8816137b1565b600080600060408486031215613d9157600080fd5b613d9a846135fe565b925060208401356001600160401b03811115613db557600080fd5b613dc186828701613c3e565b9497909650939450505050565b600181811c90821680613de257607f821691505b60208210810361229557634e487b7160e01b600052602260045260246000fd5b60008154613e0f81613dce565b60018281168015613e275760018114613e3c57613e6b565b60ff1984168752821515830287019450613e6b565b8560005260208060002060005b85811015613e625781548a820152908401908201613e49565b50505082870194505b5050505092915050565b6000612e788284613e02565b61ffff85168152608060208201526000613e9e608083018661380f565b6001600160401b03851660408401528281036060840152613ebf818561380f565b979650505050505050565b60008251613edc8184602087016137e3565b9190910192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613f6457613f64613f34565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613f8e57613f8e613f69565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201613fbb57613fbb613f34565b5060010190565b600060208284031215613fd457600080fd5b5051919050565b600060208284031215613fed57600080fd5b8151612e7881613b7c565b601f821115610fcd57600081815260208120601f850160051c8101602086101561401f5750805b601f850160051c820191505b818110156125865782815560010161402b565b81516001600160401b0381111561405757614057613615565b61406b816140658454613dce565b84613ff8565b602080601f8311600181146140a057600084156140885750858301515b600019600386901b1c1916600185901b178555612586565b600085815260208120601f198616915b828110156140cf578886015182559484019460019091019084016140b0565b50858210156140ed5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000821982111561411057614110613f34565b500190565b60008282101561412757614127613f34565b500390565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061415a9083018661380f565b84151560608401528281036080840152614174818561380f565b98975050505050505050565b6000806040838503121561419357600080fd5b505080516020909101519092909150565b61ffff871681526000602060c081840152600088546141c281613dce565b8060c087015260e06001808416600081146141e457600181146141fe5761422c565b60ff1985168984015283151560051b89018301955061422c565b8d6000528660002060005b858110156142245781548b8201860152908301908801614209565b8a0184019650505b50505050508381036040850152614243818961380f565b91505061425b60608401876001600160a01b03169052565b6001600160a01b038516608084015282810360a084015261427c818561380f565b9998505050505050505050565b8183823760009101908152919050565b61ffff861681526080602082015260006142b6608083018761380f565b6001600160401b03861660408401528281036060840152838152838560208301376000602085830101526020601f19601f8601168201019150509695505050505050565b600060ff821660ff810361431057614310613f34565b60010192915050565b6001600160401b0383111561433057614330613615565b6143448361433e8354613dce565b83613ff8565b6000601f84116001811461437857600085156143605750838201355b600019600387901b1c1916600186901b1783556143d2565b600083815260209020601f19861690835b828110156143a95786850135825560209485019460019092019101614389565b50868210156143c65760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600080604083850312156143ec57600080fd5b82516143f7816137b1565b6020939093015192949293505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000835161446b8184602088016137e3565b83519083019061447f8183602088016137e3565b01949350505050565b60008261449757614497613f69565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906144cf9083018461380f565b9695505050505050565b6000602082840312156144eb57600080fd5b8151612e788161377e565b600084516145088184602089016137e3565b84519083019061451c8183602089016137e3565b613ebf81830186613e02565b634e487b7160e01b600052603160045260246000fdfea26469706673582212203559e983601651026915c42ec9aeffa4ac21e67251342a8155141aae73cbbcac64736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000003c2269811836af69497e5f486a85d7316753cf62000000000000000000000000000000000000000000000000000000000000000100000000000000000000000053df3ed43d4a9874e79520cf3454b918c104feb600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710