0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c01806100745f395ff3fe608060405234801561000f575f5ffd5b506004361061007b575f3560e01c80638961a440116100595780638961a440146100fb5780638da5cb5b1461012b578063f29465f114610149578063f2fde38b146101795761007b565b8063039177211461007f5780633b111c25146100af57806362a9b902146100cb575b5f5ffd5b6100996004803603810190610094919061057f565b610195565b6040516100a691906105d7565b60405180910390f35b6100c960048036038101906100c4919061064a565b6101a0565b005b6100e560048036038101906100e091906106b2565b61034a565b6040516100f29190610772565b60405180910390f35b610115600480360381019061011091906108be565b61038b565b6040516101229190610772565b60405180910390f35b6101336103cb565b6040516101409190610927565b60405180910390f35b610163600480360381019061015e9190610940565b6103f0565b604051610170919061098d565b60405180910390f35b610193600480360381019061018e91906109a6565b6103fb565b005b5f6001905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361020e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020590610a1b565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168283604051602401610238919061098d565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516102c29190610a7d565b5f6040518083038185875af1925050503d805f81146102fc576040519150601f19603f3d011682016040523d82523d5f602084013e610301565b606091505b5050905080610345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033c90610add565b60405180910390fd5b505050565b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b60606040518060400160405280600781526020017f5375636365737300000000000000000000000000000000000000000000000000815250905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f602a905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048190610b45565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ef90610bad565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61055e8161054c565b8114610568575f5ffd5b50565b5f8135905061057981610555565b92915050565b5f5f6040838503121561059557610594610544565b5b5f6105a28582860161056b565b92505060206105b38582860161056b565b9150509250929050565b5f8115159050919050565b6105d1816105bd565b82525050565b5f6020820190506105ea5f8301846105c8565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610619826105f0565b9050919050565b6106298161060f565b8114610633575f5ffd5b50565b5f8135905061064481610620565b92915050565b5f5f604083850312156106605761065f610544565b5b5f61066d85828601610636565b925050602061067e8582860161056b565b9150509250929050565b610691816105bd565b811461069b575f5ffd5b50565b5f813590506106ac81610688565b92915050565b5f5f5f606084860312156106c9576106c8610544565b5b5f6106d68682870161069e565b93505060206106e78682870161069e565b92505060406106f88682870161069e565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61074482610702565b61074e818561070c565b935061075e81856020860161071c565b6107678161072a565b840191505092915050565b5f6020820190508181035f83015261078a818461073a565b905092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107d08261072a565b810181811067ffffffffffffffff821117156107ef576107ee61079a565b5b80604052505050565b5f61080161053b565b905061080d82826107c7565b919050565b5f67ffffffffffffffff82111561082c5761082b61079a565b5b6108358261072a565b9050602081019050919050565b828183375f83830152505050565b5f61086261085d84610812565b6107f8565b90508281526020810184848401111561087e5761087d610796565b5b610889848285610842565b509392505050565b5f82601f8301126108a5576108a4610792565b5b81356108b5848260208601610850565b91505092915050565b5f5f604083850312156108d4576108d3610544565b5b5f83013567ffffffffffffffff8111156108f1576108f0610548565b5b6108fd85828601610891565b925050602061090e8582860161069e565b9150509250929050565b6109218161060f565b82525050565b5f60208201905061093a5f830184610918565b92915050565b5f5f6040838503121561095657610955610544565b5b5f61096385828601610636565b925050602061097485828601610636565b9150509250929050565b6109878161054c565b82525050565b5f6020820190506109a05f83018461097e565b92915050565b5f602082840312156109bb576109ba610544565b5b5f6109c884828501610636565b91505092915050565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610a0560188361070c565b9150610a10826109d1565b602082019050919050565b5f6020820190508181035f830152610a32816109f9565b9050919050565b5f81519050919050565b5f81905092915050565b5f610a5782610a39565b610a618185610a43565b9350610a7181856020860161071c565b80840191505092915050565b5f610a888284610a4d565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610ac7601d8361070c565b9150610ad282610a93565b602082019050919050565b5f6020820190508181035f830152610af481610abb565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610b2f60178361070c565b9150610b3a82610afb565b602082019050919050565b5f6020820190508181035f830152610b5c81610b23565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f610b97601d8361070c565b9150610ba282610b63565b602082019050919050565b5f6020820190508181035f830152610bc481610b8b565b905091905056fea2646970667358221220e26afd9cfc02019fd52a0f38abcdd3d18ad731774a5f4d8836418f5e4314fb0864736f6c634300081c0033