60806040526200001a6803c366e0911c5fa8005f19620002b3565b62000027905f19620002d3565b60025560056004556001600a819055600b819055600c55600d805461ffff60a01b1916600160a81b1790553480156200005e575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600254335f9081526005602090815260409182902092909255600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000118573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200013e9190620002f9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b09190620002f9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001fb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002219190620002f9565b600d80546001600160a01b0319166001600160a01b039283161790555f80549091168152600960209081526040808320805460ff19908116600190811790925530855282852080549091169091179055516803c366e0911c5fa80081523392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000328565b5f82620002ce57634e487b7160e01b5f52601260045260245ffd5b500690565b81810381811115620002f357634e487b7160e01b5f52601160045260245ffd5b92915050565b5f602082840312156200030a575f80fd5b81516001600160a01b038116811462000321575f80fd5b9392505050565b61102480620003365f395ff3fe6080604052600436106100e7575f3560e01c806349bd5a5e1161008757806395d89b411161005757806395d89b411461028c578063a9059cbb146102b8578063dd62ed3e146102d7578063f2fde38b1461031b575f80fd5b806349bd5a5e1461021e57806370a082311461023d578063715018a61461025c5780638da5cb5b14610270575f80fd5b806318160ddd116100c257806318160ddd1461019e57806323b872dd146101c3578063313ce567146101e2578063484cb525146101fd575f80fd5b806306fdde03146100f2578063095ea7b3146101385780631694505e14610167575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b5060408051808201909152600c81526b09acadacae6409edc408aa8960a31b60208201525b60405161012f9190610df0565b60405180910390f35b348015610143575f80fd5b50610157610152366004610e56565b61033a565b604051901515815260200161012f565b348015610172575f80fd5b50600754610186906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b3480156101a9575f80fd5b506803c366e0911c5fa8005b60405190815260200161012f565b3480156101ce575f80fd5b506101576101dd366004610e7e565b610350565b3480156101ed575f80fd5b506040516005815260200161012f565b348015610208575f80fd5b5061021c610217366004610eb7565b6103b7565b005b348015610229575f80fd5b50600d54610186906001600160a01b031681565b348015610248575f80fd5b506101b5610257366004610ed7565b6103f4565b348015610267575f80fd5b5061021c610415565b34801561027b575f80fd5b505f546001600160a01b0316610186565b348015610297575f80fd5b5060408051808201909152600481526309a8aa8960e31b6020820152610122565b3480156102c3575f80fd5b506101576102d2366004610e56565b610486565b3480156102e2575f80fd5b506101b56102f1366004610ef0565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610326575f80fd5b5061021c610335366004610ed7565b610492565b5f610346338484610579565b5060015b92915050565b5f61035c84848461069c565b6103ad84336103a885604051806060016040528060288152602001610fc7602891396001600160a01b038a165f90815260086020908152604080832033845290915290205491906108c1565b610579565b5060019392505050565b5f546001600160a01b031633146103e95760405162461bcd60e51b81526004016103e090610f21565b60405180910390fd5b600491909155600a55565b6001600160a01b0381165f9081526005602052604081205461034a906108f9565b5f546001600160a01b0316331461043e5760405162461bcd60e51b81526004016103e090610f21565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61034633848461069c565b5f546001600160a01b031633146104bb5760405162461bcd60e51b81526004016103e090610f21565b6001600160a01b0381166105205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103e0565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166105db5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103e0565b6001600160a01b03821661063c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103e0565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103e0565b6001600160a01b0382166107625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103e0565b5f81116107c35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103e0565b6001600160a01b0383165f9081526009602052604090205460019060ff168061080357506001600160a01b0383165f9081526009602052604090205460ff165b806108355750600d546001600160a01b038581169116148015906108355750600d546001600160a01b03848116911614155b1561084157505f6108af565b600d546001600160a01b03858116911614801561086c57506007546001600160a01b03848116911614155b1561087857600454600b555b600d546001600160a01b0384811691161480156108a357506007546001600160a01b03858116911614155b156108af57600a54600b555b6108bb8484848461097b565b50505050565b5f81848411156108e45760405162461bcd60e51b81526004016103e09190610df0565b505f6108f08486610f6a565b95945050505050565b5f60025482111561095f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016103e0565b5f6109686109a3565b905061097483826109c4565b9392505050565b8061098857610988610a05565b610993848484610a1c565b806108bb576108bb600c54600b55565b5f805f6109ae610b0d565b90925090506109bd82826109c4565b9250505090565b5f61097483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b4e565b600b545f03610a1057565b600b8054600c555f9055565b5f805f805f80610a2b87610b7a565b6001600160a01b038f165f90815260056020526040902054959b50939950919750955093509150610a5c9087610bcc565b6001600160a01b03808b165f9081526005602052604080822093909355908a1681522054610a8a9086610c0d565b6001600160a01b0389165f90815260056020526040902055610aab81610c6b565b610ab58483610cb1565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610afa91815260200190565b60405180910390a3505050505050505050565b6002545f9081906803c366e0911c5fa800610b2882826109c4565b821015610b45575050600254926803c366e0911c5fa80092509050565b90939092509050565b5f8183610b6e5760405162461bcd60e51b81526004016103e09190610df0565b505f6108f08486610f7d565b5f805f805f805f805f610b8f8a600b54610cd5565b9250925092505f610b9e6109a3565b90505f805f610baf8e878787610d26565b919e509c509a509598509396509194505050505091939550919395565b5f61097483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506108c1565b5f80610c198385610f9c565b9050838110156109745760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103e0565b5f610c746109a3565b90505f610c818383610d72565b305f90815260056020526040902054909150610c9d9082610c0d565b305f90815260056020526040902055505050565b600254610cbe9083610bcc565b600255600354610cce9082610c0d565b6003555050565b5f808080610cee6064610ce88888610d72565b906109c4565b90505f610d006064610ce88989610d72565b90505f610d1782610d118a86610bcc565b90610bcc565b95509193509150509250925092565b5f808080610d348886610d72565b90505f610d418887610d72565b90505f610d4e8888610d72565b90505f610d5f82610d118686610bcc565b939b939a50919850919650505050505050565b5f825f03610d8157505f61034a565b5f610d8c8385610faf565b905082610d998583610f7d565b146109745760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103e0565b5f6020808352835180828501525f5b81811015610e1b57858101830151858201604001528201610dff565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e51575f80fd5b919050565b5f8060408385031215610e67575f80fd5b610e7083610e3b565b946020939093013593505050565b5f805f60608486031215610e90575f80fd5b610e9984610e3b565b9250610ea760208501610e3b565b9150604084013590509250925092565b5f8060408385031215610ec8575f80fd5b50508035926020909101359150565b5f60208284031215610ee7575f80fd5b61097482610e3b565b5f8060408385031215610f01575f80fd5b610f0a83610e3b565b9150610f1860208401610e3b565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561034a5761034a610f56565b5f82610f9757634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561034a5761034a610f56565b808202811582820484141761034a5761034a610f5656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122057581895553accbd024449e1230175478fbd45be7f6f9ca78c061c171030287664736f6c63430008140033