6080604052600480546001600160a01b031990811661dead17909155600580549091169055620000326012600a6200065a565b62000042906305f5e1006200071b565b6006819055600c80546001600160a01b03191673838fb01fe41a245150dbea66c3a7a493f35abe8e179055600e805461ffff60a01b1916600160a81b17905561138890620000929060016200071b565b6200009e9190620005ee565b600f55348015620000ae57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b1580156200015057600080fd5b505afa15801562000165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018b9190620005bc565b600380546001600160a01b0319166001600160a01b03928316179055600d546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b158015620001e557600080fd5b505afa158015620001fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002209190620005bc565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200026d57600080fd5b505af115801562000282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a89190620005bc565b600e80546001600160a01b0319166001600160a01b03929092169182179055620002d49060016200036d565b306000818152600860209081526040808320600d546001600160a01b031684528252808320600019905533808452600b83528184208054600160ff1991821681179092559585528285208054909616179094556006548484526007835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007b7565b6001600160a01b0382166000908152600a602052604090205460ff1615158115151415620003d65760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064015b60405180910390fd5b6001600160a01b0382166000908152600a60205260409020805460ff191682158015919091179091556200045557600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0384166001600160a01b03199091161790555050565b6009546001106200049b5760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401620003cd565b60005b600954811015620005b757826001600160a01b031660098281548110620004c957620004c9620007a1565b6000918252602090912001546001600160a01b03161415620005a25760098054620004f7906001906200073d565b815481106200050a576200050a620007a1565b600091825260209091200154600980546001600160a01b039092169183908110620005395762000539620007a1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060098054806200057b576200057b6200078b565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80620005ae8162000757565b9150506200049e565b505050565b600060208284031215620005cf57600080fd5b81516001600160a01b0381168114620005e757600080fd5b9392505050565b6000826200060c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200065257816000190482111562000636576200063662000775565b808516156200064457918102915b93841c939080029062000616565b509250929050565b6000620005e760ff841683600082620006765750600162000715565b81620006855750600062000715565b81600181146200069e5760028114620006a957620006c9565b600191505062000715565b60ff841115620006bd57620006bd62000775565b50506001821b62000715565b5060208310610133831016604e8410600b8410161715620006ee575081810a62000715565b620006fa838362000611565b806000190482111562000711576200071162000775565b0290505b92915050565b600081600019048311821515161562000738576200073862000775565b500290565b60008282101562000752576200075262000775565b500390565b60006000198214156200076e576200076e62000775565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61159580620007c76000396000f3fe6080604052600436106101dc5760003560e01c806387406b3311610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610560578063df20fd49146105a6578063e1d5584c146105c6578063f887ea40146105e657600080fd5b8063a9059cbb146104da578063b62496f5146104fa578063c99210f01461052a578063d00efb2f1461054a57600080fd5b80638da5cb5b116100d15780638da5cb5b1461046f57806395d89b411461048d5780639d9241ec14610367578063a8aa1b31146104ba57600080fd5b806387406b33146103e8578063893d20e8146104085780638a8c523c1461043a5780638cd4426d1461044f57600080fd5b8063364333f41161017a57806359b107b91161014957806359b107b9146103675780636ddd17131461037c57806370a082311461039d578063715018a6146103d357600080fd5b8063364333f4146102df5780633f4218e0146102f65780634ada218b14610326578063571ac8b01461034757600080fd5b806318160ddd116101b657806318160ddd1461027957806323b872dd1461028e5780632b112e49146102ae578063313ce567146102c357600080fd5b80630445b667146101e857806306fdde0314610211578063095ea7b31461024957600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fe600f5481565b6040519081526020015b60405180910390f35b34801561021d57600080fd5b5060408051808201909152600681526529a1a0a6ab1960d11b60208201525b60405161020891906113cf565b34801561025557600080fd5b50610269610264366004611351565b610606565b6040519015158152602001610208565b34801561028557600080fd5b506006546101fe565b34801561029a57600080fd5b506102696102a9366004611315565b610673565b3480156102ba57600080fd5b506101fe61073c565b3480156102cf57600080fd5b5060405160128152602001610208565b3480156102eb57600080fd5b506102f461078e565b005b34801561030257600080fd5b506102696103113660046112c7565b600b6020526000908152604090205460ff1681565b34801561033257600080fd5b50600e5461026990600160a01b900460ff1681565b34801561035357600080fd5b506102696103623660046112c7565b61080a565b34801561037357600080fd5b506101fe600181565b34801561038857600080fd5b50600e5461026990600160a81b900460ff1681565b3480156103a957600080fd5b506101fe6103b83660046112c7565b6001600160a01b031660009081526007602052604090205490565b3480156103df57600080fd5b506102f4610818565b3480156103f457600080fd5b506102f46104033660046112c7565b6108b7565b34801561041457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610208565b34801561044657600080fd5b506102f4610923565b34801561045b57600080fd5b5061026961046a366004611351565b610984565b34801561047b57600080fd5b506000546001600160a01b0316610422565b34801561049957600080fd5b506040805180820190915260048152635343414d60e01b602082015261023c565b3480156104c657600080fd5b50600e54610422906001600160a01b031681565b3480156104e657600080fd5b506102696104f5366004611351565b610a4d565b34801561050657600080fd5b506102696105153660046112c7565b600a6020526000908152604090205460ff1681565b34801561053657600080fd5b506102f46105453660046112c7565b610a5a565b34801561055657600080fd5b506101fe60025481565b34801561056c57600080fd5b506101fe61057b3660046112e2565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156105b257600080fd5b506102f46105c1366004611398565b610b27565b3480156105d257600080fd5b506104226105e13660046113b6565b610b91565b3480156105f257600080fd5b50600d54610422906001600160a01b031681565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106619086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461072757604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610702918490610bbb565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610732848484610bf5565b90505b9392505050565b6005546001600160a01b0316600090815260076020526040812054610789906004546001600160a01b03166000908152600760205260409020546107839060065490610e26565b90610e26565b905090565b6000546001600160a01b031633146107db5760405162461bcd60e51b8152602060048201819052602482015260008051602061154083398151915260448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015610807573d6000803e3d6000fd5b50565b600061066d82600019610606565b6000546001600160a01b031633146108605760405162461bcd60e51b8152602060048201819052602482015260008051602061154083398151915260448201526064016107d2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b031633146108ff5760405162461bcd60e51b8152602060048201819052602482015260008051602061154083398151915260448201526064016107d2565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b0316331461096b5760405162461bcd60e51b8152602060048201819052602482015260008051602061154083398151915260448201526064016107d2565b600e805460ff60a01b1916600160a01b17905543600255565b600080546001600160a01b031633146109cd5760405162461bcd60e51b8152602060048201819052602482015260008051602061154083398151915260448201526064016107d2565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610735919061137b565b6000610735338484610bf5565b6000546001600160a01b03163314610aa25760405162461bcd60e51b8152602060048201819052602482015260008051602061154083398151915260448201526064016107d2565b6001600160a01b038116610af85760405162461bcd60e51b815260206004820152601760248201527f7a65726f20616464726573732076616c69646174696f6e00000000000000000060448201526064016107d2565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b8152602060048201819052602482015260008051602061154083398151915260448201526064016107d2565b600e8054921515600160a81b0260ff60a81b1990931692909217909155600f55565b60098181548110610ba157600080fd5b6000918252602090912001546001600160a01b0316905081565b60008184841115610bdf5760405162461bcd60e51b81526004016107d291906113cf565b506000610bec84866114ee565b95945050505050565b60105460009060ff1615610c1557610c0e848484610e68565b9050610735565b6001600160a01b0384166000908152600b602052604090205460ff16158015610c5757506001600160a01b0383166000908152600b602052604090205460ff16155b15610cb557600e54600160a01b900460ff16610cb55760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e2079657400000000000000000000000060448201526064016107d2565b610cbd610f57565b15610cca57610cca610faf565b6001600160a01b0384166000908152600a6020526040902054829060ff1615610d1f576001600160a01b0384166000908152600b602052604090205460ff16610d1a57610d1785846110c1565b90505b610d6d565b6001600160a01b0384166000908152600a602052604090205460ff1615610d6d576001600160a01b0385166000908152600b602052604090205460ff16610d6d57610d6a85846110c1565b90505b6001600160a01b038516600090815260076020526040902054610d909084610e26565b6001600160a01b038087166000908152600760205260408082209390935590861681522054610dbf9082611162565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e139085815260200190565b60405180910390a3506001949350505050565b600061073583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bbb565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386166000908152600790915291822054610ec2918490610bbb565b6001600160a01b038086166000908152600760205260408082209390935590851681522054610ef19083611162565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f459086815260200190565b60405180910390a35060019392505050565b336000908152600a602052604081205460ff16158015610f7a575060105460ff16155b8015610f8f5750600e54600160a81b900460ff165b8015610789575050600f5430600090815260076020526040902054101590565b6010805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610ff157610ff161151b565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106110225761102261151b565b6001600160a01b03928316602091820292909201810191909152600d543060009081526007909252604080832054600c54915163791ac94760e01b81529285169463791ac947946110829492939092889291909116904290600401611424565b600060405180830381600087803b15801561109c57600080fd5b505af11580156110b0573d6000803e3d6000fd5b50506010805460ff19169055505050565b6000806110da60646110d48560016111c1565b90611240565b306000908152600760205260409020549091506110f79082611162565b30600081815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111489085815260200190565b60405180910390a361115a8382610e26565b949350505050565b60008061116f8385611495565b9050838110156107355760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107d2565b6000826111d05750600061066d565b60006111dc83856114cf565b9050826111e985836114ad565b146107355760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d2565b600061073583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506000818361129e5760405162461bcd60e51b81526004016107d291906113cf565b506000610bec84866114ad565b80356001600160a01b03811681146112c257600080fd5b919050565b6000602082840312156112d957600080fd5b610735826112ab565b600080604083850312156112f557600080fd5b6112fe836112ab565b915061130c602084016112ab565b90509250929050565b60008060006060848603121561132a57600080fd5b611333846112ab565b9250611341602085016112ab565b9150604084013590509250925092565b6000806040838503121561136457600080fd5b61136d836112ab565b946020939093013593505050565b60006020828403121561138d57600080fd5b815161073581611531565b600080604083850312156113ab57600080fd5b823561136d81611531565b6000602082840312156113c857600080fd5b5035919050565b600060208083528351808285015260005b818110156113fc578581018301518582016040015282016113e0565b8181111561140e576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114745784516001600160a01b03168352938301939183019160010161144f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156114a8576114a8611505565b500190565b6000826114ca57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156114e9576114e9611505565b500290565b60008282101561150057611500611505565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b801515811461080757600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122084f4eb71a9dd99e26bc37913c92ae9e0937e201323771fb94cf9b43ee3542f7d64736f6c63430008070033