0x60806040526004361061008f5760003560e01c8063c0d7865511610056578063c0d786551461015f578063e0062d791461017f578063e0ca14741461019f578063ec44acf2146101bf578063f887ea40146101df57005b806313af4035146100985780637dc0d1d0146100b85780638da5cb5b146100f55780639d8e217714610115578063a5a01c5d1461013f57005b3661009657005b005b3480156100a457600080fd5b506100966100b3366004610c07565b6101ff565b3480156100c457600080fd5b506003546100d8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010157600080fd5b506000546100d8906001600160a01b031681565b34801561012157600080fd5b50610131670de0b6b3a764000081565b6040519081526020016100ec565b34801561014b57600080fd5b5061009661015a366004610c24565b610254565b34801561016b57600080fd5b5061009661017a366004610c07565b6102be565b34801561018b57600080fd5b5061009661019a366004610c24565b61040a565b3480156101ab57600080fd5b506100966101ba366004610c50565b61071e565b3480156101cb57600080fd5b506002546100d8906001600160a01b031681565b3480156101eb57600080fd5b506001546100d8906001600160a01b031681565b6000546001600160a01b031633146102325760405162461bcd60e51b815260040161022990610c91565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146102985760405162461bcd60e51b8152602060048201526007602482015266216f7261636c6560c81b6044820152606401610229565b47808211156102a657505050565b6102b96001600160a01b03841683610753565b505050565b6000546001600160a01b031633146102e85760405162461bcd60e51b815260040161022990610c91565b600180546001600160a01b0319166001600160a01b038316908117909155604080516307dc0d1d60e41b81529051637dc0d1d0916004808201926020929091908290030181865afa158015610341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103659190610cb1565b600380546001600160a01b0319166001600160a01b0392831617905560015460408051637622567960e11b81529051919092169163ec44acf29160048083019260209291908290030181865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190610cb1565b600280546001600160a01b0319166001600160a01b039290921691909117905550565b6002546001600160a01b0316331461044f5760405162461bcd60e51b81526020600482015260086024820152672174726164696e6760c01b6044820152606401610229565b6001546040516356e8b9cd60e11b81526001600160a01b038481166004830152600092169063add1739a90602401602060405180830381865afa15801561049a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104be9190610cb1565b60015460405163d566869b60e01b81526001600160a01b0386811660048301529293506000929091169063d566869b90602401602060405180830381865afa15801561050e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105329190610cb1565b6001546040516357a78bcb60e11b81526001600160a01b03878116600483015292935060009261271092879291169063af4f179690602401602060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190610cce565b6105b59190610cfd565b6105bf9190610d1a565b90506105cc85848361086c565b60405163e38a195b60e01b8152600481018290526001600160a01b0384169063e38a195b90602401600060405180830381600087803b15801561060e57600080fd5b505af1158015610622573d6000803e3d6000fd5b5050600154604051631a8f144560e11b81526001600160a01b0389811660048301526000945061271093508892169063351e288a90602401602060405180830381865afa158015610677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069b9190610cce565b6106a59190610cfd565b6106af9190610d1a565b90506106bc86848361086c565b60405163e38a195b60e01b8152600481018290526001600160a01b0384169063e38a195b90602401600060405180830381600087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b50505050505050505050565b6000546001600160a01b031633146107485760405162461bcd60e51b815260040161022990610c91565b6102b983838361086c565b804710156107a35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f0576040519150601f19603f3d011682016040523d82523d6000602084013e6107f5565b606091505b50509050806102b95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b80158061088057506001600160a01b038216155b1561088a57505050565b60015460405163067aa55560e51b81526001600160a01b038581166004830152600092169063cf54aaa090602401602060405180830381865afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190610d3c565b60ff169050670de0b6b3a764000061091282600a610e43565b61091c9084610cfd565b6109269190610d1a565b91506001600160a01b03841661094e576109496001600160a01b03841683610753565b610962565b6109626001600160a01b0385168484610968565b50505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526102b9928692916000916109f8918516908490610a75565b8051909150156102b95780806020019051810190610a169190610e4f565b6102b95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610229565b6060610a848484600085610a8e565b90505b9392505050565b606082471015610aef5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610229565b843b610b3d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610229565b600080866001600160a01b03168587604051610b599190610e95565b60006040518083038185875af1925050503d8060008114610b96576040519150601f19603f3d011682016040523d82523d6000602084013e610b9b565b606091505b5091509150610bab828286610bb6565b979650505050505050565b60608315610bc5575081610a87565b825115610bd55782518084602001fd5b8160405162461bcd60e51b81526004016102299190610eb1565b6001600160a01b0381168114610c0457600080fd5b50565b600060208284031215610c1957600080fd5b8135610a8781610bef565b60008060408385031215610c3757600080fd5b8235610c4281610bef565b946020939093013593505050565b600080600060608486031215610c6557600080fd5b8335610c7081610bef565b92506020840135610c8081610bef565b929592945050506040919091013590565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b600060208284031215610cc357600080fd5b8151610a8781610bef565b600060208284031215610ce057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d1457610d14610ce7565b92915050565b600082610d3757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610d4e57600080fd5b815160ff81168114610a8757600080fd5b600181815b80851115610d9a578160001904821115610d8057610d80610ce7565b80851615610d8d57918102915b93841c9390800290610d64565b509250929050565b600082610db157506001610d14565b81610dbe57506000610d14565b8160018114610dd45760028114610dde57610dfa565b6001915050610d14565b60ff841115610def57610def610ce7565b50506001821b610d14565b5060208310610133831016604e8410600b8410161715610e1d575081810a610d14565b610e278383610d5f565b8060001904821115610e3b57610e3b610ce7565b029392505050565b6000610a878383610da2565b600060208284031215610e6157600080fd5b81518015158114610a8757600080fd5b60005b83811015610e8c578181015183820152602001610e74565b50506000910152565b60008251610ea7818460208701610e71565b9190910192915050565b6020815260008251806020840152610ed0816040850160208701610e71565b601f01601f1916919091016040019291505056fea2646970667358221220a39465b4a077382a38a2e29d131e7d018fcaed26bf3b041a58ffdf062f3347f364736f6c63430008140033