0x6080604052600436106101ff575f3560e01c80638977393711610113578063c8c8ebe41161009d578063dd62ed3e1161006d578063dd62ed3e146105df578063e0c8dfd614610623578063e2f4560514610642578063f2fde38b14610657578063f8b45b0514610676575f80fd5b8063c8c8ebe414610582578063c9567bf914610597578063d2989663146105ab578063d85ba063146105ca575f80fd5b8063a9059cbb116100e3578063a9059cbb146104de578063b4a405db146104fd578063b62496f51461051c578063bbc0c7421461054a578063c024666814610563575f80fd5b8063897739371461046f5780638da5cb5b1461048e57806395d89b41146104ab5780639a7a23d6146104bf575f80fd5b806349bd5a5e116101945780636ddd1713116101645780636ddd1713146103cb57806370a08231146103e9578063715018a61461041d5780637346cec7146104315780637571336a14610450575f80fd5b806349bd5a5e1461033f5780634fbee1931461035e57806369ecdccd146103955780636a486a8e146103b6575f80fd5b806318160ddd116101cf57806318160ddd146102c857806323b872dd146102e65780632dc0562d14610305578063313ce56714610324575f80fd5b806306fdde031461020a578063095ea7b31461023457806310d5de53146102635780631694505e14610291575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021e61068b565b60405161022b919061175b565b60405180910390f35b34801561023f575f80fd5b5061025361024e3660046117bb565b61071b565b604051901515815260200161022b565b34801561026e575f80fd5b5061025361027d3660046117e5565b60106020525f908152604090205460ff1681565b34801561029c575f80fd5b506006546102b0906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b3480156102d3575f80fd5b506002545b60405190815260200161022b565b3480156102f1575f80fd5b50610253610300366004611800565b610734565b348015610310575f80fd5b506008546102b0906001600160a01b031681565b34801561032f575f80fd5b506040516012815260200161022b565b34801561034a575f80fd5b506007546102b0906001600160a01b031681565b348015610369575f80fd5b506102536103783660046117e5565b6001600160a01b03165f908152600f602052604090205460ff1690565b3480156103a0575f80fd5b506103b46103af36600461183e565b610759565b005b3480156103c1575f80fd5b506102d8600e5481565b3480156103d6575f80fd5b50600c5461025390610100900460ff1681565b3480156103f4575f80fd5b506102d86104033660046117e5565b6001600160a01b03165f9081526020819052604090205490565b348015610428575f80fd5b506103b4610766565b34801561043c575f80fd5b506103b461044b3660046117e5565b610779565b34801561045b575f80fd5b506103b461046a366004611862565b6107a3565b34801561047a575f80fd5b506103b4610489366004611899565b6107d5565b348015610499575f80fd5b506005546001600160a01b03166102b0565b3480156104b6575f80fd5b5061021e61091a565b3480156104ca575f80fd5b506103b46104d9366004611862565b610929565b3480156104e9575f80fd5b506102536104f83660046117bb565b6109c3565b348015610508575f80fd5b506103b46105173660046117e5565b6109d0565b348015610527575f80fd5b506102536105363660046117e5565b60116020525f908152604090205460ff1681565b348015610555575f80fd5b50600c546102539060ff1681565b34801561056e575f80fd5b506103b461057d366004611862565b610a33565b34801561058d575f80fd5b506102d860095481565b3480156105a2575f80fd5b506103b4610a99565b3480156105b6575f80fd5b506103b46105c53660046117e5565b610ab2565b3480156105d5575f80fd5b506102d8600d5481565b3480156105ea575f80fd5b506102d86105f9366004611899565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561062e575f80fd5b506103b461063d3660046118c5565b610b03565b34801561064d575f80fd5b506102d8600a5481565b348015610662575f80fd5b506103b46106713660046117e5565b610b1f565b348015610681575f80fd5b506102d8600b5481565b60606003805461069a906118f4565b80601f01602080910402602001604051908101604052809291908181526020018280546106c6906118f4565b80156107115780601f106106e857610100808354040283529160200191610711565b820191905f5260205f20905b8154815290600101906020018083116106f457829003601f168201915b5050505050905090565b5f33610728818585610b5c565b60019150505b92915050565b5f33610741858285610b6e565b61074c858585610be3565b60019150505b9392505050565b6107616111ff565b600a55565b61076e6111ff565b6107775f61122c565b565b6107816111ff565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6107ab6111ff565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6107dd6111ff565b6001600160a01b0382166108385760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561087c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a0919061192c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af11580156108f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109149190611943565b50505050565b60606004805461069a906118f4565b6109316111ff565b6007546001600160a01b03908116908316036109b55760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161082f565b6109bf828261127d565b5050565b5f33610728818585610be3565b6109d86111ff565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610a21576040519150601f19603f3d011682016040523d82523d5f602084013e610a26565b606091505b50509050806109bf575f80fd5b610a3b6111ff565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610aa16111ff565b600c805461ffff1916610101179055565b610aba6111ff565b600780546001600160a01b0319166001600160a01b038316179055610ae081600161127d565b6001600160a01b03165f908152601060205260409020805460ff19166001179055565b610b0b6111ff565b600993909355600b91909155600d55600e55565b610b276111ff565b6001600160a01b038116610b5057604051631e4fbdf760e01b81525f600482015260240161082f565b610b598161122c565b50565b610b6983838360016112d0565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146109145781811015610bd557604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161082f565b61091484848484035f6112d0565b6001600160a01b038316610c475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082f565b6001600160a01b038216610ca95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082f565b805f03610cbb57610b6983835f6113a2565b6005546001600160a01b03848116911614801590610ce757506005546001600160a01b03838116911614155b8015610cfb57506001600160a01b03821615155b8015610d1257506001600160a01b03821661dead14155b8015610d285750600854600160a01b900460ff16155b1561101857600c5460ff16610db9576001600160a01b0383165f908152600f602052604090205460ff1680610d7457506001600160a01b0382165f908152600f602052604090205460ff165b610db95760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161082f565b6001600160a01b0383165f9081526011602052604090205460ff168015610df857506001600160a01b0382165f9081526010602052604090205460ff16155b15610edb57600954811115610e6d5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161082f565b600b546001600160a01b0383165f90815260208190526040902054610e929083611972565b1115610ed65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161082f565b611018565b6001600160a01b0382165f9081526011602052604090205460ff168015610f1a57506001600160a01b0383165f9081526010602052604090205460ff16155b15610f9057600954811115610ed65760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161082f565b6001600160a01b0382165f9081526010602052604090205460ff1661101857600b546001600160a01b0383165f90815260208190526040902054610fd49083611972565b11156110185760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161082f565b305f90815260208190526040902054600a54811080159081906110425750600c54610100900460ff165b80156110585750600854600160a01b900460ff16155b801561107c57506001600160a01b0385165f9081526011602052604090205460ff16155b80156110a057506001600160a01b0385165f908152600f602052604090205460ff16155b80156110c457506001600160a01b0384165f908152600f602052604090205460ff16155b156110f2576008805460ff60a01b1916600160a01b1790556110e46113ff565b6008805460ff60a01b191690555b6008546001600160a01b0386165f908152600f602052604090205460ff600160a01b90920482161591168061113e57506001600160a01b0385165f908152600f602052604090205460ff165b1561114657505f5b5f81156111eb576001600160a01b0386165f9081526011602052604090205460ff16801561117557505f600e54115b1561118f5761118885600e546064611422565b90506111cd565b6001600160a01b0387165f9081526011602052604090205460ff1680156111b757505f600d54115b156111cd576111ca85600d546064611422565b90505b80156111de576111de8730836113a2565b6111e88186611985565b94505b6111f68787876113a2565b50505050505050565b6005546001600160a01b031633146107775760405163118cdaa760e01b815233600482015260240161082f565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0384166112f95760405163e602df0560e01b81525f600482015260240161082f565b6001600160a01b03831661132257604051634a1406b160e11b81525f600482015260240161082f565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561091457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161139491815260200190565b60405180910390a350505050565b6001600160a01b0383166113cb57604051634b637e8f60e11b81525f600482015260240161082f565b6001600160a01b0382166113f45760405163ec442f0560e01b81525f600482015260240161082f565b610b698383836114e1565b305f90815260208190526040812054908190036114195750565b610b5981611607565b5f838302815f1985870982811083820303915050805f036114565783828161144c5761144c611998565b0492505050610752565b8084116114765760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b03831661150b578060025f8282546115009190611972565b9091555061157b9050565b6001600160a01b0383165f908152602081905260409020548181101561155d5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161082f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216611597576002805482900390556115b5565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115fa91815260200190565b60405180910390a3505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061163a5761163a6119ac565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611691573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b591906119c0565b816001815181106116c8576116c86119ac565b6001600160a01b0392831660209182029290920101526006546116ee9130911684610b5c565b60065460085460405163791ac94760e01b81526001600160a01b039283169263791ac9479261172a9287925f92889291169042906004016119db565b5f604051808303815f87803b158015611741575f80fd5b505af1158015611753573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b818110156117875785810183015185820160400152820161176b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b59575f80fd5b5f80604083850312156117cc575f80fd5b82356117d7816117a7565b946020939093013593505050565b5f602082840312156117f5575f80fd5b8135610752816117a7565b5f805f60608486031215611812575f80fd5b833561181d816117a7565b9250602084013561182d816117a7565b929592945050506040919091013590565b5f6020828403121561184e575f80fd5b5035919050565b8015158114610b59575f80fd5b5f8060408385031215611873575f80fd5b823561187e816117a7565b9150602083013561188e81611855565b809150509250929050565b5f80604083850312156118aa575f80fd5b82356118b5816117a7565b9150602083013561188e816117a7565b5f805f80608085870312156118d8575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061190857607f821691505b60208210810361192657634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6020828403121561193c575f80fd5b5051919050565b5f60208284031215611953575f80fd5b815161075281611855565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561072e5761072e61195e565b8181038181111561072e5761072e61195e565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156119d0575f80fd5b8151610752816117a7565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a2b5784516001600160a01b031683529383019391830191600101611a06565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a06276c8748fc173dff8f765bd679346a6c6fe4df189b0b57c3b21f4a83ff87564736f6c63430008160033
0x6080604052600c805461ffff191690553480156200001b575f80fd5b5060405162002175380380620021758339810160408190526200003e91620004ca565b60408051808201825260068082526521a7a7a5a2a960d11b6020808401829052845180860190955291845290830152339160036200007d8382620005af565b5060046200008c8282620005af565b5050506001600160a01b038116620000be57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b620000c98162000225565b50600680546001600160a01b0319166001600160a01b038516179055620000f283600162000276565b6005546001600160a01b0316600880546001600160a01b0319166001600160a01b0392909216919091179055690165c96647b38a2000006009819055600b5569d3c21bcecceda10000006127106200014c8260056200068f565b620001589190620006af565b600a55601e600d556032600e55620001846200017c6005546001600160a01b031690565b6001620002aa565b62000191306001620002aa565b620001a061dead6001620002aa565b620001ad836001620002aa565b620001ba826001620002aa565b620001d9620001d16005546001600160a01b031690565b600162000276565b620001e630600162000276565b620001f561dead600162000276565b6200020283600162000276565b6200020f82600162000276565b6200021b338262000312565b50505050620006e5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b620002806200034e565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b620002b46200034e565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200033d5760405163ec442f0560e01b81525f6004820152602401620000b5565b6200034a5f83836200037f565b5050565b6005546001600160a01b031633146200037d5760405163118cdaa760e01b8152336004820152602401620000b5565b565b6001600160a01b038316620003ad578060025f828254620003a19190620006cf565b909155506200041f9050565b6001600160a01b0383165f9081526020819052604090205481811015620004015760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166200043d576002805482900390556200045b565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004a191815260200190565b60405180910390a3505050565b80516001600160a01b0381168114620004c5575f80fd5b919050565b5f805f60608486031215620004dd575f80fd5b620004e884620004ae565b9250620004f860208501620004ae565b91506200050860408501620004ae565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200053a57607f821691505b6020821081036200055957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005aa57805f5260205f20601f840160051c81016020851015620005865750805b601f840160051c820191505b81811015620005a7575f815560010162000592565b50505b505050565b81516001600160401b03811115620005cb57620005cb62000511565b620005e381620005dc845462000525565b846200055f565b602080601f83116001811462000619575f8415620006015750858301515b5f19600386901b1c1916600185901b17855562000673565b5f85815260208120601f198616915b82811015620006495788860151825594840194600190910190840162000628565b50858210156200066757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620006a957620006a96200067b565b92915050565b5f82620006ca57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620006a957620006a96200067b565b611a8280620006f35f395ff3fe6080604052600436106101ff575f3560e01c80638977393711610113578063c8c8ebe41161009d578063dd62ed3e1161006d578063dd62ed3e146105df578063e0c8dfd614610623578063e2f4560514610642578063f2fde38b14610657578063f8b45b0514610676575f80fd5b8063c8c8ebe414610582578063c9567bf914610597578063d2989663146105ab578063d85ba063146105ca575f80fd5b8063a9059cbb116100e3578063a9059cbb146104de578063b4a405db146104fd578063b62496f51461051c578063bbc0c7421461054a578063c024666814610563575f80fd5b8063897739371461046f5780638da5cb5b1461048e57806395d89b41146104ab5780639a7a23d6146104bf575f80fd5b806349bd5a5e116101945780636ddd1713116101645780636ddd1713146103cb57806370a08231146103e9578063715018a61461041d5780637346cec7146104315780637571336a14610450575f80fd5b806349bd5a5e1461033f5780634fbee1931461035e57806369ecdccd146103955780636a486a8e146103b6575f80fd5b806318160ddd116101cf57806318160ddd146102c857806323b872dd146102e65780632dc0562d14610305578063313ce56714610324575f80fd5b806306fdde031461020a578063095ea7b31461023457806310d5de53146102635780631694505e14610291575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021e61068b565b60405161022b919061175b565b60405180910390f35b34801561023f575f80fd5b5061025361024e3660046117bb565b61071b565b604051901515815260200161022b565b34801561026e575f80fd5b5061025361027d3660046117e5565b60106020525f908152604090205460ff1681565b34801561029c575f80fd5b506006546102b0906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b3480156102d3575f80fd5b506002545b60405190815260200161022b565b3480156102f1575f80fd5b50610253610300366004611800565b610734565b348015610310575f80fd5b506008546102b0906001600160a01b031681565b34801561032f575f80fd5b506040516012815260200161022b565b34801561034a575f80fd5b506007546102b0906001600160a01b031681565b348015610369575f80fd5b506102536103783660046117e5565b6001600160a01b03165f908152600f602052604090205460ff1690565b3480156103a0575f80fd5b506103b46103af36600461183e565b610759565b005b3480156103c1575f80fd5b506102d8600e5481565b3480156103d6575f80fd5b50600c5461025390610100900460ff1681565b3480156103f4575f80fd5b506102d86104033660046117e5565b6001600160a01b03165f9081526020819052604090205490565b348015610428575f80fd5b506103b4610766565b34801561043c575f80fd5b506103b461044b3660046117e5565b610779565b34801561045b575f80fd5b506103b461046a366004611862565b6107a3565b34801561047a575f80fd5b506103b4610489366004611899565b6107d5565b348015610499575f80fd5b506005546001600160a01b03166102b0565b3480156104b6575f80fd5b5061021e61091a565b3480156104ca575f80fd5b506103b46104d9366004611862565b610929565b3480156104e9575f80fd5b506102536104f83660046117bb565b6109c3565b348015610508575f80fd5b506103b46105173660046117e5565b6109d0565b348015610527575f80fd5b506102536105363660046117e5565b60116020525f908152604090205460ff1681565b348015610555575f80fd5b50600c546102539060ff1681565b34801561056e575f80fd5b506103b461057d366004611862565b610a33565b34801561058d575f80fd5b506102d860095481565b3480156105a2575f80fd5b506103b4610a99565b3480156105b6575f80fd5b506103b46105c53660046117e5565b610ab2565b3480156105d5575f80fd5b506102d8600d5481565b3480156105ea575f80fd5b506102d86105f9366004611899565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561062e575f80fd5b506103b461063d3660046118c5565b610b03565b34801561064d575f80fd5b506102d8600a5481565b348015610662575f80fd5b506103b46106713660046117e5565b610b1f565b348015610681575f80fd5b506102d8600b5481565b60606003805461069a906118f4565b80601f01602080910402602001604051908101604052809291908181526020018280546106c6906118f4565b80156107115780601f106106e857610100808354040283529160200191610711565b820191905f5260205f20905b8154815290600101906020018083116106f457829003601f168201915b5050505050905090565b5f33610728818585610b5c565b60019150505b92915050565b5f33610741858285610b6e565b61074c858585610be3565b60019150505b9392505050565b6107616111ff565b600a55565b61076e6111ff565b6107775f61122c565b565b6107816111ff565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6107ab6111ff565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6107dd6111ff565b6001600160a01b0382166108385760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561087c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a0919061192c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af11580156108f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109149190611943565b50505050565b60606004805461069a906118f4565b6109316111ff565b6007546001600160a01b03908116908316036109b55760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161082f565b6109bf828261127d565b5050565b5f33610728818585610be3565b6109d86111ff565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610a21576040519150601f19603f3d011682016040523d82523d5f602084013e610a26565b606091505b50509050806109bf575f80fd5b610a3b6111ff565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610aa16111ff565b600c805461ffff1916610101179055565b610aba6111ff565b600780546001600160a01b0319166001600160a01b038316179055610ae081600161127d565b6001600160a01b03165f908152601060205260409020805460ff19166001179055565b610b0b6111ff565b600993909355600b91909155600d55600e55565b610b276111ff565b6001600160a01b038116610b5057604051631e4fbdf760e01b81525f600482015260240161082f565b610b598161122c565b50565b610b6983838360016112d0565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146109145781811015610bd557604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161082f565b61091484848484035f6112d0565b6001600160a01b038316610c475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082f565b6001600160a01b038216610ca95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082f565b805f03610cbb57610b6983835f6113a2565b6005546001600160a01b03848116911614801590610ce757506005546001600160a01b03838116911614155b8015610cfb57506001600160a01b03821615155b8015610d1257506001600160a01b03821661dead14155b8015610d285750600854600160a01b900460ff16155b1561101857600c5460ff16610db9576001600160a01b0383165f908152600f602052604090205460ff1680610d7457506001600160a01b0382165f908152600f602052604090205460ff165b610db95760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161082f565b6001600160a01b0383165f9081526011602052604090205460ff168015610df857506001600160a01b0382165f9081526010602052604090205460ff16155b15610edb57600954811115610e6d5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161082f565b600b546001600160a01b0383165f90815260208190526040902054610e929083611972565b1115610ed65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161082f565b611018565b6001600160a01b0382165f9081526011602052604090205460ff168015610f1a57506001600160a01b0383165f9081526010602052604090205460ff16155b15610f9057600954811115610ed65760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161082f565b6001600160a01b0382165f9081526010602052604090205460ff1661101857600b546001600160a01b0383165f90815260208190526040902054610fd49083611972565b11156110185760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161082f565b305f90815260208190526040902054600a54811080159081906110425750600c54610100900460ff165b80156110585750600854600160a01b900460ff16155b801561107c57506001600160a01b0385165f9081526011602052604090205460ff16155b80156110a057506001600160a01b0385165f908152600f602052604090205460ff16155b80156110c457506001600160a01b0384165f908152600f602052604090205460ff16155b156110f2576008805460ff60a01b1916600160a01b1790556110e46113ff565b6008805460ff60a01b191690555b6008546001600160a01b0386165f908152600f602052604090205460ff600160a01b90920482161591168061113e57506001600160a01b0385165f908152600f602052604090205460ff165b1561114657505f5b5f81156111eb576001600160a01b0386165f9081526011602052604090205460ff16801561117557505f600e54115b1561118f5761118885600e546064611422565b90506111cd565b6001600160a01b0387165f9081526011602052604090205460ff1680156111b757505f600d54115b156111cd576111ca85600d546064611422565b90505b80156111de576111de8730836113a2565b6111e88186611985565b94505b6111f68787876113a2565b50505050505050565b6005546001600160a01b031633146107775760405163118cdaa760e01b815233600482015260240161082f565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0384166112f95760405163e602df0560e01b81525f600482015260240161082f565b6001600160a01b03831661132257604051634a1406b160e11b81525f600482015260240161082f565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561091457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161139491815260200190565b60405180910390a350505050565b6001600160a01b0383166113cb57604051634b637e8f60e11b81525f600482015260240161082f565b6001600160a01b0382166113f45760405163ec442f0560e01b81525f600482015260240161082f565b610b698383836114e1565b305f90815260208190526040812054908190036114195750565b610b5981611607565b5f838302815f1985870982811083820303915050805f036114565783828161144c5761144c611998565b0492505050610752565b8084116114765760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b03831661150b578060025f8282546115009190611972565b9091555061157b9050565b6001600160a01b0383165f908152602081905260409020548181101561155d5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161082f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216611597576002805482900390556115b5565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115fa91815260200190565b60405180910390a3505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061163a5761163a6119ac565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611691573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b591906119c0565b816001815181106116c8576116c86119ac565b6001600160a01b0392831660209182029290920101526006546116ee9130911684610b5c565b60065460085460405163791ac94760e01b81526001600160a01b039283169263791ac9479261172a9287925f92889291169042906004016119db565b5f604051808303815f87803b158015611741575f80fd5b505af1158015611753573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b818110156117875785810183015185820160400152820161176b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b59575f80fd5b5f80604083850312156117cc575f80fd5b82356117d7816117a7565b946020939093013593505050565b5f602082840312156117f5575f80fd5b8135610752816117a7565b5f805f60608486031215611812575f80fd5b833561181d816117a7565b9250602084013561182d816117a7565b929592945050506040919091013590565b5f6020828403121561184e575f80fd5b5035919050565b8015158114610b59575f80fd5b5f8060408385031215611873575f80fd5b823561187e816117a7565b9150602083013561188e81611855565b809150509250929050565b5f80604083850312156118aa575f80fd5b82356118b5816117a7565b9150602083013561188e816117a7565b5f805f80608085870312156118d8575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061190857607f821691505b60208210810361192657634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6020828403121561193c575f80fd5b5051919050565b5f60208284031215611953575f80fd5b815161075281611855565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561072e5761072e61195e565b8181038181111561072e5761072e61195e565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156119d0575f80fd5b8151610752816117a7565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a2b5784516001600160a01b031683529383019391830191600101611a06565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a06276c8748fc173dff8f765bd679346a6c6fe4df189b0b57c3b21f4a83ff87564736f6c634300081600330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c069f1ef6e38f19a6ac22ff729e0c3c007c091b4000000000000000000000000c069f1ef6e38f19a6ac22ff729e0c3c007c091b4