0x60806040523480156200001157600080fd5b5060405162001f0738038062001f078339810160408190526200003491620003ae565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038816620000e05760405162461bcd60e51b815260206004820152602660248201527f4572726f723a2043616e27742073657420746f6b656e20746f207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6001600160a01b038916620001475760405162461bcd60e51b815260206004820152602660248201527f4572726f723a2043616e27742073657420706179656520746f207a65726f206160448201526564647265737360d01b6064820152608401620000d7565b42821015620001b15760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e50726573616c653a206f70656e696e672074696d652063616e277460448201526e081899481a5b881d1a19481c185cdd608a1b6064820152608401620000d7565b818111620002285760405162461bcd60e51b815260206004820152603760248201527f546f6b656e50726573616c653a20636c6f73696e672074696d652063616e277460448201527f206265206265666f7265206f70656e696e672074696d650000000000000000006064820152608401620000d7565b600654600160b01b900460ff1615620002975760405162461bcd60e51b815260206004820152602a60248201527f4572726f723a2043616e277420726563726561746520612063616e63656c6c65604482015269642070726573616c652160b01b6064820152608401620000d7565b600380546001600160a01b03808b166001600160a01b0319928316811790935560048054909216331782556006805460078c9055600b8b9055600c8a9055600d899055600e889055600f87905560108690556001600160a81b031916918d1691909117600160a01b1790556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa1580156200033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000361919062000431565b6200036e90600a62000572565b6200038290670de0b6b3a764000062000583565b600a5550620005a5975050505050505050565b6001600160a01b0381168114620003ab57600080fd5b50565b60008060008060008060008060006101208a8c031215620003ce57600080fd5b8951620003db8162000395565b60208b0151909950620003ee8162000395565b8098505060408a0151965060608a0151955060808a0151945060a08a0151935060c08a0151925060e08a015191506101008a015190509295985092959850929598565b6000602082840312156200044457600080fd5b815160ff811681146200045657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004b45781600019048211156200049857620004986200045d565b80851615620004a657918102915b93841c939080029062000478565b509250929050565b600082620004cd575060016200056c565b81620004dc575060006200056c565b8160018114620004f55760028114620005005762000520565b60019150506200056c565b60ff8411156200051457620005146200045d565b50506001821b6200056c565b5060208310610133831016604e8410600b841016171562000545575081810a6200056c565b62000551838362000473565b80600019048211156200056857620005686200045d565b0290505b92915050565b60006200045660ff841683620004bc565b6000816000190483118215151615620005a057620005a06200045d565b500290565b61195280620005b56000396000f3fe60806040526004361061023b5760003560e01c80638119c0651161012e578063c113d7bd116100ab578063eefd3d9a1161006f578063eefd3d9a1461063b578063f2fde38b14610650578063f53bc83514610670578063fb86a40414610690578063fc0c546a146106a657600080fd5b8063c113d7bd14610592578063c5c4744c146105b3578063c884ef83146105c9578063dc1bc51d146105f6578063df18e0471461060e57600080fd5b80639a82a09a116100f25780639a82a09a14610506578063ae90b21314610527578063b169a98c14610547578063b5545a3c1461055d578063b8b3285e1461057257600080fd5b80638119c06514610494578063860779e71461049c5780638da5cb5b146104bc578063906a26e0146104da5780639106d7ba146104f057600080fd5b8063688d3922116101bc5780637107d7a6116101805780637107d7a614610419578063715018a61461042f57806378e97925146104445780637d81d14c1461045a57806380d32f851461047a57600080fd5b8063688d392214610386578063698518e5146103ac5780636c9789b0146103c25780636dc7a627146103e257806370db69d61461040357600080fd5b8063467e53b111610203578063467e53b11461030657806349f1026e1461031b5780634e71d92d1461033157806353f856ee14610346578063570ca7351461036657600080fd5b806302d05d3f1461024057806308f93bd81461027d5780631e6a41ea1461029f5780633197cbb6146102da5780633b56f4c7146102f0575b600080fd5b34801561024c57600080fd5b50600554610260906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561028957600080fd5b5061029d610298366004611670565b6106c6565b005b3480156102ab57600080fd5b506102cc6102ba3660046116a5565b60136020526000908152604090205481565b604051908152602001610274565b3480156102e657600080fd5b506102cc60105481565b3480156102fc57600080fd5b506102cc600a5481565b34801561031257600080fd5b5061029d61071f565b34801561032757600080fd5b506102cc60115481565b34801561033d57600080fd5b5061029d610873565b34801561035257600080fd5b5061029d6103613660046116c7565b610b5b565b34801561037257600080fd5b50600654610260906001600160a01b031681565b34801561039257600080fd5b50601254600e5411155b6040519015158152602001610274565b3480156103b857600080fd5b506102cc60075481565b3480156103ce57600080fd5b5061029d6103dd366004611702565b610c10565b3480156103ee57600080fd5b5060065461039c90600160a81b900460ff1681565b34801561040f57600080fd5b506102cc600c5481565b34801561042557600080fd5b506102cc600b5481565b34801561043b57600080fd5b5061029d610ce0565b34801561045057600080fd5b506102cc600f5481565b34801561046657600080fd5b5061029d610475366004611670565b610d54565b34801561048657600080fd5b50601254600d54111561039c565b61029d610e10565b3480156104a857600080fd5b5061029d6104b7366004611670565b6111a6565b3480156104c857600080fd5b506000546001600160a01b0316610260565b3480156104e657600080fd5b506102cc600d5481565b3480156104fc57600080fd5b506102cc60095481565b34801561051257600080fd5b5060065461039c90600160b01b900460ff1681565b34801561053357600080fd5b50600454610260906001600160a01b031681565b34801561055357600080fd5b506102cc60085481565b34801561056957600080fd5b5061029d61120b565b34801561057e57600080fd5b5061029d61058d36600461171f565b611316565b34801561059e57600080fd5b5060065461039c90600160a01b900460ff1681565b3480156105bf57600080fd5b506102cc60125481565b3480156105d557600080fd5b506102cc6105e43660046116a5565b60156020526000908152604090205481565b34801561060257600080fd5b50600f5442101561039c565b34801561061a57600080fd5b506102cc6106293660046116a5565b60146020526000908152604090205481565b34801561064757600080fd5b5061029d6113c6565b34801561065c57600080fd5b5061029d61066b3660046116a5565b611408565b34801561067c57600080fd5b5061029d61068b366004611670565b6114f2565b34801561069c57600080fd5b506102cc600e5481565b3480156106b257600080fd5b50600354610260906001600160a01b031681565b6000546001600160a01b031633146106f95760405162461bcd60e51b81526004016106f090611741565b60405180910390fd5b42600f541161071a5760405162461bcd60e51b81526004016106f090611776565b600755565b6006546001600160a01b031633148061074257506000546001600160a01b031633145b61075e5760405162461bcd60e51b81526004016106f0906117cc565b600d54601254106107d75760405162461bcd60e51b815260206004820152603f60248201527f546f6b656e50726573616c653a20536f667443617020686173206265656e207260448201527f6561636865642c2063616e27742062652063616e63656c6c6564206e6f77210060648201526084016106f0565b600654600160b01b900460ff161561083b5760405162461bcd60e51b815260206004820152602160248201527f4572726f723a2050726573616c6520616c72656164792063616e63656c6c65646044820152602160f81b60648201526084016106f0565b6006805460ff60b01b1916600160b01b17905560006007819055600e819055600d819055600b819055600c819055600f819055601055565b600654600160a81b900460ff1615156001146108e25760405162461bcd60e51b815260206004820152602860248201527f4572726f723a2050726573616c65206861736e2774206265656e2066696e616c6044820152671a5e9959081e595d60c21b60648201526084016106f0565b600654600160b01b900460ff16156109585760405162461bcd60e51b815260206004820152603360248201527f4572726f723a2043616e277420636c61696d20746f6b656e732066726f6d20616044820152722063616e63656c6c65642070726573616c652160681b60648201526084016106f0565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156109a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c5919061181e565b336000908152601460205260409020549091503360009081526015602052604090205482906109f4908361184d565b1115610a125760405162461bcd60e51b81526004016106f090611864565b33600090815260156020526040812054610a2c908361184d565b11610a795760405162461bcd60e51b815260206004820152601e60248201527f4572726f723a204e6f20746f6b656e73206c65667420746f20636c61696d000060448201526064016106f0565b33600090815260156020526040812054610a93908361184d565b3360008181526015602052604090819020859055600354905163a9059cbb60e01b81526004810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2091906118a6565b5060405181815233907f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49060200160405180910390a2505050565b6006546001600160a01b0316331480610b7e57506000546001600160a01b031633145b610b9a5760405162461bcd60e51b81526004016106f0906117cc565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b91906118a6565b505050565b6006546001600160a01b0316331480610c3357506000546001600160a01b031633145b610c4f5760405162461bcd60e51b81526004016106f0906117cc565b601254600d541115610cb95760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a2043616e27742066696e616c697a65206265666f726520536f6660448201526c7420436170206973206d65742160981b60648201526084016106f0565b6006805461ffff60a01b1916600160a81b9215159290920260ff60a01b1916919091179055565b6000546001600160a01b03163314610d0a5760405162461bcd60e51b81526004016106f090611741565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6006546001600160a01b0316331480610d7757506000546001600160a01b031633145b610d935760405162461bcd60e51b81526004016106f0906117cc565b600f54811015610e0b5760405162461bcd60e51b815260206004820152603760248201527f4572726f723a20456e642074696d652068617320746f2062726520677265617460448201527f6572207468616e207468652073746172742074696d652100000000000000000060648201526084016106f0565b601055565b42600f541115610e6c5760405162461bcd60e51b815260206004820152602160248201527f4572726f723a2050726573616c6520686173206e6f7420626567756e207965746044820152602160f81b60648201526084016106f0565b600654600160a01b900460ff161515600114610ec25760405162461bcd60e51b81526020600482015260156024820152744572726f723a20537761702064697361626c65642160581b60448201526064016106f0565b600c5433600090815260136020526040902054610ee09034906118c3565b1115610f545760405162461bcd60e51b815260206004820152603860248201527f4572726f723a2052656163686564204d6178204275792c2063616e277420627560448201527f79206d6f72652066726f6d20746869732077616c6c657421000000000000000060648201526084016106f0565b600e5460125410610fa75760405162461bcd60e51b815260206004820152601760248201527f416c6572743a204861726443617020726561636865642100000000000000000060448201526064016106f0565b600654600160b01b900460ff161561101a5760405162461bcd60e51b815260206004820152603060248201527f4572726f723a2043616e277420706172746963697061746520696e206120636160448201526f6e63656c6c65642070726573616c652160801b60648201526084016106f0565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611063573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611087919061181e565b905060006ec097ce7bc90715b34b9f1000000000600a54600754346110ac91906118db565b6110b691906118db565b6110c091906118fa565b905081816009546110d191906118c3565b11156110ef5760405162461bcd60e51b81526004016106f090611864565b806009600082825461110191906118c3565b92505081905550346012600082825461111a91906118c3565b9091555050336000908152601360205260408120805434929061113e9084906118c3565b909155505033600090815260146020526040812080548392906111629084906118c3565b9091555050604080513481526020810183905233917f77f92a1b6a1a11de8ca49515ad4c1fad45632dd3442167d74b90b304a3c7a758910160405180910390a25050565b6006546001600160a01b03163314806111c957506000546001600160a01b031633145b6111e55760405162461bcd60e51b81526004016106f0906117cc565b42600f54116112065760405162461bcd60e51b81526004016106f090611776565b600b55565b600654600160b01b900460ff166112995760405162461bcd60e51b815260206004820152604660248201527f546f6b656e50726573616c653a206e6f742063616e63656c6c65642c2074727960448201527f2063616c6c696e672063616e63656c206265666f726520636c61696d696e67206064820152651c99599d5b9960d21b608482015260a4016106f0565b3360009081526013602052604090205480156112de57604051339082156108fc029083906000818181858888f193505050501580156112dc573d6000803e3d6000fd5b505b60405181815233907fe6f5a96495102b9989cc112a879575c70d02b6a2c752b8ffea831abd4378b7bf9060200160405180910390a250565b6006546001600160a01b031633148061133957506000546001600160a01b031633145b6113555760405162461bcd60e51b81526004016106f0906117cc565b42600f54116113bb5760405162461bcd60e51b815260206004820152602c60248201527f4572726f723a2043616e2774206d6f6469667920616e20616c7265616479206c60448201526b6976652070726573616c652160a01b60648201526084016106f0565b600f91909155601055565b6000546001600160a01b031633146113f05760405162461bcd60e51b81526004016106f090611741565b600454611406906001600160a01b031647611557565b565b6000546001600160a01b031633146114325760405162461bcd60e51b81526004016106f090611741565b6001600160a01b0381166114975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633148061151557506000546001600160a01b031633145b6115315760405162461bcd60e51b81526004016106f0906117cc565b42600f54116115525760405162461bcd60e51b81526004016106f090611776565b600c55565b804710156115a75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106f0565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146115f4576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b606091505b5050905080610c0b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106f0565b60006020828403121561168257600080fd5b5035919050565b80356001600160a01b03811681146116a057600080fd5b919050565b6000602082840312156116b757600080fd5b6116c082611689565b9392505050565b600080604083850312156116da57600080fd5b6116e383611689565b946020939093013593505050565b80151581146116ff57600080fd5b50565b60006020828403121561171457600080fd5b81356116c0816116f1565b6000806040838503121561173257600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526036908201527f4572726f723a2043616e2774206d6f64696679207377617020726174652061666040820152757465722070726573616c652068617320626567756e2160501b606082015260800190565b60208082526032908201527f546f6b656e50726573616c653a206f6e6c792061636365737369626c652062796040820152711037b832b930ba37b91037b91037bbb732b960711b606082015260800190565b60006020828403121561183057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561185f5761185f611837565b500390565b60208082526022908201527f4572726f723a204e6f7420656e6f75676820746f6b656e732072656d61696e696040820152616e6760f01b606082015260800190565b6000602082840312156118b857600080fd5b81516116c0816116f1565b600082198211156118d6576118d6611837565b500190565b60008160001904831182151516156118f5576118f5611837565b500290565b60008261191757634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212201daf7c9b5a722fbf2fe7b8c963e8a2cb33d7942767d4713ac0d6addf3b3425fe64736f6c634300080b00330000000000000000000000002f0121c035a863a5de73f9db72ec7c4fbb46881b000000000000000000000000c23c49ed06a154ea1c1203b8b92d9758f4fe50a7000000000000000000000000000000000000000000000000000000002cb41780000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000006f05b59d3b20000000000000000000000000000000000000000000000000001a055690d9db80000000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000000000000006218f1f700000000000000000000000000000000000000000000000000000000621cff90