[ { "inputs": [ { "internalType": "contract IERC20", "name": "phi", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": "player", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "craftId", "type": "uint256" } ], "name": "CraftClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "player", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "craftId", "type": "uint256" } ], "name": "CraftStarted", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "weight", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "ipfsHash", "type": "string" } ], "name": "ResourceTypeRegistered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "craftId", "type": "uint256" } ], "name": "claimCraft", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "craft", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId1", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId2", "type": "uint256" } ], "name": "getCraftingResult", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "getCrafts", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "finishTimestamp", "type": "uint256" }, { "internalType": "bool", "name": "claimed", "type": "bool" } ], "internalType": "struct Resource.PendingCraft[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPlayers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "offset", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "getPlayersPaginated", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "getResourceTypes", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "weight", "type": "uint256" }, { "internalType": "enum Resource.Tier", "name": "tier", "type": "uint8" }, { "internalType": "uint256[]", "name": "ingredients", "type": "uint256[]" }, { "internalType": "string", "name": "ipfsHash", "type": "string" } ], "internalType": "struct Resource.ResourceType[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getResourceWeight", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract ChestSale", "name": "chest", "type": "address" } ], "name": "initialMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "player", "type": "address" } ], "name": "ownedTokens", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "player", "type": "address" }, { "internalType": "uint256", "name": "offset", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "ownedTokensPaginated", "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": "address", "name": "player", "type": "address" } ], "name": "pendingCrafts", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "weight", "type": "uint256" }, { "internalType": "enum Resource.Tier", "name": "tier", "type": "uint8" }, { "internalType": "uint256[]", "name": "ingredients", "type": "uint256[]" }, { "internalType": "string", "name": "ipfsHash", "type": "string" } ], "internalType": "struct Resource.ResourceType[]", "name": "types", "type": "tuple[]" } ], "name": "registerResourceTypes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resourceCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "resourceTypes", "outputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "weight", "type": "uint256" }, { "internalType": "enum Resource.Tier", "name": "tier", "type": "uint8" }, { "internalType": "string", "name": "ipfsHash", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "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": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "withdrawFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b506040516200423838038062004238833981016040819052620000349162000801565b604051806060016040528060258152602001620041b760259139620000598162000301565b5062000065336200031a565b606081901b6001600160601b03191660805260408051600480825260a08201909252600091816020015b62000099620006db565b8152602001906001900390816200008f579050506040805160e081018252600560a08201908152640cac2e4e8d60db1b60c083015281526001602082015291925081016000815260200160006040519080825280602002602001820160405280156200010f578160200160208202803683370190505b5081526020016040518060600160405280602e81526020016200420a602e91398152508160008151811062000148576200014862000939565b6020908102919091018101919091526040805160e081018252600560a08201908152643bb0ba32b960d91b60c08301528152600181840152600081830181905282518181529384019092529160608301915081526020016040518060600160405280602e815260200162004189602e913981525081600181518110620001d257620001d262000939565b6020908102919091018101919091526040805160e081018252600460a08201908152636669726560e01b60c08301528152600181840152600081830181905282518181529384019092529160608301915081526020016040518060600160405280602e8152602001620041dc602e9139815250816002815181106200025b576200025b62000939565b6020908102919091018101919091526040805160e081018252600360a082019081526230b4b960e91b60c08301528152600181840152600081830181905282518181529384019092529160608301915081526020016040518060600160405280602e81526020016200415b602e913981525081600381518110620002e357620002e362000939565b6020908102919091010152620002f9816200036c565b50506200094f565b8051620003169060029060208401906200071e565b5050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6003546001600160a01b03163314620003cc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b81518110156200031657620003f06004620006ce60201b62001af61760201c565b6000620004096004620006d760201b62001aff1760201c565b905082828151811062000420576200042062000939565b6020908102919091018101516000838152600983526040902081518051929391926200045092849201906200071e565b506020820151816001015560408201518160020160006101000a81548160ff0219169083600581111562000488576200048862000923565b021790555060608201518051620004aa916003840191602090910190620007ad565b5060808201518051620004c89160048401916020909101906200071e565b50905050828281518110620004e157620004e162000939565b6020026020010151606001515160001415620004fd576200061a565b82828151811062000512576200051262000939565b6020026020010151606001515160021415620005d15780600d600085858151811062000542576200054262000939565b60200260200101516060015160008151811062000563576200056362000939565b60200260200101518152602001908152602001600020600085858151811062000590576200059062000939565b602002602001015160600151600181518110620005b157620005b162000939565b60200260200101518152602001908152602001600020819055506200061a565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c696420696e6772656469656e747320636f756e74000000000000006044820152606401620003c3565b807fc61fac2cf66079c61febae7d287c6afef4bc46ad9dc3d5ceca684238efde13c884848151811062000651576200065162000939565b60200260200101516000015185858151811062000672576200067262000939565b60200260200101516020015186868151811062000693576200069362000939565b602002602001015160800151604051620006b09392919062000883565b60405180910390a25080620006c581620008f9565b915050620003cf565b80546001019055565b5490565b6040518060a001604052806060815260200160008152602001600060058111156200070a576200070a62000923565b815260200160608152602001606081525090565b8280546200072c90620008bc565b90600052602060002090601f0160209004810192826200075057600085556200079b565b82601f106200076b57805160ff19168380011785556200079b565b828001600101855582156200079b579182015b828111156200079b5782518255916020019190600101906200077e565b50620007a9929150620007ea565b5090565b8280548282559060005260206000209081019282156200079b57916020028201828111156200079b5782518255916020019190600101906200077e565b5b80821115620007a95760008155600101620007eb565b6000602082840312156200081457600080fd5b81516001600160a01b03811681146200082c57600080fd5b9392505050565b6000815180845260005b818110156200085b576020818501810151868301820152016200083d565b818111156200086e576000602083870101525b50601f01601f19169290920160200192915050565b60608152600062000898606083018662000833565b8460208401528281036040840152620008b2818562000833565b9695505050505050565b600181811c90821680620008d157607f821691505b60208210811415620008f357634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200091c57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60805160601c6137df6200097c6000396000818161061f015281816106a30152611a0701526137df6000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c806375b94ff4116100f9578063a22cb46511610097578063e985e9c511610071578063e985e9c5146103cf578063f242432a1461040b578063f2fde38b1461041e578063f3917bd21461043157600080fd5b8063a22cb46514610396578063b12ab40f146103a9578063c268f9ba146103bc57600080fd5b806388b5adca116100d357806388b5adca146103305780638b5b9ccc146103505780638da5cb5b1461035857806395810f211461037357600080fd5b806375b94ff4146102da57806376487804146102ed5780637a15d30e1461031057600080fd5b806318951440116101665780633b508352116101405780633b5083521461028c57806346c8165d146102ac5780634e1273f4146102bf578063715018a6146102d257600080fd5b806318951440146102465780632eb2c2d614610266578063306e49e71461027957600080fd5b8062fdd58e146101ad57806301ffc9a7146101d35780630a3fa24a146101f65780630e89341c146101fe578063164e68de1461021e578063184cf99b14610233575b600080fd5b6101c06101bb366004612d4e565b610444565b6040519081526020015b60405180910390f35b6101e66101e136600461302a565b6104de565b60405190151581526020016101ca565b6101c061052e565b61021161020c366004613064565b61053e565b6040516101ca919061339e565b61023161022c366004612bb5565b6105d2565b005b610231610241366004612e81565b6106cd565b610259610254366004613096565b6109b4565b6040516101ca91906131f5565b610231610274366004612c0b565b610a7d565b610231610287366004613064565b610b14565b61029f61029a366004612bb5565b610c67565b6040516101ca919061335d565b61029f6102ba366004612d7a565b610c8b565b61029f6102cd366004612daf565b610d61565b610231610e8a565b6101c06102e8366004613096565b610ec0565b6103006102fb366004613064565b610efd565b6040516101ca94939291906133b1565b61032361031e366004612fd9565b61103d565b6040516101ca919061329d565b61034361033e366004612fd9565b6112c9565b6040516101ca9190613242565b6102596113d6565b6003546040516001600160a01b0390911681526020016101ca565b6101c0610381366004613064565b60009081526009602052604090206001015490565b6102316103a4366004612d20565b6113e2565b61029f6103b7366004612bb5565b6114b9565b6102316103ca366004612bb5565b6114dd565b6101e66103dd366004612bd2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610231610419366004612cb8565b6115ec565b61023161042c366004612bb5565b611673565b61023161043f366004613064565b61170b565b60006001600160a01b0383166104b55760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061050f57506001600160e01b031982166303a24d0760e21b145b806104d857506301ffc9a760e01b6001600160e01b03198316146104d8565b600061053960045490565b905090565b60606002805461054d906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610579906135b7565b80156105c65780601f1061059b576101008083540402835291602001916105c6565b820191906000526020600020905b8154815290600101906020018083116105a957829003601f168201915b50505050509050919050565b6003546001600160a01b031633146105fc5760405162461bcd60e51b81526004016104ac906134f5565b6040516370a0823160e01b81523060048201526106ca9082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561066157600080fd5b505afa158015610675573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610699919061307d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190611b03565b50565b6003546001600160a01b031633146106f75760405162461bcd60e51b81526004016104ac906134f5565b60005b81518110156109b057610711600480546001019055565b600061071c60045490565b9050828281518110610730576107306136a0565b60209081029190910181015160008381526009835260409020815180519293919261075e928492019061299a565b506020820151816001015560408201518160020160006101000a81548160ff0219169083600581111561079357610793613674565b0217905550606082015180516107b3916003840191602090910190612a1e565b50608082015180516107cf91600484019160209091019061299a565b509050508282815181106107e5576107e56136a0565b60200260200101516060015151600014156107ff5761090a565b828281518110610811576108116136a0565b60200260200101516060015151600214156108c25780600d600085858151811061083d5761083d6136a0565b60200260200101516060015160008151811061085b5761085b6136a0565b602002602001015181526020019081526020016000206000858581518110610885576108856136a0565b6020026020010151606001516001815181106108a3576108a36136a0565b602002602001015181526020019081526020016000208190555061090a565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c696420696e6772656469656e747320636f756e740000000000000060448201526064016104ac565b807fc61fac2cf66079c61febae7d287c6afef4bc46ad9dc3d5ceca684238efde13c884848151811061093e5761093e6136a0565b60200260200101516000015185858151811061095c5761095c6136a0565b60200260200101516020015186868151811061097a5761097a6136a0565b602002602001015160800151604051610995939291906133e9565b60405180910390a250806109a881613643565b9150506106fa565b5050565b606060006109c26007611b6b565b90506000836001600160401b038111156109de576109de6136b6565b604051908082528060200260200182016040528015610a07578160200160208202803683370190505b50905060005b84811015610a745782610a20828861355c565b81518110610a3057610a306136a0565b6020026020010151828281518110610a4a57610a4a6136a0565b6001600160a01b039092166020928302919091019091015280610a6c81613643565b915050610a0d565b50949350505050565b6001600160a01b038516331480610a995750610a9985336103dd565b610b005760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016104ac565b610b0d8585858585611b78565b5050505050565b336000908152600a60205260409020610b2d9082611d63565b610b835760405162461bcd60e51b815260206004820152602160248201527f74686973206372616674206973206e6f742070656e64696e6720666f7220796f6044820152607560f81b60648201526084016104ac565b6000818152600b602052604090206001810154421015610be55760405162461bcd60e51b815260206004820152601b60248201527f74686973206372616674206973207374696c6c2070656e64696e67000000000060448201526064016104ac565b60028101805460ff19166001179055336000908152600a60205260409020610c0d9083611d7b565b50610c2e338260000154600160405180602001604052806000815250611d87565b60405182815233907f09cb363b7330c08920dd04bde0d0a87880b774eaf89de7f30d518975888299be9060200160405180910390a25050565b6001600160a01b0381166000908152600a602052604090206060906104d890611b6b565b6001600160a01b0383166000908152600c6020526040812060609190610cb090611b6b565b90506000836001600160401b03811115610ccc57610ccc6136b6565b604051908082528060200260200182016040528015610cf5578160200160208202803683370190505b50905060005b84811015610d555782610d0e828861355c565b81518110610d1e57610d1e6136a0565b6020026020010151828281518110610d3857610d386136a0565b602090810291909101015280610d4d81613643565b915050610cfb565b509150505b9392505050565b60608151835114610dc65760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016104ac565b600083516001600160401b03811115610de157610de16136b6565b604051908082528060200260200182016040528015610e0a578160200160208202803683370190505b50905060005b8451811015610e8257610e55858281518110610e2e57610e2e6136a0565b6020026020010151858381518110610e4857610e486136a0565b6020026020010151610444565b828281518110610e6757610e676136a0565b6020908102919091010152610e7b81613643565b9050610e10565b509392505050565b6003546001600160a01b03163314610eb45760405162461bcd60e51b81526004016104ac906134f5565b610ebe6000611e97565b565b6000828152600d6020908152604080832084845290915281205480610d5a5750506000908152600d60209081526040808320938352929052205490565b600960205260009081526040902080548190610f18906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f44906135b7565b8015610f915780601f10610f6657610100808354040283529160200191610f91565b820191906000526020600020905b815481529060010190602001808311610f7457829003601f168201915b50505050600183015460028401546004850180549495929460ff909216935090610fba906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe6906135b7565b80156110335780601f1061100857610100808354040283529160200191611033565b820191906000526020600020905b81548152906001019060200180831161101657829003601f168201915b5050505050905084565b6060600082516001600160401b0381111561105a5761105a6136b6565b60405190808252806020026020018201604052801561109357816020015b611080612a58565b8152602001906001900390816110785790505b50905060005b83518110156112c257600960008583815181106110b8576110b86136a0565b602002602001015181526020019081526020016000206040518060a00160405290816000820180546110e9906135b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611115906135b7565b80156111625780601f1061113757610100808354040283529160200191611162565b820191906000526020600020905b81548152906001019060200180831161114557829003601f168201915b505050918352505060018201546020820152600282015460409091019060ff16600581111561119357611193613674565b60058111156111a4576111a4613674565b8152602001600382018054806020026020016040519081016040528092919081815260200182805480156111f757602002820191906000526020600020905b8154815260200190600101908083116111e3575b50505050508152602001600482018054611210906135b7565b80601f016020809104026020016040519081016040528092919081815260200182805461123c906135b7565b80156112895780601f1061125e57610100808354040283529160200191611289565b820191906000526020600020905b81548152906001019060200180831161126c57829003601f168201915b5050505050815250508282815181106112a4576112a46136a0565b602002602001018190525080806112ba90613643565b915050611099565b5092915050565b6060600082516001600160401b038111156112e6576112e66136b6565b60405190808252806020026020018201604052801561133d57816020015b61132a604051806060016040528060008152602001600081526020016000151581525090565b8152602001906001900390816113045790505b50905060005b83518110156112c257600b6000858381518110611362576113626136a0565b60209081029190910181015182528181019290925260409081016000208151606081018352815481526001820154938101939093526002015460ff1615159082015282518390839081106113b8576113b86136a0565b602002602001018190525080806113ce90613643565b915050611343565b60606105396007611b6b565b336001600160a01b038316141561144d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016104ac565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6001600160a01b0381166000908152600c602052604090206060906104d890611b6b565b6003546001600160a01b031633146115075760405162461bcd60e51b81526004016104ac906134f5565b60065460ff16156115645760405162461bcd60e51b815260206004820152602160248201527f696e697469616c206d696e7420697320706572666f726d656420616c726561646044820152607960f81b60648201526084016104ac565b61158281600161927c60405180602001604052806000815250611d87565b6115a081600261927c60405180602001604052806000815250611d87565b6115be81600361927c60405180602001604052806000815250611d87565b6115dc81600461927c60405180602001604052806000815250611d87565b506006805460ff19166001179055565b6001600160a01b038516331480611608575061160885336103dd565b6116665760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016104ac565b610b0d8585858585611ee9565b6003546001600160a01b0316331461169d5760405162461bcd60e51b81526004016104ac906134f5565b6001600160a01b0381166117025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ac565b6106ca81611e97565b6000818152600960205260409020600301546117695760405162461bcd60e51b815260206004820152601b60248201527f4e6f2072656369706520666f722074686973207265736f75726365000000000060448201526064016104ac565b6000818152600960209081526040808320600301805482518185028101850190935280835291929091908301828280156117c257602002820191906000526020600020905b8154815260200190600101908083116117ae575b505050505090506000805b825181101561190c5760006117ee33858481518110610e4857610e486136a0565b1161183b5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420696e6772656469656e7473000000000000000060448201526064016104ac565b61186033848381518110611851576118516136a0565b60200260200101516001612006565b81600581111561187257611872613674565b60096000858481518110611888576118886136a0565b60209081029190910181015182528101919091526040016000206002015460ff1660058111156118ba576118ba613674565b11156118fa57600960008483815181106118d6576118d66136a0565b60209081029190910181015182528101919091526040016000206002015460ff1691505b8061190481613643565b9150506117cd565b50600080600183600581111561192457611924613674565b141561193e57506107089050670de0b6b3a76400006119f4565b600283600581111561195257611952613674565b141561196c5750611c209050671bc16d674ec800006119f4565b600383600581111561198057611980613674565b141561199a575061a8c090506729a2241af62c00006119f4565b60048360058111156119ae576119ae613674565b14156119c95750620151809050673782dace9d9000006119f4565b60058360058111156119dd576119dd613674565b14156119f4575062093a809050674563918244f400005b8015611a2f57611a2f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461217f565b611a3d600580546001019055565b6000611a4860055490565b905060405180606001604052808781526020018442611a67919061355c565b815260006020918201819052838152600b8252604080822084518155848401516001820155938101516002909401805460ff191694151594909417909355338152600a90915220611ab890826121bd565b5060405181815233907f7a1a44d9e743fa2a37d296b9222e3bf4f01742cf19a9c6dc2c4f0270a97c45df9060200160405180910390a2505050505050565b80546001019055565b5490565b6040516001600160a01b038316602482015260448101829052611b6690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526121c9565b505050565b60606000610d5a8361229b565b8151835114611bda5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016104ac565b6001600160a01b038416611c005760405162461bcd60e51b81526004016104ac90613466565b33611c0f8187878787876122f6565b60005b8451811015611cf5576000858281518110611c2f57611c2f6136a0565b602002602001015190506000858381518110611c4d57611c4d6136a0565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015611c9d5760405162461bcd60e51b81526004016104ac906134ab565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611cda90849061355c565b9250508190555050505080611cee90613643565b9050611c12565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611d45929190613370565b60405180910390a4611d5b81878787878761244b565b505050505050565b60008181526001830160205260408120541515610d5a565b6000610d5a83836125b6565b6001600160a01b038416611de75760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016104ac565b33611e0781600087611df8886126a9565b611e01886126a9565b876122f6565b6000848152602081815260408083206001600160a01b038916845290915281208054859290611e3790849061355c565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610b0d816000878787876126f4565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038416611f0f5760405162461bcd60e51b81526004016104ac90613466565b33611f1f818787611df8886126a9565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015611f605760405162461bcd60e51b81526004016104ac906134ab565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290611f9d90849061355c565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611ffd8288888888886126f4565b50505050505050565b6001600160a01b0383166120685760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016104ac565b3361209781856000612079876126a9565b612082876126a9565b604051806020016040528060008152506122f6565b6000838152602081815260408083206001600160a01b0388168452909152902054828110156121145760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016104ac565b6000848152602081815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526121b79085906323b872dd60e01b90608401611b2f565b50505050565b6000610d5a83836127be565b600061221e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661280d9092919063ffffffff16565b805190915015611b66578080602001905181019061223c919061300d565b611b665760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104ac565b6060816000018054806020026020016040519081016040528092919081815260200182805480156105c657602002820191906000526020600020905b8154815260200190600101908083116122d75750505050509050919050565b60005b8351811015612433576001600160a01b038616158015906123485750828181518110612327576123276136a0565b602002602001015161234587868481518110610e4857610e486136a0565b11155b1561239f5761239d848281518110612362576123626136a0565b6020026020010151600c6000896001600160a01b03166001600160a01b03168152602001908152602001600020611d7b90919063ffffffff16565b505b6001600160a01b038516158015906123ca57506123c885858381518110610e4857610e486136a0565b155b156124215761241f8482815181106123e4576123e46136a0565b6020026020010151600c6000886001600160a01b03166001600160a01b031681526020019081526020016000206121bd90919063ffffffff16565b505b8061242b81613643565b9150506122f9565b5061243f600786612824565b50611ffd600785612824565b6001600160a01b0384163b15611d5b5760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061248f908990899088908890889060040161315d565b602060405180830381600087803b1580156124a957600080fd5b505af19250505080156124d9575060408051601f3d908101601f191682019092526124d691810190613047565b60015b612586576124e56136cc565b806308c379a0141561251f57506124fa6136e7565b806125055750612521565b8060405162461bcd60e51b81526004016104ac919061339e565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016104ac565b6001600160e01b0319811663bc197c8160e01b14611ffd5760405162461bcd60e51b81526004016104ac9061341e565b6000818152600183016020526040812054801561269f5760006125da600183613574565b85549091506000906125ee90600190613574565b905081811461265357600086600001828154811061260e5761260e6136a0565b9060005260206000200154905080876000018481548110612631576126316136a0565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806126645761266461368a565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506104d8565b60009150506104d8565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106126e3576126e36136a0565b602090810291909101015292915050565b6001600160a01b0384163b15611d5b5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061273890899089908890889088906004016131bb565b602060405180830381600087803b15801561275257600080fd5b505af1925050508015612782575060408051601f3d908101601f1916820190925261277f91810190613047565b60015b61278e576124e56136cc565b6001600160e01b0319811663f23a6e6160e01b14611ffd5760405162461bcd60e51b81526004016104ac9061341e565b6000818152600183016020526040812054612805575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104d8565b5060006104d8565b606061281c8484600085612839565b949350505050565b6000610d5a836001600160a01b0384166127be565b60608247101561289a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104ac565b843b6128e85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104ac565b600080866001600160a01b031685876040516129049190613141565b60006040518083038185875af1925050503d8060008114612941576040519150601f19603f3d011682016040523d82523d6000602084013e612946565b606091505b5091509150612956828286612961565b979650505050505050565b60608315612970575081610d5a565b8251156129805782518084602001fd5b8160405162461bcd60e51b81526004016104ac919061339e565b8280546129a6906135b7565b90600052602060002090601f0160209004810192826129c85760008555612a0e565b82601f106129e157805160ff1916838001178555612a0e565b82800160010185558215612a0e579182015b82811115612a0e5782518255916020019190600101906129f3565b50612a1a929150612a98565b5090565b828054828255906000526020600020908101928215612a0e5791602002820182811115612a0e5782518255916020019190600101906129f3565b6040518060a00160405280606081526020016000815260200160006005811115612a8457612a84613674565b815260200160608152602001606081525090565b5b80821115612a1a5760008155600101612a99565b60006001600160401b03831115612ac657612ac66136b6565b604051612add601f8501601f191660200182613617565b809150838152848484011115612af257600080fd5b83836020830137600060208583010152509392505050565b600082601f830112612b1b57600080fd5b81356020612b2882613539565b604051612b358282613617565b8381528281019150858301600585901b87018401881015612b5557600080fd5b60005b85811015612b7457813584529284019290840190600101612b58565b5090979650505050505050565b600082601f830112612b9257600080fd5b610d5a83833560208501612aad565b803560068110612bb057600080fd5b919050565b600060208284031215612bc757600080fd5b8135610d5a81613770565b60008060408385031215612be557600080fd5b8235612bf081613770565b91506020830135612c0081613770565b809150509250929050565b600080600080600060a08688031215612c2357600080fd5b8535612c2e81613770565b94506020860135612c3e81613770565b935060408601356001600160401b0380821115612c5a57600080fd5b612c6689838a01612b0a565b94506060880135915080821115612c7c57600080fd5b612c8889838a01612b0a565b93506080880135915080821115612c9e57600080fd5b50612cab88828901612b81565b9150509295509295909350565b600080600080600060a08688031215612cd057600080fd5b8535612cdb81613770565b94506020860135612ceb81613770565b9350604086013592506060860135915060808601356001600160401b03811115612d1457600080fd5b612cab88828901612b81565b60008060408385031215612d3357600080fd5b8235612d3e81613770565b91506020830135612c0081613785565b60008060408385031215612d6157600080fd5b8235612d6c81613770565b946020939093013593505050565b600080600060608486031215612d8f57600080fd5b8335612d9a81613770565b95602085013595506040909401359392505050565b60008060408385031215612dc257600080fd5b82356001600160401b0380821115612dd957600080fd5b818501915085601f830112612ded57600080fd5b81356020612dfa82613539565b604051612e078282613617565b8381528281019150858301600585901b870184018b1015612e2757600080fd5b600096505b84871015612e53578035612e3f81613770565b835260019690960195918301918301612e2c565b5096505086013592505080821115612e6a57600080fd5b50612e7785828601612b0a565b9150509250929050565b60006020808385031215612e9457600080fd5b82356001600160401b0380821115612eab57600080fd5b818501915085601f830112612ebf57600080fd5b8135612eca81613539565b60408051612ed88382613617565b8381528681019250858701600585901b870188018b1015612ef857600080fd5b60005b85811015612fc957813587811115612f1257600080fd5b880160a0818e03601f19011215612f2857600080fd5b612f3061352a565b8a82013589811115612f4157600080fd5b612f4f8f8d83860101612b81565b825250858201358b820152612f6660608301612ba1565b86820152608082013589811115612f7c57600080fd5b612f8a8f8d83860101612b0a565b60608301525060a082013589811115612fa257600080fd5b612fb08f8d83860101612b81565b6080830152508652509388019390880190600101612efb565b50909a9950505050505050505050565b600060208284031215612feb57600080fd5b81356001600160401b0381111561300157600080fd5b61281c84828501612b0a565b60006020828403121561301f57600080fd5b8151610d5a81613785565b60006020828403121561303c57600080fd5b8135610d5a81613793565b60006020828403121561305957600080fd5b8151610d5a81613793565b60006020828403121561307657600080fd5b5035919050565b60006020828403121561308f57600080fd5b5051919050565b600080604083850312156130a957600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156130e8578151875295820195908201906001016130cc565b509495945050505050565b6000815180845261310b81602086016020860161358b565b601f01601f19169290920160200192915050565b6006811061313d57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161315381846020870161358b565b9190910192915050565b6001600160a01b0386811682528516602082015260a060408201819052600090613189908301866130b8565b828103606084015261319b81866130b8565b905082810360808401526131af81856130f3565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090612956908301846130f3565b6020808252825182820181905260009190848201906040850190845b818110156132365783516001600160a01b031683529284019291840191600101613211565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156132905781518051855286810151878601528501511515858501526060909301929085019060010161325f565b5091979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561334f57603f19898403018552815160a081518186526132ea828701826130f3565b9150508882015189860152878201516133058987018261311f565b506060808301518683038288015261331d83826130b8565b925050506080808301519250858203818701525061333b81836130f3565b9689019694505050908601906001016132c4565b509098975050505050505050565b602081526000610d5a60208301846130b8565b60408152600061338360408301856130b8565b828103602084015261339581856130b8565b95945050505050565b602081526000610d5a60208301846130f3565b6080815260006133c460808301876130f3565b8560208401526133d7604084018661311f565b828103606084015261295681856130f3565b6060815260006133fc60608301866130f3565b846020840152828103604084015261341481856130f3565b9695505050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051613536816135f2565b90565b60006001600160401b03821115613552576135526136b6565b5060051b60200190565b6000821982111561356f5761356f61365e565b500190565b6000828210156135865761358661365e565b500390565b60005b838110156135a657818101518382015260200161358e565b838111156121b75750506000910152565b600181811c908216806135cb57607f821691505b602082108114156135ec57634e487b7160e01b600052602260045260246000fd5b50919050565b60a081016001600160401b0381118282101715613611576136116136b6565b60405250565b601f8201601f191681016001600160401b038111828210171561363c5761363c6136b6565b6040525050565b60006000198214156136575761365761365e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156135365760046000803e5060005160e01c90565b600060443d10156136f55790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561372457505050505090565b828501915081518181111561373c5750505050505090565b843d87010160208285010111156137565750505050505090565b61376560208286010187613617565b509095945050505050565b6001600160a01b03811681146106ca57600080fd5b80151581146106ca57600080fd5b6001600160e01b0319811681146106ca57600080fdfea26469706673582212207535616f8fa523ded0a869359d74eb179e96674e27f496173c5d057b8bee3bfa64736f6c63430008050033516d66325a41795a5847694233505270316e454731737339564d7274726e777574616f7454685535744d786a6a35516d54336a516a437a416d5059384d6f3473485970674e33636f767477376f37586275644d444469435834516839687474703a2f2f6465762e62656e6e6e6e7373732e636f6d3a33393130302f5f6d6574612f516d55615247715379774d3455797642684c5736366577574468654b32684b666e763450596f746a7543766f4161516d594b47623770366b32335850374847643633744a38633466745054386d59515a754c5a704c6a32366546746300000000000000000000000037b640ff750cd9907449dac298cd304c3a889f2f