0x60a060405234801561001057600080fd5b50604051610f1f380380610f1f83398101604081905261002f91610099565b61003833610049565b6001600160a01b03166080526100c9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ab57600080fd5b81516001600160a01b03811681146100c257600080fd5b9392505050565b608051610e2d6100f26000396000818161012c01528181610338015261071b0152610e2d6000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063715018a611610071578063715018a6146101795780638da5cb5b14610181578063935beb1a146101925780639e375226146101a5578063ac7f380a146101d8578063f2fde38b146101eb57600080fd5b806303fc4c37146100b957806320158c44146100ce57806331e08f7a146101015780633993b6ed146101145780633cb747bf146101275780634e543b2614610166575b600080fd5b6100cc6100c7366004610c1c565b6101fe565b005b6100ee6100dc366004610c48565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100cc61010f366004610c7d565b610413565b6100cc610122366004610c7d565b610477565b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f8565b6100cc610174366004610c7d565b6104d0565b6100cc61054a565b6000546001600160a01b031661014e565b60025461014e906001600160a01b031681565b6101c86101b3366004610c7d565b60016020526000908152604090205460ff1681565b60405190151581526020016100f8565b6100ee6101e6366004610c9f565b61055e565b6100cc6101f9366004610c7d565b61081f565b6002546001600160a01b0316806102575760405162461bcd60e51b815260206004820152601860248201527714995cdbdb1d995c881859191c995cdcc81b9bdd081cd95d60421b60448201526064015b60405180910390fd5b6000848152600360205260409020548390036102a25760405162461bcd60e51b815260206004820152600a602482015269119a5b1b081d985b1a5960b21b604482015260640161024e565b6102aa610898565b83036103095760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420696e76616c69646174652066696c6c73206f662063757272656044820152676e7420626c6f636b60c01b606482015260840161024e565b604051602481018590526044810184905246606482015260848101839052600060a48201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bb5ddb0f90839060c40160408051601f198184030181529181526020820180516001600160e01b03166314adc78760e31b179052516001600160e01b031960e085901b1681526103ae929190600401610d5b565b600060405180830381600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b50506040518592508691507f931b401cf9baede43dc97f7d9dd4017d44f22bfa0a69668d527d9b5fff42b90a90600090a350505050565b61041b6108ab565b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527f371fc559c30f70424413fed6bf7e57dc939651331abad5c970a8ea0921c80b2e91015b60405180910390a150565b61047f6108ab565b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f4e774c97f73f4bea034579e4224498d7d9b3a4109eaa70ed3d85c97a5855f198910161046c565b6104d86108ab565b6002546001600160a01b0316156105285760405162461bcd60e51b815260206004820152601460248201527314995cdbdb1d995c88185b1c9958591e481cd95d60621b604482015260640161024e565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6105526108ab565b61055c6000610905565b565b3360008181526001602052604081205490919060ff166105ae5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b604482015260640161024e565b6002546001600160a01b0316806106025760405162461bcd60e51b815260206004820152601860248201527714995cdbdb1d995c881859191c995cdcc81b9bdd081cd95d60421b604482015260640161024e565b6040805160208082018b905246828401526bffffffffffffffffffffffff1960608b811b8216818501528a901b166074830152608882018890526001600160a01b031960a088901b1660a88301528251808303609401815260b49092019092528051910120600090600081815260036020526040902054909150156106ba5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e48199a5b1b195960921b604482015260640161024e565b6106cf6001600160a01b038916338989610955565b60006106d9610898565b60008381526003602052604090819020829055516024810184905260448101829052466064820152608481018c90523360a48201529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bb5ddb0f90859060c40160408051601f198184030181529181526020820180516001600160e01b03166314adc78760e31b179052516001600160e01b031960e085901b168152610791929190600401610d5b565b600060405180830381600087803b1580156107ab57600080fd5b505af11580156107bf573d6000803e3d6000fd5b5050604080518481523360208201529081018a90526001600160a01b038c1692508c915084907f2995401b199bc45ea8c8b79c27fb204b270cfb74444d546b1a100935e34438879060600160405180910390a49998505050505050505050565b6108276108ab565b6001600160a01b03811661088c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161024e565b61089581610905565b50565b60006108a5600143610d7f565b40905090565b6000546001600160a01b0316331461055c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161024e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526109af9085906109b5565b50505050565b6000610a0a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a8c9092919063ffffffff16565b805190915015610a875780806020019051810190610a289190610da6565b610a875760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161024e565b505050565b6060610a9b8484600085610aa3565b949350505050565b606082471015610b045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161024e565b600080866001600160a01b03168587604051610b209190610dc8565b60006040518083038185875af1925050503d8060008114610b5d576040519150601f19603f3d011682016040523d82523d6000602084013e610b62565b606091505b5091509150610b7387838387610b7e565b979650505050505050565b60608315610bed578251600003610be6576001600160a01b0385163b610be65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161024e565b5081610a9b565b610a9b8383815115610c025781518083602001fd5b8060405162461bcd60e51b815260040161024e9190610de4565b600080600060608486031215610c3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610c5a57600080fd5b5035919050565b80356001600160a01b0381168114610c7857600080fd5b919050565b600060208284031215610c8f57600080fd5b610c9882610c61565b9392505050565b600080600080600060a08688031215610cb757600080fd5b85359450610cc760208701610c61565b9350610cd560408701610c61565b92506060860135915060808601356bffffffffffffffffffffffff81168114610cfd57600080fd5b809150509295509295909350565b60005b83811015610d26578181015183820152602001610d0e565b50506000910152565b60008151808452610d47816020860160208601610d0b565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090610a9b90830184610d2f565b81810381811115610da057634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610db857600080fd5b81518015158114610c9857600080fd5b60008251610dda818460208701610d0b565b9190910192915050565b602081526000610c986020830184610d2f56fea264697066735822122021c05c8c368533938cfd5600b1a40c9473af046142c41b6c436d436bacf94f6f64736f6c6343000813003300000000000000000000000062249fcb288f0a4734072ab899b926ef9845bc8f