608060405234801561000f575f80fd5b506040518060400160405280600b81526020017f546574686572546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5553447400000000000000000000000000000000000000000000000000000000815250816003908161008b91906102dd565b50806004908161009b91906102dd565b5050506103ac565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061011e57607f821691505b602082108103610131576101306100da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610158565b61019d8683610158565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101e16101dc6101d7846101b5565b6101be565b6101b5565b9050919050565b5f819050919050565b6101fa836101c7565b61020e610206826101e8565b848454610164565b825550505050565b5f90565b610222610216565b61022d8184846101f1565b505050565b5b81811015610250576102455f8261021a565b600181019050610233565b5050565b601f8211156102955761026681610137565b61026f84610149565b8101602085101561027e578190505b61029261028a85610149565b830182610232565b50505b505050565b5f82821c905092915050565b5f6102b55f198460080261029a565b1980831691505092915050565b5f6102cd83836102a6565b9150826002028217905092915050565b6102e6826100a3565b67ffffffffffffffff8111156102ff576102fe6100ad565b5b6103098254610107565b610314828285610254565b5f60209050601f831160018114610345575f8415610333578287015190505b61033d85826102c2565b8655506103a4565b601f19841661035386610137565b5f5b8281101561037a57848901518255600182019150602085019450602081019050610355565b868310156103975784890151610393601f8916826102a6565b8355505b6001600288020188555050505b505050505050565b610d92806103b95f395ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610a0b565b60405180910390f35b6100cd60048036038101906100c89190610abc565b61028d565b6040516100da9190610b14565b60405180910390f35b6100eb6102af565b6040516100f89190610b3c565b60405180910390f35b61011b60048036038101906101169190610b55565b6102b8565b6040516101289190610b14565b60405180910390f35b610139610329565b6040516101469190610bc0565b60405180910390f35b61016960048036038101906101649190610bd9565b610331565b6040516101769190610b3c565b60405180910390f35b610187610376565b6040516101949190610a0b565b60405180910390f35b6101b760048036038101906101b29190610abc565b610406565b6040516101c49190610b14565b60405180910390f35b6101e760048036038101906101e29190610c04565b610428565b6040516101f49190610b3c565b60405180910390f35b60606003805461020c90610c6f565b80601f016020809104026020016040519081016040528092919081815260200182805461023890610c6f565b80156102835780601f1061025a57610100808354040283529160200191610283565b820191905f5260205f20905b81548152906001019060200180831161026657829003601f168201915b5050505050905090565b5f806102976104aa565b90506102a48185856104b1565b600191505092915050565b5f600254905090565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516103169190610b3c565b60405180910390a3600190509392505050565b5f6006905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461038590610c6f565b80601f01602080910402602001604051908101604052809291908181526020018280546103b190610c6f565b80156103fc5780601f106103d3576101008083540402835291602001916103fc565b820191905f5260205f20905b8154815290600101906020018083116103df57829003601f168201915b5050505050905090565b5f806104106104aa565b905061041d8185856104c3565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6104be83838360016105b3565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610533575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161052a9190610cae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105a3575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161059a9190610cae565b60405180910390fd5b6105ae838383610782565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610623575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161061a9190610cae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610693575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161068a9190610cae565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561077c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107739190610b3c565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d2578060025f8282546107c69190610cf4565b925050819055506108a0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561085b578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161085293929190610d27565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108e7578060025f8282540392505081905550610931565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161098e9190610b3c565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6109dd8261099b565b6109e781856109a5565b93506109f78185602086016109b5565b610a00816109c3565b840191505092915050565b5f6020820190508181035f830152610a2381846109d3565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a5882610a2f565b9050919050565b610a6881610a4e565b8114610a72575f80fd5b50565b5f81359050610a8381610a5f565b92915050565b5f819050919050565b610a9b81610a89565b8114610aa5575f80fd5b50565b5f81359050610ab681610a92565b92915050565b5f8060408385031215610ad257610ad1610a2b565b5b5f610adf85828601610a75565b9250506020610af085828601610aa8565b9150509250929050565b5f8115159050919050565b610b0e81610afa565b82525050565b5f602082019050610b275f830184610b05565b92915050565b610b3681610a89565b82525050565b5f602082019050610b4f5f830184610b2d565b92915050565b5f805f60608486031215610b6c57610b6b610a2b565b5b5f610b7986828701610a75565b9350506020610b8a86828701610a75565b9250506040610b9b86828701610aa8565b9150509250925092565b5f60ff82169050919050565b610bba81610ba5565b82525050565b5f602082019050610bd35f830184610bb1565b92915050565b5f60208284031215610bee57610bed610a2b565b5b5f610bfb84828501610a75565b91505092915050565b5f8060408385031215610c1a57610c19610a2b565b5b5f610c2785828601610a75565b9250506020610c3885828601610a75565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c8657607f821691505b602082108103610c9957610c98610c42565b5b50919050565b610ca881610a4e565b82525050565b5f602082019050610cc15f830184610c9f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610cfe82610a89565b9150610d0983610a89565b9250828201905080821115610d2157610d20610cc7565b5b92915050565b5f606082019050610d3a5f830186610c9f565b610d476020830185610b2d565b610d546040830184610b2d565b94935050505056fea2646970667358221220e7c2348bfde00087b00b39e81d869586c07b8749e812fb8dc00d9e7de426ff4064736f6c634300081a0033