[ { "inputs": [ { "internalType": "contract Crop", "name": "_crop", "type": "address" }, { "internalType": "address", "name": "_farmersTypeOracleAddress", "type": "address" }, { "internalType": "contract Splitter", "name": "_splitter", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "onFarmerCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "farmersType", "type": "uint256" } ], "name": "onFarmerRevealed", "type": "event" }, { "inputs": [], "name": "FARMERS_PER_CROP_MINT_LEVEL", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FARMER_PRICE_AVAX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FARMER_PRICE_WHITELIST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FARMER_TYPE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FARMER_YIELD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FarmersMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FarmersMintedPromotional", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FarmersMintedWhitelist", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FarmersMintedWithAVAX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FarmersMintedWithCROP", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GEN0_BASE_URI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GEN0_GOLDEN_BASE_URI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GEN1_BASE_URI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GEN1_GOLDEN_BASE_URI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "LAND_OWNER_TYPE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "LAND_OWNER_YIELD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAXIMUM_MINTS_PER_WHITELIST_ADDRESS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NUM_GEN0_FARMERS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NUM_GEN0_GOLDEN_FARMERS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NUM_GEN1_FARMERS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NUM_GEN1_GOLDEN_FARMERS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PROMOTIONAL_FARMERS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WHITELIST_FARMERS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "avaxOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "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": "batchedFarmersOfOwner", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "farmersType", "type": "uint256" } ], "internalType": "struct Farmer.FarmerInfo[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "crop", "outputs": [ { "internalType": "contract Crop", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cropOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentCROPMintCost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "farmAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "farmersTypeOracleAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address", "name": "target", "type": "address" } ], "name": "forwardERC20s", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getType", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getYield", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "goldenGen0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "goldenGen1", "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": "merkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "qty", "type": "uint256" } ], "name": "mintFarmerWithAVAX", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "qty", "type": "uint256" } ], "name": "mintFarmerWithCROP", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "qty", "type": "uint256" }, { "internalType": "address", "name": "target", "type": "address" } ], "name": "mintPromotional", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "qty", "type": "uint256" } ], "name": "mintWhitelist", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintingStartedAVAX", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintingStartedCROP", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintingStartedWhitelist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "normalGen0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "normalGen1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltiesAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "address", "name": "_crop", "type": "address" } ], "name": "setCrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_farmAddress", "type": "address" } ], "name": "setFarmAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_BASE_URI", "type": "string" } ], "name": "setGen0BaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_BASE_URI", "type": "string" } ], "name": "setGen0GoldenBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_BASE_URI", "type": "string" } ], "name": "setGen1BaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_BASE_URI", "type": "string" } ], "name": "setGen1GoldenBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_merkleRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltiesAddress", "type": "address" } ], "name": "setRoyaltiesAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_whitelist", "type": "uint256" }, { "internalType": "uint256", "name": "_avax", "type": "uint256" }, { "internalType": "uint256", "name": "_crop", "type": "uint256" } ], "name": "setSalePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_whitelist", "type": "bool" }, { "internalType": "bool", "name": "_avax", "type": "bool" }, { "internalType": "bool", "name": "_crop", "type": "bool" } ], "name": "setSaleStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_startTime", "type": "uint256" } ], "name": "setStartTimeAVAX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_startTime", "type": "uint256" } ], "name": "setStartTimeCROP", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_startTime", "type": "uint256" } ], "name": "setStartTimeWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_farmersTypeOracleAddress", "type": "address" } ], "name": "setfarmersTypeOracleAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "splitter", "outputs": [ { "internalType": "contract Splitter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startTimeAVAX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startTimeCROP", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startTimeWhitelist", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "", "type": "uint256" } ], "name": "tokenGen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenInfo", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "", "type": "uint256" } ], "name": "tokenTypes", "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": "totalGoldenGen0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalGoldenGen1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalNormalGen0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalNormalGen1", "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": "uint256", "name": "", "type": "uint256" } ], "name": "typeYields", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelistClaimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawAVAX", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60806040526710a741a462780000600b556714d1120d7b160000600c5560c860265569032d26d12e980b600000602a553480156200003c57600080fd5b5060405162004a7338038062004a738339810160408190526200005f91620003a9565b604080518082018252601181527043726f702047616d65204661726d65727360781b60208083019182528351808501909452601084526f21a927a816a3a0a6a296a320a926a2a960811b908401528151919291620000c091600091620002ea565b508051620000d6906001906020840190620002ea565b505050620000f3620000ed6200029460201b60201c565b62000298565b600a805460ff60a01b191690556001600160a01b0383166200011457600080fd5b6001600160a01b0382166200012857600080fd5b600d80546001600160a01b038086166001600160a01b03199283161790925560108054858416908316179055600e80549284169290911691909117905560408051808201909152600b8082526a04e4f524d414c5f47454e360ac1b60209092019182526200019991601291620002ea565b5060408051808201909152600b8082526a4e4f524d414c5f47454e3160a81b6020909201918252620001ce91601391620002ea565b5060408051808201909152600b8082526a0474f4c44454e5f47454e360ac1b60209092019182526200020391601491620002ea565b5060408051808201909152600b8082526a474f4c44454e5f47454e3160a81b60209092019182526200023891601591620002ea565b50506018602052505060017ff3794665d3af9b6fb6f858b70185898134f96768ef31c325d52e04f0ac195a4d55600260005260047f2bacf7cca723d030d12aee795132f2c5f2d14ad131f16f3f27eeba3e79d18b8c556200043a565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620002f890620003fd565b90600052602060002090601f0160209004810192826200031c576000855562000367565b82601f106200033757805160ff191683800117855562000367565b8280016001018555821562000367579182015b82811115620003675782518255916020019190600101906200034a565b506200037592915062000379565b5090565b5b808211156200037557600081556001016200037a565b6001600160a01b0381168114620003a657600080fd5b50565b600080600060608486031215620003bf57600080fd5b8351620003cc8162000390565b6020850151909350620003df8162000390565b6040850151909250620003f28162000390565b809150509250925092565b600181811c908216806200041257607f821691505b602082108114156200043457634e487b7160e01b600052602260045260246000fd5b50919050565b614629806200044a6000396000f3fe6080604052600436106105185760003560e01c80637c77fda2116102a2578063c7c4c30111610165578063e595c18f116100cc578063f2fde38b11610085578063f2fde38b14610f3d578063f9230ee314610f5d578063f9da3f7514610f73578063fb0d9c0b14610f93578063fcd0fe4514610fa9578063fd666de714610fc957600080fd5b8063e595c18f14610e78578063e79ad82314610ea5578063e985e9c514610ed2578063eb41903a14610ef2578063efe0d7ce14610f12578063f01e89a914610f2757600080fd5b8063d3f4f1e01161011e578063d3f4f1e014610db6578063d979980914610dcc578063d9bea04714610dec578063db4415a414610e0b578063db4bec4414610e2b578063dc95c4a714610e5857600080fd5b8063c7c4c30114610d1e578063c87b56dd14610d34578063cc33c87514610d54578063cd3af33d14610d74578063cee8fc5914610d8a578063cf0c3ef414610da057600080fd5b8063a2fbba6e11610209578063ae8b2ded116101c2578063ae8b2ded14610c78578063aeb5cd5e14610c98578063b33c690c14610cab578063b59d8fe114610cbe578063b72e67f914610cde578063b88d4fde14610cfe57600080fd5b8063a2fbba6e14610bf0578063a377d7ef14610c10578063a682f86214610c25578063a6d612f914610c3b578063abbc16b014610c4e578063aca8ef8a14610c6357600080fd5b806395d89b411161025b57806395d89b4114610b365780639b1b585a14610b4b5780639c1fda5914610b785780639e2bf7ef14610b8e578063a09fa6a214610bbb578063a22cb46514610bd057600080fd5b80637c77fda214610a935780637cb6475914610aa95780637db3aecc14610ac95780638da5cb5b14610ae357806393ee11c214610b01578063945726e114610b1657600080fd5b80633136fb54116103ea57806342842e0e11610351578063667cc5141161030a578063667cc514146109e55780636b44b919146109fb5780636c39cc3414610a115780636de1a6d914610a3157806370a0823114610a5e578063715018a614610a7e57600080fd5b806342842e0e1461093057806343f37b98146109505780634f6ccce7146109705780635786feb5146109905780635c975abb146109a65780636352211e146109c557600080fd5b80633c1d4de7116103a35780633c1d4de71461089a5780633cccac37146108ba5780633cd8045e146108d05780633fb239d0146108f05780634036ab781461091057806342046d9a146107ae57600080fd5b80633136fb54146107e3578063328825351461080357806333f6832a14610823578063362e03ee1461085057806338189bc6146108655780633bc9c8dc1461087a57600080fd5b80631a279ccf1161048e57806328f8bb1b1161044757806328f8bb1b146107355780632cc978b9146107555780632dbdbbe8146107825780632eb4a7ab146107985780632ef4e5e0146107ae5780632f745c59146107c357600080fd5b80631a279ccf1461069e578063225da00d146106b457806323b872dd146106c95780632476703e146106e9578063250bc4e5146106ff5780632747b2bd1461071557600080fd5b8063084f75fd116104e0578063084f75fd14610607578063087fb92f1461061c578063095ea7b31461063e5780630e5ac4071461065e57806316cd209a1461067457806318160ddd1461068957600080fd5b806301ffc9a71461051d578063051d87291461055257806306fdde031461058d5780630805d884146105af578063081812fc146105cf575b600080fd5b34801561052957600080fd5b5061053d610538366004613b38565b610fdf565b60405190151581526020015b60405180910390f35b34801561055e57600080fd5b5061057f61056d366004613b55565b601c6020526000908152604090205481565b604051908152602001610549565b34801561059957600080fd5b506105a261100a565b6040516105499190613bc6565b3480156105bb57600080fd5b5061057f6105ca366004613b55565b61109c565b3480156105db57600080fd5b506105ef6105ea366004613b55565b61110f565b6040516001600160a01b039091168152602001610549565b34801561061357600080fd5b5061057f600481565b34801561062857600080fd5b5061063c610637366004613bd9565b611197565b005b34801561064a57600080fd5b5061063c610659366004613c60565b6111d2565b34801561066a57600080fd5b5061057f610bb881565b34801561068057600080fd5b5061057f600581565b34801561069557600080fd5b5060085461057f565b3480156106aa57600080fd5b5061057f602a5481565b3480156106c057600080fd5b5061053d6112e3565b3480156106d557600080fd5b5061063c6106e4366004613c8c565b611313565b3480156106f557600080fd5b5061057f60275481565b34801561070b57600080fd5b5061057f61271081565b34801561072157600080fd5b5061063c610730366004613ccd565b611344565b34801561074157600080fd5b5061063c610750366004613bd9565b611390565b34801561076157600080fd5b5061057f610770366004613b55565b601d6020526000908152604090205481565b34801561078e57600080fd5b5061057f60265481565b3480156107a457600080fd5b5061057f602b5481565b3480156107ba57600080fd5b5061057f600181565b3480156107cf57600080fd5b5061057f6107de366004613c60565b6113c6565b3480156107ef57600080fd5b5061063c6107fe366004613b55565b61145c565b34801561080f57600080fd5b506011546105ef906001600160a01b031681565b34801561082f57600080fd5b5061057f61083e366004613b55565b60176020526000908152604090205481565b34801561085c57600080fd5b5061057f60c881565b34801561087157600080fd5b5061057f600281565b34801561088657600080fd5b506010546105ef906001600160a01b031681565b3480156108a657600080fd5b5061063c6108b5366004613b55565b6116b6565b3480156108c657600080fd5b5061057f60245481565b3480156108dc57600080fd5b50600e546105ef906001600160a01b031681565b3480156108fc57600080fd5b50600d546105ef906001600160a01b031681565b34801561091c57600080fd5b5061057f61092b366004613b55565b611705565b34801561093c57600080fd5b5061063c61094b366004613c8c565b611766565b34801561095c57600080fd5b5061063c61096b366004613cea565b611781565b34801561097c57600080fd5b5061057f61098b366004613b55565b6117bf565b34801561099c57600080fd5b5061057f60235481565b3480156109b257600080fd5b50600a54600160a01b900460ff1661053d565b3480156109d157600080fd5b506105ef6109e0366004613b55565b611852565b3480156109f157600080fd5b5061057f6101f481565b348015610a0757600080fd5b5061057f601e5481565b348015610a1d57600080fd5b5061063c610a2c366004613d2c565b6118c9565b348015610a3d57600080fd5b5061057f610a4c366004613b55565b60186020526000908152604090205481565b348015610a6a57600080fd5b5061057f610a79366004613ccd565b611901565b348015610a8a57600080fd5b5061063c611988565b348015610a9f57600080fd5b5061057f60295481565b348015610ab557600080fd5b5061063c610ac4366004613b55565b6119be565b348015610ad557600080fd5b5060165461053d9060ff1681565b348015610aef57600080fd5b50600a546001600160a01b03166105ef565b348015610b0d57600080fd5b506105a26119ed565b348015610b2257600080fd5b5061063c610b31366004613ccd565b611a7b565b348015610b4257600080fd5b506105a2611ac7565b348015610b5757600080fd5b5061057f610b66366004613b55565b60196020526000908152604090205481565b348015610b8457600080fd5b5061057f60225481565b348015610b9a57600080fd5b5061057f610ba9366004613b55565b601a6020526000908152604090205481565b348015610bc757600080fd5b506105a2611ad6565b348015610bdc57600080fd5b5061063c610beb366004613d66565b611ae3565b348015610bfc57600080fd5b5061063c610c0b366004613b55565b611aee565b348015610c1c57600080fd5b5061053d611b3d565b348015610c3157600080fd5b5061057f60285481565b61063c610c49366004613d9f565b611b6a565b348015610c5a57600080fd5b506105a2611f49565b348015610c6f57600080fd5b506105a2611f56565b348015610c8457600080fd5b5060165461053d9062010000900460ff1681565b61063c610ca6366004613b55565b611f63565b61063c610cb9366004613b55565b61203d565b348015610cca57600080fd5b5061063c610cd9366004613bd9565b6121eb565b348015610cea57600080fd5b5061063c610cf9366004613e1a565b612221565b348015610d0a57600080fd5b5061063c610d19366004613e70565b612284565b348015610d2a57600080fd5b5061057f600c5481565b348015610d4057600080fd5b506105a2610d4f366004613b55565b6122b6565b348015610d6057600080fd5b506105a2610d6f366004613b55565b6123b1565b348015610d8057600080fd5b5061057f61138881565b348015610d9657600080fd5b5061057f60215481565b348015610dac57600080fd5b5061057f60205481565b348015610dc257600080fd5b5061057f60255481565b348015610dd857600080fd5b5061063c610de7366004613ccd565b6124b9565b348015610df857600080fd5b5060165461053d90610100900460ff1681565b348015610e1757600080fd5b5061063c610e26366004613f50565b612505565b348015610e3757600080fd5b5061057f610e46366004613ccd565b602c6020526000908152604090205481565b348015610e6457600080fd5b5061063c610e73366004613ccd565b6125f2565b348015610e8457600080fd5b5061057f610e93366004613b55565b601b6020526000908152604090205481565b348015610eb157600080fd5b50610ec5610ec0366004613f75565b61263e565b6040516105499190613faa565b348015610ede57600080fd5b5061053d610eed366004613ff9565b6127a9565b348015610efe57600080fd5b5061063c610f0d366004613b55565b61280e565b348015610f1e57600080fd5b5061053d61285d565b348015610f3357600080fd5b5061057f61025881565b348015610f4957600080fd5b5061063c610f58366004613ccd565b612885565b348015610f6957600080fd5b5061057f612ee081565b348015610f7f57600080fd5b50600f546105ef906001600160a01b031681565b348015610f9f57600080fd5b5061057f600b5481565b348015610fb557600080fd5b5061063c610fc4366004613bd9565b612920565b348015610fd557600080fd5b5061057f601f5481565b60006001600160e01b0319821663780e9d6360e01b1480611004575061100482612956565b92915050565b60606000805461101990614027565b80601f016020809104026020016040519081016040528092919081815260200182805461104590614027565b80156110925780601f1061106757610100808354040283529160200191611092565b820191906000526020600020905b81548152906001019060200180831161107557829003601f168201915b5050505050905090565b60006110a7826129a6565b6110ef5760405162461bcd60e51b81526020600482015260146024820152731d1bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b60448201526064015b60405180910390fd5b506000908152601760209081526040808320548352601890915290205490565b600061111a826129a6565b61117b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016110e6565b506000908152600460205260409020546001600160a01b031690565b600a546001600160a01b031633146111c15760405162461bcd60e51b81526004016110e690614062565b6111cd60148383613a89565b505050565b60006111dd82611852565b9050806001600160a01b0316836001600160a01b0316141561124b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016110e6565b336001600160a01b0382161480611267575061126781336127a9565b6112d95760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016110e6565b6111cd83836129c3565b60006029546000141580156112fa57506029544210155b801561130e575060165462010000900460ff165b905090565b61131d3382612a31565b6113395760405162461bcd60e51b81526004016110e690614097565b6111cd838383612afb565b600a546001600160a01b0316331461136e5760405162461bcd60e51b81526004016110e690614062565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031633146113ba5760405162461bcd60e51b81526004016110e690614062565b6111cd60138383613a89565b60006113d183611901565b82106114335760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016110e6565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a54600160a01b900460ff16156114865760405162461bcd60e51b81526004016110e6906140e8565b61148e6112e3565b6114aa5760405162461bcd60e51b81526004016110e690614112565b6000811180156114bb5750600a8111155b6114d75760405162461bcd60e51b81526004016110e690614141565b612710816023546114e89190614198565b11156115065760405162461bcd60e51b81526004016110e6906141b0565b600081602a5461151691906141f2565b600d5490915081906001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115959190614211565b10156115d55760405162461bcd60e51b815260206004820152600f60248201526e06e6f7420656e6f7567682043524f5608c1b60448201526064016110e6565b611388602354111580156115f75750611388826023546115f59190614198565b115b1561161757602a546116139069010f0cf064dd59200000614198565b602a555b81602360008282546116299190614198565b9091555050600d546001600160a01b0316639dc29fac336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561168857600080fd5b505af115801561169c573d6000803e3d6000fd5b505050506116b2826116ab3390565b6001612ca2565b5050565b600a546001600160a01b031633146116e05760405162461bcd60e51b81526004016110e690614062565b428110156117005760405162461bcd60e51b81526004016110e69061422a565b602855565b6000611710826129a6565b6117535760405162461bcd60e51b81526020600482015260146024820152731d1bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b60448201526064016110e6565b5060009081526017602052604090205490565b6111cd83838360405180602001604052806000815250612284565b600a546001600160a01b031633146117ab5760405162461bcd60e51b81526004016110e690614062565b6111cd6001600160a01b0384168284612ce6565b60006117ca60085490565b821061182d5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016110e6565b6008828154811061184057611840614261565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806110045760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016110e6565b600a546001600160a01b031633146118f35760405162461bcd60e51b81526004016110e690614062565b600b92909255600c55602a55565b60006001600160a01b03821661196c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016110e6565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146119b25760405162461bcd60e51b81526004016110e690614062565b6119bc6000612d38565b565b600a546001600160a01b031633146119e85760405162461bcd60e51b81526004016110e690614062565b602b55565b601580546119fa90614027565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2690614027565b8015611a735780601f10611a4857610100808354040283529160200191611a73565b820191906000526020600020905b815481529060010190602001808311611a5657829003601f168201915b505050505081565b600a546001600160a01b03163314611aa55760405162461bcd60e51b81526004016110e690614062565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001805461101990614027565b601380546119fa90614027565b6116b2338383612d8a565b600a546001600160a01b03163314611b185760405162461bcd60e51b81526004016110e690614062565b42811015611b385760405162461bcd60e51b81526004016110e69061422a565b602955565b6000602854600014158015611b5457506028544210155b801561130e575050601654610100900460ff1690565b600a54600160a01b900460ff1615611b945760405162461bcd60e51b81526004016110e6906140e8565b602b54611bd25760405162461bcd60e51b815260206004820152600c60248201526b1b5a5cdcda5b99c81c9bdbdd60a21b60448201526064016110e6565b611bda61285d565b611bf65760405162461bcd60e51b81526004016110e690614112565b611bfe611b3d565b15611c4b5760405162461bcd60e51b815260206004820152601b60248201527f77686974656c697374206d696e74696e6720697320636c6f736564000000000060448201526064016110e6565b6040516bffffffffffffffffffffffff193360601b166020820152600090603401604051602081830303815290604052805190602001209050611cc584848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050602b549150849050612e59565b611d1f5760405162461bcd60e51b815260206004820152602560248201527f74686973206164647265737320646f6573206e6f742068617665207065726d6960448201526439b9b4b7b760d91b60648201526084016110e6565b600082118015611d30575060058211155b611d7c5760405162461bcd60e51b815260206004820181905260248201527f7175616e74697479206d757374206265206265747765656e203120616e64203460448201526064016110e6565b610bb882602454611d8d9190614198565b1115611dab5760405162461bcd60e51b81526004016110e6906141b0565b336000908152602c6020526040902054600590611dc9908490614198565b1115611e325760405162461bcd60e51b815260206004820152603260248201527f7468697320616464726573732063616e2774206d696e7420616e79206d6f72656044820152712077686974656c697374204661726d65727360701b60648201526084016110e6565b81600b54611e4091906141f2565b341015611e5f5760405162461bcd60e51b81526004016110e690614277565b8160246000828254611e719190614198565b9091555050336000908152602c602052604081208054849290611e95908490614198565b9091555050600e546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015611ed3573d6000803e3d6000fd5b50600e5460405163dbceb00560e01b81523460048201526001600160a01b039091169063dbceb00590602401600060405180830381600087803b158015611f1957600080fd5b505af1158015611f2d573d6000803e3d6000fd5b50505050611f4382611f3c3390565b6000612ca2565b50505050565b601480546119fa90614027565b601280546119fa90614027565b600a546001600160a01b03163314611f8d5760405162461bcd60e51b81526004016110e690614062565b80471015611fad5760405162461bcd60e51b81526004016110e690614277565b6040513390600090829084908381818185875af1925050503d8060008114611ff1576040519150601f19603f3d011682016040523d82523d6000602084013e611ff6565b606091505b50509050806111cd5760405162461bcd60e51b815260206004820152601360248201527208cc2d2d8cac840e8de40e6cadcc84082ac82b606b1b60448201526064016110e6565b600a54600160a01b900460ff16156120675760405162461bcd60e51b81526004016110e6906140e8565b61206f611b3d565b61208b5760405162461bcd60e51b81526004016110e690614112565b60008111801561209c5750600a8111155b6120b85760405162461bcd60e51b81526004016110e690614141565b60c8602454612ee06120ca91906142a0565b6120d491906142a0565b816022546120e29190614198565b11156121005760405162461bcd60e51b81526004016110e6906141b0565b600081600c5461211091906141f2565b9050803410156121325760405162461bcd60e51b81526004016110e690614277565b81602260008282546121449190614198565b9091555050600e546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015612182573d6000803e3d6000fd5b50600e5460405163dbceb00560e01b81523460048201526001600160a01b039091169063dbceb00590602401600060405180830381600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050506116b282611f3c3390565b600a546001600160a01b031633146122155760405162461bcd60e51b81526004016110e690614062565b6111cd60128383613a89565b600a546001600160a01b0316331461224b5760405162461bcd60e51b81526004016110e690614062565b6016805461ffff191693151561ff00191693909317610100921515929092029190911762ff000019166201000091151591909102179055565b61228e3383612a31565b6122aa5760405162461bcd60e51b81526004016110e690614097565b611f4384848484612e6f565b60606122c1826129a6565b6122dd5760405162461bcd60e51b81526004016110e6906142b7565b6000828152601960205260409020546123645760008281526017602052604090205460011415612349576000828152601c602052604090205460129061232290612ea2565b604051602001612333929190614322565b6040516020818303038152906040529050919050565b6000828152601a602052604090205460149061232290612ea2565b60008281526017602052604090205460011415612396576000828152601d602052604090205460139061232290612ea2565b6000828152601b602052604090205460159061232290612ea2565b60606123bc826129a6565b6123d85760405162461bcd60e51b81526004016110e6906142b7565b600082815260196020526040902054612452576000828152601760205260409020546001141561242a576000828152601c602052604090205461241a90612ea2565b60405160200161233391906143ed565b6000828152601a602052604090205461244290612ea2565b6040516020016123339190614421565b60008281526017602052604090205460011415612491576000828152601d602052604090205461248190612ea2565b6040516020016123339190614453565b6000828152601b60205260409020546124a990612ea2565b604051602001612333919061447a565b600a546001600160a01b031633146124e35760405162461bcd60e51b81526004016110e690614062565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b0316331461252f5760405162461bcd60e51b81526004016110e690614062565b6000821161257f5760405162461bcd60e51b815260206004820152601f60248201527f7175616e74697479206d7573742062652067726561746572207468616e20300060448201526064016110e6565b60c88260255461258f9190614198565b11156125ad5760405162461bcd60e51b81526004016110e6906141b0565b60005b828110156111cd576001602560008282546125cb9190614198565b925050819055506125e0826025546000612fa0565b806125ea8161449f565b9150506125b0565b600a546001600160a01b0316331461261c5760405162461bcd60e51b81526004016110e690614062565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b606061264984611901565b831061269457604080516000808252602082019092529061268c565b60408051808201909152600080825260208201528152602001906001900390816126655790505b5090506127a2565b8161269e85611901565b6126a88486614198565b106126c457836126b786611901565b6126c191906142a0565b90505b60008167ffffffffffffffff8111156126df576126df613e5a565b60405190808252806020026020018201604052801561272457816020015b60408051808201909152600080825260208201528152602001906001900390816126fd5790505b50905060005b8281101561279d576000612742886107de848a614198565b90506040518060400160405280828152602001601760008481526020019081526020016000205481525083838151811061277e5761277e614261565b60200260200101819052505080806127959061449f565b91505061272a565b509150505b9392505050565b600f546000906001600160a01b0316158015906127d35750600f546001600160a01b038381169116145b156127e057506001611004565b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff166127a2565b600a546001600160a01b031633146128385760405162461bcd60e51b81526004016110e690614062565b428110156128585760405162461bcd60e51b81526004016110e69061422a565b602755565b600060275460001415801561287457506027544210155b801561130e57505060165460ff1690565b600a546001600160a01b031633146128af5760405162461bcd60e51b81526004016110e690614062565b6001600160a01b0381166129145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016110e6565b61291d81612d38565b50565b600a546001600160a01b0316331461294a5760405162461bcd60e51b81526004016110e690614062565b6111cd60158383613a89565b60006001600160e01b031982166380ac58cd60e01b148061298757506001600160e01b03198216635b5e139f60e01b145b8061100457506301ffc9a760e01b6001600160e01b0319831614611004565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906129f882611852565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a3c826129a6565b612a9d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016110e6565b6000612aa883611852565b9050806001600160a01b0316846001600160a01b03161480612ae35750836001600160a01b0316612ad88461110f565b6001600160a01b0316145b80612af35750612af381856127a9565b949350505050565b826001600160a01b0316612b0e82611852565b6001600160a01b031614612b725760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016110e6565b6001600160a01b038216612bd45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016110e6565b612bdf8383836131ec565b612bea6000826129c3565b6001600160a01b0383166000908152600360205260408120805460019290612c139084906142a0565b90915550506001600160a01b0382166000908152600360205260408120805460019290612c41908490614198565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60005b83811015611f4357600160266000828254612cc09190614198565b92505081905550612cd48360265484612fa0565b80612cde8161449f565b915050612ca5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526111cd9084906132a4565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415612dec5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016110e6565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600082612e668584613376565b14949350505050565b612e7a848484612afb565b612e86848484846133ea565b611f435760405162461bcd60e51b81526004016110e6906144ba565b606081612ec65750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612ef05780612eda8161449f565b9150612ee99050600a83614522565b9150612eca565b60008167ffffffffffffffff811115612f0b57612f0b613e5a565b6040519080825280601f01601f191660200182016040528015612f35576020820181803683370190505b5090505b8415612af357612f4a6001836142a0565b9150612f57600a86614536565b612f62906030614198565b60f81b818381518110612f7757612f77614261565b60200101906001600160f81b031916908160001a905350612f99600a86614522565b9450612f39565b612fae612710612ee0614198565b6026541115612fff5760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f74206d696e7420616e796d6f7265204661726d657273000000000060448201526064016110e6565b61300983836134e8565b60105460405163198aee3d60e21b81523260048201526000916013916001600160a01b039091169063662bb8f4906024016020604051808303816000875af1158015613059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307d9190614211565b6130879190614536565b905060008161313257826130e35761025860205410156130de576130ac846002613502565b6020546130ba906001614198565b602090815560008581526019825260408082208290558254601a9093529020555060015b613132565b6101f46021541015613132576130fa846002613502565b602154613108906001614198565b602190815560008581526019602090815260408083206001908190559354601b9092529091205590505b806131b257613142846001613502565b8261317e57601e54613155906001614198565b601e90815560008581526019602090815260408083208390559254601c909152919020556131b2565b601f5461318c906001614198565b601f9081556000858152601960209081526040808320600190559254601d909152919020555b6040518481527fceb9ce42c74c1c77fa02fac28c4093f86dad7c6cbf35887bd4e2602a5d23aeeb9060200160405180910390a15050505050565b6001600160a01b0383166132475761324281600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61326a565b816001600160a01b0316836001600160a01b03161461326a5761326a838261360e565b6001600160a01b038216613281576111cd816136ab565b826001600160a01b0316826001600160a01b0316146111cd576111cd828261375a565b60006132f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661379e9092919063ffffffff16565b8051909150156111cd5780806020019051810190613317919061454a565b6111cd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016110e6565b600081815b84518110156133e257600085828151811061339857613398614261565b602002602001015190508083116133be57600083815260208290526040902092506133cf565b600081815260208490526040902092505b50806133da8161449f565b91505061337b565b509392505050565b60006001600160a01b0384163b156134dd57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061342e903390899088908890600401614567565b6020604051808303816000875af1925050508015613469575060408051601f3d908101601f19168201909252613466918101906145a4565b60015b6134c3573d808015613497576040519150601f19603f3d011682016040523d82523d6000602084013e61349c565b606091505b5080516134bb5760405162461bcd60e51b81526004016110e6906144ba565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612af3565b506001949350505050565b6116b28282604051806020016040528060008152506137ad565b6000828152601760205260409020541561356d5760405162461bcd60e51b815260206004820152602660248201527f7468617420746f6b656e277320747970652068617320616c7265616479206265604482015265195b881cd95d60d21b60648201526084016110e6565b600181148061357c5750600281145b6135bf5760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206661726d657273207479706560601b60448201526064016110e6565b60008281526017602090815260409182902083905581518481529081018390527ff1c9c5240a72a6debd54e6913e3ef655d5482629c39cf52a07db5fd61cd20f44910160405180910390a15050565b6000600161361b84611901565b61362591906142a0565b600083815260076020526040902054909150808214613678576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906136bd906001906142a0565b600083815260096020526040812054600880549394509092849081106136e5576136e5614261565b90600052602060002001549050806008838154811061370657613706614261565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061373e5761373e6145c1565b6001900381819060005260206000200160009055905550505050565b600061376583611901565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6060612af384846000856137e0565b6137b78383613911565b6137c460008484846133ea565b6111cd5760405162461bcd60e51b81526004016110e6906144ba565b6060824710156138415760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016110e6565b6001600160a01b0385163b6138985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016110e6565b600080866001600160a01b031685876040516138b491906145d7565b60006040518083038185875af1925050503d80600081146138f1576040519150601f19603f3d011682016040523d82523d6000602084013e6138f6565b606091505b5091509150613906828286613a50565b979650505050505050565b6001600160a01b0382166139675760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016110e6565b613970816129a6565b156139bd5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016110e6565b6139c9600083836131ec565b6001600160a01b03821660009081526003602052604081208054600192906139f2908490614198565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60608315613a5f5750816127a2565b825115613a6f5782518084602001fd5b8160405162461bcd60e51b81526004016110e69190613bc6565b828054613a9590614027565b90600052602060002090601f016020900481019282613ab75760008555613afd565b82601f10613ad05782800160ff19823516178555613afd565b82800160010185558215613afd579182015b82811115613afd578235825591602001919060010190613ae2565b50613b09929150613b0d565b5090565b5b80821115613b095760008155600101613b0e565b6001600160e01b03198116811461291d57600080fd5b600060208284031215613b4a57600080fd5b81356127a281613b22565b600060208284031215613b6757600080fd5b5035919050565b60005b83811015613b89578181015183820152602001613b71565b83811115611f435750506000910152565b60008151808452613bb2816020860160208601613b6e565b601f01601f19169290920160200192915050565b6020815260006127a26020830184613b9a565b60008060208385031215613bec57600080fd5b823567ffffffffffffffff80821115613c0457600080fd5b818501915085601f830112613c1857600080fd5b813581811115613c2757600080fd5b866020828501011115613c3957600080fd5b60209290920196919550909350505050565b6001600160a01b038116811461291d57600080fd5b60008060408385031215613c7357600080fd5b8235613c7e81613c4b565b946020939093013593505050565b600080600060608486031215613ca157600080fd5b8335613cac81613c4b565b92506020840135613cbc81613c4b565b929592945050506040919091013590565b600060208284031215613cdf57600080fd5b81356127a281613c4b565b600080600060608486031215613cff57600080fd5b8335613d0a81613c4b565b9250602084013591506040840135613d2181613c4b565b809150509250925092565b600080600060608486031215613d4157600080fd5b505081359360208301359350604090920135919050565b801515811461291d57600080fd5b60008060408385031215613d7957600080fd5b8235613d8481613c4b565b91506020830135613d9481613d58565b809150509250929050565b600080600060408486031215613db457600080fd5b833567ffffffffffffffff80821115613dcc57600080fd5b818601915086601f830112613de057600080fd5b813581811115613def57600080fd5b8760208260051b8501011115613e0457600080fd5b6020928301989097509590910135949350505050565b600080600060608486031215613e2f57600080fd5b8335613e3a81613d58565b92506020840135613e4a81613d58565b91506040840135613d2181613d58565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215613e8657600080fd5b8435613e9181613c4b565b93506020850135613ea181613c4b565b925060408501359150606085013567ffffffffffffffff80821115613ec557600080fd5b818701915087601f830112613ed957600080fd5b813581811115613eeb57613eeb613e5a565b604051601f8201601f19908116603f01168101908382118183101715613f1357613f13613e5a565b816040528281528a6020848701011115613f2c57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215613f6357600080fd5b823591506020830135613d9481613c4b565b600080600060608486031215613f8a57600080fd5b8335613f9581613c4b565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b82811015613fec57815180518552860151868501529284019290850190600101613fc7565b5091979650505050505050565b6000806040838503121561400c57600080fd5b823561401781613c4b565b91506020830135613d9481613c4b565b600181811c9082168061403b57607f821691505b6020821081141561405c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526015908201527463616e6e6f74206d696e74207269676874206e6f7760581b604082015260600190565b60208082526021908201527f7175616e74697479206d757374206265206265747765656e203120616e6420316040820152600360fc1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156141ab576141ab614182565b500190565b60208082526022908201527f796f752063616e2774206d696e742074686174206d616e79207269676874206e6040820152616f7760f01b606082015260800190565b600081600019048311821515161561420c5761420c614182565b500290565b60006020828403121561422357600080fd5b5051919050565b6020808252601f908201527f737461727454696d652063616e6e6f7420626520696e20746865207061737400604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252600f908201526e0dcdee840cadcdeeaced04082ac82b608b1b604082015260600190565b6000828210156142b2576142b2614182565b500390565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60008151614318818560208601613b6e565b9290920192915050565b600080845481600182811c91508083168061433e57607f831692505b602080841082141561435e57634e487b7160e01b86526022600452602486fd5b8180156143725760018114614383576143b0565b60ff198616895284890196506143b0565b60008b81526020902060005b868110156143a85781548b82015290850190830161438f565b505084890196505b5050505050506143e46143d36143cd83602f60f81b815260010190565b86614306565b64173539b7b760d91b815260050190565b95945050505050565b6b23a2a7182fa727a926a0a61d60a11b81526000825161441481600c850160208701613b6e565b91909101600c0192915050565b6923a2a7182fa3a7a6221d60b11b81526000825161444681600a850160208701613b6e565b91909101600a0192915050565b6b23a2a718afa727a926a0a61d60a11b81526000825161441481600c850160208701613b6e565b6923a2a718afa3a7a6221d60b11b81526000825161444681600a850160208701613b6e565b60006000198214156144b3576144b3614182565b5060010190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826145315761453161450c565b500490565b6000826145455761454561450c565b500690565b60006020828403121561455c57600080fd5b81516127a281613d58565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061459a90830184613b9a565b9695505050505050565b6000602082840312156145b657600080fd5b81516127a281613b22565b634e487b7160e01b600052603160045260246000fd5b600082516145e9818460208701613b6e565b919091019291505056fea264697066735822122018da82aeebbef6c1ad3fd90bde2e95644fda97bcee811e237eabe06a836c074864736f6c634300080a0033000000000000000000000000c034506bf44c146df412db2eed2c887a1291d3e500000000000000000000000046b54cb99472d7e9bf43488f250707862f41d9c200000000000000000000000031636ae43e54bad046d7aa4a502c3cb13f03b700