0x60806040526005805463ffffffff60a01b1916905560c8620000246012600a620004ad565b6200003390620f4240620004c4565b6200003f9190620004de565b6006556005600881905560095560646200005c6012600a620004ad565b6200006b90620f4240620004c4565b62000078906002620004c4565b620000849190620004de565b600a5534801562000093575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556040805163c45a015560e01b81529051919263c45a01559282820192602092908290030181865afa15801562000134573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015a9190620004fe565b6001600160a01b031663c9c653963060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e09190620004fe565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200022b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002519190620004fe565b600580546001600160a01b0319166001600160a01b0392909216919091179055620002793390565b600780546001600160a01b0319166001600160a01b0392909216919091179055620002a76012600a620004ad565b620002b690620f4240620004c4565b335f81815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002f86012600a620004ad565b6200030790620f4240620004c4565b60405190815260200160405180910390a3600160025f6200032f5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260029093528183208054851660019081179091556004549091168352912080549092161790556005805460ff60b81b1916600160b81b17905562000526565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f257815f1904821115620003d657620003d66200039e565b80851615620003e457918102915b93841c9390800290620003b7565b509250929050565b5f826200040a57506001620004a7565b816200041857505f620004a7565b81600181146200043157600281146200043c576200045c565b6001915050620004a7565b60ff8411156200045057620004506200039e565b50506001821b620004a7565b5060208310610133831016604e8410600b841016171562000481575081810a620004a7565b6200048d8383620003b2565b805f1904821115620004a357620004a36200039e565b0290505b92915050565b5f620004bd60ff841683620003fa565b9392505050565b8082028115828204841417620004a757620004a76200039e565b5f82620004f957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200050f575f80fd5b81516001600160a01b0381168114620004bd575f80fd5b61139080620005345f395ff3fe608060405260043610610164575f3560e01c806370a08231116100cd5780639b2f5d8611610087578063d295ebf011610062578063d295ebf01461016f578063dd62ed3e146103e8578063e0f3ccf51461042c578063e4748b9e14610441575f80fd5b80639b2f5d8614610396578063a6205f24146103aa578063a9059cbb146103c9575f80fd5b806370a08231146102ff578063715018a614610333578063751039fc1461034757806382247ec01461035b5780638da5cb5b1461037057806395d89b4114610185575f80fd5b806323b872dd1161011e57806323b872dd1461024f578063313ce5671461026e5780633bbac579146102895780634ada218b146102c057806352547435146102e05780635342acb414610289575f80fd5b806302ac81681461016f57806306fdde0314610185578063095ea7b3146101cb57806318160ddd146101fa5780631b300e461461021c57806323b6358514610230575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b50610183610456565b005b348015610190575f80fd5b50604080518082018252600f81526e0cce4d2cadcc8d8cadcc85ce8cac6d608b1b602082015290516101c29190610fae565b60405180910390f35b3480156101d6575f80fd5b506101ea6101e5366004611010565b6104a1565b60405190151581526020016101c2565b348015610205575f80fd5b5061020e6104b7565b6040519081526020016101c2565b348015610227575f80fd5b506101836104d6565b34801561023b575f80fd5b506101ea61024a36600461103a565b610526565b34801561025a575f80fd5b506101ea610269366004611051565b61053c565b348015610279575f80fd5b50604051601281526020016101c2565b348015610294575f80fd5b506101ea6102a336600461108f565b6001600160a01b03165f9081526002602052604090205460ff1690565b3480156102cb575f80fd5b506005546101ea90600160a01b900460ff1681565b3480156102eb575f80fd5b506101836102fa36600461103a565b6105a3565b34801561030a575f80fd5b5061020e61031936600461108f565b6001600160a01b03165f9081526003602052604090205490565b34801561033e575f80fd5b50610183610620565b348015610352575f80fd5b50610183610691565b348015610366575f80fd5b5061020e600a5481565b34801561037b575f80fd5b505f546040516001600160a01b0390911681526020016101c2565b3480156103a1575f80fd5b506101836106e2565b3480156103b5575f80fd5b506101836103c43660046110aa565b610753565b3480156103d4575f80fd5b506101ea6103e3366004611010565b61080d565b3480156103f3575f80fd5b5061020e6104023660046110ca565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610437575f80fd5b5061020e60095481565b34801561044c575f80fd5b5061020e60085481565b5f546001600160a01b031633146104885760405162461bcd60e51b815260040161047f90611101565b60405180910390fd5b6005805462ff00ff60a01b19166201000160a01b179055565b5f6104ad338484610819565b5060015b92915050565b5f6104c46012600a61122a565b6104d190620f4240611238565b905090565b5f546001600160a01b031633146104ff5760405162461bcd60e51b815260040161047f90611101565b61050b6012600a61122a565b61051890620f4240611238565b600a555f6008819055600955565b5f6105343361dead84610879565b506001919050565b5f610548848484610879565b610599843361059485604051806060016040528060288152602001611333602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190610bfd565b610819565b5060019392505050565b5f546001600160a01b031633146105cc5760405162461bcd60e51b815260040161047f90611101565b5f811161061b5760405162461bcd60e51b815260206004820152601960248201527f616d6f756e742073686f756c64206e6f74206265207a65726f00000000000000604482015260640161047f565b600655565b5f546001600160a01b031633146106495760405162461bcd60e51b815260040161047f90611101565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106ba5760405162461bcd60e51b815260040161047f90611101565b6106c66012600a61122a565b6106d390620f4240611238565b600a5560036008819055600955565b5f546001600160a01b0316331461070b5760405162461bcd60e51b815260040161047f90611101565b60058054600160b01b60ff600160b81b8084048216150260ff60b81b1984168117839004909116151590910260ff60b01b1990911661ffff60b01b1990921691909117179055565b5f546001600160a01b0316331461077c5760405162461bcd60e51b815260040161047f90611101565b60648211156107bf5760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206e65772046656560881b604482015260640161047f565b60648111156108025760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206e65772046656560881b604482015260640161047f565b600891909155600955565b5f6104ad338484610879565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116108da5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161047f565b6001600160a01b0383165f90815260026020526040812054819060ff168061091957506001600160a01b0384165f9081526002602052604090205460ff165b905080610abf57600554600160a01b900460ff166109725760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b604482015260640161047f565b6005546001600160a01b0390811690861603610a2557600a54836109aa866001600160a01b03165f9081526003602052604090205490565b6109b4919061124f565b1115610a025760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161047f565b610a226064610a1c60085486610c3590919063ffffffff16565b90610cba565b91505b6005546001600160a01b0390811690851603610a5857610a556064610a1c60095486610c3590919063ffffffff16565b91505b600554600160a81b900460ff16158015610a7f57506005546001600160a01b038581169116145b8015610a945750600554600160b01b900460ff165b8015610aaf5750600654305f90815260036020526040902054115b15610abf57610abf600654610cfb565b8115610b3757305f90815260036020526040902054610ade9083610d5b565b305f81815260036020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b2e9086815260200190565b60405180910390a35b6001600160a01b0385165f90815260036020526040902054610b599084610db9565b6001600160a01b0386165f90815260036020526040902055610b9c610b7e8484610db9565b6001600160a01b0386165f9081526003602052604090205490610d5b565b6001600160a01b038086165f8181526003602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610be58686610db9565b60405190815260200160405180910390a35050505050565b5f8184841115610c205760405162461bcd60e51b815260040161047f9190610fae565b505f610c2c8486611262565b95945050505050565b5f825f03610c4457505f6104b1565b5f610c4f8385611238565b905082610c5c8583611275565b14610cb35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161047f565b9392505050565b5f610cb383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610dfa565b5f610d0582610e26565b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f8114610d4f576040519150601f19603f3d011682016040523d82523d5f602084013e610d54565b606091505b5050505050565b5f80610d67838561124f565b905083811015610cb35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161047f565b5f610cb383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bfd565b5f8183610e1a5760405162461bcd60e51b815260040161047f9190610fae565b505f610c2c8486611275565b6005805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e6c57610e6c611294565b60200260200101906001600160a01b031690816001600160a01b03168152505060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0091906112a8565b81600181518110610f1357610f13611294565b6001600160a01b039283166020918202929092010152600454610f399130911684610819565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791610f709186915f91879130914291016112c3565b5f604051808303815f87803b158015610f87575f80fd5b505af1158015610f99573d5f803e3d5ffd5b50506005805460ff60a81b1916905550505050565b5f6020808352835180828501525f5b81811015610fd957858101830151858201604001528201610fbd565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461100d575f80fd5b50565b5f8060408385031215611021575f80fd5b823561102c81610ff9565b946020939093013593505050565b5f6020828403121561104a575f80fd5b5035919050565b5f805f60608486031215611063575f80fd5b833561106e81610ff9565b9250602084013561107e81610ff9565b929592945050506040919091013590565b5f6020828403121561109f575f80fd5b8135610cb381610ff9565b5f80604083850312156110bb575f80fd5b50508035926020909101359150565b5f80604083850312156110db575f80fd5b82356110e681610ff9565b915060208301356110f681610ff9565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561118457815f190482111561116a5761116a611136565b8085161561117757918102915b93841c939080029061114f565b509250929050565b5f8261119a575060016104b1565b816111a657505f6104b1565b81600181146111bc57600281146111c6576111e2565b60019150506104b1565b60ff8411156111d7576111d7611136565b50506001821b6104b1565b5060208310610133831016604e8410600b8410161715611205575081810a6104b1565b61120f838361114a565b805f190482111561122257611222611136565b029392505050565b5f610cb360ff84168361118c565b80820281158282048414176104b1576104b1611136565b808201808211156104b1576104b1611136565b818103818111156104b1576104b1611136565b5f8261128f57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156112b8575f80fd5b8151610cb381610ff9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156113115784516001600160a01b0316835293830193918301916001016112ec565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122050fd800e8f55e31a3b5b48aa53dbde7f6e040ebac33a0fa998657e5579f5390164736f6c63430008150033