60806040525f6005555f6006555f600755606467016345785d8a00006002610027919061017a565b61003191906101a3565b600855600b80546001600160b01b031916734cdbb2fb653acddec42a5c87771abd398e5433f6179055348015610065575f80fd5b5061006f3361012b565b335f818152600260209081526040808320805460ff1990811660019081179092553085528285208054821683179055600b546001600160a01b0316855282852080549091169091179055600980546001600160a01b031916734752ba5dbc23f44d87826276bf6fd6b1c372ad241790558383526004825280832067016345785d8a00009081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36101c2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b808202811582820484141761019d57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826101bd57634e487b7160e01b5f52601260045260245ffd5b500490565b61153c806101cf5f395ff3fe608060405260043610610113575f3560e01c8063715018a61161009d578063dd62ed3e11610062578063dd62ed3e146102f6578063e48461991461033a578063efa4af4c1461034e578063f2fde38b14610362578063fdec2dd114610381575f80fd5b8063715018a61461027b578063893d20e81461028f5780638da5cb5b1461028f57806395d89b41146102ab578063a9059cbb146102d7575f80fd5b80631acc26bc116100e35780631acc26bc146101dc57806323b872dd146101f2578063313ce567146102115780633eaaf86b1461022c57806370a0823114610247575f80fd5b806303fd2a451461011e57806306fdde0314610150578063095ea7b31461018b57806318160ddd146101ba575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5061013361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015b575f80fd5b5060408051808201909152600a81526942617365642044616e6b60b01b60208201525b6040516101479190611278565b348015610196575f80fd5b506101aa6101a53660046112d7565b610389565b6040519015158152602001610147565b3480156101c5575f80fd5b506101ce61039f565b604051908152602001610147565b3480156101e7575f80fd5b506101f06103e3565b005b3480156101fd575f80fd5b506101aa61020c366004611301565b610423565b34801561021c575f80fd5b5060405160098152602001610147565b348015610237575f80fd5b506101ce67016345785d8a000081565b348015610252575f80fd5b506101ce61026136600461133f565b6001600160a01b03165f9081526004602052604090205490565b348015610286575f80fd5b506101f0610498565b34801561029a575f80fd5b505f546001600160a01b0316610133565b3480156102b6575f80fd5b5060408051808201909152600481526344414e4b60e01b602082015261017e565b3480156102e2575f80fd5b506101aa6102f13660046112d7565b6104cc565b348015610301575f80fd5b506101ce610310366004611361565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610345575f80fd5b506101f06104e2565b348015610359575f80fd5b506101f0610586565b34801561036d575f80fd5b506101f061037c36600461133f565b6105ba565b6101f0610654565b5f6103953384846108f3565b5060015b92915050565b5f61dead5f5260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546103de9067016345785d8a00006113ac565b905090565b5f546001600160a01b031633146104155760405162461bcd60e51b815260040161040c906113bf565b60405180910390fd5b67016345785d8a0000600855565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1914610485576001600160a01b0384165f9081526001602090815260408083203384529091528120805484929061047f9084906113ac565b90915550505b6104908484846109b6565b949350505050565b5f546001600160a01b031633146104c15760405162461bcd60e51b815260040161040c906113bf565b6104ca5f610ec0565b565b5f6104d83384846109b6565b5060019392505050565b5f546001600160a01b0316331461050b5760405162461bcd60e51b815260040161040c906113bf565b600b54600160a01b900460ff16156105655760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c6564000000000000000000604482015260640161040c565b600b805461ffff60a01b191661010160a01b17905560146005819055600655565b5f546001600160a01b031633146105af5760405162461bcd60e51b815260040161040c906113bf565b5f6005819055600655565b5f546001600160a01b031633146105e35760405162461bcd60e51b815260040161040c906113bf565b6001600160a01b0381166106485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040c565b61065181610ec0565b50565b5f546001600160a01b0316331461067d5760405162461bcd60e51b815260040161040c906113bf565b60095f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f191906113f4565b6001600160a01b031663c9c6539660095f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561074f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077391906113f4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af11580156107bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e091906113f4565b600a80546001600160a01b0319166001600160a01b039283169081179091555f908152600360205260409020805460ff19166001179055600954610828913091165f196108f3565b600954305f818152600460205260408120546001600160a01b039093169263f305d719923492909190806108635f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108c9573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108ee919061140f565b505050565b6001600160a01b03831661093f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161040c565b6001600160a01b03821661098b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161040c565b6001600160a01b039283165f9081526001602090815260408083209490951682529290925291902055565b5f60016001600160a01b038416610a1b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040c565b6001600160a01b038516610a7f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161040c565b5f8311610ae05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161040c565b6001600160a01b0385165f9081526002602052604090205460ff16158015610b2057506001600160a01b0384165f9081526002602052604090205460ff16155b15610b7757600b54600160a01b900460ff16610b775760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b604482015260640161040c565b6001600160a01b0385165f9081526002602052604090205460ff16158015610bb757506001600160a01b0384165f9081526002602052604090205460ff16155b8015610bdb57506001600160a01b0384165f9081526003602052604090205460ff16155b8015610bf257506001600160a01b03841661dead14155b15610c6b576008546001600160a01b0385165f90815260046020526040902054610c1d90859061143a565b1115610c6b5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161040c565b610c758585610f0f565b8015610c8b5750600b54600160b01b900460ff16155b8015610c9d5750610c9d858585610f54565b15610d4057305f908152600460205260409020548015610d07576064610ccc67016345785d8a0000600161144d565b610cd69190611464565b8110610cfe576064610cf167016345785d8a0000600161144d565b610cfb9190611464565b90505b610d0781610fb0565b600b546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610d3d573d5f803e3d5ffd5b50505b6001600160a01b0385165f9081526002602052604090205460ff1680610d7d57506001600160a01b0384165f9081526002602052604090205460ff165b15610d8557505f5b5f81610d915783610daf565b610daf86610d9f8888611166565b610da98989610f0f565b876111ab565b6001600160a01b0387165f9081526002602052604090205490915060ff168015610de257506001600160a01b0386163014155b8015610dfb57505f546001600160a01b03878116911614155b15610e0d57610e0a81856113ac565b93505b6001600160a01b0386165f9081526004602052604081208054869290610e349084906113ac565b90915550506001600160a01b0385165f9081526004602052604081208054839290610e6090849061143a565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eac91815260200190565b60405180910390a350600195945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f90815260036020526040812054819060ff16801561049057505050506001600160a01b03165f9081526003602052604090205460ff161590565b600b545f90600160a81b900460ff168015610f8757506001600160a01b0384165f9081526002602052604090205460ff16155b8015610490575050506001600160a01b03165f9081526002602052604090205460ff1615919050565b600b805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ff657610ff6611483565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561104d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107191906113f4565b8160018151811061108457611084611483565b6001600160a01b03928316602091820292909201810191909152305f90815260018252604080822060095490941682529290915220545f19146110ea57305f9081526001602090815260408083206009546001600160a01b0316845290915290205f1990555b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906111229085905f90869030904290600401611497565b5f604051808303815f87803b158015611139575f80fd5b505af192505050801561114a575060015b6111545750611156565b505b50600b805460ff60b01b19169055565b6001600160a01b0381165f90815260036020526040812054819060ff1615801561049057505050506001600160a01b03165f9081526003602052604090205460ff1690565b5f8084156111bc57506005546111d0565b83156111cb57506006546111d0565b506007545b805f036111e05782915050610490565b5f60646111ed838661144d565b6111f79190611464565b9050801561126357305f908152600460205260408120805483929061121d90849061143a565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61126d81856113ac565b979650505050505050565b5f6020808352835180828501525f5b818110156112a357858101830151858201604001528201611287565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610651575f80fd5b5f80604083850312156112e8575f80fd5b82356112f3816112c3565b946020939093013593505050565b5f805f60608486031215611313575f80fd5b833561131e816112c3565b9250602084013561132e816112c3565b929592945050506040919091013590565b5f6020828403121561134f575f80fd5b813561135a816112c3565b9392505050565b5f8060408385031215611372575f80fd5b823561137d816112c3565b9150602083013561138d816112c3565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561039957610399611398565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611404575f80fd5b815161135a816112c3565b5f805f60608486031215611421575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561039957610399611398565b808202811582820484141761039957610399611398565b5f8261147e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156114e55784516001600160a01b0316835293830193918301916001016114c0565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122044c32c7102af284ff7390d66b398b6098e770abd7aacdfd0d32571812c7094df64736f6c63430008150033