6080604052600180546001600160a01b03191661dead179055620000266009600a6200055b565b6200003690633b9aca0062000573565b600281905562000049906103e862000573565b6003556006805460ff19169055600060078190556008819055600c8190556002600d819055600e8290556010829055601181905560128290556200008e90826200058d565b6200009a91906200058d565b60135560006014819055600260158190556016829055620000bc90826200058d565b620000c891906200058d565b601755612710600254612710620000e0919062000573565b620000ec9190620005a3565b60185561271060025461271062000104919062000573565b620001109190620005a3565b601955601a80546001600160a01b031990811673fc1351e4bf00d1571e12d8e3d65c189fa4b4cd81908117909255601b8054821683179055601c80549091169091179055601e805460ff60a01b1916600160a01b179055600254612710906200017b90600a62000573565b620001879190620005a3565b601f5561271060025460016200019e919062000573565b620001aa9190620005a3565b602055348015620001ba57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916734752ba5dbc23f44d87826276bf6fd6b1c372ad249081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000261573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002879190620005c6565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030f9190620005c6565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200035c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003829190620005c6565b601e80546001600160a01b0319166001600160a01b03928316179055306000818152600560209081526040808320601d549095168352938152838220600019905533808352600a8252848320805460ff199081166001908117909255600b84528685208054909116909117905560035493835260048252848320939093556002548383528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005f1565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200049d57816000190482111562000481576200048162000446565b808516156200048f57918102915b93841c939080029062000461565b509250929050565b600082620004b65750600162000555565b81620004c55750600062000555565b8160018114620004de5760028114620004e95762000509565b600191505062000555565b60ff841115620004fd57620004fd62000446565b50506001821b62000555565b5060208310610133831016604e8410600b84101617156200052e575081810a62000555565b6200053a83836200045c565b806000190482111562000551576200055162000446565b0290505b92915050565b60006200056c60ff841683620004a5565b9392505050565b808202811582820484141762000555576200055562000446565b8082018082111562000555576200055562000446565b600082620005c157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005d957600080fd5b81516001600160a01b03811681146200056c57600080fd5b611d5880620006016000396000f3fe6080604052600436106102605760003560e01c80636ddd171311610144578063bfa21d6a116100b6578063e96fada21161007a578063e96fada21461076e578063ec28438a1461078e578063f2fde38b146107ae578063f84ba65d146107ce578063f88de0c3146107ee578063fe575a871461080357600080fd5b8063bfa21d6a146106a8578063d0889358146106c8578063d7c01032146106e8578063dab84ee714610708578063dd62ed3e1461072857600080fd5b8063893d20e811610108578063893d20e8146105dd5780638b42507f146105fb5780638f9a55c01461062b57806395d89b411461064157806398118cb414610672578063a9059cbb1461068857600080fd5b80636ddd17131461053b57806370a082311461055c578063715018a61461059257806379eb9064146105a75780637d1db4a5146105c757600080fd5b8063313ce567116101dd578063534030b1116101a1578063534030b11461048f578063596fa9e3146104af5780635d0044ca146104cf578063658d4b7f146104ef5780636827e7641461050f5780636b67c4df1461052557600080fd5b8063313ce567146103db5780633f4218e0146103f757806342cc2f45146104275780634ada218b1461045f5780634f28cac21461047957600080fd5b806318160ddd1161022457806318160ddd146103415780631df4ccfc1461035657806323b872dd1461036c5780632d4103d61461038c5780632f54bf6e146103ac57600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102cf5780630d075d9c146102ff5780630f683e901461032157600080fd5b3661026757005b600080fd5b34801561027857600080fd5b50610282601f5481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b506040805180820190915260088152674279656e616e636560c01b60208201525b60405161028c9190611938565b3480156102db57600080fd5b506102ef6102ea36600461199c565b610833565b604051901515815260200161028c565b34801561030b57600080fd5b5061031f61031a3660046119c8565b6108a0565b005b34801561032d57600080fd5b5061031f61033c3660046119c8565b610948565b34801561034d57600080fd5b50600254610282565b34801561036257600080fd5b50610282600f5481565b34801561037857600080fd5b506102ef6103873660046119f4565b6109e3565b34801561039857600080fd5b5061031f6103a7366004611a43565b610a78565b3480156103b857600080fd5b506102ef6103c7366004611a61565b6000546001600160a01b0391821691161490565b3480156103e757600080fd5b506040516009815260200161028c565b34801561040357600080fd5b506102ef610412366004611a61565b600a6020526000908152604090205460ff1681565b34801561043357600080fd5b50601e54610447906001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b34801561046b57600080fd5b506006546102ef9060ff1681565b34801561048557600080fd5b5061028260205481565b34801561049b57600080fd5b5061031f6104aa366004611a7e565b610b07565b3480156104bb57600080fd5b50601d54610447906001600160a01b031681565b3480156104db57600080fd5b5061031f6104ea366004611ab7565b610b5c565b3480156104fb57600080fd5b5061031f61050a366004611a7e565b610bf8565b34801561051b57600080fd5b50610282600c5481565b34801561053157600080fd5b50610282600d5481565b34801561054757600080fd5b50601e546102ef90600160a01b900460ff1681565b34801561056857600080fd5b50610282610577366004611a61565b6001600160a01b031660009081526004602052604090205490565b34801561059e57600080fd5b5061031f610c4d565b3480156105b357600080fd5b506102ef6105c236600461199c565b610cc1565b3480156105d357600080fd5b5061028260185481565b3480156105e957600080fd5b506000546001600160a01b0316610447565b34801561060757600080fd5b506102ef610616366004611a61565b600b6020526000908152604090205460ff1681565b34801561063757600080fd5b5061028260195481565b34801561064d57600080fd5b506040805180820190915260088152674259454e414e434560c01b60208201526102c2565b34801561067e57600080fd5b50610282600e5481565b34801561069457600080fd5b506102ef6106a336600461199c565b610d35565b3480156106b457600080fd5b50601c54610447906001600160a01b031681565b3480156106d457600080fd5b5061031f6106e3366004611ad0565b610d42565b3480156106f457600080fd5b5061031f610703366004611b05565b610dc6565b34801561071457600080fd5b50601a54610447906001600160a01b031681565b34801561073457600080fd5b50610282610743366004611b50565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561077a57600080fd5b50601b54610447906001600160a01b031681565b34801561079a57600080fd5b5061031f6107a9366004611ab7565b610e2f565b3480156107ba57600080fd5b5061031f6107c9366004611a61565b610ec3565b3480156107da57600080fd5b5061031f6107e9366004611a7e565b610fad565b3480156107fa57600080fd5b5061031f611002565b34801561080f57600080fd5b506102ef61081e366004611a61565b60096020526000908152604090205460ff1681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061088e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108d35760405162461bcd60e51b81526004016108ca90611b7e565b60405180910390fd5b601083905560118290556012819055806108ed8385611bc9565b6108f79190611bc9565b6013819055601910156109435760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642062757920746178206665657360601b60448201526064016108ca565b505050565b6000546001600160a01b031633146109725760405162461bcd60e51b81526004016108ca90611b7e565b6014839055601582905560168190558061098c8385611bc9565b6109969190611bc9565b6017819055601910156109435760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642073656c6c20746178206665657360581b60448201526064016108ca565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610a63576001600160a01b0384166000908152600560209081526040808320338452909152902054610a3e908390611bdc565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610a6e84848461105b565b90505b9392505050565b6000546001600160a01b03163314610aa25760405162461bcd60e51b81526004016108ca90611b7e565b81610ae15760405162461bcd60e51b815260206004820152600f60248201526e273790393ab3903432b9329039b2b960891b60448201526064016108ca565b6006805460ff19168315159081179091556008829055600103610b0357436007555b5050565b6000546001600160a01b03163314610b315760405162461bcd60e51b81526004016108ca90611b7e565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b865760405162461bcd60e51b81526004016108ca90611b7e565b6064811015610bd75760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206d61782077616c6c65742073697a6500000000000000000060448201526064016108ca565b61271081600254610be89190611bef565b610bf29190611c06565b60195550565b6000546001600160a01b03163314610c225760405162461bcd60e51b81526004016108ca90611b7e565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c775760405162461bcd60e51b81526004016108ca90611b7e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60405163a9059cbb60e01b8152336004820152602481018290526000906001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a719190611c28565b6000610a7133848461105b565b6000546001600160a01b03163314610d6c5760405162461bcd60e51b81526004016108ca90611b7e565b601e805460ff60a01b1916600160a01b8515150217905560025461271090610d95908490611bef565b610d9f9190611c06565b601f5560025461271090610db4908390611bef565b610dbe9190611c06565b602055505050565b6000546001600160a01b03163314610df05760405162461bcd60e51b81526004016108ca90611b7e565b601a80546001600160a01b039485166001600160a01b031991821617909155601b805493851693821693909317909255601c8054919093169116179055565b6000546001600160a01b03163314610e595760405162461bcd60e51b81526004016108ca90611b7e565b6032811015610ea25760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b585e081d1e08185b5bdd5b9d605a1b60448201526064016108ca565b61271081600254610eb39190611bef565b610ebd9190611c06565b60185550565b6000546001600160a01b03163314610eed5760405162461bcd60e51b81526004016108ca90611b7e565b6001600160a01b038116610f525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fd75760405162461bcd60e51b81526004016108ca90611b7e565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461102c5760405162461bcd60e51b81526004016108ca90611b7e565b6040514790339082156108fc029083906000818181858888f19350505050158015610b03573d6000803e3d6000fd5b60215460009060ff168061106d575081155b156110845761107d84848461141f565b9050610a71565b6001600160a01b0384166000908152600a602052604090205460ff161580156110c657506001600160a01b0383166000908152600a602052604090205460ff16155b80156110d5575060065460ff16155b80156110ee5750601e546001600160a01b038581169116145b15611117576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6001600160a01b03841660009081526009602052604090205460ff16156111715760405162461bcd60e51b815260206004820152600e60248201526d596f7520617265206120626f742160901b60448201526064016108ca565b61117a846114d9565b6000546001600160a01b038581169116148015906111a157506001600160a01b0383163014155b80156111bb57506001546001600160a01b03848116911614155b80156111d55750601e546001600160a01b03848116911614155b15611299576001600160a01b0383166000908152600460205260409020546019546112008483611bc9565b11158061122557506001600160a01b0384166000908152600b602052604090205460ff165b6112975760405162461bcd60e51b815260206004820152603f60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f7420686f6c642074686174206d7563682e0060648201526084016108ca565b505b601e546001600160a01b039081169085160361131957601854821115806112d857506001600160a01b0383166000908152600b602052604090205460ff165b6113195760405162461bcd60e51b81526020600482015260126024820152712a2c103634b6b4ba1032bc31b2b2b232b21760711b60448201526064016108ca565b6113228461152c565b1561132f5761132f611580565b6001600160a01b038416600090815260046020526040902054611353908390611bdc565b6001600160a01b038516600090815260046020908152604080832093909355600a90529081205460ff16156113885782611391565b611391836118df565b6001600160a01b0385166000908152600460205260409020549091506113b8908290611bc9565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061140c9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260046020526040812054611443908390611bdc565b6001600160a01b038086166000908152600460205260408082209390935590851681522054611473908390611bc9565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114c79086815260200190565b60405180910390a35060019392505050565b601e546001600160a01b039081169082160361150f5761150c601054600c55601154600d55601254600e55601354600f55565b50565b61150c601454600c55601554600d55601654600e55601754600f55565b60006001600160a01b03821630148015611549575060215460ff16155b801561155e5750601e54600160a01b900460ff165b801561089a5750601f5430600090815260046020526040902054101592915050565b6021805460ff1916600117905560208054306000908152600490925260408220546115ab9190611bdc565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106115e5576115e5611c45565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561163e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116629190611c5b565b8160018151811061167557611675611c45565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906116bf908690600090879030904290600401611c78565b600060405180830381600087803b1580156116d957600080fd5b505af11580156116ed573d6000803e3d6000fd5b50505050600081476116ff9190611bdc565b90506000600f54600c54836117149190611bef565b61171e9190611c06565b90506000600f54600d54846117339190611bef565b61173d9190611c06565b90506000600f54600e54856117529190611bef565b61175c9190611c06565b601a546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d80600081146117b3576040519150601f19603f3d011682016040523d82523d6000602084013e6117b8565b606091505b50509050806117d95760405162461bcd60e51b81526004016108ca90611ceb565b601b546040516000916001600160a01b03169061753090869084818181858888f193505050503d806000811461182b576040519150601f19603f3d011682016040523d82523d6000602084013e611830565b606091505b50509050806118515760405162461bcd60e51b81526004016108ca90611ceb565b601c546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146118a3576040519150601f19603f3d011682016040523d82523d6000602084013e6118a8565b606091505b50509050806118c95760405162461bcd60e51b81526004016108ca90611ceb565b50506021805460ff191690555050505050505050565b6000806008546007546118f29190611bc9565b43111561191657600f54611907606485611c06565b6119119190611bef565b61192c565b611921606484611c06565b61192c906063611bef565b9050610a718184611bdc565b60006020808352835180602085015260005b818110156119665785810183015185820160400152820161194a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461150c57600080fd5b600080604083850312156119af57600080fd5b82356119ba81611987565b946020939093013593505050565b6000806000606084860312156119dd57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611a0957600080fd5b8335611a1481611987565b92506020840135611a2481611987565b929592945050506040919091013590565b801515811461150c57600080fd5b60008060408385031215611a5657600080fd5b82356119ba81611a35565b600060208284031215611a7357600080fd5b8135610a7181611987565b60008060408385031215611a9157600080fd5b8235611a9c81611987565b91506020830135611aac81611a35565b809150509250929050565b600060208284031215611ac957600080fd5b5035919050565b600080600060608486031215611ae557600080fd5b8335611af081611a35565b95602085013595506040909401359392505050565b600080600060608486031215611b1a57600080fd5b8335611b2581611987565b92506020840135611b3581611987565b91506040840135611b4581611987565b809150509250925092565b60008060408385031215611b6357600080fd5b8235611b6e81611987565b91506020830135611aac81611987565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089a5761089a611bb3565b8181038181111561089a5761089a611bb3565b808202811582820484141761089a5761089a611bb3565b600082611c2357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611c3a57600080fd5b8151610a7181611a35565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c6d57600080fd5b8151610a7181611987565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015611cca5784516001600160a01b031683529383019391830191600101611ca5565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252601e908201527f72656365697665722072656a656374656420455448207472616e73666572000060408201526060019056fea2646970667358221220d89df4a1a6c8ec73a65b4720be83110bd17582b8bbbade2033fb43e789ff4c3664736f6c63430008180033