0x6080604052600436106102b25760003560e01c806382eefb4311610175578063c5d24189116100dc578063da00097d11610095578063f0cd1dac1161006f578063f0cd1dac14610820578063f2fde38b14610836578063f872858a14610856578063fb1eb14b1461087757600080fd5b8063da00097d146107a4578063dc44b6a0146107c4578063dd62ed3e146107da57600080fd5b8063c5d24189146106fc578063c816841b14610712578063c860795214610732578063c867d60b14610748578063cab0347114610778578063d187f4171461078e57600080fd5b8063a457c2d71161012e578063a457c2d714610650578063a5ece94114610670578063a83f53a714610690578063a9059cbb146106a6578063b2bdfa7b146106c6578063c469b6dd146106e657600080fd5b806382eefb43146105ab57806388790a68146105c15780638b42507f146105d75780638da5cb5b1461060757806395d89b4114610625578063a08e671f1461063a57600080fd5b80634a74bb0211610219578063715018a6116101d2578063715018a614610535578063751039fc1461054c57806375cd6818146105615780637abdc1ca146105695780637d1db4a51461057f578063807c2d9c1461059557600080fd5b80634a74bb02146104715780635342acb414610490578063557ed1ba146104c057806357a5802f146104d357806361a23c69146104e957806370a08231146104ff57600080fd5b806323b872dd1161026b57806323b872dd146103aa57806327c8f835146103ca5780632b112e49146103ea578063313ce567146103ff57806339509351146104215780633ecad2711461044157600080fd5b806306fdde03146102be578063095ea7b3146102e95780631694505e1461031957806316f2f1a81461035157806318160ddd146103755780631c75f0851461038a57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d361088d565b6040516102e09190611d4b565b60405180910390f35b3480156102f557600080fd5b50610309610304366004611db1565b61091f565b60405190151581526020016102e0565b34801561032557600080fd5b50601c54610339906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561035d57600080fd5b5061036760045481565b6040519081526020016102e0565b34801561038157600080fd5b50602054610367565b34801561039657600080fd5b50600554610339906001600160a01b031681565b3480156103b657600080fd5b506103096103c5366004611ddd565b610936565b3480156103d657600080fd5b50600754610339906001600160a01b031681565b3480156103f657600080fd5b506103676109a1565b34801561040b57600080fd5b5060195460405160ff90911681526020016102e0565b34801561042d57600080fd5b5061030961043c366004611db1565b6109ce565b34801561044d57600080fd5b5061030961045c366004611e1e565b60166020526000908152604090205460ff1681565b34801561047d57600080fd5b5060245461030990610100900460ff1681565b34801561049c57600080fd5b506103096104ab366004611e1e565b60136020526000908152604090205460ff1681565b3480156104cc57600080fd5b5042610367565b3480156104df57600080fd5b50610367600e5481565b3480156104f557600080fd5b50610367600f5481565b34801561050b57600080fd5b5061036761051a366004611e1e565b6001600160a01b03166000908152601a602052604090205490565b34801561054157600080fd5b5061054a610a04565b005b34801561055857600080fd5b5061054a610a81565b61054a610aef565b34801561057557600080fd5b50610367600d5481565b34801561058b57600080fd5b5061036760225481565b3480156105a157600080fd5b5061036760215481565b3480156105b757600080fd5b5061036760095481565b3480156105cd57600080fd5b50610367600a5481565b3480156105e357600080fd5b506103096105f2366004611e1e565b60156020526000908152604090205460ff1681565b34801561061357600080fd5b506000546001600160a01b0316610339565b34801561063157600080fd5b506102d3610dc2565b34801561064657600080fd5b5061036760115481565b34801561065c57600080fd5b5061030961066b366004611db1565b610dd1565b34801561067c57600080fd5b50600654610339906001600160a01b031681565b34801561069c57600080fd5b5061036760105481565b3480156106b257600080fd5b506103096106c1366004611db1565b610e20565b3480156106d257600080fd5b50600054610339906001600160a01b031681565b3480156106f257600080fd5b5061036760035481565b34801561070857600080fd5b5061036760025481565b34801561071e57600080fd5b50601d54610339906001600160a01b031681565b34801561073e57600080fd5b50610367600b5481565b34801561075457600080fd5b50610309610763366004611e1e565b60146020526000908152604090205460ff1681565b34801561078457600080fd5b50610367600c5481565b34801561079a57600080fd5b50610367601f5481565b3480156107b057600080fd5b506024546103099062010000900460ff1681565b3480156107d057600080fd5b5061036760015481565b3480156107e657600080fd5b506103676107f5366004611e3b565b6001600160a01b039182166000908152601b6020908152604080832093909416825291909152205490565b34801561082c57600080fd5b5061036760085481565b34801561084257600080fd5b5061054a610851366004611e1e565b610e2d565b34801561086257600080fd5b50602454610309906301000000900460ff1681565b34801561088357600080fd5b50610367601e5481565b60606017805461089c90611e74565b80601f01602080910402602001604051908101604052809291908181526020018280546108c890611e74565b80156109155780601f106108ea57610100808354040283529160200191610915565b820191906000526020600020905b8154815290600101906020018083116108f857829003601f168201915b5050505050905090565b600061092c338484610f17565b5060015b92915050565b600061094384848461103b565b50610996843361099185604051806060016040528060288152602001612189602891396001600160a01b038a166000908152601b60209081526040808320338452909152902054919061149e565b610f17565b5060015b9392505050565b6007546001600160a01b03166000908152601a60205260408120546109c990602054906114d8565b905090565b336000818152601b602090815260408083206001600160a01b0387168452909152812054909161092c918590610991908661151a565b6000546001600160a01b03163314610a375760405162461bcd60e51b8152600401610a2e90611eae565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610aab5760405162461bcd60e51b8152600401610a2e90611eae565b601954610abc9060ff16600a611fdd565b602054610ac99190611fec565b602255601954610add9060ff16600a611fdd565b602054610aea9190611fec565b602155565b6000546001600160a01b03163314610b195760405162461bcd60e51b8152600401610a2e90611eae565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b949190612003565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190612003565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c769190612003565b601d80546001600160a01b039283166001600160a01b031991821681178355601c805486861693168317815560125460208054306000818152601b808552604080832099835298855288822093909355868152918352868220938916808352938352868220600019905587548916825260168352868220805460ff19908116600190811790925598548a1683526014909352959020805490961617909455549093169063f305d719903490610d40816001600160a01b03166000908152601a602052604090205490565b600080610d556000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610d7796959493929190612020565b60606040518083038185885af1158015610d95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dba919061205b565b505050505050565b60606018805461089c90611e74565b600061092c3384610991856040518060600160405280602581526020016121d160259139336000908152601b602090815260408083206001600160a01b038d168452909152902054919061149e565b600061099633848461103b565b6000546001600160a01b03163314610e575760405162461bcd60e51b8152600401610a2e90611eae565b6001600160a01b038116610ebc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a2e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a2e565b6001600160a01b038216610fda5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a2e565b6001600160a01b038381166000818152601b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166110a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a2e565b6001600160a01b0383166111035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a2e565b600082116111655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a2e565b6001600160a01b03841660009081526013602052604090205460ff16806111a457506001600160a01b03831660009081526013602052604090205460ff165b156111bb576111b4848484611579565b905061099a565b60245460ff16156111d1576111b4848484611579565b6001600160a01b03841660009081526015602052604090205460ff1615801561121357506001600160a01b03831660009081526015602052604090205460ff16155b1561127b5760225482111561127b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a2e565b306000908152601a6020526040902054602354811080159081906112a2575060245460ff16155b80156112c757506001600160a01b03861660009081526016602052604090205460ff16155b80156112da5750602454610100900460ff165b156112ff5760245462010000900460ff16156112f65760235491505b6112ff8261164d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152601a909152919091205461135191869061149e565b6001600160a01b0387166000908152601a6020908152604080832093909355601390529081205460ff168061139e57506001600160a01b03861660009081526013602052604090205460ff165b6113b2576113ad87878761177a565b6113b4565b845b6024549091506301000000900460ff1680156113e957506001600160a01b03861660009081526014602052604090205460ff16155b156114255760215461141a82611414896001600160a01b03166000908152601a602052604090205490565b9061151a565b111561142557600080fd5b6001600160a01b0386166000908152601a6020526040902054611448908261151a565b6001600160a01b038088166000818152601a602052604090819020939093559151908916906000805160206121b18339815191529061148a9085815260200190565b60405180910390a36001935050505061099a565b600081848411156114c25760405162461bcd60e51b8152600401610a2e9190611d4b565b5060006114cf8486612089565b95945050505050565b600061099a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061149e565b600080611527838561209c565b90508381101561099a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a2e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601a909152918220546115ca91849061149e565b6001600160a01b038086166000908152601a602052604080822093909355908516815220546115f9908361151a565b6001600160a01b038085166000818152601a602052604090819020939093559151908616906000805160206121b18339815191529061163b9086815260200190565b60405180910390a35060019392505050565b6024805460ff19166001179055601154600e5460009161167d916002916116779182908790611953565b906119d5565b9050600061168b83836114d8565b905061169681611a17565b600e5447906000906116b6906116ad9060026119d5565b601154906114d8565b905060006116d8600261167784611677600e548861195390919063ffffffff16565b905060006116f5836116776010548761195390919063ffffffff16565b9050600061170d8261170787866114d8565b906114d8565b9050801561172b5760065461172b906001600160a01b031682611baa565b811561174757600554611747906001600160a01b031683611baa565b6000831180156117575750600087115b15611766576117668784611be5565b50506024805460ff19169055505050505050565b6001600160a01b0383166000908152601660205260408120548190819060ff161561180c576117c560646116776117be6004546008546114d890919063ffffffff16565b8790611953565b915060006004541180156117dc5750601f54601e54105b15611807576117fb60646116776004548761195390919063ffffffff16565b90506118078682611c87565b6118cd565b6001600160a01b03851660009081526016602052604090205460ff16156118cd576012546001600160a01b03166000908152601a6020526040812054905080600e600082825461185c9190612089565b925050819055506118896064611677611882600d546009546114d890919063ffffffff16565b8890611953565b92506000600d541180156118a05750601f54601e54105b156118cb576118bf6064611677600d548861195390919063ffffffff16565b91506118cb8783611c87565b505b811561193557306000908152601a60205260409020546118ed908361151a565b306000818152601a6020526040908190209290925590516001600160a01b038816906000805160206121b18339815191529061192c9086815260200190565b60405180910390a35b611949611942838361151a565b85906114d8565b9695505050505050565b60008260000361196557506000610930565b60006119718385611fec565b90508261197e85836120af565b1461099a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a2e565b600061099a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d1d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a4c57611a4c6120d1565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac99190612003565b81600181518110611adc57611adc6120d1565b6001600160a01b039283166020918202929092010152601c54611b029130911684610f17565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b3b90859060009086903090429060040161212b565b600060405180830381600087803b158015611b5557600080fd5b505af1158015611b69573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611b9e929190612167565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611be0573d6000803e3d6000fd5b505050565b601c54611bfd9030906001600160a01b031684610f17565b601c5460125460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611c3d9230928992600092839216904290600401612020565b60606040518083038185885af1158015611c5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c80919061205b565b5050505050565b601f54601e5410611c96575050565b6007546001600160a01b03166000908152601a6020526040902054611cbb908261151a565b6007546001600160a01b03166000908152601a6020526040902055601e54611ce3908261151a565b601e556007546040518281526001600160a01b03918216918416906000805160206121b18339815191529060200160405180910390a35050565b60008183611d3e5760405162461bcd60e51b8152600401610a2e9190611d4b565b5060006114cf84866120af565b600060208083528351808285015260005b81811015611d7857858101830151858201604001528201611d5c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611dae57600080fd5b50565b60008060408385031215611dc457600080fd5b8235611dcf81611d99565b946020939093013593505050565b600080600060608486031215611df257600080fd5b8335611dfd81611d99565b92506020840135611e0d81611d99565b929592945050506040919091013590565b600060208284031215611e3057600080fd5b813561099a81611d99565b60008060408385031215611e4e57600080fd5b8235611e5981611d99565b91506020830135611e6981611d99565b809150509250929050565b600181811c90821680611e8857607f821691505b602082108103611ea857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611f34578160001904821115611f1a57611f1a611ee3565b80851615611f2757918102915b93841c9390800290611efe565b509250929050565b600082611f4b57506001610930565b81611f5857506000610930565b8160018114611f6e5760028114611f7857611f94565b6001915050610930565b60ff841115611f8957611f89611ee3565b50506001821b610930565b5060208310610133831016604e8410600b8410161715611fb7575081810a610930565b611fc18383611ef9565b8060001904821115611fd557611fd5611ee3565b029392505050565b600061099a60ff841683611f3c565b808202811582820484141761093057610930611ee3565b60006020828403121561201557600080fd5b815161099a81611d99565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561207057600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561093057610930611ee3565b8082018082111561093057610930611ee3565b6000826120cc57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156121205781516001600160a01b0316875295820195908201906001016120fb565b509495945050505050565b85815284602082015260a06040820152600061214a60a08301866120e7565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061218060408301846120e7565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bca015e83d0e241e35d4d863e8a3eb46511524e0e28cddcfecf63417f6c1bfb364736f6c63430008130033
0x608060405260006001818155600281905560038290556004829055600780546001600160a01b03191661dead17905560088190556009819055600a829055600b819055600c829055600d829055600e829055600f819055601082905560115560235560248054630100010063ffffff00199091161790553480156200008357600080fd5b5060405162002c5d38038062002c5d833981016040819052620000a69162000655565b600580546001600160a01b0319166001600160a01b0384161790556017620000cf8882620007aa565b506018620000de8782620007aa565b506019805460ff191660ff8716179055600080546001600160a01b0319166001600160a01b0385161790556003546002546001546200012b9291620001249190620003eb565b90620003eb565b600855600c54600b54600a54620001499291620001249190620003eb565b600955601054600f54600e54620001679291620001249190620003eb565b601155600680546001600160a01b0319166001600160a01b038316179055601954620001989060ff16600a62000989565b620001a490856200099a565b602055601954620001ba9060ff16600a62000989565b620001d46064620001cd8760056200045b565b90620004e5565b620001e091906200099a565b602155601954620001f69060ff16600a62000989565b620002096064620001cd8760056200045b565b6200021591906200099a565b602255600654601280546001600160a01b0319166001600160a01b039092169190911790556019546200024d9060ff16600a62000989565b620002606064620001cd8760056200045b565b6200026c91906200099a565b601f55601954620002829060ff16600a62000989565b6200028f9060016200099a565b6023556001600160a01b0383811660008181526014602090815260408083208054600160ff1991821681179092556005805488168652838620805483168417905560068054891687528487208054841685179055600780548a168852858820805485168617905530808952868920805486168717905589895260158852868920805486168717905583548b168952868920805486168717905582548b168952868920805486168717905590548a16885285882080548516861790558088528588208054851686179055888852601387528588208054851686179055915489168752848720805484168517905554909716855282852080548216831790559584528184208054909616179094558054838352601a82528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050505062000a22565b600080620003fa8385620009b4565b905083811015620004525760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b6000826000036200046f5750600062000455565b60006200047d83856200099a565b9050826200048c8583620009ca565b14620004525760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000449565b60006200045283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200052f60201b60201c565b60008183620005535760405162461bcd60e51b8152600401620004499190620009ed565b506000620005628486620009ca565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200059e57818101518382015260200162000584565b50506000910152565b600082601f830112620005b957600080fd5b81516001600160401b0380821115620005d657620005d66200056b565b604051601f8301601f19908116603f011681019082821181831017156200060157620006016200056b565b816040528381528660208588010111156200061b57600080fd5b6200062e84602083016020890162000581565b9695505050505050565b80516001600160a01b03811681146200065057600080fd5b919050565b600080600080600080600060e0888a0312156200067157600080fd5b87516001600160401b03808211156200068957600080fd5b620006978b838c01620005a7565b985060208a0151915080821115620006ae57600080fd5b50620006bd8a828b01620005a7565b965050604088015160ff81168114620006d557600080fd5b60608901519095509350620006ed6080890162000638565b9250620006fd60a0890162000638565b91506200070d60c0890162000638565b905092959891949750929550565b600181811c908216806200073057607f821691505b6020821081036200075157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007a557600081815260208120601f850160051c81016020861015620007805750805b601f850160051c820191505b81811015620007a1578281556001016200078c565b5050505b505050565b81516001600160401b03811115620007c657620007c66200056b565b620007de81620007d784546200071b565b8462000757565b602080601f831160018114620008165760008415620007fd5750858301515b600019600386901b1c1916600185901b178555620007a1565b600085815260208120601f198616915b82811015620008475788860151825594840194600190910190840162000826565b5085821015620008665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008cd578160001904821115620008b157620008b162000876565b80851615620008bf57918102915b93841c939080029062000891565b509250929050565b600082620008e65750600162000455565b81620008f55750600062000455565b81600181146200090e5760028114620009195762000939565b600191505062000455565b60ff8411156200092d576200092d62000876565b50506001821b62000455565b5060208310610133831016604e8410600b84101617156200095e575081810a62000455565b6200096a83836200088c565b806000190482111562000981576200098162000876565b029392505050565b60006200045260ff841683620008d5565b808202811582820484141762000455576200045562000876565b8082018082111562000455576200045562000876565b600082620009e857634e487b7160e01b600052601260045260246000fd5b500490565b602081526000825180602084015262000a0e81604085016020870162000581565b601f01601f19169190910160400192915050565b61222b8062000a326000396000f3fe6080604052600436106102b25760003560e01c806382eefb4311610175578063c5d24189116100dc578063da00097d11610095578063f0cd1dac1161006f578063f0cd1dac14610820578063f2fde38b14610836578063f872858a14610856578063fb1eb14b1461087757600080fd5b8063da00097d146107a4578063dc44b6a0146107c4578063dd62ed3e146107da57600080fd5b8063c5d24189146106fc578063c816841b14610712578063c860795214610732578063c867d60b14610748578063cab0347114610778578063d187f4171461078e57600080fd5b8063a457c2d71161012e578063a457c2d714610650578063a5ece94114610670578063a83f53a714610690578063a9059cbb146106a6578063b2bdfa7b146106c6578063c469b6dd146106e657600080fd5b806382eefb43146105ab57806388790a68146105c15780638b42507f146105d75780638da5cb5b1461060757806395d89b4114610625578063a08e671f1461063a57600080fd5b80634a74bb0211610219578063715018a6116101d2578063715018a614610535578063751039fc1461054c57806375cd6818146105615780637abdc1ca146105695780637d1db4a51461057f578063807c2d9c1461059557600080fd5b80634a74bb02146104715780635342acb414610490578063557ed1ba146104c057806357a5802f146104d357806361a23c69146104e957806370a08231146104ff57600080fd5b806323b872dd1161026b57806323b872dd146103aa57806327c8f835146103ca5780632b112e49146103ea578063313ce567146103ff57806339509351146104215780633ecad2711461044157600080fd5b806306fdde03146102be578063095ea7b3146102e95780631694505e1461031957806316f2f1a81461035157806318160ddd146103755780631c75f0851461038a57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d361088d565b6040516102e09190611d4b565b60405180910390f35b3480156102f557600080fd5b50610309610304366004611db1565b61091f565b60405190151581526020016102e0565b34801561032557600080fd5b50601c54610339906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561035d57600080fd5b5061036760045481565b6040519081526020016102e0565b34801561038157600080fd5b50602054610367565b34801561039657600080fd5b50600554610339906001600160a01b031681565b3480156103b657600080fd5b506103096103c5366004611ddd565b610936565b3480156103d657600080fd5b50600754610339906001600160a01b031681565b3480156103f657600080fd5b506103676109a1565b34801561040b57600080fd5b5060195460405160ff90911681526020016102e0565b34801561042d57600080fd5b5061030961043c366004611db1565b6109ce565b34801561044d57600080fd5b5061030961045c366004611e1e565b60166020526000908152604090205460ff1681565b34801561047d57600080fd5b5060245461030990610100900460ff1681565b34801561049c57600080fd5b506103096104ab366004611e1e565b60136020526000908152604090205460ff1681565b3480156104cc57600080fd5b5042610367565b3480156104df57600080fd5b50610367600e5481565b3480156104f557600080fd5b50610367600f5481565b34801561050b57600080fd5b5061036761051a366004611e1e565b6001600160a01b03166000908152601a602052604090205490565b34801561054157600080fd5b5061054a610a04565b005b34801561055857600080fd5b5061054a610a81565b61054a610aef565b34801561057557600080fd5b50610367600d5481565b34801561058b57600080fd5b5061036760225481565b3480156105a157600080fd5b5061036760215481565b3480156105b757600080fd5b5061036760095481565b3480156105cd57600080fd5b50610367600a5481565b3480156105e357600080fd5b506103096105f2366004611e1e565b60156020526000908152604090205460ff1681565b34801561061357600080fd5b506000546001600160a01b0316610339565b34801561063157600080fd5b506102d3610dc2565b34801561064657600080fd5b5061036760115481565b34801561065c57600080fd5b5061030961066b366004611db1565b610dd1565b34801561067c57600080fd5b50600654610339906001600160a01b031681565b34801561069c57600080fd5b5061036760105481565b3480156106b257600080fd5b506103096106c1366004611db1565b610e20565b3480156106d257600080fd5b50600054610339906001600160a01b031681565b3480156106f257600080fd5b5061036760035481565b34801561070857600080fd5b5061036760025481565b34801561071e57600080fd5b50601d54610339906001600160a01b031681565b34801561073e57600080fd5b50610367600b5481565b34801561075457600080fd5b50610309610763366004611e1e565b60146020526000908152604090205460ff1681565b34801561078457600080fd5b50610367600c5481565b34801561079a57600080fd5b50610367601f5481565b3480156107b057600080fd5b506024546103099062010000900460ff1681565b3480156107d057600080fd5b5061036760015481565b3480156107e657600080fd5b506103676107f5366004611e3b565b6001600160a01b039182166000908152601b6020908152604080832093909416825291909152205490565b34801561082c57600080fd5b5061036760085481565b34801561084257600080fd5b5061054a610851366004611e1e565b610e2d565b34801561086257600080fd5b50602454610309906301000000900460ff1681565b34801561088357600080fd5b50610367601e5481565b60606017805461089c90611e74565b80601f01602080910402602001604051908101604052809291908181526020018280546108c890611e74565b80156109155780601f106108ea57610100808354040283529160200191610915565b820191906000526020600020905b8154815290600101906020018083116108f857829003601f168201915b5050505050905090565b600061092c338484610f17565b5060015b92915050565b600061094384848461103b565b50610996843361099185604051806060016040528060288152602001612189602891396001600160a01b038a166000908152601b60209081526040808320338452909152902054919061149e565b610f17565b5060015b9392505050565b6007546001600160a01b03166000908152601a60205260408120546109c990602054906114d8565b905090565b336000818152601b602090815260408083206001600160a01b0387168452909152812054909161092c918590610991908661151a565b6000546001600160a01b03163314610a375760405162461bcd60e51b8152600401610a2e90611eae565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610aab5760405162461bcd60e51b8152600401610a2e90611eae565b601954610abc9060ff16600a611fdd565b602054610ac99190611fec565b602255601954610add9060ff16600a611fdd565b602054610aea9190611fec565b602155565b6000546001600160a01b03163314610b195760405162461bcd60e51b8152600401610a2e90611eae565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b949190612003565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190612003565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c769190612003565b601d80546001600160a01b039283166001600160a01b031991821681178355601c805486861693168317815560125460208054306000818152601b808552604080832099835298855288822093909355868152918352868220938916808352938352868220600019905587548916825260168352868220805460ff19908116600190811790925598548a1683526014909352959020805490961617909455549093169063f305d719903490610d40816001600160a01b03166000908152601a602052604090205490565b600080610d556000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610d7796959493929190612020565b60606040518083038185885af1158015610d95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dba919061205b565b505050505050565b60606018805461089c90611e74565b600061092c3384610991856040518060600160405280602581526020016121d160259139336000908152601b602090815260408083206001600160a01b038d168452909152902054919061149e565b600061099633848461103b565b6000546001600160a01b03163314610e575760405162461bcd60e51b8152600401610a2e90611eae565b6001600160a01b038116610ebc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a2e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a2e565b6001600160a01b038216610fda5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a2e565b6001600160a01b038381166000818152601b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166110a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a2e565b6001600160a01b0383166111035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a2e565b600082116111655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a2e565b6001600160a01b03841660009081526013602052604090205460ff16806111a457506001600160a01b03831660009081526013602052604090205460ff165b156111bb576111b4848484611579565b905061099a565b60245460ff16156111d1576111b4848484611579565b6001600160a01b03841660009081526015602052604090205460ff1615801561121357506001600160a01b03831660009081526015602052604090205460ff16155b1561127b5760225482111561127b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a2e565b306000908152601a6020526040902054602354811080159081906112a2575060245460ff16155b80156112c757506001600160a01b03861660009081526016602052604090205460ff16155b80156112da5750602454610100900460ff165b156112ff5760245462010000900460ff16156112f65760235491505b6112ff8261164d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152601a909152919091205461135191869061149e565b6001600160a01b0387166000908152601a6020908152604080832093909355601390529081205460ff168061139e57506001600160a01b03861660009081526013602052604090205460ff165b6113b2576113ad87878761177a565b6113b4565b845b6024549091506301000000900460ff1680156113e957506001600160a01b03861660009081526014602052604090205460ff16155b156114255760215461141a82611414896001600160a01b03166000908152601a602052604090205490565b9061151a565b111561142557600080fd5b6001600160a01b0386166000908152601a6020526040902054611448908261151a565b6001600160a01b038088166000818152601a602052604090819020939093559151908916906000805160206121b18339815191529061148a9085815260200190565b60405180910390a36001935050505061099a565b600081848411156114c25760405162461bcd60e51b8152600401610a2e9190611d4b565b5060006114cf8486612089565b95945050505050565b600061099a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061149e565b600080611527838561209c565b90508381101561099a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a2e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601a909152918220546115ca91849061149e565b6001600160a01b038086166000908152601a602052604080822093909355908516815220546115f9908361151a565b6001600160a01b038085166000818152601a602052604090819020939093559151908616906000805160206121b18339815191529061163b9086815260200190565b60405180910390a35060019392505050565b6024805460ff19166001179055601154600e5460009161167d916002916116779182908790611953565b906119d5565b9050600061168b83836114d8565b905061169681611a17565b600e5447906000906116b6906116ad9060026119d5565b601154906114d8565b905060006116d8600261167784611677600e548861195390919063ffffffff16565b905060006116f5836116776010548761195390919063ffffffff16565b9050600061170d8261170787866114d8565b906114d8565b9050801561172b5760065461172b906001600160a01b031682611baa565b811561174757600554611747906001600160a01b031683611baa565b6000831180156117575750600087115b15611766576117668784611be5565b50506024805460ff19169055505050505050565b6001600160a01b0383166000908152601660205260408120548190819060ff161561180c576117c560646116776117be6004546008546114d890919063ffffffff16565b8790611953565b915060006004541180156117dc5750601f54601e54105b15611807576117fb60646116776004548761195390919063ffffffff16565b90506118078682611c87565b6118cd565b6001600160a01b03851660009081526016602052604090205460ff16156118cd576012546001600160a01b03166000908152601a6020526040812054905080600e600082825461185c9190612089565b925050819055506118896064611677611882600d546009546114d890919063ffffffff16565b8890611953565b92506000600d541180156118a05750601f54601e54105b156118cb576118bf6064611677600d548861195390919063ffffffff16565b91506118cb8783611c87565b505b811561193557306000908152601a60205260409020546118ed908361151a565b306000818152601a6020526040908190209290925590516001600160a01b038816906000805160206121b18339815191529061192c9086815260200190565b60405180910390a35b611949611942838361151a565b85906114d8565b9695505050505050565b60008260000361196557506000610930565b60006119718385611fec565b90508261197e85836120af565b1461099a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a2e565b600061099a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d1d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a4c57611a4c6120d1565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac99190612003565b81600181518110611adc57611adc6120d1565b6001600160a01b039283166020918202929092010152601c54611b029130911684610f17565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b3b90859060009086903090429060040161212b565b600060405180830381600087803b158015611b5557600080fd5b505af1158015611b69573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611b9e929190612167565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611be0573d6000803e3d6000fd5b505050565b601c54611bfd9030906001600160a01b031684610f17565b601c5460125460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611c3d9230928992600092839216904290600401612020565b60606040518083038185885af1158015611c5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c80919061205b565b5050505050565b601f54601e5410611c96575050565b6007546001600160a01b03166000908152601a6020526040902054611cbb908261151a565b6007546001600160a01b03166000908152601a6020526040902055601e54611ce3908261151a565b601e556007546040518281526001600160a01b03918216918416906000805160206121b18339815191529060200160405180910390a35050565b60008183611d3e5760405162461bcd60e51b8152600401610a2e9190611d4b565b5060006114cf84866120af565b600060208083528351808285015260005b81811015611d7857858101830151858201604001528201611d5c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611dae57600080fd5b50565b60008060408385031215611dc457600080fd5b8235611dcf81611d99565b946020939093013593505050565b600080600060608486031215611df257600080fd5b8335611dfd81611d99565b92506020840135611e0d81611d99565b929592945050506040919091013590565b600060208284031215611e3057600080fd5b813561099a81611d99565b60008060408385031215611e4e57600080fd5b8235611e5981611d99565b91506020830135611e6981611d99565b809150509250929050565b600181811c90821680611e8857607f821691505b602082108103611ea857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611f34578160001904821115611f1a57611f1a611ee3565b80851615611f2757918102915b93841c9390800290611efe565b509250929050565b600082611f4b57506001610930565b81611f5857506000610930565b8160018114611f6e5760028114611f7857611f94565b6001915050610930565b60ff841115611f8957611f89611ee3565b50506001821b610930565b5060208310610133831016604e8410600b8410161715611fb7575081810a610930565b611fc18383611ef9565b8060001904821115611fd557611fd5611ee3565b029392505050565b600061099a60ff841683611f3c565b808202811582820484141761093057610930611ee3565b60006020828403121561201557600080fd5b815161099a81611d99565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561207057600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561093057610930611ee3565b8082018082111561093057610930611ee3565b6000826120cc57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156121205781516001600160a01b0316875295820195908201906001016120fb565b509495945050505050565b85815284602082015260a06040820152600061214a60a08301866120e7565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061218060408301846120e7565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bca015e83d0e241e35d4d863e8a3eb46511524e0e28cddcfecf63417f6c1bfb364736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000e47ebe1e1b54c3fe8034542b7abc5a773f4a48e2000000000000000000000000e47ebe1e1b54c3fe8034542b7abc5a773f4a48e200000000000000000000000093a6cbd69ad2ce5b9bb1df518113c1cce1e7c8a2000000000000000000000000000000000000000000000000000000000000000c436f627261204b696c6c657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005434f425241000000000000000000000000000000000000000000000000000000