60806040526005805460ff60a01b1916600160a01b1790553480156200002457600080fd5b503360405180604001604052806004815260200163536f6d6560e01b815250604051806040016040528060058152602001642a27a5a2a760d91b81525081600390816200007291906200044b565b5060046200008182826200044b565b5050506001600160a01b038116620000b457604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000bf8162000117565b50336000908152600760205260409020805460ff1916600117905569d3c21bcecceda10000006103e8620000f58260056200052d565b6200010191906200054d565b60065562000110338262000169565b5062000586565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001955760405163ec442f0560e01b815260006004820152602401620000ab565b620001a360008383620001a7565b5050565b600554600160a01b900460ff168015620001da57506001600160a01b03821660009081526007602052604090205460ff16155b1562000260576006548162000204846001600160a01b031660009081526020819052604090205490565b62000210919062000570565b1115620002605760405162461bcd60e51b815260206004820152601e60248201527f4d6178207065722077616c6c6574206c696d69742065786365656465642e00006044820152606401620000ab565b6200026d83838362000272565b505050565b6001600160a01b038316620002a157806002600082825462000295919062000570565b90915550620003159050565b6001600160a01b03831660009081526020819052604090205481811015620002f65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000ab565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620003335760028054829003905562000352565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200039891815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003d057607f821691505b602082108103620003f157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200026d576000816000526020600020601f850160051c81016020861015620004225750805b601f850160051c820191505b8181101562000443578281556001016200042e565b505050505050565b81516001600160401b03811115620004675762000467620003a5565b6200047f81620004788454620003bb565b84620003f7565b602080601f831160018114620004b757600084156200049e5750858301515b600019600386901b1c1916600185901b17855562000443565b600085815260208120601f198616915b82811015620004e857888601518255948401946001909101908401620004c7565b5085821015620005075787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000547576200054762000517565b92915050565b6000826200056b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000547576200054762000517565b610f7780620005966000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a9059cbb11610066578063a9059cbb14610218578063dd62ed3e1461022b578063f2fde38b14610271578063f928364c1461028457600080fd5b8063715018a6146101cd5780638da5cb5b146101d557806395d89b41146101fd578063a28835b61461020557600080fd5b806323b872dd116100d357806323b872dd14610162578063313ce567146101755780634437152a1461018457806370a082311461019757600080fd5b806306fdde0314610105578063095ea7b3146101235780631151a18a1461014657806318160ddd14610150575b600080fd5b61010d61028c565b60405161011a9190610d28565b60405180910390f35b610136610131366004610dbe565b61031e565b604051901515815260200161011a565b61014e610338565b005b6002545b60405190815260200161011a565b610136610170366004610de8565b6103fa565b6040516012815260200161011a565b61014e610192366004610e24565b61041e565b6101546101a5366004610e24565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61014e610475565b60055460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011a565b61010d610489565b61014e610213366004610e24565b610498565b610136610226366004610dbe565b610641565b610154610239366004610e46565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61014e61027f366004610e24565b61064f565b61014e6106b0565b60606003805461029b90610e79565b80601f01602080910402602001604051908101604052809291908181526020018280546102c790610e79565b80156103145780601f106102e957610100808354040283529160200191610314565b820191906000526020600020905b8154815290600101906020018083116102f757829003601f168201915b5050505050905090565b60003361032c8185856106e2565b60019150505b92915050565b6103406106f4565b604051600090339047908381818185875af1925050503d8060008114610382576040519150601f19603f3d011682016040523d82523d6000602084013e610387565b606091505b50509050806103f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4661696c656420746f2073656e6420457468657200000000000000000000000060448201526064015b60405180910390fd5b50565b600033610408858285610747565b610413858585610816565b506001949350505050565b6104266106f4565b73ffffffffffffffffffffffffffffffffffffffff16600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61047d6106f4565b61048760006108c1565b565b60606004805461029b90610e79565b6104a06106f4565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa15801561050d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105319190610ecc565b90506000811161059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f20746f6b656e73000000000000000000000000000000000000000000000060448201526064016103ee565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb906044016020604051808303816000875af1158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190610ee5565b61063d57600080fd5b5050565b60003361032c818585610816565b6106576106f4565b73ffffffffffffffffffffffffffffffffffffffff81166106a7576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016103ee565b6103f7816108c1565b6106b86106f4565b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6106ef8383836001610938565b505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610487576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016103ee565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108105781811015610801576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064016103ee565b61081084848484036000610938565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610866576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103ee565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103ee565b6106ef838383610a80565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8416610988576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103ee565b73ffffffffffffffffffffffffffffffffffffffff83166109d8576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103ee565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602090815260408083209387168352929052208290558015610810578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a7291815260200190565b60405180910390a350505050565b60055474010000000000000000000000000000000000000000900460ff168015610ad0575073ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090205460ff16155b15610b775760065481610b058473ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610b0f9190610f07565b1115610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d6178207065722077616c6c6574206c696d69742065786365656465642e000060448201526064016103ee565b6106ef83838373ffffffffffffffffffffffffffffffffffffffff8316610bb5578060026000828254610baa9190610f07565b90915550610c679050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610c3b576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103ee565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610c9057600280548290039055610cbc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d1b91815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b81811015610d5657858101830151858201604001528201610d3a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610db957600080fd5b919050565b60008060408385031215610dd157600080fd5b610dda83610d95565b946020939093013593505050565b600080600060608486031215610dfd57600080fd5b610e0684610d95565b9250610e1460208501610d95565b9150604084013590509250925092565b600060208284031215610e3657600080fd5b610e3f82610d95565b9392505050565b60008060408385031215610e5957600080fd5b610e6283610d95565b9150610e7060208401610d95565b90509250929050565b600181811c90821680610e8d57607f821691505b602082108103610ec6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610ede57600080fd5b5051919050565b600060208284031215610ef757600080fd5b81518015158114610e3f57600080fd5b80820180821115610332577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122065bb92e032a0882e689c565251d90b7b70a5be82c6a6d2a5a3fb5fe6d5425ea364736f6c63430008180033