608060405234801561000f575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040805180820190915260078152664d494e45444f4760c81b602082015260069061007b90826101b2565b506040805180820190915260078152664d494e45444f4760c81b60208201526005906100a790826101b2565b506004805460ff191660121790556b033b2e3c9fd0803ce80000006003819055335f8181526001602052604080822084905551919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161010d9190815260200190565b60405180910390a361026c565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061014257607f821691505b60208210810361016057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101ad57805f5260205f20601f840160051c8101602085101561018b5750805b601f840160051c820191505b818110156101aa575f8155600101610197565b50505b505050565b81516001600160401b038111156101cb576101cb61011a565b6101df816101d9845461012e565b84610166565b6020601f821160018114610211575f83156101fa5750848201515b5f19600385901b1c1916600184901b1784556101aa565b5f84815260208120601f198516915b828110156102405787850151825560209485019460019092019101610220565b508482101561025d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b610d70806102795f395ff3fe608060405234801561000f575f80fd5b506004361061011c575f3560e01c8063715018a6116100a9578063a9059cbb1161006e578063a9059cbb14610253578063b09f126614610266578063d28d88521461026e578063dd62ed3e14610276578063f2fde38b146102ae575f80fd5b8063715018a6146101fa578063893d20e8146102045780638da5cb5b1461022857806395d89b4114610238578063a457c2d714610240575f80fd5b8063313ce567116100ef578063313ce5671461018657806332424aa31461019f57806339509351146101ac57806342966c68146101bf57806370a08231146101d2575f80fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b5f80fd5b6101286102c1565b6040516101359190610b94565b60405180910390f35b61015161014c366004610be4565b610351565b6040519015158152602001610135565b6003545b604051908152602001610135565b610151610181366004610c0c565b610367565b60045460ff165b60405160ff9091168152602001610135565b60045461018d9060ff1681565b6101516101ba366004610be4565b6103ce565b6101516101cd366004610c46565b610403565b6101656101e0366004610c5d565b6001600160a01b03165f9081526001602052604090205490565b610202610416565b005b5f546001600160a01b03165b6040516001600160a01b039091168152602001610135565b5f546001600160a01b0316610210565b6101286104a8565b61015161024e366004610be4565b6104b7565b610151610261366004610be4565b610523565b61012861052f565b6101286105bb565b610165610284366004610c76565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6102026102bc366004610c5d565b6105c8565b6060600680546102d090610ca7565b80601f01602080910402602001604051908101604052809291908181526020018280546102fc90610ca7565b80156103475780601f1061031e57610100808354040283529160200191610347565b820191905f5260205f20905b81548152906001019060200180831161032a57829003601f168201915b5050505050905090565b5f61035d338484610619565b5060015b92915050565b5f610373848484610726565b6103c484336103bf85604051806060016040528060218152602001610d1a602191396001600160a01b038a165f90815260026020908152604080832033845290915290205491906108dc565b610619565b5060019392505050565b335f8181526002602090815260408083206001600160a01b0387168452909152812054909161035d9185906103bf9086610914565b5f61040e3383610979565b506001919050565b5f546001600160a01b031633146104605760405162461bcd60e51b815260206004820152600960248201526837b7363ca7bbb732b960b91b60448201526064015b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6060600580546102d090610ca7565b604080518082018252601e81527f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000602080830191909152335f818152600283528481206001600160a01b038816825290925292812054909261035d92909186916103bf919087906108dc565b5f61035d338484610726565b6005805461053c90610ca7565b80601f016020809104026020016040519081016040528092919081815260200182805461056890610ca7565b80156105b35780601f1061058a576101008083540402835291602001916105b3565b820191905f5260205f20905b81548152906001019060200180831161059657829003601f168201915b505050505081565b6006805461053c90610ca7565b5f546001600160a01b0316331461060d5760405162461bcd60e51b815260206004820152600960248201526837b7363ca7bbb732b960b91b6044820152606401610457565b61061681610a95565b50565b6001600160a01b03831661066f5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610457565b6001600160a01b0382166106c55760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610457565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661077c5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610457565b6001600160a01b0382166107d25760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610457565b6001600160a01b0383165f908152600160205260409020548111156108395760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606401610457565b6001600160a01b0383165f9081526001602052604090205461085b9082610b53565b6001600160a01b038085165f9081526001602052604080822093909355908416815220546108899082610914565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107199085815260200190565b5f81848411156108ff5760405162461bcd60e51b81526004016104579190610b94565b505f61090b8486610cf3565b95945050505050565b5f806109208385610d06565b9050838110156109725760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610457565b9392505050565b6001600160a01b0382166109cf5760405162461bcd60e51b815260206004820152601a60248201527f4275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610457565b604080518082018252601b81527f4275726e20616d6f756e7420657863656564732062616c616e636500000000006020808301919091526001600160a01b0385165f90815260019091529190912054610a299183906108dc565b6001600160a01b0383165f90815260016020526040902055600354610a4e9082610b53565b6003556040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038116610afa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610457565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61097283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506108dc565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610bdf575f80fd5b919050565b5f8060408385031215610bf5575f80fd5b610bfe83610bc9565b946020939093013593505050565b5f805f60608486031215610c1e575f80fd5b610c2784610bc9565b9250610c3560208501610bc9565b929592945050506040919091013590565b5f60208284031215610c56575f80fd5b5035919050565b5f60208284031215610c6d575f80fd5b61097282610bc9565b5f8060408385031215610c87575f80fd5b610c9083610bc9565b9150610c9e60208401610bc9565b90509250929050565b600181811c90821680610cbb57607f821691505b602082108103610cd957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561036157610361610cdf565b8082018082111561036157610361610cdf56fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203ef9ea1264ee116fd531fca810dd8aa7be16b92cc4f402349ddbcf55987a158664736f6c634300081a0033