0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610f8a806100326000396000f3fe60806040526004361061008f5760003560e01c8063c0d7865511610056578063c0d786551461015f578063e0062d791461017f578063e0ca14741461019f578063ec44acf2146101bf578063f887ea40146101df57005b806313af4035146100985780637dc0d1d0146100b85780638da5cb5b146100f55780639d8e217714610115578063a5a01c5d1461013f57005b3661009657005b005b3480156100a457600080fd5b506100966100b3366004610c58565b6101ff565b3480156100c457600080fd5b506003546100d8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010157600080fd5b506000546100d8906001600160a01b031681565b34801561012157600080fd5b50610131670de0b6b3a764000081565b6040519081526020016100ec565b34801561014b57600080fd5b5061009661015a366004610cd3565b610254565b34801561016b57600080fd5b5061009661017a366004610c58565b6102be565b34801561018b57600080fd5b5061009661019a366004610cd3565b610428565b3480156101ab57600080fd5b506100966101ba366004610c92565b610778565b3480156101cb57600080fd5b506002546100d8906001600160a01b031681565b3480156101eb57600080fd5b506001546100d8906001600160a01b031681565b6000546001600160a01b031633146102325760405162461bcd60e51b815260040161022990610dac565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146102985760405162461bcd60e51b8152602060048201526007602482015266216f7261636c6560c81b6044820152606401610229565b47808211156102a657505050565b6102b96001600160a01b038416836107ad565b505050565b6000546001600160a01b031633146102e85760405162461bcd60e51b815260040161022990610dac565b600180546001600160a01b0319166001600160a01b038316908117909155604080516307dc0d1d60e41b81529051637dc0d1d091600480820192602092909190829003018186803b15801561033c57600080fd5b505afa158015610350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103749190610c75565b600380546001600160a01b0319166001600160a01b0392831617905560015460408051637622567960e11b81529051919092169163ec44acf2916004808301926020929190829003018186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190610c75565b600280546001600160a01b0319166001600160a01b039290921691909117905550565b6002546001600160a01b0316331461046d5760405162461bcd60e51b81526020600482015260086024820152672174726164696e6760c01b6044820152606401610229565b6001546040516356e8b9cd60e11b81526001600160a01b038481166004830152600092169063add1739a9060240160206040518083038186803b1580156104b357600080fd5b505afa1580156104c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104eb9190610c75565b6001546040516327d442d560e11b81526001600160a01b03868116600483015292935060009290911690634fa885aa9060240160206040518083038186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190610c75565b6001546040516357a78bcb60e11b81526001600160a01b03878116600483015292935060009261271092879291169063af4f17969060240160206040518083038186803b1580156105be57600080fd5b505afa1580156105d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f69190610d21565b6106009190610edb565b61060a9190610dcc565b90506106178584836108c6565b60405163e38a195b60e01b8152600481018290526001600160a01b0384169063e38a195b90602401600060405180830381600087803b15801561065957600080fd5b505af115801561066d573d6000803e3d6000fd5b5050600154604051630bba0caf60e31b81526001600160a01b03898116600483015260009450612710935088921690635dd065789060240160206040518083038186803b1580156106bd57600080fd5b505afa1580156106d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f59190610d21565b6106ff9190610edb565b6107099190610dcc565b90506107168684836108c6565b60405163e38a195b60e01b8152600481018290526001600160a01b0384169063e38a195b90602401600060405180830381600087803b15801561075857600080fd5b505af115801561076c573d6000803e3d6000fd5b50505050505050505050565b6000546001600160a01b031633146107a25760405162461bcd60e51b815260040161022990610dac565b6102b98383836108c6565b804710156107fd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461084a576040519150601f19603f3d011682016040523d82523d6000602084013e61084f565b606091505b50509050806102b95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b8015806108da57506001600160a01b038216155b156108e457505050565b60015460405163067aa55560e51b81526001600160a01b038581166004830152600092169063cf54aaa09060240160206040518083038186803b15801561092a57600080fd5b505afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109629190610d3a565b60ff169050670de0b6b3a764000061097b82600a610e31565b6109859084610edb565b61098f9190610dcc565b91506001600160a01b0384166109b7576109b26001600160a01b038416836107ad565b6109cb565b6109cb6001600160a01b03851684846109d1565b50505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526102b992869291600091610a61918516908490610ade565b8051909150156102b95780806020019051810190610a7f9190610cff565b6102b95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610229565b6060610aed8484600085610af7565b90505b9392505050565b606082471015610b585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610229565b843b610ba65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610229565b600080866001600160a01b03168587604051610bc29190610d5d565b60006040518083038185875af1925050503d8060008114610bff576040519150601f19603f3d011682016040523d82523d6000602084013e610c04565b606091505b5091509150610c14828286610c1f565b979650505050505050565b60608315610c2e575081610af0565b825115610c3e5782518084602001fd5b8160405162461bcd60e51b81526004016102299190610d79565b600060208284031215610c6a57600080fd5b8135610af081610f3c565b600060208284031215610c8757600080fd5b8151610af081610f3c565b600080600060608486031215610ca757600080fd5b8335610cb281610f3c565b92506020840135610cc281610f3c565b929592945050506040919091013590565b60008060408385031215610ce657600080fd5b8235610cf181610f3c565b946020939093013593505050565b600060208284031215610d1157600080fd5b81518015158114610af057600080fd5b600060208284031215610d3357600080fd5b5051919050565b600060208284031215610d4c57600080fd5b815160ff81168114610af057600080fd5b60008251610d6f818460208701610efa565b9190910192915050565b6020815260008251806020840152610d98816040850160208701610efa565b601f01601f19169190910160400192915050565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b600082610de957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115610e29578160001904821115610e0f57610e0f610f26565b80851615610e1c57918102915b93841c9390800290610df3565b509250929050565b6000610af08383600082610e4757506001610ed5565b81610e5457506000610ed5565b8160018114610e6a5760028114610e7457610e90565b6001915050610ed5565b60ff841115610e8557610e85610f26565b50506001821b610ed5565b5060208310610133831016604e8410600b8410161715610eb3575081810a610ed5565b610ebd8383610dee565b8060001904821115610ed157610ed1610f26565b0290505b92915050565b6000816000190483118215151615610ef557610ef5610f26565b500290565b60005b83811015610f15578181015183820152602001610efd565b838111156109cb5750506000910152565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610f5157600080fd5b5056fea2646970667358221220aafd906406bd52130a51bc98fc197a4f2a52c929fcd8a82f4e0865cf4636032564736f6c63430008070033