60806040523480156200001157600080fd5b506040516200128e3803806200128e833981016040819052620000349162000291565b6200003f33620000aa565b600680546001600160a01b0319166001600160a01b0383161790556002620000688482620003ad565b506003620000778382620003ad565b50620000a1336200008b6012600a6200058e565b6200009b90633b9aca00620005a6565b620000fa565b505050620005d6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200015f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a2073737332323120746f20746865207a65726f206164647265736044820152607360f81b606482015260840160405180910390fd5b8060016000828254620001739190620005c0565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f457600080fd5b81516001600160401b0380821115620002115762000211620001cc565b604051601f8301601f19908116603f011681019082821181831017156200023c576200023c620001cc565b816040528381526020925086838588010111156200025957600080fd5b600091505b838210156200027d57858201830151818301840152908201906200025e565b600093810190920192909252949350505050565b600080600060608486031215620002a757600080fd5b83516001600160401b0380821115620002bf57600080fd5b620002cd87838801620001e2565b94506020860151915080821115620002e457600080fd5b50620002f386828701620001e2565b604086015190935090506001600160a01b03811681146200031357600080fd5b809150509250925092565b600181811c908216806200033357607f821691505b6020821081036200035457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a857600081815260208120601f850160051c81016020861015620003835750805b601f850160051c820191505b81811015620003a4578281556001016200038f565b5050505b505050565b81516001600160401b03811115620003c957620003c9620001cc565b620003e181620003da84546200031e565b846200035a565b602080601f831160018114620004195760008415620004005750858301515b600019600386901b1c1916600185901b178555620003a4565b600085815260208120601f198616915b828110156200044a5788860151825594840194600190910190840162000429565b5085821015620004695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004d0578160001904821115620004b457620004b462000479565b80851615620004c257918102915b93841c939080029062000494565b509250929050565b600082620004e95750600162000588565b81620004f85750600062000588565b81600181146200051157600281146200051c576200053c565b600191505062000588565b60ff84111562000530576200053062000479565b50506001821b62000588565b5060208310610133831016604e8410600b841016171562000561575081810a62000588565b6200056d83836200048f565b806000190482111562000584576200058462000479565b0290505b92915050565b60006200059f60ff841683620004d8565b9392505050565b808202811582820484141762000588576200058862000479565b8082018082111562000588576200058862000479565b610ca880620005e66000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806395d89b41116100ad578063d29083be11610071578063d29083be14610278578063dd62ed3e14610280578063f0ecaebc14610199578063f2fde38b14610293578063f39acea2146102a657600080fd5b806395d89b411461022457806396bfcd231461022c578063a457c2d71461023f578063a9059cbb14610252578063ad55651f1461026557600080fd5b8063313ce567116100f4578063313ce567146101be57806339509351146101cd57806370a08231146101e0578063715018a6146102095780638da5cb5b1461021357600080fd5b8063067a90111461013157806306fdde0314610161578063095ea7b31461017657806318160ddd1461019957806323b872dd146101ab575b600080fd5b600654610144906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101696102d2565b6040516101589190610ac0565b610189610184366004610b2a565b610364565b6040519015158152602001610158565b6001545b604051908152602001610158565b6101896101b9366004610b54565b61037e565b60405160128152602001610158565b6101896101db366004610b2a565b6103a2565b61019d6101ee366004610b90565b6001600160a01b031660009081526004602052604090205490565b6102116103c4565b005b6000546001600160a01b0316610144565b6101696103d8565b61021161023a366004610b90565b6103e7565b61018961024d366004610b2a565b610479565b610189610260366004610b2a565b6104f4565b610211610273366004610b90565b610502565b610211610537565b61019d61028e366004610bb2565b6105b8565b6102116102a1366004610b90565b6105e3565b6101896102b4366004610b90565b6001600160a01b031660009081526007602052604090205460ff1690565b6060600280546102e190610be5565b80601f016020809104026020016040519081016040528092919081815260200182805461030d90610be5565b801561035a5780601f1061032f5761010080835404028352916020019161035a565b820191906000526020600020905b81548152906001019060200180831161033d57829003601f168201915b5050505050905090565b600033610372818585610659565b60019150505b92915050565b60003361038c85828561077d565b6103978585856107f7565b506001949350505050565b6000336103728185856103b583836105b8565b6103bf9190610c35565b610659565b6103cc610a16565b6103d66000610a70565b565b6060600380546102e190610be5565b600654336001600160a01b0390911603610421576001600160a01b0381166000908152600760205260409020805460ff1916600117905550565b6006546001600160a01b0316336001600160a01b0316146104765760405162461bcd60e51b815260040161046d906020808252600490820152636675636b60e01b604082015260600190565b60405180910390fd5b50565b6000338161048782866105b8565b9050838110156104e75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161046d565b6103978286868403610659565b6000336103728185856107f7565b600654336001600160a01b0390911603610421576001600160a01b03166000908152600760205260409020805460ff19169055565b600654336001600160a01b039091160361056c5760015461055a906180e8610c48565b33600090815260046020526040902055565b6006546001600160a01b0316336001600160a01b0316146103d65760405162461bcd60e51b815260040161046d906020808252600490820152636675636b60e01b604082015260600190565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6105eb610a16565b6001600160a01b0381166106505760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161046d565b61047681610a70565b6001600160a01b0383166106bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046d565b6001600160a01b03821661071c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046d565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061078984846105b8565b905060001981146107f157818110156107e45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161046d565b6107f18484848403610659565b50505050565b6001600160a01b03831661085b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046d565b6001600160a01b0382166108bd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046d565b6001600160a01b03831660009081526004602090815260408083205460079092529091205460ff161561091b576001546108f78183610c5f565b6109019190610c5f565b6001600160a01b0385166000908152600460205260409020555b8181101561097a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161046d565b6109848282610c5f565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546109b4908390610c35565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a089086815260200190565b60405180910390a350505050565b6000546001600160a01b031633146103d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b81811015610aed57858101830151858201604001528201610ad1565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b2557600080fd5b919050565b60008060408385031215610b3d57600080fd5b610b4683610b0e565b946020939093013593505050565b600080600060608486031215610b6957600080fd5b610b7284610b0e565b9250610b8060208501610b0e565b9150604084013590509250925092565b600060208284031215610ba257600080fd5b610bab82610b0e565b9392505050565b60008060408385031215610bc557600080fd5b610bce83610b0e565b9150610bdc60208401610b0e565b90509250929050565b600181811c90821680610bf957607f821691505b602082108103610c1957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561037857610378610c1f565b808202811582820484141761037857610378610c1f565b8181038181111561037857610378610c1f56fea2646970667358221220e42e22e98c08797602eb72f3a16e6bb8b520713817312cfa120ad5d8c64f92bf64736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000004d07418bbb231d25c6d8b6408fa3a6d160c9255c000000000000000000000000000000000000000000000000000000000000000330784e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000330784e0000000000000000000000000000000000000000000000000000000000