6080604052695915a68d88da6a0800006009556000600a5560e6600b556101ae600c55600a600d55600a600e556200005160026200004a60646009546200038a60201b90919060201c565b90620003dd565b600f556009546200006c906002906200004a9060646200038a565b60105560095462000080906103e86200038a565b6011556015805463ffff00ff60a01b19169055600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601280546001600160a01b031990811633179091556013805490911673a4d1f6ef73866b431a4fcef5ae1ecfe82b6a195d17905560095430600090815260026020526040812091909155600190600490620001376000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260048085528382208054871660019081179091556012548416835284832080548816821790556015549093168252908390208054909516909117909355601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b81529151909363c45a01559383820193909291908290030181865afa15801562000206573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022c9190620004a7565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b59190620004a7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000303573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003299190620004a7565b601580546001600160a01b0319166001600160a01b039290921691909117905560095460405190815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200056b565b6000620003d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200046b60201b60201c565b90505b92915050565b600082600003620003f157506000620003d7565b6000620003ff8385620004d2565b9050826200040e8583620004f8565b14620003d45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b600081836200048f5760405162461bcd60e51b81526004016200046291906200051b565b5060006200049e8486620004f8565b95945050505050565b600060208284031215620004ba57600080fd5b81516001600160a01b0381168114620003d457600080fd5b8082028115828204841417620003d757634e487b7160e01b600052601160045260246000fd5b6000826200051657634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156200054a578581018301518582016040015282016200052c565b506000604082860101526040601f19601f8301168501019250505092915050565b611c79806200057b6000396000f3fe60806040526004361061014f5760003560e01c806373f42561116100b6578063b515566a1161006f578063b515566a146103c3578063c3c8cd80146103e3578063c9567bf9146103f8578063dd62ed3e1461040d578063e57f14e114610453578063f2fde38b1461047357600080fd5b806373f4256114610305578063751039fc1461031a5780638da5cb5b1461032f57806395d89b4114610357578063a63748e514610383578063a9059cbb146103a357600080fd5b8063273123b711610108578063273123b714610249578063313ce567146102695780634ea18fab146102855780636fc3eaec146102a557806370a08231146102ba578063715018a6146102f057600080fd5b806306fdde031461015b578063095ea7b3146101a357806316114acd146101d357806318160ddd146101f557806323b872dd14610214578063271671c11461023457600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600d81526c43616c6369756d204f7869646560981b60208201525b60405161019a91906117b1565b60405180910390f35b3480156101af57600080fd5b506101c36101be366004611824565b610493565b604051901515815260200161019a565b3480156101df57600080fd5b506101f36101ee366004611850565b6104aa565b005b34801561020157600080fd5b506009545b60405190815260200161019a565b34801561022057600080fd5b506101c361022f36600461186d565b6105b9565b34801561024057600080fd5b506101f3610622565b34801561025557600080fd5b506101f3610264366004611850565b610663565b34801561027557600080fd5b506040516009815260200161019a565b34801561029157600080fd5b506101f36102a03660046118ae565b6106b7565b3480156102b157600080fd5b506101f36106dc565b3480156102c657600080fd5b506102066102d5366004611850565b6001600160a01b031660009081526002602052604090205490565b3480156102fc57600080fd5b506101f3610709565b34801561031157600080fd5b50600a54610206565b34801561032657600080fd5b506101f361077d565b34801561033b57600080fd5b506000546040516001600160a01b03909116815260200161019a565b34801561036357600080fd5b5060408051808201909152600381526243614f60e81b602082015261018d565b34801561038f57600080fd5b506101f361039e3660046118c7565b6107aa565b3480156103af57600080fd5b506101c36103be366004611824565b610843565b3480156103cf57600080fd5b506101f36103de366004611909565b610850565b3480156103ef57600080fd5b506101f36108e6565b34801561040457600080fd5b506101f361091f565b34801561041957600080fd5b506102066104283660046119ce565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561045f57600080fd5b506101f361046e366004611850565b6109f7565b34801561047f57600080fd5b506101f361048e366004611850565b610a3b565b60006104a0338484610ac0565b5060015b92915050565b6012546001600160a01b0316336001600160a01b0316146104ca57600080fd5b6012546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015610521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105459190611a07565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b49190611a20565b505050565b60006105c6848484610be4565b610618843361061385604051806060016040528060288152602001611c1c602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610fa7565b610ac0565b5060019392505050565b6012546001600160a01b0316336001600160a01b03161461064257600080fd5b6015805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6000546001600160a01b031633146106965760405162461bcd60e51b815260040161068d90611a42565b60405180910390fd5b6001600160a01b03166000908152600560205260409020805460ff19169055565b6012546001600160a01b0316336001600160a01b0316146106d757600080fd5b601155565b6012546001600160a01b0316336001600160a01b0316146106fc57600080fd5b4761070681610fe1565b50565b6000546001600160a01b031633146107335760405162461bcd60e51b815260040161068d90611a42565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6012546001600160a01b0316336001600160a01b03161461079d57600080fd5b600954600f819055601055565b6012546001600160a01b0316336001600160a01b0316146107ca57600080fd5b609683111580156107dc575060fa8211155b80156107e9575060648111155b6108355760405162461bcd60e51b815260206004820152601e60248201527f666565732063616e6e6f7420626520686967686572207468616e203235250000604482015260640161068d565b600b92909255600c55600d55565b60006104a0338484610be4565b6000546001600160a01b0316331461087a5760405162461bcd60e51b815260040161068d90611a42565b60005b81518110156108e25760016005600084848151811061089e5761089e611a77565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108da81611aa3565b91505061087d565b5050565b6012546001600160a01b0316336001600160a01b03161461090657600080fd5b306000908152600260205260409020546107068161101b565b6000546001600160a01b031633146109495760405162461bcd60e51b815260040161068d90611a42565b601554600160a81b900460ff16156109a35760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161068d565b306000908152600260205260409020546109cf90476109ca6000546001600160a01b031690565b611195565b6015805462ff00ff60a81b19166201000160a81b1790556109f24261012c611abc565b600755565b6012546001600160a01b0316336001600160a01b031614610a1757600080fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610a655760405162461bcd60e51b815260040161068d90611a42565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b6001600160a01b038216610b835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161068d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161068d565b6001600160a01b038216610caa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161068d565b60008111610d0c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161068d565b60006008556012546001600160a01b03848116911614801590610d3d57506012546001600160a01b03838116911614155b15610f2657610d65600e54610d5f600d54600b5461125390919063ffffffff16565b90611253565b6008556001600160a01b03831660009081526005602052604090205460ff16158015610daa57506001600160a01b03821660009081526005602052604090205460ff16155b610db357600080fd5b6015546001600160a01b038481169116148015610dde57506014546001600160a01b03838116911614155b8015610e0357506001600160a01b03821660009081526004602052604090205460ff16155b8015610e10575060075442105b15610e6d57600f54811115610e2457600080fd5b6001600160a01b0382166000908152600660205260409020544211610e4857600080fd5b610e5342601e611abc565b6001600160a01b0383166000908152600660205260409020555b601554600160b01b900460ff16158015610e9557506015546001600160a01b03848116911614155b8015610eaa5750601554600160b81b900460ff165b8015610ecf57506001600160a01b03831660009081526004602052604090205460ff16155b15610f265730600090815260026020526040902054601154811115610f2457610ef78161101b565b478015610f2257601554600160a01b900460ff1615610f1957610f19816112b9565b610f2247610fe1565b505b505b6015546001600160a01b038381169116148015610f5157506014546001600160a01b03848116911614155b8015610f7657506001600160a01b03831660009081526004602052604090205460ff16155b15610f9c57610f98600e54610d5f600d54600c5461125390919063ffffffff16565b6008555b6105b483838361143e565b60008184841115610fcb5760405162461bcd60e51b815260040161068d91906117b1565b506000610fd88486611acf565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156108e2573d6000803e3d6000fd5b6015805460ff60b01b1916600160b01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061106357611063611a77565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190611ae2565b816001815181106110f3576110f3611a77565b6001600160a01b0392831660209182029290920101526014546111199130911684610ac0565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611152908590600090869030904290600401611b43565b600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50506015805460ff60b01b1916905550505050565b6015805460ff60b01b1916600160b01b1790556014546111c09030906001600160a01b031685610ac0565b60145460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af115801561122e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111809190611b7f565b6000806112608385611abc565b9050838110156112b25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161068d565b9392505050565b60006112d160026112cb846005611545565b90611587565b60408051600280825260608201835292935060009290916020830190803683375050601454604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113649190611ae2565b8160008151811061137757611377611a77565b60200260200101906001600160a01b031690816001600160a01b0316815250507320561172f791f915323241e885b4f7d5187c36e1816001815181106113bf576113bf611a77565b6001600160a01b03928316602091820292909201015260145460405163b6f9de9560e01b815291169063b6f9de9590849061140790600090869061dead904290600401611bad565b6000604051808303818588803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b5050505050505050565b60008060008061144d85611609565b6001600160a01b038b166000908152600260205260409020549397509195509350915061147a908261168d565b6001600160a01b0380891660009081526002602052604080822093909355908816815220546114a99085611253565b6001600160a01b0387166000908152600260205260408082209290925530815220546114d59083611253565b306000908152600260205260409020556114ef87846116cf565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161153491815260200190565b60405180910390a350505050505050565b60006112b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611783565b600082600003611599575060006104a4565b60006115a58385611be2565b9050826115b28583611bf9565b146112b25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161068d565b60008060008060006116326103e861162c6008548961158790919063ffffffff16565b90611545565b90506000611640878361168d565b9050600061165f6103e861162c600e548b61158790919063ffffffff16565b9050600061166d848361168d565b9050600061167b8a8461168d565b939a9299509097509195509350505050565b60006112b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fa7565b6001600160a01b0382166000908152600260205260409020546116f2908261168d565b6001600160a01b03831660009081526002602052604081209190915560098054839290611720908490611acf565b9250508190555080600a60008282546117399190611abc565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600081836117a45760405162461bcd60e51b815260040161068d91906117b1565b506000610fd88486611bf9565b600060208083528351808285015260005b818110156117de578581018301518582016040015282016117c2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461070657600080fd5b803561181f816117ff565b919050565b6000806040838503121561183757600080fd5b8235611842816117ff565b946020939093013593505050565b60006020828403121561186257600080fd5b81356112b2816117ff565b60008060006060848603121561188257600080fd5b833561188d816117ff565b9250602084013561189d816117ff565b929592945050506040919091013590565b6000602082840312156118c057600080fd5b5035919050565b6000806000606084860312156118dc57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561191c57600080fd5b823567ffffffffffffffff8082111561193457600080fd5b818501915085601f83011261194857600080fd5b81358181111561195a5761195a6118f3565b8060051b604051601f19603f8301168101818110858211171561197f5761197f6118f3565b60405291825284820192508381018501918883111561199d57600080fd5b938501935b828510156119c2576119b385611814565b845293850193928501926119a2565b98975050505050505050565b600080604083850312156119e157600080fd5b82356119ec816117ff565b915060208301356119fc816117ff565b809150509250929050565b600060208284031215611a1957600080fd5b5051919050565b600060208284031215611a3257600080fd5b815180151581146112b257600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ab557611ab5611a8d565b5060010190565b808201808211156104a4576104a4611a8d565b818103818111156104a4576104a4611a8d565b600060208284031215611af457600080fd5b81516112b2816117ff565b600081518084526020808501945080840160005b83811015611b385781516001600160a01b031687529582019590820190600101611b13565b509495945050505050565b85815284602082015260a060408201526000611b6260a0830186611aff565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215611b9457600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000611bc66080830186611aff565b6001600160a01b03949094166040830152506060015292915050565b80820281158282048414176104a4576104a4611a8d565b600082611c1657634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122037dfa18ddf57cde1d6c0c9c75b74c28196eb39f9ddafb585a45c525550bd061d64736f6c63430008130033