60806040526064620000146012600a620004e4565b6200002390620f4240620004fc565b6200002f919062000516565b6200003c906002620004fc565b600455600f60065560196007556000600c55600d805460ff191690553480156200006557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200010c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000132919062000539565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb919062000539565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f919062000539565b600980546001600160a01b039283166001600160a01b031991821617909155600a8054909116730e586f03fa49240bd0941e539057f4aa2fb0d2fa17815533600090815260036020526040808220805460ff1990811660019081179092558454909516835281832080548616821790553083529120805490931617909155620002bb90601290620004e4565b620002ca90620f4240620004fc565b60026000620002e16000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120600854909216815292529020556200031c6012600a620004e4565b6200032b90620f4240620004fc565b60016000620003426000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556200036f6000546001600160a01b031690565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003a96012600a620004e4565b620003b890620f4240620004fc565b60405190815260200160405180910390a362000564565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004265781600019048211156200040a576200040a620003cf565b808516156200041857918102915b93841c9390800290620003ea565b509250929050565b6000826200043f57506001620004de565b816200044e57506000620004de565b8160018114620004675760028114620004725762000492565b6001915050620004de565b60ff841115620004865762000486620003cf565b50506001821b620004de565b5060208310610133831016604e8410600b8410161715620004b7575081810a620004de565b620004c38383620003e5565b8060001904821115620004da57620004da620003cf565b0290505b92915050565b6000620004f560ff8416836200042e565b9392505050565b8082028115828204841417620004de57620004de620003cf565b6000826200053457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200054c57600080fd5b81516001600160a01b0381168114620004f557600080fd5b61108280620005746000396000f3fe60806040526004361061012e5760003560e01c806375946bad116100ab578063a9059cbb1161006f578063a9059cbb1461036b578063aa4bde281461038b578063cc1776d3146103a1578063db05e5cb146103b7578063dd62ed3e146103cc578063f2fde38b1461041257600080fd5b806375946bad146102cf5780638a8c523c146102ef5780638da5cb5b1461030457806395d89b41146103225780639e9189561461035657600080fd5b8063313ce567116100f2578063313ce5671461023057806349bd5a5e1461024c5780634f7041a51461026c57806370a0823114610282578063715018a6146102b857600080fd5b806306fdde031461013a578063095ea7b31461018557806318160ddd146101b557806323b872dd146101d85780632dc0562d146101f857600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152601081526f4368696e6573652048616d737465727360801b60208201525b60405161017c9190610cdf565b60405180910390f35b34801561019157600080fd5b506101a56101a0366004610d49565b610432565b604051901515815260200161017c565b3480156101c157600080fd5b506101ca610449565b60405190815260200161017c565b3480156101e457600080fd5b506101a56101f3366004610d73565b610469565b34801561020457600080fd5b50600a54610218906001600160a01b031681565b6040516001600160a01b03909116815260200161017c565b34801561023c57600080fd5b506040516012815260200161017c565b34801561025857600080fd5b50600954610218906001600160a01b031681565b34801561027857600080fd5b506101ca60065481565b34801561028e57600080fd5b506101ca61029d366004610daf565b6001600160a01b031660009081526001602052604090205490565b3480156102c457600080fd5b506102cd610503565b005b3480156102db57600080fd5b506102cd6102ea366004610dd1565b610580565b3480156102fb57600080fd5b506102cd6105b5565b34801561031057600080fd5b506000546001600160a01b0316610218565b34801561032e57600080fd5b5060408051808201909152600b81526a4368696e65736548616d7360a81b602082015261016f565b34801561036257600080fd5b506102cd6105f2565b34801561037757600080fd5b506101a5610386366004610d49565b61062e565b34801561039757600080fd5b506101ca60045481565b3480156103ad57600080fd5b506101ca60075481565b3480156103c357600080fd5b506102cd61063b565b3480156103d857600080fd5b506101ca6103e7366004610df3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561041e57600080fd5b506102cd61042d366004610daf565b610683565b600061043f33848461074e565b5060015b92915050565b60006104576012600a610f20565b61046490620f4240610f2f565b905090565b6000610476848484610812565b6104f984336104f4856040518060400160405280600d81526020016c6c6f7720616c6c6f77616e636560981b815250600260008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006104d33390565b6001600160a01b031681526020810191909152604001600020549190610b75565b61074e565b5060019392505050565b6000546001600160a01b031633146105365760405162461bcd60e51b815260040161052d90610f46565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105aa5760405162461bcd60e51b815260040161052d90610f46565b600691909155600755565b6000546001600160a01b031633146105df5760405162461bcd60e51b815260040161052d90610f46565b600d805460ff1916600117905543600b55565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561062b573d6000803e3d6000fd5b50565b600061043f338484610812565b6000546001600160a01b031633146106655760405162461bcd60e51b815260040161052d90610f46565b6106716012600a610f20565b61067e90620f4240610f2f565b600455565b6000546001600160a01b031633146106ad5760405162461bcd60e51b815260040161052d90610f46565b6001600160a01b0381166107035760405162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f2061646472657373000000604482015260640161052d565b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b0383161580159061076e57506001600160a01b03821615155b6107b15760405162461bcd60e51b8152602060048201526014602482015273617070726f7665207a65726f206164647265737360601b604482015260640161052d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108605760405162461bcd60e51b81526020600482015260156024820152747472616e73666572207a65726f206164647265737360581b604482015260640161052d565b6001600160a01b03831660009081526003602052604090205460ff168061089f57506001600160a01b03821660009081526003602052604090205460ff165b156108ae576000600555610a6a565b600d5460ff166108f35760405162461bcd60e51b815260206004820152601060248201526f0aec2d2e840e8d2d8d840d8c2eadcc6d60831b604482015260640161052d565b600c54600b546109039190610f7d565b431015610914576028600555610a6a565b6009546001600160a01b03908116908416036109b0576004548161094d846001600160a01b031660009081526001602052604090205490565b6109579190610f7d565b11156109a55760405162461bcd60e51b815260206004820152601760248201527f4d61782077616c6c6574203225206174206c61756e6368000000000000000000604482015260640161052d565b600654600555610a6a565b6009546001600160a01b0390811690831603610a64573060009081526001602052604090205460146109e46012600a610f20565b6109f090610fa0610f2f565b6109fa9190610f90565b81118015610a105750600d54610100900460ff16155b15610a5857610a216012600a610f20565b610a2d90610fa0610f2f565b811115610a4f57610a406012600a610f20565b610a4c90610fa0610f2f565b90505b610a5881610baf565b50600754600555610a6a565b60006005555b6000606460055483610a7c9190610f2f565b610a869190610f90565b90506000610a948284610fb2565b6001600160a01b038616600090815260016020526040902054909150610abb908490610fb2565b6001600160a01b038087166000908152600160205260408082209390935590861681522054610aeb908290610f7d565b6001600160a01b038516600090815260016020526040808220929092553081522054610b18908390610f7d565b3060009081526001602090815260409182902092909255518281526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b60008184841115610b995760405162461bcd60e51b815260040161052d9190610cdf565b506000610ba68486610fb2565b95945050505050565b600d805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610bf357610bf3610fc5565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610c3b57610c3b610fc5565b6001600160a01b039283166020918202929092010152600854610c61913091168461074e565b600854600a5460405163791ac94760e01b81526001600160a01b039283169263791ac94792610c9e92879260009288929116904290600401610fdb565b600060405180830381600087803b158015610cb857600080fd5b505af1158015610ccc573d6000803e3d6000fd5b5050600d805461ff001916905550505050565b600060208083528351808285015260005b81811015610d0c57858101830151858201604001528201610cf0565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4457600080fd5b919050565b60008060408385031215610d5c57600080fd5b610d6583610d2d565b946020939093013593505050565b600080600060608486031215610d8857600080fd5b610d9184610d2d565b9250610d9f60208501610d2d565b9150604084013590509250925092565b600060208284031215610dc157600080fd5b610dca82610d2d565b9392505050565b60008060408385031215610de457600080fd5b50508035926020909101359150565b60008060408385031215610e0657600080fd5b610e0f83610d2d565b9150610e1d60208401610d2d565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610e77578160001904821115610e5d57610e5d610e26565b80851615610e6a57918102915b93841c9390800290610e41565b509250929050565b600082610e8e57506001610443565b81610e9b57506000610443565b8160018114610eb15760028114610ebb57610ed7565b6001915050610443565b60ff841115610ecc57610ecc610e26565b50506001821b610443565b5060208310610133831016604e8410600b8410161715610efa575081810a610443565b610f048383610e3c565b8060001904821115610f1857610f18610e26565b029392505050565b6000610dca60ff841683610e7f565b808202811582820484141761044357610443610e26565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b8082018082111561044357610443610e26565b600082610fad57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561044357610443610e26565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561102b5784516001600160a01b031683529383019391830191600101611006565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e82a7ea2884396eeec7b154a3f3a7ffcf1a5cee46d72c37ea5a9d85b0fa6693364736f6c63430008120033