[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorNotAllowed", "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": "MAX_TOKENS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OPERATOR_FILTER_REGISTRY", "outputs": [ { "internalType": "contract IOperatorFilterRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "_state", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenPrice", "type": "uint256" }, { "internalType": "uint256", "name": "maxTokensPerTx", "type": "uint256" }, { "internalType": "uint256", "name": "MAX_TOKENS", "type": "uint256" }, { "internalType": "bool", "name": "saleIsActive", "type": "bool" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "internalType": "uint256", "name": "userMinted", "type": "uint256" }, { "internalType": "uint256", "name": "defaultTokensPerTx", "type": "uint256" }, { "internalType": "uint256", "name": "additionPerAmount", "type": "uint256" }, { "internalType": "uint256", "name": "refPercent", "type": "uint256" } ], "internalType": "struct BaseVoyage.HelperState", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "additionPerAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultTokensPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "adr", "type": "address" } ], "name": "getRefCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "maxTokensPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" }, { "internalType": "address", "name": "ref", "type": "address" } ], "name": "mintToken", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextOwnerToExplicitlySet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "numberMinted", "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": "refPercent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "uint256", "name": "_additionPerAmount", "type": "uint256" } ], "name": "setAdditionPerAmount", "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": "newURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_defaultTokensPerTx", "type": "uint256" } ], "name": "setDefaultTokensPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTokensPerTx", "type": "uint256" } ], "name": "setMaxTokensPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_refPercent", "type": "uint256" } ], "name": "setRefPercent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeBasisPoints", "type": "uint96" } ], "name": "setRoyaltyInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newTokenPrice", "type": "uint256" } ], "name": "setTokenPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mode", "type": "uint256" } ], "name": "setTokenURIMode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "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" } ]
60c0604052600080556000600755604051806060016040528060328152602001620066a360329139600b90805190602001906200003e929190620006a2565b50660a4d88ddd94000600c556103e8600d556005600e556000600f5560006010556000601260006101000a81548160ff0219169083600281111562000088576200008762000752565b5b02179055503480156200009a57600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600b81526020017f4261736520566f796167650000000000000000000000000000000000000000008152506040518060400160405280600281526020017f42560000000000000000000000000000000000000000000000000000000000008152506064620f4240600081116200016a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001619062000808565b60405180910390fd5b60008211620001b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a790620008a0565b60405180910390fd5b8360019080519060200190620001c8929190620006a2565b508260029080519060200190620001e1929190620006a2565b508160a08181525050806080818152505050505050620002166200020a6200042760201b60201c565b6200042f60201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200040b578015620002d1576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200029792919062000907565b600060405180830381600087803b158015620002b257600080fd5b505af1158015620002c7573d6000803e3d6000fd5b505050506200040a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200038b576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200035192919062000907565b600060405180830381600087803b1580156200036c57600080fd5b505af115801562000381573d6000803e3d6000fd5b5050505062000409565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401620003d4919062000934565b600060405180830381600087803b158015620003ef57600080fd5b505af115801562000404573d6000803e3d6000fd5b505050505b5b5b505062000421336101f4620004f560201b60201c565b62000abf565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005056200069860201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000566576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200055d90620009c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005cf9062000a39565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b828054620006b09062000a8a565b90600052602060002090601f016020900481019282620006d4576000855562000720565b82601f10620006ef57805160ff191683800117855562000720565b8280016001018555821562000720579182015b828111156200071f57825182559160200191906001019062000702565b5b5090506200072f919062000733565b5090565b5b808211156200074e57600081600090555060010162000734565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b6000620007f0602e8362000781565b9150620007fd8262000792565b604082019050919050565b600060208201905081810360008301526200082381620007e1565b9050919050565b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b60006200088860278362000781565b915062000895826200082a565b604082019050919050565b60006020820190508181036000830152620008bb8162000879565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008ef82620008c2565b9050919050565b6200090181620008e2565b82525050565b60006040820190506200091e6000830185620008f6565b6200092d6020830184620008f6565b9392505050565b60006020820190506200094b6000830184620008f6565b92915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000620009af602a8362000781565b9150620009bc8262000951565b604082019050919050565b60006020820190508181036000830152620009e281620009a0565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000a2160198362000781565b915062000a2e82620009e9565b602082019050919050565b6000602082019050818103600083015262000a548162000a12565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000aa357607f821691505b60208210810362000ab95762000ab862000a5b565b5b50919050565b60805160a051615bb362000af0600039600081816127fb01528181612824015261363d015260005050615bb36000f3fe6080604052600436106102675760003560e01c8063681c8bac11610144578063a140ae23116100b6578063d7224ba01161007a578063d7224ba014610930578063dc33e6811461095b578063e757223014610998578063e985e9c5146109d5578063f2fde38b14610a12578063f47c84c514610a3b57610267565b8063a140ae231461085c578063a22cb46514610878578063b88d4fde146108a1578063b9bed05e146108ca578063c87b56dd146108f357610267565b8063715018a611610108578063715018a61461077257806378cf19e9146107895780637ff9b596146107b25780638da5cb5b146107dd578063900c71f51461080857806395d89b411461083157610267565b8063681c8bac1461068d5780636a61e5fc146106b85780636c0360eb146106e15780636fa4f5f71461070c57806370a082311461073557610267565b806341f43434116101dd5780634f6ccce7116101a15780634f6ccce71461056957806355f804b3146105a6578063577ac23f146105cf57806359d5335b146105fa5780635e307a48146106255780636352211e1461065057610267565b806341f434341461048657806342842e0e146104b157806348b86a72146104da578063495e1eba146105035780634df8bb451461052c57610267565b806318160ddd1161022f57806318160ddd1461036357806323b872dd1461038e5780632a55205a146103b75780632f745c59146103f557806334a25ad9146104325780633ccfd60b1461046f57610267565b806301ffc9a71461026c57806302fa7c47146102a957806306fdde03146102d2578063081812fc146102fd578063095ea7b31461033a575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613e02565b610a66565b6040516102a09190613e4a565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190613f07565b610a78565b005b3480156102de57600080fd5b506102e7610b02565b6040516102f49190613fe0565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190614038565b610b94565b6040516103319190614074565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c919061408f565b610c19565b005b34801561036f57600080fd5b50610378610c32565b60405161038591906140de565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b091906140f9565b610c3b565b005b3480156103c357600080fd5b506103de60048036038101906103d9919061414c565b610c8a565b6040516103ec92919061418c565b60405180910390f35b34801561040157600080fd5b5061041c6004803603810190610417919061408f565b610e74565b60405161042991906140de565b60405180910390f35b34801561043e57600080fd5b50610459600480360381019061045491906141b5565b611070565b60405161046691906140de565b60405180910390f35b34801561047b57600080fd5b506104846110b9565b005b34801561049257600080fd5b5061049b611184565b6040516104a89190614241565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d391906140f9565b611196565b005b3480156104e657600080fd5b5061050160048036038101906104fc9190614038565b6111e5565b005b34801561050f57600080fd5b5061052a60048036038101906105259190614038565b61126b565b005b34801561053857600080fd5b50610553600480360381019061054e91906141b5565b6112f1565b6040516105609190614331565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190614038565b61139b565b60405161059d91906140de565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190614482565b6113ee565b005b3480156105db57600080fd5b506105e4611484565b6040516105f191906140de565b60405180910390f35b34801561060657600080fd5b5061060f61148a565b60405161061c91906140de565b60405180910390f35b34801561063157600080fd5b5061063a611490565b60405161064791906140de565b60405180910390f35b34801561065c57600080fd5b5061067760048036038101906106729190614038565b611496565b6040516106849190614074565b60405180910390f35b34801561069957600080fd5b506106a26114ac565b6040516106af91906140de565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190614038565b6114b2565b005b3480156106ed57600080fd5b506106f6611538565b6040516107039190613fe0565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190614038565b6115c6565b005b34801561074157600080fd5b5061075c600480360381019061075791906141b5565b61164c565b60405161076991906140de565b60405180910390f35b34801561077e57600080fd5b50610787611734565b005b34801561079557600080fd5b506107b060048036038101906107ab919061408f565b6117bc565b005b3480156107be57600080fd5b506107c761189e565b6040516107d491906140de565b60405180910390f35b3480156107e957600080fd5b506107f26118a4565b6040516107ff9190614074565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a9190614038565b6118ce565b005b34801561083d57600080fd5b506108466119ea565b6040516108539190613fe0565b60405180910390f35b610876600480360381019061087191906144cb565b611a7c565b005b34801561088457600080fd5b5061089f600480360381019061089a9190614537565b611d3b565b005b3480156108ad57600080fd5b506108c860048036038101906108c39190614618565b611d54565b005b3480156108d657600080fd5b506108f160048036038101906108ec9190614038565b611da5565b005b3480156108ff57600080fd5b5061091a60048036038101906109159190614038565b611e2b565b6040516109279190613fe0565b60405180910390f35b34801561093c57600080fd5b5061094561208b565b60405161095291906140de565b60405180910390f35b34801561096757600080fd5b50610982600480360381019061097d91906141b5565b612091565b60405161098f91906140de565b60405180910390f35b3480156109a457600080fd5b506109bf60048036038101906109ba9190614038565b6120a3565b6040516109cc91906140de565b60405180910390f35b3480156109e157600080fd5b506109fc60048036038101906109f7919061469b565b6120ba565b604051610a099190613e4a565b60405180910390f35b348015610a1e57600080fd5b50610a396004803603810190610a3491906141b5565b61214e565b005b348015610a4757600080fd5b50610a50612245565b604051610a5d91906140de565b60405180910390f35b6000610a718261224c565b9050919050565b610a806122c6565b73ffffffffffffffffffffffffffffffffffffffff16610a9e6118a4565b73ffffffffffffffffffffffffffffffffffffffff1614610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90614727565b60405180910390fd5b610afe82826122ce565b5050565b606060018054610b1190614776565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3d90614776565b8015610b8a5780601f10610b5f57610100808354040283529160200191610b8a565b820191906000526020600020905b815481529060010190602001808311610b6d57829003601f168201915b5050505050905090565b6000610b9f82612463565b610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590614819565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b81610c2381612470565b610c2d838361256d565b505050565b60008054905090565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c7957610c7833612470565b5b610c84848484612685565b50505050565b6000806000600960008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610e1f5760086040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610e29612695565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610e559190614868565b610e5f91906148f1565b90508160000151819350935050509250929050565b6000610e7f8361164c565b8210610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790614994565b60405180910390fd5b6000610eca610c32565b905060008060005b8381101561102e576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610fc457806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101a5786840361100b57819550505050505061106a565b8380611016906149b4565b9450505b508080611026906149b4565b915050610ed2565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106190614a6e565b60405180910390fd5b92915050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110c16122c6565b73ffffffffffffffffffffffffffffffffffffffff166110df6118a4565b73ffffffffffffffffffffffffffffffffffffffff1614611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90614727565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611180573d6000803e3d6000fd5b5050565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111d4576111d333612470565b5b6111df84848461269f565b50505050565b6111ed6122c6565b73ffffffffffffffffffffffffffffffffffffffff1661120b6118a4565b73ffffffffffffffffffffffffffffffffffffffff1614611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890614727565b60405180910390fd5b80600f8190555050565b6112736122c6565b73ffffffffffffffffffffffffffffffffffffffff166112916118a4565b73ffffffffffffffffffffffffffffffffffffffff16146112e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de90614727565b60405180910390fd5b80600e8190555050565b6112f9613c6b565b604051806101200160405280600c548152602001600d548152602001620f4240815260200160011515815260200161132f610c32565b8152602001600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461137657611371846126bf565b611379565b60005b8152602001600e548152602001600f5481526020016010548152509050919050565b60006113a5610c32565b82106113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90614b00565b60405180910390fd5b819050919050565b6113f66122c6565b73ffffffffffffffffffffffffffffffffffffffff166114146118a4565b73ffffffffffffffffffffffffffffffffffffffff161461146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190614727565b60405180910390fd5b80600b9080519060200190611480929190613cb9565b5050565b600f5481565b60105481565b600d5481565b60006114a1826127a7565b600001519050919050565b600e5481565b6114ba6122c6565b73ffffffffffffffffffffffffffffffffffffffff166114d86118a4565b73ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590614727565b60405180910390fd5b80600c8190555050565b600b805461154590614776565b80601f016020809104026020016040519081016040528092919081815260200182805461157190614776565b80156115be5780601f10611593576101008083540402835291602001916115be565b820191906000526020600020905b8154815290600101906020018083116115a157829003601f168201915b505050505081565b6115ce6122c6565b73ffffffffffffffffffffffffffffffffffffffff166115ec6118a4565b73ffffffffffffffffffffffffffffffffffffffff1614611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990614727565b60405180910390fd5b8060108190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b390614b92565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61173c6122c6565b73ffffffffffffffffffffffffffffffffffffffff1661175a6118a4565b73ffffffffffffffffffffffffffffffffffffffff16146117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a790614727565b60405180910390fd5b6117ba60006129aa565b565b6117c46122c6565b73ffffffffffffffffffffffffffffffffffffffff166117e26118a4565b73ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90614727565b60405180910390fd5b620f424081611845610c32565b61184f9190614bb2565b1115611890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188790614c54565b60405180910390fd5b61189a8282612a70565b5050565b600c5481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118d66122c6565b73ffffffffffffffffffffffffffffffffffffffff166118f46118a4565b73ffffffffffffffffffffffffffffffffffffffff161461194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194190614727565b60405180910390fd5b60028103611982576001601260006101000a81548160ff0219169083600281111561197857611977614c74565b5b02179055506119e7565b600181036119ba576000601260006101000a81548160ff021916908360028111156119b0576119af614c74565b5b02179055506119e6565b6002601260006101000a81548160ff021916908360028111156119e0576119df614c74565b5b02179055505b5b50565b6060600280546119f990614776565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2590614776565b8015611a725780601f10611a4757610100808354040283529160200191611a72565b820191906000526020600020905b815481529060010190602001808311611a5557829003601f168201915b5050505050905090565b600d54821115611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890614cef565b60405180910390fd5b60008211611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90614d5b565b60405180910390fd5b600c5482611b129190614868565b341015611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90614dc7565b60405180910390fd5b60008290506000600f54118015611b6d5750600f548310155b8015611b945750620f4240600f5484611b8691906148f1565b84611b919190614bb2565b11155b15611bb557600f5483611ba791906148f1565b83611bb29190614bb2565b90505b620f424081611bc2610c32565b611bcc9190614bb2565b1115611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490614e33565b60405180910390fd5b611c173382612a70565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d3657600034118015611c5d57506000600c54115b8015611c6b57506000601054115b15611cdf578173ffffffffffffffffffffffffffffffffffffffff166108fc612710600c5486601054611c9e9190614868565b611ca89190614868565b611cb291906148f1565b9081150290604051600060405180830381858888f19350505050158015611cdd573d6000803e3d6000fd5b505b82601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d2e9190614bb2565b925050819055505b505050565b81611d4581612470565b611d4f8383612a8e565b505050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d9257611d9133612470565b5b611d9e85858585612c0e565b5050505050565b611dad6122c6565b73ffffffffffffffffffffffffffffffffffffffff16611dcb6118a4565b73ffffffffffffffffffffffffffffffffffffffff1614611e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1890614727565b60405180910390fd5b80600d8190555050565b6060611e3682612463565b611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90614e9f565b60405180910390fd5b60016002811115611e8957611e88614c74565b5b601260009054906101000a900460ff166002811115611eab57611eaa614c74565b5b03611f0e576000600b8054611ebf90614776565b905011611edb5760405180602001604052806000815250611f07565b600b611ee683612c6a565b604051602001611ef7929190614f8f565b6040516020818303038152906040525b9050612086565b60006002811115611f2257611f21614c74565b5b601260009054906101000a900460ff166002811115611f4457611f43614c74565b5b03611fa7576000600b8054611f5890614776565b905011611f745760405180602001604052806000815250611fa0565b600b611f7f83612c6a565b604051602001611f90929190614fff565b6040516020818303038152906040525b9050612086565b600280811115611fba57611fb9614c74565b5b601260009054906101000a900460ff166002811115611fdc57611fdb614c74565b5b0361207357600b8054611fee90614776565b80601f016020809104026020016040519081016040528092919081815260200182805461201a90614776565b80156120675780601f1061203c57610100808354040283529160200191612067565b820191906000526020600020905b81548152906001019060200180831161204a57829003601f168201915b50505050509050612086565b6040518060200160405280600081525090505b919050565b60075481565b600061209c826126bf565b9050919050565b6000600c54826120b39190614868565b9050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6121566122c6565b73ffffffffffffffffffffffffffffffffffffffff166121746118a4565b73ffffffffffffffffffffffffffffffffffffffff16146121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190614727565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612239576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612230906150a0565b60405180910390fd5b612242816129aa565b50565b620f424081565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806122bf57506122be82612dca565b5b9050919050565b600033905090565b6122d6612695565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115612334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232b90615132565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a9061519e565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000805482109050919050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b111561256a576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016124e79291906151be565b602060405180830381865afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252891906151fc565b61256957806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016125609190614074565b60405180910390fd5b5b50565b600061257882611496565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125df9061529b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166126076122c6565b73ffffffffffffffffffffffffffffffffffffffff1614806126365750612635816126306122c6565b6120ba565b5b612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266c9061532d565b60405180910390fd5b612680838383612f14565b505050565b612690838383612fc6565b505050565b6000612710905090565b6126ba83838360405180602001604052806000815250611d54565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361272f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612726906153bf565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6127af613d3f565b6127b882612463565b6127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee90615451565b60405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000831061285b5760017f00000000000000000000000000000000000000000000000000000000000000008461284e9190615471565b6128589190614bb2565b90505b60008390505b818110612969576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612955578093505050506129a5565b508080612961906154a5565b915050612861565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c90615540565b60405180910390fd5b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a8a82826040518060200160405280600081525061357d565b5050565b612a966122c6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afa906155ac565b60405180910390fd5b8060066000612b106122c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612bbd6122c6565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612c029190613e4a565b60405180910390a35050565b612c19848484612fc6565b612c2584848484613a5b565b612c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5b9061563e565b60405180910390fd5b50505050565b606060008203612cb1576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612dc5565b600082905060005b60008214612ce3578080612ccc906149b4565b915050600a82612cdc91906148f1565b9150612cb9565b60008167ffffffffffffffff811115612cff57612cfe614357565b5b6040519080825280601f01601f191660200182016040528015612d315781602001600182028036833780820191505090505b5090505b60008514612dbe57600182612d4a9190615471565b9150600a85612d59919061565e565b6030612d659190614bb2565b60f81b818381518110612d7b57612d7a61568f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612db791906148f1565b9450612d35565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612e9557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612efd57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612f0d5750612f0c82613be2565b5b9050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612fd1826127a7565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612ff86122c6565b73ffffffffffffffffffffffffffffffffffffffff161480613054575061301d6122c6565b73ffffffffffffffffffffffffffffffffffffffff1661303c84610b94565b73ffffffffffffffffffffffffffffffffffffffff16145b80613070575061306f826000015161306a6122c6565b6120ba565b5b9050806130b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a990615730565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614613124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311b906157c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318a90615854565b60405180910390fd5b6131a08585856001613c4c565b6131b06000848460000151612f14565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661321e9190615890565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166132c291906158c4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846133c89190614bb2565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361350d5761343d81612463565b1561350c576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135758686866001613c52565b505050505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e99061597c565b60405180910390fd5b6135fb81612463565b1561363b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613632906159e8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000083111561369e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369590615a7a565b60405180910390fd5b6136ab6000858386613c4c565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516137a891906158c4565b6fffffffffffffffffffffffffffffffff1681526020018583602001516137cf91906158c4565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015613a3e57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46139de6000888488613a5b565b613a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a149061563e565b60405180910390fd5b8180613a28906149b4565b9250508080613a36906149b4565b91505061396d565b5080600081905550613a536000878588613c52565b505050505050565b6000613a7c8473ffffffffffffffffffffffffffffffffffffffff16613c58565b15613bd5578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613aa56122c6565b8786866040518563ffffffff1660e01b8152600401613ac79493929190615aef565b6020604051808303816000875af1925050508015613b0357506040513d601f19601f82011682018060405250810190613b009190615b50565b60015b613b85573d8060008114613b33576040519150601f19603f3d011682016040523d82523d6000602084013e613b38565b606091505b506000815103613b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b749061563e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613bda565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b50505050565b50505050565b600080823b905060008111915050919050565b60405180610120016040528060008152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054613cc590614776565b90600052602060002090601f016020900481019282613ce75760008555613d2e565b82601f10613d0057805160ff1916838001178555613d2e565b82800160010185558215613d2e579182015b82811115613d2d578251825591602001919060010190613d12565b5b509050613d3b9190613d79565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613d92576000816000905550600101613d7a565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613ddf81613daa565b8114613dea57600080fd5b50565b600081359050613dfc81613dd6565b92915050565b600060208284031215613e1857613e17613da0565b5b6000613e2684828501613ded565b91505092915050565b60008115159050919050565b613e4481613e2f565b82525050565b6000602082019050613e5f6000830184613e3b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e9082613e65565b9050919050565b613ea081613e85565b8114613eab57600080fd5b50565b600081359050613ebd81613e97565b92915050565b60006bffffffffffffffffffffffff82169050919050565b613ee481613ec3565b8114613eef57600080fd5b50565b600081359050613f0181613edb565b92915050565b60008060408385031215613f1e57613f1d613da0565b5b6000613f2c85828601613eae565b9250506020613f3d85828601613ef2565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f81578082015181840152602081019050613f66565b83811115613f90576000848401525b50505050565b6000601f19601f8301169050919050565b6000613fb282613f47565b613fbc8185613f52565b9350613fcc818560208601613f63565b613fd581613f96565b840191505092915050565b60006020820190508181036000830152613ffa8184613fa7565b905092915050565b6000819050919050565b61401581614002565b811461402057600080fd5b50565b6000813590506140328161400c565b92915050565b60006020828403121561404e5761404d613da0565b5b600061405c84828501614023565b91505092915050565b61406e81613e85565b82525050565b60006020820190506140896000830184614065565b92915050565b600080604083850312156140a6576140a5613da0565b5b60006140b485828601613eae565b92505060206140c585828601614023565b9150509250929050565b6140d881614002565b82525050565b60006020820190506140f360008301846140cf565b92915050565b60008060006060848603121561411257614111613da0565b5b600061412086828701613eae565b935050602061413186828701613eae565b925050604061414286828701614023565b9150509250925092565b6000806040838503121561416357614162613da0565b5b600061417185828601614023565b925050602061418285828601614023565b9150509250929050565b60006040820190506141a16000830185614065565b6141ae60208301846140cf565b9392505050565b6000602082840312156141cb576141ca613da0565b5b60006141d984828501613eae565b91505092915050565b6000819050919050565b60006142076142026141fd84613e65565b6141e2565b613e65565b9050919050565b6000614219826141ec565b9050919050565b600061422b8261420e565b9050919050565b61423b81614220565b82525050565b60006020820190506142566000830184614232565b92915050565b61426581614002565b82525050565b61427481613e2f565b82525050565b61012082016000820151614291600085018261425c565b5060208201516142a4602085018261425c565b5060408201516142b7604085018261425c565b5060608201516142ca606085018261426b565b5060808201516142dd608085018261425c565b5060a08201516142f060a085018261425c565b5060c082015161430360c085018261425c565b5060e082015161431660e085018261425c565b5061010082015161432b61010085018261425c565b50505050565b600061012082019050614347600083018461427a565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61438f82613f96565b810181811067ffffffffffffffff821117156143ae576143ad614357565b5b80604052505050565b60006143c1613d96565b90506143cd8282614386565b919050565b600067ffffffffffffffff8211156143ed576143ec614357565b5b6143f682613f96565b9050602081019050919050565b82818337600083830152505050565b6000614425614420846143d2565b6143b7565b90508281526020810184848401111561444157614440614352565b5b61444c848285614403565b509392505050565b600082601f8301126144695761446861434d565b5b8135614479848260208601614412565b91505092915050565b60006020828403121561449857614497613da0565b5b600082013567ffffffffffffffff8111156144b6576144b5613da5565b5b6144c284828501614454565b91505092915050565b600080604083850312156144e2576144e1613da0565b5b60006144f085828601614023565b925050602061450185828601613eae565b9150509250929050565b61451481613e2f565b811461451f57600080fd5b50565b6000813590506145318161450b565b92915050565b6000806040838503121561454e5761454d613da0565b5b600061455c85828601613eae565b925050602061456d85828601614522565b9150509250929050565b600067ffffffffffffffff82111561459257614591614357565b5b61459b82613f96565b9050602081019050919050565b60006145bb6145b684614577565b6143b7565b9050828152602081018484840111156145d7576145d6614352565b5b6145e2848285614403565b509392505050565b600082601f8301126145ff576145fe61434d565b5b813561460f8482602086016145a8565b91505092915050565b6000806000806080858703121561463257614631613da0565b5b600061464087828801613eae565b945050602061465187828801613eae565b935050604061466287828801614023565b925050606085013567ffffffffffffffff81111561468357614682613da5565b5b61468f878288016145ea565b91505092959194509250565b600080604083850312156146b2576146b1613da0565b5b60006146c085828601613eae565b92505060206146d185828601613eae565b9150509250929050565b7f596f7520617265206e6f7420746865206f776e65720000000000000000000000600082015250565b6000614711601583613f52565b915061471c826146db565b602082019050919050565b6000602082019050818103600083015261474081614704565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061478e57607f821691505b6020821081036147a1576147a0614747565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000614803602d83613f52565b915061480e826147a7565b604082019050919050565b60006020820190508181036000830152614832816147f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061487382614002565b915061487e83614002565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148b7576148b6614839565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006148fc82614002565b915061490783614002565b925082614917576149166148c2565b5b828204905092915050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b600061497e602283613f52565b915061498982614922565b604082019050919050565b600060208201905081810360008301526149ad81614971565b9050919050565b60006149bf82614002565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149f1576149f0614839565b5b600182019050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b6000614a58602e83613f52565b9150614a63826149fc565b604082019050919050565b60006020820190508181036000830152614a8781614a4b565b9050919050565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b6000614aea602383613f52565b9150614af582614a8e565b604082019050919050565b60006020820190508181036000830152614b1981614add565b9050919050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614b7c602b83613f52565b9150614b8782614b20565b604082019050919050565b60006020820190508181036000830152614bab81614b6f565b9050919050565b6000614bbd82614002565b9150614bc883614002565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614bfd57614bfc614839565b5b828201905092915050565b7f457863656564206d617820737570706c79206f6620746f6b656e730000000000600082015250565b6000614c3e601b83613f52565b9150614c4982614c08565b602082019050919050565b60006020820190508181036000830152614c6d81614c31565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f457863656564206d617820746f6b656e73207065722074780000000000000000600082015250565b6000614cd9601883613f52565b9150614ce482614ca3565b602082019050919050565b60006020820190508181036000830152614d0881614ccc565b9050919050565b7f4d757374206d696e74206174206c65617374206f6e6500000000000000000000600082015250565b6000614d45601683613f52565b9150614d5082614d0f565b602082019050919050565b60006020820190508181036000830152614d7481614d38565b9050919050565b7f4e6f7420656e6f75676820657468657200000000000000000000000000000000600082015250565b6000614db1601083613f52565b9150614dbc82614d7b565b602082019050919050565b60006020820190508181036000830152614de081614da4565b9050919050565b7f457863656564206d617820737570706c79000000000000000000000000000000600082015250565b6000614e1d601183613f52565b9150614e2882614de7565b602082019050919050565b60006020820190508181036000830152614e4c81614e10565b9050919050565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b6000614e89601583613f52565b9150614e9482614e53565b602082019050919050565b60006020820190508181036000830152614eb881614e7c565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154614eec81614776565b614ef68186614ebf565b94506001821660008114614f115760018114614f2257614f55565b60ff19831686528186019350614f55565b614f2b85614eca565b60005b83811015614f4d57815481890152600182019150602081019050614f2e565b838801955050505b50505092915050565b6000614f6982613f47565b614f738185614ebf565b9350614f83818560208601613f63565b80840191505092915050565b6000614f9b8285614edf565b9150614fa78284614f5e565b91508190509392505050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000614fe9600583614ebf565b9150614ff482614fb3565b600582019050919050565b600061500b8285614edf565b91506150178284614f5e565b915061502282614fdc565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061508a602683613f52565b91506150958261502e565b604082019050919050565b600060208201905081810360008301526150b98161507d565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600061511c602a83613f52565b9150615127826150c0565b604082019050919050565b6000602082019050818103600083015261514b8161510f565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000615188601983613f52565b915061519382615152565b602082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b60006040820190506151d36000830185614065565b6151e06020830184614065565b9392505050565b6000815190506151f68161450b565b92915050565b60006020828403121561521257615211613da0565b5b6000615220848285016151e7565b91505092915050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000615285602283613f52565b915061529082615229565b604082019050919050565b600060208201905081810360008301526152b481615278565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000615317603983613f52565b9150615322826152bb565b604082019050919050565b600060208201905081810360008301526153468161530a565b9050919050565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b60006153a9603183613f52565b91506153b48261534d565b604082019050919050565b600060208201905081810360008301526153d88161539c565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b600061543b602a83613f52565b9150615446826153df565b604082019050919050565b6000602082019050818103600083015261546a8161542e565b9050919050565b600061547c82614002565b915061548783614002565b92508282101561549a57615499614839565b5b828203905092915050565b60006154b082614002565b9150600082036154c3576154c2614839565b5b600182039050919050565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b600061552a602f83613f52565b9150615535826154ce565b604082019050919050565b600060208201905081810360008301526155598161551d565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b6000615596601a83613f52565b91506155a182615560565b602082019050919050565b600060208201905081810360008301526155c581615589565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b6000615628603383613f52565b9150615633826155cc565b604082019050919050565b600060208201905081810360008301526156578161561b565b9050919050565b600061566982614002565b915061567483614002565b925082615684576156836148c2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b600061571a603283613f52565b9150615725826156be565b604082019050919050565b600060208201905081810360008301526157498161570d565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b60006157ac602683613f52565b91506157b782615750565b604082019050919050565b600060208201905081810360008301526157db8161579f565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061583e602583613f52565b9150615849826157e2565b604082019050919050565b6000602082019050818103600083015261586d81615831565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061589b82615874565b91506158a683615874565b9250828210156158b9576158b8614839565b5b828203905092915050565b60006158cf82615874565b91506158da83615874565b9250826fffffffffffffffffffffffffffffffff038211156158ff576158fe614839565b5b828201905092915050565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615966602183613f52565b91506159718261590a565b604082019050919050565b6000602082019050818103600083015261599581615959565b9050919050565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b60006159d2601d83613f52565b91506159dd8261599c565b602082019050919050565b60006020820190508181036000830152615a01816159c5565b9050919050565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6000615a64602283613f52565b9150615a6f82615a08565b604082019050919050565b60006020820190508181036000830152615a9381615a57565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000615ac182615a9a565b615acb8185615aa5565b9350615adb818560208601613f63565b615ae481613f96565b840191505092915050565b6000608082019050615b046000830187614065565b615b116020830186614065565b615b1e60408301856140cf565b8181036060830152615b308184615ab6565b905095945050505050565b600081519050615b4a81613dd6565b92915050565b600060208284031215615b6657615b65613da0565b5b6000615b7484828501615b3b565b9150509291505056fea26469706673582212206613def8e6250d007e6e6ea7d6816e3e79452f2887d31e156c1a8e9f1161541c64736f6c634300080d003368747470733a2f2f697066732d7265736f757263652e73332e616d617a6f6e6177732e636f6d2f62617365766f796167652f