608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ccf806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063880ad0af11610078578063880ad0af146101585780638da5cb5b14610162578063bb34534c14610180578063e2095c07146101b0576100a5565b806301ffc9a7146100aa5780630cbb0f83146100da5780634420e486146100f85780637ef5029814610128575b600080fd5b6100c460048036038101906100bf9190610820565b6101e0565b6040516100d19190610966565b60405180910390f35b6100e26102d0565b6040516100ef91906109a1565b60405180910390f35b610112600480360381019061010d91906107a5565b6102e9565b60405161011f9190610966565b60405180910390f35b610142600480360381019061013d91906107ce565b61055d565b60405161014f91906109a1565b60405180910390f35b610160610575565b005b61016a6105b0565b604051610177919061094b565b60405180910390f35b61019a600480360381019061019591906107ce565b6105d4565b6040516101a7919061094b565b60405180910390f35b6101ca60048036038101906101c5919061088a565b61065a565b6040516101d7919061094b565b60405180910390f35b600063325d15e27c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561025457600190506102cb565b6301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102c657600190506102cb565b600090505b919050565b600060016002805490506102e49190610a8f565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461034457600080fd5b60606000806000808673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103f39190610934565b6000604051808303816000865af19150503d8060008114610430576040519150601f19603f3d011682016040523d82523d6000602084013e610435565b606091505b50915091508161044457600080fd5b808060200190518101906104589190610849565b945060028560405161046a9190610934565b602060405180830381855afa158015610487573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104aa91906107f7565b935060016000858152602001908152602001600020549250600083146104cf57600080fd5b60028054905060016000868152602001908152602001600020819055506002879080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600195505050505050919050565b60016020528060005260406000206000915090505481565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a790610981565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806001600084815260200190815260200160002054905060028181548110610627577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000600260018361066b9190610a39565b815481106106a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106e76106e2846109e1565b6109bc565b9050828152602081018484840111156106ff57600080fd5b61070a848285610b41565b509392505050565b60008135905061072181610c3d565b92915050565b60008135905061073681610c54565b92915050565b60008151905061074b81610c54565b92915050565b60008135905061076081610c6b565b92915050565b600082601f83011261077757600080fd5b81516107878482602086016106d4565b91505092915050565b60008135905061079f81610c82565b92915050565b6000602082840312156107b757600080fd5b60006107c584828501610712565b91505092915050565b6000602082840312156107e057600080fd5b60006107ee84828501610727565b91505092915050565b60006020828403121561080957600080fd5b60006108178482850161073c565b91505092915050565b60006020828403121561083257600080fd5b600061084084828501610751565b91505092915050565b60006020828403121561085b57600080fd5b600082015167ffffffffffffffff81111561087557600080fd5b61088184828501610766565b91505092915050565b60006020828403121561089c57600080fd5b60006108aa84828501610790565b91505092915050565b6108bc81610ac3565b82525050565b6108cb81610ad5565b82525050565b60006108dc82610a12565b6108e68185610a1d565b93506108f6818560208601610b41565b80840191505092915050565b600061090f601783610a28565b915061091a82610c14565b602082019050919050565b61092e81610b37565b82525050565b600061094082846108d1565b915081905092915050565b600060208201905061096060008301846108b3565b92915050565b600060208201905061097b60008301846108c2565b92915050565b6000602082019050818103600083015261099a81610902565b9050919050565b60006020820190506109b66000830184610925565b92915050565b60006109c66109d7565b90506109d28282610b74565b919050565b6000604051905090565b600067ffffffffffffffff8211156109fc576109fb610bd4565b5b610a0582610c03565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610a4482610b37565b9150610a4f83610b37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610a8457610a83610ba5565b5b828201905092915050565b6000610a9a82610b37565b9150610aa583610b37565b925082821015610ab857610ab7610ba5565b5b828203905092915050565b6000610ace82610b17565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610b5f578082015181840152602081019050610b44565b83811115610b6e576000848401525b50505050565b610b7d82610c03565b810181811067ffffffffffffffff82111715610b9c57610b9b610bd4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f6f776e65722063616e6e6f74206265206368616e676564000000000000000000600082015250565b610c4681610ac3565b8114610c5157600080fd5b50565b610c5d81610ae1565b8114610c6857600080fd5b50565b610c7481610aeb565b8114610c7f57600080fd5b50565b610c8b81610b37565b8114610c9657600080fd5b5056fea2646970667358221220d95d8be242e45aeef1ba98f83ed7a80092bea8a4da0e29317cc9c3f401d0242564736f6c63430008020033