0x60806040523480156200001157600080fd5b506040516200136c3803806200136c833981810160405281019062000037919062000278565b620000576200004b6200010760201b60201c565b6200010f60201b60201c565b8160018190555063629a1c1460028190555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073169e633a2d1e6c10dd91238ba11c4a708dfef37c600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620002bf565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b6000819050919050565b620001ed81620001d8565b8114620001f957600080fd5b50565b6000815190506200020d81620001e2565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002408262000213565b9050919050565b620002528162000233565b81146200025e57600080fd5b50565b600081519050620002728162000247565b92915050565b60008060408385031215620002925762000291620001d3565b5b6000620002a285828601620001fc565b9250506020620002b58582860162000261565b9150509250929050565b61109d80620002cf6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636e04ff0d1161008c578063904440bd11610066578063904440bd14610210578063947a36fb1461022e578063aa8c217c1461024c578063f2fde38b1461026a576100ea565b80636e04ff0d146101b7578063715018a6146101e85780638da5cb5b146101f2576100ea565b80632a332b2a116100c85780632a332b2a146101435780633f3b3b271461015f5780634585e33b1461017d5780635c975abb14610199576100ea565b806316c38b3c146100ef57806322a900821461010b578063271f88b414610127575b600080fd5b610109600480360381019061010491906109ed565b610286565b005b61012560048036038101906101209190610a50565b61031f565b005b610141600480360381019061013c9190610a50565b6103a5565b005b61015d60048036038101906101589190610adb565b61042b565b005b6101676104eb565b6040516101749190610b17565b60405180910390f35b61019760048036038101906101929190610b97565b6104f1565b005b6101a1610634565b6040516101ae9190610bf3565b60405180910390f35b6101d160048036038101906101cc9190610b97565b610647565b6040516101df929190610ca7565b60405180910390f35b6101f0610689565b005b6101fa610711565b6040516102079190610ce6565b60405180910390f35b61021861073a565b6040516102259190610d1a565b60405180910390f35b6102366107db565b6040516102439190610b17565b60405180910390f35b6102546107e1565b6040516102619190610b17565b60405180910390f35b610284600480360381019061027f9190610adb565b6107e7565b005b61028e6108df565b73ffffffffffffffffffffffffffffffffffffffff166102ac610711565b73ffffffffffffffffffffffffffffffffffffffff1614610302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f990610d92565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b6103276108df565b73ffffffffffffffffffffffffffffffffffffffff16610345610711565b73ffffffffffffffffffffffffffffffffffffffff161461039b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039290610d92565b60405180910390fd5b8060018190555050565b6103ad6108df565b73ffffffffffffffffffffffffffffffffffffffff166103cb610711565b73ffffffffffffffffffffffffffffffffffffffff1614610421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041890610d92565b60405180910390fd5b8060038190555050565b6104336108df565b73ffffffffffffffffffffffffffffffffffffffff16610451610711565b73ffffffffffffffffffffffffffffffffffffffff16146104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e90610d92565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b6000600460146101000a81548160ff021916908315150217905561054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054190610dfe565b60405180910390fd5b60006412a05f200061055a61073a565b1290506000600154600254426105709190610e4d565b11905081801561057d5750805b1561062e5762093a80600260008282546105979190610e81565b92505081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636dae4ac56003546040518263ffffffff1660e01b81526004016105fb9190610b17565b600060405180830381600087803b15801561061557600080fd5b505af1158015610629573d6000803e3d6000fd5b505050505b50505050565b600460149054906101000a900460ff1681565b6000606060006412a05f200061065b61073a565b1290506000600154600254426106719190610e4d565b11905081801561067e5750805b935050509250929050565b6106916108df565b73ffffffffffffffffffffffffffffffffffffffff166106af610711565b73ffffffffffffffffffffffffffffffffffffffff1614610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90610d92565b60405180910390fd5b61070f60006108e7565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156107aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ce9190610f5a565b5050509150508091505090565b60015481565b60035481565b6107ef6108df565b73ffffffffffffffffffffffffffffffffffffffff1661080d610711565b73ffffffffffffffffffffffffffffffffffffffff1614610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90610d92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ca90611047565b60405180910390fd5b6108dc816108e7565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600080fd5b60008115159050919050565b6109ca816109b5565b81146109d557600080fd5b50565b6000813590506109e7816109c1565b92915050565b600060208284031215610a0357610a026109ab565b5b6000610a11848285016109d8565b91505092915050565b6000819050919050565b610a2d81610a1a565b8114610a3857600080fd5b50565b600081359050610a4a81610a24565b92915050565b600060208284031215610a6657610a656109ab565b5b6000610a7484828501610a3b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aa882610a7d565b9050919050565b610ab881610a9d565b8114610ac357600080fd5b50565b600081359050610ad581610aaf565b92915050565b600060208284031215610af157610af06109ab565b5b6000610aff84828501610ac6565b91505092915050565b610b1181610a1a565b82525050565b6000602082019050610b2c6000830184610b08565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610b5757610b56610b32565b5b8235905067ffffffffffffffff811115610b7457610b73610b37565b5b602083019150836001820283011115610b9057610b8f610b3c565b5b9250929050565b60008060208385031215610bae57610bad6109ab565b5b600083013567ffffffffffffffff811115610bcc57610bcb6109b0565b5b610bd885828601610b41565b92509250509250929050565b610bed816109b5565b82525050565b6000602082019050610c086000830184610be4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610c48578082015181840152602081019050610c2d565b83811115610c57576000848401525b50505050565b6000601f19601f8301169050919050565b6000610c7982610c0e565b610c838185610c19565b9350610c93818560208601610c2a565b610c9c81610c5d565b840191505092915050565b6000604082019050610cbc6000830185610be4565b8181036020830152610cce8184610c6e565b90509392505050565b610ce081610a9d565b82525050565b6000602082019050610cfb6000830184610cd7565b92915050565b6000819050919050565b610d1481610d01565b82525050565b6000602082019050610d2f6000830184610d0b565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610d7c602083610d35565b9150610d8782610d46565b602082019050919050565b60006020820190508181036000830152610dab81610d6f565b9050919050565b7f63616e206f6e6c792075706b656570207768656e206e6f742070617573656400600082015250565b6000610de8601f83610d35565b9150610df382610db2565b602082019050919050565b60006020820190508181036000830152610e1781610ddb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e5882610a1a565b9150610e6383610a1a565b925082821015610e7657610e75610e1e565b5b828203905092915050565b6000610e8c82610a1a565b9150610e9783610a1a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ecc57610ecb610e1e565b5b828201905092915050565b600069ffffffffffffffffffff82169050919050565b610ef681610ed7565b8114610f0157600080fd5b50565b600081519050610f1381610eed565b92915050565b610f2281610d01565b8114610f2d57600080fd5b50565b600081519050610f3f81610f19565b92915050565b600081519050610f5481610a24565b92915050565b600080600080600060a08688031215610f7657610f756109ab565b5b6000610f8488828901610f04565b9550506020610f9588828901610f30565b9450506040610fa688828901610f45565b9350506060610fb788828901610f45565b9250506080610fc888828901610f04565b9150509295509295909350565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611031602683610d35565b915061103c82610fd5565b604082019050919050565b6000602082019050818103600083015261106081611024565b905091905056fea2646970667358221220a107e8a910cff4c37617951cbbfaa46067666abc9be3a0ae43d177d5ab0a196064736f6c634300080b00330000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000065408355ffe5a612e7246b8e96ec8f3a3b3d06fc