Overview ERC721
Total Supply:
13,993 COOKIE-BAKER

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

Contract Source Code Verified (Partial Match)
Contract Name:
Baker

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Created At:
Sun, 12 Dec 2021 21:04:05 GMT
Baker.sol
Baker.sol
Baker.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": [],
    "name": "BASE_MINT_PRICE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "BASE_ROBOT_PERCENTAGE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "BASE_URI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_BASE_SUPPLY",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_PER_MINT",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_PRESALE_SUPPLY",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PRESALE_MINT_PRICE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UPGRADE_SALES_OFFSET",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_maxSupply",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_price",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_yield",
        "type": "uint256"
      }
    ],
    "name": "addUpgrade",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "bakeryAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseSalesOpen",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "baseTokenMintBlock",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_offset",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_maxSize",
        "type": "uint256"
      }
    ],
    "name": "batchedBakersOfOwner",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "tokenId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "level",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "revealed",
            "type": "bool"
          }
        ],
        "internalType": "struct Baker.BakerInfo[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "cookie",
    "outputs": [
      {
        "internalType": "contract Cookie",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "gameStarted",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "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": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "isUpgrade",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "levels",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "supply",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxSupply",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "price",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "yield",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_numTokens",
        "type": "uint16"
      }
    ],
    "name": "mintBase",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_level",
        "type": "uint256"
      },
      {
        "internalType": "uint16",
        "name": "_numTokens",
        "type": "uint16"
      }
    ],
    "name": "mintUpgrade",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "uint16",
        "name": "_numTokens",
        "type": "uint16"
      }
    ],
    "name": "presaleMintBase",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "presaleOpen",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "presaleStartTime",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "presaleSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_numTokens",
        "type": "uint16"
      },
      {
        "internalType": "address",
        "name": "_for",
        "type": "address"
      }
    ],
    "name": "reserveBase",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "revealedTokenLevel",
    "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": [],
    "name": "salesStartTime",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_bakeryAddress",
        "type": "address"
      }
    ],
    "name": "setBakeryAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract Cookie",
        "name": "_cookie",
        "type": "address"
      }
    ],
    "name": "setCookie",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_startTime",
        "type": "uint256"
      }
    ],
    "name": "setPresaleStartTime",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_startTime",
        "type": "uint256"
      }
    ],
    "name": "setSalesStartTime",
    "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": "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": "tokenRevealed",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenYield",
    "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": [],
    "name": "upgradeSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "withdrawBalance",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b21b7b7b5b4b2902130b5b2b960a11b8152506040518060400160405280600c81526020016b21a7a7a5a4a296a120a5a2a960a11b81525081600090805190602001906200007492919062000229565b5080516200008a90600190602084019062000229565b505050620000a7620000a1620001d360201b60201c565b620001d7565b60408051608080820183526000808352602080840182815284860183815260016060808801828152601480548085018255818952995160049a8b027fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec8181019290925596517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed8089019190915595517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ee8089019190915592517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ef978801558b51998a018c52888a529689018881529a89018881526019938a019384528154948501825597529651919097029384015595519582019590955590519181019190915590519101556200030c565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200023790620002cf565b90600052602060002090601f0160209004810192826200025b5760008555620002a6565b82601f106200027657805160ff1916838001178555620002a6565b82800160010185558215620002a6579182015b82811115620002a657825182559160200191906001019062000289565b50620002b4929150620002b8565b5090565b5b80821115620002b45760008155600101620002b9565b600181811c90821680620002e457607f821691505b602082108114156200030657634e487b7160e01b600052602260045260246000fd5b50919050565b613410806200031c6000396000f3fe60806040526004361061034f5760003560e01c806370a08231116101c6578063b3a196e9116100f7578063decec7d911610095578063ebe2ca7b1161006f578063ebe2ca7b14610985578063f2fde38b1461099b578063f668d9d2146109bb578063f9541270146109db57600080fd5b8063decec7d914610930578063e8a3d48514610950578063e985e9c51461096557600080fd5b8063c87b56dd116100d1578063c87b56dd146108a6578063ca98787a146108c6578063da76d5cd146108d9578063dbddb26a146108f957600080fd5b8063b3a196e91461085b578063b88d4fde14610871578063bee6348a1461089157600080fd5b80639741301b11610164578063a22cb4651161013e578063a22cb465146107d0578063a82524b2146107f0578063aff485f714610806578063b2596a671461081b57600080fd5b80639741301b146107635780639c428332146107835780639d897351146107b057600080fd5b8063860f5048116101a0578063860f5048146106fa5780638da5cb5b14610710578063901507f81461072e57806395d89b411461074e57600080fd5b806370a08231146106a5578063715018a6146106c55780637d7c1ac3146106da57600080fd5b80631b97228e116102a057806338c965271161023e5780634fb8118c116102185780634fb8118c1461063a5780635e123ce41461065a5780636352211e1461066f5780636b8dc3551461068f57600080fd5b806338c96527146105cd57806342842e0e146105fa5780634f6ccce71461061a57600080fd5b80632a234e571161027a5780632a234e571461055a5780632f745c591461057657806337f6727f146105965780633831c97d146105ad57600080fd5b80631b97228e146104fa57806323b872dd1461051a578063296cab551461053a57600080fd5b8063095ea7b31161030d57806312566a42116102e757806312566a421461048f57806313a27a83146104af57806318160ddd146104cf5780631b54c025146104e457600080fd5b8063095ea7b31461043857806309d42b301461045a5780630f69aa781461046f57600080fd5b8062c80c051461035457806301ffc9a71461037c578063054ee789146103ac578063064d705e146103c857806306fdde03146103de578063081812fc14610400575b600080fd5b34801561036057600080fd5b50610369600581565b6040519081526020015b60405180910390f35b34801561038857600080fd5b5061039c610397366004612c07565b6109ee565b6040519015158152602001610373565b3480156103b857600080fd5b506103696714d1120d7b16000081565b3480156103d457600080fd5b5061036961271081565b3480156103ea57600080fd5b506103f3610a19565b6040516103739190612c7c565b34801561040c57600080fd5b5061042061041b366004612c8f565b610aab565b6040516001600160a01b039091168152602001610373565b34801561044457600080fd5b50610458610453366004612cbd565b610b45565b005b34801561046657600080fd5b50610369601e81565b34801561047b57600080fd5b5061045861048a366004612c8f565b610c5b565b34801561049b57600080fd5b5061039c6104aa366004612c8f565b610d2e565b3480156104bb57600080fd5b506104586104ca366004612ce9565b610d8e565b3480156104db57600080fd5b50600854610369565b3480156104f057600080fd5b5061036960115481565b34801561050657600080fd5b50610369610515366004612c8f565b610e33565b34801561052657600080fd5b50610458610535366004612d06565b610e6e565b34801561054657600080fd5b50610458610555366004612c8f565b610e9f565b34801561056657600080fd5b50610369671158e460913d000081565b34801561058257600080fd5b50610369610591366004612cbd565b610fc7565b3480156105a257600080fd5b506103696202a30081565b3480156105b957600080fd5b506103696105c8366004612c8f565b61105d565b3480156105d957600080fd5b506105ed6105e8366004612d47565b6110ba565b6040516103739190612d7c565b34801561060657600080fd5b50610458610615366004612d06565b611261565b34801561062657600080fd5b50610369610635366004612c8f565b61127c565b34801561064657600080fd5b50600b54610420906001600160a01b031681565b34801561066657600080fd5b5061039c61130f565b34801561067b57600080fd5b5061042061068a366004612c8f565b611347565b34801561069b57600080fd5b506103696101f481565b3480156106b157600080fd5b506103696106c0366004612ce9565b6113be565b3480156106d157600080fd5b50610458611445565b3480156106e657600080fd5b506104586106f5366004612de9565b61147b565b34801561070657600080fd5b50610369600d5481565b34801561071c57600080fd5b50600a546001600160a01b0316610420565b34801561073a57600080fd5b50610458610749366004612e20565b6114b3565b34801561075a57600080fd5b506103f36115ab565b34801561076f57600080fd5b50600c54610420906001600160a01b031681565b34801561078f57600080fd5b5061036961079e366004612c8f565b60136020526000908152604090205481565b3480156107bc57600080fd5b5061039c6107cb366004612c8f565b6115ba565b3480156107dc57600080fd5b506104586107eb366004612e4c565b6115ec565b3480156107fc57600080fd5b5061036960105481565b34801561081257600080fd5b5061039c6115f7565b34801561082757600080fd5b5061083b610836366004612c8f565b611611565b604080519485526020850193909352918301526060820152608001610373565b34801561086757600080fd5b50610369600e5481565b34801561087d57600080fd5b5061045861088c366004612e95565b61164b565b34801561089d57600080fd5b5061039c611683565b3480156108b257600080fd5b506103f36108c1366004612c8f565b61169d565b6104586108d4366004612f75565b6117dc565b3480156108e557600080fd5b506104586108f4366004612c8f565b611917565b34801561090557600080fd5b506103f36040518060400160405280601b81526020016000805160206133bb83398151915281525081565b34801561093c57600080fd5b5061045861094b366004612f90565b61197b565b34801561095c57600080fd5b506103f3611d11565b34801561097157600080fd5b5061039c610980366004612fbc565b611d5b565b34801561099157600080fd5b50610369600f5481565b3480156109a757600080fd5b506104586109b6366004612ce9565b611daa565b3480156109c757600080fd5b506104586109d6366004612ce9565b611e45565b6104586109e9366004612f75565b611e91565b60006001600160e01b0319821663780e9d6360e01b1480610a135750610a1382611f4b565b92915050565b606060008054610a2890612fda565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5490612fda565b8015610aa15780601f10610a7657610100808354040283529160200191610aa1565b820191906000526020600020905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610b295760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610b5082611347565b9050806001600160a01b0316836001600160a01b03161415610bbe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610b20565b336001600160a01b0382161480610bda5750610bda8133611d5b565b610c4c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b20565b610c568383611f9b565b505050565b600a546001600160a01b03163314610c855760405162461bcd60e51b8152600401610b2090613015565b428111610cd45760405162461bcd60e51b815260206004820181905260248201527f53746172742074696d65206d75737420626520696e20746865206675747572656044820152606401610b20565b610cdc6115f7565b15610d295760405162461bcd60e51b815260206004820152601a60248201527f426173652073616c657320616c726561647920737461727465640000000000006044820152606401610b20565b601155565b6000818152600260205260408120546001600160a01b0316610d855760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081d1bdad95b88125160821b6044820152606401610b20565b50612710111590565b600a546001600160a01b03163314610db85760405162461bcd60e51b8152600401610b2090613015565b600c546001600160a01b031615610e115760405162461bcd60e51b815260206004820152601a60248201527f42616b657279206164647265737320616c7265616479207365740000000000006044820152606401610b20565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600080610e3f8361105d565b905060148181548110610e5457610e5461304a565b906000526020600020906004020160030154915050919050565b610e783382612009565b610e945760405162461bcd60e51b8152600401610b2090613060565b610c568383836120e0565b600a546001600160a01b03163314610ec95760405162461bcd60e51b8152600401610b2090613015565b428111610f185760405162461bcd60e51b815260206004820181905260248201527f53746172742074696d65206d75737420626520696e20746865206675747572656044820152606401610b20565b610f206115f7565b15610f6d5760405162461bcd60e51b815260206004820152601a60248201527f426173652073616c657320616c726561647920737461727465640000000000006044820152606401610b20565b610f75611683565b15610fc25760405162461bcd60e51b815260206004820152601760248201527f50726573616c6520616c726561647920737461727465640000000000000000006044820152606401610b20565b601055565b6000610fd2836113be565b82106110345760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610b20565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000611068826115ba565b6110a75760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881d5b9c995d99585b195960821b6044820152606401610b20565b5060009081526012602052604090205490565b60606110c5846113be565b831061112257604080516000808252602082019092529061111a565b611107604051806060016040528060008152602001600081526020016000151581525090565b8152602001906001900390816110e15790505b50905061125a565b8161112c856113be565b61113684866130c7565b106111525783611145866113be565b61114f91906130df565b90505b60008167ffffffffffffffff81111561116d5761116d612e7f565b6040519080825280602002602001820160405280156111c457816020015b6111b1604051806060016040528060008152602001600081526020016000151581525090565b81526020019060019003908161118b5790505b50905060005b828110156112555760006111e288610591848a6130c7565b905060006111ef826115ba565b905060008115611205576112028361105d565b90505b60405180606001604052808481526020018281526020018315158152508585815181106112345761123461304a565b6020026020010181905250505050808061124d906130f6565b9150506111ca565b509150505b9392505050565b610c568383836040518060200160405280600081525061164b565b600061128760085490565b82106112ea5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610b20565b600882815481106112fd576112fd61304a565b90600052602060002001549050919050565b60006113196115f7565b801561134257506202a30060115461133191906130c7565b421015806113425750612710600d54145b905090565b6000818152600260205260408120546001600160a01b031680610a135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610b20565b60006001600160a01b0382166114295760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610b20565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610b2090613015565b611479600061228b565b565b600a546001600160a01b031633146114a55760405162461bcd60e51b8152600401610b2090613015565b6114af82826122dd565b5050565b600a546001600160a01b031633146114dd5760405162461bcd60e51b8152600401610b2090613015565b6040805160808101825260008082526020820195865291810193845260608101928352601480546001810182559252517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec60049092029182015592517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed84015590517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ee830155517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ef90910155565b606060018054610a2890612fda565b60006115c582610d2e565b80610a1357506115d66001436130df565b6000838152601360205260409020541092915050565b6114af33838361242c565b600060115460001415801561134257505060115442101590565b6014818154811061162157600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919350919084565b6116553383612009565b6116715760405162461bcd60e51b8152600401610b2090613060565b61167d848484846124fb565b50505050565b600060105460001415801561134257505060105442101590565b60606116a882610d2e565b15611709576040518060400160405280601b81526020016000805160206133bb8339815191528152506116e26116dd8461105d565b61252e565b6040516020016116f3929190613111565b6040516020818303038152906040529050919050565b611712826115ba565b61174a576040518060400160405280601b81526020016000805160206133bb8339815191528152506040516020016116f39190613164565b6117538261105d565b60011415611799576040518060400160405280601b81526020016000805160206133bb8339815191528152506117888361252e565b6040516020016116f392919061319c565b6040518060400160405280601b81526020016000805160206133bb8339815191528152506117c68361252e565b6040516020016116f39291906131f4565b919050565b6117f2671158e460913d000061ffff831661324c565b34146118385760405162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd08185b5bdd5b9d081cd95b9d605a1b6044820152606401610b20565b611840611683565b61188c5760405162461bcd60e51b815260206004820152601760248201527f5468652070726573616c65206973206e6f74206f70656e0000000000000000006044820152606401610b20565b6101f48161ffff16600e546118a191906130c7565b11156118ef5760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e742070726573616c6520737570706c7900000000006044820152606401610b20565b6118f981336122dd565b8061ffff16600e600082825461190f91906130c7565b909155505050565b600a546001600160a01b031633146119415760405162461bcd60e51b8152600401610b2090613015565b4781111561194e57600080fd5b604051339082156108fc029083906000818181858888f193505050501580156114af573d6000803e3d6000fd5b61198361130f565b6119cf5760405162461bcd60e51b815260206004820152601a60248201527f557067726164652073616c657320617265206e6f74206f70656e0000000000006044820152606401610b20565b601e8161ffff161115611a245760405162461bcd60e51b815260206004820152601a60248201527f546f6f206d616e7920707572636861736573206174206f6e63650000000000006044820152606401610b20565b60145482108015611a355750600182115b611a715760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081b195d995b609a1b6044820152606401610b20565b60148281548110611a8457611a8461304a565b9060005260206000209060040201600101548161ffff1660148481548110611aae57611aae61304a565b906000526020600020906004020160000154611aca91906130c7565b1115611b0e5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e7420737570706c7960681b6044820152606401610b20565b600060148381548110611b2357611b2361304a565b9060005260206000209060040201600201548261ffff16611b44919061324c565b600b546040516370a0823160e01b815233600482015291925082916001600160a01b03909116906370a082319060240160206040518083038186803b158015611b8c57600080fd5b505afa158015611ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc4919061326b565b1015611c125760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420434f4f4b49452062616c616e636500000000006044820152606401610b20565b600b54604051632770a7eb60e21b8152336004820152602481018390526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b158015611c5e57600080fd5b505af1158015611c72573d6000803e3d6000fd5b5050505060005b8261ffff1681101561167d576000600f54612710611c9791906130c7565b9050611ca3338261262c565b60008181526012602052604090208590556014805486908110611cc857611cc861304a565b600091825260208220600490910201805491611ce3836130f6565b9091555050600f8054906000611cf8836130f6565b9190505550508080611d09906130f6565b915050611c79565b60606040518060400160405280601b81526020016000805160206133bb833981519152815250604051602001611d479190613284565b604051602081830303815290604052905090565b600c546000906001600160a01b0383811691161415611d7c57506001610a13565b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff1661125a565b600a546001600160a01b03163314611dd45760405162461bcd60e51b8152600401610b2090613015565b6001600160a01b038116611e395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b20565b611e428161228b565b50565b600a546001600160a01b03163314611e6f5760405162461bcd60e51b8152600401610b2090613015565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b611ea76714d1120d7b16000061ffff831661324c565b3414611eed5760405162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd08185b5bdd5b9d081cd95b9d605a1b6044820152606401610b20565b611ef56115f7565b611f415760405162461bcd60e51b815260206004820181905260248201527f546865206d61696e2073616c6520706572696f64206973206e6f74206f70656e6044820152606401610b20565b611e4281336122dd565b60006001600160e01b031982166380ac58cd60e01b1480611f7c57506001600160e01b03198216635b5e139f60e01b145b80610a1357506301ffc9a760e01b6001600160e01b0319831614610a13565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611fd082611347565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166120825760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b20565b600061208d83611347565b9050806001600160a01b0316846001600160a01b031614806120c85750836001600160a01b03166120bd84610aab565b6001600160a01b0316145b806120d857506120d88185611d5b565b949350505050565b826001600160a01b03166120f382611347565b6001600160a01b03161461215b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610b20565b6001600160a01b0382166121bd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b20565b6121c8838383612646565b6121d3600082611f9b565b6001600160a01b03831660009081526003602052604081208054600192906121fc9084906130df565b90915550506001600160a01b038216600090815260036020526040812080546001929061222a9084906130c7565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127108261ffff16600d546122f291906130c7565b11156123365760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e7420737570706c7960681b6044820152606401610b20565b601e8261ffff16111561238b5760405162461bcd60e51b815260206004820152601a60248201527f546f6f206d616e7920707572636861736573206174206f6e63650000000000006044820152606401610b20565b60005b8261ffff16811015610c5657600d546123a7838261262c565b600d80549060006123b7836130f6565b90915550506000818152601360205260409020439055600560646123e26123dd60085490565b6126fe565b6123ec91906132d0565b101561240957600081815260126020526040902060019055612419565b6000818152601260205260408120555b5080612424816130f6565b91505061238e565b816001600160a01b0316836001600160a01b0316141561248e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b20565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6125068484846120e0565b612512848484846127d3565b61167d5760405162461bcd60e51b8152600401610b20906132e4565b6060816125525750506040805180820190915260018152600360fc1b602082015290565b8160005b811561257c5780612566816130f6565b91506125759050600a83613336565b9150612556565b60008167ffffffffffffffff81111561259757612597612e7f565b6040519080825280601f01601f1916602001820160405280156125c1576020820181803683370190505b5090505b84156120d8576125d66001836130df565b91506125e3600a866132d0565b6125ee9060306130c7565b60f81b8183815181106126035761260361304a565b60200101906001600160f81b031916908160001a905350612625600a86613336565b94506125c5565b6114af8282604051806020016040528060008152506128e0565b6001600160a01b0383166126a15761269c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6126c4565b816001600160a01b0316836001600160a01b0316146126c4576126c48382612913565b6001600160a01b0382166126db57610c56816129b0565b826001600160a01b0316826001600160a01b031614610c5657610c568282612a5f565b600032331461273a5760405162461bcd60e51b81526020600482015260086024820152674f6e6c7920454f4160c01b6044820152606401610b20565b6127456004436130df565b40326127526002436130df565b4061275e6003436130df565b4061276a6001436130df565b60408051602081019690965260609490941b6bffffffffffffffffffffffff1916938501939093526054840191909152607483015240609482015260b481018390524260d482015260f40160408051601f19818403018152919052805160209091012092915050565b60006001600160a01b0384163b156128d557604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061281790339089908890889060040161334a565b602060405180830381600087803b15801561283157600080fd5b505af1925050508015612861575060408051601f3d908101601f1916820190925261285e91810190613387565b60015b6128bb573d80801561288f576040519150601f19603f3d011682016040523d82523d6000602084013e612894565b606091505b5080516128b35760405162461bcd60e51b8152600401610b20906132e4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506120d8565b506001949350505050565b6128ea8383612aa3565b6128f760008484846127d3565b610c565760405162461bcd60e51b8152600401610b20906132e4565b60006001612920846113be565b61292a91906130df565b60008381526007602052604090205490915080821461297d576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906129c2906001906130df565b600083815260096020526040812054600880549394509092849081106129ea576129ea61304a565b906000526020600020015490508060088381548110612a0b57612a0b61304a565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612a4357612a436133a4565b6001900381819060005260206000200160009055905550505050565b6000612a6a836113be565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216612af95760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b20565b6000818152600260205260409020546001600160a01b031615612b5e5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b20565b612b6a60008383612646565b6001600160a01b0382166000908152600360205260408120805460019290612b939084906130c7565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114611e4257600080fd5b600060208284031215612c1957600080fd5b813561125a81612bf1565b60005b83811015612c3f578181015183820152602001612c27565b8381111561167d5750506000910152565b60008151808452612c68816020860160208601612c24565b601f01601f19169290920160200192915050565b60208152600061125a6020830184612c50565b600060208284031215612ca157600080fd5b5035919050565b6001600160a01b0381168114611e4257600080fd5b60008060408385031215612cd057600080fd5b8235612cdb81612ca8565b946020939093013593505050565b600060208284031215612cfb57600080fd5b813561125a81612ca8565b600080600060608486031215612d1b57600080fd5b8335612d2681612ca8565b92506020840135612d3681612ca8565b929592945050506040919091013590565b600080600060608486031215612d5c57600080fd5b8335612d6781612ca8565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b82811015612dca57815180518552868101518786015285015115158585015260609093019290850190600101612d99565b5091979650505050505050565b803561ffff811681146117d757600080fd5b60008060408385031215612dfc57600080fd5b612e0583612dd7565b91506020830135612e1581612ca8565b809150509250929050565b600080600060608486031215612e3557600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612e5f57600080fd5b8235612e6a81612ca8565b915060208301358015158114612e1557600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215612eab57600080fd5b8435612eb681612ca8565b93506020850135612ec681612ca8565b925060408501359150606085013567ffffffffffffffff80821115612eea57600080fd5b818701915087601f830112612efe57600080fd5b813581811115612f1057612f10612e7f565b604051601f8201601f19908116603f01168101908382118183101715612f3857612f38612e7f565b816040528281528a6020848701011115612f5157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600060208284031215612f8757600080fd5b61125a82612dd7565b60008060408385031215612fa357600080fd5b82359150612fb360208401612dd7565b90509250929050565b60008060408385031215612fcf57600080fd5b8235612e0581612ca8565b600181811c90821680612fee57607f821691505b6020821081141561300f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156130da576130da6130b1565b500190565b6000828210156130f1576130f16130b1565b500390565b600060001982141561310a5761310a6130b1565b5060010190565b60008351613123818460208801612c24565b656c6576656c2f60d01b9083019081528351613146816006840160208801612c24565b64173539b7b760d91b60069290910191820152600b01949350505050565b60008251613176818460208701612c24565b733130b9b297bab73932bb32b0b632b2173539b7b760611b920191825250601401919050565b600083516131ae818460208801612c24565b64626173652f60d81b90830190815283516131d0816005840160208801612c24565b6a16b937b137ba173539b7b760a91b60059290910191820152601001949350505050565b60008351613206818460208801612c24565b64626173652f60d81b9083019081528351613228816005840160208801612c24565b6a16b130b5b2b9173539b7b760a91b60059290910191820152601001949350505050565b6000816000190483118215151615613266576132666130b1565b500290565b60006020828403121561327d57600080fd5b5051919050565b60008251613296818460208701612c24565b7131b7b73a3930b1ba16b6b2ba30973539b7b760711b920191825250601201919050565b634e487b7160e01b600052601260045260246000fd5b6000826132df576132df6132ba565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082613345576133456132ba565b500490565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061337d90830184612c50565b9695505050505050565b60006020828403121561339957600080fd5b815161125a81612bf1565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f636f6f6b69652e67616d652f746f6b656e732f0000000000a2646970667358221220114df477e7b3fd2e3b58c36c760b99db3d019245de102521e5342ac3c3f6e04064736f6c63430008090033