0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101d4578063a9059cbb146101dc578063dd62ed3e146101ef578063f2fde38b1461023557600080fd5b806370a082311461016e578063715018a6146101a45780638da5cb5b146101ac57600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a5780634437152a1461015957600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610248565b6040516100f99190610ae0565b60405180910390f35b610115610110366004610b76565b6102da565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610ba0565b6102f4565b604051601281526020016100f9565b61016c610167366004610bdc565b610318565b005b61012961017c366004610bdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61016c6103bf565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f9565b6100ec6103d3565b6101156101ea366004610b76565b6103e2565b6101296101fd366004610bfe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61016c610243366004610bdc565b6103f0565b60606003805461025790610c31565b80601f016020809104026020016040519081016040528092919081815260200182805461028390610c31565b80156102d05780601f106102a5576101008083540402835291602001916102d0565b820191906000526020600020905b8154815290600101906020018083116102b357829003601f168201915b5050505050905090565b6000336102e8818585610459565b60019150505b92915050565b60003361030285828561046b565b61030d85858561053a565b506001949350505050565b6103206105e5565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556103b9426104b0610c84565b60065550565b6103c76105e5565b6103d16000610638565b565b60606004805461025790610c31565b6000336102e881858561053a565b6103f86105e5565b73ffffffffffffffffffffffffffffffffffffffff811661044d576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61045681610638565b50565b61046683838360016106af565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105345781811015610525576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610444565b610534848484840360006106af565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661058a576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610444565b73ffffffffffffffffffffffffffffffffffffffff82166105da576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610444565b6104668383836107f7565b60055473ffffffffffffffffffffffffffffffffffffffff1633146103d1576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610444565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff84166106ff576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610444565b73ffffffffffffffffffffffffffffffffffffffff831661074f576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610444565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602090815260408083209387168352929052208290558015610534578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107e991815260200190565b60405180910390a350505050565b60055474010000000000000000000000000000000000000000900460ff168015610847575073ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604090205460ff16155b1561092f576007548161087c8473ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6108869190610c84565b11156108ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d6178207065722077616c6c6574206c696d69742065786365656465642e00006044820152606401610444565b6000600654118015610901575060065442115b1561092f57600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b61046683838373ffffffffffffffffffffffffffffffffffffffff831661096d5780600260008282546109629190610c84565b90915550610a1f9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109f3576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610444565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610a4857600280548290039055610a74565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ad391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b81811015610b0e57858101830151858201604001528201610af2565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b7157600080fd5b919050565b60008060408385031215610b8957600080fd5b610b9283610b4d565b946020939093013593505050565b600080600060608486031215610bb557600080fd5b610bbe84610b4d565b9250610bcc60208501610b4d565b9150604084013590509250925092565b600060208284031215610bee57600080fd5b610bf782610b4d565b9392505050565b60008060408385031215610c1157600080fd5b610c1a83610b4d565b9150610c2860208401610b4d565b90509250929050565b600181811c90821680610c4557607f821691505b602082108103610c7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212203a2a892819bdbcd2aed7fe47de77d8e8d2be4e1db389d07e83fc5b2c453b525964736f6c63430008180033
0x60806040523480156200001157600080fd5b50336040518060400160405280600a81526020016922aa24102437b63232b960b11b815250604051806040016040528060068152602001652427a62222a960d11b81525081600390816200006691906200045a565b5060046200007582826200045a565b5050506001600160a01b038116620000a857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000b381620000fe565b50336000908152600860205260409020805460ff191660011790556b033b2e3c9fd0803ce8000000620000e860328262000526565b600755620000f7338262000150565b5062000571565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200017c5760405163ec442f0560e01b8152600060048201526024016200009f565b6200018a600083836200018e565b5050565b600554600160a01b900460ff168015620001c157506001600160a01b03821660009081526008602052604090205460ff16155b156200026f5760075481620001eb846001600160a01b031660009081526020819052604090205490565b620001f7919062000549565b1115620002475760405162461bcd60e51b815260206004820152601e60248201527f4d6178207065722077616c6c6574206c696d69742065786365656465642e000060448201526064016200009f565b60006006541180156200025b575060065442115b156200026f576005805460ff60a01b191690555b6200027c83838362000281565b505050565b6001600160a01b038316620002b0578060026000828254620002a4919062000549565b90915550620003249050565b6001600160a01b03831660009081526020819052604090205481811015620003055760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200009f565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620003425760028054829003905562000361565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003a791815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003df57607f821691505b6020821081036200040057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027c576000816000526020600020601f850160051c81016020861015620004315750805b601f850160051c820191505b8181101562000452578281556001016200043d565b505050505050565b81516001600160401b03811115620004765762000476620003b4565b6200048e81620004878454620003ca565b8462000406565b602080601f831160018114620004c65760008415620004ad5750858301515b600019600386901b1c1916600185901b17855562000452565b600085815260208120601f198616915b82811015620004f757888601518255948401946001909101908401620004d6565b5085821015620005165787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826200054457634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200056b57634e487b7160e01b600052601160045260246000fd5b92915050565b610cf480620005816000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101d4578063a9059cbb146101dc578063dd62ed3e146101ef578063f2fde38b1461023557600080fd5b806370a082311461016e578063715018a6146101a45780638da5cb5b146101ac57600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a5780634437152a1461015957600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610248565b6040516100f99190610ae0565b60405180910390f35b610115610110366004610b76565b6102da565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610ba0565b6102f4565b604051601281526020016100f9565b61016c610167366004610bdc565b610318565b005b61012961017c366004610bdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61016c6103bf565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f9565b6100ec6103d3565b6101156101ea366004610b76565b6103e2565b6101296101fd366004610bfe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61016c610243366004610bdc565b6103f0565b60606003805461025790610c31565b80601f016020809104026020016040519081016040528092919081815260200182805461028390610c31565b80156102d05780601f106102a5576101008083540402835291602001916102d0565b820191906000526020600020905b8154815290600101906020018083116102b357829003601f168201915b5050505050905090565b6000336102e8818585610459565b60019150505b92915050565b60003361030285828561046b565b61030d85858561053a565b506001949350505050565b6103206105e5565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556103b9426104b0610c84565b60065550565b6103c76105e5565b6103d16000610638565b565b60606004805461025790610c31565b6000336102e881858561053a565b6103f86105e5565b73ffffffffffffffffffffffffffffffffffffffff811661044d576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61045681610638565b50565b61046683838360016106af565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105345781811015610525576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610444565b610534848484840360006106af565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661058a576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610444565b73ffffffffffffffffffffffffffffffffffffffff82166105da576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610444565b6104668383836107f7565b60055473ffffffffffffffffffffffffffffffffffffffff1633146103d1576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610444565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff84166106ff576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610444565b73ffffffffffffffffffffffffffffffffffffffff831661074f576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610444565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602090815260408083209387168352929052208290558015610534578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107e991815260200190565b60405180910390a350505050565b60055474010000000000000000000000000000000000000000900460ff168015610847575073ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604090205460ff16155b1561092f576007548161087c8473ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6108869190610c84565b11156108ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d6178207065722077616c6c6574206c696d69742065786365656465642e00006044820152606401610444565b6000600654118015610901575060065442115b1561092f57600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b61046683838373ffffffffffffffffffffffffffffffffffffffff831661096d5780600260008282546109629190610c84565b90915550610a1f9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109f3576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610444565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610a4857600280548290039055610a74565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ad391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b81811015610b0e57858101830151858201604001528201610af2565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b7157600080fd5b919050565b60008060408385031215610b8957600080fd5b610b9283610b4d565b946020939093013593505050565b600080600060608486031215610bb557600080fd5b610bbe84610b4d565b9250610bcc60208501610b4d565b9150604084013590509250925092565b600060208284031215610bee57600080fd5b610bf782610b4d565b9392505050565b60008060408385031215610c1157600080fd5b610c1a83610b4d565b9150610c2860208401610b4d565b90509250929050565b600181811c90821680610c4557607f821691505b602082108103610c7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212203a2a892819bdbcd2aed7fe47de77d8e8d2be4e1db389d07e83fc5b2c453b525964736f6c63430008180033