[ { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "currentSupply", "outputs": [ { "internalType": "uint256", "name": "_value", "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": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "recoverSigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "safeMint", "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": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_signerAddress", "type": "address" } ], "name": "setSignerAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_transferable", "type": "bool" } ], "name": "setTransferable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "signerAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "verify", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60806040526000600d60006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50604051620045033803806200450383398181016040528101906200005291906200037e565b6040518060400160405280601481526020017f586176652057686974656c69737420546f6b656e0000000000000000000000008152506040518060400160405280600381526020017f58575400000000000000000000000000000000000000000000000000000000008152508160009081620000cf91906200061a565b508060019081620000e191906200061a565b50505062000104620000f86200011d60201b60201c565b6200012560201b60201c565b80600c90816200011591906200061a565b505062000701565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002548262000209565b810181811067ffffffffffffffff821117156200027657620002756200021a565b5b80604052505050565b60006200028b620001eb565b905062000299828262000249565b919050565b600067ffffffffffffffff821115620002bc57620002bb6200021a565b5b620002c78262000209565b9050602081019050919050565b60005b83811015620002f4578082015181840152602081019050620002d7565b60008484015250505050565b60006200031762000311846200029e565b6200027f565b90508281526020810184848401111562000336576200033562000204565b5b62000343848285620002d4565b509392505050565b600082601f830112620003635762000362620001ff565b5b81516200037584826020860162000300565b91505092915050565b600060208284031215620003975762000396620001f5565b5b600082015167ffffffffffffffff811115620003b857620003b7620001fa565b5b620003c6848285016200034b565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200042257607f821691505b602082108103620004385762000437620003da565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000463565b620004ae868362000463565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004fb620004f5620004ef84620004c6565b620004d0565b620004c6565b9050919050565b6000819050919050565b6200051783620004da565b6200052f620005268262000502565b84845462000470565b825550505050565b600090565b6200054662000537565b620005538184846200050c565b505050565b5b818110156200057b576200056f6000826200053c565b60018101905062000559565b5050565b601f821115620005ca5762000594816200043e565b6200059f8462000453565b81016020851015620005af578190505b620005c7620005be8562000453565b83018262000558565b50505b505050565b600082821c905092915050565b6000620005ef60001984600802620005cf565b1980831691505092915050565b60006200060a8383620005dc565b9150826002028217905092915050565b6200062582620003cf565b67ffffffffffffffff8111156200064157620006406200021a565b5b6200064d825462000409565b6200065a8282856200057f565b600060209050601f8311600181146200069257600084156200067d578287015190505b620006898582620005fc565b865550620006f9565b601f198416620006a2866200043e565b60005b82811015620006cc57848901518255600182019150602085019450602081019050620006a5565b86831015620006ec5784890151620006e8601f891682620005dc565b8355505b6001600288020188555050505b505050505050565b613df280620007116000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636c0360eb116101045780639cd23707116100a2578063c87b56dd11610071578063c87b56dd1461051a578063e53e3a041461054a578063e985e9c51461057a578063f2fde38b146105aa576101cf565b80639cd23707146104aa578063a22cb465146104c6578063ab9ecbdf146104e2578063b88d4fde146104fe576101cf565b8063771282f6116100de578063771282f6146104325780638da5cb5b1461045057806392ff0d311461046e57806395d89b411461048c576101cf565b80636c0360eb146103da57806370a08231146103f8578063715018a614610428576101cf565b80632f745c59116101715780634a41d1ac1161014b5780634a41d1ac1461032c5780634f6ccce71461035c5780635b7633d01461038c5780636352211e146103aa576101cf565b80632f745c59146102c457806342842e0e146102f457806342966c6814610310576101cf565b8063081812fc116101ad578063081812fc1461023e578063095ea7b31461026e57806318160ddd1461028a57806323b872dd146102a8576101cf565b806301ffc9a7146101d4578063046dc1661461020457806306fdde0314610220575b600080fd5b6101ee60048036038101906101e991906127f2565b6105c6565b6040516101fb919061283a565b60405180910390f35b61021e600480360381019061021991906128b3565b610640565b005b61022861068c565b6040516102359190612970565b60405180910390f35b610258600480360381019061025391906129c8565b61071e565b6040516102659190612a04565b60405180910390f35b61028860048036038101906102839190612a1f565b610764565b005b61029261087b565b60405161029f9190612a6e565b60405180910390f35b6102c260048036038101906102bd9190612a89565b610888565b005b6102de60048036038101906102d99190612a1f565b6108e7565b6040516102eb9190612a6e565b60405180910390f35b61030e60048036038101906103099190612a89565b61098c565b005b61032a600480360381019061032591906129c8565b6109eb565b005b61034660048036038101906103419190612c11565b610a2f565b604051610353919061283a565b60405180910390f35b610376600480360381019061037191906129c8565b610a98565b6040516103839190612a6e565b60405180910390f35b610394610b09565b6040516103a19190612a04565b60405180910390f35b6103c460048036038101906103bf91906129c8565b610b2f565b6040516103d19190612a04565b60405180910390f35b6103e2610bb5565b6040516103ef9190612970565b60405180910390f35b610412600480360381019061040d91906128b3565b610c43565b60405161041f9190612a6e565b60405180910390f35b610430610cfa565b005b61043a610d0e565b6040516104479190612a6e565b60405180910390f35b610458610d1a565b6040516104659190612a04565b60405180910390f35b610476610d44565b604051610483919061283a565b60405180910390f35b610494610d57565b6040516104a19190612970565b60405180910390f35b6104c460048036038101906104bf9190612c99565b610de9565b005b6104e060048036038101906104db9190612cc6565b610e0e565b005b6104fc60048036038101906104f79190612d66565b610e24565b005b61051860048036038101906105139190612db3565b610f1d565b005b610534600480360381019061052f91906129c8565b610f7e565b6040516105419190612970565b60405180910390f35b610564600480360381019061055f9190612c11565b610fd4565b6040516105719190612a04565b60405180910390f35b610594600480360381019061058f9190612e36565b611027565b6040516105a1919061283a565b60405180910390f35b6105c460048036038101906105bf91906128b3565b6110bb565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061063957506106388261113e565b5b9050919050565b6106486111b8565b80600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606000805461069b90612ea5565b80601f01602080910402602001604051908101604052809291908181526020018280546106c790612ea5565b80156107145780601f106106e957610100808354040283529160200191610714565b820191906000526020600020905b8154815290600101906020018083116106f757829003601f168201915b5050505050905090565b600061072982611236565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076f82610b2f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d690612f48565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107fe611281565b73ffffffffffffffffffffffffffffffffffffffff16148061082d575061082c81610827611281565b611027565b5b61086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086390612fda565b60405180910390fd5b6108768383611289565b505050565b6000600880549050905090565b600d60009054906101000a900460ff166108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce90613046565b60405180910390fd5b6108e2838383611342565b505050565b60006108f283610c43565b8210610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a906130d8565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600d60009054906101000a900460ff166109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290613046565b60405180910390fd5b6109e6838383611342565b505050565b6000610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2390613144565b60405180910390fd5b50565b600080610a3c8484610fd4565b9050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161491505092915050565b6000610aa261087b565b8210610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada906131d6565b60405180910390fd5b60088281548110610af757610af66131f6565b5b90600052602060002001549050919050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610b3b83611362565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390613271565b60405180910390fd5b80915050919050565b600c8054610bc290612ea5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bee90612ea5565b8015610c3b5780601f10610c1057610100808354040283529160200191610c3b565b820191906000526020600020905b815481529060010190602001808311610c1e57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa90613303565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d026111b8565b610d0c600061139f565b565b600b8060000154905081565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900460ff1681565b606060018054610d6690612ea5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9290612ea5565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b5050505050905090565b610df16111b8565b80600d60006101000a81548160ff02191690831515021790555050565b610e20610e19611281565b8383611465565b5050565b6000610e2f33610c43565b14610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e669061336f565b60405180910390fd5b610ebd3383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610a2f565b610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef3906133db565b60405180910390fd5b610f06600b6115d1565b610f1933610f14600b6115e7565b6115f5565b5050565b600d60009054906101000a900460ff16610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6390613046565b60405180910390fd5b610f7884848484611613565b50505050565b60606000600c8054610f8f90612ea5565b905011610fab5760405180602001604052806000815250610fcd565b600c604051602001610fbd919061349e565b6040516020818303038152906040525b9050919050565b60008083604051602001610fe891906134fd565b604051602081830303815290604052805190602001209050600061100b82611675565b9050600061101982866116ab565b905080935050505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6110c36111b8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611132576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111299061358a565b60405180910390fd5b61113b8161139f565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111b157506111b0826116d2565b5b9050919050565b6111c0611281565b73ffffffffffffffffffffffffffffffffffffffff166111de610d1a565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906135f6565b60405180910390fd5b565b61123f816117b4565b61127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590613271565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166112fc83610b2f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61135d83838360405180602001604052806000815250610f1d565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca90613662565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115c4919061283a565b60405180910390a3505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b61160f8282604051806020016040528060008152506117f5565b5050565b61162461161e611281565b83611850565b611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a906136f4565b60405180910390fd5b61166f848484846118e5565b50505050565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b60008060006116ba8585611941565b915091506116c781611992565b819250505092915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061179d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806117ad57506117ac82611af8565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166117d683611362565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6117ff8383611b62565b61180c6000848484611d7f565b61184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290613786565b60405180910390fd5b505050565b60008061185c83610b2f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061189e575061189d8185611027565b5b806118dc57508373ffffffffffffffffffffffffffffffffffffffff166118c48461071e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b6118f0848484611f06565b6118fc84848484611d7f565b61193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613786565b60405180910390fd5b50505050565b60008060418351036119825760008060006020860151925060408601519150606086015160001a9050611976878285856121ff565b9450945050505061198b565b60006002915091505b9250929050565b600060048111156119a6576119a56137a6565b5b8160048111156119b9576119b86137a6565b5b0315611af557600160048111156119d3576119d26137a6565b5b8160048111156119e6576119e56137a6565b5b03611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d90613821565b60405180910390fd5b60026004811115611a3a57611a396137a6565b5b816004811115611a4d57611a4c6137a6565b5b03611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a849061388d565b60405180910390fd5b60036004811115611aa157611aa06137a6565b5b816004811115611ab457611ab36137a6565b5b03611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb9061391f565b60405180910390fd5b5b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc89061398b565b60405180910390fd5b611bda816117b4565b15611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c11906139f7565b60405180910390fd5b611c286000838360016122e1565b611c31816117b4565b15611c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c68906139f7565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d7b6000838360016122f3565b5050565b6000611da08473ffffffffffffffffffffffffffffffffffffffff166122f9565b15611ef9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611dc9611281565b8786866040518563ffffffff1660e01b8152600401611deb9493929190613a6c565b6020604051808303816000875af1925050508015611e2757506040513d601f19601f82011682018060405250810190611e249190613acd565b60015b611ea9573d8060008114611e57576040519150601f19603f3d011682016040523d82523d6000602084013e611e5c565b606091505b506000815103611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890613786565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611efe565b600190505b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16611f2682610b2f565b73ffffffffffffffffffffffffffffffffffffffff1614611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390613b6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe290613bfe565b60405180910390fd5b611ff883838360016122e1565b8273ffffffffffffffffffffffffffffffffffffffff1661201882610b2f565b73ffffffffffffffffffffffffffffffffffffffff161461206e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206590613b6c565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121fa83838360016122f3565b505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561223a5760006003915091506122d8565b60006001878787876040516000815260200160405260405161225f9493929190613c53565b6020604051602081039080840390855afa158015612281573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122cf576000600192509250506122d8565b80600092509250505b94509492505050565b6122ed8484848461231c565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6123288484848461247a565b600181111561236c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236390613d0a565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123b3576123ae81612480565b6123f2565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146123f1576123f085826124c9565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036124345761242f81612636565b612473565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612472576124718482612707565b5b5b5050505050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016124d684610c43565b6124e09190613d59565b90506000600760008481526020019081526020016000205490508181146125c5576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061264a9190613d59565b905060006009600084815260200190815260200160002054905060006008838154811061267a576126796131f6565b5b90600052602060002001549050806008838154811061269c5761269b6131f6565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806126eb576126ea613d8d565b5b6001900381819060005260206000200160009055905550505050565b600061271283610c43565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127cf8161279a565b81146127da57600080fd5b50565b6000813590506127ec816127c6565b92915050565b60006020828403121561280857612807612790565b5b6000612816848285016127dd565b91505092915050565b60008115159050919050565b6128348161281f565b82525050565b600060208201905061284f600083018461282b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061288082612855565b9050919050565b61289081612875565b811461289b57600080fd5b50565b6000813590506128ad81612887565b92915050565b6000602082840312156128c9576128c8612790565b5b60006128d78482850161289e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561291a5780820151818401526020810190506128ff565b60008484015250505050565b6000601f19601f8301169050919050565b6000612942826128e0565b61294c81856128eb565b935061295c8185602086016128fc565b61296581612926565b840191505092915050565b6000602082019050818103600083015261298a8184612937565b905092915050565b6000819050919050565b6129a581612992565b81146129b057600080fd5b50565b6000813590506129c28161299c565b92915050565b6000602082840312156129de576129dd612790565b5b60006129ec848285016129b3565b91505092915050565b6129fe81612875565b82525050565b6000602082019050612a1960008301846129f5565b92915050565b60008060408385031215612a3657612a35612790565b5b6000612a448582860161289e565b9250506020612a55858286016129b3565b9150509250929050565b612a6881612992565b82525050565b6000602082019050612a836000830184612a5f565b92915050565b600080600060608486031215612aa257612aa1612790565b5b6000612ab08682870161289e565b9350506020612ac18682870161289e565b9250506040612ad2868287016129b3565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b1e82612926565b810181811067ffffffffffffffff82111715612b3d57612b3c612ae6565b5b80604052505050565b6000612b50612786565b9050612b5c8282612b15565b919050565b600067ffffffffffffffff821115612b7c57612b7b612ae6565b5b612b8582612926565b9050602081019050919050565b82818337600083830152505050565b6000612bb4612baf84612b61565b612b46565b905082815260208101848484011115612bd057612bcf612ae1565b5b612bdb848285612b92565b509392505050565b600082601f830112612bf857612bf7612adc565b5b8135612c08848260208601612ba1565b91505092915050565b60008060408385031215612c2857612c27612790565b5b6000612c368582860161289e565b925050602083013567ffffffffffffffff811115612c5757612c56612795565b5b612c6385828601612be3565b9150509250929050565b612c768161281f565b8114612c8157600080fd5b50565b600081359050612c9381612c6d565b92915050565b600060208284031215612caf57612cae612790565b5b6000612cbd84828501612c84565b91505092915050565b60008060408385031215612cdd57612cdc612790565b5b6000612ceb8582860161289e565b9250506020612cfc85828601612c84565b9150509250929050565b600080fd5b600080fd5b60008083601f840112612d2657612d25612adc565b5b8235905067ffffffffffffffff811115612d4357612d42612d06565b5b602083019150836001820283011115612d5f57612d5e612d0b565b5b9250929050565b60008060208385031215612d7d57612d7c612790565b5b600083013567ffffffffffffffff811115612d9b57612d9a612795565b5b612da785828601612d10565b92509250509250929050565b60008060008060808587031215612dcd57612dcc612790565b5b6000612ddb8782880161289e565b9450506020612dec8782880161289e565b9350506040612dfd878288016129b3565b925050606085013567ffffffffffffffff811115612e1e57612e1d612795565b5b612e2a87828801612be3565b91505092959194509250565b60008060408385031215612e4d57612e4c612790565b5b6000612e5b8582860161289e565b9250506020612e6c8582860161289e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ebd57607f821691505b602082108103612ed057612ecf612e76565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f326021836128eb565b9150612f3d82612ed6565b604082019050919050565b60006020820190508181036000830152612f6181612f25565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612fc4603d836128eb565b9150612fcf82612f68565b604082019050919050565b60006020820190508181036000830152612ff381612fb7565b9050919050565b7f58617665536f756c426f756e642f6e6f742d7472616e7366657261626c650000600082015250565b6000613030601e836128eb565b915061303b82612ffa565b602082019050919050565b6000602082019050818103600083015261305f81613023565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006130c2602b836128eb565b91506130cd82613066565b604082019050919050565b600060208201905081810360008301526130f1816130b5565b9050919050565b7f58617665536f756c426f756e642f6e6f742d6275726e61626c65000000000000600082015250565b600061312e601a836128eb565b9150613139826130f8565b602082019050919050565b6000602082019050818103600083015261315d81613121565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006131c0602c836128eb565b91506131cb82613164565b604082019050919050565b600060208201905081810360008301526131ef816131b3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061325b6018836128eb565b915061326682613225565b602082019050919050565b6000602082019050818103600083015261328a8161324e565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006132ed6029836128eb565b91506132f882613291565b604082019050919050565b6000602082019050818103600083015261331c816132e0565b9050919050565b7f58617665536f756c426f756e642f73696e676c652d6d696e742d6f6e6c790000600082015250565b6000613359601e836128eb565b915061336482613323565b602082019050919050565b600060208201905081810360008301526133888161334c565b9050919050565b7f58617665536f756c426f756e642f696e76616c69642d7369676e617475726500600082015250565b60006133c5601f836128eb565b91506133d08261338f565b602082019050919050565b600060208201905081810360008301526133f4816133b8565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461342881612ea5565b61343281866133fb565b9450600182166000811461344d576001811461346257613495565b60ff1983168652811515820286019350613495565b61346b85613406565b60005b8381101561348d5781548189015260018201915060208101905061346e565b838801955050505b50505092915050565b60006134aa828461341b565b915081905092915050565b60008160601b9050919050565b60006134cd826134b5565b9050919050565b60006134df826134c2565b9050919050565b6134f76134f282612875565b6134d4565b82525050565b600061350982846134e6565b60148201915081905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135746026836128eb565b915061357f82613518565b604082019050919050565b600060208201905081810360008301526135a381613567565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135e06020836128eb565b91506135eb826135aa565b602082019050919050565b6000602082019050818103600083015261360f816135d3565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061364c6019836128eb565b915061365782613616565b602082019050919050565b6000602082019050818103600083015261367b8161363f565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006136de602d836128eb565b91506136e982613682565b604082019050919050565b6000602082019050818103600083015261370d816136d1565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006137706032836128eb565b915061377b82613714565b604082019050919050565b6000602082019050818103600083015261379f81613763565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b600061380b6018836128eb565b9150613816826137d5565b602082019050919050565b6000602082019050818103600083015261383a816137fe565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000613877601f836128eb565b915061388282613841565b602082019050919050565b600060208201905081810360008301526138a68161386a565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006139096022836128eb565b9150613914826138ad565b604082019050919050565b60006020820190508181036000830152613938816138fc565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006139756020836128eb565b91506139808261393f565b602082019050919050565b600060208201905081810360008301526139a481613968565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006139e1601c836128eb565b91506139ec826139ab565b602082019050919050565b60006020820190508181036000830152613a10816139d4565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613a3e82613a17565b613a488185613a22565b9350613a588185602086016128fc565b613a6181612926565b840191505092915050565b6000608082019050613a8160008301876129f5565b613a8e60208301866129f5565b613a9b6040830185612a5f565b8181036060830152613aad8184613a33565b905095945050505050565b600081519050613ac7816127c6565b92915050565b600060208284031215613ae357613ae2612790565b5b6000613af184828501613ab8565b91505092915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613b566025836128eb565b9150613b6182613afa565b604082019050919050565b60006020820190508181036000830152613b8581613b49565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613be86024836128eb565b9150613bf382613b8c565b604082019050919050565b60006020820190508181036000830152613c1781613bdb565b9050919050565b6000819050919050565b613c3181613c1e565b82525050565b600060ff82169050919050565b613c4d81613c37565b82525050565b6000608082019050613c686000830187613c28565b613c756020830186613c44565b613c826040830185613c28565b613c8f6060830184613c28565b95945050505050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613cf46035836128eb565b9150613cff82613c98565b604082019050919050565b60006020820190508181036000830152613d2381613ce7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d6482612992565b9150613d6f83612992565b9250828203905081811115613d8757613d86613d2a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122041275749db1f959d1dc64ea8dcd93dac03dc4fa67d6446e37188b62f7159243064736f6c634300081400330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002568747470733a2f2f71756573742e786176652e636f2f6173736574732f7877742e6a736f6e000000000000000000000000000000000000000000000000000000