60806040526004805460ff1916905534801561001a57600080fd5b50604051610c93380380610c938339818101604052602081101561003d57600080fd5b5051600080546001600160a01b0319163317905580610067576a9d2a10a37c185d7e000000610069565b805b6001819055600080546001600160a01b031681526003602052604090205550610bfc806100976000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80634a4fbeec116100ad578063a6f9dae111610071578063a6f9dae114610344578063a9059cbb1461036a578063be9a655514610396578063dd62ed3e1461039e578063fea7bcfb146103cc57610121565b80634a4fbeec146102a657806370a08231146102cc57806379cc6790146102f2578063905295e31461031e57806395d89b411461012657610121565b806323b872dd116100f457806323b872dd14610207578063313ce5671461023d5780633f683b6a1461025b57806342966c681461026357806347a64f441461028057610121565b806306fdde031461012657806307da68f5146101a3578063095ea7b3146101ad57806318160ddd146101ed575b600080fd5b61012e6103e9565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ab610408565b005b6101d9600480360360408110156101c357600080fd5b506001600160a01b03813516906020013561042e565b604080519115158252519081900360200190f35b6101f56104a5565b60408051918252519081900360200190f35b6101d96004803603606081101561021d57600080fd5b506001600160a01b038135811691602081013590911690604001356104ab565b610245610685565b6040805160ff9092168252519081900360200190f35b6101d961068a565b6101d96004803603602081101561027957600080fd5b5035610693565b6101d96004803603602081101561029657600080fd5b50356001600160a01b0316610758565b6101d9600480360360208110156102bc57600080fd5b50356001600160a01b03166107ac565b6101f5600480360360208110156102e257600080fd5b50356001600160a01b03166107ca565b6101d96004803603604081101561030857600080fd5b506001600160a01b0381351690602001356107e5565b6101d96004803603602081101561033457600080fd5b50356001600160a01b0316610906565b6101d96004803603602081101561035a57600080fd5b50356001600160a01b0316610956565b6101d96004803603604081101561038057600080fd5b506001600160a01b038135169060200135610993565b6101ab610acf565b6101f5600480360360408110156103b457600080fd5b506001600160a01b0381358116916020013516610af2565b6101d9600480360360208110156103e257600080fd5b5035610b1d565b6040518060400160405280600381526020016246504360e81b81525081565b6000546001600160a01b0316331461041f57600080fd5b6004805460ff19166001179055565b60045460009060ff161561043e57fe5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60015490565b60045460009060ff16156104bb57fe5b6001600160a01b0383166104ce57600080fd5b6001600160a01b03841660009081526002602052604090205460ff16151560011480159061051a57506001600160a01b03831660009081526002602052604090205460ff161515600114155b61052357600080fd5b6001600160a01b03841660009081526003602052604090205482111561054857600080fd5b6001600160a01b038416600090815260056020908152604080832033845290915290205482111561057857600080fd5b6001600160a01b0384166000908152600360205260409020546105a1908363ffffffff610ba216565b6001600160a01b0380861660009081526003602052604080822093909355908516815220546105d6908363ffffffff610bb416565b6001600160a01b03808516600090815260036020908152604080832094909455918716815260058252828120338252909152205461061a908363ffffffff610ba216565b6001600160a01b03808616600081815260056020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b601281565b60045460ff1690565b600080546001600160a01b031633146106ab57600080fd5b60045460ff16156106b857fe5b336000908152600360205260409020548211156106d457600080fd5b336000908152600360205260409020546106f4908363ffffffff610ba216565b33600090815260036020526040902055600154610717908363ffffffff610ba216565b60015560408051838152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2506001919050565b600080546001600160a01b0316331461077057600080fd5b6001600160a01b03821661078357600080fd5b506001600160a01b03166000908152600260205260409020805460ff1916600190811790915590565b6001600160a01b031660009081526002602052604090205460ff1690565b6001600160a01b031660009081526003602052604090205490565b600080546001600160a01b031633146107fd57600080fd5b6001600160a01b03831660009081526003602052604090205482111561082257600080fd5b6001600160a01b0383166000908152600560209081526040808320338452909152902054821161087b576001600160a01b03831660009081526005602090815260408083203384529091529020805483900390556108a0565b6001600160a01b03831660009081526005602090815260408083203384529091528120555b6001600160a01b03831660008181526003602090815260409182902080548690039055600180548690039055815185815291517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59281900390910190a250600192915050565b600080546001600160a01b0316331461091e57600080fd5b6001600160a01b03821661093157600080fd5b506001600160a01b03166000908152600260205260409020805460ff19169055600190565b600080546001600160a01b0316331461096e57600080fd5b50600080546001600160a01b0383166001600160a01b03199091161790556001919050565b60045460009060ff16156109a357fe5b6001600160a01b0383166109b657600080fd5b336000908152600360205260409020548211156109d257600080fd5b3360009081526002602052604090205460ff161515600114156109f457600080fd5b6001600160a01b03831660009081526002602052604090205460ff16151560011415610a1f57600080fd5b33600090815260036020526040902054610a3f908363ffffffff610ba216565b33600090815260036020526040808220929092556001600160a01b03851681522054610a71908363ffffffff610bb416565b6001600160a01b0384166000818152600360209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b6000546001600160a01b03163314610ae657600080fd5b6004805460ff19169055565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b600080546001600160a01b03163314610b3557600080fd5b60045460ff1615610b4257fe5b600154610b55908363ffffffff610bb416565b600155600080546001600160a01b0316815260036020526040902054610b81908363ffffffff610bb416565b600080546001600160a01b0316815260036020526040902055506001919050565b600082821115610bae57fe5b50900390565b81810182811015610bc157fe5b9291505056fea265627a7a723058208019673fbe4bdcb2fe3efeb29e1bbeaaceab99a5a260601b5fda70c27c5391f064736f6c634300050a00320000000000000000000000000000000000000000000000000000000000000000