60806040526000600455600580546001600160a01b031916736c59ab71b26dfed93d872f10472f4b7ec8ee673817905560196006819055600755620000476009600a62000566565b62000057906301312d006200057e565b600855620000686009600a62000566565b62000078906301312d006200057e565b6009556009600a6200008b919062000566565b6200009a90621e84806200057e565b600a556009600a620000ad919062000566565b620000bd906301312d006200057e565b600b55600d805462ffffff60a01b191690556702c68af0bb140000600e55620000e96009600a62000566565b620000f8906207a1206200057e565b600f556000601055601180546001600160a01b03191661dead1790553480156200012157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee919062000598565b6001600160a01b031663c9c6539630600c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000277919062000598565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb919062000598565b600d80546001600160a01b0319166001600160a01b0392909216919091179055620003196009600a62000566565b6200032990633b9aca006200057e565b336000908152600160208190526040822092909255600390620003546000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260039283905290812080549093166001908117909355620003a13390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560055490911681526003909252902080549091166001179055620003f03390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200042a6009600a62000566565b6200043a90633b9aca006200057e565b60405190815260200160405180910390a3620005c3565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004a85781600019048211156200048c576200048c62000451565b808516156200049a57918102915b93841c93908002906200046c565b509250929050565b600082620004c15750600162000560565b81620004d05750600062000560565b8160018114620004e95760028114620004f45762000514565b600191505062000560565b60ff84111562000508576200050862000451565b50506001821b62000560565b5060208310610133831016604e8410600b841016171562000539575081810a62000560565b62000545838362000467565b80600019048211156200055c576200055c62000451565b0290505b92915050565b60006200057760ff841683620004b0565b9392505050565b808202811582820484141762000560576200056062000451565b600060208284031215620005ab57600080fd5b81516001600160a01b03811681146200057757600080fd5b611f5780620005d36000396000f3fe6080604052600436106101dc5760003560e01c8063715018a61161010257806395d89b4111610095578063c0fdea5711610064578063c0fdea5714610547578063dd62ed3e1461055d578063f4293890146105a3578063fbee93ba146105b857600080fd5b806395d89b41146104c4578063a2330d97146104f1578063a9059cbb14610511578063bf474bed1461053157600080fd5b80638da5cb5b116100d15780638da5cb5b146104505780638f9a55c01461046e5780639036ed4d1461048457806392f42870146104a457600080fd5b8063715018a6146103fb578063751039fc146104105780637d1db4a5146104255780638a8c523c1461043b57600080fd5b806316a7b1601161017a57806349bd5a5e1161014957806349bd5a5e1461036057806351bc3c851461038057806363cdf60f1461039557806370a08231146103c557600080fd5b806316a7b160146102fc57806318160ddd1461030f57806323b872dd14610324578063313ce5671461034457600080fd5b806306fdde03116101b657806306fdde031461026b578063095ea7b3146102a35780630f1d7ad9146102d35780630faee56f146102e657600080fd5b806301fac39b146101e857806303fd2a451461020a578063054dee0f1461024757600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b50610208610203366004611860565b6105ce565b005b34801561021657600080fd5b5060115461022a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561025357600080fd5b5061025d600e5481565b60405190815260200161023e565b34801561027757600080fd5b5060408051808201909152600681526530784e75646560d01b60208201525b60405161023e9190611962565b3480156102af57600080fd5b506102c36102be366004611975565b61066d565b604051901515815260200161023e565b6102086102e13660046119a1565b610684565b3480156102f257600080fd5b5061025d600b5481565b61020861030a3660046119a1565b610831565b34801561031b57600080fd5b5061025d6109d3565b34801561033057600080fd5b506102c361033f366004611a36565b6109f4565b34801561035057600080fd5b506040516009815260200161023e565b34801561036c57600080fd5b50600d5461022a906001600160a01b031681565b34801561038c57600080fd5b50610208610a5d565b3480156103a157600080fd5b506103b56103b03660046119a1565b610aac565b60405161023e9493929190611a77565b3480156103d157600080fd5b5061025d6103e0366004611aa6565b6001600160a01b031660009081526001602052604090205490565b34801561040757600080fd5b50610208610b6d565b34801561041c57600080fd5b50610208610be1565b34801561043157600080fd5b5061025d60085481565b34801561044757600080fd5b50610208610c95565b34801561045c57600080fd5b506000546001600160a01b031661022a565b34801561047a57600080fd5b5061025d60095481565b34801561049057600080fd5b5061020861049f366004611ac3565b610d32565b3480156104b057600080fd5b506102086104bf366004611860565b610d67565b3480156104d057600080fd5b506040805180820190915260048152634e55444560e01b6020820152610296565b3480156104fd57600080fd5b506103b561050c3660046119a1565b610df9565b34801561051d57600080fd5b506102c361052c366004611975565b610e1f565b34801561053d57600080fd5b5061025d600a5481565b34801561055357600080fd5b5061025d60105481565b34801561056957600080fd5b5061025d610578366004611ae5565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105af57600080fd5b50610208610e2c565b3480156105c457600080fd5b5061025d600f5481565b6000546001600160a01b031633146106015760405162461bcd60e51b81526004016105f890611b1e565b60405180910390fd5b60005b81518110156106695760006003600084848151811061062557610625611b53565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061066181611b7f565b915050610604565b5050565b600061067a338484610e3f565b5060015b92915050565b600e543410156106cd5760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f756768204554482073656e742160601b60448201526064016105f8565b600f54333110156107155760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b60448201526064016105f8565b34601060008282546107279190611b98565b9091555050601154600f546107499133916001600160a01b0390911690610f63565b60405180608001604052808281526020016001151581526020014281526020013460138460405161077a9190611bab565b9081526020016040518091039020600301546107969190611b98565b8152506013826040516107a99190611bab565b908152604051908190036020019020815181906107c69082611c4a565b50602082015160018201805460ff19169115159190911790556040808301516002830155606090920151600390910155517f8382dfeb92e23123a91d983e4f179a9fbe329ff91e14e11cd3c3b5252f115122906108269083904290611d0a565b60405180910390a150565b600e5434101561087a5760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f756768204554482073656e742160601b60448201526064016105f8565b600f54333110156108c25760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b60448201526064016105f8565b34601060008282546108d49190611b98565b9091555050601154600f546108f69133916001600160a01b0390911690610f63565b6040518060800160405280828152602001600115158152602001428152602001346012846040516109279190611bab565b9081526020016040518091039020600301546109439190611b98565b8152506012826040516109569190611bab565b908152604051908190036020019020815181906109739082611c4a565b50602082015160018201805460ff19169115159190911790556040808301516002830155606090920151600390910155517f892c7b6af36dc1cd7c78d56ead1e536ddf81fe5688e6b3f631cdfadf7ad4c508906108269083904290611d0a565b60006109e16009600a611e10565b6109ef90633b9aca00611e1f565b905090565b6000610a01848484610f63565b610a538433610a4e85604051806060016040528060288152602001611efa602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611467565b610e3f565b5060019392505050565b6005546001600160a01b0316336001600160a01b031614610a7d57600080fd5b306000908152600160205260409020548015610a9c57610a9c816114a1565b478015610669576106698161161b565b8051602081830181018051601282529282019190930120915280548190610ad290611bc7565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe90611bc7565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b5050505060018301546002840154600390940154929360ff9091169290915084565b6000546001600160a01b03163314610b975760405162461bcd60e51b81526004016105f890611b1e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c0b5760405162461bcd60e51b81526004016105f890611b1e565b610c176009600a611e10565b610c2590633b9aca00611e1f565b600855610c346009600a611e10565b610c4290633b9aca00611e1f565b60099081557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf90610c7490600a611e10565b610c8290633b9aca00611e1f565b60405190815260200160405180910390a1565b6000546001600160a01b03163314610cbf5760405162461bcd60e51b81526004016105f890611b1e565b600d54600160a01b900460ff1615610d195760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a20526571756972656d656e7420616c7265616479206d6574000060448201526064016105f8565b600d805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b03163314610d5c5760405162461bcd60e51b81526004016105f890611b1e565b600691909155600755565b6000546001600160a01b03163314610d915760405162461bcd60e51b81526004016105f890611b1e565b60005b815181101561066957600160036000848481518110610db557610db5611b53565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610df181611b7f565b915050610d94565b8051602081830181018051601382529282019190930120915280548190610ad290611bc7565b600061067a338484610f63565b478015610e3c57610e3c8161161b565b50565b6001600160a01b038316610ea15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f8565b6001600160a01b038216610f025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f8565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fc75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f8565b6001600160a01b0382166110295760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f8565b6000811161108a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206d75737420626520626967676572207460448201526768616e207a65726f60c01b60648201526084016105f8565b600080546001600160a01b038581169116148015906110b757506000546001600160a01b03848116911614155b1561132457600d546001600160a01b0385811691161480156110e75750600c546001600160a01b03848116911614155b801561110c57506001600160a01b03831660009081526003602052604090205460ff16155b1561124d57600d54600160a01b900460ff1661115d5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105f8565b6008548211156111af5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105f8565b600954826111d2856001600160a01b031660009081526001602052604090205490565b6111dc9190611b98565b111561122a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105f8565b61124a60646112446006548561165590919063ffffffff16565b906116de565b90505b600d546001600160a01b03848116911614801561127357506001600160a01b0384163014155b156112955761129260646112446007548561165590919063ffffffff16565b90505b30600090815260016020526040902054600d54600160a81b900460ff161580156112cc5750600d546001600160a01b038581169116145b80156112e15750600d54600160b01b900460ff165b80156112ee5750600a5481115b156113225761131061130b8461130684600b54611720565b611720565b6114a1565b478015611320576113204761161b565b505b505b801561139e57306000908152600160205260409020546113449082611735565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113959085815260200190565b60405180910390a35b6001600160a01b0384166000908152600160205260409020546113c19083611794565b6001600160a01b0385166000908152600160205260409020556114066113e78383611794565b6001600160a01b03851660009081526001602052604090205490611735565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114508585611794565b60405190815260200160405180910390a350505050565b6000818484111561148b5760405162461bcd60e51b81526004016105f89190611962565b5060006114988486611e36565b95945050505050565b600d805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114e9576114e9611b53565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190611e49565b8160018151811061157957611579611b53565b6001600160a01b039283166020918202929092010152600c5461159f9130911684610e3f565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906115d8908590600090869030904290600401611e66565b600060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b5050600d805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610669573d6000803e3d6000fd5b6000826000036116675750600061067e565b60006116738385611e1f565b9050826116808583611ed7565b146116d75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f8565b9392505050565b60006116d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117d6565b600081831161172f57826116d7565b50919050565b6000806117428385611b98565b9050838110156116d75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f8565b60006116d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611467565b600081836117f75760405162461bcd60e51b81526004016105f89190611962565b5060006114988486611ed7565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561184357611843611804565b604052919050565b6001600160a01b0381168114610e3c57600080fd5b6000602080838503121561187357600080fd5b823567ffffffffffffffff8082111561188b57600080fd5b818501915085601f83011261189f57600080fd5b8135818111156118b1576118b1611804565b8060051b91506118c284830161181a565b81815291830184019184810190888411156118dc57600080fd5b938501935b8385101561190657843592506118f68361184b565b82825293850193908501906118e1565b98975050505050505050565b60005b8381101561192d578181015183820152602001611915565b50506000910152565b6000815180845261194e816020860160208601611912565b601f01601f19169290920160200192915050565b6020815260006116d76020830184611936565b6000806040838503121561198857600080fd5b82356119938161184b565b946020939093013593505050565b600060208083850312156119b457600080fd5b823567ffffffffffffffff808211156119cc57600080fd5b818501915085601f8301126119e057600080fd5b8135818111156119f2576119f2611804565b611a04601f8201601f1916850161181a565b91508082528684828501011115611a1a57600080fd5b8084840185840137600090820190930192909252509392505050565b600080600060608486031215611a4b57600080fd5b8335611a568161184b565b92506020840135611a668161184b565b929592945050506040919091013590565b608081526000611a8a6080830187611936565b9415156020830152506040810192909252606090910152919050565b600060208284031215611ab857600080fd5b81356116d78161184b565b60008060408385031215611ad657600080fd5b50508035926020909101359150565b60008060408385031215611af857600080fd5b8235611b038161184b565b91506020830135611b138161184b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611b9157611b91611b69565b5060010190565b8082018082111561067e5761067e611b69565b60008251611bbd818460208701611912565b9190910192915050565b600181811c90821680611bdb57607f821691505b60208210810361172f57634e487b7160e01b600052602260045260246000fd5b601f821115611c4557600081815260208120601f850160051c81016020861015611c225750805b601f850160051c820191505b81811015611c4157828155600101611c2e565b5050505b505050565b815167ffffffffffffffff811115611c6457611c64611804565b611c7881611c728454611bc7565b84611bfb565b602080601f831160018114611cad5760008415611c955750858301515b600019600386901b1c1916600185901b178555611c41565b600085815260208120601f198616915b82811015611cdc57888601518255948401946001909101908401611cbd565b5085821015611cfa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000611d1d6040830185611936565b90508260208301529392505050565b600181815b80851115611d67578160001904821115611d4d57611d4d611b69565b80851615611d5a57918102915b93841c9390800290611d31565b509250929050565b600082611d7e5750600161067e565b81611d8b5750600061067e565b8160018114611da15760028114611dab57611dc7565b600191505061067e565b60ff841115611dbc57611dbc611b69565b50506001821b61067e565b5060208310610133831016604e8410600b8410161715611dea575081810a61067e565b611df48383611d2c565b8060001904821115611e0857611e08611b69565b029392505050565b60006116d760ff841683611d6f565b808202811582820484141761067e5761067e611b69565b8181038181111561067e5761067e611b69565b600060208284031215611e5b57600080fd5b81516116d78161184b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611eb65784516001600160a01b031683529383019391830191600101611e91565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611ef457634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122019ca07a3377f7300daff09ccde0f0bf521b9608e240ae0dacbb44f2f363862e364736f6c63430008110033