[ { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "uint256", "name": "startTokenId_", "type": "uint256" }, { "internalType": "uint256", "name": "mintAmount_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "mintNum", "type": "uint256" } ], "name": "MaxMintLimitReached", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "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": "string", "name": "uri", "type": "string" } ], "name": "BaseURISet", "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": false, "internalType": "bool", "name": "generated", "type": "bool" } ], "name": "SetGenerated", "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "batchMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "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": "isGenerated", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "mintOne", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId_", "type": "uint256" } ], "name": "mintTokenId", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenId", "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": "realOwner", "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": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "generated_", "type": "bool" } ], "name": "setGenerated", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startingTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "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": "transferLowerOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRealOwner", "type": "address" } ], "name": "transferRealOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60c06040526040518060400160405280601b81526020017f68747470733a2f2f7777772e3078686f6e65796a61722e78797a2f0000000000815250600990816200004a919062000507565b503480156200005857600080fd5b5060405162003b5038038062003b5083398181016040528101906200007e919062000689565b826040518060400160405280600881526020017f486f6e65794a61720000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f484f4e45594a41520000000000000000000000000000000000000000000000008152508160009081620000fc919062000507565b5080600190816200010e919062000507565b5050506200013162000125620001bf60201b60201c565b620001c760201b60201c565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200018381620001c760201b60201c565b5081608081815250508160088190555060018183620001a3919062000714565b620001af91906200074f565b60a081815250505050506200078a565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200030f57607f821691505b602082108103620003255762000324620002c7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200038f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000350565b6200039b868362000350565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003e8620003e2620003dc84620003b3565b620003bd565b620003b3565b9050919050565b6000819050919050565b6200040483620003c7565b6200041c6200041382620003ef565b8484546200035d565b825550505050565b600090565b6200043362000424565b62000440818484620003f9565b505050565b5b8181101562000468576200045c60008262000429565b60018101905062000446565b5050565b601f821115620004b75762000481816200032b565b6200048c8462000340565b810160208510156200049c578190505b620004b4620004ab8562000340565b83018262000445565b50505b505050565b600082821c905092915050565b6000620004dc60001984600802620004bc565b1980831691505092915050565b6000620004f78383620004c9565b9150826002028217905092915050565b62000512826200028d565b67ffffffffffffffff8111156200052e576200052d62000298565b5b6200053a8254620002f6565b620005478282856200046c565b600060209050601f8311600181146200057f57600084156200056a578287015190505b620005768582620004e9565b865550620005e6565b601f1984166200058f866200032b565b60005b82811015620005b95784890151825560018201915060208501945060208101905062000592565b86831015620005d95784890151620005d5601f891682620004c9565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200062082620005f3565b9050919050565b620006328162000613565b81146200063e57600080fd5b50565b600081519050620006528162000627565b92915050565b6200066381620003b3565b81146200066f57600080fd5b50565b600081519050620006838162000658565b92915050565b600080600060608486031215620006a557620006a4620005ee565b5b6000620006b58682870162000641565b9350506020620006c88682870162000672565b9250506040620006db8682870162000672565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200072182620003b3565b91506200072e83620003b3565b9250828201905080821115620007495762000748620006e5565b5b92915050565b60006200075c82620003b3565b91506200076983620003b3565b9250828203905081811115620007845762000783620006e5565b5b92915050565b60805160a051613392620007be60003960008181610e13015281816110d9015261110301526000610edf01526133926000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636352211e1161010457806395d89b41116100a2578063c87b56dd11610071578063c87b56dd146104de578063e985e9c51461050e578063f2fde38b1461053e578063fa695a971461055a576101cf565b806395d89b411461046a578063a22cb46514610488578063b4f18d8d146104a4578063b88d4fde146104c2576101cf565b8063715018a6116100de578063715018a61461040657806375794a3c146104105780638da5cb5b1461042e57806391ba317a1461044c576101cf565b80636352211e1461038a57806364c0276d146103ba57806370a08231146103d6576101cf565b806323b872dd1161017157806342842e0e1161014b57806342842e0e1461031a57806342966c681461033657806343508b051461035257806355f804b31461036e576101cf565b806323b872dd146102c65780632cff6770146102e257806332761d16146102fe576101cf565b8063081812fc116101ad578063081812fc14610240578063095ea7b31461027057806309af3f9a1461028c5780631df270f3146102a8576101cf565b806301ffc9a7146101d457806303289bef1461020457806306fdde0314610222575b600080fd5b6101ee60048036038101906101e99190612104565b61058a565b6040516101fb919061214c565b60405180910390f35b61020c61066c565b604051610219919061214c565b60405180910390f35b61022a61067f565b60405161023791906121f7565b60405180910390f35b61025a6004803603810190610255919061224f565b610711565b60405161026791906122bd565b60405180910390f35b61028a60048036038101906102859190612304565b610757565b005b6102a660048036038101906102a19190612344565b61086e565b005b6102b061090a565b6040516102bd91906122bd565b60405180910390f35b6102e060048036038101906102db9190612371565b610930565b005b6102fc60048036038101906102f79190612344565b610990565b005b61031860048036038101906103139190612304565b610a64565b005b610334600480360381019061032f9190612371565b610a72565b005b610350600480360381019061034b919061224f565b610a92565b005b61036c60048036038101906103679190612304565b610a9e565b005b61038860048036038101906103839190612429565b610ac9565b005b6103a4600480360381019061039f919061224f565b610ba8565b6040516103b191906122bd565b60405180910390f35b6103d460048036038101906103cf91906124a2565b610c2e565b005b6103f060048036038101906103eb9190612344565b610d12565b6040516103fd91906124de565b60405180910390f35b61040e610dc9565b005b610418610ddd565b60405161042591906124de565b60405180910390f35b610436610de7565b60405161044391906122bd565b60405180910390f35b610454610e11565b60405161046191906124de565b60405180910390f35b610472610e35565b60405161047f91906121f7565b60405180910390f35b6104a2600480360381019061049d91906124f9565b610ec7565b005b6104ac610edd565b6040516104b991906124de565b60405180910390f35b6104dc60048036038101906104d79190612669565b610f01565b005b6104f860048036038101906104f3919061224f565b610f63565b60405161050591906121f7565b60405180910390f35b610528600480360381019061052391906126ec565b610fbe565b604051610535919061214c565b60405180910390f35b61055860048036038101906105539190612344565b611052565b005b610574600480360381019061056f9190612344565b6110d5565b60405161058191906124de565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061065557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061066557506106648261118e565b5b9050919050565b600a60009054906101000a900460ff1681565b60606000805461068e9061275b565b80601f01602080910402602001604051908101604052809291908181526020018280546106ba9061275b565b80156107075780601f106106dc57610100808354040283529160200191610707565b820191906000526020600020905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b600061071c826111f8565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076282610ba8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c9906127fe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107f1611243565b73ffffffffffffffffffffffffffffffffffffffff161480610820575061081f8161081a611243565b610fbe565b5b61085f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085690612890565b60405180910390fd5b610869838361124b565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612922565b60405180910390fd5b61090781611304565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61094161093b611243565b826113ca565b610980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610977906129b4565b60405180910390fd5b61098b83838361145f565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1790612922565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a6e8282611758565b5050565b610a8d83838360405180602001604052806000815250610f01565b505050565b610a9b81611776565b50565b60005b81811015610ac457610ab2836110d5565b5080610abd90612a03565b9050610aa1565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5090612922565b60405180910390fd5b818160099182610b6a929190612c02565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f68282604051610b9c929190612cff565b60405180910390a15050565b600080610bb4836118c4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c90612d6f565b60405180910390fd5b80915050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb590612922565b60405180910390fd5b80600a60006101000a81548160ff0219169083151502179055507fd9287ca271d54f89b84fe3d24eea189b9c993b828aae6587cb62ed7fbd654d3b81604051610d07919061214c565b60405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7990612e01565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dd1611901565b610ddb6000611304565b565b6000600854905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060018054610e449061275b565b80601f0160208091040260200160405190810160405280929190818152602001828054610e709061275b565b8015610ebd5780601f10610e9257610100808354040283529160200191610ebd565b820191906000526020600020905b815481529060010190602001808311610ea057829003601f168201915b5050505050905090565b610ed9610ed2611243565b838361197f565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f12610f0c611243565b836113ca565b610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f48906129b4565b60405180910390fd5b610f5d84848484611aeb565b50505050565b60606000610f6f611b47565b9050600a60009054906101000a900460ff16610f8b5780610fb6565b80610f9584611bd9565b604051602001610fa6929190612e5d565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61105a611901565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c090612ef3565b60405180910390fd5b6110d281611304565b50565b60007f0000000000000000000000000000000000000000000000000000000000000000600854111561115e577f00000000000000000000000000000000000000000000000000000000000000006040517f9c931f4800000000000000000000000000000000000000000000000000000000815260040161115591906124de565b60405180910390fd5b6000600854905060086000815461117490612a03565b919050819055506111858382611758565b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61120181611c29565b611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123790612d6f565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166112be83610ba8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806113d683610ba8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061141857506114178185610fbe565b5b8061145657508373ffffffffffffffffffffffffffffffffffffffff1661143e84610711565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661147f82610ba8565b73ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90612f85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90613017565b60405180910390fd5b6115518383836001611c6a565b8273ffffffffffffffffffffffffffffffffffffffff1661157182610ba8565b73ffffffffffffffffffffffffffffffffffffffff16146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be90612f85565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117538383836001611c70565b505050565b611772828260405180602001604052806000815250611c76565b5050565b600061178182610ba8565b9050611791816000846001611c6a565b61179a82610ba8565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118c0816000846001611c70565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611909611243565b73ffffffffffffffffffffffffffffffffffffffff16611927610de7565b73ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490613083565b60405180910390fd5b565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e4906130ef565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ade919061214c565b60405180910390a3505050565b611af684848461145f565b611b0284848484611cd1565b611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613181565b60405180910390fd5b50505050565b606060098054611b569061275b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b829061275b565b8015611bcf5780601f10611ba457610100808354040283529160200191611bcf565b820191906000526020600020905b815481529060010190602001808311611bb257829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b600115611c1457600184039350600a81066030018453600a8104905080611bf2575b50828103602084039350808452505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611c4b836118c4565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b611c808383611e58565b611c8d6000848484611cd1565b611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc390613181565b60405180910390fd5b505050565b6000611cf28473ffffffffffffffffffffffffffffffffffffffff16612075565b15611e4b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d1b611243565b8786866040518563ffffffff1660e01b8152600401611d3d94939291906131f6565b6020604051808303816000875af1925050508015611d7957506040513d601f19601f82011682018060405250810190611d769190613257565b60015b611dfb573d8060008114611da9576040519150601f19603f3d011682016040523d82523d6000602084013e611dae565b606091505b506000815103611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90613181565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611e50565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebe906132d0565b60405180910390fd5b611ed081611c29565b15611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f079061333c565b60405180910390fd5b611f1e600083836001611c6a565b611f2781611c29565b15611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e9061333c565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612071600083836001611c70565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6120e1816120ac565b81146120ec57600080fd5b50565b6000813590506120fe816120d8565b92915050565b60006020828403121561211a576121196120a2565b5b6000612128848285016120ef565b91505092915050565b60008115159050919050565b61214681612131565b82525050565b6000602082019050612161600083018461213d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121a1578082015181840152602081019050612186565b60008484015250505050565b6000601f19601f8301169050919050565b60006121c982612167565b6121d38185612172565b93506121e3818560208601612183565b6121ec816121ad565b840191505092915050565b6000602082019050818103600083015261221181846121be565b905092915050565b6000819050919050565b61222c81612219565b811461223757600080fd5b50565b60008135905061224981612223565b92915050565b600060208284031215612265576122646120a2565b5b60006122738482850161223a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122a78261227c565b9050919050565b6122b78161229c565b82525050565b60006020820190506122d260008301846122ae565b92915050565b6122e18161229c565b81146122ec57600080fd5b50565b6000813590506122fe816122d8565b92915050565b6000806040838503121561231b5761231a6120a2565b5b6000612329858286016122ef565b925050602061233a8582860161223a565b9150509250929050565b60006020828403121561235a576123596120a2565b5b6000612368848285016122ef565b91505092915050565b60008060006060848603121561238a576123896120a2565b5b6000612398868287016122ef565b93505060206123a9868287016122ef565b92505060406123ba8682870161223a565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126123e9576123e86123c4565b5b8235905067ffffffffffffffff811115612406576124056123c9565b5b602083019150836001820283011115612422576124216123ce565b5b9250929050565b600080602083850312156124405761243f6120a2565b5b600083013567ffffffffffffffff81111561245e5761245d6120a7565b5b61246a858286016123d3565b92509250509250929050565b61247f81612131565b811461248a57600080fd5b50565b60008135905061249c81612476565b92915050565b6000602082840312156124b8576124b76120a2565b5b60006124c68482850161248d565b91505092915050565b6124d881612219565b82525050565b60006020820190506124f360008301846124cf565b92915050565b600080604083850312156125105761250f6120a2565b5b600061251e858286016122ef565b925050602061252f8582860161248d565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612576826121ad565b810181811067ffffffffffffffff821117156125955761259461253e565b5b80604052505050565b60006125a8612098565b90506125b4828261256d565b919050565b600067ffffffffffffffff8211156125d4576125d361253e565b5b6125dd826121ad565b9050602081019050919050565b82818337600083830152505050565b600061260c612607846125b9565b61259e565b90508281526020810184848401111561262857612627612539565b5b6126338482856125ea565b509392505050565b600082601f8301126126505761264f6123c4565b5b81356126608482602086016125f9565b91505092915050565b60008060008060808587031215612683576126826120a2565b5b6000612691878288016122ef565b94505060206126a2878288016122ef565b93505060406126b38782880161223a565b925050606085013567ffffffffffffffff8111156126d4576126d36120a7565b5b6126e08782880161263b565b91505092959194509250565b60008060408385031215612703576127026120a2565b5b6000612711858286016122ef565b9250506020612722858286016122ef565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061277357607f821691505b6020821081036127865761278561272c565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006127e8602183612172565b91506127f38261278c565b604082019050919050565b60006020820190508181036000830152612817816127db565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b600061287a603d83612172565b91506128858261281e565b604082019050919050565b600060208201905081810360008301526128a98161286d565b9050919050565b7f4d756c74697369674f776e61626c653a2063616c6c6572206973206e6f74207460008201527f6865207265616c206f776e657200000000000000000000000000000000000000602082015250565b600061290c602d83612172565b9150612917826128b0565b604082019050919050565b6000602082019050818103600083015261293b816128ff565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b600061299e602d83612172565b91506129a982612942565b604082019050919050565b600060208201905081810360008301526129cd81612991565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a0e82612219565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a4057612a3f6129d4565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612ab87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612a7b565b612ac28683612a7b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612aff612afa612af584612219565b612ada565b612219565b9050919050565b6000819050919050565b612b1983612ae4565b612b2d612b2582612b06565b848454612a88565b825550505050565b600090565b612b42612b35565b612b4d818484612b10565b505050565b5b81811015612b7157612b66600082612b3a565b600181019050612b53565b5050565b601f821115612bb657612b8781612a56565b612b9084612a6b565b81016020851015612b9f578190505b612bb3612bab85612a6b565b830182612b52565b50505b505050565b600082821c905092915050565b6000612bd960001984600802612bbb565b1980831691505092915050565b6000612bf28383612bc8565b9150826002028217905092915050565b612c0c8383612a4b565b67ffffffffffffffff811115612c2557612c2461253e565b5b612c2f825461275b565b612c3a828285612b75565b6000601f831160018114612c695760008415612c57578287013590505b612c618582612be6565b865550612cc9565b601f198416612c7786612a56565b60005b82811015612c9f57848901358255600182019150602085019450602081019050612c7a565b86831015612cbc5784890135612cb8601f891682612bc8565b8355505b6001600288020188555050505b50505050505050565b6000612cde8385612172565b9350612ceb8385846125ea565b612cf4836121ad565b840190509392505050565b60006020820190508181036000830152612d1a818486612cd2565b90509392505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612d59601883612172565b9150612d6482612d23565b602082019050919050565b60006020820190508181036000830152612d8881612d4c565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612deb602983612172565b9150612df682612d8f565b604082019050919050565b60006020820190508181036000830152612e1a81612dde565b9050919050565b600081905092915050565b6000612e3782612167565b612e418185612e21565b9350612e51818560208601612183565b80840191505092915050565b6000612e698285612e2c565b9150612e758284612e2c565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612edd602683612172565b9150612ee882612e81565b604082019050919050565b60006020820190508181036000830152612f0c81612ed0565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612f6f602583612172565b9150612f7a82612f13565b604082019050919050565b60006020820190508181036000830152612f9e81612f62565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613001602483612172565b915061300c82612fa5565b604082019050919050565b6000602082019050818103600083015261303081612ff4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061306d602083612172565b915061307882613037565b602082019050919050565b6000602082019050818103600083015261309c81613060565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006130d9601983612172565b91506130e4826130a3565b602082019050919050565b60006020820190508181036000830152613108816130cc565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061316b603283612172565b91506131768261310f565b604082019050919050565b6000602082019050818103600083015261319a8161315e565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006131c8826131a1565b6131d281856131ac565b93506131e2818560208601612183565b6131eb816121ad565b840191505092915050565b600060808201905061320b60008301876122ae565b61321860208301866122ae565b61322560408301856124cf565b818103606083015261323781846131bd565b905095945050505050565b600081519050613251816120d8565b92915050565b60006020828403121561326d5761326c6120a2565b5b600061327b84828501613242565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006132ba602083612172565b91506132c582613284565b602082019050919050565b600060208201905081810360008301526132e9816132ad565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613326601c83612172565b9150613331826132f0565b602082019050919050565b6000602082019050818103600083015261335581613319565b905091905056fea2646970667358221220a0f4d41cb2c326a1dd01db1d4298bccc8282d2db997f5c62212303a363b05d6364736f6c63430008140033000000000000000000000000979c341edb41e42b3c7e1206df38fe27c0557a34000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000007d0