0x60806040526002805463ffffffff1916905534801561001c575f80fd5b506100263361003d565b600680546001600160a01b0319163317905561008c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b5f806100995f395ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c8063704b6c0211610093578063bbcd5bbe11610063578063bbcd5bbe14610249578063ef78d4fd1461025c578063f2fde38b1461026c578063f851a4401461027f575f80fd5b8063704b6c0214610202578063715018a6146102155780638523b7db1461021d5780638da5cb5b14610239575f80fd5b806355a373d6116100ce57806355a373d61461017457806356b350bb146101875780635b0cd91b146101ca57806361595d12146101ef575f80fd5b806322113a01146100ff57806328b7bede146101315780632eb4a7ab146101565780634293dc6e1461015f575b5f80fd5b61011e61010d36600461096c565b60046020525f908152604090205481565b6040519081526020015b60405180910390f35b6005546001600160a01b03165b6040516001600160a01b039091168152602001610128565b61011e60015481565b61017261016d366004610999565b610292565b005b60055461013e906001600160a01b031681565b6101b5610195366004610a58565b6001600160a01b03165f9081526003602052604090205463ffffffff1690565b60405163ffffffff9091168152602001610128565b6101b56101d8366004610a58565b60036020525f908152604090205463ffffffff1681565b6101726101fd366004610a7e565b61056c565b610172610210366004610a58565b61060f565b61017261067e565b60025463ffffffff165f9081526004602052604090205461011e565b5f546001600160a01b031661013e565b610172610257366004610a58565b6106e2565b6002546101b59063ffffffff1681565b61017261027a366004610a58565b6107b3565b60065461013e906001600160a01b031681565b600254335f9081526003602052604090205463ffffffff9182169116036103005760405162461bcd60e51b815260206004820152601760248201527f636c61696d3a20416c726561647920726563656976656400000000000000000060448201526064015b60405180910390fd5b600554600654604051636eb1769f60e11b81526001600160a01b0391821660048201523060248201529116908290829063dd62ed3e90604401602060405180830381865afa158015610354573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103789190610aa8565b10156103d95760405162461bcd60e51b815260206004820152602a60248201527f636c61696d546f6b656e3a204e65656420617070726f76652061646d696e204560448201526929219918103a37b5b2b760b11b60648201526084016102f7565b604080513360208201529081018390525f9060600160408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610430846001548361087d565b6104735760405162461bcd60e51b815260206004820152601460248201527331b630b4b69d1024b73b30b634b210383937b7b360611b60448201526064016102f7565b60025463ffffffff165f9081526004602052604081208054859290610499908490610abf565b9091555050600254335f8181526003602052604090819020805463ffffffff191663ffffffff9094169390931790925560065491516323b872dd60e01b81526001600160a01b039283166004820152602481019190915260448101859052908316906323b872dd906064015f604051808303815f87803b15801561051b575f80fd5b505af115801561052d573d5f803e3d5ffd5b50506040518581523392507f5d425a3a6a3d5a60fbf147dc6659ce3dfeb701fc44fe90058c32783b8807c574915060200160405180910390a250505050565b6006546001600160a01b031633148061059d5750336105925f546001600160a01b031690565b6001600160a01b0316145b6105b95760405162461bcd60e51b81526004016102f790610ade565b60018290556002805463ffffffff191663ffffffff831690811790915560405190815282907ff28a3c6aeeed13d2c43df85b301e167868badca7c574dbb72fb70f880cc2c0599060200160405180910390a25050565b6006546001600160a01b03163314806106405750336106355f546001600160a01b031690565b6001600160a01b0316145b61065c5760405162461bcd60e51b81526004016102f790610ade565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146106d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f7565b6106e05f610892565b565b6006546001600160a01b03163314806107135750336107085f546001600160a01b031690565b6001600160a01b0316145b61072f5760405162461bcd60e51b81526004016102f790610ade565b6001600160a01b0381166107915760405162461bcd60e51b815260206004820152602360248201527f636c61696d3a20636f6e747261637420697320746865207a65726f206164647260448201526265737360e81b60648201526084016102f7565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461080c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f7565b6001600160a01b0381166108715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f7565b61087a81610892565b50565b5f8261088985846108e1565b14949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f81815b845181101561091b576109118286838151811061090457610904610b15565b6020026020010151610925565b91506001016108e5565b5090505b92915050565b5f81831061093f575f82815260208490526040902061094d565b5f8381526020839052604090205b9392505050565b803563ffffffff81168114610967575f80fd5b919050565b5f6020828403121561097c575f80fd5b61094d82610954565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156109aa575f80fd5b823567ffffffffffffffff808211156109c1575f80fd5b818501915085601f8301126109d4575f80fd5b81356020828211156109e8576109e8610985565b8160051b604051601f19603f83011681018181108682111715610a0d57610a0d610985565b604052928352818301935084810182019289841115610a2a575f80fd5b948201945b83861015610a4857853585529482019493820193610a2f565b9997909101359750505050505050565b5f60208284031215610a68575f80fd5b81356001600160a01b038116811461094d575f80fd5b5f8060408385031215610a8f575f80fd5b82359150610a9f60208401610954565b90509250929050565b5f60208284031215610ab8575f80fd5b5051919050565b8082018082111561091f57634e487b7160e01b5f52601160045260245ffd5b6020808252601e908201527f41646d696e3a2063616c6c6572206973206e6f74207468652061646d696e0000604082015260600190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220e20e5f7d1c825588d6de72465d7a515f8dcaadf6f19b112d6a899cc3f9ccdc2664736f6c63430008180033