60806040819052664ff1aaf3af109e600b55668e1bc9bf040000600c55600080546001600160a01b031916339081178255918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03199182161790915560028054735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9216821790556040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602482015263c9c65396906044016020604051808303816000875af11580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b9190610202565b600380546001600160a01b0319166001600160a01b03928316179055600b546000805483168152600660205260408120919091555416600480546001600160a01b0319166001600160a01b0392831690811790915560035482166000908152600760209081526040808320938352928152828220600019905581548416825260059052908120805460ff1916600117905554166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516101f591815260200190565b60405180910390a3610232565b60006020828403121561021457600080fd5b81516001600160a01b038116811461022b57600080fd5b9392505050565b611468806102416000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806352390c02116100b8578063a8aa1b311161007c578063a8aa1b31146102df578063a9059cbb146102f2578063b59c097414610305578063dd62ed3e1461030d578063e6bd7ed114610346578063ee97f7f31461035957600080fd5b806352390c021461025e57806370a082311461027157806383d972f91461029a5780638da5cb5b146102ba57806395d89b411461014757600080fd5b80632782e35b1161010a5780632782e35b146101d3578063313ce567146101f65780633685d419146102055780633b24c4bb146102185780633fb5c1cb1461023857806342966c681461024b57600080fd5b806306fdde0314610147578063095ea7b31461017657806318160ddd1461019957806323b872dd146101ab57806326fae0d3146101be575b600080fd5b6040805180820182526004815263414c454f60e01b6020820152905161016d91906111b8565b60405180910390f35b61018961018436600461121e565b61036c565b604051901515815260200161016d565b600b545b60405190815260200161016d565b6101896101b936600461124a565b610383565b6101d16101cc36600461128b565b61044b565b005b6101896101e136600461128b565b60056020526000908152604090205460ff1681565b6040516006815260200161016d565b6101d161021336600461128b565b6104d5565b61019d61022636600461128b565b600a6020526000908152604090205481565b6101d16102463660046112a8565b610510565b6101d16102593660046112a8565b61053f565b6101d161026c36600461128b565b6105d0565b61019d61027f36600461128b565b6001600160a01b031660009081526006602052604090205490565b61019d6102a836600461128b565b60096020526000908152604090205481565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161016d565b6003546102c7906001600160a01b031681565b61018961030036600461121e565b610608565b6101d1610625565b61019d61031b3660046112c1565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6101d16103543660046112a8565b6106a6565b6004546102c7906001600160a01b031681565b600061037933848461072f565b5060015b92915050565b6000610390848484610854565b15610440576001600160a01b03841660009081526007602090815260408083203384529091529020548281101561041f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61042a858585610954565b61043e85336104398685611310565b61072f565b505b5060015b9392505050565b6000546001600160a01b031633146104755760405162461bcd60e51b815260040161041690611323565b600380546001600160a01b039081166000908152600760208181526040808420600480548716865290835281852085905580546001600160a01b031916978616978817905594549093168252825282812093815292905290206000199055565b6004546001600160a01b031633146104ec57600080fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b0316331461053a5760405162461bcd60e51b815260040161041690611323565b600c55565b6000546001600160a01b031633146105695760405162461bcd60e51b815260040161041690611323565b80600660006105806000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546105af9190611310565b9250508190555080600b60008282546105c89190611310565b909155505050565b6004546001600160a01b031633146105e757600080fd5b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000610615338484610854565b1561037957610379338484610954565b6004546001600160a01b0316331461063c57600080fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068c57600080fd5b505af11580156106a0573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146106d05760405162461bcd60e51b815260040161041690611323565b80600660006106e76000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546107169190611358565b9250508190555080600b60008282546105c89190611358565b6001600160a01b0383166107915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610416565b6001600160a01b0382166107f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610416565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526005602052604081205460ff168061089357506001600160a01b03831660009081526005602052604090205460ff165b156108a057506001610444565b6108a984610b3d565b806108b857506108b883610b3d565b156108c557506000610444565b6108ce84610dc3565b156108db57506001610444565b6108e483610dc3565b156104405760006108f483610df2565b6001600160a01b0386166000908152600860209081526040808320546009835281842054600a909352922054929350909161092f8683611358565b831015801561094957506109438482611358565b600c5410155b945050505050610444565b6001600160a01b0383166109b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610416565b6001600160a01b038216610a1a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610416565b610a2583838361104d565b6001600160a01b038316600090815260066020526040902054811115610a9c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610416565b6001600160a01b03831660009081526006602052604081208054839290610ac4908490611310565b90915550506001600160a01b03821660009081526006602052604081208054839290610af1908490611358565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161084791815260200190565b6000816001600160a01b03163b600003610b5957506000919050565b60008290506000806000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610bbd575060408051601f3d908101601f19168201909252610bba9181019061136b565b60015b610bfe573d808015610beb576040519150601f19603f3d011682016040523d82523d6000602084013e610bf0565b606091505b506000979650505050505050565b9250836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c5a575060408051601f3d908101601f19168201909252610c579181019061136b565b60015b610c88573d808015610beb576040519150601f19603f3d011682016040523d82523d6000602084013e610bf0565b9150836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ce4575060408051601f3d908101601f19168201909252610ce191810190611388565b60015b610d12573d808015610beb576040519150601f19603f3d011682016040523d82523d6000602084013e610bf0565b604051630b4c774160e11b81526001600160a01b0380861660048301528416602482015262ffffff82166044820152909150731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290606401602060405180830381865afa158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061136b565b6001600160a01b0316866001600160a01b031614945050505050919050565b6001546000906001600160a01b038381169116148061037d5750506003546001600160a01b0390811691161490565b6000806000600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6e91906113c9565b506001600160701b031691506001600160701b03169150600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc919061136b565b6001600160a01b0316600360009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c919061136b565b6001600160a01b03160361100e57600154604051630153543560e21b81526004810186905260248101839052604481018490526001600160a01b039091169063054d50d4906064015b602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110069190611419565b949350505050565b600154604051630153543560e21b81526004810186905260248101849052604481018390526001600160a01b039091169063054d50d490606401610fc5565b61105561110e565b156111095761106383610dc3565b15611096576001600160a01b03821660009081526008602052604081208054839290611090908490611358565b90915550505b61109f82610dc3565b15611109576001600160a01b038316600090815260096020526040812080548392906110cc908490611358565b909155506110db905081610df2565b6001600160a01b0384166000908152600a602052604081208054909190611103908490611358565b90915550505b505050565b6000806000600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a91906113c9565b506001600160701b031691506001600160701b031691506000821180156111b15750600081115b9250505090565b600060208083528351808285015260005b818110156111e5578581018301518582016040015282016111c9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461121b57600080fd5b50565b6000806040838503121561123157600080fd5b823561123c81611206565b946020939093013593505050565b60008060006060848603121561125f57600080fd5b833561126a81611206565b9250602084013561127a81611206565b929592945050506040919091013590565b60006020828403121561129d57600080fd5b813561044481611206565b6000602082840312156112ba57600080fd5b5035919050565b600080604083850312156112d457600080fd5b82356112df81611206565b915060208301356112ef81611206565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561037d5761037d6112fa565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561037d5761037d6112fa565b60006020828403121561137d57600080fd5b815161044481611206565b60006020828403121561139a57600080fd5b815162ffffff8116811461044457600080fd5b80516001600160701b03811681146113c457600080fd5b919050565b6000806000606084860312156113de57600080fd5b6113e7846113ad565b92506113f5602085016113ad565b9150604084015163ffffffff8116811461140e57600080fd5b809150509250925092565b60006020828403121561142b57600080fd5b505191905056fea26469706673582212205febe2d8a173015524bb93295a9b0f258d09c46d7fee40c001813e184e8558b264736f6c63430008130033