60806040526006805461ffff1916905534801561001a575f5ffd5b506040516119b83803806119b88339810160408190526100399161023d565b6040518060400160405280600e81526020016d47616d6553746f70546f6b656e7360901b8152506040518060400160405280600381526020016211d4d560ea1b815250816003908161008b91906102ec565b50600461009882826102ec565b5050600160055550426008556007819055600980546001600160a01b031916339081179091556100d4906b0cecb8f27f4200f3a00000006100da565b506103cb565b6001600160a01b0382166101085760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6101135f8383610117565b5050565b6001600160a01b038316610141578060025f82825461013691906103a6565b909155506101b19050565b6001600160a01b0383165f90815260208190526040902054818110156101935760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100ff565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166101cd576002805482900390556101eb565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161023091815260200190565b60405180910390a3505050565b5f6020828403121561024d575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061027c57607f821691505b60208210810361029a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102e757805f5260205f20601f840160051c810160208510156102c55750805b601f840160051c820191505b818110156102e4575f81556001016102d1565b50505b505050565b81516001600160401b0381111561030557610305610254565b610319816103138454610268565b846102a0565b6020601f82116001811461034b575f83156103345750848201515b5f19600385901b1c1916600184901b1784556102e4565b5f84815260208120601f198516915b8281101561037a578785015182556020948501946001909201910161035a565b508482101561039757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103c557634e487b7160e01b5f52601160045260245ffd5b92915050565b6115e0806103d85f395ff3fe6080604052600436106101d0575f3560e01c806370a08231116100fd578063a9059cbb11610092578063c4038dd411610062578063c4038dd41461050f578063c5bc7ad91461052e578063d13d77081461054d578063dd62ed3e1461056c575f5ffd5b8063a9059cbb146104b2578063b4a99a4e146104d1578063b9c3a8181461042e578063bdf350f1146104f0575f5ffd5b806393e52fba116100cd57806393e52fba1461044d57806395d89b411461046c57806398a231ad14610480578063a4a9671414610493575f5ffd5b806370a08231146103c2578063830aec6d146103f65780638b9a2fe3146104155780638e0c09b21461042e575f5ffd5b80632cb8070e1161017357806346e70bf21161014357806346e70bf21461033a5780634fd609fc14610359578063630f2de7146103775780636ea795831461038b575f5ffd5b80632cb8070e146102cd578063313ce567146102e15780633a2f5784146102fc578063462b96811461031b575f5ffd5b806311971ff0116101ae57806311971ff01461024e5780631525ff7d1461027b57806318160ddd1461029a57806323b872dd146102ae575f5ffd5b80630593d244146101d457806306fdde03146101f5578063095ea7b31461021f575b5f5ffd5b3480156101df575f5ffd5b506101f36101ee3660046113d6565b6105b0565b005b348015610200575f5ffd5b50610209610672565b60405161021691906113f6565b60405180910390f35b34801561022a575f5ffd5b5061023e61023936600461142b565b610702565b6040519015158152602001610216565b348015610259575f5ffd5b5061026d6b09b18ab5df7180b6b800000081565b604051908152602001610216565b348015610286575f5ffd5b506101f36102953660046113d6565b61071b565b3480156102a5575f5ffd5b5060025461026d565b3480156102b9575f5ffd5b5061023e6102c8366004611453565b6107f8565b3480156102d8575f5ffd5b506101f361081b565b3480156102ec575f5ffd5b5060405160128152602001610216565b348015610307575f5ffd5b506101f36103163660046113d6565b610923565b348015610326575f5ffd5b506101f36103353660046113d6565b6109ff565b348015610345575f5ffd5b5061026d6b3d646e7fdc7984853800000081565b348015610364575f5ffd5b5060065461023e90610100900460ff1681565b348015610382575f5ffd5b506101f3610ae1565b348015610396575f5ffd5b50600a546103aa906001600160a01b031681565b6040516001600160a01b039091168152602001610216565b3480156103cd575f5ffd5b5061026d6103dc3660046113d6565b6001600160a01b03165f9081526020819052604090205490565b348015610401575f5ffd5b5061026d6b204fce5e3e2502611000000081565b348015610420575f5ffd5b5060065461023e9060ff1681565b348015610439575f5ffd5b5061026d6b0cecb8f27f4200f3a000000081565b348015610458575f5ffd5b506101f361046736600461148d565b610be2565b348015610477575f5ffd5b50610209610d0e565b6101f361048e36600461148d565b610d1d565b34801561049e575f5ffd5b50600c546103aa906001600160a01b031681565b3480156104bd575f5ffd5b5061023e6104cc36600461142b565b610e3e565b3480156104dc575f5ffd5b506009546103aa906001600160a01b031681565b3480156104fb575f5ffd5b506101f361050a36600461148d565b610e4b565b34801561051a575f5ffd5b506101f361052936600461148d565b610fca565b348015610539575f5ffd5b50600d546103aa906001600160a01b031681565b348015610558575f5ffd5b50600b546103aa906001600160a01b031681565b348015610577575f5ffd5b5061026d6105863660046114a4565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6009546001600160a01b031633146105e35760405162461bcd60e51b81526004016105da906114d5565b60405180910390fd5b6001600160a01b0381166106505760405162461bcd60e51b815260206004820152602e60248201527f506c6561736520656e7465722074686520636f72726563742073616c6520636f60448201526d6e7472616374206164647265737360901b60648201526084016105da565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60606003805461068190611505565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad90611505565b80156106f85780601f106106cf576101008083540402835291602001916106f8565b820191905f5260205f20905b8154815290600101906020018083116106db57829003601f168201915b5050505050905090565b5f3361070f818585611043565b60019150505b92915050565b6009546001600160a01b031633146107455760405162461bcd60e51b81526004016105da906114d5565b6001600160a01b0381166107af5760405162461bcd60e51b815260206004820152602b60248201527f506c6561736520656e7465722074686520636f7272656374207465616d57616c60448201526a6c6574206164647265737360a81b60648201526084016105da565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fb590f26ac7ad9082f5f57531907f48fc0c5478d4512d6a1279f51b527b53b0cf905f90a250565b5f33610805858285611055565b6108108585856110d0565b506001949350505050565b61082361112d565b6009546001600160a01b0316331461084d5760405162461bcd60e51b81526004016105da906114d5565b60075442116108985760405162461bcd60e51b8152602060048201526017602482015276141c9954d85b19481a5cc81b9bdd081bdd995c881e595d604a1b60448201526064016105da565b60065460ff16156108f55760405162461bcd60e51b815260206004820152602160248201527f5075626c69632053616c6520546f6b656e7320616c7265616479206d696e74656044820152601960fa1b60648201526084016105da565b600d54610917906001600160a01b03166b204fce5e3e25026110000000611157565b6109216001600555565b565b6009546001600160a01b0316331461094d5760405162461bcd60e51b81526004016105da906114d5565b6001600160a01b0381166109b65760405162461bcd60e51b815260206004820152602a60248201527f506c6561736520656e7465722074686520636f72726563742065636f57616c6c6044820152696574206164647265737360b01b60648201526084016105da565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517fb590f26ac7ad9082f5f57531907f48fc0c5478d4512d6a1279f51b527b53b0cf905f90a250565b6009546001600160a01b03163314610a295760405162461bcd60e51b81526004016105da906114d5565b6001600160a01b038116610a985760405162461bcd60e51b815260206004820152603060248201527f506c6561736520656e7465722074686520636f7272656374207374726174656760448201526f696357616c6c6574206164647265737360801b60648201526084016105da565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517fb590f26ac7ad9082f5f57531907f48fc0c5478d4512d6a1279f51b527b53b0cf905f90a250565b610ae961112d565b6009546001600160a01b03163314610b135760405162461bcd60e51b81526004016105da906114d5565b6007544211610b5e5760405162461bcd60e51b8152602060048201526017602482015276141c9954d85b19481a5cc81b9bdd081bdd995c881e595d604a1b60448201526064016105da565b600654610100900460ff1615610bc05760405162461bcd60e51b815260206004820152602160248201527f45636f205265736572766520546f6b656e7320616c7265616479206d696e74656044820152601960fa1b60648201526084016105da565b600c54610917906001600160a01b03166b3d646e7fdc79848538000000611157565b600c546001600160a01b0316331480610c0557506009546001600160a01b031633145b610c775760405162461bcd60e51b815260206004820152603960248201527f43616e206f6e6c792062652063616c6c6564206279207468652065636f20726560448201527f73657276652077616c6c6574206f7220746865206f776e65720000000000000060648201526084016105da565b6007544211610cbd5760405162461bcd60e51b815260206004820152601260248201527143616e6e6f74206275726e20746f6b656e7360701b60448201526064016105da565b600c546001600160a01b03165f908152602081905260409020548110610cf55760405162461bcd60e51b81526004016105da9061153d565b600c54610d0b906001600160a01b03168261118f565b50565b60606004805461068190611505565b610d2561112d565b5f8111610d745760405162461bcd60e51b815260206004820152601a60248201527f506c65617365207061792074686520656e74657279206665657300000000000060448201526064016105da565b600c546001600160a01b0316610dcc5760405162461bcd60e51b815260206004820152601960248201527f57616c6c65742061646472657373206973206e6f74207365740000000000000060448201526064016105da565b600c545f90610de4906001600160a01b031683610e3e565b905080610e335760405162461bcd60e51b815260206004820152601e60248201527f54786e206661696c65642061742067616d6520656e746572792066656573000060448201526064016105da565b50610d0b6001600555565b5f3361070f8185856110d0565b610e5361112d565b600c546001600160a01b03163314610ec25760405162461bcd60e51b815260206004820152602c60248201527f43616e206f6e6c792062652063616c6c6564206279207468652065636f20726560448201526b1cd95c9d99481dd85b1b195d60a21b60648201526084016105da565b6007544211610f1f5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742050756d7020746f6b656e7320746f207075626c696320737570604482015262706c7960e81b60648201526084016105da565b600c546001600160a01b03165f908152602081905260409020548110610f575760405162461bcd60e51b81526004016105da9061153d565b600d545f90610f6f906001600160a01b031683610e3e565b905080610e335760405162461bcd60e51b815260206004820152602360248201527f54786e206661696c65642061742070756d70696e672053616c6520436f6e74726044820152621858dd60ea1b60648201526084016105da565b6009546001600160a01b03163314610ff45760405162461bcd60e51b81526004016105da906114d5565b60075442111561103e5760405162461bcd60e51b8152602060048201526015602482015274141c9954d85b1948185b1c9958591e48195b991959605a1b60448201526064016105da565b600755565b61105083838360016111c3565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146110ca57818110156110bc57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016105da565b6110ca84848484035f6111c3565b50505050565b6001600160a01b0383166110f957604051634b637e8f60e11b81525f60048201526024016105da565b6001600160a01b0382166111225760405163ec442f0560e01b81525f60048201526024016105da565b611050838383611295565b60026005540361115057604051633ee5aeb560e01b815260040160405180910390fd5b6002600555565b6001600160a01b0382166111805760405163ec442f0560e01b81525f60048201526024016105da565b61118b5f8383611295565b5050565b6001600160a01b0382166111b857604051634b637e8f60e11b81525f60048201526024016105da565b61118b825f83611295565b6001600160a01b0384166111ec5760405163e602df0560e01b81525f60048201526024016105da565b6001600160a01b03831661121557604051634a1406b160e11b81525f60048201526024016105da565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156110ca57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161128791815260200190565b60405180910390a350505050565b6001600160a01b0383166112bf578060025f8282546112b4919061158b565b9091555061132f9050565b6001600160a01b0383165f90815260208190526040902054818110156113115760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016105da565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661134b57600280548290039055611369565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113ae91815260200190565b60405180910390a3505050565b80356001600160a01b03811681146113d1575f5ffd5b919050565b5f602082840312156113e6575f5ffd5b6113ef826113bb565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561143c575f5ffd5b611445836113bb565b946020939093013593505050565b5f5f5f60608486031215611465575f5ffd5b61146e846113bb565b925061147c602085016113bb565b929592945050506040919091013590565b5f6020828403121561149d575f5ffd5b5035919050565b5f5f604083850312156114b5575f5ffd5b6114be836113bb565b91506114cc602084016113bb565b90509250929050565b6020808252601690820152752737ba103a34329031b7b73a3930b1ba1037bbb732b960511b604082015260600190565b600181811c9082168061151957607f821691505b60208210810361153757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f45636f20526573657276652077616c6c657420646f65736e277420686176652060408201526d656e6f7567682062616c616e636560901b606082015260800190565b8082018082111561071557634e487b7160e01b5f52601160045260245ffdfea26469706673582212209416f803ee9dc68e202ce1b3c52af0962127aaf814417e199da73871392032af64736f6c634300081b00330000000000000000000000000000000000000000000000000000000066e9c79c