60806040526004805460ff1916600117905534801561001d57600080fd5b50600080546001600160a01b0319163390811782556040805192835260208301919091527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1610082336b02df0d9fb17359d35df80000610087565b610119565b806003600082825461009991906100f2565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b8082018082111561011357634e487b7160e01b600052601160045260246000fd5b92915050565b610b90806101286000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806342966c6811610097578063969bec6111610066578063969bec61146102b4578063a9059cbb146102c7578063dd62ed3e146102da578063eae4e77c1461030557600080fd5b806342966c681461022557806370a08231146102385780638da5cb5b1461025857806395d89b411461027857600080fd5b80632b968958116100d35780632b968958146101a45780632f34d282146101ae578063313c06a0146101c1578063313ce5671461020b57600080fd5b806306fdde0314610105578063095ea7b31461015757806318160ddd1461017a57806323b872dd14610191575b600080fd5b6101416040518060400160405280600681526020017f576f6e647973000000000000000000000000000000000000000000000000000081525081565b60405161014e9190610990565b60405180910390f35b61016a610165366004610a26565b610312565b604051901515815260200161014e565b61018360035481565b60405190815260200161014e565b61016a61019f366004610a50565b61038c565b6101ac61046a565b005b6101ac6101bc366004610a8c565b610539565b6004546101e690610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014e565b610213601281565b60405160ff909116815260200161014e565b6101ac610233366004610aae565b61065f565b610183610246366004610a8c565b60016020526000908152604090205481565b6000546101e69073ffffffffffffffffffffffffffffffffffffffff1681565b6101416040518060400160405280600581526020017f574f4e445900000000000000000000000000000000000000000000000000000081525081565b6101ac6102c2366004610ac7565b61066c565b61016a6102d5366004610a26565b6106ee565b6101836102e8366004610ae9565b600260209081526000928352604080842090915290825290205481565b60045461016a9060ff1681565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061037a9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610454578281101561041e576040517f5dd567eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166000908152600260209081526040808320338452909152902083820390555b61045f858585610704565b506001949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104bb576040517f0b2254ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556040805173ffffffffffffffffffffffffffffffffffffffff90921680835260208301939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058a576040517f0b2254ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600454610100900473ffffffffffffffffffffffffffffffffffffffff1615610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f576f6e6479733a204c5020616c72656164792073657400000000000000000000604482015260640160405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6106693382610816565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106bd576040517f0b2254ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60006106fb338484610704565b50600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205481811015610764576040517fec49206100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220805486900390559185168152208054830190556107a98484846108e5565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161080891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205481811015610876576040517fec49206100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260016020908152604080832080548790039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60045460ff168015610917575060045473ffffffffffffffffffffffffffffffffffffffff8381166101009092041614155b8015610954575060035473ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610952906064610b1c565b115b1561098b576040517f7898982a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60006020808352835180602085015260005b818110156109be578581018301518582016040015282016109a2565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a2157600080fd5b919050565b60008060408385031215610a3957600080fd5b610a42836109fd565b946020939093013593505050565b600080600060608486031215610a6557600080fd5b610a6e846109fd565b9250610a7c602085016109fd565b9150604084013590509250925092565b600060208284031215610a9e57600080fd5b610aa7826109fd565b9392505050565b600060208284031215610ac057600080fd5b5035919050565b600060208284031215610ad957600080fd5b81358015158114610aa757600080fd5b60008060408385031215610afc57600080fd5b610b05836109fd565b9150610b13602084016109fd565b90509250929050565b8082028115828204841417610386577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a85099bf7e3dd5c2545df2b419cc10e7c5451291420573f14a8e941bfea781b564736f6c63430008180033