6080604052620000126009600a620005aa565b62000022906305f5e10062000676565b600255620000336009600a620005aa565b6200004290624c4b4062000676565b600355620000536009600a620005aa565b6200006290621e848062000676565b6004908155600580546001600160a01b031990811661dead179091556006805490911690556007805474017a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a81b03199091161790556000600c55601e600d819055600e819055600f556015805461ffff191660011790556017805462ffff0019166101001790556002546107d091620000f5919062000676565b62000101919062000540565b6018553480156200011157600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600754601280546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620001c457600080fd5b505afa158015620001d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ff9190620004fc565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025c57600080fd5b505afa15801562000271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002979190620004fc565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620002df57600080fd5b505af1158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a9190620004fc565b601380546001600160a01b039283166001600160a01b0319918216178255306000818152600960209081526040808320601254881684528252808320600019908190558654881684528184205533808452600a8352818420805460ff1990811660019081179092559585528285208054871682179055600580548a1686528386208054881683179055918552600b845282852080548716821790559654881684528184208054861688179055549096168252949020805490911690921790915560108054821673f966608e76c2dbaa0dd2f5ff622a7c6e6ae976ba17905560118054909116737f8c39d2f519d7e8dde4d7e52f5eba60f0b1d43e179055600d54600c54620004349290919062000d4d6200048d821b17901c565b600e819055600f5560025433600081815260086020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006ae565b6000806200049c838562000525565b905083811015620004f35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b6000602082840312156200050e578081fd5b81516001600160a01b0381168114620004f3578182fd5b600082198211156200053b576200053b62000698565b500190565b6000826200055c57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620005a257816000190482111562000586576200058662000698565b808516156200059457918102915b93841c939080029062000566565b509250929050565b6000620005bb60ff841683620005c2565b9392505050565b600082620005d357506001620004f6565b81620005e257506000620004f6565b8160018114620005fb5760028114620006065762000626565b6001915050620004f6565b60ff8411156200061a576200061a62000698565b50506001821b620004f6565b5060208310610133831016604e8410600b84101617156200064b575081810a620004f6565b62000657838362000561565b80600019048211156200066e576200066e62000698565b029392505050565b600081600019048311821515161562000693576200069362000698565b500290565b634e487b7160e01b600052601160045260246000fd5b611cb280620006be6000396000f3fe6080604052600436106102605760003560e01c80637d1db4a511610144578063bf56b371116100b6578063f1d5f5171161007a578063f1d5f5171461072f578063f2fde38b1461074f578063f84ba65d1461076f578063f887ea401461078f578063fe575a87146107af578063ffb54a99146107df57600080fd5b8063bf56b3711461067d578063ca33e64c14610693578063ca987b0e146106b3578063da00097d146106c9578063dd62ed3e146106e957600080fd5b80638da5cb5b116101085780638da5cb5b1461056c5780638e2eee84146105d957806395d89b41146105f957806398118cb414610627578063a8aa1b311461063d578063a9059cbb1461065d57600080fd5b80637d1db4a514610540578063807c2d9c14610556578063893d20e81461056c578063896648c11461058a5780638b42507f146105a957600080fd5b8063313ce567116101dd5780635e562f3b116101a15780635e562f3b14610467578063658d4b7f146104875780636b67c4df146104a757806370a08231146104bd578063715018a6146104f357806375f0a8741461050857600080fd5b8063313ce567146103bb5780633f4218e0146103d757806344de2e4c146104075780634a74bb0214610428578063571ac8b01461044757600080fd5b806318160ddd1161022457806318160ddd146103415780631df4ccfc14610356578063220f66961461036c57806323b872dd146103865780632b112e49146103a657600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102cf5780630b78f9c0146102ff5780630d2959801461032157600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028260185481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b506040805180820190915260088152671093d391d3d0d05560c21b60208201525b60405161028c9190611acd565b3480156102db57600080fd5b506102ef6102ea3660046119a3565b6107f9565b604051901515815260200161028c565b34801561030b57600080fd5b5061031f61031a366004611a7f565b610866565b005b34801561032d57600080fd5b5061031f61033c366004611a4d565b6108b9565b34801561034d57600080fd5b50600254610282565b34801561036257600080fd5b50610282600e5481565b34801561037857600080fd5b506017546102ef9060ff1681565b34801561039257600080fd5b506102ef6103a136600461192f565b6108f6565b3480156103b257600080fd5b506102826109b8565b3480156103c757600080fd5b506040516009815260200161028c565b3480156103e357600080fd5b506102ef6103f23660046118bf565b600a6020526000908152604090205460ff1681565b34801561041357600080fd5b506007546102ef90600160a01b900460ff1681565b34801561043457600080fd5b506017546102ef90610100900460ff1681565b34801561045357600080fd5b506102ef6104623660046118bf565b610a0a565b34801561047357600080fd5b5061031f610482366004611a4d565b610a18565b34801561049357600080fd5b5061031f6104a236600461196f565b610a5c565b3480156104b357600080fd5b50610282600d5481565b3480156104c957600080fd5b506102826104d83660046118bf565b6001600160a01b031660009081526008602052604090205490565b3480156104ff57600080fd5b5061031f610ab1565b34801561051457600080fd5b50601154610528906001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b34801561054c57600080fd5b5061028260035481565b34801561056257600080fd5b5061028260045481565b34801561057857600080fd5b506000546001600160a01b0316610528565b34801561059657600080fd5b506015546102ef90610100900460ff1681565b3480156105b557600080fd5b506102ef6105c43660046118bf565b600b6020526000908152604090205460ff1681565b3480156105e557600080fd5b5061031f6105f43660046119ce565b610b25565b34801561060557600080fd5b50604080518082019091526005815264424f4e474f60d81b60208201526102c2565b34801561063357600080fd5b50610282600c5481565b34801561064957600080fd5b50601354610528906001600160a01b031681565b34801561066957600080fd5b506102ef6106783660046119a3565b610bd2565b34801561068957600080fd5b5061028260145481565b34801561069f57600080fd5b50601054610528906001600160a01b031681565b3480156106bf57600080fd5b50610282600f5481565b3480156106d557600080fd5b506017546102ef9062010000900460ff1681565b3480156106f557600080fd5b506102826107043660046118f7565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561073b57600080fd5b5061031f61074a366004611a67565b610bdf565b34801561075b57600080fd5b5061031f61076a3660046118bf565b610c0e565b34801561077b57600080fd5b5061031f61078a36600461196f565b610cf8565b34801561079b57600080fd5b50601254610528906001600160a01b031681565b3480156107bb57600080fd5b506102ef6107ca3660046118bf565b60166020526000908152604090205460ff1681565b3480156107eb57600080fd5b506015546102ef9060ff1681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108549086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108995760405162461bcd60e51b815260040161089090611b20565b60405180910390fd5b600c829055600d8190556108ad8282610d4d565b600e819055600f555050565b6000546001600160a01b031633146108e35760405162461bcd60e51b815260040161089090611b20565b6015805460ff1916911515919091179055565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146109a3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461097e918490610dac565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6109ae848484610de6565b90505b9392505050565b6006546001600160a01b0316600090815260086020526040812054610a05906005546001600160a01b03166000908152600860205260409020546109ff906002549061125a565b9061125a565b905090565b6000610860826000196107f9565b6000546001600160a01b03163314610a425760405162461bcd60e51b815260040161089090611b20565b601580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610a865760405162461bcd60e51b815260040161089090611b20565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610adb5760405162461bcd60e51b815260040161089090611b20565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b4f5760405162461bcd60e51b815260040161089090611b20565b60005b82811015610bcc578160166000868685818110610b7f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610b9491906118bf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610bc581611c33565b9050610b52565b50505050565b60006109b1338484610de6565b6000546001600160a01b03163314610c095760405162461bcd60e51b815260040161089090611b20565b600455565b6000546001600160a01b03163314610c385760405162461bcd60e51b815260040161089090611b20565b6001600160a01b038116610c9d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610890565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d225760405162461bcd60e51b815260040161089090611b20565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600080610d5a8385611bc5565b9050838110156109b15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610890565b60008184841115610dd05760405162461bcd60e51b81526004016108909190611acd565b506000610ddd8486611c1c565b95945050505050565b60175460009060ff1615610e0657610dff84848461129c565b90506109b1565b6001600160a01b03841660009081526001602052604090205460ff16158015610e4857506001600160a01b03831660009081526001602052604090205460ff16155b15610e965760155460ff16610e965760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610890565b60035482111580610ebf57506001600160a01b0384166000908152600b602052604090205460ff165b610eff5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610890565b6013546001600160a01b03163314801590610f1d575060175460ff16155b8015610f305750601754610100900460ff165b8015610f4d57506018543060009081526008602052604090205410155b15610f5a57610f5a611382565b601454158015610f7757506013546001600160a01b038481169116145b15610fe3576001600160a01b038416600090815260086020526040902054610fda5760405162461bcd60e51b81526020600482015260166024820152755a65726f2062616c616e63652076696f6c617465642160501b6044820152606401610890565b610fe343601455565b601554610100900460ff161561106f576001600160a01b03841660009081526016602052604090205460ff1615801561103557506001600160a01b03831660009081526016602052604090205460ff16155b61106f5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610890565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546110c1918490610dac565b6001600160a01b038086166000908152600860209081526040808320949094559186168152600b909152205460ff161580156111065750600754600160a01b900460ff165b15611176576004546001600160a01b0384166000908152600860205260409020546111319084610d4d565b11156111765760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742076696f6c617465642160601b6044820152606401610890565b6001600160a01b0384166000908152600a602052604081205460ff161580156111b857506001600160a01b0384166000908152600a602052604090205460ff16155b6111c257826111cd565b6111cd8585856116fd565b6001600160a01b0385166000908152600860205260409020549091506111f39082610d4d565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112479085815260200190565b60405180910390a3506001949350505050565b60006109b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dac565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546112ed918490610dac565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461131c9083610d4d565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113709086815260200190565b60405180910390a35060019392505050565b6017805460ff1916600117905530600090815260086020526040812054600e54600c549192916113c3916002916113bd9190829087906117c0565b9061183f565b905060006113d1838361125a565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061141957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561146d57600080fd5b505afa158015611481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a591906118db565b816001815181106114c657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac9479061150c908590600090869030904290600401611b55565b600060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b5050600c544792506000915061155e9061155590600261183f565b600e549061125a565b9050600061158060026113bd846113bd600c54886117c090919063ffffffff16565b9050600061159d836113bd600d54876117c090919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146115f4576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b606091505b506000925050881590506116e85760125460105460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b15801561167257600080fd5b505af1158015611686573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116ab9190611aa0565b505060408051858152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b60135460009081906001600160a01b0385811691161461171f57600e54611723565b600f545b9050600061173660646113bd86856117c0565b306000908152600860205260409020549091506117539082610d4d565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117a49085815260200190565b60405180910390a36117b6848261125a565b9695505050505050565b6000826117cf57506000610860565b60006117db8385611bfd565b9050826117e88583611bdd565b146109b15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610890565b60006109b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506000818361189d5760405162461bcd60e51b81526004016108909190611acd565b506000610ddd8486611bdd565b803580151581146118ba57600080fd5b919050565b6000602082840312156118d0578081fd5b81356109b181611c64565b6000602082840312156118ec578081fd5b81516109b181611c64565b60008060408385031215611909578081fd5b823561191481611c64565b9150602083013561192481611c64565b809150509250929050565b600080600060608486031215611943578081fd5b833561194e81611c64565b9250602084013561195e81611c64565b929592945050506040919091013590565b60008060408385031215611981578182fd5b823561198c81611c64565b915061199a602084016118aa565b90509250929050565b600080604083850312156119b5578182fd5b82356119c081611c64565b946020939093013593505050565b6000806000604084860312156119e2578283fd5b833567ffffffffffffffff808211156119f9578485fd5b818601915086601f830112611a0c578485fd5b813581811115611a1a578586fd5b8760208260051b8501011115611a2e578586fd5b602092830195509350611a4491860190506118aa565b90509250925092565b600060208284031215611a5e578081fd5b6109b1826118aa565b600060208284031215611a78578081fd5b5035919050565b60008060408385031215611a91578182fd5b50508035926020909101359150565b600080600060608486031215611ab4578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015611af957858101830151858201604001528201611add565b81811115611b0a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611ba45784516001600160a01b031683529383019391830191600101611b7f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611bd857611bd8611c4e565b500190565b600082611bf857634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611c1757611c17611c4e565b500290565b600082821015611c2e57611c2e611c4e565b500390565b6000600019821415611c4757611c47611c4e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611c7957600080fd5b5056fea2646970667358221220e13e4c244ecbeb1bef695a135e4959b9fe541761304579b0e65771e9bd1e1fb164736f6c63430008040033