0x60806040523480156200001157600080fd5b5060405162001149380380620011498339818101604052810190620000379190620001d5565b620000576200004b6200009f60201b60201c565b620000a760201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000207565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200019d8262000170565b9050919050565b620001af8162000190565b8114620001bb57600080fd5b50565b600081519050620001cf81620001a4565b92915050565b600060208284031215620001ee57620001ed6200016b565b5b6000620001fe84828501620001be565b91505092915050565b610f3280620002176000396000f3fe6080604052600436106100a75760003560e01c8063825af53c11610064578063825af53c146101725780638da5cb5b1461018e5780638f55bf10146101b957806391b7f5ed146101e4578063a035b1fe1461020d578063f2fde38b14610238576100a7565b80630aab3f34146100ac57806324600fc3146100c357806340b03373146100da57806360d81bc1146101055780636c8641a114610130578063715018a61461015b575b600080fd5b3480156100b857600080fd5b506100c1610261565b005b3480156100cf57600080fd5b506100d8610309565b005b3480156100e657600080fd5b506100ef6103ce565b6040516100fc91906109cf565b60405180910390f35b34801561011157600080fd5b5061011a6103d3565b60405161012791906109cf565b60405180910390f35b34801561013c57600080fd5b506101456103d8565b6040516101529190610a05565b60405180910390f35b34801561016757600080fd5b506101706103eb565b005b61018c60048036038101906101879190610a51565b610473565b005b34801561019a57600080fd5b506101a36106d8565b6040516101b09190610abf565b60405180910390f35b3480156101c557600080fd5b506101ce610701565b6040516101db9190610abf565b60405180910390f35b3480156101f057600080fd5b5061020b60048036038101906102069190610a51565b610727565b005b34801561021957600080fd5b506102226107ad565b60405161022f91906109cf565b60405180910390f35b34801561024457600080fd5b5061025f600480360381019061025a9190610b06565b6107b3565b005b6102696108aa565b73ffffffffffffffffffffffffffffffffffffffff166102876106d8565b73ffffffffffffffffffffffffffffffffffffffff16146102dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d490610b90565b60405180910390fd5b600360009054906101000a900460ff1615600360006101000a81548160ff021916908315150217905550565b6103116108aa565b73ffffffffffffffffffffffffffffffffffffffff1661032f6106d8565b73ffffffffffffffffffffffffffffffffffffffff1614610385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037c90610b90565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103cb573d6000803e3d6000fd5b50565b600181565b600281565b600360009054906101000a900460ff1681565b6103f36108aa565b73ffffffffffffffffffffffffffffffffffffffff166104116106d8565b73ffffffffffffffffffffffffffffffffffffffff1614610467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045e90610b90565b60405180910390fd5b61047160006108b2565b565b600360009054906101000a900460ff166104b9576040517ffc255a9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3360016040518363ffffffff1660e01b815260040161051d929190610bb0565b602060405180830381865afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e9190610bee565b9050600060028261056f9190610c4a565b9050600184108061057f57508084115b156105b6576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34600254856105c59190610c4a565b146105fc576040517f3c6b4b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060785610976565b90508373ffffffffffffffffffffffffffffffffffffffff1663f5298aca336001846040518463ffffffff1660e01b815260040161064793929190610c8c565b600060405180830381600087803b15801561066157600080fd5b505af1158015610675573d6000803e3d6000fd5b505050507f3aad6d2cd5d10ac96e710ba93e9398f5e1c74abfe6a2e6a6a3a7fbe407a63c4a60405180602001604052806001815250604051806020016040528088815250336040516106c993929190610d6e565b60405180910390a15050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61072f6108aa565b73ffffffffffffffffffffffffffffffffffffffff1661074d6106d8565b73ffffffffffffffffffffffffffffffffffffffff16146107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079a90610b90565b60405180910390fd5b8060028190555050565b60025481565b6107bb6108aa565b73ffffffffffffffffffffffffffffffffffffffff166107d96106d8565b73ffffffffffffffffffffffffffffffffffffffff161461082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690610b90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089590610e17565b60405180910390fd5b6108a7816108b2565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806002836109869190610e66565b14610992576001610995565b60005b60ff166002836109a59190610e97565b6109af9190610ec8565b9050919050565b6000819050919050565b6109c9816109b6565b82525050565b60006020820190506109e460008301846109c0565b92915050565b60008115159050919050565b6109ff816109ea565b82525050565b6000602082019050610a1a60008301846109f6565b92915050565b600080fd5b610a2e816109b6565b8114610a3957600080fd5b50565b600081359050610a4b81610a25565b92915050565b600060208284031215610a6757610a66610a20565b5b6000610a7584828501610a3c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aa982610a7e565b9050919050565b610ab981610a9e565b82525050565b6000602082019050610ad46000830184610ab0565b92915050565b610ae381610a9e565b8114610aee57600080fd5b50565b600081359050610b0081610ada565b92915050565b600060208284031215610b1c57610b1b610a20565b5b6000610b2a84828501610af1565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610b7a602083610b33565b9150610b8582610b44565b602082019050919050565b60006020820190508181036000830152610ba981610b6d565b9050919050565b6000604082019050610bc56000830185610ab0565b610bd260208301846109c0565b9392505050565b600081519050610be881610a25565b92915050565b600060208284031215610c0457610c03610a20565b5b6000610c1284828501610bd9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c55826109b6565b9150610c60836109b6565b9250828202610c6e816109b6565b91508282048414831517610c8557610c84610c1b565b5b5092915050565b6000606082019050610ca16000830186610ab0565b610cae60208301856109c0565b610cbb60408301846109c0565b949350505050565b600060019050919050565b600081905092915050565b6000819050919050565b610cec816109b6565b82525050565b6000610cfe8383610ce3565b60208301905092915050565b6000602082019050919050565b610d2081610cc3565b610d2a8184610cce565b9250610d3582610cd9565b8060005b83811015610d66578151610d4d8782610cf2565b9650610d5883610d0a565b925050600181019050610d39565b505050505050565b6000606082019050610d836000830186610d17565b610d906020830185610d17565b610d9d6040830184610ab0565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610e01602683610b33565b9150610e0c82610da5565b604082019050919050565b60006020820190508181036000830152610e3081610df4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e71826109b6565b9150610e7c836109b6565b925082610e8c57610e8b610e37565b5b828206905092915050565b6000610ea2826109b6565b9150610ead836109b6565b925082610ebd57610ebc610e37565b5b828204905092915050565b6000610ed3826109b6565b9150610ede836109b6565b9250828201905080821115610ef657610ef5610c1b565b5b9291505056fea264697066735822122050a3ff463f1c8835a7b25d68323b7b32789186455fce4da265f8f9c54c7605b464736f6c6343000811003300000000000000000000000043764f5b8973f62a6f10914516131c1489e3190d