[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "newStudio", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "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": [ { "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": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "mintTo", "outputs": [], "stateMutability": "payable", "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": [], "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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" } ]
60806040526001600855736e0236ea3729a131ef584c2159a5edd292f6e637600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006a57600080fd5b506040516130f03803806130f0833981810160405281019061008c9190610414565b838383600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101015760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100f891906104c2565b60405180910390fd5b6101108161017d60201b60201c565b50816001908161012091906106fe565b50806002908161013091906106fe565b50505080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506107d0565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6102a88261025f565b810181811067ffffffffffffffff821117156102c7576102c6610270565b5b80604052505050565b60006102da610241565b90506102e6828261029f565b919050565b600067ffffffffffffffff82111561030657610305610270565b5b61030f8261025f565b9050602081019050919050565b60005b8381101561033a57808201518184015260208101905061031f565b60008484015250505050565b6000610359610354846102eb565b6102d0565b9050828152602081018484840111156103755761037461025a565b5b61038084828561031c565b509392505050565b600082601f83011261039d5761039c610255565b5b81516103ad848260208601610346565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103e1826103b6565b9050919050565b6103f1816103d6565b81146103fc57600080fd5b50565b60008151905061040e816103e8565b92915050565b6000806000806080858703121561042e5761042d61024b565b5b600085015167ffffffffffffffff81111561044c5761044b610250565b5b61045887828801610388565b945050602085015167ffffffffffffffff81111561047957610478610250565b5b61048587828801610388565b9350506040610496878288016103ff565b92505060606104a7878288016103ff565b91505092959194509250565b6104bc816103d6565b82525050565b60006020820190506104d760008301846104b3565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061052f57607f821691505b602082108103610542576105416104e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261056d565b6105b4868361056d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006105fb6105f66105f1846105cc565b6105d6565b6105cc565b9050919050565b6000819050919050565b610615836105e0565b61062961062182610602565b84845461057a565b825550505050565b600090565b61063e610631565b61064981848461060c565b505050565b5b8181101561066d57610662600082610636565b60018101905061064f565b5050565b601f8211156106b25761068381610548565b61068c8461055d565b8101602085101561069b578190505b6106af6106a78561055d565b83018261064e565b50505b505050565b600082821c905092915050565b60006106d5600019846008026106b7565b1980831691505092915050565b60006106ee83836106c4565b9150826002028217905092915050565b610707826104dd565b67ffffffffffffffff8111156107205761071f610270565b5b61072a8254610517565b610735828285610671565b600060209050601f8311600181146107685760008415610756578287015190505b61076085826106e2565b8655506107c8565b601f19841661077686610548565b60005b8281101561079e57848901518255600182019150602085019450602081019050610779565b868310156107bb57848901516107b7601f8916826106c4565b8355505b6001600288020188555050505b505050505050565b612911806107df6000396000f3fe6080604052600436106100fd5760003560e01c806370a0823111610095578063a22cb46511610064578063a22cb46514610325578063b88d4fde1461034e578063c87b56dd14610377578063e985e9c5146103b4578063f2fde38b146103f1576100fd565b806370a082311461027b578063715018a6146102b85780638da5cb5b146102cf57806395d89b41146102fa576100fd565b8063095ea7b3116100d1578063095ea7b3146101c357806323b872dd146101ec57806342842e0e146102155780636352211e1461023e576100fd565b806275a3171461010257806301ffc9a71461011e57806306fdde031461015b578063081812fc14610186575b600080fd5b61011c60048036038101906101179190611dbf565b61041a565b005b34801561012a57600080fd5b5061014560048036038101906101409190611e73565b610592565b6040516101529190611ebb565b60405180910390f35b34801561016757600080fd5b506101706105f3565b60405161017d9190611f55565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190611fad565b610685565b6040516101ba9190611fe9565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e59190612004565b6106a1565b005b3480156101f857600080fd5b50610213600480360381019061020e9190612044565b6106b7565b005b34801561022157600080fd5b5061023c60048036038101906102379190612044565b6107b9565b005b34801561024a57600080fd5b5061026560048036038101906102609190611fad565b6107d9565b6040516102729190611fe9565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190612097565b6107eb565b6040516102af91906120d3565b60405180910390f35b3480156102c457600080fd5b506102cd6108a5565b005b3480156102db57600080fd5b506102e46108b9565b6040516102f19190611fe9565b60405180910390f35b34801561030657600080fd5b5061030f6108e2565b60405161031c9190611f55565b60405180910390f35b34801561033157600080fd5b5061034c6004803603810190610347919061211a565b610974565b005b34801561035a57600080fd5b50610375600480360381019061037091906121fb565b61098a565b005b34801561038357600080fd5b5061039e60048036038101906103999190611fad565b6109a7565b6040516103ab9190611f55565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d6919061227e565b610aba565b6040516103e89190611ebb565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190612097565b610b4e565b005b610422610bd4565b61042e82600854610c5b565b61043a60085482610d54565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906122d3565b681043561a88293000006040518463ffffffff1660e01b815260040161053293929190612345565b6020604051808303816000875af1158015610551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105759190612391565b5060086000815480929190610589906123ed565b91905055505050565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105ec57506105eb82610db0565b5b9050919050565b60606001805461060290612464565b80601f016020809104026020016040519081016040528092919081815260200182805461062e90612464565b801561067b5780601f106106505761010080835404028352916020019161067b565b820191906000526020600020905b81548152906001019060200180831161065e57829003601f168201915b5050505050905090565b600061069082610e92565b5061069a82610f1a565b9050919050565b6106b382826106ae610f57565b610f5f565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107295760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016107209190611fe9565b60405180910390fd5b600061073d8383610738610f57565b610f71565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107b3578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016107aa93929190612495565b60405180910390fd5b50505050565b6107d48383836040518060200160405280600081525061098a565b505050565b60006107e482610e92565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361085e5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016108559190611fe9565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108ad610bd4565b6108b7600061118b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546108f190612464565b80601f016020809104026020016040519081016040528092919081815260200182805461091d90612464565b801561096a5780601f1061093f5761010080835404028352916020019161096a565b820191906000526020600020905b81548152906001019060200180831161094d57829003601f168201915b5050505050905090565b61098661097f610f57565b838361124f565b5050565b6109958484846106b7565b6109a1848484846113be565b50505050565b60606109b282610e92565b5060006007600084815260200190815260200160002080546109d390612464565b80601f01602080910402602001604051908101604052809291908181526020018280546109ff90612464565b8015610a4c5780601f10610a2157610100808354040283529160200191610a4c565b820191906000526020600020905b815481529060010190602001808311610a2f57829003601f168201915b505050505090506000610a5d611575565b90506000815103610a72578192505050610ab5565b600082511115610aa7578082604051602001610a8f929190612508565b60405160208183030381529060405292505050610ab5565b610ab08461158c565b925050505b919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610b56610bd4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bc85760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610bbf9190611fe9565b60405180910390fd5b610bd18161118b565b50565b610bdc610f57565b73ffffffffffffffffffffffffffffffffffffffff16610bfa6108b9565b73ffffffffffffffffffffffffffffffffffffffff1614610c5957610c1d610f57565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c509190611fe9565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ccd5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610cc49190611fe9565b60405180910390fd5b6000610cdb83836000610f71565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d4f5760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401610d469190611fe9565b60405180910390fd5b505050565b80600760008481526020019081526020016000209081610d7491906126ce565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce782604051610da491906120d3565b60405180910390a15050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610e7b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e8b5750610e8a826115f5565b5b9050919050565b600080610e9e8361165f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f1157826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610f0891906120d3565b60405180910390fd5b80915050919050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b610f6c838383600161169c565b505050565b600080610f7d8461165f565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610fbf57610fbe818486611861565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146110505761100160008560008061169c565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146110d3576001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846003600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c057816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016112b79190611fe9565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113b19190611ebb565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b111561156f578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611402610f57565b8685856040518563ffffffff1660e01b815260040161142494939291906127f5565b6020604051808303816000875af192505050801561146057506040513d601f19601f8201168201806040525081019061145d9190612856565b60015b6114e4573d8060008114611490576040519150601f19603f3d011682016040523d82523d6000602084013e611495565b606091505b5060008151036114dc57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016114d39190611fe9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461156d57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016115649190611fe9565b60405180910390fd5b505b50505050565b606060405180602001604052806000815250905090565b606061159782610e92565b5060006115a2611575565b905060008151116115c257604051806020016040528060008152506115ed565b806115cc84611925565b6040516020016115dd929190612508565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806116d55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118095760006116e584610e92565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561175057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561176357506117618184610aba565b155b156117a557826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161179c9190611fe9565b60405180910390fd5b811561180757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836005600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61186c8383836119f3565b61192057600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e157806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016118d891906120d3565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611917929190612883565b60405180910390fd5b505050565b60606000600161193484611ab4565b01905060008167ffffffffffffffff81111561195357611952611c94565b5b6040519080825280601f01601f1916602001820160405280156119855781602001600182028036833780820191505090505b509050600082602001820190505b6001156119e8578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816119dc576119db6128ac565b5b04945060008503611993575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aab57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a6c5750611a6b8484610aba565b5b80611aaa57508273ffffffffffffffffffffffffffffffffffffffff16611a9283610f1a565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611b12577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611b0857611b076128ac565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611b4f576d04ee2d6d415b85acef81000000008381611b4557611b446128ac565b5b0492506020810190505b662386f26fc100008310611b7e57662386f26fc100008381611b7457611b736128ac565b5b0492506010810190505b6305f5e1008310611ba7576305f5e1008381611b9d57611b9c6128ac565b5b0492506008810190505b6127108310611bcc576127108381611bc257611bc16128ac565b5b0492506004810190505b60648310611bef5760648381611be557611be46128ac565b5b0492506002810190505b600a8310611bfe576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4682611c1b565b9050919050565b611c5681611c3b565b8114611c6157600080fd5b50565b600081359050611c7381611c4d565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611ccc82611c83565b810181811067ffffffffffffffff82111715611ceb57611cea611c94565b5b80604052505050565b6000611cfe611c07565b9050611d0a8282611cc3565b919050565b600067ffffffffffffffff821115611d2a57611d29611c94565b5b611d3382611c83565b9050602081019050919050565b82818337600083830152505050565b6000611d62611d5d84611d0f565b611cf4565b905082815260208101848484011115611d7e57611d7d611c7e565b5b611d89848285611d40565b509392505050565b600082601f830112611da657611da5611c79565b5b8135611db6848260208601611d4f565b91505092915050565b60008060408385031215611dd657611dd5611c11565b5b6000611de485828601611c64565b925050602083013567ffffffffffffffff811115611e0557611e04611c16565b5b611e1185828601611d91565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e5081611e1b565b8114611e5b57600080fd5b50565b600081359050611e6d81611e47565b92915050565b600060208284031215611e8957611e88611c11565b5b6000611e9784828501611e5e565b91505092915050565b60008115159050919050565b611eb581611ea0565b82525050565b6000602082019050611ed06000830184611eac565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f10578082015181840152602081019050611ef5565b60008484015250505050565b6000611f2782611ed6565b611f318185611ee1565b9350611f41818560208601611ef2565b611f4a81611c83565b840191505092915050565b60006020820190508181036000830152611f6f8184611f1c565b905092915050565b6000819050919050565b611f8a81611f77565b8114611f9557600080fd5b50565b600081359050611fa781611f81565b92915050565b600060208284031215611fc357611fc2611c11565b5b6000611fd184828501611f98565b91505092915050565b611fe381611c3b565b82525050565b6000602082019050611ffe6000830184611fda565b92915050565b6000806040838503121561201b5761201a611c11565b5b600061202985828601611c64565b925050602061203a85828601611f98565b9150509250929050565b60008060006060848603121561205d5761205c611c11565b5b600061206b86828701611c64565b935050602061207c86828701611c64565b925050604061208d86828701611f98565b9150509250925092565b6000602082840312156120ad576120ac611c11565b5b60006120bb84828501611c64565b91505092915050565b6120cd81611f77565b82525050565b60006020820190506120e860008301846120c4565b92915050565b6120f781611ea0565b811461210257600080fd5b50565b600081359050612114816120ee565b92915050565b6000806040838503121561213157612130611c11565b5b600061213f85828601611c64565b925050602061215085828601612105565b9150509250929050565b600067ffffffffffffffff82111561217557612174611c94565b5b61217e82611c83565b9050602081019050919050565b600061219e6121998461215a565b611cf4565b9050828152602081018484840111156121ba576121b9611c7e565b5b6121c5848285611d40565b509392505050565b600082601f8301126121e2576121e1611c79565b5b81356121f284826020860161218b565b91505092915050565b6000806000806080858703121561221557612214611c11565b5b600061222387828801611c64565b945050602061223487828801611c64565b935050604061224587828801611f98565b925050606085013567ffffffffffffffff81111561226657612265611c16565b5b612272878288016121cd565b91505092959194509250565b6000806040838503121561229557612294611c11565b5b60006122a385828601611c64565b92505060206122b485828601611c64565b9150509250929050565b6000815190506122cd81611c4d565b92915050565b6000602082840312156122e9576122e8611c11565b5b60006122f7848285016122be565b91505092915050565b6000819050919050565b6000819050919050565b600061232f61232a61232584612300565b61230a565b611f77565b9050919050565b61233f81612314565b82525050565b600060608201905061235a6000830186611fda565b6123676020830185611fda565b6123746040830184612336565b949350505050565b60008151905061238b816120ee565b92915050565b6000602082840312156123a7576123a6611c11565b5b60006123b58482850161237c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123f882611f77565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361242a576124296123be565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061247c57607f821691505b60208210810361248f5761248e612435565b5b50919050565b60006060820190506124aa6000830186611fda565b6124b760208301856120c4565b6124c46040830184611fda565b949350505050565b600081905092915050565b60006124e282611ed6565b6124ec81856124cc565b93506124fc818560208601611ef2565b80840191505092915050565b600061251482856124d7565b915061252082846124d7565b91508190509392505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261258e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612551565b6125988683612551565b95508019841693508086168417925050509392505050565b60006125cb6125c66125c184611f77565b61230a565b611f77565b9050919050565b6000819050919050565b6125e5836125b0565b6125f96125f1826125d2565b84845461255e565b825550505050565b600090565b61260e612601565b6126198184846125dc565b505050565b5b8181101561263d57612632600082612606565b60018101905061261f565b5050565b601f821115612682576126538161252c565b61265c84612541565b8101602085101561266b578190505b61267f61267785612541565b83018261261e565b50505b505050565b600082821c905092915050565b60006126a560001984600802612687565b1980831691505092915050565b60006126be8383612694565b9150826002028217905092915050565b6126d782611ed6565b67ffffffffffffffff8111156126f0576126ef611c94565b5b6126fa8254612464565b612705828285612641565b600060209050601f8311600181146127385760008415612726578287015190505b61273085826126b2565b865550612798565b601f1984166127468661252c565b60005b8281101561276e57848901518255600182019150602085019450602081019050612749565b8683101561278b5784890151612787601f891682612694565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b60006127c7826127a0565b6127d181856127ab565b93506127e1818560208601611ef2565b6127ea81611c83565b840191505092915050565b600060808201905061280a6000830187611fda565b6128176020830186611fda565b61282460408301856120c4565b818103606083015261283681846127bc565b905095945050505050565b60008151905061285081611e47565b92915050565b60006020828403121561286c5761286b611c11565b5b600061287a84828501612841565b91505092915050565b60006040820190506128986000830185611fda565b6128a560208301846120c4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212209954ccde907e895b3f5c341d38a2b949e47528386602c532e96c05d17b1874d764736f6c634300081a0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000575a590e56acd5644c486e0dfa3d99bbb31e8246000000000000000000000000a2d888e24f2845bd7b1b4905ace869ca533e8c43000000000000000000000000000000000000000000000000000000000000001943756572706f207920616c6d6120616c206465736e75646f200000000000000000000000000000000000000000000000000000000000000000000000000000034e75640000000000000000000000000000000000000000000000000000000000