0x608060405234801561001057600080fd5b506110e7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063c0c53b8b1161005b578063c0c53b8b146101fb578063f2fde38b14610233578063fff6cae914610259576100d4565b80638da5cb5b146101b357806392f61930146101bb578063a64f77cd146101d5576100d4565b8063715018a6116100b2578063715018a6146101675780638aee4cfe1461016f5780638bdb2afa1461018f576100d4565b806316c38b3c146100d9578063301a5801146100fa5780633b4e71ad14610149575b600080fd5b6100f8600480360360208110156100ef57600080fd5b50351515610261565b005b6101306004803603606081101561011057600080fd5b506001600160a01b038135811691602081013590911690604001356102de565b6040805192835260208301919091528051918290030190f35b6101516104dd565b6040805160ff9092168252519081900360200190f35b6100f86104fe565b6100f86004803603602081101561018557600080fd5b503560ff166105bf565b610197610675565b604080516001600160a01b039092168252519081900360200190f35b610197610684565b6101c3610693565b60408051918252519081900360200190f35b6100f8600480360360208110156101eb57600080fd5b50356001600160a01b0316610699565b6100f86004803603606081101561021157600080fd5b506001600160a01b038135811691602081013582169160409091013516610732565b6100f86004803603602081101561024957600080fd5b50356001600160a01b031661093b565b6100f8610a53565b610269610ae3565b6065546001600160a01b039081169116146102cb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b609d805460ff1916911515919091179055565b609d54600090819060ff161561033b576040805162461bcd60e51b815260206004820152601e60248201527f46454520415050524f5645523a205472616e7366657273205061757365640000604482015290519081900360640190fd5b609754604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561039957600080fd5b505afa1580156103ad573d6000803e3d6000fd5b505050506040513d60208110156103c357600080fd5b5051609b549091506001600160a01b03878116911614806103f157506097546001600160a01b038781169116145b15610440576104346040518060400160405280601381526020017f53656e64696e6720776974686f75742066656500000000000000000000000000815250610ae7565b600091508392506104d0565b61047e6040518060400160405280601381526020017f4e6f726d616c20666565207472616e7366657200000000000000000000000000815250610ae7565b609b546104bb906103e8906104af90879074010000000000000000000000000000000000000000900460ff16610bdc565b9063ffffffff610c3e16565b91506104cd848363ffffffff610c8016565b92505b609c559094909350915050565b609b5474010000000000000000000000000000000000000000900460ff1681565b610506610ae3565b6065546001600160a01b03908116911614610568576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36065805473ffffffffffffffffffffffffffffffffffffffff19169055565b6105c7610ae3565b6065546001600160a01b03908116911614610629576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b609b805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6098546001600160a01b031681565b6065546001600160a01b031690565b609c5481565b6106a1610ae3565b6065546001600160a01b03908116911614610703576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b609b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600054610100900460ff168061074b575061074b610cc2565b80610759575060005460ff16155b6107945760405162461bcd60e51b815260040180806020018281038252602e815260200180611084602e913960400191505060405180910390fd5b600054610100900460ff161580156107bf576000805460ff1961ff0019909116610100171660011790555b6107c7610cc8565b609a80546001600160a01b0380871673ffffffffffffffffffffffffffffffffffffffff1992831617928390556099805487831693169290921791829055604080517fe6a439050000000000000000000000000000000000000000000000000000000081529282166004840152921660248201529051735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9163e6a43905916044808301926020929190829003018186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b505050506040513d60208110156108a257600080fd5b50516097805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b0393841617909155609b8054909116918416919091177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674140000000000000000000000000000000000000000179055609d805460ff191690558015610935576000805461ff00191690555b50505050565b610943610ae3565b6065546001600160a01b039081169116146109a5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166109ea5760405162461bcd60e51b815260040180806020018281038252602681526020018061103d6026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b609754604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b5051609c5550565b3390565b610bd9816040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610b2b578181015183820152602001610b13565b50505050905090810190601f168015610b585780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790529250610d79915050565b50565b600082610beb57506000610c38565b82820282848281610bf857fe5b0414610c355760405162461bcd60e51b81526004018080602001828103825260218152602001806110636021913960400191505060405180910390fd5b90505b92915050565b6000610c3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d9a565b6000610c3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e3c565b303b1590565b600054610100900460ff1680610ce15750610ce1610cc2565b80610cef575060005460ff16155b610d2a5760405162461bcd60e51b815260040180806020018281038252602e815260200180611084602e913960400191505060405180910390fd5b600054610100900460ff16158015610d55576000805460ff1961ff0019909116610100171660011790555b610d5d610e96565b610d65610f36565b8015610bd9576000805461ff001916905550565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008183610e265760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610deb578181015183820152602001610dd3565b50505050905090810190601f168015610e185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610e3257fe5b0495945050505050565b60008184841115610e8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610deb578181015183820152602001610dd3565b505050900390565b600054610100900460ff1680610eaf5750610eaf610cc2565b80610ebd575060005460ff16155b610ef85760405162461bcd60e51b815260040180806020018281038252602e815260200180611084602e913960400191505060405180910390fd5b600054610100900460ff16158015610d65576000805460ff1961ff0019909116610100171660011790558015610bd9576000805461ff001916905550565b600054610100900460ff1680610f4f5750610f4f610cc2565b80610f5d575060005460ff16155b610f985760405162461bcd60e51b815260040180806020018281038252602e815260200180611084602e913960400191505060405180910390fd5b600054610100900460ff16158015610fc3576000805460ff1961ff0019909116610100171660011790555b6000610fcd610ae3565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610bd9576000805461ff00191690555056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122072e90e9c67f0da20ce33a17962f5b7dc5c316633160e5263315aa1c7553c664964736f6c63430006000033