[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "baseURI_", "type": "string" }, { "internalType": "uint256[]", "name": "_allowedMasks", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_allowedValues", "type": "uint256[]" }, { "internalType": "uint256", "name": "_basisPoints", "type": "uint256" }, { "internalType": "address", "name": "_payee", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": 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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNMINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_allowedTokenIDConfigs", "outputs": [ { "internalType": "uint256", "name": "mask", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_defaultRoyalties", "outputs": [ { "internalType": "uint24", "name": "basisPoints", "type": "uint24" }, { "internalType": "address", "name": "payee", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_getDefaultRoyalties", "outputs": [ { "components": [ { "internalType": "uint24", "name": "basisPoints", "type": "uint24" }, { "internalType": "address", "name": "payee", "type": "address" } ], "internalType": "struct ERC2981TokenIDMask.PaymentInfo", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_royaltyConfigs", "outputs": [ { "internalType": "uint256", "name": "mask", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "components": [ { "internalType": "uint24", "name": "basisPoints", "type": "uint24" }, { "internalType": "address", "name": "payee", "type": "address" } ], "internalType": "struct ERC2981TokenIDMask.PaymentInfo", "name": "info", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mask", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "addAllowedTokenIDConfiguration", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mask", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "basisPoints", "type": "uint256" }, { "internalType": "address", "name": "payee", "type": "address" } ], "name": "addRoyaltyConfiguration", "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": "getAllowedTokenIDConfigurations", "outputs": [ { "components": [ { "internalType": "uint256", "name": "mask", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct TokenIDMaskRestrictor.AllowedTokenIDConfig[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultRoyalties", "outputs": [ { "components": [ { "internalType": "uint24", "name": "basisPoints", "type": "uint24" }, { "internalType": "address", "name": "payee", "type": "address" } ], "internalType": "struct ERC2981TokenIDMask.PaymentInfo", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRoyaltyConfigurations", "outputs": [ { "components": [ { "internalType": "uint256", "name": "mask", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "components": [ { "internalType": "uint24", "name": "basisPoints", "type": "uint24" }, { "internalType": "address", "name": "payee", "type": "address" } ], "internalType": "struct ERC2981TokenIDMask.PaymentInfo", "name": "info", "type": "tuple" } ], "internalType": "struct ERC2981TokenIDMask.RoyaltiesConfig[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "payee", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "masks", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "setAllowedTokenIDConfigurations", "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": "uint256", "name": "basisPoints", "type": "uint256" }, { "internalType": "address", "name": "payee", "type": "address" } ], "name": "setDefaultRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "masks", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "basisPoints", "type": "uint256[]" }, { "internalType": "address[]", "name": "payees", "type": "address[]" } ], "name": "setRoyaltyConfigurations", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "unmint", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506040516200706b3803806200706b833981810160405281019062000037919062000a21565b818185858a8a8181816000908051906020019062000057929190620007e0565b50806001908051906020019062000070929190620007e0565b50505062000093620000876200018160201b60201c565b6200018960201b60201c565b5050620000a782826200024f60201b60201c565b5050620000bb8282620003aa60201b60201c565b5050620000ce856200050a60201b60201c565b620000f26000801b620000e66200018160201b60201c565b6200052660201b60201c565b620001337f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620001276200018160201b60201c565b6200052660201b60201c565b620001747fc47c7929930c7f2bb9db31476e47def40882b518b18186f92b9e275b3dae4d18620001686200018160201b60201c565b6200052660201b60201c565b5050505050505062001108565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b805182511462000296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028d9062000ce4565b60405180910390fd5b606482511115620002de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d59062000ca0565b60405180910390fd5b60076000620002ee919062000871565b60005b8251811015620003a5576200038f83828151811062000339577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518383815181106200037b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516200053c60201b60201c565b80806200039c9062000ec9565b915050620002f1565b505050565b6107d0821115620003f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e99062000d06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000465576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200045c9062000c5c565b60405180910390fd5b60405180604001604052808362ffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250600860008201518160000160006101000a81548162ffffff021916908362ffffff16021790555060208201518160000160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050505050565b80600b908051906020019062000522929190620007e0565b5050565b620005388282620005f360201b60201c565b5050565b60646007805490501062000587576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200057e9062000c7e565b60405180910390fd5b620005998282620006e560201b60201c565b60076040518060400160405280848152602001838152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550505050565b6200060582826200077560201b60201c565b620006e1576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006866200018160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600082116200072b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007229062000d28565b60405180910390fd5b8181111562000771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007689062000cc2565b60405180910390fd5b5050565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054620007ee9062000e5d565b90600052602060002090601f0160209004810192826200081257600085556200085e565b82601f106200082d57805160ff19168380011785556200085e565b828001600101855582156200085e579182015b828111156200085d57825182559160200191906001019062000840565b5b5090506200086d919062000897565b5090565b5080546000825560020290600052602060002090810190620008949190620008b6565b50565b5b80821115620008b257600081600090555060010162000898565b5090565b5b80821115620008db57600080820160009055600182016000905550600201620008b7565b5090565b6000620008f6620008f08462000d73565b62000d4a565b905080838252602082019050828560208602820111156200091657600080fd5b60005b858110156200094a57816200092f888262000a0a565b84526020840193506020830192505060018101905062000919565b5050509392505050565b60006200096b620009658462000da2565b62000d4a565b9050828152602081018484840111156200098457600080fd5b6200099184828562000e27565b509392505050565b600081519050620009aa81620010d4565b92915050565b600082601f830112620009c257600080fd5b8151620009d4848260208601620008df565b91505092915050565b600082601f830112620009ef57600080fd5b815162000a0184826020860162000954565b91505092915050565b60008151905062000a1b81620010ee565b92915050565b600080600080600080600060e0888a03121562000a3d57600080fd5b600088015167ffffffffffffffff81111562000a5857600080fd5b62000a668a828b01620009dd565b975050602088015167ffffffffffffffff81111562000a8457600080fd5b62000a928a828b01620009dd565b965050604088015167ffffffffffffffff81111562000ab057600080fd5b62000abe8a828b01620009dd565b955050606088015167ffffffffffffffff81111562000adc57600080fd5b62000aea8a828b01620009b0565b945050608088015167ffffffffffffffff81111562000b0857600080fd5b62000b168a828b01620009b0565b93505060a062000b298a828b0162000a0a565b92505060c062000b3c8a828b0162000999565b91505092959891949750929550565b600062000b5a600d8362000dd8565b915062000b678262000fb5565b602082019050919050565b600062000b81601a8362000dd8565b915062000b8e8262000fde565b602082019050919050565b600062000ba860178362000dd8565b915062000bb58262001007565b602082019050919050565b600062000bcf601c8362000dd8565b915062000bdc8262001030565b602082019050919050565b600062000bf660188362000dd8565b915062000c038262001059565b602082019050919050565b600062000c1d600f8362000dd8565b915062000c2a8262001082565b602082019050919050565b600062000c4460128362000dd8565b915062000c5182620010ab565b602082019050919050565b6000602082019050818103600083015262000c778162000b4b565b9050919050565b6000602082019050818103600083015262000c998162000b72565b9050919050565b6000602082019050818103600083015262000cbb8162000b99565b9050919050565b6000602082019050818103600083015262000cdd8162000bc0565b9050919050565b6000602082019050818103600083015262000cff8162000be7565b9050919050565b6000602082019050818103600083015262000d218162000c0e565b9050919050565b6000602082019050818103600083015262000d438162000c35565b9050919050565b600062000d5662000d69565b905062000d64828262000e93565b919050565b6000604051905090565b600067ffffffffffffffff82111562000d915762000d9062000f75565b5b602082029050602081019050919050565b600067ffffffffffffffff82111562000dc05762000dbf62000f75565b5b62000dcb8262000fa4565b9050602081019050919050565b600082825260208201905092915050565b600062000df68262000dfd565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000e4757808201518184015260208101905062000e2a565b8381111562000e57576000848401525b50505050565b6000600282049050600182168062000e7657607f821691505b6020821081141562000e8d5762000e8c62000f46565b5b50919050565b62000e9e8262000fa4565b810181811067ffffffffffffffff8211171562000ec05762000ebf62000f75565b5b80604052505050565b600062000ed68262000e1d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000f0c5762000f0b62000f17565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f496e76616c696420706179656500000000000000000000000000000000000000600082015250565b7f52656163686564206d617820636f6e66696775726174696f6e73000000000000600082015250565b7f546f6f206d616e7920636f6e66696775726174696f6e73000000000000000000600082015250565b7f56616c756520696e636f6d70617469626c652077697468206d61736b00000000600082015250565b7f4d61736b7320646f6e2774206d617463682076616c7565730000000000000000600082015250565b7f496e76616c696420726f79616c74790000000000000000000000000000000000600082015250565b7f4d61736b2063616e2774206265207a65726f0000000000000000000000000000600082015250565b620010df8162000de9565b8114620010eb57600080fd5b50565b620010f98162000e1d565b81146200110557600080fd5b50565b615f5380620011186000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c80636dfcb19b1161013b578063a22cb465116100b8578063dbd0cba01161007c578063dbd0cba0146106ee578063dd3202e21461070c578063e985e9c514610728578063f2fde38b14610758578063faac63151461077457610248565b8063a22cb4651461064c578063b88d4fde14610668578063c87b56dd14610684578063d5391393146106b4578063d547741f146106d257610248565b80638de036d0116100ff5780638de036d0146105a657806391d14854146105c457806395d89b41146105f4578063a144819414610612578063a217fddf1461062e57610248565b80636dfcb19b1461050157806370a0823114610532578063715018a614610562578063725b093a1461056c5780638da5cb5b1461058857610248565b806336568abe116101c957806344f79eb91161018d57806344f79eb91461045f5780636352211e1461047b57806364e779b1146104ab57806366e8fbf3146104c75780636704c624146104e557610248565b806336568abe146103bd57806340c10f19146103d95780634189fe9f146103f557806342842e0e1461041157806343ab7ec31461042d57610248565b806323b872dd1161021057806323b872dd14610305578063248a9ca3146103215780632a55205a146103515780632f2ff15d14610382578063326e886d1461039e57610248565b806301ffc9a71461024d57806306fdde031461027d578063081812fc1461029b578063095ea7b3146102cb5780630c2b190c146102e7575b600080fd5b61026760048036038101906102629190614157565b610792565b6040516102749190614bc4565b60405180910390f35b6102856107c4565b6040516102929190614bfa565b60405180910390f35b6102b560048036038101906102b091906141a9565b610856565b6040516102c29190614af0565b60405180910390f35b6102e560048036038101906102e09190613f87565b6108db565b005b6102ef6109f3565b6040516102fc9190614bdf565b60405180910390f35b61031f600480360381019061031a9190613e81565b610a17565b005b61033b600480360381019061033691906140f2565b610a77565b6040516103489190614bdf565b60405180910390f35b61036b6004803603810190610366919061420e565b610a97565b604051610379929190614b57565b60405180910390f35b61039c6004803603810190610397919061411b565b610cb6565b005b6103a6610cdf565b6040516103b4929190615097565b60405180910390f35b6103d760048036038101906103d2919061411b565b610d20565b005b6103f360048036038101906103ee9190613f87565b610da3565b005b61040f600480360381019061040a9190613fc3565b610e69565b005b61042b60048036038101906104269190613e81565b610eca565b005b610447600480360381019061044291906141a9565b610eea565b60405161045693929190615104565b60405180910390f35b6104796004803603810190610474919061402f565b610fa7565b005b610495600480360381019061049091906141a9565b61100c565b6040516104a29190614af0565b60405180910390f35b6104c560048036038101906104c091906141a9565b6110be565b005b6104cf61113a565b6040516104dc9190614ba2565b60405180910390f35b6104ff60048036038101906104fa919061420e565b611149565b005b61051b600480360381019061051691906141a9565b6111aa565b6040516105299291906150db565b60405180910390f35b61054c60048036038101906105479190613e1c565b6111de565b60405161055991906150c0565b60405180910390f35b61056a611296565b005b610586600480360381019061058191906141d2565b61131e565b005b61059061137f565b60405161059d9190614af0565b60405180910390f35b6105ae6113a9565b6040516105bb919061507c565b60405180910390f35b6105de60048036038101906105d9919061411b565b6113be565b6040516105eb9190614bc4565b60405180910390f35b6105fc611429565b6040516106099190614bfa565b60405180910390f35b61062c60048036038101906106279190613f87565b6114bb565b005b610636611581565b6040516106439190614bdf565b60405180910390f35b61066660048036038101906106619190613f4b565b611588565b005b610682600480360381019061067d9190613ed0565b61159e565b005b61069e600480360381019061069991906141a9565b611600565b6040516106ab9190614bfa565b60405180910390f35b6106bc6116a7565b6040516106c99190614bdf565b60405180910390f35b6106ec60048036038101906106e7919061411b565b6116cb565b005b6106f66116f4565b604051610703919061507c565b60405180910390f35b6107266004803603810190610721919061424a565b611787565b005b610742600480360381019061073d9190613e45565b6117ec565b60405161074f9190614bc4565b60405180910390f35b610772600480360381019061076d9190613e1c565b611880565b005b61077c611978565b6040516107899190614b80565b60405180910390f35b600061079d82611987565b806107ad57506107ac82611999565b5b806107bd57506107bc82611a13565b5b9050919050565b6060600080546107d3906154ff565b80601f01602080910402602001604051908101604052809291908181526020018280546107ff906154ff565b801561084c5780601f106108215761010080835404028352916020019161084c565b820191906000526020600020905b81548152906001019060200180831161082f57829003601f168201915b5050505050905090565b600061086182611a8d565b6108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089790614e5c565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108e68261100c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90614efc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610976611af9565b73ffffffffffffffffffffffffffffffffffffffff1614806109a557506109a48161099f611af9565b6117ec565b5b6109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db90614dbc565b60405180910390fd5b6109ee8383611b01565b505050565b7fc47c7929930c7f2bb9db31476e47def40882b518b18186f92b9e275b3dae4d1881565b610a28610a22611af9565b82611bba565b610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90614f1c565b60405180910390fd5b610a72838383611c98565b505050565b6000600a6000838152602001908152602001600020600101549050919050565b600080600060086040518060400160405290816000820160009054906101000a900462ffffff1662ffffff1662ffffff1681526020016000820160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050610b2c613ad4565b60006009805490501115610c825760006001600980549050610b4e919061537f565b90505b60008112610c805760098181548110610b93577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282016040518060400160405290816000820160009054906101000a900462ffffff1662ffffff1662ffffff1681526020016000820160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152505091508160200151826000015188161415610c6d5781604001519250610c80565b8080610c789061548c565b915050610b51565b505b81602001519350612710826000015162ffffff1686610ca19190615325565b610cab91906152f4565b925050509250929050565b610cbf82610a77565b610cd081610ccb611af9565b611ef4565b610cda8383611f91565b505050565b60088060000160009054906101000a900462ffffff16908060000160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b610d28611af9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c9061503c565b60405180910390fd5b610d9f8282612072565b5050565b610dd47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610dcf611af9565b6113be565b610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90614c7c565b60405180910390fd5b610e1c81612154565b610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5290614fdc565b60405180910390fd5b610e658282612228565b5050565b610e7d6000801b610e78611af9565b6113be565b610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390614f7c565b60405180910390fd5b610ec682826122d7565b5050565b610ee58383836040518060200160405280600081525061159e565b505050565b60098181548110610efa57600080fd5b9060005260206000209060030201600091509050806000015490806001015490806002016040518060400160405290816000820160009054906101000a900462ffffff1662ffffff1662ffffff1681526020016000820160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905083565b610fbb6000801b610fb6611af9565b6113be565b610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190614f7c565b60405180910390fd5b6110068484848461241c565b50505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90614dfc565b60405180910390fd5b80915050919050565b6110ef7fc47c7929930c7f2bb9db31476e47def40882b518b18186f92b9e275b3dae4d186110ea611af9565b6113be565b61112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112590614d3c565b60405180910390fd5b61113781612628565b50565b60606111446126b3565b905090565b61115d6000801b611158611af9565b6113be565b61119c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119390614f7c565b60405180910390fd5b6111a682826127b3565b5050565b600781815481106111ba57600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561124f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124690614ddc565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61129e611af9565b73ffffffffffffffffffffffffffffffffffffffff166112bc61137f565b73ffffffffffffffffffffffffffffffffffffffff1614611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990614e7c565b60405180910390fd5b61131c600061285f565b565b6113326000801b61132d611af9565b6113be565b611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890614f7c565b60405180910390fd5b61137b8282612925565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113b1613afb565b6113b96116f4565b905090565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054611438906154ff565b80601f0160208091040260200160405190810160405280929190818152602001828054611464906154ff565b80156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b5050505050905090565b6114ec7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66114e7611af9565b6113be565b61152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290614c7c565b60405180910390fd5b61153481612154565b611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90614fdc565b60405180910390fd5b61157d8282612a7f565b5050565b6000801b81565b61159a611593611af9565b8383612b3e565b5050565b6115af6115a9611af9565b83611bba565b6115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614f1c565b60405180910390fd5b6115fa84848484612cab565b50505050565b606061160b82611a8d565b61164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190614ebc565b60405180910390fd5b6000611654612d07565b90506000815111611674576040518060200160405280600081525061169f565b8061167e84612d99565b60405160200161168f929190614a92565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6116d482610a77565b6116e5816116e0611af9565b611ef4565b6116ef8383612072565b505050565b6116fc613afb565b60086040518060400160405290816000820160009054906101000a900462ffffff1662ffffff1662ffffff1681526020016000820160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b61179b6000801b611796611af9565b6113be565b6117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190614f7c565b60405180910390fd5b6117e684848484612f46565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611888611af9565b73ffffffffffffffffffffffffffffffffffffffff166118a661137f565b73ffffffffffffffffffffffffffffffffffffffff16146118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390614e7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390614cbc565b60405180910390fd5b6119758161285f565b50565b606061198261305a565b905090565b6000611992826130cd565b9050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a0c5750611a0b82611987565b5b9050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a865750611a8582611999565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b748361100c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611bc582611a8d565b611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb90614d9c565b60405180910390fd5b6000611c0f8361100c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c7e57508373ffffffffffffffffffffffffffffffffffffffff16611c6684610856565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c8f5750611c8e81856117ec565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611cb88261100c565b73ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614e9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7590614cfc565b60405180910390fd5b611d898383836131af565b611d94600082611b01565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611de4919061537f565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e3b919061529e565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611efe82826113be565b611f8d57611f238173ffffffffffffffffffffffffffffffffffffffff1660146131b4565b611f318360001c60206131b4565b604051602001611f42929190614ab6565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f849190614bfa565b60405180910390fd5b5050565b611f9b82826113be565b61206e576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612013611af9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61207c82826113be565b15612150576000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506120f5611af9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008060078054905011156122155760005b60078054905081101561220f576000600782815481106121af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905080602001518160000151851614156121fb57600192505050612223565b50808061220790615562565b915050612166565b5061221e565b60019050612223565b600090505b919050565b600061223382611a8d565b905080156122c75760006122468361100c565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90614c3c565b60405180910390fd5b6122c1308585611c98565b506122d2565b6122d183836134ae565b5b505050565b805182511461231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231290614f9c565b60405180910390fd5b606482511115612360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235790614f3c565b60405180910390fd5b6007600061236e9190613b30565b60005b8251811015612417576124048382815181106123b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518383815181106123f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516127b3565b808061240f90615562565b915050612371565b505050565b8251845114612460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245790614e1c565b60405180910390fd5b81518451146124a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249b90614d7c565b60405180910390fd5b80518451146124e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124df9061501c565b60405180910390fd5b600960006124f69190613b54565b60005b84518110156126215761260e85828151811061253e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015185838151811061257f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518584815181106125c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858581518110612601577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151612f46565b808061261990615562565b9150506124f9565b5050505050565b60006126338261100c565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90614ffc565b60405180910390fd5b6126af813084611c98565b5050565b60606009805480602002602001604051908101604052809291908181526020016000905b828210156127aa57838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282016040518060400160405290816000820160009054906101000a900462ffffff1662ffffff1662ffffff1681526020016000820160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081525050815260200190600101906126d7565b50505050905090565b6064600780549050106127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290614edc565b60405180910390fd5b612805828261367c565b60076040518060400160405280848152602001838152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6107d082111561296a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296190614fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d190614d5c565b60405180910390fd5b60405180604001604052808362ffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250600860008201518160000160006101000a81548162ffffff021916908362ffffff16021790555060208201518160000160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050505050565b6000612a8a82611a8d565b90508015612b2e576000612a9d8361100c565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0490614c3c565b60405180910390fd5b612b2830858560405180602001604052806000815250612cab565b50612b39565b612b388383613706565b5b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba490614d1c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612c9e9190614bc4565b60405180910390a3505050565b612cb6848484611c98565b612cc284848484613724565b612d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf890614c9c565b60405180910390fd5b50505050565b6060600b8054612d16906154ff565b80601f0160208091040260200160405190810160405280929190818152602001828054612d42906154ff565b8015612d8f5780601f10612d6457610100808354040283529160200191612d8f565b820191906000526020600020905b815481529060010190602001808311612d7257829003601f168201915b5050505050905090565b60606000821415612de1576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612f41565b600082905060005b60008214612e13578080612dfc90615562565b915050600a82612e0c91906152f4565b9150612de9565b60008167ffffffffffffffff811115612e55577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612e875781602001600182028036833780820191505090505b5090505b60008514612f3a57600182612ea0919061537f565b9150600a85612eaf91906155ab565b6030612ebb919061529e565b60f81b818381518110612ef7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612f3391906152f4565b9450612e8b565b8093505050505b919050565b612f52848484846138bb565b6009604051806060016040528086815260200185815260200160405180604001604052808662ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152508152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020160008201518160000160006101000a81548162ffffff021916908362ffffff16021790555060208201518160000160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156130c45783829060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061307e565b50505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061319857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806131a857506131a7826139fc565b5b9050919050565b505050565b6060600060028360026131c79190615325565b6131d1919061529e565b67ffffffffffffffff811115613210577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156132425781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106132a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061332a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261336a9190615325565b613374919061529e565b90505b6001811115613460577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106133dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110613419577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080613459906154d5565b9050613377565b50600084146134a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349b90614c1c565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351590614e3c565b60405180910390fd5b61352781611a8d565b15613567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355e90614cdc565b60405180910390fd5b613573600083836131af565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135c3919061529e565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600082116136bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b69061505c565b60405180910390fd5b81811115613702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f990614f5c565b60405180910390fd5b5050565b613720828260405180602001604052806000815250613a66565b5050565b60006137458473ffffffffffffffffffffffffffffffffffffffff16613ac1565b156138ae578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261376e611af9565b8786866040518563ffffffff1660e01b81526004016137909493929190614b0b565b602060405180830381600087803b1580156137aa57600080fd5b505af19250505080156137db57506040513d601f19601f820116820180604052508101906137d89190614180565b60015b61385e573d806000811461380b576040519150601f19603f3d011682016040523d82523d6000602084013e613810565b606091505b50600081511415613856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384d90614c9c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506138b3565b600190505b949350505050565b600084116138fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f590614c5c565b60405180910390fd5b83831115613941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393890614f5c565b60405180910390fd5b6107d0821115613986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397d90614fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156139f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ed90614d5c565b60405180910390fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613a7083836134ae565b613a7d6000848484613724565b613abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ab390614c9c565b60405180910390fd5b505050565b600080823b905060008111915050919050565b60405180606001604052806000815260200160008152602001613af5613afb565b81525090565b6040518060400160405280600062ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b5080546000825560020290600052602060002090810190613b519190613b78565b50565b5080546000825560030290600052602060002090810190613b759190613b9f565b50565b5b80821115613b9b57600080820160009055600182016000905550600201613b79565b5090565b5b80821115613c0657600080820160009055600182016000905560028201600080820160006101000a81549062ffffff02191690556000820160036101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505050600301613ba0565b5090565b6000613c1d613c1884615160565b61513b565b90508083825260208201905082856020860282011115613c3c57600080fd5b60005b85811015613c6c5781613c528882613d20565b845260208401935060208301925050600181019050613c3f565b5050509392505050565b6000613c89613c848461518c565b61513b565b90508083825260208201905082856020860282011115613ca857600080fd5b60005b85811015613cd85781613cbe8882613e07565b845260208401935060208301925050600181019050613cab565b5050509392505050565b6000613cf5613cf0846151b8565b61513b565b905082815260208101848484011115613d0d57600080fd5b613d1884828561544a565b509392505050565b600081359050613d2f81615eaa565b92915050565b600082601f830112613d4657600080fd5b8135613d56848260208601613c0a565b91505092915050565b600082601f830112613d7057600080fd5b8135613d80848260208601613c76565b91505092915050565b600081359050613d9881615ec1565b92915050565b600081359050613dad81615ed8565b92915050565b600081359050613dc281615eef565b92915050565b600081519050613dd781615eef565b92915050565b600082601f830112613dee57600080fd5b8135613dfe848260208601613ce2565b91505092915050565b600081359050613e1681615f06565b92915050565b600060208284031215613e2e57600080fd5b6000613e3c84828501613d20565b91505092915050565b60008060408385031215613e5857600080fd5b6000613e6685828601613d20565b9250506020613e7785828601613d20565b9150509250929050565b600080600060608486031215613e9657600080fd5b6000613ea486828701613d20565b9350506020613eb586828701613d20565b9250506040613ec686828701613e07565b9150509250925092565b60008060008060808587031215613ee657600080fd5b6000613ef487828801613d20565b9450506020613f0587828801613d20565b9350506040613f1687828801613e07565b925050606085013567ffffffffffffffff811115613f3357600080fd5b613f3f87828801613ddd565b91505092959194509250565b60008060408385031215613f5e57600080fd5b6000613f6c85828601613d20565b9250506020613f7d85828601613d89565b9150509250929050565b60008060408385031215613f9a57600080fd5b6000613fa885828601613d20565b9250506020613fb985828601613e07565b9150509250929050565b60008060408385031215613fd657600080fd5b600083013567ffffffffffffffff811115613ff057600080fd5b613ffc85828601613d5f565b925050602083013567ffffffffffffffff81111561401957600080fd5b61402585828601613d5f565b9150509250929050565b6000806000806080858703121561404557600080fd5b600085013567ffffffffffffffff81111561405f57600080fd5b61406b87828801613d5f565b945050602085013567ffffffffffffffff81111561408857600080fd5b61409487828801613d5f565b935050604085013567ffffffffffffffff8111156140b157600080fd5b6140bd87828801613d5f565b925050606085013567ffffffffffffffff8111156140da57600080fd5b6140e687828801613d35565b91505092959194509250565b60006020828403121561410457600080fd5b600061411284828501613d9e565b91505092915050565b6000806040838503121561412e57600080fd5b600061413c85828601613d9e565b925050602061414d85828601613d20565b9150509250929050565b60006020828403121561416957600080fd5b600061417784828501613db3565b91505092915050565b60006020828403121561419257600080fd5b60006141a084828501613dc8565b91505092915050565b6000602082840312156141bb57600080fd5b60006141c984828501613e07565b91505092915050565b600080604083850312156141e557600080fd5b60006141f385828601613e07565b925050602061420485828601613d20565b9150509250929050565b6000806040838503121561422157600080fd5b600061422f85828601613e07565b925050602061424085828601613e07565b9150509250929050565b6000806000806080858703121561426057600080fd5b600061426e87828801613e07565b945050602061427f87828801613e07565b935050604061429087828801613e07565b92505060606142a187828801613d20565b91505092959194509250565b60006142b98383614987565b60408301905092915050565b60006142d18383614a14565b60808301905092915050565b6142e6816153b3565b82525050565b6142f5816153b3565b82525050565b600061430682615209565b614310818561524f565b935061431b836151e9565b8060005b8381101561434c57815161433388826142ad565b975061433e83615235565b92505060018101905061431f565b5085935050505092915050565b600061436482615214565b61436e8185615260565b9350614379836151f9565b8060005b838110156143aa57815161439188826142c5565b975061439c83615242565b92505060018101905061437d565b5085935050505092915050565b6143c0816153c5565b82525050565b6143cf816153d1565b82525050565b60006143e08261521f565b6143ea8185615271565b93506143fa818560208601615459565b61440381615698565b840191505092915050565b60006144198261522a565b6144238185615282565b9350614433818560208601615459565b61443c81615698565b840191505092915050565b60006144528261522a565b61445c8185615293565b935061446c818560208601615459565b80840191505092915050565b6000614485602083615282565b9150614490826156a9565b602082019050919050565b60006144a8600e83615282565b91506144b3826156d2565b602082019050919050565b60006144cb600c83615282565b91506144d6826156fb565b602082019050919050565b60006144ee600c83615282565b91506144f982615724565b602082019050919050565b6000614511603283615282565b915061451c8261574d565b604082019050919050565b6000614534602683615282565b915061453f8261579c565b604082019050919050565b6000614557601c83615282565b9150614562826157eb565b602082019050919050565b600061457a602483615282565b915061458582615814565b604082019050919050565b600061459d601983615282565b91506145a882615863565b602082019050919050565b60006145c0600f83615282565b91506145cb8261588c565b602082019050919050565b60006145e3600d83615282565b91506145ee826158b5565b602082019050919050565b6000614606602683615282565b9150614611826158de565b604082019050919050565b6000614629602c83615282565b91506146348261592d565b604082019050919050565b600061464c603883615282565b91506146578261597c565b604082019050919050565b600061466f602a83615282565b915061467a826159cb565b604082019050919050565b6000614692602983615282565b915061469d82615a1a565b604082019050919050565b60006146b5602083615282565b91506146c082615a69565b602082019050919050565b60006146d8602083615282565b91506146e382615a92565b602082019050919050565b60006146fb602c83615282565b915061470682615abb565b604082019050919050565b600061471e602083615282565b915061472982615b0a565b602082019050919050565b6000614741602983615282565b915061474c82615b33565b604082019050919050565b6000614764602f83615282565b915061476f82615b82565b604082019050919050565b6000614787601a83615282565b915061479282615bd1565b602082019050919050565b60006147aa602183615282565b91506147b582615bfa565b604082019050919050565b60006147cd603183615282565b91506147d882615c49565b604082019050919050565b60006147f0601783615282565b91506147fb82615c98565b602082019050919050565b6000614813601c83615282565b915061481e82615cc1565b602082019050919050565b6000614836600c83615282565b915061484182615cea565b602082019050919050565b6000614859601883615282565b915061486482615d13565b602082019050919050565b600061487c601783615293565b915061488782615d3c565b601782019050919050565b600061489f600f83615282565b91506148aa82615d65565b602082019050919050565b60006148c2601483615282565b91506148cd82615d8e565b602082019050919050565b60006148e5601083615282565b91506148f082615db7565b602082019050919050565b6000614908602083615282565b915061491382615de0565b602082019050919050565b600061492b601183615293565b915061493682615e09565b601182019050919050565b600061494e602f83615282565b915061495982615e32565b604082019050919050565b6000614971601283615282565b915061497c82615e81565b602082019050919050565b60408201600082015161499d6000850182614a74565b5060208201516149b06020850182614a74565b50505050565b6040820160008201516149cc6000850182614a56565b5060208201516149df60208501826142dd565b50505050565b6040820160008201516149fb6000850182614a56565b506020820151614a0e60208501826142dd565b50505050565b608082016000820151614a2a6000850182614a74565b506020820151614a3d6020850182614a74565b506040820151614a5060408501826149b6565b50505050565b614a5f81615431565b82525050565b614a6e81615431565b82525050565b614a7d81615440565b82525050565b614a8c81615440565b82525050565b6000614a9e8285614447565b9150614aaa8284614447565b91508190509392505050565b6000614ac18261486f565b9150614acd8285614447565b9150614ad88261491e565b9150614ae48284614447565b91508190509392505050565b6000602082019050614b0560008301846142ec565b92915050565b6000608082019050614b2060008301876142ec565b614b2d60208301866142ec565b614b3a6040830185614a83565b8181036060830152614b4c81846143d5565b905095945050505050565b6000604082019050614b6c60008301856142ec565b614b796020830184614a83565b9392505050565b60006020820190508181036000830152614b9a81846142fb565b905092915050565b60006020820190508181036000830152614bbc8184614359565b905092915050565b6000602082019050614bd960008301846143b7565b92915050565b6000602082019050614bf460008301846143c6565b92915050565b60006020820190508181036000830152614c14818461440e565b905092915050565b60006020820190508181036000830152614c3581614478565b9050919050565b60006020820190508181036000830152614c558161449b565b9050919050565b60006020820190508181036000830152614c75816144be565b9050919050565b60006020820190508181036000830152614c95816144e1565b9050919050565b60006020820190508181036000830152614cb581614504565b9050919050565b60006020820190508181036000830152614cd581614527565b9050919050565b60006020820190508181036000830152614cf58161454a565b9050919050565b60006020820190508181036000830152614d158161456d565b9050919050565b60006020820190508181036000830152614d3581614590565b9050919050565b60006020820190508181036000830152614d55816145b3565b9050919050565b60006020820190508181036000830152614d75816145d6565b9050919050565b60006020820190508181036000830152614d95816145f9565b9050919050565b60006020820190508181036000830152614db58161461c565b9050919050565b60006020820190508181036000830152614dd58161463f565b9050919050565b60006020820190508181036000830152614df581614662565b9050919050565b60006020820190508181036000830152614e1581614685565b9050919050565b60006020820190508181036000830152614e35816146a8565b9050919050565b60006020820190508181036000830152614e55816146cb565b9050919050565b60006020820190508181036000830152614e75816146ee565b9050919050565b60006020820190508181036000830152614e9581614711565b9050919050565b60006020820190508181036000830152614eb581614734565b9050919050565b60006020820190508181036000830152614ed581614757565b9050919050565b60006020820190508181036000830152614ef58161477a565b9050919050565b60006020820190508181036000830152614f158161479d565b9050919050565b60006020820190508181036000830152614f35816147c0565b9050919050565b60006020820190508181036000830152614f55816147e3565b9050919050565b60006020820190508181036000830152614f7581614806565b9050919050565b60006020820190508181036000830152614f9581614829565b9050919050565b60006020820190508181036000830152614fb58161484c565b9050919050565b60006020820190508181036000830152614fd581614892565b9050919050565b60006020820190508181036000830152614ff5816148b5565b9050919050565b60006020820190508181036000830152615015816148d8565b9050919050565b60006020820190508181036000830152615035816148fb565b9050919050565b6000602082019050818103600083015261505581614941565b9050919050565b6000602082019050818103600083015261507581614964565b9050919050565b600060408201905061509160008301846149e5565b92915050565b60006040820190506150ac6000830185614a65565b6150b960208301846142ec565b9392505050565b60006020820190506150d56000830184614a83565b92915050565b60006040820190506150f06000830185614a83565b6150fd6020830184614a83565b9392505050565b60006080820190506151196000830186614a83565b6151266020830185614a83565b61513360408301846149e5565b949350505050565b6000615145615156565b90506151518282615531565b919050565b6000604051905090565b600067ffffffffffffffff82111561517b5761517a615669565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156151a7576151a6615669565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156151d3576151d2615669565b5b6151dc82615698565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006152a982615440565b91506152b483615440565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156152e9576152e86155dc565b5b828201905092915050565b60006152ff82615440565b915061530a83615440565b92508261531a5761531961560b565b5b828204905092915050565b600061533082615440565b915061533b83615440565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615374576153736155dc565b5b828202905092915050565b600061538a82615440565b915061539583615440565b9250828210156153a8576153a76155dc565b5b828203905092915050565b60006153be82615411565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561547757808201518184015260208101905061545c565b83811115615486576000848401525b50505050565b600061549782615407565b91507f80000000000000000000000000000000000000000000000000000000000000008214156154ca576154c96155dc565b5b600182039050919050565b60006154e082615440565b915060008214156154f4576154f36155dc565b5b600182039050919050565b6000600282049050600182168061551757607f821691505b6020821081141561552b5761552a61563a565b5b50919050565b61553a82615698565b810181811067ffffffffffffffff8211171561555957615558615669565b5b80604052505050565b600061556d82615440565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155a05761559f6155dc565b5b600182019050919050565b60006155b682615440565b91506155c183615440565b9250826155d1576155d061560b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f416c7265616479206d696e746564000000000000000000000000000000000000600082015250565b7f496e76616c6964206d61736b0000000000000000000000000000000000000000600082015250565b7f4e6f742061204d696e7465720000000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4e6f7420616e20556e6d696e7465720000000000000000000000000000000000600082015250565b7f496e76616c696420706179656500000000000000000000000000000000000000600082015250565b7f526f79616c7479206d61736b7320646f6e2774206d617463682062617369732060008201527f706f696e74730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f526f79616c7479206d61736b7320646f6e2774206d617463682076616c756573600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f52656163686564206d617820636f6e66696775726174696f6e73000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f546f6f206d616e7920636f6e66696775726174696f6e73000000000000000000600082015250565b7f56616c756520696e636f6d70617469626c652077697468206d61736b00000000600082015250565b7f4e6f7420616e2041646d696e0000000000000000000000000000000000000000600082015250565b7f4d61736b7320646f6e2774206d617463682076616c7565730000000000000000600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f496e76616c696420726f79616c74790000000000000000000000000000000000600082015250565b7f546f6b656e204944206e6f7420616c6c6f776564000000000000000000000000600082015250565b7f416c726561647920756e6d696e74656400000000000000000000000000000000600082015250565b7f526f79616c7479206d61736b7320646f6e2774206d6174636820706179656573600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b7f4d61736b2063616e2774206265207a65726f0000000000000000000000000000600082015250565b615eb3816153b3565b8114615ebe57600080fd5b50565b615eca816153c5565b8114615ed557600080fd5b50565b615ee1816153d1565b8114615eec57600080fd5b50565b615ef8816153db565b8114615f0357600080fd5b50565b615f0f81615440565b8114615f1a57600080fd5b5056fea264697066735822122097b28c6333aa7c7d74a0519124caf7b72869ddc78a5896e0104335ba7a1018f164736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000042ba5b7e3aa520d4a5e60318a625949fe343c326000000000000000000000000000000000000000000000000000000000000001951756964644d696e7461626c65734461726b4372797374616c000000000000000000000000000000000000000000000000000000000000000000000000000004514d444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003468747470733a2f2f6170692d70726f642e6f6e71756964642e636f6d2f7072696e74732f6d696e7465642f6d657461646174612f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000ba900000000000000000000000000000000000000000000000000000000