0x60806040523480156200001157600080fd5b506040516200188b3803806200188b8339810160408190526200003491620000c4565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055620000fc565b80516001600160a01b0381168114620000bf57600080fd5b919050565b60008060408385031215620000d857600080fd5b620000e383620000a7565b9150620000f360208401620000a7565b90509250929050565b61177f806200010c6000396000f3fe6080604052600436106100f35760003560e01c8063969578691161008a578063b7bf1ef611610059578063b7bf1ef6146102ed578063c305609614610300578063f2fde38b14610330578063f4903e761461035057600080fd5b80639695786914610242578063b0dae86314610262578063b387c716146102a0578063b70aed71146102cd57600080fd5b8063238ac933116100c6578063238ac933146101c457806346c0b202146101e45780636c19e783146102045780638da5cb5b1461022457600080fd5b80631027b219146100f85780631c58493c1461013d5780631ec82cb81461016a57806321b55c501461018c575b600080fd5b34801561010457600080fd5b50610128610113366004611363565b60056020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014957600080fd5b5061015d610158366004611387565b610370565b60405161013491906113a0565b34801561017657600080fd5b5061018a6101853660046113e4565b6103d5565b005b34801561019857600080fd5b506002546101ac906001600160a01b031681565b6040516001600160a01b039091168152602001610134565b3480156101d057600080fd5b506001546101ac906001600160a01b031681565b3480156101f057600080fd5b5061018a6101ff366004611453565b610486565b34801561021057600080fd5b5061018a61021f366004611363565b61074e565b34801561023057600080fd5b506000546001600160a01b03166101ac565b34801561024e57600080fd5b506101ac61025d366004611498565b61080c565b34801561026e57600080fd5b5061029261027d366004611387565b60036020526000908152604090206002015481565b604051908152602001610134565b3480156102ac57600080fd5b506102c06102bb366004611387565b610874565b60405161013491906114d3565b3480156102d957600080fd5b5061018a6102e8366004611522565b6108df565b61018a6102fb366004611453565b610934565b34801561030c57600080fd5b5061012861031b366004611387565b60046020526000908152604090205460ff1681565b34801561033c57600080fd5b5061018a61034b366004611363565b610cf5565b34801561035c57600080fd5b5061029261036b36600461155b565b610d2b565b6000818152600360209081526040918290206001018054835181840281018401909452808452606093928301828280156103c957602002820191906000526020600020905b8154815260200190600101908083116103b5575b50505050509050919050565b6000546001600160a01b031633146104085760405162461bcd60e51b81526004016103ff90611588565b60405180910390fd5b6001600160a01b03831661047b576040516001600160a01b0383169082156108fc029083906000818181858888f193505050506104765760405162461bcd60e51b815260206004820152600c60248201526b1c9958dbdd995c8819985a5b60a21b60448201526064016103ff565b505050565b610476838383610d7d565b428460a0013510156104c95760405162461bcd60e51b815260206004820152600c60248201526b151a5b5948115e1c1a5c995960a21b60448201526064016103ff565b60006104d485610de0565b60008181526004602052604090205490915060ff16156105365760405162461bcd60e51b815260206004820152601f60248201527f436c61696d203a3a207369676e617475726520616c726561647920757365640060448201526064016103ff565b6001546001600160a01b031661054e8286868661080c565b6001600160a01b0316146105a45760405162461bcd60e51b815260206004820152601d60248201527f436c61696d203a3a206e6f742061207369676e6572206164647265737300000060448201526064016103ff565b600081815260046020908152604091829020805460ff191660011790556105d2919087013590870135610e41565b60006105e46080870160608801611363565b6001600160a01b031603610653576040513390608087013580156108fc02916000818181858888f1935050505061064e5760405162461bcd60e51b815260206004820152600e60248201526d7472616e73666572206661696c7360901b60448201526064016103ff565b6106de565b600560006106676080880160608901611363565b6001600160a01b0316815260208101919091526040016000205460ff166106c05760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064016103ff565b6106de6106d36080870160608801611363565b338760800135610d7d565b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567336107106080880160608901611363565b604080516001600160a01b03938416815292909116602083015260808089013591830191909152426060830152015b60405180910390a15050505050565b6000546001600160a01b031633146107785760405162461bcd60e51b81526004016103ff90611588565b6001600160a01b0381161580159061079e57506001546001600160a01b03828116911614155b6107ea5760405162461bcd60e51b815260206004820152601f60248201527f7369676e65722061646472657373206e6f74205a65726f20616464726573730060448201526064016103ff565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6040805160008082526020820180845287905260ff861692820192909252606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610860573d6000803e3d6000fd5b5050604051601f1901519695505050505050565b6000818152600360209081526040918290208054835181840281018401909452808452606093928301828280156103c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108b65750505050509050919050565b6000546001600160a01b031633146109095760405162461bcd60e51b81526004016103ff90611588565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b428460a0013510156109775760405162461bcd60e51b815260206004820152600c60248201526b151a5b5948115e1c1a5c995960a21b60448201526064016103ff565b33600254604080516331a9108f60e11b81529087013560048201526001600160a01b039283169290911690636352211e90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec91906115bd565b6001600160a01b031614610a385760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103a37b5b2b71037bbb732b960691b60448201526064016103ff565b6000610a4385610de0565b60008181526004602052604090205490915060ff1615610aa55760405162461bcd60e51b815260206004820152601f60248201527f436c61696d203a3a207369676e617475726520616c726561647920757365640060448201526064016103ff565b6001546001600160a01b0316610abd8286868661080c565b6001600160a01b031614610b135760405162461bcd60e51b815260206004820152601d60248201527f436c61696d203a3a206e6f742061207369676e6572206164647265737300000060448201526064016103ff565b600081815260046020908152604091829020805460ff19166001179055610b41919087013590870135610edb565b6000610b536080870160608801611363565b6001600160a01b031603610ba95784608001353414610ba45760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b60448201526064016103ff565b610c83565b60056000610bbd6080880160608901611363565b6001600160a01b0316815260208101919091526040016000205460ff16610c165760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064016103ff565b3415610c645760405162461bcd60e51b815260206004820152601860248201527f4d617469632076616c7565206d757374206265207a65726f000000000000000060448201526064016103ff565b610c83610c776080870160608801611363565b3330886080013561107b565b7f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f633610cb56080880160608901611363565b604080516001600160a01b039384168152929091166020838101919091526080808a0135928401929092528801356060830152429082015260a00161073f565b6000546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016103ff90611588565b610d28816110b9565b50565b60008282604051602001610d409291906115da565b60408051601f1981840301815290829052610d5f913090602001611696565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b03831660248201526044810182905261047690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611179565b600080610ded8333610d2b565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052909150605c0160405160208183030381529060405280519060200120915050919050565b6000828152600360205260408120905b8160020154811015610e9b57816001018181548110610e7257610e726116c0565b90600052602060002001548303610e895750505050565b80610e93816116d6565b915050610e51565b60405162461bcd60e51b8152602060048201526015602482015274149bd8dad95d08191bdcd9481b9bdd08195e1a5cdd605a1b60448201526064016103ff565b60008281526003602052604090206002810154600c11610f295760405162461bcd60e51b8152602060048201526009602482015268149858d948199d5b1b60ba1b60448201526064016103ff565b60005b816002015481101561102757816000018181548110610f4d57610f4d6116c0565b6000918252602090912001546001600160a01b03163303610fa75760405162461bcd60e51b81526020600482015260146024820152733930b1b2b91030b63932b0b23c9032bc34b9ba1760611b60448201526064016103ff565b816001018181548110610fbc57610fbc6116c0565b906000526020600020015483036110155760405162461bcd60e51b815260206004820152601860248201527f726f636b657420494420616c72656164792065786973742e000000000000000060448201526064016103ff565b8061101f816116d6565b915050610f2c565b8154600180820184556000848152602080822090930180546001600160a01b031916331790558185018054928301815581529182200184905560028301805491611070836116d6565b919050555050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526110b39085906323b872dd60e01b90608401610da9565b50505050565b6001600160a01b03811661111e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103ff565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006111ce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661124b9092919063ffffffff16565b80519091501561047657808060200190518101906111ec91906116fd565b6104765760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103ff565b606061125a8484600085611262565b949350505050565b6060843b6112b25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ff565b600080866001600160a01b031685876040516112ce919061171a565b60006040518083038185875af1925050503d806000811461130b576040519150601f19603f3d011682016040523d82523d6000602084013e611310565b606091505b5091509150811561132457915061125a9050565b8051156113345780518082602001fd5b8360405162461bcd60e51b81526004016103ff9190611736565b6001600160a01b0381168114610d2857600080fd5b60006020828403121561137557600080fd5b81356113808161134e565b9392505050565b60006020828403121561139957600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156113d8578351835292840192918401916001016113bc565b50909695505050505050565b6000806000606084860312156113f957600080fd5b83356114048161134e565b925060208401356114148161134e565b929592945050506040919091013590565b600060c0828403121561143757600080fd5b50919050565b803560ff8116811461144e57600080fd5b919050565b600080600080610120858703121561146a57600080fd5b6114748686611425565b935061148260c0860161143d565b939693955050505060e082013591610100013590565b600080600080608085870312156114ae57600080fd5b843593506114be6020860161143d565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b818110156113d85783516001600160a01b0316835292840192918401916001016114ef565b8015158114610d2857600080fd5b6000806040838503121561153557600080fd5b82356115408161134e565b9150602083013561155081611514565b809150509250929050565b60008060e0838503121561156e57600080fd5b6115788484611425565b915060c08301356115508161134e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156115cf57600080fd5b81516113808161134e565b60e0810183356115e98161134e565b6001600160a01b03908116835260208581013590840152604080860135908401526060850135906116198261134e565b80821660608501526080860135608085015260a086013560a085015280851660c085015250509392505050565b60005b83811015611661578181015183820152602001611649565b50506000910152565b60008151808452611682816020860160208601611646565b601f01601f19169290920160200192915050565b6040815260006116a9604083018561166a565b905060018060a01b03831660208301529392505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016116f657634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561170f57600080fd5b815161138081611514565b6000825161172c818460208701611646565b9190910192915050565b602081526000611380602083018461166a56fea264697066735822122066c15fefa8bc9a3f8318579617e51784b9cfe1a8384f037c0982acf51e00bd9164736f6c634300081200330000000000000000000000007235256614e792c560e3ae33bdae3fa19fa61e0a0000000000000000000000006d72601a6b045527ac1b3a9fffa36c81795d4429