60806040525f805461ffff60a81b1916600160a81b179055600180546001600160a01b03166501194000007d60a41b1790556002805463ffffffff19166064179055610708600455620000556012600a62000511565b6200006490620f424062000528565b600655620000756012600a62000511565b6200008490620f424062000528565b600755620000956012600a62000511565b620000a49062030d4062000528565b600855600c805461ffff60a01b1916600160a01b179055348015620000c7575f80fd5b506040516200215a3803806200215a833981016040819052620000ea9162000572565b620000f533620003b3565b600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801562000159573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017f919062000656565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f1919062000656565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200023c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000262919062000656565b600c80546001600160a01b03199081166001600160a01b039384161790915560018054909116918516919091178155305f90815260036020526040808220805460ff199081168517909155338352912080549091169091179055620002ca6012600a62000511565b620002da906305f5e10062000528565b335f908152600960205260408120919091555b82518110156200035757600160035f85848151811062000311576200031162000672565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806200034e8162000686565b915050620002ed565b50335f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003896012600a62000511565b62000399906305f5e10062000528565b60405190815260200160405180910390a3505050620006a1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200045657815f19048211156200043a576200043a62000402565b808516156200044857918102915b93841c93908002906200041b565b509250929050565b5f826200046e575060016200050b565b816200047c57505f6200050b565b8160018114620004955760028114620004a057620004c0565b60019150506200050b565b60ff841115620004b457620004b462000402565b50506001821b6200050b565b5060208310610133831016604e8410600b8410161715620004e5575081810a6200050b565b620004f1838362000416565b805f190482111562000507576200050762000402565b0290505b92915050565b5f6200052160ff8416836200045e565b9392505050565b80820281158282048414176200050b576200050b62000402565b80516001600160a01b038116811462000559575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121562000584575f80fd5b6200058f8362000542565b602084810151919350906001600160401b0380821115620005ae575f80fd5b818601915086601f830112620005c2575f80fd5b815181811115620005d757620005d76200055e565b8060051b604051601f19603f83011681018181108582111715620005ff57620005ff6200055e565b6040529182528482019250838101850191898311156200061d575f80fd5b938501935b828510156200064657620006368562000542565b8452938501939285019262000622565b8096505050505050509250929050565b5f6020828403121562000667575f80fd5b620005218262000542565b634e487b7160e01b5f52603260045260245ffd5b5f600182016200069a576200069a62000402565b5060010190565b611aab80620006af5f395ff3fe6080604052600436106101fa575f3560e01c80638da5cb5b1161010b578063ba414b1011610099578063d11fcb851161006b578063d11fcb8514610626578063dd62ed3e14610654578063e717fc3014610698578063f2fde38b146106ad578063f5a27e86146106cc57005b8063ba414b10146105a9578063bd186c4c146105c8578063bd4f1dc6146105e7578063c9d9159d1461060a57005b806395d89b41116100dd57806395d89b411461050b578063a1780c1814610537578063a20adf861461054b578063a9059cbb1461056a578063ac9358341461058957005b80638da5cb5b1461049c5780638e26bbe4146104b857806391d88b95146104d757806391f18b7c146104ec57005b80636264300e1161018857806370fbc7121161015a57806370fbc71214610412578063715018a6146104275780637971fca71461043b5780637aab5d9b1461045e5780638bf67ad01461047d57005b80636264300e1461035a578063685e838e146103925780636ea79583146103a757806370a08231146103de57005b806323b872dd116101cc57806323b872dd146102c3578063313ce567146102e25780633797e00b146102fd578063581d30f81461031c5780635bc05f3c1461033b57005b806306fdde0314610203578063095ea7b31461025357806318160ddd1461028257806318347dc5146102a457005b3661020157005b005b34801561020e575f80fd5b5060408051808201909152601681527522e7c23432b739b7b910233ab9b4b7b7102630bcb2b960511b60208201525b60405161024a9190611574565b60405180910390f35b34801561025e575f80fd5b5061027261026d3660046115ba565b6106e1565b604051901515815260200161024a565b34801561028d575f80fd5b506102966106fa565b60405190815260200161024a565b3480156102af575f80fd5b506102016102be3660046115e4565b61071a565b3480156102ce575f80fd5b506102726102dd366004611604565b6107c3565b3480156102ed575f80fd5b506040516012815260200161024a565b348015610308575f80fd5b5061020161031736600461165a565b6107e6565b348015610327575f80fd5b5061020161033636600461169a565b610889565b348015610346575f80fd5b505f5461027290600160b01b900460ff1681565b348015610365575f80fd5b5060015461037d90600160c01b900463ffffffff1681565b60405163ffffffff909116815260200161024a565b34801561039d575f80fd5b5061029660085481565b3480156103b2575f80fd5b506001546103c6906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156103e9575f80fd5b506102966103f83660046116b4565b6001600160a01b03165f9081526009602052604090205490565b34801561041d575f80fd5b5061029660065481565b348015610432575f80fd5b50610201610919565b348015610446575f80fd5b5060015461037d90600160a01b900463ffffffff1681565b348015610469575f80fd5b505f5461027290600160a01b900460ff1681565b348015610488575f80fd5b506102016104973660046116cf565b61092c565b3480156104a7575f80fd5b505f546001600160a01b03166103c6565b3480156104c3575f80fd5b506102016104d2366004611708565b610973565b3480156104e2575f80fd5b5061029660045481565b3480156104f7575f80fd5b50600c546103c6906001600160a01b031681565b348015610516575f80fd5b506040805180820190915260048152636554414f60e01b602082015261023d565b348015610542575f80fd5b50610201610998565b348015610556575f80fd5b505f5461027290600160a81b900460ff1681565b348015610575575f80fd5b506102726105843660046115ba565b6109a8565b348015610594575f80fd5b50600c5461027290600160a01b900460ff1681565b3480156105b4575f80fd5b506102016105c3366004611721565b6109b5565b3480156105d3575f80fd5b506102016105e2366004611708565b610a3e565b3480156105f2575f80fd5b5060015461037d90600160e01b900463ffffffff1681565b348015610615575f80fd5b5060025461037d9063ffffffff1681565b348015610631575f80fd5b506102726106403660046116b4565b60036020525f908152604090205460ff1681565b34801561065f575f80fd5b5061029661066e366004611795565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205490565b3480156106a3575f80fd5b5061029660075481565b3480156106b8575f80fd5b506102016106c73660046116b4565b610a63565b3480156106d7575f80fd5b5061029660055481565b5f336106ee818585610adc565b60019150505b92915050565b5f6107076012600a6118c0565b610715906305f5e1006118ce565b905090565b610722610bff565b60328210801590610734575060328110155b6107735760405162461bcd60e51b815260206004820152600b60248201526a0a8dede40d8deee40dac2f60ab1b60448201526064015b60405180910390fd5b6107966107826012600a6118c0565b610790906305f5e1006118ce565b83610c58565b6006556107bc6107a86012600a6118c0565b6107b6906305f5e1006118ce565b82610c58565b6007555050565b5f336107d0858285610c77565b6107db858585610d07565b506001949350505050565b6107ee610bff565b61138863ffffffff83161180159061080e575061138863ffffffff821611155b6108495760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b604482015260640161076a565b6001805467ffffffffffffffff60a01b1916600160a01b63ffffffff9485160263ffffffff60c01b191617600160c01b9290931691909102919091179055565b610891610bff565b61138863ffffffff821611156108d85760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b604482015260640161076a565b5f8054921515600160b01b0260ff60b01b19909316929092179091556001805463ffffffff909216600160e01b026001600160e01b03909216919091179055565b610921610bff565b61092a5f611098565b565b610934610bff565b6008929092556002805463ffffffff90921663ffffffff19909216919091179055600c8054911515600160a01b0260ff60a01b19909216919091179055565b61097b610bff565b5f8054911515600160a01b0260ff60a01b19909216919091179055565b6109a0610bff565b61092a6110e7565b5f336106ee818585610d07565b6109bd610bff565b5f80546001600160a01b0316905b83811015610a37575f8585838181106109e6576109e66118e5565b90506020020160208101906109fb91906116b4565b90506001600160a01b038116610a235760405162461bcd60e51b815260040161076a906118f9565b610a2e83828661114d565b506001016109cb565b5050505050565b610a46610bff565b5f8054911515600160a81b0260ff60a81b19909216919091179055565b610a6b610bff565b6001600160a01b038116610ad05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076a565b610ad981611098565b50565b6001600160a01b038316610b3e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076a565b6001600160a01b038216610b9f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076a565b6001600160a01b038381165f818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f546001600160a01b0316331461092a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161076a565b5f612710610c6683856118ce565b610c70919061193c565b9392505050565b6001600160a01b038381165f908152600a60209081526040808320938616835292905220545f198114610d015781811015610cf45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161076a565b610d018484848403610adc565b50505050565b6001600160a01b038316610d6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076a565b6001600160a01b038216610d915760405162461bcd60e51b815260040161076a906118f9565b5f8111610df25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161076a565b5f546001600160a01b0384811691161480610e1957505f546001600160a01b038381169116145b80610e2c57506001600160a01b03831630145b15610e4157610e3c83838361114d565b505050565b5f54600160a01b900460ff16610e8f5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015260640161076a565b600c545f906001600160a01b0385811691161480610eaf57610eaf6110e7565b8015610ef7576001600160a01b0384165f9081526003602052604090205460ff16610ef257600154610eef908490600160a01b900463ffffffff16610c58565b91505b610f60565b6001600160a01b0385165f9081526003602052604090205460ff16610f60575f54610f5d908490600160b01b900460ff16610f4157600154600160c01b900463ffffffff16610f52565b600154600160e01b900463ffffffff165b63ffffffff16610c58565b91505b81831015610fa55760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b604482015260640161076a565b5f549282900392600160a81b900460ff161561107c57600654831115610ffe5760405162461bcd60e51b815260206004820152600e60248201526d13585e081516081c995858da195960921b604482015260640161076a565b600c546001600160a01b0385811691161461107c576007546001600160a01b0385165f9081526009602052604090205461103990859061195b565b111561107c5760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b604482015260640161076a565b811561108d5761108d85308461114d565b610a3785858561114d565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b305f90815260096020526040902054600854811080159081906111145750600c54600160a81b900460ff16155b80156111295750600c54600160a01b900460ff165b1561114957611139600854611231565b478015610e3c57610e3c47611403565b5050565b6001600160a01b0383165f90815260096020526040902054818110156111c45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161076a565b6001600160a01b038085165f8181526009602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112239086815260200190565b60405180910390a350505050565b600c805460ff60a81b1916600160a81b1790556002545f90611261908390610f529063ffffffff1661271061196e565b90505f61126e8284611992565b60408051600280825260608201835292935047925f9260208301908036833701905050905030815f815181106112a6576112a66118e5565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132191906119a5565b81600181518110611334576113346118e5565b6001600160a01b039283166020918202929092010152600b5461135a9130911687610adc565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906113929087905f908690309042906004016119c0565b5f604051808303815f87803b1580156113a9575f80fd5b505af11580156113bb573d5f803e3d5ffd5b505050505f82476113cc9190611992565b6002549091506113ee9085906113e990849063ffffffff16610c58565b6114ab565b5050600c805460ff60a81b1916905550505050565b600154604080515f8082526020820192839052926001600160a01b031691849161142c91611a2f565b5f6040518083038185875af1925050503d805f8114611466576040519150601f19603f3d011682016040523d82523d5f602084013e61146b565b606091505b50509050806111495760405162461bcd60e51b815260206004820152600c60248201526b151c985b9cd9995c91985a5b60a21b604482015260640161076a565b600b546114c39030906001600160a01b031684610adc565b600b5460405163f305d71960e01b8152306004820152602481018490525f604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561152d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a379190611a4a565b5f5b8381101561156c578181015183820152602001611554565b50505f910152565b602081525f8251806020840152611592816040850160208701611552565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610ad9575f80fd5b5f80604083850312156115cb575f80fd5b82356115d6816115a6565b946020939093013593505050565b5f80604083850312156115f5575f80fd5b50508035926020909101359150565b5f805f60608486031215611616575f80fd5b8335611621816115a6565b92506020840135611631816115a6565b929592945050506040919091013590565b803563ffffffff81168114611655575f80fd5b919050565b5f806040838503121561166b575f80fd5b61167483611642565b915061168260208401611642565b90509250929050565b80358015158114611655575f80fd5b5f80604083850312156116ab575f80fd5b6116748361168b565b5f602082840312156116c4575f80fd5b8135610c70816115a6565b5f805f606084860312156116e1575f80fd5b833592506116f160208501611642565b91506116ff6040850161168b565b90509250925092565b5f60208284031215611718575f80fd5b610c708261168b565b5f805f60408486031215611733575f80fd5b833567ffffffffffffffff8082111561174a575f80fd5b818601915086601f83011261175d575f80fd5b81358181111561176b575f80fd5b8760208260051b850101111561177f575f80fd5b6020928301989097509590910135949350505050565b5f80604083850312156117a6575f80fd5b82356117b1816115a6565b915060208301356117c1816115a6565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561181a57815f1904821115611800576118006117cc565b8085161561180d57918102915b93841c93908002906117e5565b509250929050565b5f82611830575060016106f4565b8161183c57505f6106f4565b8160018114611852576002811461185c57611878565b60019150506106f4565b60ff84111561186d5761186d6117cc565b50506001821b6106f4565b5060208310610133831016604e8410600b841016171561189b575081810a6106f4565b6118a583836117e0565b805f19048211156118b8576118b86117cc565b029392505050565b5f610c7060ff841683611822565b80820281158282048414176106f4576106f46117cc565b634e487b7160e01b5f52603260045260245ffd5b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f8261195657634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106f4576106f46117cc565b63ffffffff82811682821603908082111561198b5761198b6117cc565b5092915050565b818103818111156106f4576106f46117cc565b5f602082840312156119b5575f80fd5b8151610c70816115a6565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a0e5784516001600160a01b0316835293830193918301916001016119e9565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8251611a40818460208701611552565b9190910192915050565b5f805f60608486031215611a5c575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220951ea8e90aa9aa24af558a149d312692f040755ee7978436f1b16aca1f0d95d264736f6c63430008140033000000000000000000000000e400d14c2d29bc25fb6fe5ef3789ec7f2e20663d0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001300000000000000000000000017e8598adb405c5d2c010399171a81f6a52f70b5000000000000000000000000b520d2d0f72393d2b370aaa33444922abf58bdc7000000000000000000000000aa96aa7c546359ce9e9c4f1d32cb05294a42ec85000000000000000000000000264b2c0cd3cc87153499bd1ff5d5bf76f84810a0000000000000000000000000f8b396c1166f53a1e1fcd83acdeb67b7f5611e110000000000000000000000006035bf7e6ded44a3b1e3157c03b90b66240a101d0000000000000000000000005960b634f61d6a42d13ff85e8db4d87289548a46000000000000000000000000b87fddcde0e223ef066b47e37dc457482a5bd7ea000000000000000000000000df94ac9a82bba09d4576826c1e54f6ebc365c4f7000000000000000000000000c2e407a6ac180f5981dfb907a6f88551435e70f6000000000000000000000000ecd19b209fd7af4cdd5dbb579e815cef3f695c74000000000000000000000000a6a7ed6120334fa2e033b1246768250caa1c0f67000000000000000000000000af8f23201b1d34ce44d1b038801dc90ff425dceb000000000000000000000000fd8a86f3c2444b89654c3bf2fb890da832cadd0d00000000000000000000000050ae9e070e6a6d18f7dbdd92e40289f0f1fe3b4a000000000000000000000000bdfb971a5f67057c5564d83a8b5fca3fdfada74300000000000000000000000063a87bba7160750946dd2340289dc6d514d06f4e0000000000000000000000006e4c8c8be63c2f9c56f52a7284cda55746176d4a0000000000000000000000002f1594a96e7ed13d7c5b7159954fa32dda884fe1