0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f75806100606000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806311d4ae081461005157806327e235e31461006d5780632cf9e9d21461009d5780638da5cb5b146100b9575b600080fd5b61006b60048036038101906100669190610a7f565b6100d7565b005b61008760048036038101906100829190610af7565b61047d565b6040516100949190610b33565b60405180910390f35b6100b760048036038101906100b29190610b4e565b610495565b005b6100c1610797565b6040516100ce9190610b9d565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c90610c3b565b60405180910390fd5b80518251146101a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a090610ca7565b60405180910390fd5b60005b82518110156104785760008382815181106101ca576101c9610cc7565b5b6020026020010151905060008383815181106101e9576101e8610cc7565b5b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025990610d42565b60405180910390fd5b600081116102a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029c90610dd4565b60405180910390fd5b80600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033f90610e40565b60405180910390fd5b80600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103b89190610e8f565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461040e9190610ec3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de28260405161045b9190610b33565b60405180910390a25050808061047090610ef7565b9150506101ac565b505050565b60016020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051a90610c3b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990610d42565b60405180910390fd5b600081116105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cc90610dd4565b60405180910390fd5b80600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066f90610e40565b60405180910390fd5b80600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106e89190610e8f565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461073e9190610ec3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de28260405161078b9190610b33565b60405180910390a25050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61081d826107d4565b810181811067ffffffffffffffff8211171561083c5761083b6107e5565b5b80604052505050565b600061084f6107bb565b905061085b8282610814565b919050565b600067ffffffffffffffff82111561087b5761087a6107e5565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108bc82610891565b9050919050565b6108cc816108b1565b81146108d757600080fd5b50565b6000813590506108e9816108c3565b92915050565b60006109026108fd84610860565b610845565b905080838252602082019050602084028301858111156109255761092461088c565b5b835b8181101561094e578061093a88826108da565b845260208401935050602081019050610927565b5050509392505050565b600082601f83011261096d5761096c6107cf565b5b813561097d8482602086016108ef565b91505092915050565b600067ffffffffffffffff8211156109a1576109a06107e5565b5b602082029050602081019050919050565b6000819050919050565b6109c5816109b2565b81146109d057600080fd5b50565b6000813590506109e2816109bc565b92915050565b60006109fb6109f684610986565b610845565b90508083825260208201905060208402830185811115610a1e57610a1d61088c565b5b835b81811015610a475780610a3388826109d3565b845260208401935050602081019050610a20565b5050509392505050565b600082601f830112610a6657610a656107cf565b5b8135610a768482602086016109e8565b91505092915050565b60008060408385031215610a9657610a956107c5565b5b600083013567ffffffffffffffff811115610ab457610ab36107ca565b5b610ac085828601610958565b925050602083013567ffffffffffffffff811115610ae157610ae06107ca565b5b610aed85828601610a51565b9150509250929050565b600060208284031215610b0d57610b0c6107c5565b5b6000610b1b848285016108da565b91505092915050565b610b2d816109b2565b82525050565b6000602082019050610b486000830184610b24565b92915050565b60008060408385031215610b6557610b646107c5565b5b6000610b73858286016108da565b9250506020610b84858286016109d3565b9150509250929050565b610b97816108b1565b82525050565b6000602082019050610bb26000830184610b8e565b92915050565b600082825260208201905092915050565b7f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60008201527f6374696f6e000000000000000000000000000000000000000000000000000000602082015250565b6000610c25602583610bb8565b9150610c3082610bc9565b604082019050919050565b60006020820190508181036000830152610c5481610c18565b9050919050565b7f4172726179206c656e67746873206d75737420626520657175616c0000000000600082015250565b6000610c91601b83610bb8565b9150610c9c82610c5b565b602082019050919050565b60006020820190508181036000830152610cc081610c84565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b6000610d2c601983610bb8565b9150610d3782610cf6565b602082019050919050565b60006020820190508181036000830152610d5b81610d1f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000610dbe602983610bb8565b9150610dc982610d62565b604082019050919050565b60006020820190508181036000830152610ded81610db1565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610e2a601483610bb8565b9150610e3582610df4565b602082019050919050565b60006020820190508181036000830152610e5981610e1d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e9a826109b2565b9150610ea5836109b2565b9250828203905081811115610ebd57610ebc610e60565b5b92915050565b6000610ece826109b2565b9150610ed9836109b2565b9250828201905080821115610ef157610ef0610e60565b5b92915050565b6000610f02826109b2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f3457610f33610e60565b5b60018201905091905056fea26469706673582212204e54b1347a1a2033d48204c188e242eb3f4ce4aaffe72b601cfab070c0ef2ea664736f6c63430008120033