0x6080604052620000126009600a62000491565b620000239064174876e800620004a9565b600855620000346009600a62000491565b62000044906377359400620004a9565b6009556009600a62000057919062000491565b62000067906377359400620004a9565b600a553480156200007757600080fd5b50604051620017d5380380620017d58339810160408190526200009a91620004dc565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b0319166001600160a01b03831617905560085460036000620001053390565b6001600160a01b0316815260208082019290925260409081016000908120939093556002600c819055600d819055600e819055600f55805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af9190620004dc565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002239190620004dc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002979190620004dc565b600180546001600160a01b038086166001600160a01b031992831617835560028054828616931692909217909155336000908152600560209081526040808320805460ff1990811687179091553084528184208054821687179055600b805486168552828520805490921690961790559354909216815260039091522060001990559050620003233390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516200036b91815260200190565b60405180910390a3505050620004fc565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003d3578160001904821115620003b757620003b76200037c565b80851615620003c557918102915b93841c939080029062000397565b509250929050565b600082620003ec575060016200048b565b81620003fb575060006200048b565b81600181146200041457600281146200041f576200043f565b60019150506200048b565b60ff8411156200043357620004336200037c565b50506001821b6200048b565b5060208310610133831016604e8410600b841016171562000464575081810a6200048b565b62000470838362000392565b80600019048211156200048757620004876200037c565b0290505b92915050565b6000620004a260ff841683620003db565b9392505050565b80820281158282048414176200048b576200048b6200037c565b6001600160a01b0381168114620004d957600080fd5b50565b600060208284031215620004ef57600080fd5b8151620004a281620004c3565b6112c9806200050c6000396000f3fe60806040526004361061016a5760003560e01c80635342acb4116100d15780638da5cb5b1161008a578063a9059cbb11610064578063a9059cbb14610481578063ad63043e146104a1578063dd62ed3e146104da578063ea2f0b371461052057600080fd5b80638da5cb5b1461041557806395d89b4114610433578063a457c2d71461046157600080fd5b80635342acb4146103455780636c0a24eb1461037e57806370a0823114610394578063715018a6146103ca5780637d1db4a5146103df57806385026552146103f557600080fd5b80632b14ca56116101235780632b14ca561461027e578063313ce567146102ae57806339509351146102ca578063437823ec146102ea578063470624021461030a57806349bd5a5e1461032557600080fd5b806306fdde0314610176578063095ea7b3146101c05780631694505e146101f057806318160ddd1461022857806323b872dd1461024757806325348b051461026757600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600f81526e5473756b756d6f67616d6920496e7560881b60208201525b6040516101b79190610fe7565b60405180910390f35b3480156101cc57600080fd5b506101e06101db366004611051565b610540565b60405190151581526020016101b7565b3480156101fc57600080fd5b50600154610210906001600160a01b031681565b6040516001600160a01b0390911681526020016101b7565b34801561023457600080fd5b506008545b6040519081526020016101b7565b34801561025357600080fd5b506101e061026236600461107b565b610557565b34801561027357600080fd5b5061027c6105a9565b005b34801561028a57600080fd5b50600e54600f54610299919082565b604080519283526020830191909152016101b7565b3480156102ba57600080fd5b50604051600981526020016101b7565b3480156102d657600080fd5b506101e06102e5366004611051565b61060d565b3480156102f657600080fd5b5061027c6103053660046110b7565b610644565b34801561031657600080fd5b50600c54600d54610299919082565b34801561033157600080fd5b50600254610210906001600160a01b031681565b34801561035157600080fd5b506101e06103603660046110b7565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561038a57600080fd5b50610239600a5481565b3480156103a057600080fd5b506102396103af3660046110b7565b6001600160a01b031660009081526003602052604090205490565b3480156103d657600080fd5b5061027c61069b565b3480156103eb57600080fd5b5061023960095481565b34801561040157600080fd5b5061027c6104103660046110d2565b61070f565b34801561042157600080fd5b506000546001600160a01b0316610210565b34801561043f57600080fd5b506040805180820190915260058152645453554b4960d81b60208201526101aa565b34801561046d57600080fd5b506101e061047c366004611051565b61081f565b34801561048d57600080fd5b506101e061049c366004611051565b610856565b3480156104ad57600080fd5b506101e06104bc3660046110b7565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104e657600080fd5b506102396104f53660046110f4565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561052c57600080fd5b5061027c61053b3660046110b7565b610863565b600061054d3384846108ae565b5060015b92915050565b60006105648484846109d2565b6001600160a01b03841660009081526004602090815260408083203380855292529091205461059f91869161059a90869061113d565b6108ae565b5060019392505050565b60005b60075481101561060a576000600782815481106105cb576105cb611150565b60009182526020808320909101546001600160a01b031682526006905260409020805460ff19166001179055508061060281611166565b9150506105ac565b50565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161054d91859061059a90869061117f565b6000546001600160a01b031633146106775760405162461bcd60e51b815260040161066e90611192565b60405180910390fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146106c55760405162461bcd60e51b815260040161066e90611192565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107395760405162461bcd60e51b815260040161066e90611192565b600182101561078a5760405162461bcd60e51b815260206004820152601a60248201527f4d617854782061746c65617374203125206f7220486967686572000000000000604482015260640161066e565b6107aa60646107a484600854610de090919063ffffffff16565b90610e69565b60095560018110156107fe5760405162461bcd60e51b815260206004820152601e60248201527f4d617857616c6c65742061746c65617374203125206f72204869676865720000604482015260640161066e565b61081860646107a483600854610de090919063ffffffff16565b600a555050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161054d91859061059a90869061113d565b600061054d3384846109d2565b6000546001600160a01b0316331461088d5760405162461bcd60e51b815260040161066e90611192565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6001600160a01b0383166109105760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161066e565b6001600160a01b0382166109715760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161066e565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a365760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161066e565b6001600160a01b03831660009081526006602052604090205460ff1615610a5c57600080fd5b60008111610abe5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161066e565b6001600160a01b038216610b205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161066e565b6001600160a01b03831660009081526003602052604081208054839290610b4890849061113d565b90915550506001600160a01b03831660009081526005602052604081205482919060ff16158015610b9257506001600160a01b03841660009081526005602052604090205460ff16155b15610b9b575060015b8015610d5d576002546001600160a01b03858116911614610c7b57600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b038616179055600954831115610c235760405162461bcd60e51b815260040161066e906111c7565b600a5483610c46866001600160a01b031660009081526003602052604090205490565b610c50919061117f565b1115610c6e5760405162461bcd60e51b815260040161066e9061120e565b610c788386610eab565b91505b6002546001600160a01b03868116911614610cbf57600954831115610cb25760405162461bcd60e51b815260040161066e906111c7565b610cbc8386610f82565b91505b6002546001600160a01b03858116911614801590610ceb57506002546001600160a01b03868116911614155b15610d5d57600954831115610d125760405162461bcd60e51b815260040161066e906111c7565b600a5483610d35866001600160a01b031660009081526003602052604090205490565b610d3f919061117f565b1115610d5d5760405162461bcd60e51b815260040161066e9061120e565b6001600160a01b03841660009081526003602052604081208054849290610d8590849061117f565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dd191815260200190565b60405180910390a35050505050565b600082600003610df257506000610551565b6000610dfe838561125a565b905082610e0b8583611271565b14610e625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161066e565b9392505050565b6000610e6283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610fb9565b6000806064600c6000015485610ec1919061125a565b610ecb9190611271565b905060006064600c6001015486610ee2919061125a565b610eec9190611271565b9050610ef8818361117f565b3060009081526003602052604081208054909190610f1790849061117f565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610f53858561117f565b60405190815260200160405180910390a380610f6f838761113d565b610f79919061113d565b95945050505050565b6000806064600e6000015485610f98919061125a565b610fa29190611271565b905060006064600e6001015486610ee2919061125a565b60008183610fda5760405162461bcd60e51b815260040161066e9190610fe7565b506000610f798486611271565b600060208083528351808285015260005b8181101561101457858101830151858201604001528201610ff8565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461104c57600080fd5b919050565b6000806040838503121561106457600080fd5b61106d83611035565b946020939093013593505050565b60008060006060848603121561109057600080fd5b61109984611035565b92506110a760208501611035565b9150604084013590509250925092565b6000602082840312156110c957600080fd5b610e6282611035565b600080604083850312156110e557600080fd5b50508035926020909101359150565b6000806040838503121561110757600080fd5b61111083611035565b915061111e60208401611035565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561055157610551611127565b634e487b7160e01b600052603260045260246000fd5b60006001820161117857611178611127565b5060010190565b8082018082111561055157610551611127565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546040820152661e105b5bdd5b9d60ca1b606082015260800190565b6020808252602c908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526b30b63632ba20b6b7bab73a1760a11b606082015260800190565b808202811582820484141761055157610551611127565b60008261128e57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220451816ffbcada467a911556134ab36f01c7b02c16f32f04036ad286839e1f17a64736f6c63430008110033000000000000000000000000d0c61b26db965b5c466e69897e43fcf235c9b2ac