0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ddf806100745f395ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c8063ce17973711610064578063ce17973714610169578063dc39cc3114610199578063e242115a146101c9578063f2fde38b146101f9578063fe3848c9146102155761009b565b80625ad7b21461009f57806338664b91146100cf5780633b111c25146100ff578063802d1f8d1461011b5780638da5cb5b1461014b575b5f5ffd5b6100b960048036038101906100b491906106e2565b610245565b6040516100c691906107a2565b60405180910390f35b6100e960048036038101906100e491906108ee565b610286565b6040516100f69190610944565b60405180910390f35b61011960048036038101906101149190610990565b610290565b005b610135600480360381019061013091906109ce565b61043a565b6040516101429190610a2d565b60405180910390f35b610153610446565b6040516101609190610a55565b60405180910390f35b610183600480360381019061017e91906108ee565b61046b565b6040516101909190610944565b60405180910390f35b6101b360048036038101906101ae9190610a6e565b610475565b6040516101c091906107a2565b60405180910390f35b6101e360048036038101906101de9190610ada565b6104b6565b6040516101f09190610944565b60405180910390f35b610213600480360381019061020e9190610b34565b6104c1565b005b61022f600480360381019061022a9190610b5f565b610601565b60405161023c91906107a2565b60405180910390f35b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b5f60019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610bf9565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682836040516024016103289190610a2d565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103b29190610c5b565b5f6040518083038185875af1925050503d805f81146103ec576040519150601f19603f3d011682016040523d82523d5f602084013e6103f1565b606091505b5050905080610435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c90610cbb565b60405180910390fd5b505050565b5f602a90509392505050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60019050919050565b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b5f6001905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054790610d23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b590610d8b565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61067c82610653565b9050919050565b61068c81610672565b8114610696575f5ffd5b50565b5f813590506106a781610683565b92915050565b5f8115159050919050565b6106c1816106ad565b81146106cb575f5ffd5b50565b5f813590506106dc816106b8565b92915050565b5f5f5f606084860312156106f9576106f861064b565b5b5f61070686828701610699565b9350506020610717868287016106ce565b9250506040610728868287016106ce565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61077482610732565b61077e818561073c565b935061078e81856020860161074c565b6107978161075a565b840191505092915050565b5f6020820190508181035f8301526107ba818461076a565b905092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6108008261075a565b810181811067ffffffffffffffff8211171561081f5761081e6107ca565b5b80604052505050565b5f610831610642565b905061083d82826107f7565b919050565b5f67ffffffffffffffff82111561085c5761085b6107ca565b5b6108658261075a565b9050602081019050919050565b828183375f83830152505050565b5f61089261088d84610842565b610828565b9050828152602081018484840111156108ae576108ad6107c6565b5b6108b9848285610872565b509392505050565b5f82601f8301126108d5576108d46107c2565b5b81356108e5848260208601610880565b91505092915050565b5f602082840312156109035761090261064b565b5b5f82013567ffffffffffffffff8111156109205761091f61064f565b5b61092c848285016108c1565b91505092915050565b61093e816106ad565b82525050565b5f6020820190506109575f830184610935565b92915050565b5f819050919050565b61096f8161095d565b8114610979575f5ffd5b50565b5f8135905061098a81610966565b92915050565b5f5f604083850312156109a6576109a561064b565b5b5f6109b385828601610699565b92505060206109c48582860161097c565b9150509250929050565b5f5f5f606084860312156109e5576109e461064b565b5b5f6109f2868287016106ce565b9350506020610a0386828701610699565b9250506040610a1486828701610699565b9150509250925092565b610a278161095d565b82525050565b5f602082019050610a405f830184610a1e565b92915050565b610a4f81610672565b82525050565b5f602082019050610a685f830184610a46565b92915050565b5f5f5f60608486031215610a8557610a8461064b565b5b5f610a9286828701610699565b9350506020610aa38682870161097c565b925050604084013567ffffffffffffffff811115610ac457610ac361064f565b5b610ad0868287016108c1565b9150509250925092565b5f5f60408385031215610af057610aef61064b565b5b5f83013567ffffffffffffffff811115610b0d57610b0c61064f565b5b610b19858286016108c1565b9250506020610b2a85828601610699565b9150509250929050565b5f60208284031215610b4957610b4861064b565b5b5f610b5684828501610699565b91505092915050565b5f5f5f60608486031215610b7657610b7561064b565b5b5f610b8386828701610699565b9350506020610b9486828701610699565b9250506040610ba58682870161097c565b9150509250925092565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610be360188361073c565b9150610bee82610baf565b602082019050919050565b5f6020820190508181035f830152610c1081610bd7565b9050919050565b5f81519050919050565b5f81905092915050565b5f610c3582610c17565b610c3f8185610c21565b9350610c4f81856020860161074c565b80840191505092915050565b5f610c668284610c2b565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610ca5601d8361073c565b9150610cb082610c71565b602082019050919050565b5f6020820190508181035f830152610cd281610c99565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610d0d60178361073c565b9150610d1882610cd9565b602082019050919050565b5f6020820190508181035f830152610d3a81610d01565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f610d75601d8361073c565b9150610d8082610d41565b602082019050919050565b5f6020820190508181035f830152610da281610d69565b905091905056fea2646970667358221220680a0ed5d8878c02fe819139975865cc0d17e3db850b17f13588edcb5810ae0264736f6c634300081c0033