60806040526040516107873803806107878339818101604052606081101561002657600080fd5b50805160208083015160409384015184516001600160a01b038084166024830152821660448083019190915286518083039091018152606490910190955291840180516001600160e01b031663784d200b60e11b1790529192839061008a8261015b565b805115610142576000826001600160a01b0316826040518082805190602001908083835b602083106100cd5780518252601f1990920191602091820191016100ae565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461012d576040519150601f19603f3d011682016040523d82523d6000602084013e610132565b606091505b505090508061014057600080fd5b505b5061014a9050565b610153816101cd565b5050506101f7565b61016e816101f160201b6103651760201c565b6101a95760405162461bcd60e51b81526004018080602001828103825260368152602001806107516036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b61054b806102066000396000f3fe60806040526004361061004e5760003560e01c80630c870f91146100655780633659cfe6146100965780633e47158c146100c95780634f1ef286146100de5780638f2839701461015e5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061007a6101ab565b604080516001600160a01b039092168252519081900360200190f35b3480156100a257600080fd5b5061005b600480360360208110156100b957600080fd5b50356001600160a01b03166101ba565b3480156100d557600080fd5b5061007a6101f4565b61005b600480360360408110156100f457600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011f57600080fd5b82018360208201111561013157600080fd5b8035906020019184600183028401116401000000008311171561015357600080fd5b5090925090506101fe565b34801561016a57600080fd5b5061005b6004803603602081101561018157600080fd5b50356001600160a01b03166102ab565b6101996101a9565b6101a96101a461036b565b610390565b565b60006101b561036b565b905090565b6101c26103b4565b6001600160a01b0316336001600160a01b031614156101e9576101e4816103d9565b6101f1565b6101f1610191565b50565b60006101b56103b4565b6102066103b4565b6001600160a01b0316336001600160a01b0316141561029e57610228836103d9565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610285576040519150601f19603f3d011682016040523d82523d6000602084013e61028a565b606091505b505090508061029857600080fd5b506102a6565b6102a6610191565b505050565b6102b36103b4565b6001600160a01b0316336001600160a01b031614156101e9576001600160a01b0381166103115760405162461bcd60e51b815260040180806020018281038252603a8152602001806104a6603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61033a6103b4565b604080516001600160a01b03928316815291841660208301528051918290030190a16101e481610419565b3b151590565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156103af573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6103e28161043d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61044681610365565b6104815760405162461bcd60e51b81526004018080602001828103825260368152602001806104e06036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374a2646970667358221220442cd328f8e81047ae704edeab3b0a6a7309d99836791d391e6e425257a751e664736f6c634300060c00335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163740000000000000000000000000d6bd42b2a205a15043273299e9314c7c6464f93000000000000000000000000a8cf4367a41db7019ee3502878b8a790c88b2a9f000000000000000000000000c793ddad8ae0c5120e4d068d636a1a960c1fd2dd