6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556002805490911661dead179055620000486012600a62000328565b62000059906402540be40062000340565b600355606460035460056200006f919062000340565b6200007b91906200035a565b600455612710600354600162000092919062000340565b6200009e91906200035a565b6005556103e86003546003620000b5919062000340565b620000c191906200035a565b600655600e805462ffffff60a01b191690556010600f8190558055600060118190556012819055600a60138190556014556015553480156200010257600080fd5b506040516200201e3803806200201e83398101604081905262000125916200037d565b600080546001600160a01b0319908116339081178355600c80546001600160a01b0386811691909416178155818452600960209081526040808620805460ff1990811660019081179092558454871688528288208054821683179055308089528389208054831684179055868952600a8552838920805483168417905594549096168752818720805487168217905592865280862080549095169092179093556003548285526007845281852081905590519081529092839290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620003a8565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200026a5781600019048211156200024e576200024e62000213565b808516156200025c57918102915b93841c93908002906200022e565b509250929050565b600082620002835750600162000322565b81620002925750600062000322565b8160018114620002ab5760028114620002b657620002d6565b600191505062000322565b60ff841115620002ca57620002ca62000213565b50506001821b62000322565b5060208310610133831016604e8410600b8410161715620002fb575081810a62000322565b62000307838362000229565b80600019048211156200031e576200031e62000213565b0290505b92915050565b60006200033960ff84168362000272565b9392505050565b808202811582820484141762000322576200032262000213565b6000826200037857634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200039057600080fd5b81516001600160a01b03811681146200033957600080fd5b611c6680620003b86000396000f3fe6080604052600436106101c65760003560e01c806370a08231116100f7578063a8aa1b3111610095578063dd62ed3e11610064578063dd62ed3e1461054a578063f4fc3f7c14610590578063f887ea40146105b0578063ffd752c7146105d057600080fd5b8063a8aa1b31146104df578063a8c1760f146104ff578063a9059cbb14610514578063d4dcabfa1461053457600080fd5b8063827384a0116100d1578063827384a01461045f578063893d20e81461048057806392ec95b51461049e57806395d89b41146104b357600080fd5b806370a08231146103dc578063715018a6146104125780637f717c771461042757600080fd5b80632f54bf6e116101645780635bac01bd1161013e5780635bac01bd1461036e5780636c0a24eb146103855780636d2ea6b01461039b5780636ddd1713146103bb57600080fd5b80632f54bf6e1461030d578063313ce5671461033c5780633eaaf86b1461035857600080fd5b80630faee56f116101a05780630faee56f1461027b57806318160ddd1461029f5780632232414a146102b457806323b872dd146102ed57600080fd5b806306fdde03146101d257806308fd3d051461022a578063095ea7b31461025b57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b5060408051808201909152601781527f49544f2d4348414e204e4549524f204f6c64204e616d6500000000000000000060208201525b604051610221919061189f565b60405180910390f35b34801561023657600080fd5b50600e5461024b90600160b01b900460ff1681565b6040519015158152602001610221565b34801561026757600080fd5b5061024b610276366004611912565b6105e5565b34801561028757600080fd5b5061029160065481565b604051908152602001610221565b3480156102ab57600080fd5b50600354610291565b3480156102c057600080fd5b5061024b6102cf36600461193e565b6001600160a01b03166000908152600b602052604090205460ff1690565b3480156102f957600080fd5b5061024b61030836600461195b565b610652565b34801561031957600080fd5b5061024b61032836600461193e565b6000546001600160a01b0391821691161490565b34801561034857600080fd5b5060405160128152602001610221565b34801561036457600080fd5b5061029160035481565b34801561037a57600080fd5b50610383610714565b005b34801561039157600080fd5b5061029160045481565b3480156103a757600080fd5b506103836103b63660046119b2565b6107bf565b3480156103c757600080fd5b50600e5461024b90600160a01b900460ff1681565b3480156103e857600080fd5b506102916103f736600461193e565b6001600160a01b031660009081526007602052604090205490565b34801561041e57600080fd5b50610383610855565b34801561043357600080fd5b50600c54610447906001600160a01b031681565b6040516001600160a01b039091168152602001610221565b34801561046b57600080fd5b50600e5461024b90600160a81b900460ff1681565b34801561048c57600080fd5b506000546001600160a01b0316610447565b3480156104aa57600080fd5b5061024b6108c4565b3480156104bf57600080fd5b5060408051808201909152600381526249544f60e81b6020820152610214565b3480156104eb57600080fd5b50600d54610447906001600160a01b031681565b34801561050b57600080fd5b506103836108fb565b34801561052057600080fd5b5061024b61052f366004611912565b610bad565b34801561054057600080fd5b5061029160055481565b34801561055657600080fd5b50610291610565366004611a77565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561059c57600080fd5b506103836105ab3660046119b2565b610bba565b3480156105bc57600080fd5b50600e54610447906001600160a01b031681565b3480156105dc57600080fd5b50610383610c4c565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106409086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600860209081526040808320338452909152812054600019146106ff576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546106da918490610ce9565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b61070a848484610d23565b90505b9392505050565b6000546001600160a01b031633146107475760405162461bcd60e51b815260040161073e90611ab0565b60405180910390fd5b600047116107905760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b604482015260640161073e565b60405133904780156108fc02916000818181858888f193505050501580156107bc573d6000803e3d6000fd5b50565b6000546001600160a01b031633146107e95760405162461bcd60e51b815260040161073e90611ab0565b60005b8151811015610851576001600b600084848151811061080d5761080d611ad0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061084981611afc565b9150506107ec565b5050565b6000546001600160a01b0316331461087f5760405162461bcd60e51b815260040161073e90611ab0565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b600080546001600160a01b031633146108ef5760405162461bcd60e51b815260040161073e90611ab0565b50600354600455600190565b6000546001600160a01b031633146109255760405162461bcd60e51b815260040161073e90611ab0565b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad9190611b15565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a339190611b15565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa49190611b15565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600a60209081526040808320805460ff191660011790553080845260088352818420600e805487168652908452828520600019905554818552600790935292205492169163f305d7199147916000805460405160e087901b6001600160e01b03191681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af1158015610b83573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ba89190611b32565b505050565b600061070d338484610d23565b6000546001600160a01b03163314610be45760405162461bcd60e51b815260040161073e90611ab0565b60005b8151811015610851576000600b6000848481518110610c0857610c08611ad0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c4481611afc565b915050610be7565b6000546001600160a01b03163314610c765760405162461bcd60e51b815260040161073e90611ab0565b600e54600160b01b900460ff1615610cd05760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161073e565b600e805462ffffff60a01b19166201010160a01b179055565b60008184841115610d0d5760405162461bcd60e51b815260040161073e919061189f565b506000610d1a8486611b60565b95945050505050565b60006001600160a01b038416610d895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161073e565b6001600160a01b038316610deb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161073e565b60008211610e4d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161073e565b6001600160a01b0384166000908152600b6020526040812054819060ff16158015610e9157506001600160a01b0385166000908152600b602052604090205460ff16155b610e9a57600080fd5b60165460ff1615610eb957610eb0868686611072565b9250505061070d565b6001600160a01b03861660009081526009602052604090205460ff16158015610efb57506001600160a01b03851660009081526009602052604090205460ff16155b15610f5057600e54600160b01b900460ff16610f505760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161073e565b600e54600160a01b900460ff16610f6c57610eb0868686611072565b610f768686611158565b1561102a576001600160a01b0385166000908152600a602052604090205460ff1680610fc757506004546001600160a01b038616600090815260076020526040902054610fc4908690611b73565b11155b6110215760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b606482015260840161073e565b61102a866111d5565b6110348686611203565b809250819350505061104a82828660055461127c565b1561105857611058846112ea565b61106586868684866114b0565b5060019695505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526007909152918220546110c3918490610ce9565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546110f290836115b2565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111469086815260200190565b60405180910390a35060019392505050565b600d546000906001600160a01b0383811691161480159061118757506002546001600160a01b03838116911614155b80156111ac57506001600160a01b03831660009081526009602052604090205460ff16155b801561070d5750506001600160a01b031660009081526009602052604090205460ff1615919050565b600d546001600160a01b03908116908216036107bc57601580549060006111fb83611afc565b919050555050565b60008060008061122c866001600160a01b031660009081526009602052604090205460ff161590565b600d549091506001600160a01b039081169086160361124e5760029150611272565b600d546001600160a01b039081169087160361126d5760019150611272565b600091505b9590945092505050565b3060009081526007602052604081205482908490600083821180156112a057508383115b60165490915060ff161580156112b35750885b80156112bf5750600188115b80156112c85750805b80156112dd5750600e54600160a01b900460ff165b9998505050505050505050565b6016805460ff1916600117905530600090815260076020526040812054905060006113208361131b84600654611611565b611611565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061135a5761135a611ad0565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d79190611b15565b816001815181106113ea576113ea611ad0565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac94790611430908590600090869030904290600401611b86565b600060405180830381600087803b15801561144a57600080fd5b505af115801561145e573d6000803e3d6000fd5b5050600c546040514793506001600160a01b03909116915082156108fc029083906000818181858888f1935050505015801561149e573d6000803e3d6000fd5b50506016805460ff1916905550505050565b60008060006114c0858588611626565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038d1660009081526007909152919091205492945090925061151991908490610ce9565b6001600160a01b03808a16600090815260076020526040808220939093559089168152205461154890826115b2565b6001600160a01b0380891660008181526007602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061159c908a815260200190565b60405180910390a3506001979650505050505050565b6000806115bf8385611b73565b90508381101561070d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161073e565b6000818311611620578261070d565b50919050565b60008060008461165757600e54600160a81b900460ff166116475783611659565b611652868686611698565b611659565b835b600e54909150600090600160a81b900460ff1680156116755750855b61167f578461168a565b61168a878787611698565b919791965090945050505050565b600080606484156116f65760018611156116ca57601454601554116116bf576010546116c3565b6012545b91506116fb565b85156116ed57601354601554116116e357600f546116c3565b60115491506116fb565b600091506116fb565b600191505b60006117118261170b878661176b565b906117ed565b3060009081526007602052604090205490915061172e90826115b2565b30600090815260076020526040902055856117525761174d85846117ed565b611754565b805b9050611760858261182f565b979650505050505050565b60008260000361177d5750600061064c565b60006117898385611bf7565b9050826117968583611c0e565b1461070d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161073e565b600061070d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611871565b600061070d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ce9565b600081836118925760405162461bcd60e51b815260040161073e919061189f565b506000610d1a8486611c0e565b600060208083528351808285015260005b818110156118cc578581018301518582016040015282016118b0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107bc57600080fd5b803561190d816118ed565b919050565b6000806040838503121561192557600080fd5b8235611930816118ed565b946020939093013593505050565b60006020828403121561195057600080fd5b813561070d816118ed565b60008060006060848603121561197057600080fd5b833561197b816118ed565b9250602084013561198b816118ed565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156119c557600080fd5b823567ffffffffffffffff808211156119dd57600080fd5b818501915085601f8301126119f157600080fd5b813581811115611a0357611a0361199c565b8060051b604051601f19603f83011681018181108582111715611a2857611a2861199c565b604052918252848201925083810185019188831115611a4657600080fd5b938501935b82851015611a6b57611a5c85611902565b84529385019392850192611a4b565b98975050505050505050565b60008060408385031215611a8a57600080fd5b8235611a95816118ed565b91506020830135611aa5816118ed565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611b0e57611b0e611ae6565b5060010190565b600060208284031215611b2757600080fd5b815161070d816118ed565b600080600060608486031215611b4757600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561064c5761064c611ae6565b8082018082111561064c5761064c611ae6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bd65784516001600160a01b031683529383019391830191600101611bb1565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761064c5761064c611ae6565b600082611c2b57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122071ccdb4546bb6c4762cc23dad6e05aa1abe0ceb1fd18b6bf3cfa10aa153aa73664736f6c63430008130033000000000000000000000000ad7295c697b430e68aeacd8834a2ba7f8f48b301