GGGGGSkinNFT
Deploy on AlchemyContract Information
Explore the source code, ABI, and bytecode for the GGGGGSkinNFT smart contract.
More Info
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"},{"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":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"SaleAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"newReceiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"previousFraction","type":"uint96"},{"indexed":false,"internalType":"uint96","name":"newFraction","type":"uint96"}],"name":"SetRoyaltyInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"prefix","type":"string"},{"indexed":false,"internalType":"string","name":"suffix","type":"string"}],"name":"TokenURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"OPERATOR_FILTER_REGISTRY","outputs":[{"internalType":"contract IOperatorFilterRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"remainSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newReceiver","type":"address"},{"internalType":"uint96","name":"newFraction","type":"uint96"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSaleAddress","type":"address"}],"name":"setSaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newTokenURIPrefix","type":"string"},{"internalType":"string","name":"newTokenURISuffix","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplies","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"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":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"offset","type":"uint256"}],"name":"tokenIdsByOwner","outputs":[{"internalType":"uint256[20]","name":"","type":"uint256[20]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenIdsByOwnerOnceCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"},{"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":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"SaleAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"newReceiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"previousFraction","type":"uint96"},{"indexed":false,"internalType":"uint96","name":"newFraction","type":"uint96"}],"name":"SetRoyaltyInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"prefix","type":"string"},{"indexed":false,"internalType":"string","name":"suffix","type":"string"}],"name":"TokenURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"OPERATOR_FILTER_REGISTRY","outputs":[{"internalType":"contract IOperatorFilterRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"remainSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newReceiver","type":"address"},{"internalType":"uint96","name":"newFraction","type":"uint96"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSaleAddress","type":"address"}],"name":"setSaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newTokenURIPrefix","type":"string"},{"internalType":"string","name":"newTokenURISuffix","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplies","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"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":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"offset","type":"uint256"}],"name":"tokenIdsByOwner","outputs":[{"internalType":"uint256[20]","name":"","type":"uint256[20]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenIdsByOwnerOnceCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b19d9d9d9d9d4dada5b93919560a21b8152506040518060400160405280600981526020016823a3a3a3a3a9a5a4a760b91b815250600080610d806040518060200160405280600081525060405180602001604052806000815250733cc6cdda760b79bafa08df41ecfa224f810dceb66001888888888888888484888885858360009081620000b4919062000688565b506001620000c3848262000688565b50620000d0828262000268565b5050600160045550620000e690508282620002c7565b50620000f4905033620003a6565b620000ff33620003f8565b6200010a33620004e7565b5050600a555050506daaeb6d7670e522a718067333cd4e3b15905062000259578015620001a757604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200018857600080fd5b505af11580156200019d573d6000803e3d6000fd5b5050505062000259565b6001600160a01b03821615620001f85760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af2903906044016200016d565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b1580156200023f57600080fd5b505af115801562000254573d6000803e3d6000fd5b505050505b5050505050505050506200080b565b600262000276838262000688565b50600362000285828262000688565b507f34096664059c7d0b551b98d4585f6566d0a87a93bb8f5a23b1e5fdace3e3267360026003604051620002bb929190620007d9565b60405180910390a15050565b6127106001600160601b0382161115620003285760405162461bcd60e51b815260206004820152601e60248201527f6672616374696f6e2077696c6c206578636565642073616c655072696365000060448201526064015b60405180910390fd5b600580546001600160601b03838116600160a01b9081026001600160a01b03878116828117968790556040805185880487168082529590980490951660208801529481169592949116179184917f377771b065820b92da881172b82977e2307a6fec324ffc92fe26bbbae0ad42f8910160405180910390a350505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116620004425760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b60448201526064016200031f565b6007546001600160a01b0390811690821603620004955760405162461bcd60e51b815260206004820152601060248201526f3737ba1031b430b733b29030b236b4b760811b60448201526064016200031f565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a35050565b6001600160a01b038116620005315760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b60448201526064016200031f565b6008546001600160a01b0390811690821603620005915760405162461bcd60e51b815260206004820152601360248201527f6e6f74206368616e6765206f70657261746f720000000000000000000000000060448201526064016200031f565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed90600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060e57607f821691505b6020821081036200062f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068357600081815260208120601f850160051c810160208610156200065e5750805b601f850160051c820191505b818110156200067f578281556001016200066a565b5050505b505050565b81516001600160401b03811115620006a457620006a4620005e3565b620006bc81620006b58454620005f9565b8462000635565b602080601f831160018114620006f45760008415620006db5750858301515b600019600386901b1c1916600185901b1785556200067f565b600085815260208120601f198616915b82811015620007255788860151825594840194600190910190840162000704565b5085821015620007445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600081546200076381620005f9565b8085526020600183811680156200078357600181146200079e57620007ce565b60ff1985168884015283151560051b880183019550620007ce565b866000528260002060005b85811015620007c65781548a8201860152908301908401620007a9565b890184019650505b505050505092915050565b604081526000620007ee604083018562000754565b828103602084015262000802818562000754565b95945050505050565b612480806200081b6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063b88d4fde116100ad578063e985e9c51161007c578063e985e9c51461044c578063f2fde38b1461045f578063f851a44014610472578063f8fb491f14610483578063fffe088d1461049657600080fd5b8063b88d4fde1461040b578063c87b56dd1461041e578063d48ede9914610431578063d5abeb011461044457600080fd5b80638da5cb5b116100e95780638da5cb5b146103bc5780638efa8874146103cd57806395d89b41146103f0578063a22cb465146103f857600080fd5b806370a0823114610387578063715018a61461039a57806375829def146103a25780637b504b45146103b557600080fd5b806329605e771161019257806341f434341161016157806341f434341461033b57806342842e0e14610350578063570ca735146103635780636352211e1461037457600080fd5b806329605e77146102db5780632a55205a146102ee5780633f5a31521461032057806340c10f191461032857600080fd5b8063081812fc116101ce578063081812fc14610274578063095ea7b31461029f57806318160ddd146102b257806323b872dd146102c857600080fd5b806301ffc9a71461020057806302fa7c471461022857806303fac3c31461023d57806306fdde031461025f575b600080fd5b61021361020e366004611bed565b6104a7565b60405190151581526020015b60405180910390f35b61023b610236366004611c2d565b6104d2565b005b61025061024b366004611c70565b61054e565b60405161021f93929190611c9a565b61026761062b565b60405161021f9190611d2e565b610287610282366004611d41565b6106bd565b6040516001600160a01b03909116815260200161021f565b61023b6102ad366004611c70565b610730565b6102ba610749565b60405190815260200161021f565b61023b6102d6366004611d5a565b610759565b61023b6102e9366004611d96565b610784565b6103016102fc366004611db1565b6107c9565b604080516001600160a01b03909316835260208301919091520161021f565b6102ba610862565b61023b610336366004611c70565b61088b565b6102876daaeb6d7670e522a718067333cd4e81565b61023b61035e366004611d5a565b6109ee565b6008546001600160a01b0316610287565b610287610382366004611d41565b610a13565b6102ba610395366004611d96565b610a6b565b61023b610ad5565b61023b6103b0366004611d96565b610ae9565b60146102ba565b6006546001600160a01b0316610287565b6103d5610b2b565b6040805193845260208401929092529082015260600161021f565b610267610b67565b61023b610406366004611de1565b610b76565b61023b610419366004611e99565b610b8a565b61026761042c366004611d41565b610bb7565b61023b61043f366004611f35565b610c19565b600a546102ba565b61021361045a366004611f99565b610c8c565b61023b61046d366004611d96565b610cba565b6007546001600160a01b0316610287565b61023b610491366004611d96565b610d22565b6011546001600160a01b0316610287565b60006001600160e01b031982166380ac58cd60e01b14806104cc57506104cc82610dad565b92915050565b336104e56008546001600160a01b031690565b6001600160a01b0316146105405760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064015b60405180910390fd5b61054a8282610dd2565b5050565b610556611bb8565b600080610561611bb8565b6001600160a01b0386166000908152600e6020526040812054600190825b601481101561061c5760006105948a83611fe2565b9050828110156105eb576001600160a01b038b166000908152600c602090815260408083208484529091529020548683601481106105d4576105d4611ff5565b6020020152846105e38161200b565b955050610609565b60008683601481106105ff576105ff611ff5565b6020020152600093505b50806106148161200b565b91505061057f565b50929891975095509350505050565b60606000805461063a90612024565b80601f016020809104026020016040519081016040528092919081815260200182805461066690612024565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050905090565b6000818152600b60205260408120546001600160a01b03166107145760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081d1bdad95b88125160821b6044820152606401610537565b506000908152600f60205260409020546001600160a01b031690565b8161073a81610eab565b6107448383610f64565b505050565b600061075460095490565b905090565b826001600160a01b03811633146107735761077333610eab565b61077e848484611042565b50505050565b336107976007546001600160a01b031690565b6001600160a01b0316146107bd5760405162461bcd60e51b81526004016105379061205e565b6107c6816110a3565b50565b60055460009081906001600160a01b03166107e95750309050600061085b565b600554600160a01b90046001600160601b03161580610806575082155b156108205750506005546001600160a01b0316600061085b565b6005546001600160a01b038116906127109061084c90600160a01b90046001600160601b031686612095565b61085691906120c2565b915091505b9250929050565b600061086d60095490565b600a541161087b5750600090565b600954600a5461075491906120d6565b338061089f6008546001600160a01b031690565b6001600160a01b031614806108c157506011546001600160a01b038281169116145b6108fe5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b6044820152606401610537565b6002600454036109505760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610537565b6002600455600a548261096260095490565b61096c9190611fe2565b11156109ac5760405162461bcd60e51b815260206004820152600f60248201526e6f766572206d617820737570706c7960881b6044820152606401610537565b81156109e4576109c0600980546001019055565b6109d2836109cd60095490565b61116f565b816109dc816120e9565b9250506109ac565b5050600160045550565b826001600160a01b0381163314610a0857610a0833610eab565b61077e848484611189565b6000818152600b60205260408120546001600160a01b0316806104cc5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081d1bdad95b88125160821b6044820152606401610537565b60006001600160a01b038216610ab95760405162461bcd60e51b815260206004820152601360248201527234b73b30b634b2103a37b5b2b71037bbb732b960691b6044820152606401610537565b506001600160a01b03166000908152600e602052604090205490565b610add6111a4565b610ae760006111fe565b565b33610afc6007546001600160a01b031690565b6001600160a01b031614610b225760405162461bcd60e51b81526004016105379061205e565b6107c681611250565b600080600080610b3a60095490565b90506000600a54821015610b595781600a54610b5691906120d6565b90505b600a54919591945092509050565b60606001805461063a90612024565b81610b8081610eab565b6107448383611319565b836001600160a01b0381163314610ba457610ba433610eab565b610bb085858585611324565b5050505050565b6000818152600b60205260409020546060906001600160a01b0316610c105760405162461bcd60e51b815260206004820152600f60248201526e3737ba1032bc34b9ba103a37b5b2b760891b6044820152606401610537565b6104cc82611357565b33610c2c6008546001600160a01b031690565b6001600160a01b031614610c825760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610537565b61054a828261138e565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205460ff1690565b33610ccd6007546001600160a01b031690565b6001600160a01b031614610cf35760405162461bcd60e51b81526004016105379061205e565b6001600160a01b038116610d195760405162461bcd60e51b815260040161053790612100565b6107c6816111fe565b33610d356007546001600160a01b031690565b6001600160a01b031614610d5b5760405162461bcd60e51b81526004016105379061205e565b601180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f390d2170996051a898885b38ca13748db8b80b90f248541f45d50c2193a6a8ce90600090a35050565b60006001600160e01b0319821663152a902d60e11b14806104cc57506104cc826113e7565b6127106001600160601b0382161115610e2d5760405162461bcd60e51b815260206004820152601e60248201527f6672616374696f6e2077696c6c206578636565642073616c65507269636500006044820152606401610537565b600580546001600160601b03838116600160a01b9081026001600160a01b03878116828117968790556040805185880487168082529590980490951660208801529481169592949116179184917f377771b065820b92da881172b82977e2307a6fec324ffc92fe26bbbae0ad42f8910160405180910390a350505050565b6daaeb6d7670e522a718067333cd4e3b156107c657604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c9190612129565b6107c657604051633b79c77360e21b81526001600160a01b0382166004820152602401610537565b6000610f6f82610a13565b9050806001600160a01b0316836001600160a01b031603610fd25760405162461bcd60e51b815260206004820152601f60248201527f63616e277420617070726f76616c20746f2063757272656e74206f776e6572006044820152606401610537565b336001600160a01b0382161461103857610fec8133610c8c565b6110385760405162461bcd60e51b815260206004820152601f60248201527f6f776e6572206973206e6f742073656e646572206f72206f70657261746f72006044820152606401610537565b610744838361141c565b61104c338261148a565b6110985760405162461bcd60e51b815260206004820152601a60248201527f6d75737420626520617070726f76656420666f7220746f6b656e0000000000006044820152606401610537565b6107448383836114e9565b6001600160a01b0381166110c95760405162461bcd60e51b815260040161053790612100565b6008546001600160a01b039081169082160361111d5760405162461bcd60e51b81526020600482015260136024820152723737ba1031b430b733b29037b832b930ba37b960691b6044820152606401610537565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed90600090a35050565b61054a828260405180602001604052806000815250611604565b61074483838360405180602001604052806000815250610b8a565b6006546001600160a01b03163314610ae75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610537565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166112765760405162461bcd60e51b815260040161053790612100565b6007546001600160a01b03908116908216036112c75760405162461bcd60e51b815260206004820152601060248201526f3737ba1031b430b733b29030b236b4b760811b6044820152606401610537565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a35050565b61054a338383611637565b61132f848484610759565b61133b848484846116f9565b61077e5760405162461bcd60e51b815260040161053790612146565b60606002611364836117fa565b6003604051602001611378939291906121f0565b6040516020818303038152906040529050919050565b600261139a8382612271565b5060036113a78282612271565b507f34096664059c7d0b551b98d4585f6566d0a87a93bb8f5a23b1e5fdace3e32673600260036040516113db9291906123ae565b60405180910390a15050565b60006001600160e01b03198216635b5e139f60e01b14806104cc57506301ffc9a760e01b6001600160e01b03198316146104cc565b6000818152600f6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061145182610a13565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061149683610a13565b9050806001600160a01b0316846001600160a01b031614806114bd57506114bd8185610c8c565b806114e15750836001600160a01b03166114d6846106bd565b6001600160a01b0316145b949350505050565b826001600160a01b03166114fc82610a13565b6001600160a01b0316146115525760405162461bcd60e51b815260206004820152601d60248201527f7472616e736665722066726f6d20696e636f7272656374206f776e65720000006044820152606401610537565b6001600160a01b0382166115a85760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610537565b6115b38383836118fb565b6115be60008261141c565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61160e8383611abe565b61161b60008484846116f9565b6107445760405162461bcd60e51b815260040161053790612146565b816001600160a01b0316836001600160a01b03160361168c5760405162461bcd60e51b815260206004820152601160248201527030b8383937bb32903a379031b0b63632b960791b6044820152606401610537565b6001600160a01b03838116600081815260106020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b156117ef57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061173d9033908990889088906004016123dc565b6020604051808303816000875af1925050508015611778575060408051601f3d908101601f1916820190925261177591810190612419565b60015b6117d5573d8080156117a6576040519150601f19603f3d011682016040523d82523d6000602084013e6117ab565b606091505b5080516000036117cd5760405162461bcd60e51b815260040161053790612146565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506114e1565b506001949350505050565b6060816000036118215750506040805180820190915260018152600360fc1b602082015290565b8160005b811561184b57806118358161200b565b91506118449050600a836120c2565b9150611825565b60008167ffffffffffffffff81111561186657611866611e0d565b6040519080825280601f01601f191660200182016040528015611890576020820181803683370190505b5090505b84156114e1576118a56001836120d6565b91506118b2600a86612436565b6118bd906030611fe2565b60f81b8183815181106118d2576118d2611ff5565b60200101906001600160f81b031916908160001a9053506118f4600a866120c2565b9450611894565b6001600160a01b038316156119fd57816001600160a01b0316836001600160a01b0316146119ce576001600160a01b0383166000908152600e6020526040812054611948906001906120d6565b6000838152600d602052604090205490915080821461199b576001600160a01b0385166000908152600c602090815260408083208584528252808320548484528184208190558352600d90915290208190555b506000828152600d602090815260408083208390556001600160a01b0387168352600c8252808320938352929052908120555b6001600160a01b0383166000908152600e602052604081208054600192906119f79084906120d6565b90915550505b6001600160a01b03821615611a8f57816001600160a01b0316836001600160a01b031614611a60576001600160a01b0382166000908152600e6020908152604080832054600c83528184208185528352818420859055848452600d909252909120555b6001600160a01b0382166000908152600e60205260408120805460019290611a89908490611fe2565b90915550505b6000908152600b6020526040902080546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b038216611b145760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f206164647265737300000000000000006044820152606401610537565b6000818152600b60205260409020546001600160a01b031615611b705760405162461bcd60e51b81526020600482015260146024820152731d1bdad95b88185b1c9958591e481b5a5b9d195960621b6044820152606401610537565b611b7c600083836118fb565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040518061028001604052806014906020820280368337509192915050565b6001600160e01b0319811681146107c657600080fd5b600060208284031215611bff57600080fd5b8135611c0a81611bd7565b9392505050565b80356001600160a01b0381168114611c2857600080fd5b919050565b60008060408385031215611c4057600080fd5b611c4983611c11565b915060208301356001600160601b0381168114611c6557600080fd5b809150509250929050565b60008060408385031215611c8357600080fd5b611c8c83611c11565b946020939093013593505050565b6102c08101818560005b6014811015611cc3578151835260209283019290910190600101611ca4565b505050836102808301528215156102a0830152949350505050565b60005b83811015611cf9578181015183820152602001611ce1565b50506000910152565b60008151808452611d1a816020860160208601611cde565b601f01601f19169290920160200192915050565b602081526000611c0a6020830184611d02565b600060208284031215611d5357600080fd5b5035919050565b600080600060608486031215611d6f57600080fd5b611d7884611c11565b9250611d8660208501611c11565b9150604084013590509250925092565b600060208284031215611da857600080fd5b611c0a82611c11565b60008060408385031215611dc457600080fd5b50508035926020909101359150565b80151581146107c657600080fd5b60008060408385031215611df457600080fd5b611dfd83611c11565b91506020830135611c6581611dd3565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611e3e57611e3e611e0d565b604051601f8501601f19908116603f01168101908282118183101715611e6657611e66611e0d565b81604052809350858152868686011115611e7f57600080fd5b858560208301376000602087830101525050509392505050565b60008060008060808587031215611eaf57600080fd5b611eb885611c11565b9350611ec660208601611c11565b925060408501359150606085013567ffffffffffffffff811115611ee957600080fd5b8501601f81018713611efa57600080fd5b611f0987823560208401611e23565b91505092959194509250565b600082601f830112611f2657600080fd5b611c0a83833560208501611e23565b60008060408385031215611f4857600080fd5b823567ffffffffffffffff80821115611f6057600080fd5b611f6c86838701611f15565b93506020850135915080821115611f8257600080fd5b50611f8f85828601611f15565b9150509250929050565b60008060408385031215611fac57600080fd5b611fb583611c11565b9150611fc360208401611c11565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104cc576104cc611fcc565b634e487b7160e01b600052603260045260246000fd5b60006001820161201d5761201d611fcc565b5060010190565b600181811c9082168061203857607f821691505b60208210810361205857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f63616c6c6572206973206e6f74207468652061646d696e000000000000000000604082015260600190565b80820281158282048414176104cc576104cc611fcc565b634e487b7160e01b600052601260045260246000fd5b6000826120d1576120d16120ac565b500490565b818103818111156104cc576104cc611fcc565b6000816120f8576120f8611fcc565b506000190190565b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b60006020828403121561213b57600080fd5b8151611c0a81611dd3565b6020808252601e908201527f6e6f6e20455243373231526563656976657220696d706c656d656e7465720000604082015260600190565b6000815461218a81612024565b600182811680156121a257600181146121b7576121e6565b60ff19841687528215158302870194506121e6565b8560005260208060002060005b858110156121dd5781548a8201529084019082016121c4565b50505082870194505b5050505092915050565b60006121fc828661217d565b845161220c818360208901611cde565b6122188183018661217d565b979650505050505050565b601f82111561074457600081815260208120601f850160051c8101602086101561224a5750805b601f850160051c820191505b8181101561226957828155600101612256565b505050505050565b815167ffffffffffffffff81111561228b5761228b611e0d565b61229f816122998454612024565b84612223565b602080601f8311600181146122d457600084156122bc5750858301515b600019600386901b1c1916600185901b178555612269565b600085815260208120601f198616915b82811015612303578886015182559484019460019091019084016122e4565b50858210156123215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000815461233e81612024565b80855260206001838116801561235b5760018114612375576123a3565b60ff1985168884015283151560051b8801830195506123a3565b866000528260002060005b8581101561239b5781548a8201860152908301908401612380565b890184019650505b505050505092915050565b6040815260006123c16040830185612331565b82810360208401526123d38185612331565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061240f90830184611d02565b9695505050505050565b60006020828403121561242b57600080fd5b8151611c0a81611bd7565b600082612445576124456120ac565b50069056fea2646970667358221220a29ee808a16e86defa36d952fe7f0bcad4d7761ed5df8b55a546ec54a7bb0c6f64736f6c63430008110033
60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b19d9d9d9d9d4dada5b93919560a21b8152506040518060400160405280600981526020016823a3a3a3a3a9a5a4a760b91b815250600080610d806040518060200160405280600081525060405180602001604052806000815250733cc6cdda760b79bafa08df41ecfa224f810dceb66001888888888888888484888885858360009081620000b4919062000688565b506001620000c3848262000688565b50620000d0828262000268565b5050600160045550620000e690508282620002c7565b50620000f4905033620003a6565b620000ff33620003f8565b6200010a33620004e7565b5050600a555050506daaeb6d7670e522a718067333cd4e3b15905062000259578015620001a757604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200018857600080fd5b505af11580156200019d573d6000803e3d6000fd5b5050505062000259565b6001600160a01b03821615620001f85760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af2903906044016200016d565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b1580156200023f57600080fd5b505af115801562000254573d6000803e3d6000fd5b505050505b5050505050505050506200080b565b600262000276838262000688565b50600362000285828262000688565b507f34096664059c7d0b551b98d4585f6566d0a87a93bb8f5a23b1e5fdace3e3267360026003604051620002bb929190620007d9565b60405180910390a15050565b6127106001600160601b0382161115620003285760405162461bcd60e51b815260206004820152601e60248201527f6672616374696f6e2077696c6c206578636565642073616c655072696365000060448201526064015b60405180910390fd5b600580546001600160601b03838116600160a01b9081026001600160a01b03878116828117968790556040805185880487168082529590980490951660208801529481169592949116179184917f377771b065820b92da881172b82977e2307a6fec324ffc92fe26bbbae0ad42f8910160405180910390a350505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116620004425760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b60448201526064016200031f565b6007546001600160a01b0390811690821603620004955760405162461bcd60e51b815260206004820152601060248201526f3737ba1031b430b733b29030b236b4b760811b60448201526064016200031f565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a35050565b6001600160a01b038116620005315760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b60448201526064016200031f565b6008546001600160a01b0390811690821603620005915760405162461bcd60e51b815260206004820152601360248201527f6e6f74206368616e6765206f70657261746f720000000000000000000000000060448201526064016200031f565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed90600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060e57607f821691505b6020821081036200062f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068357600081815260208120601f850160051c810160208610156200065e5750805b601f850160051c820191505b818110156200067f578281556001016200066a565b5050505b505050565b81516001600160401b03811115620006a457620006a4620005e3565b620006bc81620006b58454620005f9565b8462000635565b602080601f831160018114620006f45760008415620006db5750858301515b600019600386901b1c1916600185901b1785556200067f565b600085815260208120601f198616915b82811015620007255788860151825594840194600190910190840162000704565b5085821015620007445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600081546200076381620005f9565b8085526020600183811680156200078357600181146200079e57620007ce565b60ff1985168884015283151560051b880183019550620007ce565b866000528260002060005b85811015620007c65781548a8201860152908301908401620007a9565b890184019650505b505050505092915050565b604081526000620007ee604083018562000754565b828103602084015262000802818562000754565b95945050505050565b612480806200081b6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063b88d4fde116100ad578063e985e9c51161007c578063e985e9c51461044c578063f2fde38b1461045f578063f851a44014610472578063f8fb491f14610483578063fffe088d1461049657600080fd5b8063b88d4fde1461040b578063c87b56dd1461041e578063d48ede9914610431578063d5abeb011461044457600080fd5b80638da5cb5b116100e95780638da5cb5b146103bc5780638efa8874146103cd57806395d89b41146103f0578063a22cb465146103f857600080fd5b806370a0823114610387578063715018a61461039a57806375829def146103a25780637b504b45146103b557600080fd5b806329605e771161019257806341f434341161016157806341f434341461033b57806342842e0e14610350578063570ca735146103635780636352211e1461037457600080fd5b806329605e77146102db5780632a55205a146102ee5780633f5a31521461032057806340c10f191461032857600080fd5b8063081812fc116101ce578063081812fc14610274578063095ea7b31461029f57806318160ddd146102b257806323b872dd146102c857600080fd5b806301ffc9a71461020057806302fa7c471461022857806303fac3c31461023d57806306fdde031461025f575b600080fd5b61021361020e366004611bed565b6104a7565b60405190151581526020015b60405180910390f35b61023b610236366004611c2d565b6104d2565b005b61025061024b366004611c70565b61054e565b60405161021f93929190611c9a565b61026761062b565b60405161021f9190611d2e565b610287610282366004611d41565b6106bd565b6040516001600160a01b03909116815260200161021f565b61023b6102ad366004611c70565b610730565b6102ba610749565b60405190815260200161021f565b61023b6102d6366004611d5a565b610759565b61023b6102e9366004611d96565b610784565b6103016102fc366004611db1565b6107c9565b604080516001600160a01b03909316835260208301919091520161021f565b6102ba610862565b61023b610336366004611c70565b61088b565b6102876daaeb6d7670e522a718067333cd4e81565b61023b61035e366004611d5a565b6109ee565b6008546001600160a01b0316610287565b610287610382366004611d41565b610a13565b6102ba610395366004611d96565b610a6b565b61023b610ad5565b61023b6103b0366004611d96565b610ae9565b60146102ba565b6006546001600160a01b0316610287565b6103d5610b2b565b6040805193845260208401929092529082015260600161021f565b610267610b67565b61023b610406366004611de1565b610b76565b61023b610419366004611e99565b610b8a565b61026761042c366004611d41565b610bb7565b61023b61043f366004611f35565b610c19565b600a546102ba565b61021361045a366004611f99565b610c8c565b61023b61046d366004611d96565b610cba565b6007546001600160a01b0316610287565b61023b610491366004611d96565b610d22565b6011546001600160a01b0316610287565b60006001600160e01b031982166380ac58cd60e01b14806104cc57506104cc82610dad565b92915050565b336104e56008546001600160a01b031690565b6001600160a01b0316146105405760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064015b60405180910390fd5b61054a8282610dd2565b5050565b610556611bb8565b600080610561611bb8565b6001600160a01b0386166000908152600e6020526040812054600190825b601481101561061c5760006105948a83611fe2565b9050828110156105eb576001600160a01b038b166000908152600c602090815260408083208484529091529020548683601481106105d4576105d4611ff5565b6020020152846105e38161200b565b955050610609565b60008683601481106105ff576105ff611ff5565b6020020152600093505b50806106148161200b565b91505061057f565b50929891975095509350505050565b60606000805461063a90612024565b80601f016020809104026020016040519081016040528092919081815260200182805461066690612024565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050905090565b6000818152600b60205260408120546001600160a01b03166107145760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081d1bdad95b88125160821b6044820152606401610537565b506000908152600f60205260409020546001600160a01b031690565b8161073a81610eab565b6107448383610f64565b505050565b600061075460095490565b905090565b826001600160a01b03811633146107735761077333610eab565b61077e848484611042565b50505050565b336107976007546001600160a01b031690565b6001600160a01b0316146107bd5760405162461bcd60e51b81526004016105379061205e565b6107c6816110a3565b50565b60055460009081906001600160a01b03166107e95750309050600061085b565b600554600160a01b90046001600160601b03161580610806575082155b156108205750506005546001600160a01b0316600061085b565b6005546001600160a01b038116906127109061084c90600160a01b90046001600160601b031686612095565b61085691906120c2565b915091505b9250929050565b600061086d60095490565b600a541161087b5750600090565b600954600a5461075491906120d6565b338061089f6008546001600160a01b031690565b6001600160a01b031614806108c157506011546001600160a01b038281169116145b6108fe5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b6044820152606401610537565b6002600454036109505760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610537565b6002600455600a548261096260095490565b61096c9190611fe2565b11156109ac5760405162461bcd60e51b815260206004820152600f60248201526e6f766572206d617820737570706c7960881b6044820152606401610537565b81156109e4576109c0600980546001019055565b6109d2836109cd60095490565b61116f565b816109dc816120e9565b9250506109ac565b5050600160045550565b826001600160a01b0381163314610a0857610a0833610eab565b61077e848484611189565b6000818152600b60205260408120546001600160a01b0316806104cc5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081d1bdad95b88125160821b6044820152606401610537565b60006001600160a01b038216610ab95760405162461bcd60e51b815260206004820152601360248201527234b73b30b634b2103a37b5b2b71037bbb732b960691b6044820152606401610537565b506001600160a01b03166000908152600e602052604090205490565b610add6111a4565b610ae760006111fe565b565b33610afc6007546001600160a01b031690565b6001600160a01b031614610b225760405162461bcd60e51b81526004016105379061205e565b6107c681611250565b600080600080610b3a60095490565b90506000600a54821015610b595781600a54610b5691906120d6565b90505b600a54919591945092509050565b60606001805461063a90612024565b81610b8081610eab565b6107448383611319565b836001600160a01b0381163314610ba457610ba433610eab565b610bb085858585611324565b5050505050565b6000818152600b60205260409020546060906001600160a01b0316610c105760405162461bcd60e51b815260206004820152600f60248201526e3737ba1032bc34b9ba103a37b5b2b760891b6044820152606401610537565b6104cc82611357565b33610c2c6008546001600160a01b031690565b6001600160a01b031614610c825760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610537565b61054a828261138e565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205460ff1690565b33610ccd6007546001600160a01b031690565b6001600160a01b031614610cf35760405162461bcd60e51b81526004016105379061205e565b6001600160a01b038116610d195760405162461bcd60e51b815260040161053790612100565b6107c6816111fe565b33610d356007546001600160a01b031690565b6001600160a01b031614610d5b5760405162461bcd60e51b81526004016105379061205e565b601180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f390d2170996051a898885b38ca13748db8b80b90f248541f45d50c2193a6a8ce90600090a35050565b60006001600160e01b0319821663152a902d60e11b14806104cc57506104cc826113e7565b6127106001600160601b0382161115610e2d5760405162461bcd60e51b815260206004820152601e60248201527f6672616374696f6e2077696c6c206578636565642073616c65507269636500006044820152606401610537565b600580546001600160601b03838116600160a01b9081026001600160a01b03878116828117968790556040805185880487168082529590980490951660208801529481169592949116179184917f377771b065820b92da881172b82977e2307a6fec324ffc92fe26bbbae0ad42f8910160405180910390a350505050565b6daaeb6d7670e522a718067333cd4e3b156107c657604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c9190612129565b6107c657604051633b79c77360e21b81526001600160a01b0382166004820152602401610537565b6000610f6f82610a13565b9050806001600160a01b0316836001600160a01b031603610fd25760405162461bcd60e51b815260206004820152601f60248201527f63616e277420617070726f76616c20746f2063757272656e74206f776e6572006044820152606401610537565b336001600160a01b0382161461103857610fec8133610c8c565b6110385760405162461bcd60e51b815260206004820152601f60248201527f6f776e6572206973206e6f742073656e646572206f72206f70657261746f72006044820152606401610537565b610744838361141c565b61104c338261148a565b6110985760405162461bcd60e51b815260206004820152601a60248201527f6d75737420626520617070726f76656420666f7220746f6b656e0000000000006044820152606401610537565b6107448383836114e9565b6001600160a01b0381166110c95760405162461bcd60e51b815260040161053790612100565b6008546001600160a01b039081169082160361111d5760405162461bcd60e51b81526020600482015260136024820152723737ba1031b430b733b29037b832b930ba37b960691b6044820152606401610537565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed90600090a35050565b61054a828260405180602001604052806000815250611604565b61074483838360405180602001604052806000815250610b8a565b6006546001600160a01b03163314610ae75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610537565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166112765760405162461bcd60e51b815260040161053790612100565b6007546001600160a01b03908116908216036112c75760405162461bcd60e51b815260206004820152601060248201526f3737ba1031b430b733b29030b236b4b760811b6044820152606401610537565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a35050565b61054a338383611637565b61132f848484610759565b61133b848484846116f9565b61077e5760405162461bcd60e51b815260040161053790612146565b60606002611364836117fa565b6003604051602001611378939291906121f0565b6040516020818303038152906040529050919050565b600261139a8382612271565b5060036113a78282612271565b507f34096664059c7d0b551b98d4585f6566d0a87a93bb8f5a23b1e5fdace3e32673600260036040516113db9291906123ae565b60405180910390a15050565b60006001600160e01b03198216635b5e139f60e01b14806104cc57506301ffc9a760e01b6001600160e01b03198316146104cc565b6000818152600f6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061145182610a13565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061149683610a13565b9050806001600160a01b0316846001600160a01b031614806114bd57506114bd8185610c8c565b806114e15750836001600160a01b03166114d6846106bd565b6001600160a01b0316145b949350505050565b826001600160a01b03166114fc82610a13565b6001600160a01b0316146115525760405162461bcd60e51b815260206004820152601d60248201527f7472616e736665722066726f6d20696e636f7272656374206f776e65720000006044820152606401610537565b6001600160a01b0382166115a85760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610537565b6115b38383836118fb565b6115be60008261141c565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61160e8383611abe565b61161b60008484846116f9565b6107445760405162461bcd60e51b815260040161053790612146565b816001600160a01b0316836001600160a01b03160361168c5760405162461bcd60e51b815260206004820152601160248201527030b8383937bb32903a379031b0b63632b960791b6044820152606401610537565b6001600160a01b03838116600081815260106020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b156117ef57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061173d9033908990889088906004016123dc565b6020604051808303816000875af1925050508015611778575060408051601f3d908101601f1916820190925261177591810190612419565b60015b6117d5573d8080156117a6576040519150601f19603f3d011682016040523d82523d6000602084013e6117ab565b606091505b5080516000036117cd5760405162461bcd60e51b815260040161053790612146565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506114e1565b506001949350505050565b6060816000036118215750506040805180820190915260018152600360fc1b602082015290565b8160005b811561184b57806118358161200b565b91506118449050600a836120c2565b9150611825565b60008167ffffffffffffffff81111561186657611866611e0d565b6040519080825280601f01601f191660200182016040528015611890576020820181803683370190505b5090505b84156114e1576118a56001836120d6565b91506118b2600a86612436565b6118bd906030611fe2565b60f81b8183815181106118d2576118d2611ff5565b60200101906001600160f81b031916908160001a9053506118f4600a866120c2565b9450611894565b6001600160a01b038316156119fd57816001600160a01b0316836001600160a01b0316146119ce576001600160a01b0383166000908152600e6020526040812054611948906001906120d6565b6000838152600d602052604090205490915080821461199b576001600160a01b0385166000908152600c602090815260408083208584528252808320548484528184208190558352600d90915290208190555b506000828152600d602090815260408083208390556001600160a01b0387168352600c8252808320938352929052908120555b6001600160a01b0383166000908152600e602052604081208054600192906119f79084906120d6565b90915550505b6001600160a01b03821615611a8f57816001600160a01b0316836001600160a01b031614611a60576001600160a01b0382166000908152600e6020908152604080832054600c83528184208185528352818420859055848452600d909252909120555b6001600160a01b0382166000908152600e60205260408120805460019290611a89908490611fe2565b90915550505b6000908152600b6020526040902080546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b038216611b145760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f206164647265737300000000000000006044820152606401610537565b6000818152600b60205260409020546001600160a01b031615611b705760405162461bcd60e51b81526020600482015260146024820152731d1bdad95b88185b1c9958591e481b5a5b9d195960621b6044820152606401610537565b611b7c600083836118fb565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040518061028001604052806014906020820280368337509192915050565b6001600160e01b0319811681146107c657600080fd5b600060208284031215611bff57600080fd5b8135611c0a81611bd7565b9392505050565b80356001600160a01b0381168114611c2857600080fd5b919050565b60008060408385031215611c4057600080fd5b611c4983611c11565b915060208301356001600160601b0381168114611c6557600080fd5b809150509250929050565b60008060408385031215611c8357600080fd5b611c8c83611c11565b946020939093013593505050565b6102c08101818560005b6014811015611cc3578151835260209283019290910190600101611ca4565b505050836102808301528215156102a0830152949350505050565b60005b83811015611cf9578181015183820152602001611ce1565b50506000910152565b60008151808452611d1a816020860160208601611cde565b601f01601f19169290920160200192915050565b602081526000611c0a6020830184611d02565b600060208284031215611d5357600080fd5b5035919050565b600080600060608486031215611d6f57600080fd5b611d7884611c11565b9250611d8660208501611c11565b9150604084013590509250925092565b600060208284031215611da857600080fd5b611c0a82611c11565b60008060408385031215611dc457600080fd5b50508035926020909101359150565b80151581146107c657600080fd5b60008060408385031215611df457600080fd5b611dfd83611c11565b91506020830135611c6581611dd3565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611e3e57611e3e611e0d565b604051601f8501601f19908116603f01168101908282118183101715611e6657611e66611e0d565b81604052809350858152868686011115611e7f57600080fd5b858560208301376000602087830101525050509392505050565b60008060008060808587031215611eaf57600080fd5b611eb885611c11565b9350611ec660208601611c11565b925060408501359150606085013567ffffffffffffffff811115611ee957600080fd5b8501601f81018713611efa57600080fd5b611f0987823560208401611e23565b91505092959194509250565b600082601f830112611f2657600080fd5b611c0a83833560208501611e23565b60008060408385031215611f4857600080fd5b823567ffffffffffffffff80821115611f6057600080fd5b611f6c86838701611f15565b93506020850135915080821115611f8257600080fd5b50611f8f85828601611f15565b9150509250929050565b60008060408385031215611fac57600080fd5b611fb583611c11565b9150611fc360208401611c11565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104cc576104cc611fcc565b634e487b7160e01b600052603260045260246000fd5b60006001820161201d5761201d611fcc565b5060010190565b600181811c9082168061203857607f821691505b60208210810361205857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f63616c6c6572206973206e6f74207468652061646d696e000000000000000000604082015260600190565b80820281158282048414176104cc576104cc611fcc565b634e487b7160e01b600052601260045260246000fd5b6000826120d1576120d16120ac565b500490565b818103818111156104cc576104cc611fcc565b6000816120f8576120f8611fcc565b506000190190565b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b60006020828403121561213b57600080fd5b8151611c0a81611dd3565b6020808252601e908201527f6e6f6e20455243373231526563656976657220696d706c656d656e7465720000604082015260600190565b6000815461218a81612024565b600182811680156121a257600181146121b7576121e6565b60ff19841687528215158302870194506121e6565b8560005260208060002060005b858110156121dd5781548a8201529084019082016121c4565b50505082870194505b5050505092915050565b60006121fc828661217d565b845161220c818360208901611cde565b6122188183018661217d565b979650505050505050565b601f82111561074457600081815260208120601f850160051c8101602086101561224a5750805b601f850160051c820191505b8181101561226957828155600101612256565b505050505050565b815167ffffffffffffffff81111561228b5761228b611e0d565b61229f816122998454612024565b84612223565b602080601f8311600181146122d457600084156122bc5750858301515b600019600386901b1c1916600185901b178555612269565b600085815260208120601f198616915b82811015612303578886015182559484019460019091019084016122e4565b50858210156123215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000815461233e81612024565b80855260206001838116801561235b5760018114612375576123a3565b60ff1985168884015283151560051b8801830195506123a3565b866000528260002060005b8581101561239b5781548a8201860152908301908401612380565b890184019650505b505050505092915050565b6040815260006123c16040830185612331565b82810360208401526123d38185612331565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061240f90830184611d02565b9695505050505050565b60006020828403121561242b57600080fd5b8151611c0a81611bd7565b600082612445576124456120ac565b50069056fea2646970667358221220a29ee808a16e86defa36d952fe7f0bcad4d7761ed5df8b55a546ec54a7bb0c6f64736f6c63430008110033