[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_uri", "type": "string" }, { "internalType": "address payable", "name": "_receiver", "type": "address" }, { "internalType": "uint256", "name": "_totalSupplyLimit", "type": "uint256" }, { "internalType": "uint256", "name": "_nftPrice", "type": "uint256" } ], "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": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintedAddresses", "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": "mintNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "mintedAddresses", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nftPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "receiver", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "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": "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupplyLimit", "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": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620048ee380380620048ee8339818101604052810190620000379190620003ed565b858581600090816200004a919062000727565b5080600190816200005c919062000727565b5050506200007f62000073620000ec60201b60201c565b620000f460201b60201c565b83600c908162000090919062000727565b5081600d8190555080600e8190555082601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200080e565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200022382620001d8565b810181811067ffffffffffffffff82111715620002455762000244620001e9565b5b80604052505050565b60006200025a620001ba565b905062000268828262000218565b919050565b600067ffffffffffffffff8211156200028b576200028a620001e9565b5b6200029682620001d8565b9050602081019050919050565b60005b83811015620002c3578082015181840152602081019050620002a6565b60008484015250505050565b6000620002e6620002e0846200026d565b6200024e565b905082815260208101848484011115620003055762000304620001d3565b5b62000312848285620002a3565b509392505050565b600082601f830112620003325762000331620001ce565b5b815162000344848260208601620002cf565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200037a826200034d565b9050919050565b6200038c816200036d565b81146200039857600080fd5b50565b600081519050620003ac8162000381565b92915050565b6000819050919050565b620003c781620003b2565b8114620003d357600080fd5b50565b600081519050620003e781620003bc565b92915050565b60008060008060008060c087890312156200040d576200040c620001c4565b5b600087015167ffffffffffffffff8111156200042e576200042d620001c9565b5b6200043c89828a016200031a565b965050602087015167ffffffffffffffff81111562000460576200045f620001c9565b5b6200046e89828a016200031a565b955050604087015167ffffffffffffffff811115620004925762000491620001c9565b5b620004a089828a016200031a565b9450506060620004b389828a016200039b565b9350506080620004c689828a01620003d6565b92505060a0620004d989828a01620003d6565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200053957607f821691505b6020821081036200054f576200054e620004f1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200057a565b620005c586836200057a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200060862000602620005fc84620003b2565b620005dd565b620003b2565b9050919050565b6000819050919050565b6200062483620005e7565b6200063c62000633826200060f565b84845462000587565b825550505050565b600090565b6200065362000644565b6200066081848462000619565b505050565b5b8181101562000688576200067c60008262000649565b60018101905062000666565b5050565b601f821115620006d757620006a18162000555565b620006ac846200056a565b81016020851015620006bc578190505b620006d4620006cb856200056a565b83018262000665565b50505b505050565b600082821c905092915050565b6000620006fc60001984600802620006dc565b1980831691505092915050565b6000620007178383620006e9565b9150826002028217905092915050565b6200073282620004e6565b67ffffffffffffffff8111156200074e576200074d620001e9565b5b6200075a825462000520565b620007678282856200068c565b600060209050601f8311600181146200079f57600084156200078a578287015190505b62000796858262000709565b86555062000806565b601f198416620007af8662000555565b60005b82811015620007d957848901518255600182019150602085019450602081019050620007b2565b86831015620007f95784890151620007f5601f891682620006e9565b8355505b6001600288020188555050505b505050505050565b6140d0806200081e6000396000f3fe6080604052600436106101815760003560e01c80636352211e116100d1578063b88d4fde1161008a578063e985e9c511610064578063e985e9c514610589578063eac989f8146105c6578063f2fde38b146105f1578063f7260d3e1461061a57610181565b8063b88d4fde146104f8578063bac21a2214610521578063c87b56dd1461054c57610181565b80636352211e146103e857806370a0823114610425578063715018a6146104625780638da5cb5b1461047957806395d89b41146104a4578063a22cb465146104cf57610181565b806318160ddd1161013e5780633a6bf271116101185780633a6bf2711461031a5780633c3065fe1461035757806342842e0e146103825780634f6ccce7146103ab57610181565b806318160ddd1461028957806323b872dd146102b45780632f745c59146102dd57610181565b806301ffc9a71461018657806306fdde03146101c3578063081812fc146101ee578063095ea7b31461022b5780630d39fc811461025457806314f710fe1461027f575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a891906129db565b610645565b6040516101ba9190612a23565b60405180910390f35b3480156101cf57600080fd5b506101d8610657565b6040516101e59190612ace565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612b26565b6106e9565b6040516102229190612b94565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612bdb565b61072f565b005b34801561026057600080fd5b50610269610846565b6040516102769190612c2a565b60405180910390f35b61028761084c565b005b34801561029557600080fd5b5061029e610bad565b6040516102ab9190612c2a565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d69190612c45565b610bba565b005b3480156102e957600080fd5b5061030460048036038101906102ff9190612bdb565b610c1a565b6040516103119190612c2a565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612b26565b610cbf565b60405161034e9190612b94565b60405180910390f35b34801561036357600080fd5b5061036c610cfe565b6040516103799190612d56565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612c45565b610d8c565b005b3480156103b757600080fd5b506103d260048036038101906103cd9190612b26565b610dac565b6040516103df9190612c2a565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612b26565b610e1d565b60405161041c9190612b94565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612d78565b610ea3565b6040516104599190612c2a565b60405180910390f35b34801561046e57600080fd5b50610477610f5a565b005b34801561048557600080fd5b5061048e610f6e565b60405161049b9190612b94565b60405180910390f35b3480156104b057600080fd5b506104b9610f98565b6040516104c69190612ace565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190612dd1565b61102a565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612f46565b611040565b005b34801561052d57600080fd5b506105366110a2565b6040516105439190612c2a565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190612b26565b6110a8565b6040516105809190612ace565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190612fc9565b6110ba565b6040516105bd9190612a23565b60405180910390f35b3480156105d257600080fd5b506105db61114e565b6040516105e89190612ace565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190612d78565b6111dc565b005b34801561062657600080fd5b5061062f61125f565b60405161063c919061302a565b60405180910390f35b600061065082611285565b9050919050565b60606000805461066690613074565b80601f016020809104026020016040519081016040528092919081815260200182805461069290613074565b80156106df5780601f106106b4576101008083540402835291602001916106df565b820191906000526020600020905b8154815290600101906020018083116106c257829003601f168201915b5050505050905090565b60006106f4826112e6565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061073a82610e1d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a190613117565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107c9611331565b73ffffffffffffffffffffffffffffffffffffffff1614806107f857506107f7816107f2611331565b6110ba565b5b610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906131a9565b60405180910390fd5b6108418383611339565b505050565b600e5481565b600d54610857610bad565b10610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90613215565b60405180910390fd5b600e5434146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d2906132a7565b60405180910390fd5b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f90613313565b60405180910390fd5b60006001610974610bad565b61097e9190613362565b905061098a33826113f2565b610a1e81600c805461099b90613074565b80601f01602080910402602001604051908101604052809291908181526020018280546109c790613074565b8015610a145780601f106109e957610100808354040283529160200191610a14565b820191906000526020600020905b8154815290600101906020018083116109f757829003601f168201915b505050505061160f565b600f339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600e54604051610b23906133c7565b60006040518083038185875af1925050503d8060008114610b60576040519150601f19603f3d011682016040523d82523d6000602084013e610b65565b606091505b5050905080610ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba090613428565b60405180910390fd5b5050565b6000600880549050905090565b610bcb610bc5611331565b826116b3565b610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c01906134ba565b60405180910390fd5b610c15838383611748565b505050565b6000610c2583610ea3565b8210610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d9061354c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600f8181548110610ccf57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600f805480602002602001604051908101604052809291908181526020018280548015610d8257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d38575b5050505050905090565b610da783838360405180602001604052806000815250611040565b505050565b6000610db6610bad565b8210610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee906135de565b60405180910390fd5b60088281548110610e0b57610e0a6135fe565b5b90600052602060002001549050919050565b600080610e2983611a41565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613679565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a9061370b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f62611a7e565b610f6c6000611afc565b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610fa790613074565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd390613074565b80156110205780601f10610ff557610100808354040283529160200191611020565b820191906000526020600020905b81548152906001019060200180831161100357829003601f168201915b5050505050905090565b61103c611035611331565b8383611bc2565b5050565b61105161104b611331565b836116b3565b611090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611087906134ba565b60405180910390fd5b61109c84848484611d2e565b50505050565b600d5481565b60606110b382611d8a565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c805461115b90613074565b80601f016020809104026020016040519081016040528092919081815260200182805461118790613074565b80156111d45780601f106111a9576101008083540402835291602001916111d4565b820191906000526020600020905b8154815290600101906020018083116111b757829003601f168201915b505050505081565b6111e4611a7e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a9061379d565b60405180910390fd5b61125c81611afc565b50565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112df57506112de82611e9c565b5b9050919050565b6112ef81611f16565b61132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590613679565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166113ac83610e1d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145890613809565b60405180910390fd5b61146a81611f16565b156114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a190613875565b60405180910390fd5b6114b8600083836001611f57565b6114c181611f16565b15611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f890613875565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461160b600083836001611f69565b5050565b61161882611f16565b611657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164e90613907565b60405180910390fd5b80600a600084815260200190815260200160002090816116779190613ad3565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516116a79190612c2a565b60405180910390a15050565b6000806116bf83610e1d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611701575061170081856110ba565b5b8061173f57508373ffffffffffffffffffffffffffffffffffffffff16611727846106e9565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661176882610e1d565b73ffffffffffffffffffffffffffffffffffffffff16146117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b590613c17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182490613ca9565b60405180910390fd5b61183a8383836001611f57565b8273ffffffffffffffffffffffffffffffffffffffff1661185a82610e1d565b73ffffffffffffffffffffffffffffffffffffffff16146118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790613c17565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a3c8383836001611f69565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611a86611331565b73ffffffffffffffffffffffffffffffffffffffff16611aa4610f6e565b73ffffffffffffffffffffffffffffffffffffffff1614611afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af190613d15565b60405180910390fd5b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613d81565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d219190612a23565b60405180910390a3505050565b611d39848484611748565b611d4584848484611f6f565b611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90613e13565b60405180910390fd5b50505050565b6060611d95826112e6565b6000600a60008481526020019081526020016000208054611db590613074565b80601f0160208091040260200160405190810160405280929190818152602001828054611de190613074565b8015611e2e5780601f10611e0357610100808354040283529160200191611e2e565b820191906000526020600020905b815481529060010190602001808311611e1157829003601f168201915b505050505090506000611e3f6120f6565b90506000815103611e54578192505050611e97565b600082511115611e89578082604051602001611e71929190613e6f565b60405160208183030381529060405292505050611e97565b611e928461210d565b925050505b919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f0f5750611f0e82612175565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611f3883611a41565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611f6384848484612257565b50505050565b50505050565b6000611f908473ffffffffffffffffffffffffffffffffffffffff166123b5565b156120e9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611fb9611331565b8786866040518563ffffffff1660e01b8152600401611fdb9493929190613ee8565b6020604051808303816000875af192505050801561201757506040513d601f19601f820116820180604052508101906120149190613f49565b60015b612099573d8060008114612047576040519150601f19603f3d011682016040523d82523d6000602084013e61204c565b606091505b506000815103612091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208890613e13565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120ee565b600190505b949350505050565b606060405180602001604052806000815250905090565b6060612118826112e6565b60006121226120f6565b90506000815111612142576040518060200160405280600081525061216d565b8061214c846123d8565b60405160200161215d929190613e6f565b6040516020818303038152906040525b915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061224057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612250575061224f826124a6565b5b9050919050565b61226384848484612510565b60018111156122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e90613fe8565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036122ee576122e981612516565b61232d565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461232c5761232b858261255f565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361236f5761236a816126cc565b6123ae565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146123ad576123ac848261279d565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060600060016123e78461281c565b01905060008167ffffffffffffffff81111561240657612405612e1b565b5b6040519080825280601f01601f1916602001820160405280156124385781602001600182028036833780820191505090505b509050600082602001820190505b60011561249b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161248f5761248e614008565b5b04945060008503612446575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161256c84610ea3565b6125769190614037565b905060006007600084815260200190815260200160002054905081811461265b576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506126e09190614037565b90506000600960008481526020019081526020016000205490506000600883815481106127105761270f6135fe565b5b906000526020600020015490508060088381548110612732576127316135fe565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127815761278061406b565b5b6001900381819060005260206000200160009055905550505050565b60006127a883610ea3565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061287a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816128705761286f614008565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106128b7576d04ee2d6d415b85acef810000000083816128ad576128ac614008565b5b0492506020810190505b662386f26fc1000083106128e657662386f26fc1000083816128dc576128db614008565b5b0492506010810190505b6305f5e100831061290f576305f5e100838161290557612904614008565b5b0492506008810190505b612710831061293457612710838161292a57612929614008565b5b0492506004810190505b60648310612957576064838161294d5761294c614008565b5b0492506002810190505b600a8310612966576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129b881612983565b81146129c357600080fd5b50565b6000813590506129d5816129af565b92915050565b6000602082840312156129f1576129f0612979565b5b60006129ff848285016129c6565b91505092915050565b60008115159050919050565b612a1d81612a08565b82525050565b6000602082019050612a386000830184612a14565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a78578082015181840152602081019050612a5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612aa082612a3e565b612aaa8185612a49565b9350612aba818560208601612a5a565b612ac381612a84565b840191505092915050565b60006020820190508181036000830152612ae88184612a95565b905092915050565b6000819050919050565b612b0381612af0565b8114612b0e57600080fd5b50565b600081359050612b2081612afa565b92915050565b600060208284031215612b3c57612b3b612979565b5b6000612b4a84828501612b11565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7e82612b53565b9050919050565b612b8e81612b73565b82525050565b6000602082019050612ba96000830184612b85565b92915050565b612bb881612b73565b8114612bc357600080fd5b50565b600081359050612bd581612baf565b92915050565b60008060408385031215612bf257612bf1612979565b5b6000612c0085828601612bc6565b9250506020612c1185828601612b11565b9150509250929050565b612c2481612af0565b82525050565b6000602082019050612c3f6000830184612c1b565b92915050565b600080600060608486031215612c5e57612c5d612979565b5b6000612c6c86828701612bc6565b9350506020612c7d86828701612bc6565b9250506040612c8e86828701612b11565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ccd81612b73565b82525050565b6000612cdf8383612cc4565b60208301905092915050565b6000602082019050919050565b6000612d0382612c98565b612d0d8185612ca3565b9350612d1883612cb4565b8060005b83811015612d49578151612d308882612cd3565b9750612d3b83612ceb565b925050600181019050612d1c565b5085935050505092915050565b60006020820190508181036000830152612d708184612cf8565b905092915050565b600060208284031215612d8e57612d8d612979565b5b6000612d9c84828501612bc6565b91505092915050565b612dae81612a08565b8114612db957600080fd5b50565b600081359050612dcb81612da5565b92915050565b60008060408385031215612de857612de7612979565b5b6000612df685828601612bc6565b9250506020612e0785828601612dbc565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e5382612a84565b810181811067ffffffffffffffff82111715612e7257612e71612e1b565b5b80604052505050565b6000612e8561296f565b9050612e918282612e4a565b919050565b600067ffffffffffffffff821115612eb157612eb0612e1b565b5b612eba82612a84565b9050602081019050919050565b82818337600083830152505050565b6000612ee9612ee484612e96565b612e7b565b905082815260208101848484011115612f0557612f04612e16565b5b612f10848285612ec7565b509392505050565b600082601f830112612f2d57612f2c612e11565b5b8135612f3d848260208601612ed6565b91505092915050565b60008060008060808587031215612f6057612f5f612979565b5b6000612f6e87828801612bc6565b9450506020612f7f87828801612bc6565b9350506040612f9087828801612b11565b925050606085013567ffffffffffffffff811115612fb157612fb061297e565b5b612fbd87828801612f18565b91505092959194509250565b60008060408385031215612fe057612fdf612979565b5b6000612fee85828601612bc6565b9250506020612fff85828601612bc6565b9150509250929050565b600061301482612b53565b9050919050565b61302481613009565b82525050565b600060208201905061303f600083018461301b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061308c57607f821691505b60208210810361309f5761309e613045565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613101602183612a49565b915061310c826130a5565b604082019050919050565b60006020820190508181036000830152613130816130f4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613193603d83612a49565b915061319e82613137565b604082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b7f546865204e4654206c696d697420686173206265656e20726561636865640000600082015250565b60006131ff601e83612a49565b915061320a826131c9565b602082019050919050565b6000602082019050818103600083015261322e816131f2565b9050919050565b7f496e636f72726563742045544820616d6f756e7420666f72204e4654206d696e60008201527f696e670000000000000000000000000000000000000000000000000000000000602082015250565b6000613291602383612a49565b915061329c82613235565b604082019050919050565b600060208201905081810360008301526132c081613284565b9050919050565b7f596f75206861766520616c7265616479206d696e746564204e46547300000000600082015250565b60006132fd601c83612a49565b9150613308826132c7565b602082019050919050565b6000602082019050818103600083015261332c816132f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061336d82612af0565b915061337883612af0565b92508282019050808211156133905761338f613333565b5b92915050565b600081905092915050565b50565b60006133b1600083613396565b91506133bc826133a1565b600082019050919050565b60006133d2826133a4565b9150819050919050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000613412600f83612a49565b915061341d826133dc565b602082019050919050565b6000602082019050818103600083015261344181613405565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006134a4602d83612a49565b91506134af82613448565b604082019050919050565b600060208201905081810360008301526134d381613497565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613536602b83612a49565b9150613541826134da565b604082019050919050565b6000602082019050818103600083015261356581613529565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006135c8602c83612a49565b91506135d38261356c565b604082019050919050565b600060208201905081810360008301526135f7816135bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613663601883612a49565b915061366e8261362d565b602082019050919050565b6000602082019050818103600083015261369281613656565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006136f5602983612a49565b915061370082613699565b604082019050919050565b60006020820190508181036000830152613724816136e8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613787602683612a49565b91506137928261372b565b604082019050919050565b600060208201905081810360008301526137b68161377a565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006137f3602083612a49565b91506137fe826137bd565b602082019050919050565b60006020820190508181036000830152613822816137e6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061385f601c83612a49565b915061386a82613829565b602082019050919050565b6000602082019050818103600083015261388e81613852565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b60006138f1602e83612a49565b91506138fc82613895565b604082019050919050565b60006020820190508181036000830152613920816138e4565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026139897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261394c565b613993868361394c565b95508019841693508086168417925050509392505050565b6000819050919050565b60006139d06139cb6139c684612af0565b6139ab565b612af0565b9050919050565b6000819050919050565b6139ea836139b5565b6139fe6139f6826139d7565b848454613959565b825550505050565b600090565b613a13613a06565b613a1e8184846139e1565b505050565b5b81811015613a4257613a37600082613a0b565b600181019050613a24565b5050565b601f821115613a8757613a5881613927565b613a618461393c565b81016020851015613a70578190505b613a84613a7c8561393c565b830182613a23565b50505b505050565b600082821c905092915050565b6000613aaa60001984600802613a8c565b1980831691505092915050565b6000613ac38383613a99565b9150826002028217905092915050565b613adc82612a3e565b67ffffffffffffffff811115613af557613af4612e1b565b5b613aff8254613074565b613b0a828285613a46565b600060209050601f831160018114613b3d5760008415613b2b578287015190505b613b358582613ab7565b865550613b9d565b601f198416613b4b86613927565b60005b82811015613b7357848901518255600182019150602085019450602081019050613b4e565b86831015613b905784890151613b8c601f891682613a99565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613c01602583612a49565b9150613c0c82613ba5565b604082019050919050565b60006020820190508181036000830152613c3081613bf4565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c93602483612a49565b9150613c9e82613c37565b604082019050919050565b60006020820190508181036000830152613cc281613c86565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613cff602083612a49565b9150613d0a82613cc9565b602082019050919050565b60006020820190508181036000830152613d2e81613cf2565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613d6b601983612a49565b9150613d7682613d35565b602082019050919050565b60006020820190508181036000830152613d9a81613d5e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613dfd603283612a49565b9150613e0882613da1565b604082019050919050565b60006020820190508181036000830152613e2c81613df0565b9050919050565b600081905092915050565b6000613e4982612a3e565b613e538185613e33565b9350613e63818560208601612a5a565b80840191505092915050565b6000613e7b8285613e3e565b9150613e878284613e3e565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000613eba82613e93565b613ec48185613e9e565b9350613ed4818560208601612a5a565b613edd81612a84565b840191505092915050565b6000608082019050613efd6000830187612b85565b613f0a6020830186612b85565b613f176040830185612c1b565b8181036060830152613f298184613eaf565b905095945050505050565b600081519050613f43816129af565b92915050565b600060208284031215613f5f57613f5e612979565b5b6000613f6d84828501613f34565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613fd2603583612a49565b9150613fdd82613f76565b604082019050919050565b6000602082019050818103600083015261400181613fc5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061404282612af0565b915061404d83612af0565b925082820390508181111561406557614064613333565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220a3f432a174bd31738387a31cc364fa18aac3b9a4774655d6fbfdbb5dce563cc164736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000d846d4ae9caca4f74d598bc14beb1b3ee27b119b00000000000000000000000000000000000000000000000000000000000075300000000000000000000000000000000000000000000000000003328b944c4000000000000000000000000000000000000000000000000000000000000000000950616e64496e4e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000750414e444e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261666b726569686a717a3633377035677a36626374376d7462686f6c74356932756578736e7779756c723368367a3235646c6b36707962716e75000000000000000000000000000000000000000000000000000000000000