Overview ERC721
Total Supply:
2,838 RaceXCarV2

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

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

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Created At:
Tue, 21 Dec 2021 00:15:19 GMT
RaceXCarNFTV2.sol
RaceXCarNFTV2.sol
RaceXCarNFTV2.sol


Contract ABI
[
  {
    "inputs": [],
    "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": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "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": [],
    "name": "baseURI",
    "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": [],
    "name": "claimReflectionRewards",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "claimReward",
    "outputs": [],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "cost",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "devIssued",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_mintAmount",
        "type": "uint256"
      }
    ],
    "name": "devMint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "devRewards",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "devroyalty",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "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": "user",
        "type": "address"
      }
    ],
    "name": "getMyTokens",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "uri",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "refBalance",
            "type": "uint256"
          }
        ],
        "internalType": "struct RaceXCarNFTV2.RenderToken[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getReflectionBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getReflectionBalances",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "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": [],
    "name": "maxDevSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxMintAmount",
    "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": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_mintAmount",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "minter",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_state",
        "type": "bool"
      }
    ],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "reflectBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "reflectionBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "reflectroyalty",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      }
    ],
    "name": "removeWhitelistUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "royaltyAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "royaltyValue",
    "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": "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": "_newBaseExtension",
        "type": "string"
      }
    ],
    "name": "setBaseExtension",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_newBaseURI",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newCost",
        "type": "uint256"
      }
    ],
    "name": "setCost",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_pause",
        "type": "bool"
      }
    ],
    "name": "setPaused",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_payments",
        "type": "address"
      }
    ],
    "name": "setPayments",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "setRoyalties",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_royaltyContractAddress",
        "type": "address"
      }
    ],
    "name": "setRoyaltyContractAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newmaxDevMint",
        "type": "uint256"
      }
    ],
    "name": "setmaxDevMint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "splitReflections",
    "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": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenMinter",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "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": "tokensMinted",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalDividend",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "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": "address",
        "name": "_user",
        "type": "address"
      }
    ],
    "name": "whitelistUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "whitelisted",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdraw",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  }
]


Contract Creation Code
60c06040526005608081905264173539b7b760d91b60a090815262000028916014919062000356565b50671bc16d674ec800006015556127106016556107d060175560006018556014601955610190601a556102bc601b556004601c556003601d55601e805474df70419ad34a177ee43cb88eb42e0bc17d8d1adb006001600160a81b0319909116179055601f80546001600160a01b03191673df70419ad34a177ee43cb88eb42e0bc17d8d1adb179055348015620000bd57600080fd5b50604080518082018252601b81527f526163655820536572696573203120526163652043617273205632000000000060208083019182528351808501909452600a8452692930b1b2ac21b0b92b1960b11b908401528151919291620001259160009162000356565b5080516200013b90600190602084019062000356565b5050506200015862000152620001cd60201b60201c565b620001d1565b6200017c604051806060016040528060298152602001620034d06029913962000223565b6040805160208101918290526000908190526200019c91600e9162000356565b50601e54601b54620001bd9161010090046001600160a01b0316906200028b565b601e805460ff1916905562000439565b3390565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546001600160a01b03163314620002725760405162461bcd60e51b81526020600482018190526024820152600080516020620034f983398151915260448201526064015b60405180910390fd5b80516200028790601390602084019062000356565b5050565b600c546001600160a01b03163314620002d65760405162461bcd60e51b81526020600482018190526024820152600080516020620034f9833981519152604482015260640162000269565b620002878282612710811115620003305760405162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f2068696768000000000000604482015260640162000269565b600a80546001600160a01b0319166001600160a01b039390931692909217909155600b55565b8280546200036490620003fc565b90600052602060002090601f016020900481019282620003885760008555620003d3565b82601f10620003a357805160ff1916838001178555620003d3565b82800160010185558215620003d3579182015b82811115620003d3578251825591602001919060010190620003b6565b50620003e1929150620003e5565b5090565b5b80821115620003e15760008155600101620003e6565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b61308780620004496000396000f3fe6080604052600436106103965760003560e01c806355f804b3116101dc578063a086d50a11610102578063c49162de116100a0578063d936547e1161006f578063d936547e14610a39578063da3ef23f14610a68578063e985e9c514610a88578063f2fde38b14610ad157600080fd5b8063c49162de146109d8578063c6682862146109ee578063c87b56dd14610a03578063d5abeb0114610a2357600080fd5b8063ae169a50116100dc578063ae169a5014610958578063af231a5814610978578063b88d4fde14610998578063c3760366146109b857600080fd5b8063a086d50a146108ec578063a22cb46514610902578063ac8d856c1461092257600080fd5b806370a082311161017a5780638c7ea24b116101495780638c7ea24b146108835780638da5cb5b146108a357806395d89b41146108c157806398d9eea0146108d657600080fd5b806370a0823114610802578063715018a614610822578063749cc27d146108375780637c57d9471461084d57600080fd5b8063627804af116101b6578063627804af146107985780636352211e146107b85780636c0360eb146107d85780636de9f32b146107ed57600080fd5b806355f804b3146107485780635c975abb146107685780635fc205881461078257600080fd5b80632a55205a116102c157806342842e0e1161025f57806348bbb71b1161022e57806348bbb71b146106dc5780634a4c560d146106f25780634b6acafb146107125780634f6ccce71461072857600080fd5b806342842e0e1461065c57806342966c681461067c57806342c2727b1461069c57806344a0d68a146106bc57600080fd5b80633ccfd60b1161029b5780633ccfd60b1461060b57806340c10f19146106135780634131ff9914610626578063413bcb241461063c57600080fd5b80632a55205a1461058c5780632f745c59146105cb57806330cc7ae0146105eb57600080fd5b80630fc6b2b51161033957806318160ddd1161030857806318160ddd14610514578063239c70ae1461052957806323b872dd1461053f57806324f0fdb01461055f57600080fd5b80630fc6b2b5146104bc57806313faede6146104d157806316c38b3c1461042057806317516592146104e757600080fd5b806302329a291161037557806302329a291461042057806306fdde0314610442578063081812fc14610464578063095ea7b31461049c57600080fd5b8062fe50c61461039b57806301eb99ec146103db57806301ffc9a7146103f0575b600080fd5b3480156103a757600080fd5b506103c86103b6366004612bb2565b60009081526011602052604090205490565b6040519081526020015b60405180910390f35b3480156103e757600080fd5b506103c8610af1565b3480156103fc57600080fd5b5061041061040b366004612b2f565b610b50565b60405190151581526020016103d2565b34801561042c57600080fd5b5061044061043b366004612b14565b610b70565b005b34801561044e57600080fd5b50610457610bb6565b6040516103d29190612d9b565b34801561047057600080fd5b5061048461047f366004612bb2565b610c48565b6040516001600160a01b0390911681526020016103d2565b3480156104a857600080fd5b506104406104b7366004612aea565b610cdd565b3480156104c857600080fd5b50610440610df3565b3480156104dd57600080fd5b506103c860155481565b3480156104f357600080fd5b506105076105023660046129ba565b610e73565b6040516103d29190612d1a565b34801561052057600080fd5b506008546103c8565b34801561053557600080fd5b506103c860195481565b34801561054b57600080fd5b5061044061055a366004612a08565b610f8c565b34801561056b57600080fd5b506103c861057a366004612bb2565b60116020526000908152604090205481565b34801561059857600080fd5b506105ac6105a7366004612bcb565b610fbd565b604080516001600160a01b0390931683526020830191909152016103d2565b3480156105d757600080fd5b506103c86105e6366004612aea565b610ff4565b3480156105f757600080fd5b506104406106063660046129ba565b61108a565b6104406110d4565b610440610621366004612aea565b61118f565b34801561063257600080fd5b506103c8600f5481565b34801561064857600080fd5b50610440610657366004612bb2565b611351565b34801561066857600080fd5b50610440610677366004612a08565b611380565b34801561068857600080fd5b50610440610697366004612bb2565b61139b565b3480156106a857600080fd5b506104406106b7366004612bb2565b6113ea565b3480156106c857600080fd5b506104406106d7366004612bb2565b611420565b3480156106e857600080fd5b506103c8601c5481565b3480156106fe57600080fd5b5061044061070d3660046129ba565b611462565b34801561071e57600080fd5b506103c860105481565b34801561073457600080fd5b506103c8610743366004612bb2565b6114af565b34801561075457600080fd5b50610440610763366004612b69565b611542565b34801561077457600080fd5b50601e546104109060ff1681565b34801561078e57600080fd5b506103c8601b5481565b3480156107a457600080fd5b506104406107b3366004612aea565b61157f565b3480156107c457600080fd5b506104846107d3366004612bb2565b6116b6565b3480156107e457600080fd5b5061045761172d565b3480156107f957600080fd5b506103c86117bb565b34801561080e57600080fd5b506103c861081d3660046129ba565b6117cb565b34801561082e57600080fd5b50610440611852565b34801561084357600080fd5b506103c860185481565b34801561085957600080fd5b50610484610868366004612bb2565b6000908152601260205260409020546001600160a01b031690565b34801561088f57600080fd5b5061044061089e366004612aea565b611886565b3480156108af57600080fd5b50600c546001600160a01b0316610484565b3480156108cd57600080fd5b506104576118ba565b3480156108e257600080fd5b506103c860175481565b3480156108f857600080fd5b506103c8601a5481565b34801561090e57600080fd5b5061044061091d366004612ac0565b6118c9565b34801561092e57600080fd5b5061048461093d366004612bb2565b6012602052600090815260409020546001600160a01b031681565b34801561096457600080fd5b50610440610973366004612bb2565b61198e565b34801561098457600080fd5b506104406109933660046129ba565b611a24565b3480156109a457600080fd5b506104406109b3366004612a44565b611a76565b3480156109c457600080fd5b506104406109d33660046129ba565b611aa8565b3480156109e457600080fd5b506103c8601d5481565b3480156109fa57600080fd5b50610457611af9565b348015610a0f57600080fd5b50610457610a1e366004612bb2565b611b06565b348015610a2f57600080fd5b506103c860165481565b348015610a4557600080fd5b50610410610a543660046129ba565b602080526000908152604090205460ff1681565b348015610a7457600080fd5b50610440610a83366004612b69565b611be4565b348015610a9457600080fd5b50610410610aa33660046129d5565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610add57600080fd5b50610440610aec3660046129ba565b611c21565b600080610afd336117cb565b90506000805b82811015610b49576000610b173383610ff4565b600081815260116020526040902054909150610b339084612ed5565b9250508080610b4190612f9e565b915050610b03565b5092915050565b6000610b5b82611cb9565b80610b6a5750610b6a82611d09565b92915050565b600c546001600160a01b03163314610ba35760405162461bcd60e51b8152600401610b9a90612e4f565b60405180910390fd5b601e805460ff1916911515919091179055565b606060008054610bc590612f63565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf190612f63565b8015610c3e5780601f10610c1357610100808354040283529160200191610c3e565b820191906000526020600020905b815481529060010190602001808311610c2157829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610cc15760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b9a565b506000908152600460205260409020546001600160a01b031690565b6000610ce8826116b6565b9050806001600160a01b0316836001600160a01b03161415610d565760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610b9a565b336001600160a01b0382161480610d725750610d728133610aa3565b610de45760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b9a565b610dee8383611d2e565b505050565b6000610dfe336117cb565b90506000610e0a610af1565b905060005b82811015610e45576000610e233383610ff4565b6000908152601160205260408120555080610e3d81612f9e565b915050610e0f565b50604051339082156108fc029083906000818181858888f19350505050158015610dee573d6000803e3d6000fd5b60606000610e80836117cb565b90506000610e8f826001612ed5565b67ffffffffffffffff811115610ea757610ea7613025565b604051908082528060200260200182016040528015610efc57816020015b610ee960405180606001604052806000815260200160608152602001600081525090565b815260200190600190039081610ec55790505b50905060005b82811015610f84576000610f168683610ff4565b90506000610f2382611b06565b60008381526011602052604081205491925050604051806060016040528084815260200183815260200182815250858581518110610f6357610f6361300f565b60200260200101819052505050508080610f7c90612f9e565b915050610f02565b509392505050565b610f963382611d9c565b610fb25760405162461bcd60e51b8152600401610b9a90612e84565b610dee838383611e93565b6000806000612710600b5485610fd39190612f01565b610fdd9190612eed565b600a546001600160a01b0316969095509350505050565b6000610fff836117cb565b82106110615760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610b9a565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600c546001600160a01b031633146110b45760405162461bcd60e51b8152600401610b9a90612e4f565b6001600160a01b031660009081526020805260409020805460ff19169055565b600c546001600160a01b031633146110fe5760405162461bcd60e51b8152600401610b9a90612e4f565b6014471161114e5760405162461bcd60e51b815260206004820152601f60248201527f42616c616e6365206d7573742062652067726561746572207468616e203230006044820152606401610b9a565b601e5461010090046001600160a01b03166108fc61116d601447612f20565b6040518115909202916000818181858888f1935050505061118d57600080fd5b565b600061119a600d5490565b9050600082116111ec5760405162461bcd60e51b815260206004820181905260248201527f4d696e74206d6f756e742068617320746f206265206d6f7265207468616e20306044820152606401610b9a565b6004826015546111fc9190612f01565b6112069190612eed565b611211906003612f01565b3410156112705760405162461bcd60e51b815260206004820152602760248201527f506c6561736520656e737572652074686520636f7272656374207072696365206044820152661a5cc81cd95b9d60ca1b6064820152608401610b9a565b601e5460ff16156112de5760405162461bcd60e51b815260206004820152603260248201527f556e61626c6520746f206d696e74207269676874206e6f77202d204d696e74696044820152711b99c81a185cc81899595b8814185d5cd95960721b6064820152608401610b9a565b6016546112eb8383612ed5565b11156113095760405162461bcd60e51b8152600401610b9a90612dae565b60015b82811161134b57611321600d80546001019055565b600061132c600d5490565b9050611338858261203e565b508061134381612f9e565b91505061130c565b50505050565b600c546001600160a01b0316331461137b5760405162461bcd60e51b8152600401610b9a90612e4f565b601755565b610dee83838360405180602001604052806000815250611a76565b600c546001600160a01b031633146113c55760405162461bcd60e51b8152600401610b9a90612e4f565b6000818152601160205260409020546113dd82612058565b6113e6816120ff565b5050565b600c546001600160a01b031633146114145760405162461bcd60e51b8152600401610b9a90612e4f565b61141d816120ff565b50565b600c546001600160a01b0316331461144a5760405162461bcd60e51b8152600401610b9a90612e4f565b61145c81670de0b6b3a7640000612f01565b60155550565b600c546001600160a01b0316331461148c5760405162461bcd60e51b8152600401610b9a90612e4f565b6001600160a01b031660009081526020805260409020805460ff19166001179055565b60006114ba60085490565b821061151d5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610b9a565b600882815481106115305761153061300f565b90600052602060002001549050919050565b600c546001600160a01b0316331461156c5760405162461bcd60e51b8152600401610b9a90612e4f565b80516113e690601390602084019061287f565b600c546001600160a01b031633146115a95760405162461bcd60e51b8152600401610b9a90612e4f565b60006115b4600d5490565b9050601754601854106116095760405162461bcd60e51b815260206004820152601d60248201527f4d617820646576204e4654732068617665206265656e206973737565640000006044820152606401610b9a565b6016546116168383612ed5565b11156116345760405162461bcd60e51b8152600401610b9a90612dae565b601754826018546116459190612ed5565b11156116635760405162461bcd60e51b8152600401610b9a90612dae565b60015b82811161134b5761167b600d80546001019055565b6000611686600d5490565b9050611692858261203e565b6018546116a0906001612ed5565b60185550806116ae81612f9e565b915050611666565b6000818152600260205260408120546001600160a01b031680610b6a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610b9a565b6013805461173a90612f63565b80601f016020809104026020016040519081016040528092919081815260200182805461176690612f63565b80156117b35780601f10611788576101008083540402835291602001916117b3565b820191906000526020600020905b81548152906001019060200180831161179657829003601f168201915b505050505081565b60006117c6600d5490565b905090565b60006001600160a01b0382166118365760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610b9a565b506001600160a01b031660009081526003602052604090205490565b600c546001600160a01b0316331461187c5760405162461bcd60e51b8152600401610b9a90612e4f565b61118d600061216f565b600c546001600160a01b031633146118b05760405162461bcd60e51b8152600401610b9a90612e4f565b6113e682826121c1565b606060018054610bc590612f63565b6001600160a01b0382163314156119225760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b9a565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b33611998826116b6565b6001600160a01b031614806119bd5750336119b282610c48565b6001600160a01b0316145b611a1a5760405162461bcd60e51b815260206004820152602860248201527f4f6e6c79206f776e6572206f7220617070726f7665642063616e20636c61696d604482015267207265776172647360c01b6064820152608401610b9a565b6000526011602052565b600c546001600160a01b03163314611a4e5760405162461bcd60e51b8152600401610b9a90612e4f565b601e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611a803383611d9c565b611a9c5760405162461bcd60e51b8152600401610b9a90612e84565b61134b84848484612239565b600c546001600160a01b03163314611ad25760405162461bcd60e51b8152600401610b9a90612e4f565b601f80546001600160a01b0319166001600160a01b03831617905561141d816102bc611886565b6014805461173a90612f63565b6000818152600260205260409020546060906001600160a01b0316611b855760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b9a565b6000611b8f61226c565b90506000815111611baf5760405180602001604052806000815250611bdd565b80611bb98461227b565b6014604051602001611bcd93929190612c19565b6040516020818303038152906040525b9392505050565b600c546001600160a01b03163314611c0e5760405162461bcd60e51b8152600401610b9a90612e4f565b80516113e690601490602084019061287f565b600c546001600160a01b03163314611c4b5760405162461bcd60e51b8152600401610b9a90612e4f565b6001600160a01b038116611cb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b9a565b61141d8161216f565b60006001600160e01b031982166380ac58cd60e01b1480611cea57506001600160e01b03198216635b5e139f60e01b145b80610b6a57506301ffc9a760e01b6001600160e01b0319831614610b6a565b60006001600160e01b0319821663152a902d60e11b1480610b6a5750610b6a82612379565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611d63826116b6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611e155760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b9a565b6000611e20836116b6565b9050806001600160a01b0316846001600160a01b03161480611e5b5750836001600160a01b0316611e5084610c48565b6001600160a01b0316145b80611e8b57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611ea6826116b6565b6001600160a01b031614611f0e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610b9a565b6001600160a01b038216611f705760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b9a565b611f7b83838361239e565b611f86600082611d2e565b6001600160a01b0383166000908152600360205260408120805460019290611faf908490612f20565b90915550506001600160a01b0382166000908152600360205260408120805460019290611fdd908490612ed5565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6113e68282604051806020016040528060008152506123a9565b6000612063826116b6565b90506120718160008461239e565b61207c600083611d2e565b6001600160a01b03811660009081526003602052604081208054600192906120a5908490612f20565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600061210a600d5490565b905060006121188284612eed565b905060005b8281101561134b576000612130826114af565b60008181526011602052604090205490915061214d908490612ed5565b600091825260116020526040909120558061216781612f9e565b91505061211d565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127108111156122135760405162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f20686967680000000000006044820152606401610b9a565b600a80546001600160a01b0319166001600160a01b039390931692909217909155600b55565b612244848484611e93565b612250848484846123dc565b61134b5760405162461bcd60e51b8152600401610b9a90612dfd565b606060138054610bc590612f63565b60608161229f5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156122c957806122b381612f9e565b91506122c29050600a83612eed565b91506122a3565b60008167ffffffffffffffff8111156122e4576122e4613025565b6040519080825280601f01601f19166020018201604052801561230e576020820181803683370190505b5090505b8415611e8b57612323600183612f20565b9150612330600a86612fb9565b61233b906030612ed5565b60f81b8183815181106123505761235061300f565b60200101906001600160f81b031916908160001a905350612372600a86612eed565b9450612312565b60006001600160e01b0319821663780e9d6360e01b1480610b6a5750610b6a82611cb9565b610dee8383836124e9565b6123b383836125a1565b6123c060008484846123dc565b610dee5760405162461bcd60e51b8152600401610b9a90612dfd565b60006001600160a01b0384163b156124de57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612420903390899088908890600401612cdd565b602060405180830381600087803b15801561243a57600080fd5b505af192505050801561246a575060408051601f3d908101601f1916820190925261246791810190612b4c565b60015b6124c4573d808015612498576040519150601f19603f3d011682016040523d82523d6000602084013e61249d565b606091505b5080516124bc5760405162461bcd60e51b8152600401610b9a90612dfd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611e8b565b506001949350505050565b6001600160a01b0383166125445761253f81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612567565b816001600160a01b0316836001600160a01b0316146125675761256783826126ef565b6001600160a01b03821661257e57610dee8161278c565b826001600160a01b0316826001600160a01b031614610dee57610dee828261283b565b6001600160a01b0382166125f75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b9a565b6000818152600260205260409020546001600160a01b03161561265c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b9a565b6126686000838361239e565b6001600160a01b0382166000908152600360205260408120805460019290612691908490612ed5565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600060016126fc846117cb565b6127069190612f20565b600083815260076020526040902054909150808214612759576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061279e90600190612f20565b600083815260096020526040812054600880549394509092849081106127c6576127c661300f565b9060005260206000200154905080600883815481106127e7576127e761300f565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061281f5761281f612ff9565b6001900381819060005260206000200160009055905550505050565b6000612846836117cb565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b82805461288b90612f63565b90600052602060002090601f0160209004810192826128ad57600085556128f3565b82601f106128c657805160ff19168380011785556128f3565b828001600101855582156128f3579182015b828111156128f35782518255916020019190600101906128d8565b506128ff929150612903565b5090565b5b808211156128ff5760008155600101612904565b600067ffffffffffffffff8084111561293357612933613025565b604051601f8501601f19908116603f0116810190828211818310171561295b5761295b613025565b8160405280935085815286868601111561297457600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146129a557600080fd5b919050565b803580151581146129a557600080fd5b6000602082840312156129cc57600080fd5b611bdd8261298e565b600080604083850312156129e857600080fd5b6129f18361298e565b91506129ff6020840161298e565b90509250929050565b600080600060608486031215612a1d57600080fd5b612a268461298e565b9250612a346020850161298e565b9150604084013590509250925092565b60008060008060808587031215612a5a57600080fd5b612a638561298e565b9350612a716020860161298e565b925060408501359150606085013567ffffffffffffffff811115612a9457600080fd5b8501601f81018713612aa557600080fd5b612ab487823560208401612918565b91505092959194509250565b60008060408385031215612ad357600080fd5b612adc8361298e565b91506129ff602084016129aa565b60008060408385031215612afd57600080fd5b612b068361298e565b946020939093013593505050565b600060208284031215612b2657600080fd5b611bdd826129aa565b600060208284031215612b4157600080fd5b8135611bdd8161303b565b600060208284031215612b5e57600080fd5b8151611bdd8161303b565b600060208284031215612b7b57600080fd5b813567ffffffffffffffff811115612b9257600080fd5b8201601f81018413612ba357600080fd5b611e8b84823560208401612918565b600060208284031215612bc457600080fd5b5035919050565b60008060408385031215612bde57600080fd5b50508035926020909101359150565b60008151808452612c05816020860160208601612f37565b601f01601f19169290920160200192915050565b600084516020612c2c8285838a01612f37565b855191840191612c3f8184848a01612f37565b8554920191600090600181811c9080831680612c5c57607f831692505b858310811415612c7a57634e487b7160e01b85526022600452602485fd5b808015612c8e5760018114612c9f57612ccc565b60ff19851688528388019550612ccc565b60008b81526020902060005b85811015612cc45781548a820152908401908801612cab565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612d1090830184612bed565b9695505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015612d8d57603f19898403018552815160608151855288820151818a870152612d6f82870182612bed565b92890151958901959095525094870194925090860190600101612d41565b509098975050505050505050565b602081526000611bdd6020830184612bed565b6020808252602f908201527f546865726520617265206e6f7420656e6f756768204e4654277320746f20667560408201526e363334b6103cb7bab91037b93232b960891b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115612ee857612ee8612fcd565b500190565b600082612efc57612efc612fe3565b500490565b6000816000190483118215151615612f1b57612f1b612fcd565b500290565b600082821015612f3257612f32612fcd565b500390565b60005b83811015612f52578181015183820152602001612f3a565b8381111561134b5750506000910152565b600181811c90821680612f7757607f821691505b60208210811415612f9857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612fb257612fb2612fcd565b5060010190565b600082612fc857612fc8612fe3565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461141d57600080fdfea26469706673582212208383e665488820d9420cfe09c22fad8ca1e1c3e12049233eb96958b488bcf4fc64736f6c6343000807003368747470733a2f2f72616365782e73332e75732d656173742d322e616d617a6f6e6177732e636f6d2f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572