60806040526008805460ff191690556200001c6012600a62000379565b6200002d906402540be40062000391565b6009556200003e6012600a62000379565b6200004f906402540be40062000391565b600a553480156200005f57600080fd5b50604051620015f0380380620015f08339810160408190526200008291620003b3565b6040805180820182526007808252664b696e7461726f60c81b6020808401829052845180860190955291845290830152906003620000c1838262000482565b506004620000d0828262000482565b505050620000ed620000e76200012160201b60201c565b62000125565b600b80546001600160a01b0319166001600160a01b038316908117909155600a546200011a919062000177565b5062000569565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001d25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620001e691906200054e565b90915550506001600160a01b03821660009081526020819052604081208054839290620002159084906200054e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002bb5781600019048211156200029f576200029f62000264565b80851615620002ad57918102915b93841c93908002906200027f565b509250929050565b600082620002d45750600162000373565b81620002e35750600062000373565b8160018114620002fc5760028114620003075762000327565b600191505062000373565b60ff8411156200031b576200031b62000264565b50506001821b62000373565b5060208310610133831016604e8410600b84101617156200034c575081810a62000373565b6200035883836200027a565b80600019048211156200036f576200036f62000264565b0290505b92915050565b60006200038a60ff841683620002c3565b9392505050565b6000816000190483118215151615620003ae57620003ae62000264565b500290565b600060208284031215620003c657600080fd5b81516001600160a01b03811681146200038a57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200040957607f821691505b6020821081036200042a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025f57600081815260208120601f850160051c81016020861015620004595750805b601f850160051c820191505b818110156200047a5782815560010162000465565b505050505050565b81516001600160401b038111156200049e576200049e620003de565b620004b681620004af8454620003f4565b8462000430565b602080601f831160018114620004ee5760008415620004d55750858301515b600019600386901b1c1916600185901b1785556200047a565b600085815260208120601f198616915b828110156200051f57888601518255948401946001909101908401620004fe565b50858210156200053e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000821982111562000564576200056462000264565b500190565b61107780620005796000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80637c519ffb116100b8578063a9059cbb1161007c578063a9059cbb14610259578063c2b7bbb61461026c578063dd62ed3e1461027f578063ea1644d514610292578063f2fde38b146102a5578063ffb54a99146102b857600080fd5b80637c519ffb146102125780638da5cb5b1461021a5780638f9a55c01461023557806395d89b411461023e578063a457c2d71461024657600080fd5b806339509351116100ff57806339509351146101b15780636c29ffa4146101c457806370a08231146101d9578063715018a614610202578063751039fc1461020a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806323b872dd1461018f578063313ce567146101a2575b600080fd5b6101446102c5565b6040516101519190610d8f565b60405180910390f35b61016d610168366004610e00565b610357565b6040519015158152602001610151565b6002545b604051908152602001610151565b61016d61019d366004610e2a565b61036f565b60405160128152602001610151565b61016d6101bf366004610e00565b610393565b6101d76101d2366004610e66565b6103b5565b005b6101816101e7366004610ea2565b6001600160a01b031660009081526020819052604090205490565b6101d76103e8565b6101d76103fc565b6101d761040c565b6005546040516001600160a01b039091168152602001610151565b61018160095481565b61014461048b565b61016d610254366004610e00565b61049a565b61016d610267366004610e00565b610515565b6101d761027a366004610ea2565b610523565b61018161028d366004610ec4565b6105b8565b6101d76102a0366004610ef7565b6105e3565b6101d76102b3366004610ea2565b6105f0565b60085461016d9060ff1681565b6060600380546102d490610f10565b80601f016020809104026020016040519081016040528092919081815260200182805461030090610f10565b801561034d5780601f106103225761010080835404028352916020019161034d565b820191906000526020600020905b81548152906001019060200180831161033057829003601f168201915b5050505050905090565b600033610365818585610669565b5060019392505050565b60003361037d85828561078d565b610388858585610807565b506001949350505050565b6000336103658185856103a683836105b8565b6103b09190610f60565b610669565b6103bd610b8f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6103f0610b8f565b6103fa6000610be9565b565b610404610b8f565b600a54600955565b610414610b8f565b60085460ff161561047c5760405162461bcd60e51b815260206004820152602760248201527f45524332303a2054726164696e672063616e206265206f6e6c79206f70656e65604482015266321037b731b29760c91b60648201526084015b60405180910390fd5b6008805460ff19166001179055565b6060600480546102d490610f10565b600033816104a882866105b8565b9050838110156105085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610473565b6103888286868403610669565b600033610365818585610807565b61052b610b8f565b6001600160a01b03811660009081526006602052604090205460ff16156105945760405162461bcd60e51b815260206004820152601d60248201527f54686973207061697220697320616c7265616479206578636c756465640000006044820152606401610473565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6105eb610b8f565b600955565b6105f8610b8f565b6001600160a01b03811661065d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610473565b61066681610be9565b50565b6001600160a01b0383166106cb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610473565b6001600160a01b03821661072c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610473565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061079984846105b8565b9050600019811461080157818110156107f45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610473565b6108018484848403610669565b50505050565b6001600160a01b03831661082d5760405162461bcd60e51b815260040161047390610f78565b6001600160a01b0382166108535760405162461bcd60e51b815260040161047390610fbd565b6001600160a01b038316600090815260208190526040902054811480156108885750600b546001600160a01b03848116911614155b156108a9576103e861089c826103e7611000565b6108a6919061101f565b90505b600b546001600160a01b038381169116148015906108d55750600b546001600160a01b03848116911614155b15610b7f5760085460ff1661096757600b546001600160a01b038481169116146109675760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610473565b600b546001600160a01b038481169116148015906109935750600b546001600160a01b03838116911614155b80156109b757506001600160a01b03831660009081526006602052604090205460ff165b15610a4957600954816109df846001600160a01b031660009081526020819052604090205490565b6109e99190610f60565b1115610a495760405162461bcd60e51b815260206004820152602960248201527f544f4b454e3a20416d6f756e742065786365656473206d6178696d756d2077616044820152686c6c65742073697a6560b81b6064820152608401610473565b600b546001600160a01b03848116911614801590610a755750600b546001600160a01b03838116911614155b8015610a9a57506001600160a01b03821660009081526006602052604090205460ff16155b8015610abf57506001600160a01b03831660009081526006602052604090205460ff16155b15610b4f5760095481610ae7846001600160a01b031660009081526020819052604090205490565b610af19190610f60565b1115610b4f5760405162461bcd60e51b815260206004820152602760248201527f544f4b454e3a2042616c616e63652065786365656473206d61782077616c6c65604482015266742073697a652160c81b6064820152608401610473565b6001600160a01b03831660009081526007602052604090205460ff1615610b7f57600b546001600160a01b031691505b610b8a838383610c3b565b505050565b6005546001600160a01b031633146103fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610473565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316610c615760405162461bcd60e51b815260040161047390610f78565b6001600160a01b038216610c875760405162461bcd60e51b815260040161047390610fbd565b6001600160a01b03831660009081526020819052604090205481811015610cff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610473565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d36908490610f60565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d8291815260200190565b60405180910390a3610801565b600060208083528351808285015260005b81811015610dbc57858101830151858201604001528201610da0565b81811115610dce576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610dfb57600080fd5b919050565b60008060408385031215610e1357600080fd5b610e1c83610de4565b946020939093013593505050565b600080600060608486031215610e3f57600080fd5b610e4884610de4565b9250610e5660208501610de4565b9150604084013590509250925092565b60008060408385031215610e7957600080fd5b610e8283610de4565b915060208301358015158114610e9757600080fd5b809150509250929050565b600060208284031215610eb457600080fd5b610ebd82610de4565b9392505050565b60008060408385031215610ed757600080fd5b610ee083610de4565b9150610eee60208401610de4565b90509250929050565b600060208284031215610f0957600080fd5b5035919050565b600181811c90821680610f2457607f821691505b602082108103610f4457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610f7357610f73610f4a565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600081600019048311821515161561101a5761101a610f4a565b500290565b60008261103c57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122009ea32333fe90f21ae9de8bc382b62a5ac4e84923325bc87f7e4040f175240d064736f6c634300080f00330000000000000000000000007fd0443ccdfe85978b6d262a85c2670044b28596