[ { "inputs": [ { "internalType": "contract IERC20", "name": "_paymentToken", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_admin", "type": "address" }, { "internalType": "uint256", "name": "_commissionRate", "type": "uint256" }, { "internalType": "uint256", "name": "_royaltiesCommissionRate", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint8", "name": "_whoCanMint", "type": "uint8" }, { "internalType": "string", "name": "uri", "type": "string" } ], "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": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "qty", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "Bid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Buy", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "CancelBid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "CancelSale", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Commission", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "LazyMint", "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Royalty", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "qty", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "Sell", "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": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "qty", "type": "uint256" } ], "name": "acceptBid", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "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": "amount", "type": "uint256" } ], "name": "autoMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "autoMintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "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": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "qty", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "bid", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "qty", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "canIMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "cancelBid", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "cancelSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "commissionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "creators", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "domainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "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": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "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": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "openOffers", "outputs": [ { "internalType": "uint256", "name": "qty", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "openOffersLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "openSales", "outputs": [ { "internalType": "uint256", "name": "qty", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "openSalesLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paymentToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "nftPostId", "type": "uint256" }, { "internalType": "uint256", "name": "qty", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "collectionId", "type": "uint256" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "author", "type": "address" }, { "internalType": "uint256", "name": "salt", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "uint256", "name": "qtyToMint", "type": "uint256" } ], "name": "redeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltiesCommissionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "qty", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "sell", "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": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_admin", "type": "address" }, { "internalType": "uint256", "name": "_commissionRate", "type": "uint256" }, { "internalType": "uint256", "name": "_royaltiesCommissionRate", "type": "uint256" }, { "internalType": "uint8", "name": "_whoCanMint", "type": "uint8" }, { "internalType": "contract IERC20", "name": "_paymentToken", "type": "address" } ], "name": "updateAdmin", "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": "uint256", "name": "", "type": "uint256" } ], "name": "vouchersMintedQty", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "vouchersNFTIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whoCanMint", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" } ]
6101206040523480156200001257600080fd5b506040516200505e3803806200505e833981016040819052620000359162000600565b6040518060400160405280601681526020017f45524331313535496b6173756d692d566f756368657200000000000000000000815250604051806040016040528060018152602001603160f81b8152508a8a8a8a8a8a8a8a8a878185858583620000ae620000a8620002a660201b60201c565b620002aa565b620000b981620002fa565b50620000c760008662000313565b620000f37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68662000313565b620000fe856200031f565b82516200011390600690602086019062000478565b5081516200012990600790602085019062000478565b506009805460ff191660ff9290921691909117905550506001600b555060649050620001568688620006ee565b10620001cf5760405162461bcd60e51b815260206004820152603360248201527f496b6173756d693a20746f74616c20636f6d6d697373696f6e732073686f756c60448201527f64206265206c6f776572207468616e203130300000000000000000000000000060648201526084015b60405180910390fd5b5050600c80546001600160a01b039687166001600160a01b031991821617909155600e949094555050600f55600d80549490921693169290921790915550815160209283012081519183019190912060c082815260e08290524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818901819052818301979097526060810195909552608080860193909352308583015280518086039092018252939092019092528051930192909220909152610100525062000766975050505050505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516200030f90600490602084019062000478565b5050565b6200030f8282620003f0565b6000546001600160a01b031633146200037b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001c6565b6001600160a01b038116620003e25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620001c6565b620003ed81620002aa565b50565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff166200030f5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b828054620004869062000713565b90600052602060002090601f016020900481019282620004aa5760008555620004f5565b82601f10620004c557805160ff1916838001178555620004f5565b82800160010185558215620004f5579182015b82811115620004f5578251825591602001919060010190620004d8565b506200050392915062000507565b5090565b5b8082111562000503576000815560010162000508565b80516001600160a01b03811681146200053657600080fd5b919050565b600082601f8301126200054c578081fd5b81516001600160401b038082111562000569576200056962000750565b604051601f8301601f19908116603f0116810190828211818310171562000594576200059462000750565b81604052838152602092508683858801011115620005b0578485fd5b8491505b83821015620005d35785820183015181830184015290820190620005b4565b83821115620005e457848385830101525b9695505050505050565b805160ff811681146200053657600080fd5b60008060008060008060008060006101208a8c0312156200061f578485fd5b6200062a8a6200051e565b98506200063a60208b016200051e565b97506200064a60408b016200051e565b60608b015160808c015160a08d015192995090975095506001600160401b038082111562000676578586fd5b620006848d838e016200053b565b955060c08c01519150808211156200069a578485fd5b620006a88d838e016200053b565b9450620006b860e08d01620005ee565b93506101008c0151915080821115620006cf578283fd5b50620006de8c828d016200053b565b9150509295985092959850929598565b600082198211156200070e57634e487b7160e01b81526011600452602481fd5b500190565b600181811c908216806200072857607f821691505b602082108114156200074a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160e051610100516148b3620007ab6000396000612d0101526000612d5001526000612d2b01526000612caf01526000612cd801526148b36000f3fe608060405234801561001057600080fd5b50600436106102f05760003560e01c8063731133e91161019d578063bd85b039116100e9578063dc234f5a116100a2578063f242432a1161007c578063f242432a1461078d578063f2fde38b146107a0578063f698da25146107b3578063f851a440146107bb57600080fd5b8063dc234f5a1461071e578063e22b862c14610731578063e985e9c51461075157600080fd5b8063bd85b0391461065b578063cd53d08e1461067b578063ce15d87c146106a4578063d1389512146106c4578063d5391393146106e4578063d547741f1461070b57600080fd5b806395d89b4111610156578063a217fddf11610130578063a217fddf1461061a578063a22cb46514610622578063a2d0d02914610635578063aa271e1a1461064857600080fd5b806395d89b41146105ec578063983b2d56146105f45780639fa6b40c1461060757600080fd5b8063731133e9146105295780637447298f1461053c578063745e96d71461057357806380149609146105865780638da5cb5b146105c857806391d14854146105d957600080fd5b80633408e4701161025c5780634c2decc0116102155780635478e770116101ef5780635478e770146104e557806356bee561146104f85780635ea1d6f814610518578063715018a61461052157600080fd5b80634c2decc0146104845780634e1273f4146104a35780634f558e79146104c357600080fd5b80633408e4701461042957806336568abe1461042f578063373f68d11461044257806340993b261461044b5780634b3936051461045e5780634c22ce0b1461047157600080fd5b80631f7fdffa116102ae5780631f7fdffa1461038e578063248a9ca3146103a15780632ac9bf09146103c55780632eb2c2d6146103d85780632f2ff15d146103eb5780633013ce29146103fe57600080fd5b8062fdd58e146102f557806301ffc9a71461031b57806306fdde031461033e5780630948e8461461035357806309d0ffa8146103685780630e89341c1461037b575b600080fd5b610308610303366004613e7f565b6107ce565b6040519081526020015b60405180910390f35b61032e61032936600461407b565b610867565b6040519015158152602001610312565b610346610878565b60405161031291906143f9565b610366610361366004613efe565b61090a565b005b6103666103763660046140b3565b6109f8565b61034661038936600461403f565b610b33565b61036661039c366004613dbc565b610bc7565b6103086103af36600461403f565b6000908152600160208190526040909120015490565b6103666103d33660046140d4565b610bff565b6103666103e6366004613c60565b610e46565b6103666103f9366004614057565b610edd565b600d54610411906001600160a01b031681565b6040516001600160a01b039091168152602001610312565b46610308565b61036661043d366004614057565b610f09565b610308600f5481565b6103666104593660046140d4565b610f87565b61036661046c3660046140b3565b61120a565b61036661047f366004613d6f565b611418565b6009546104919060ff1681565b60405160ff9091168152602001610312565b6104b66104b1366004613f61565b6114b4565b60405161031291906143b8565b61032e6104d136600461403f565b600090815260056020526040902054151590565b61032e6104f336600461403f565b611615565b61030861050636600461403f565b60136020526000908152604090205481565b610308600e5481565b61036661168b565b610366610537366004613eaa565b6116c1565b61054f61054a3660046140b3565b6116f3565b6040805193845260208401929092526001600160a01b031690820152606001610312565b610308610581366004613e7f565b61173e565b6105996105943660046140b3565b6117a0565b6040805194855260208501939093526001600160a01b0391821692840192909252166060820152608001610312565b6000546001600160a01b0316610411565b61032e6105e7366004614057565b6117f3565b61034661181e565b610366610602366004613c0c565b61182d565b61036661061536600461413f565b611880565b610308600081565b610366610630366004613e52565b611b78565b6103666106433660046140d4565b611c4f565b61032e610656366004613c0c565b611ec6565b61030861066936600461403f565b60009081526005602052604090205490565b61041161068936600461403f565b600a602052600090815260409020546001600160a01b031681565b6103086106b236600461403f565b60156020526000908152604090205481565b6103086106d236600461403f565b60116020526000908152604090205481565b6103087f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610366610719366004614057565b611ef2565b61036661072c3660046140ff565b611f19565b61030861073f36600461403f565b60146020526000908152604090205481565b61032e61075f366004613c28565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b61036661079b366004613d09565b6120a1565b6103666107ae366004613c0c565b612128565b6103086121c0565b600c54610411906001600160a01b031681565b60006001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b5060009081526002602090815260408083206001600160a01b03949094168352929052205490565b6000610872826121cf565b92915050565b606060068054610887906146f6565b80601f01602080910402602001604051908101604052809291908181526020018280546108b3906146f6565b80156109005780601f106108d557610100808354040283529160200191610900565b820191906000526020600020905b8154815290600101906020018083116108e357829003601f168201915b5050505050905090565b6000546001600160a01b031633146109345760405162461bcd60e51b8152600401610836906144e3565b60646109408486614645565b106109a95760405162461bcd60e51b815260206004820152603360248201527f496b6173756d693a20746f74616c20636f6d6d697373696f6e732073686f756c604482015272064206265206c6f776572207468616e2031303606c1b6064820152608401610836565b600c80546001600160a01b039687166001600160a01b031991821617909155600e94909455600f929092556009805460ff90921660ff19909216919091179055600d8054919093169116179055565b6000828152601060205260409020805433919083908110610a2957634e487b7160e01b600052603260045260246000fd5b60009182526020909120600260049092020101546001600160a01b031614610ab25760405162461bcd60e51b815260206004820152603660248201527f496b6173756d693a206f6e6c7920746865206f726967696e616c2073656c6c65604482015275722063616e2063616e63656c206869732073616c657360501b6064820152608401610836565b6000828152601060205260408120805483908110610ae057634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160000181905550817f62f362ec9f7b9b102a4244ce20b4b58f82ab3e1a2c681c73637a4a7cf91cb78582604051610b2791815260200190565b60405180910390a25050565b606060048054610b42906146f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6e906146f6565b8015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b820191906000526020600020905b815481529060010190602001808311610b9e57829003601f168201915b50505050509050919050565b610bd16000611615565b610bed5760405162461bcd60e51b815260040161083690614560565b610bf98484848461220f565b50505050565b6002600b541415610c225760405162461bcd60e51b8152600401610836906145eb565b6002600b5581610c745760405162461bcd60e51b815260206004820181905260248201527f496b736173756d693a207174792068617320746f20626520706f7369746976656044820152606401610836565b60008111610ccf5760405162461bcd60e51b815260206004820152602260248201527f496b736173756d693a2070726963652068617320746f20626520706f73697469604482015261766560f01b6064820152608401610836565b600083815260056020526040902054821115610d395760405162461bcd60e51b815260206004820152602360248201527f496b736173756d693a206e6f7420656e6f756768206974656d7320666f722073604482015262616c6560e81b6064820152608401610836565b6000610d45828461467d565b9050610d5f33600d546001600160a01b0316903084612297565b60006040518060600160405280858152602001848152602001610d7f3390565b6001600160a01b0390811690915260008781526012602090815260408083208054600180820183558286528486208851600390930201918255878501519082015586830151600290910180546001600160a01b031916919096161790945589835292546013909152919020559050336001600160a01b0316857f3138d8d517460c959fb333d4e8d87ea984f1cf15d6742c02e2955dd27a622b708686604051610e32929190918252602082015260400190565b60405180910390a350506001600b55505050565b6001600160a01b038516331480610e625750610e62853361075f565b610ec95760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610836565b610ed68585858585612302565b5050505050565b60008281526001602081905260409091200154610efa81336124bd565b610f048383612521565b505050565b6001600160a01b0381163314610f795760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610836565b610f83828261258c565b5050565b6002600b541415610faa5760405162461bcd60e51b8152600401610836906145eb565b6002600b556000838152601060205260409020805433919084908110610fe057634e487b7160e01b600052603260045260246000fd5b60009182526020909120600260049092020101546001600160a01b0316141561105e5760405162461bcd60e51b815260206004820152602a60248201527f496b6173756d693a2074686520757365722063616e6e6f7420627579206869736044820152691037bbb71037b33332b960b11b6064820152608401610836565b60008381526010602052604090208054611106913091637921219560e11b91908690811061109c57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600490910201600201546001600160a01b03163387866040516024016110cf9493929190614375565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125f3565b600083815260106020526040902080546111aa91908490811061113957634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016001015482611156919061467d565b33600086815260106020526040902080548690811061118557634e487b7160e01b600052603260045260246000fd5b60009182526020909120600360049092020101546001600160a01b0316866001612771565b60008381526010602052604090208054829190849081106111db57634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160000160008282546111fb919061469c565b90915550506001600b55505050565b6002600b54141561122d5760405162461bcd60e51b8152600401610836906145eb565b6002600b55600082815260126020526040902080543391908390811061126357634e487b7160e01b600052603260045260246000fd5b60009182526020909120600260039092020101546001600160a01b0316146112eb5760405162461bcd60e51b815260206004820152603560248201527f496b6173756d693a206f6e6c7920746865206f726967696e616c206269646465604482015274722063616e2063616e63656c20686973206269647360581b6064820152608401610836565b600082815260126020526040812080548390811061131957634e487b7160e01b600052603260045260246000fd5b90600052602060002090600302016001015460126000858152602001908152602001600020838154811061135d57634e487b7160e01b600052603260045260246000fd5b906000526020600020906003020160000154611379919061467d565b600084815260126020526040812080549293509091849081106113ac57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600390910201556113d433600d546001600160a01b031690836129a7565b827f7277fc1cd614e04155fd1e358fe63c0576fc211585e1ec95403495e0272eeb4c8360405161140691815260200190565b60405180910390a250506001600b5550565b6114226000611615565b61143e5760405162461bcd60e51b815260040161083690614560565b6001600160a01b0382166114645760405162461bcd60e51b8152600401610836906145aa565b60005b8151811015610f04576114a18383838151811061149457634e487b7160e01b600052603260045260246000fd5b602002602001015161173e565b50806114ac8161475d565b915050611467565b606081518351146115195760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610836565b600083516001600160401b0381111561154257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561156b578160200160208202803683370190505b50905060005b845181101561160d576115d285828151811061159d57634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106115c557634e487b7160e01b600052603260045260246000fd5b60200260200101516107ce565b8282815181106115f257634e487b7160e01b600052603260045260246000fd5b60209081029190910101526116068161475d565b9050611571565b509392505050565b600061162033611ec6565b80611639575060095460ff166001148015611639575081155b80611676575060095460ff1660011480156116545750600082115b801561167657506000828152600a60205260409020546001600160a01b031633145b8061087257505060095460ff16600214919050565b6000546001600160a01b031633146116b55760405162461bcd60e51b8152600401610836906144e3565b6116bf60006129d7565b565b826116cb81611615565b6116e75760405162461bcd60e51b815260040161083690614560565b610ed685858585612a27565b6012602052816000526040600020818154811061170f57600080fd5b60009182526020909120600390910201805460018201546002909201549093509091506001600160a01b031683565b600061174a6000611615565b6117665760405162461bcd60e51b815260040161083690614560565b61176e612a51565b611796836008548460405180604001604052806002815260200161060f60f31b815250612a27565b5060085492915050565b601060205281600052604060002081815481106117bc57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b03918216911684565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060078054610887906146f6565b6118376000611615565b6118535760405162461bcd60e51b815260040161083690614560565b61187d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682610edd565b50565b6002600b5414156118a35760405162461bcd60e51b8152600401610836906145eb565b6002600b554685146118ee5760405162461bcd60e51b815260206004820152601460248201527324b5b0b9bab6b49d102bb937b7339031b430b4b760611b6044820152606401610836565b60008a815260146020526040902054889061190a908390614645565b111561197e5760405162461bcd60e51b815260206004820152603960248201527f496b6173756d693a207468652071747920657863656564732074686520616d6f60448201527f756e7420617661696c61626c6520666f72206d696e74696e67000000000000006064820152608401610836565b8a1580611998575060008b81526005602052604090205415155b6119dc5760405162461bcd60e51b8152602060048201526015602482015274125ad85cdd5b5a4e8815dc9bdb99c8139195081251605a1b6044820152606401610836565b611a008a8a8a8a8a8a8a8a308b6119fb6000546001600160a01b031690565b612a7e565b60008a815260156020526040902054611a4a578a15611a2f5760008a81526015602052604090208b9055611a4a565b611a37612a51565b60085460008b8152601560205260409020555b611a8333601560008d8152602001908152602001600020548360405180604001604052806002815260200161060f60f31b815250612a27565b60008a8152601560209081526040808320548352600a909152902080546001600160a01b0319166001600160a01b038616179055611ae7611ac4888361467d565b336000546001600160a01b031660008e8152601560205260409020546001612771565b600080548b825260156020526040909120546001600160a01b039091169033907ffd97862d5a5b5a3eb526cec9bc4d060e4927fa2388f7f3178f09a250dd864ab1611b328b8661467d565b60405190815260200160405180910390a460008a81526014602052604081208054839290611b61908490614645565b90915550506001600b555050505050505050505050565b336001600160a01b0383161415611be35760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610836565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6002600b541415611c725760405162461bcd60e51b8152600401610836906145eb565b6002600b556000838152601260205260409020805433919084908110611ca857634e487b7160e01b600052603260045260246000fd5b60009182526020909120600260039092020101546001600160a01b03161415611d275760405162461bcd60e51b815260206004820152602b60248201527f496b6173756d693a2074686520757365722063616e6e6f74206163636570742060448201526a1a1a5cc81bdddb88189a5960aa1b6064820152608401610836565b611d55335b6001600160a01b0316600090815260036020908152604080832030845290915290205460ff1690565b611d6457611d64306001611b78565b611dd130637921219560e11b336000878152601260205260409020805487908110611d9f57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600260039092020101546040516110cf92916001600160a01b03169089908890602401614375565b60008381526012602052604090208054611e75919084908110611e0457634e487b7160e01b600052603260045260246000fd5b90600052602060002090600302016001015482611e21919061467d565b6000858152601260205260409020805485908110611e4f57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600390910201600201546001600160a01b031633866000612771565b6000838152601260205260409020805482919084908110611ea657634e487b7160e01b600052603260045260246000fd5b906000526020600020906003020160000160008282546111fb919061469c565b60006108727f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6836117f3565b60008281526001602081905260409091200154611f0f81336124bd565b610f04838361258c565b82611f2433866107ce565b1015611f895760405162461bcd60e51b815260206004820152602e60248201527f496b6173756d693a20796f7520646f206e6f74206861766520656e6f7567682060448201526d1d1bdad95b9cc81d1bc81cd95b1b60921b6064820152608401610836565b611f9233611d2c565b611fa157611fa1306001611b78565b60006040518060800160405280858152602001848152602001611fc13390565b6001600160a01b039081168252848116602092830152600088815260108352604080822080546001818101835582855286852088516004909302019182558787015190820155828701516002820180549187166001600160a01b031992831617905560608801516003909201805492909616911617909355898252915460119093522055905061204e3390565b6001600160a01b0316857fce55bfae73b3c55d09c9fb6723466656ecb31fc2f7c5b90c296456857480c88c8686604051612092929190918252602082015260400190565b60405180910390a35050505050565b6001600160a01b0385163314806120bd57506120bd853361075f565b61211b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610836565b610ed68585858585612b98565b6000546001600160a01b031633146121525760405162461bcd60e51b8152600401610836906144e3565b6001600160a01b0381166121b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610836565b61187d816129d7565b60006121ca612cab565b905090565b60006001600160e01b03198216636cdb3d1360e11b148061220057506001600160e01b031982166303a24d0760e21b145b80610872575061087282612da1565b61221b84848484612dd6565b60005b8351811015610ed65733600a600086848151811061224c57634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806122909061475d565b905061221e565b6040516001600160a01b0380851660248301528316604482015260648101829052610bf99085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612e75565b81518351146123235760405162461bcd60e51b815260040161083690614518565b6001600160a01b0384166123495760405162461bcd60e51b815260040161083690614454565b3360005b845181101561244f57600085828151811061237857634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008583815181106123a457634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160008481526002835260408082206001600160a01b038e1683529093529190912054909150818110156123f55760405162461bcd60e51b815260040161083690614499565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290612434908490614645565b92505081905550505050806124489061475d565b905061234d565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161249f9291906143cb565b60405180910390a46124b5818787878787612f47565b505050505050565b6124c782826117f3565b610f83576124df816001600160a01b031660146130b2565b6124ea8360206130b2565b6040516020016124fb929190614268565b60408051601f198184030181529082905262461bcd60e51b8252610836916004016143f9565b61252b82826117f3565b610f835760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b61259682826117f3565b15610f835760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b0382163b61264a5760405162461bcd60e51b815260206004820152601d60248201527f496b6173756d693a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b600080836001600160a01b031683604051612665919061424c565b6000604051808303816000865af19150503d80600081146126a2576040519150601f19603f3d011682016040523d82523d6000602084013e6126a7565b606091505b5091509150816126f95760405162461bcd60e51b815260206004820152601e60248201527f496b6173756d693a206c6f772d6c6576656c2063616c6c206661696c656400006044820152606401610836565b805115610bf957808060200190518101906127149190614023565b610bf95760405162461bcd60e51b815260206004820152602860248201527f496b6173756d693a204552433230206f7065726174696f6e20646964206e6f74604482015267081cdd58d8d9595960c21b6064820152608401610836565b60006064600e5487612783919061467d565b61278d919061465d565b905060006064600f54886127a1919061467d565b6127ab919061465d565b90506000816127ba848a61469c565b6127c4919061469c565b905083156127e957600d546127e4906001600160a01b0316888884612297565b612800565b600d54612800906001600160a01b031687836129a7565b856001600160a01b0316876001600160a01b0316867f07f87664c10527a8207b443cccf57f3c20f25bd1165eeae416be79890a35892c8460405161284691815260200190565b60405180910390a4811561290857831561288a576000858152600a6020526040902054600d54612885916001600160a01b03918216918a911685612297565b6128b3565b6000858152600a6020526040902054600d546128b3916001600160a01b039182169116846129a7565b6000858152600a60209081526040918290205491518481526001600160a01b03928316928a169188917f802713d7f9cc0dcd6072902b48c61c206c34d6ca5f5288b580a6f86f9c9fe150910160405180910390a45b821561299d57831561293857600c54600d54612933916001600160a01b03918216918a911686612297565b612955565b600c54600d54612955916001600160a01b039182169116856129a7565b600c546040518481526001600160a01b039182169189169087907f9577cd5ef459a0bf97b597490f08f1e93e995b9394e4c577932db36e71c4500c9060200160405180910390a45b5050505050505050565b6040516001600160a01b038316602482015260448101829052610f0490849063a9059cbb60e01b906064016122cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000838152600a6020526040902080546001600160a01b03191633179055610bf98484848461329a565b60088054906000612a618361475d565b9091555050600854600090815260056020526040902054612a5157565b604080517f286c81460df074c46ce5aeb2d5be03f72c20e6c506d2bae9048ed617d90c3dba60208201529081018c9052606081018b9052608081018a905260a0810189905260c0810188905260e081018790526001600160a01b0380871661010083015261012082018690528416610140820152600090612b189061016001604051602081830303815290604052805190602001206132cf565b90506000612b26828561331d565b9050826001600160a01b0316816001600160a01b031614612b895760405162461bcd60e51b815260206004820152601860248201527f496b6173756d693a2077726f6e67207369676e617475726500000000000000006044820152606401610836565b50505050505050505050505050565b6001600160a01b038416612bbe5760405162461bcd60e51b815260040161083690614454565b60008381526002602090815260408083206001600160a01b0389168452909152902054339083811015612c035760405162461bcd60e51b815260040161083690614499565b60008581526002602090815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290612c42908490614645565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612ca2828888888888613339565b50505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612cfa57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b90565b60006001600160e01b03198216637965db0b60e01b148061087257506301ffc9a760e01b6001600160e01b0319831614610872565b612de284848484613403565b60005b8351811015610ed657828181518110612e0e57634e487b7160e01b600052603260045260246000fd5b602002602001015160056000868481518110612e3a57634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000828254612e5f9190614645565b90915550612e6e90508161475d565b9050612de5565b6000612eca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661356b9092919063ffffffff16565b805190915015610f045780806020019051810190612ee89190614023565b610f045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b6001600160a01b0384163b156124b55760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612f8b90899089908890889088906004016142dd565b602060405180830381600087803b158015612fa557600080fd5b505af1925050508015612fd5575060408051601f3d908101601f19168201909252612fd291810190614097565b60015b61308257612fe16147a4565b806308c379a0141561301b5750612ff66147bb565b80613001575061301d565b8060405162461bcd60e51b815260040161083691906143f9565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610836565b6001600160e01b0319811663bc197c8160e01b14612ca25760405162461bcd60e51b81526004016108369061440c565b606060006130c183600261467d565b6130cc906002614645565b6001600160401b038111156130f157634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561311b576020820181803683370190505b509050600360fc1b8160008151811061314457634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061318157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006131a584600261467d565b6131b0906001614645565b90505b6001811115613244576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106131f257634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061321657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361323d816146df565b90506131b3565b5083156132935760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610836565b9392505050565b6132a684848484613582565b600083815260056020526040812080548492906132c4908490614645565b909155505050505050565b60006108726132dc612cab565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061332c858561363c565b9150915061160d816136ac565b6001600160a01b0384163b156124b55760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061337d908990899088908890889060040161433b565b602060405180830381600087803b15801561339757600080fd5b505af19250505080156133c7575060408051601f3d908101601f191682019092526133c491810190614097565b60015b6133d357612fe16147a4565b6001600160e01b0319811663f23a6e6160e01b14612ca25760405162461bcd60e51b81526004016108369061440c565b6001600160a01b0384166134295760405162461bcd60e51b8152600401610836906145aa565b815183511461344a5760405162461bcd60e51b815260040161083690614518565b3360005b84518110156135035783818151811061347757634e487b7160e01b600052603260045260246000fd5b6020026020010151600260008784815181106134a357634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060008282546134eb9190614645565b909155508190506134fb8161475d565b91505061344e565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516135549291906143cb565b60405180910390a4610ed681600087878787612f47565b606061357a84846000856138ad565b949350505050565b6001600160a01b0384166135a85760405162461bcd60e51b8152600401610836906145aa565b60008381526002602090815260408083206001600160a01b03881684529091528120805433928592916135dc908490614645565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610ed681600087878787613339565b6000808251604114156136735760208301516040840151606085015160001a613667878285856139d5565b945094505050506136a5565b82516040141561369d5760208301516040840151613692868383613ac2565b9350935050506136a5565b506000905060025b9250929050565b60008160048111156136ce57634e487b7160e01b600052602160045260246000fd5b14156136d75750565b60018160048111156136f957634e487b7160e01b600052602160045260246000fd5b14156137475760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610836565b600281600481111561376957634e487b7160e01b600052602160045260246000fd5b14156137b75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610836565b60038160048111156137d957634e487b7160e01b600052602160045260246000fd5b14156138325760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610836565b600481600481111561385457634e487b7160e01b600052602160045260246000fd5b141561187d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610836565b60608247101561390e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610836565b843b61395c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b600080866001600160a01b03168587604051613978919061424c565b60006040518083038185875af1925050503d80600081146139b5576040519150601f19603f3d011682016040523d82523d6000602084013e6139ba565b606091505b50915091506139ca828286613af1565b979650505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613a0c5750600090506003613ab9565b8460ff16601b14158015613a2457508460ff16601c14155b15613a355750600090506004613ab9565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613a89573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ab257600060019250925050613ab9565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01613ae3878288856139d5565b935093505050935093915050565b60608315613b00575081613293565b825115613b105782518084602001fd5b8160405162461bcd60e51b815260040161083691906143f9565b600082601f830112613b3a578081fd5b81356020613b4782614622565b604051613b548282614731565b8381528281019150858301600585901b87018401881015613b73578586fd5b855b85811015613b9157813584529284019290840190600101613b75565b5090979650505050505050565b600082601f830112613bae578081fd5b81356001600160401b03811115613bc757613bc761478e565b604051613bde601f8301601f191660200182614731565b818152846020838601011115613bf2578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215613c1d578081fd5b813561329381614844565b60008060408385031215613c3a578081fd5b8235613c4581614844565b91506020830135613c5581614844565b809150509250929050565b600080600080600060a08688031215613c77578081fd5b8535613c8281614844565b94506020860135613c9281614844565b935060408601356001600160401b0380821115613cad578283fd5b613cb989838a01613b2a565b94506060880135915080821115613cce578283fd5b613cda89838a01613b2a565b93506080880135915080821115613cef578283fd5b50613cfc88828901613b9e565b9150509295509295909350565b600080600080600060a08688031215613d20578081fd5b8535613d2b81614844565b94506020860135613d3b81614844565b9350604086013592506060860135915060808601356001600160401b03811115613d63578182fd5b613cfc88828901613b9e565b60008060408385031215613d81578182fd5b8235613d8c81614844565b915060208301356001600160401b03811115613da6578182fd5b613db285828601613b2a565b9150509250929050565b60008060008060808587031215613dd1578384fd5b8435613ddc81614844565b935060208501356001600160401b0380821115613df7578485fd5b613e0388838901613b2a565b94506040870135915080821115613e18578384fd5b613e2488838901613b2a565b93506060870135915080821115613e39578283fd5b50613e4687828801613b9e565b91505092959194509250565b60008060408385031215613e64578182fd5b8235613e6f81614844565b91506020830135613c5581614859565b60008060408385031215613e91578182fd5b8235613e9c81614844565b946020939093013593505050565b60008060008060808587031215613ebf578182fd5b8435613eca81614844565b9350602085013592506040850135915060608501356001600160401b03811115613ef2578182fd5b613e4687828801613b9e565b600080600080600060a08688031215613f15578283fd5b8535613f2081614844565b94506020860135935060408601359250606086013560ff81168114613f43578182fd5b91506080860135613f5381614844565b809150509295509295909350565b60008060408385031215613f73578182fd5b82356001600160401b0380821115613f89578384fd5b818501915085601f830112613f9c578384fd5b81356020613fa982614622565b604051613fb68282614731565b8381528281019150858301600585901b870184018b1015613fd5578889fd5b8896505b84871015614000578035613fec81614844565b835260019690960195918301918301613fd9565b5096505086013592505080821115614016578283fd5b50613db285828601613b2a565b600060208284031215614034578081fd5b815161329381614859565b600060208284031215614050578081fd5b5035919050565b60008060408385031215614069578182fd5b823591506020830135613c5581614844565b60006020828403121561408c578081fd5b813561329381614867565b6000602082840312156140a8578081fd5b815161329381614867565b600080604083850312156140c5578182fd5b50508035926020909101359150565b6000806000606084860312156140e8578081fd5b505081359360208301359350604090920135919050565b60008060008060808587031215614114578182fd5b843593506020850135925060408501359150606085013561413481614844565b939692955090935050565b60008060008060008060008060008060006101608c8e031215614160578889fd5b8b359a5060208c0135995060408c0135985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c013561419c81614844565b93506101008c013592506101208c01356001600160401b038111156141bf578283fd5b6141cb8e828f01613b9e565b9250506101408c013590509295989b509295989b9093969950565b6000815180845260208085019450808401835b83811015614215578151875295820195908201906001016141f9565b509495945050505050565b600081518084526142388160208601602086016146b3565b601f01601f19169290920160200192915050565b6000825161425e8184602087016146b3565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516142a08160178501602088016146b3565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516142d18160288401602088016146b3565b01602801949350505050565b6001600160a01b0386811682528516602082015260a060408201819052600090614309908301866141e6565b828103606084015261431b81866141e6565b9050828103608084015261432f8185614220565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906139ca90830184614220565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260029082015261060f60f31b60c082015260e00190565b60208152600061329360208301846141e6565b6040815260006143de60408301856141e6565b82810360208401526143f081856141e6565b95945050505050565b6020815260006132936020830184614220565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252602a908201527f4552433131353559757a753a206d7573742068617665206d696e74657220726f6040820152691b19481d1bc81b5a5b9d60b21b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006001600160401b0382111561463b5761463b61478e565b5060051b60200190565b6000821982111561465857614658614778565b500190565b60008261467857634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561469757614697614778565b500290565b6000828210156146ae576146ae614778565b500390565b60005b838110156146ce5781810151838201526020016146b6565b83811115610bf95750506000910152565b6000816146ee576146ee614778565b506000190190565b600181811c9082168061470a57607f821691505b6020821081141561472b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f191681016001600160401b03811182821017156147565761475661478e565b6040525050565b600060001982141561477157614771614778565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115612d9e57600481823e5160e01c90565b600060443d10156147c95790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156147f857505050505090565b82850191508151818111156148105750505050505090565b843d870101602082850101111561482a5750505050505090565b61483960208286010187614731565b509095945050505050565b6001600160a01b038116811461187d57600080fd5b801515811461187d57600080fd5b6001600160e01b03198116811461187d57600080fdfea264697066735822122086902f370be8e7575fb3254ddff8de920f6ed63e10d4a44738574bae5332fd4564736f6c6343000804003300000000000000000000000010e768cfa42567d2b67ad09ba34858fe5aabf7d0000000000000000000000000e67cde393ab93cd6b1ea77cdac80417cd96ffecb000000000000000000000000e67cde393ab93cd6b1ea77cdac80417cd96ffecb0000000000000000000000000000000000000000000000000000000000000013000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000005506f7374730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005504f535453000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f68747470733a2f2f7468657269736b2e676c6f62616c2f7765622f77702d6a736f6e2f777073632f76312f6e6674313135352f313030373532342f7b69647d00