[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "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": 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": [], "name": "GingerbreadBuddiesListActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GingerbreadBuddiesListPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_PURCHASABLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" } ], "name": "addToGingerbreadBuddiesList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURIExtended", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "closeGingerbreadBuddiesList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "closeSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "extension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "mintGingerbreadBuddiesList", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "onGingerbreadBuddiesList", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "openGingerbreadBuddiesList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "openSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" } ], "name": "removeFromGingerbreadBuddiesList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "reserveTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": [], "name": "saleIsActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "_uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extension", "type": "string" } ], "name": "setExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newPrice", "type": "uint256" } ], "name": "setGingerbreadBuddiesListPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_payoutAddress", "type": "address" } ], "name": "setRoyaltyPayoutAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newPrice", "type": "uint256" } ], "name": "setTokenPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "_royalties", "type": "uint96" } ], "name": "setTokenRoyalties", "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": [], "name": "tokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenRoyalties", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "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": [ { "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": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080604052670429d069189e0000600c556702c68af0bb140000600d556040518060600160405280603681526020016200657e60369139600e908162000046919062000d7c565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600f90816200008d919062000d7c565b506000601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055506101f4601060026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055507385e6cc88f3055b589eb1d4030863be2cfcc0763e601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200015957600080fd5b506040518060400160405280601281526020017f47696e67657262726561644275646469657300000000000000000000000000008152506040518060400160405280601281526020017f47696e67657262726561644275646469657300000000000000000000000000008152508160029081620001d7919062000d7c565b508060039081620001e9919062000d7c565b50620001fa620002a060201b60201c565b60008190555050506200022262000216620002a560201b60201c565b620002ad60201b60201c565b60016009819055506200024c6200023e6200037360201b60201c565b60016200039d60201b60201c565b6200029a601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060029054906101000a90046bffffffffffffffffffffffff16620003c360201b60201c565b62001156565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003bf8282604051806020016040528060008152506200056660201b60201c565b5050565b620003d36200058060201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000434576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042b9062000eea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049d9062000f5c565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6200057b83838360016200058a60201b60201c565b505050565b6000612710905090565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603620005f7576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000840362000632576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200064760008683876200098260201b60201c565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156200081f57506200081e8773ffffffffffffffffffffffffffffffffffffffff166200098860201b620027361760201c565b5b15620008f1575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200089d60008884806001019550886200099b60201b60201c565b620008d4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80820362000826578260005414620008eb57600080fd5b6200095d565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203620008f2575b8160008190555050506200097b600086838762000afc60201b60201c565b5050505050565b50505050565b600080823b905060008111915050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620009c9620002a560201b60201c565b8786866040518563ffffffff1660e01b8152600401620009ed94939291906200106e565b6020604051808303816000875af192505050801562000a2c57506040513d601f19601f8201168201806040525081019062000a29919062001124565b60015b62000aa9573d806000811462000a5f576040519150601f19603f3d011682016040523d82523d6000602084013e62000a64565b606091505b50600081510362000aa1576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b8457607f821691505b60208210810362000b9a5762000b9962000b3c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bc5565b62000c10868362000bc5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c5d62000c5762000c518462000c28565b62000c32565b62000c28565b9050919050565b6000819050919050565b62000c798362000c3c565b62000c9162000c888262000c64565b84845462000bd2565b825550505050565b600090565b62000ca862000c99565b62000cb581848462000c6e565b505050565b5b8181101562000cdd5762000cd160008262000c9e565b60018101905062000cbb565b5050565b601f82111562000d2c5762000cf68162000ba0565b62000d018462000bb5565b8101602085101562000d11578190505b62000d2962000d208562000bb5565b83018262000cba565b50505b505050565b600082821c905092915050565b600062000d516000198460080262000d31565b1980831691505092915050565b600062000d6c838362000d3e565b9150826002028217905092915050565b62000d878262000b02565b67ffffffffffffffff81111562000da35762000da262000b0d565b5b62000daf825462000b6b565b62000dbc82828562000ce1565b600060209050601f83116001811462000df4576000841562000ddf578287015190505b62000deb858262000d5e565b86555062000e5b565b601f19841662000e048662000ba0565b60005b8281101562000e2e5784890151825560018201915060208501945060208101905062000e07565b8683101562000e4e578489015162000e4a601f89168262000d3e565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000ed2602a8362000e63565b915062000edf8262000e74565b604082019050919050565b6000602082019050818103600083015262000f058162000ec3565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000f4460198362000e63565b915062000f518262000f0c565b602082019050919050565b6000602082019050818103600083015262000f778162000f35565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fab8262000f7e565b9050919050565b62000fbd8162000f9e565b82525050565b62000fce8162000c28565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200101057808201518184015260208101905062000ff3565b60008484015250505050565b6000601f19601f8301169050919050565b60006200103a8262000fd4565b62001046818562000fdf565b93506200105881856020860162000ff0565b62001063816200101c565b840191505092915050565b600060808201905062001085600083018762000fb2565b62001094602083018662000fb2565b620010a3604083018562000fc3565b8181036060830152620010b781846200102d565b905095945050505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620010fe81620010c7565b81146200110a57600080fd5b50565b6000815190506200111e81620010f3565b92915050565b6000602082840312156200113d576200113c620010c2565b5b60006200114d848285016200110d565b91505092915050565b61541880620011666000396000f3fe6080604052600436106102675760003560e01c806370a0823111610144578063a5c71343116100b6578063dc4f3f8b1161007a578063dc4f3f8b1461089d578063e4d3d448146108da578063e985e9c514610905578063eb8d244414610942578063ee55efee1461096d578063f2fde38b1461098457610267565b8063a5c71343146107ba578063ae52afe5146107e5578063b88d4fde1461080e578063bbd75cc514610837578063c87b56dd1461086057610267565b806381e2ebbd1161010857806381e2ebbd146106d85780638da5cb5b146106f45780638fedd2ad1461071f57806395d89b411461074a578063a0712d6814610775578063a22cb4651461079157610267565b806370a0823114610607578063715018a61461064457806378cf19e91461065b5780637e2285aa146106845780637ff9b596146106ad57610267565b80632dff8423116101dd57806348e02884116101a157806348e02884146105215780634a5861601461053857806355f804b3146105615780635a73982d1461058a5780636352211e146105a15780636a61e5fc146105de57610267565b80632dff84231461046257806332cb6b0c1461048d5780633ccfd60b146104b857806342842e0e146104cf57806345aeefde146104f857610267565b8063167ff46f1161022f578063167ff46f1461036557806318160ddd1461037c5780631ebdcaae146103a757806323b872dd146103d05780632a55205a146103f95780632d5537b01461043757610267565b806301ffc9a71461026c57806306fdde03146102a9578063081812fc146102d4578063095ea7b314610311578063119e43981461033a575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613bbb565b6109ad565b6040516102a09190613c03565b60405180910390f35b3480156102b557600080fd5b506102be6109bf565b6040516102cb9190613cae565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190613d06565b610a51565b6040516103089190613d74565b60405180910390f35b34801561031d57600080fd5b5061033860048036038101906103339190613dbb565b610acd565b005b34801561034657600080fd5b5061034f610bd7565b60405161035c9190613e0a565b60405180910390f35b34801561037157600080fd5b5061037a610bdc565b005b34801561038857600080fd5b50610391610c75565b60405161039e9190613e0a565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c99190613e69565b610c8c565b005b3480156103dc57600080fd5b506103f760048036038101906103f29190613e96565b610d82565b005b34801561040557600080fd5b50610420600480360381019061041b9190613ee9565b610d92565b60405161042e929190613f29565b60405180910390f35b34801561044357600080fd5b5061044c610f7c565b6040516104599190613cae565b60405180910390f35b34801561046e57600080fd5b5061047761100a565b6040516104849190613f61565b60405180910390f35b34801561049957600080fd5b506104a2611028565b6040516104af9190613e0a565b60405180910390f35b3480156104c457600080fd5b506104cd61102e565b005b3480156104db57600080fd5b506104f660048036038101906104f19190613e96565b611133565b005b34801561050457600080fd5b5061051f600480360381019061051a9190613f7c565b611153565b005b34801561052d57600080fd5b50610536611259565b005b34801561054457600080fd5b5061055f600480360381019061055a919061400e565b6112f2565b005b34801561056d57600080fd5b506105886004803603810190610583919061418b565b6114a9565b005b34801561059657600080fd5b5061059f611538565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190613d06565b6115d1565b6040516105d59190613d74565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190613d06565b6115e7565b005b34801561061357600080fd5b5061062e60048036038101906106299190613f7c565b61166d565b60405161063b9190613e0a565b60405180910390f35b34801561065057600080fd5b5061065961173c565b005b34801561066757600080fd5b50610682600480360381019061067d9190613dbb565b6117c4565b005b34801561069057600080fd5b506106ab60048036038101906106a6919061418b565b6118b1565b005b3480156106b957600080fd5b506106c2611940565b6040516106cf9190613e0a565b60405180910390f35b6106f260048036038101906106ed9190613d06565b611946565b005b34801561070057600080fd5b50610709611c1f565b6040516107169190613d74565b60405180910390f35b34801561072b57600080fd5b50610734611c49565b6040516107419190613e0a565b60405180910390f35b34801561075657600080fd5b5061075f611c4f565b60405161076c9190613cae565b60405180910390f35b61078f600480360381019061078a9190613d06565b611ce1565b005b34801561079d57600080fd5b506107b860048036038101906107b39190614200565b611f2e565b005b3480156107c657600080fd5b506107cf6120a5565b6040516107dc9190613c03565b60405180910390f35b3480156107f157600080fd5b5061080c60048036038101906108079190613d06565b6120b8565b005b34801561081a57600080fd5b50610835600480360381019061083091906142e1565b61213e565b005b34801561084357600080fd5b5061085e6004803603810190610859919061400e565b6121ba565b005b34801561086c57600080fd5b5061088760048036038101906108829190613d06565b612371565b6040516108949190613cae565b60405180910390f35b3480156108a957600080fd5b506108c460048036038101906108bf9190613f7c565b61241b565b6040516108d19190613c03565b60405180910390f35b3480156108e657600080fd5b506108ef612471565b6040516108fc9190613cae565b60405180910390f35b34801561091157600080fd5b5061092c60048036038101906109279190614364565b6124ff565b6040516109399190613c03565b60405180910390f35b34801561094e57600080fd5b50610957612593565b6040516109649190613c03565b60405180910390f35b34801561097957600080fd5b506109826125a6565b005b34801561099057600080fd5b506109ab60048036038101906109a69190613f7c565b61263f565b005b60006109b882612749565b9050919050565b6060600280546109ce906143d3565b80601f01602080910402602001604051908101604052809291908181526020018280546109fa906143d3565b8015610a475780601f10610a1c57610100808354040283529160200191610a47565b820191906000526020600020905b815481529060010190602001808311610a2a57829003601f168201915b5050505050905090565b6000610a5c826127c3565b610a92576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ad8826115d1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b3f576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b5e612811565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b905750610b8e81610b89612811565b6124ff565b155b15610bc7576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd2838383612819565b505050565b600f81565b610be4612811565b73ffffffffffffffffffffffffffffffffffffffff16610c02611c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90614450565b60405180910390fd5b6001601060006101000a81548160ff021916908315150217905550565b6000610c7f6128cb565b6001546000540303905090565b610c94612811565b73ffffffffffffffffffffffffffffffffffffffff16610cb2611c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90614450565b60405180910390fd5b80601060026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550610d7f601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060029054906101000a90046bffffffffffffffffffffffff166128d0565b50565b610d8d838383612a65565b505050565b6000806000600b60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610f2757600a6040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610f31612f19565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610f5d919061449f565b610f679190614510565b90508160000151819350935050509250929050565b600f8054610f89906143d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb5906143d3565b80156110025780601f10610fd757610100808354040283529160200191611002565b820191906000526020600020905b815481529060010190602001808311610fe557829003601f168201915b505050505081565b601060029054906101000a90046bffffffffffffffffffffffff1681565b61012c81565b611036612811565b73ffffffffffffffffffffffffffffffffffffffff16611054611c1f565b73ffffffffffffffffffffffffffffffffffffffff16146110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a190614450565b60405180910390fd5b6000479050600081116110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e9906145b3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505061113057600080fd5b50565b61114e8383836040518060200160405280600081525061213e565b505050565b61115b612811565b73ffffffffffffffffffffffffffffffffffffffff16611179611c1f565b73ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690614450565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611256601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060029054906101000a90046bffffffffffffffffffffffff166128d0565b50565b611261612811565b73ffffffffffffffffffffffffffffffffffffffff1661127f611c1f565b73ffffffffffffffffffffffffffffffffffffffff16146112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90614450565b60405180910390fd5b6001601060016101000a81548160ff021916908315150217905550565b6112fa612811565b73ffffffffffffffffffffffffffffffffffffffff16611318611c1f565b73ffffffffffffffffffffffffffffffffffffffff161461136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136590614450565b60405180910390fd5b60005b828290508110156114a457600073ffffffffffffffffffffffffffffffffffffffff168383838181106113a7576113a66145d3565b5b90506020020160208101906113bc9190613f7c565b73ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990614674565b60405180910390fd5b60006012600085858581811061142b5761142a6145d3565b5b90506020020160208101906114409190613f7c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061149c90614694565b915050611371565b505050565b6114b1612811565b73ffffffffffffffffffffffffffffffffffffffff166114cf611c1f565b73ffffffffffffffffffffffffffffffffffffffff1614611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90614450565b60405180910390fd5b80600e90816115349190614888565b5050565b611540612811565b73ffffffffffffffffffffffffffffffffffffffff1661155e611c1f565b73ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90614450565b60405180910390fd5b6000601060016101000a81548160ff021916908315150217905550565b60006115dc82612f23565b600001519050919050565b6115ef612811565b73ffffffffffffffffffffffffffffffffffffffff1661160d611c1f565b73ffffffffffffffffffffffffffffffffffffffff1614611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a90614450565b60405180910390fd5b80600c8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d4576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611744612811565b73ffffffffffffffffffffffffffffffffffffffff16611762611c1f565b73ffffffffffffffffffffffffffffffffffffffff16146117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af90614450565b60405180910390fd5b6117c260006131b2565b565b6117cc612811565b73ffffffffffffffffffffffffffffffffffffffff166117ea611c1f565b73ffffffffffffffffffffffffffffffffffffffff1614611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790614450565b60405180910390fd5b600081118015611864575061012c611856610c75565b82611861919061495a565b11155b6118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a906149da565b60405180910390fd5b6118ad8282613278565b5050565b6118b9612811565b73ffffffffffffffffffffffffffffffffffffffff166118d7611c1f565b73ffffffffffffffffffffffffffffffffffffffff161461192d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192490614450565b60405180910390fd5b80600f908161193c9190614888565b5050565b600c5481565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab90614a6c565b60405180910390fd5b6002600954036119f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f090614ad8565b60405180910390fd5b6002600981905550601060019054906101000a900460ff16611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790614b6a565b60405180910390fd5b60008111611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90614bfc565b60405180910390fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690614c8e565b60405180910390fd5b61012c81611b2b610c75565b611b35919061495a565b1115611b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d90614d20565b60405180910390fd5b600f811115611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190614db2565b60405180910390fd5b3481600d54611bc9919061449f565b1115611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190614e44565b60405180910390fd5b611c143382613278565b600160098190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b606060038054611c5e906143d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8a906143d3565b8015611cd75780601f10611cac57610100808354040283529160200191611cd7565b820191906000526020600020905b815481529060010190602001808311611cba57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4690614a6c565b60405180910390fd5b600260095403611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8b90614ad8565b60405180910390fd5b6002600981905550601060009054906101000a900460ff16611deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de290614ed6565b60405180910390fd5b60008111611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2590614bfc565b60405180910390fd5b600f811115611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990614db2565b60405180910390fd5b61012c81611e7e610c75565b611e88919061495a565b1115611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec090614d20565b60405180910390fd5b3481600c54611ed8919061449f565b1115611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1090614e44565b60405180910390fd5b611f233382613278565b600160098190555050565b611f36612811565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f9a576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611fa7612811565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612054612811565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120999190613c03565b60405180910390a35050565b601060019054906101000a900460ff1681565b6120c0612811565b73ffffffffffffffffffffffffffffffffffffffff166120de611c1f565b73ffffffffffffffffffffffffffffffffffffffff1614612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90614450565b60405180910390fd5b80600d8190555050565b612149848484612a65565b6121688373ffffffffffffffffffffffffffffffffffffffff16612736565b801561217d575061217b84848484613296565b155b156121b4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6121c2612811565b73ffffffffffffffffffffffffffffffffffffffff166121e0611c1f565b73ffffffffffffffffffffffffffffffffffffffff1614612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90614450565b60405180910390fd5b60005b8282905081101561236c57600073ffffffffffffffffffffffffffffffffffffffff1683838381811061226f5761226e6145d3565b5b90506020020160208101906122849190613f7c565b73ffffffffffffffffffffffffffffffffffffffff16036122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d190614f68565b60405180910390fd5b6001601260008585858181106122f3576122f26145d3565b5b90506020020160208101906123089190613f7c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061236490614694565b915050612239565b505050565b606061237c826127c3565b6123bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b290614ffa565b60405180910390fd5b60006123c56133e6565b905060008151116123e55760405180602001604052806000815250612413565b806123ef84613478565b600f604051602001612403939291906150d9565b6040516020818303038152906040525b915050919050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e805461247e906143d3565b80601f01602080910402602001604051908101604052809291908181526020018280546124aa906143d3565b80156124f75780601f106124cc576101008083540402835291602001916124f7565b820191906000526020600020905b8154815290600101906020018083116124da57829003601f168201915b505050505081565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b601060009054906101000a900460ff1681565b6125ae612811565b73ffffffffffffffffffffffffffffffffffffffff166125cc611c1f565b73ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261990614450565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b612647612811565b73ffffffffffffffffffffffffffffffffffffffff16612665611c1f565b73ffffffffffffffffffffffffffffffffffffffff16146126bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b290614450565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361272a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127219061517c565b60405180910390fd5b612733816131b2565b50565b600080823b905060008111915050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127bc57506127bb826135d8565b5b9050919050565b6000816127ce6128cb565b111580156127dd575060005482105b801561280a575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6128d8612f19565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d9061520e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c9061527a565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612a7082612f23565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612adb576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16612afc612811565b73ffffffffffffffffffffffffffffffffffffffff161480612b2b5750612b2a85612b25612811565b6124ff565b5b80612b705750612b39612811565b73ffffffffffffffffffffffffffffffffffffffff16612b5884610a51565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612ba9576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612c0f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c1c85858560016136ba565b612c2860008487612819565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612ea7576000548214612ea657878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f1285858560016136c0565b5050505050565b6000612710905090565b612f2b613b0c565b600082905080612f396128cb565b11158015612f48575060005481105b1561317b576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161317957600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461305d5780925050506131ad565b5b60011561317857818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146131735780925050506131ad565b61305e565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6132928282604051806020016040528060008152506136c6565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026132bc612811565b8786866040518563ffffffff1660e01b81526004016132de94939291906152ef565b6020604051808303816000875af192505050801561331a57506040513d601f19601f820116820180604052508101906133179190615350565b60015b613393573d806000811461334a576040519150601f19603f3d011682016040523d82523d6000602084013e61334f565b606091505b50600081510361338b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600e80546133f5906143d3565b80601f0160208091040260200160405190810160405280929190818152602001828054613421906143d3565b801561346e5780601f106134435761010080835404028352916020019161346e565b820191906000526020600020905b81548152906001019060200180831161345157829003601f168201915b5050505050905090565b6060600082036134bf576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506135d3565b600082905060005b600082146134f15780806134da90614694565b915050600a826134ea9190614510565b91506134c7565b60008167ffffffffffffffff81111561350d5761350c614060565b5b6040519080825280601f01601f19166020018201604052801561353f5781602001600182028036833780820191505090505b5090505b600085146135cc57600182613558919061537d565b9150600a8561356791906153b1565b6030613573919061495a565b60f81b818381518110613589576135886145d3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856135c59190614510565b9450613543565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806136a357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806136b357506136b2826136d8565b5b9050919050565b50505050565b50505050565b6136d38383836001613742565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036137ae576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084036137e8576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6137f560008683876136ba565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156139bf57506139be8773ffffffffffffffffffffffffffffffffffffffff16612736565b5b15613a84575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613a346000888480600101955088613296565b613a6a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082036139c5578260005414613a7f57600080fd5b613aef565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203613a85575b816000819055505050613b0560008683876136c0565b5050505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613b9881613b63565b8114613ba357600080fd5b50565b600081359050613bb581613b8f565b92915050565b600060208284031215613bd157613bd0613b59565b5b6000613bdf84828501613ba6565b91505092915050565b60008115159050919050565b613bfd81613be8565b82525050565b6000602082019050613c186000830184613bf4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c58578082015181840152602081019050613c3d565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c8082613c1e565b613c8a8185613c29565b9350613c9a818560208601613c3a565b613ca381613c64565b840191505092915050565b60006020820190508181036000830152613cc88184613c75565b905092915050565b6000819050919050565b613ce381613cd0565b8114613cee57600080fd5b50565b600081359050613d0081613cda565b92915050565b600060208284031215613d1c57613d1b613b59565b5b6000613d2a84828501613cf1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d5e82613d33565b9050919050565b613d6e81613d53565b82525050565b6000602082019050613d896000830184613d65565b92915050565b613d9881613d53565b8114613da357600080fd5b50565b600081359050613db581613d8f565b92915050565b60008060408385031215613dd257613dd1613b59565b5b6000613de085828601613da6565b9250506020613df185828601613cf1565b9150509250929050565b613e0481613cd0565b82525050565b6000602082019050613e1f6000830184613dfb565b92915050565b60006bffffffffffffffffffffffff82169050919050565b613e4681613e25565b8114613e5157600080fd5b50565b600081359050613e6381613e3d565b92915050565b600060208284031215613e7f57613e7e613b59565b5b6000613e8d84828501613e54565b91505092915050565b600080600060608486031215613eaf57613eae613b59565b5b6000613ebd86828701613da6565b9350506020613ece86828701613da6565b9250506040613edf86828701613cf1565b9150509250925092565b60008060408385031215613f0057613eff613b59565b5b6000613f0e85828601613cf1565b9250506020613f1f85828601613cf1565b9150509250929050565b6000604082019050613f3e6000830185613d65565b613f4b6020830184613dfb565b9392505050565b613f5b81613e25565b82525050565b6000602082019050613f766000830184613f52565b92915050565b600060208284031215613f9257613f91613b59565b5b6000613fa084828501613da6565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613fce57613fcd613fa9565b5b8235905067ffffffffffffffff811115613feb57613fea613fae565b5b60208301915083602082028301111561400757614006613fb3565b5b9250929050565b6000806020838503121561402557614024613b59565b5b600083013567ffffffffffffffff81111561404357614042613b5e565b5b61404f85828601613fb8565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61409882613c64565b810181811067ffffffffffffffff821117156140b7576140b6614060565b5b80604052505050565b60006140ca613b4f565b90506140d6828261408f565b919050565b600067ffffffffffffffff8211156140f6576140f5614060565b5b6140ff82613c64565b9050602081019050919050565b82818337600083830152505050565b600061412e614129846140db565b6140c0565b90508281526020810184848401111561414a5761414961405b565b5b61415584828561410c565b509392505050565b600082601f83011261417257614171613fa9565b5b813561418284826020860161411b565b91505092915050565b6000602082840312156141a1576141a0613b59565b5b600082013567ffffffffffffffff8111156141bf576141be613b5e565b5b6141cb8482850161415d565b91505092915050565b6141dd81613be8565b81146141e857600080fd5b50565b6000813590506141fa816141d4565b92915050565b6000806040838503121561421757614216613b59565b5b600061422585828601613da6565b9250506020614236858286016141eb565b9150509250929050565b600067ffffffffffffffff82111561425b5761425a614060565b5b61426482613c64565b9050602081019050919050565b600061428461427f84614240565b6140c0565b9050828152602081018484840111156142a05761429f61405b565b5b6142ab84828561410c565b509392505050565b600082601f8301126142c8576142c7613fa9565b5b81356142d8848260208601614271565b91505092915050565b600080600080608085870312156142fb576142fa613b59565b5b600061430987828801613da6565b945050602061431a87828801613da6565b935050604061432b87828801613cf1565b925050606085013567ffffffffffffffff81111561434c5761434b613b5e565b5b614358878288016142b3565b91505092959194509250565b6000806040838503121561437b5761437a613b59565b5b600061438985828601613da6565b925050602061439a85828601613da6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143eb57607f821691505b6020821081036143fe576143fd6143a4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061443a602083613c29565b915061444582614404565b602082019050919050565b600060208201905081810360008301526144698161442d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144aa82613cd0565b91506144b583613cd0565b92508282026144c381613cd0565b915082820484148315176144da576144d9614470565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061451b82613cd0565b915061452683613cd0565b925082614536576145356144e1565b5b828204905092915050565b7f47696e6765726272656164427564646965733a204e6f7468696e6720746f207760008201527f6974686472617700000000000000000000000000000000000000000000000000602082015250565b600061459d602783613c29565b91506145a882614541565b604082019050919050565b600060208201905081810360008301526145cc81614590565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f47696e6765726272656164427564646965733a2043616e27742072656d6f766560008201527f20746865206e756c6c2061646472657373000000000000000000000000000000602082015250565b600061465e603183613c29565b915061466982614602565b604082019050919050565b6000602082019050818103600083015261468d81614651565b9050919050565b600061469f82613cd0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146d1576146d0614470565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261473e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614701565b6147488683614701565b95508019841693508086168417925050509392505050565b6000819050919050565b600061478561478061477b84613cd0565b614760565b613cd0565b9050919050565b6000819050919050565b61479f8361476a565b6147b36147ab8261478c565b84845461470e565b825550505050565b600090565b6147c86147bb565b6147d3818484614796565b505050565b5b818110156147f7576147ec6000826147c0565b6001810190506147d9565b5050565b601f82111561483c5761480d816146dc565b614816846146f1565b81016020851015614825578190505b614839614831856146f1565b8301826147d8565b50505b505050565b600082821c905092915050565b600061485f60001984600802614841565b1980831691505092915050565b6000614878838361484e565b9150826002028217905092915050565b61489182613c1e565b67ffffffffffffffff8111156148aa576148a9614060565b5b6148b482546143d3565b6148bf8282856147fb565b600060209050601f8311600181146148f257600084156148e0578287015190505b6148ea858261486c565b865550614952565b601f198416614900866146dc565b60005b8281101561492857848901518255600182019150602085019450602081019050614903565b868310156149455784890151614941601f89168261484e565b8355505b6001600288020188555050505b505050505050565b600061496582613cd0565b915061497083613cd0565b925082820190508082111561498857614987614470565b5b92915050565b7f4e6f7420656e6f7567682072657365727665206c65667420666f72207465616d600082015250565b60006149c4602083613c29565b91506149cf8261498e565b602082019050919050565b600060208201905081810360008301526149f3816149b7565b9050919050565b7f47696e6765726272656164427564646965733a205468652063616c6c6572206960008201527f7320616e6f7468657220636f6e74726163740000000000000000000000000000602082015250565b6000614a56603283613c29565b9150614a61826149fa565b604082019050919050565b60006020820190508181036000830152614a8581614a49565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614ac2601f83613c29565b9150614acd82614a8c565b602082019050919050565b60006020820190508181036000830152614af181614ab5565b9050919050565b7f47696e6765726272656164427564646965733a2047696e67657262726561644260008201527f756464696573204c697374206d696e74206973206e6f74206163746976650000602082015250565b6000614b54603e83613c29565b9150614b5f82614af8565b604082019050919050565b60006020820190508181036000830152614b8381614b47565b9050919050565b7f47696e6765726272656164427564646965733a204d696e696d756d206d696e7460008201527f206973203120746f6b656e000000000000000000000000000000000000000000602082015250565b6000614be6602b83613c29565b9150614bf182614b8a565b604082019050919050565b60006020820190508181036000830152614c1581614bd9565b9050919050565b7f47696e6765726272656164427564646965733a20596f7520617265206e6f742060008201527f6f6e207468652047696e676572627265616442756464696573204c6973740000602082015250565b6000614c78603e83613c29565b9150614c8382614c1c565b604082019050919050565b60006020820190508181036000830152614ca781614c6b565b9050919050565b7f47696e6765726272656164427564646965733a20507572636861736520776f7560008201527f6c6420657863656564204d41585f535550504c59000000000000000000000000602082015250565b6000614d0a603483613c29565b9150614d1582614cae565b604082019050919050565b60006020820190508181036000830152614d3981614cfd565b9050919050565b7f47696e6765726272656164427564646965733a2050757263686173652065786360008201527f65656473206d617820616c6c6f77656400000000000000000000000000000000602082015250565b6000614d9c603083613c29565b9150614da782614d40565b604082019050919050565b60006020820190508181036000830152614dcb81614d8f565b9050919050565b7f47696e6765726272656164427564646965733a204156415820616d6f756e742060008201527f6973206e6f742073756666696369656e74000000000000000000000000000000602082015250565b6000614e2e603183613c29565b9150614e3982614dd2565b604082019050919050565b60006020820190508181036000830152614e5d81614e21565b9050919050565b7f47696e6765726272656164427564646965733a2053616c65206973206e6f742060008201527f6163746976650000000000000000000000000000000000000000000000000000602082015250565b6000614ec0602683613c29565b9150614ecb82614e64565b604082019050919050565b60006020820190508181036000830152614eef81614eb3565b9050919050565b7f47696e6765726272656164427564646965733a2043616e27742061646420746860008201527f65206e756c6c2061646472657373000000000000000000000000000000000000602082015250565b6000614f52602e83613c29565b9150614f5d82614ef6565b604082019050919050565b60006020820190508181036000830152614f8181614f45565b9050919050565b7f47696e6765726272656164427564646965733a20546f6b656e20646f6573206e60008201527f6f74206578697374000000000000000000000000000000000000000000000000602082015250565b6000614fe4602883613c29565b9150614fef82614f88565b604082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b600081905092915050565b600061503082613c1e565b61503a818561501a565b935061504a818560208601613c3a565b80840191505092915050565b60008154615063816143d3565b61506d818661501a565b94506001821660008114615088576001811461509d576150d0565b60ff19831686528115158202860193506150d0565b6150a6856146dc565b60005b838110156150c8578154818901526001820191506020810190506150a9565b838801955050505b50505092915050565b60006150e58286615025565b91506150f18285615025565b91506150fd8284615056565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615166602683613c29565b91506151718261510a565b604082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b60006151f8602a83613c29565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000615264601983613c29565b915061526f8261522e565b602082019050919050565b6000602082019050818103600083015261529381615257565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006152c18261529a565b6152cb81856152a5565b93506152db818560208601613c3a565b6152e481613c64565b840191505092915050565b60006080820190506153046000830187613d65565b6153116020830186613d65565b61531e6040830185613dfb565b818103606083015261533081846152b6565b905095945050505050565b60008151905061534a81613b8f565b92915050565b60006020828403121561536657615365613b59565b5b60006153748482850161533b565b91505092915050565b600061538882613cd0565b915061539383613cd0565b92508282039050818111156153ab576153aa614470565b5b92915050565b60006153bc82613cd0565b91506153c783613cd0565b9250826153d7576153d66144e1565b5b82820690509291505056fea264697066735822122054d0d3e1128c23b1284c510fb3d996a6ff54758e9cc60b3dc6d8f6d69d25f34e64736f6c63430008110033697066733a2f2f516d516d67783259785161545552374e416445516948585a734468647a69633262654d694844727a6b564c7443472f