0x6080604052600436106102885760003560e01c806354bb859c11610153578063a457c2d7116100cb578063c447d1d21161007f578063dd62ed3e11610064578063dd62ed3e14610901578063e8e4197a1461093c578063f2fde38b14610951576102a3565b8063c447d1d2146108be578063d099bebe146108ec576102a3565b8063b095c82a116100b0578063b095c82a14610842578063b0be3f291461087b578063ba6fb263146108a9576102a3565b8063a457c2d7146107d0578063a9059cbb14610809576102a3565b8063815df4ca11610122578063927f0dd911610107578063927f0dd91461079157806395d89b41146107a65780639b179e7a146107bb576102a3565b8063815df4ca146107265780638da5cb5b14610760576102a3565b806354bb859c1461069b57806370a08231146106b0578063715018a6146106e3578063814208b2146106f8576102a3565b80632422e3c7116102015780632f05cda3116101b5578063395093511161019a578063395093511461060a5780633d7b04951461064357806342966c6814610671576102a3565b80632f05cda3146105b9578063313ce567146105df576102a3565b806327f7a494116101e657806327f7a4941461052e5780632aacb64a146105615780632e8e89bf1461058d576102a3565b80632422e3c7146104b95780632758ccfe146104f5576102a3565b806311a186f8116102585780631953e4341161023d5780631953e4341461041e5780631a6320851461044857806323b872dd14610476576102a3565b806311a186f8146103f457806318160ddd14610409576102a3565b8062ff2fb1146102ae57806303863cec146102ea57806306fdde031461031d578063095ea7b3146103a7576102a3565b366102a357361561029857600080fd5b6102a133610984565b005b361561029857600080fd5b3480156102ba57600080fd5b506102d8600480360360208110156102d157600080fd5b5035610b07565b60408051918252519081900360200190f35b3480156102f657600080fd5b506102a16004803603602081101561030d57600080fd5b50356001600160a01b0316610d0a565b34801561032957600080fd5b50610332610e02565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036c578181015183820152602001610354565b50505050905090810190601f1680156103995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b357600080fd5b506103e0600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610e98565b604080519115158252519081900360200190f35b34801561040057600080fd5b506102d8610eaf565b34801561041557600080fd5b506102d8610f22565b34801561042a57600080fd5b506102a16004803603602081101561044157600080fd5b5035610f28565b34801561045457600080fd5b506102a16004803603602081101561046b57600080fd5b503561ffff16610f6e565b34801561048257600080fd5b506103e06004803603606081101561049957600080fd5b506001600160a01b0381358116916020810135909116906040013561100d565b3480156104c557600080fd5b506102a1600480360360208110156104dc57600080fd5b50356fffffffffffffffffffffffffffffffff16611094565b34801561050157600080fd5b506102a16004803603604081101561051857600080fd5b506001600160a01b038135169060200135611151565b34801561053a57600080fd5b506102a16004803603602081101561055157600080fd5b50356001600160a01b0316611235565b34801561056d57600080fd5b506102a16004803603602081101561058457600080fd5b5035151561146e565b34801561059957600080fd5b506105a2611524565b6040805161ffff9092168252519081900360200190f35b6102a1600480360360208110156105cf57600080fd5b50356001600160a01b0316610984565b3480156105eb57600080fd5b506105f4611534565b6040805160ff9092168252519081900360200190f35b34801561061657600080fd5b506103e06004803603604081101561062d57600080fd5b506001600160a01b038135169060200135611559565b34801561064f57600080fd5b506102a16004803603602081101561066657600080fd5b503561ffff16611595565b34801561067d57600080fd5b506102a16004803603602081101561069457600080fd5b503561163a565b3480156106a757600080fd5b506105a2611644565b3480156106bc57600080fd5b506102d8600480360360208110156106d357600080fd5b50356001600160a01b031661166e565b3480156106ef57600080fd5b506102a1611689565b34801561070457600080fd5b506102a16004803603602081101561071b57600080fd5b503561ffff16611755565b34801561073257600080fd5b5061073b611814565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561076c57600080fd5b5061077561183c565b604080516001600160a01b039092168252519081900360200190f35b34801561079d57600080fd5b506102d861184b565b3480156107b257600080fd5b506103326118be565b3480156107c757600080fd5b506102d861191f565b3480156107dc57600080fd5b506103e0600480360360408110156107f357600080fd5b506001600160a01b038135169060200135611992565b34801561081557600080fd5b506103e06004803603604081101561082c57600080fd5b506001600160a01b0381351690602001356119e7565b34801561084e57600080fd5b506102a16004803603604081101561086557600080fd5b506001600160a01b038135169060200135611a0d565b34801561088757600080fd5b506102a16004803603602081101561089e57600080fd5b503561ffff16611a9f565b3480156108b557600080fd5b506105a2611b4a565b3480156108ca57600080fd5b506102a1600480360360208110156108e157600080fd5b503561ffff16611bcd565b3480156108f857600080fd5b506102a1611c8c565b34801561090d57600080fd5b506102d86004803603604081101561092457600080fd5b506001600160a01b0381358116916020013516611d5f565b34801561094857600080fd5b506105a2611d8a565b34801561095d57600080fd5b506102a16004803603602081101561097457600080fd5b50356001600160a01b0316611e09565b6001546002546fffffffffffffffffffffffffffffffff6c010000000000000000000000009092048216916109c19142911663ffffffff611f2b16565b1115610a14576040805162461bcd60e51b815260206004820152601660248201527f5253443a2063726f776473616c65206973206f76657200000000000000000000604482015290519081900360640190fd5b600154690a968163f0a57b40000090610a3890349062010000900461ffff16611f74565b1115610a755760405162461bcd60e51b81526004018080602001828103825260308152602001806131d96030913960400191505060405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600154610b04908290610aff90606490610af390609690610ae790349061ffff620100009091041663ffffffff611f7416565b9063ffffffff611f7416565b9063ffffffff611fcd16565b61200f565b50565b604080517ff8f9cbfae6cc78fbefe7cdc3a1793dfcf4f0e8bbd8cec470b6a28a7a5a3e1efd81527ff5ecf1b3e9debc68e1d9cfabc5997135bfb7a7a3938b7b606b5b4b3f2f1f0ffe60208201527ff6e4ed9ff2d6b458eadcdf97bd91692de2d4da8fd2d0ac50c6ae9a8272523616818301527fc8c0b887b0a8a4489c948c7f847c6125746c645c544c444038302820181008ff60608201527ff7cae577eec2a03cf3bad76fb589591debb2dd67e0aa9834bea6925f6a4a2e0e60808201527fe39ed557db96902cd38ed14fad815115c786af479b7e8324736353433727170760a08201527fc976c13bb96e881cb166a933a55e490d9d56952b8d4e801485467d236242260660c08201527f753a6d1b65325d0c552a4d1345224105391a310b29122104190a11030902010060e08201526101008082019092527f0100000000000000000000000000000000000000000000000000000000000000600170010000000000000000000000000000000068010000000000000000640100000000620100006010600460026000198c019081041790810417908104178881041790810417908104179081041790810417017e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff0281900460ff0390910151047f8000000000000000000000000000000000000000000000000000000000000000909211020190565b610d1261219b565b6000546001600160a01b03908116911614610d74576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60004711610dc9576040805162461bcd60e51b815260206004820152601e60248201527f5253443a20646f6573206e6f74206861766520616e792062616c616e63650000604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610dfe573d6000803e3d6000fd5b5050565b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e8e5780601f10610e6357610100808354040283529160200191610e8e565b820191906000526020600020905b815481529060010190602001808311610e7157829003601f168201915b5050505050905090565b6000610ea533848461219f565b5060015b92915050565b6000610eb961219b565b6000546001600160a01b03908116911614610f1b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5060035490565b60055490565b7f0869338c2bea036893a01b04610510f305407cfb199fbcc2e7e22e76bae8291781610f538361228b565b6040805192835260208301919091528051918290030190a150565b610f7661219b565b6000546001600160a01b03908116911614610fd8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff92909216919091179055565b336000908152600a60205260408120805460ff19166004179055611032848484612322565b61108a843361108585604051806060016040528060288152602001613332602891396001600160a01b038a166000908152600c60209081526040808320338452909152902054919063ffffffff61250316565b61219f565b5060019392505050565b61109c61219b565b6000546001600160a01b039081169116146110fe576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546fffffffffffffffffffffffffffffffff9092166c01000000000000000000000000027fffffffff00000000000000000000000000000000ffffffffffffffffffffffff909216919091179055565b61115961219b565b6000546001600160a01b039081169116146111bb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b804710156111fa5760405162461bcd60e51b81526004018080602001828103825260288152602001806132e96028913960400191505060405180910390fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611230573d6000803e3d6000fd5b505050565b61123d61219b565b6000546001600160a01b0390811691161461129f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561130357600080fd5b505afa158015611317573d6000803e3d6000fd5b505050506040513d602081101561132d57600080fd5b50511115610dfe57806001600160a01b031663a9059cbb61134c61183c565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516001600160a01b038616916370a08231916024808301926020929190829003018186803b1580156113ab57600080fd5b505afa1580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561143e57600080fd5b505af1158015611452573d6000803e3d6000fd5b505050506040513d602081101561146857600080fd5b50505050565b61147661219b565b6000546001600160a01b039081169116146114d8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60008054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015462010000900461ffff1690565b6000547801000000000000000000000000000000000000000000000000900460ff1690565b336000818152600c602090815260408083206001600160a01b03871684529091528120549091610ea5918590611085908663ffffffff61259a16565b61159d61219b565b6000546001600160a01b039081169116146115ff576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001805461ffff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff909216919091179055565b610b0433826125f4565b6000547c0100000000000000000000000000000000000000000000000000000000900461ffff1690565b6001600160a01b03166000908152600b602052604090205490565b61169161219b565b6000546001600160a01b039081169116146116f3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61175d61219b565b6000546001600160a01b039081169116146117bf576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805461ffff9092167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001546c0100000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6000546001600160a01b031690565b600061185561219b565b6000546001600160a01b039081169116146118b7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5060045490565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e8e5780601f10610e6357610100808354040283529160200191610e8e565b600061192961219b565b6000546001600160a01b0390811691161461198b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5060065490565b6000610ea53384611085856040518060600160405280602581526020016133c460259139336000908152600c602090815260408083206001600160a01b038d168452909152902054919063ffffffff61250316565b336000818152600a60205260408120805460ff1916600417905590610ea5908484612322565b6009546001600160a01b03163314611a565760405162461bcd60e51b815260040180806020018281038252602d8152602001806132bc602d913960400191505060405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055610dfe828261200f565b611aa761219b565b6000546001600160a01b03908116911614611b09576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001805461ffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff909216919091179055565b6000611b5461219b565b6000546001600160a01b03908116911614611bb6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5060015468010000000000000000900461ffff1690565b611bd561219b565b6000546001600160a01b03908116911614611c37576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805461ffff9092167c0100000000000000000000000000000000000000000000000000000000027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600454600654600154600554600354604080516020808201969096527fffff00000000000000000000000000000000000000000000000000000000000068010000000000000000860460f090811b821683850152426042840152436062840152608283019590955260a2820188905260c28201939093526401000000008504841b831660e28201526a010000000000000000000090940490921b1660e48301523360601b60e6830152805160da81840301815260fa90920190528051910120611d5a9163ffffffff61270f16565b600655565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b6000611d9461219b565b6000546001600160a01b03908116911614611df6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b50600154640100000000900461ffff1690565b611e1161219b565b6000546001600160a01b03908116911614611e73576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611eb85760405162461bcd60e51b815260040180806020018281038252602681526020018061324e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611f6d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612503565b9392505050565b600082611f8357506000610ea9565b82820282848281611f9057fe5b0414611f6d5760405162461bcd60e51b81526004018080602001828103825260218152602001806133116021913960400191505060405180910390fd5b6000611f6d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612751565b336000908152600a60205260409020805460ff191660011790556001600160a01b038216612084576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61208c6127b6565b60005474010000000000000000000000000000000000000000900460ff1615612104576004546120c2908263ffffffff61259a16565b6004556003546120d8908263ffffffff61259a16565b600355600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b600554612117908263ffffffff61259a16565b6005556001600160a01b0382166000908152600b6020526040902054612143908263ffffffff61259a16565b6001600160a01b0383166000818152600b602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3390565b6001600160a01b0383166121e45760405162461bcd60e51b81526004018080602001828103825260248152602001806133a06024913960400191505060405180910390fd5b6001600160a01b0382166122295760405162461bcd60e51b81526004018080602001828103825260228152602001806132746022913960400191505060405180910390fd5b6001600160a01b038084166000818152600c6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6006546000906122a290600163ffffffff61259a16565b6006819055600154604080516020808201949094526801000000000000000090920460f01b7fffff00000000000000000000000000000000000000000000000000000000000016828201524260428301524360628301523360601b608283015280518083036076018152609690920190528051910120610ea9908361270f565b6001600160a01b0383166123675760405162461bcd60e51b815260040180806020018281038252602581526020018061337b6025913960400191505060405180910390fd5b6001600160a01b03821615158061239b57506002336000908152600a602052604090205460ff16600481111561239957fe5b145b806123c357506003336000908152600a602052604090205460ff1660048111156123c157fe5b145b6123fe5760405162461bcd60e51b81526004018080602001828103825260238152602001806132096023913960400191505060405180910390fd5b6124066127b6565b60006124128483612823565b600754909150612428908363ffffffff61259a16565b60078190555061247181604051806060016040528060268152602001613296602691396001600160a01b0387166000908152600b6020526040902054919063ffffffff61250316565b6001600160a01b038086166000908152600b602052604080822093909355908516815220546124a6908263ffffffff61259a16565b6001600160a01b038085166000818152600b602090815260409182902094909455805185815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505050565b600081848411156125925760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561255757818101518382015260200161253f565b50505050905090810190601f1680156125845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611f6d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b336000908152600a60205260409020805460ff191690556001600160a01b0382166126505760405162461bcd60e51b815260040180806020018281038252602181526020018061335a6021913960400191505060405180910390fd5b6126586127b6565b61269b8160405180606001604052806022815260200161322c602291396001600160a01b0385166000908152600b6020526040902054919063ffffffff61250316565b6001600160a01b0383166000908152600b60205260409020556005546126c7908263ffffffff611f2b16565b6005556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000611f6d83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506129c3565b600081836127a05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561255757818101518382015260200161253f565b5060008385816127ac57fe5b0495945050505050565b6004336000908152600a602052604090205460ff1660048111156127d657fe5b141561282157600180546127fd916a010000000000000000000090910461ffff169061259a565b6001600a6101000a81548161ffff021916908361ffff160217905550612821612a25565b565b60006004336000908152600a602052604090205460ff16600481111561284557fe5b14156129bd57600054790100000000000000000000000000000000000000000000000000900460ff166128796103e861228b565b111561288c57612887612c19565b612894565b612894612d99565b600061289f83612e1c565b905060006128ac84612e3b565b6000549091507501000000000000000000000000000000000000000000900460ff1615612904576128dd85836125f4565b6128fd816128f1868563ffffffff611f2b16565b9063ffffffff611f2b16565b935061293c565b61291885610aff848463ffffffff61259a16565b61293961292c83600263ffffffff611fcd16565b859063ffffffff61259a16565b93505b600054760100000000000000000000000000000000000000000000900460ff16156129a257600061297482607563ffffffff611fcd16565b9050612986828263ffffffff611f2b16565b91506129928683612e6b565b61299c8682612fc6565b506129ac565b6129ac8582612e6b565b5060009050806129ba613040565b50505b50919050565b60008183612a125760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561255757818101518382015260200161253f565b50828481612a1c57fe5b06949350505050565b600054612a57907e01000000000000000000000000000000000000000000000000000000000000900461ffff1661228b565b6001546a0100000000000000000000900461ffff16118015612a8f575060015461ffff8082166a010000000000000000000090920416115b1561282157600154600754600091612ab991906a0100000000000000000000900461ffff16611fcd565b600781905560085411612b6457612b19612af66001612aea6002610af360085460075461259a90919063ffffffff16565b9063ffffffff61259a16565b610af3670de0b6b3a7640000610ae7600854600754611f2b90919063ffffffff16565b9050612b5c612b4d612b3a670de0b6b3a7640000606463ffffffff611f7416565b600554610af3908563ffffffff611f7416565b6003549063ffffffff611f2b16565b600455612bdf565b612bab612b886001612aea6002610af360085460075461259a90919063ffffffff16565b610af3670de0b6b3a7640000610ae7600754600854611f2b90919063ffffffff16565b9050612bdb612bcc612b3a670de0b6b3a7640000606463ffffffff611f7416565b6003549063ffffffff61259a16565b6004555b50600754600855600180547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff1690556000610b0433613141565b600054612cb690612c699060ff7b01000000000000000000000000000000000000000000000000000000820481169177010000000000000000000000000000000000000000000000900416611f74565b600054612aea90612c9b906103e89077010000000000000000000000000000000000000000000000900460ff16611f2b565b600154610ae790640100000000900461ffff166103e8611fcd565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000061ffff93841681029190911791829055600554600454600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16929091107501000000000000000000000000000000000000000000029190911790819055612d7b9360ff7a0100000000000000000000000000000000000000000000000000009092049190911692612aea929004166103e8611fcd565b600160066101000a81548161ffff021916908361ffff160217905550565b612da3600261228b565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169115157501000000000000000000000000000000000000000000029190911790819055612d7b9060ff7a01000000000000000000000000000000000000000000000000000090910416612aea606461228b565b600154600090610ea99083906601000000000000900461ffff16611fcd565b600154600090610ea990612e5e906601000000000000900461ffff166002611f74565b839063ffffffff611fcd16565b336000908152600a60205260409020805460ff19166002179055612e9f8230612e9a6064610af386605a611f74565b612322565b612eba8241612e9a6064610af386600a63ffffffff611f7416565b6000547c0100000000000000000000000000000000000000000000000000000000900461ffff1615612f2057600054612f1c90612bcc9083907c0100000000000000000000000000000000000000000000000000000000900461ffff16611fcd565b6003555b7f7fc90182319f5fadef39b68cbbb049c010d0addb72362423ed28341ae5d0bc2d612f576064610af384605a63ffffffff611f7416565b60408051918252519081900360200190a17f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc941612fa06064610af385600a63ffffffff611f7416565b604080516001600160a01b03909316835260208301919091528051918290030190a15050565b336000908152600a60205260409020805460ff19166003179055612ff282612fec61183c565b83612322565b7f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc961301b61183c565b604080516001600160a01b039092168252602082018490528051918290030190a15050565b6005546004541061308e5761306f61306a6001612aea600554600454611f2b90919063ffffffff16565b610b07565b6000601b6101000a81548160ff021916908360ff1602179055506130c8565b6130ad61306a6001612aea600454600554611f2b90919063ffffffff16565b6000601b6101000a81548160ff021916908360ff1602179055505b60005460647b0100000000000000000000000000000000000000000000000000000090910460ff1611613122576000547b01000000000000000000000000000000000000000000000000000000900460ff16606403613125565b60005b6000601b6101000a81548160ff021916908360ff160217905550565b61314b600261228b565b15610b0457306000908152600b602052604090205461316b90829061200f565b306000908152600b60209081526040918290205482516001600160a01b03851681529182015281517f36a68c9e340e3b2782f83b33f32e581414feb74b38d3e41d95ba6ad1420ebc00929181900390910190a1306000818152600b6020526040902054610b0491906125f456fe5253443a20726571756972656420616d6f756e74206578636565647320746865206d6178696d756d20616c6c6f77656445524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655253443a206f6e6c79207374616b652068656c7065722063616e2063616c6c20746869732066756e6374696f6e5253443a20726571756972656420616d6f756e742065786365656473207468652062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122031108888ce82f432ac0bd23584d1852969c7dc8c76d2ab1340955cc0fa035fc464736f6c63430006020033
0x60806040523480156200001157600080fd5b50604051620042d8380380620042d8833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260200151915060009050620001b96001600160e01b036200037116565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35082516200021890600d90602086019062000d84565b5081516200022e90600e90602085019062000d84565b5060008054600280546001600160801b031916426001600160801b031617905560018054600c61ffff1990911617600160601b600160e01b0319166e78614d0000000000000000000000001761ffff60301b191666640000000000001763ffff000019166307d00000179055600980546001600160a01b0319166001600160a01b038516179055600160a01b600160b01b600160a81b60ff60a81b199093169290921760ff60c01b19908116600960c11b9081179091161760ff60b81b1916600f60bb1b1760ff60c81b1916600f60cb1b1761ffff60e01b1916607d60e31b1760ff60d01b1916601960d21b176001600160f01b0316600960f41b1760ff60b01b19169190911760ff60a01b1916179055620003686200034d62000376565b6a0135018f14a720b7a000006001600160e01b036200038516565b50505062000e26565b335b90565b6000546001600160a01b031690565b336000908152600a60205260409020805460ff191660011790556001600160a01b038216620003fb576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200040e6001600160e01b036200050816565b600054600160a01b900460ff161562000470576200043d816004546200059b60201b6200259a1790919060201c565b6004819055506200045f816003546200059b60201b6200259a1790919060201c565b6003556000805460ff60a01b191690555b6200048c816005546200059b60201b6200259a1790919060201c565b6005556001600160a01b0382166000908152600b6020908152604090912054620004c19183906200259a6200059b821b17901c565b6001600160a01b0383166000818152600b60209081526040808320949094558351858152935192939192600080516020620042978339815191529281900390910190a35050565b6004336000908152600a602052604090205460ff1660048111156200052957fe5b141562000599576200055e600180600a9054906101000a900461ffff1661ffff166200059b60201b6200259a1790919060201c565b6001805461ffff929092166a01000000000000000000000261ffff60501b19909216919091179055620005996001600160e01b03620005ff16565b565b600082820183811015620005f6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000546200061890600160f01b900461ffff1662000864565b6001546a0100000000000000000000900461ffff1611801562000651575060015461ffff8082166a010000000000000000000090920416115b1562000599576000620006896001600a9054906101000a900461ffff1661ffff16600754620008f860201b62001fcd1790919060201c565b60078190556008541162000795576200072c620006ed6001620006d96002620006c56008546007546200059b60201b6200259a1790919060201c565b620008f860201b62001fcd1790919060201c565b6200059b60201b6200259a1790919060201c565b620006c5670de0b6b3a7640000620007186008546007546200094260201b62001f2b1790919060201c565b6200098c60201b62001f741790919060201c565b90506200078c62000775620007596064670de0b6b3a76400006200098c60201b62001f741790919060201c565b620006c5846005546200098c60201b62001f741790919060201c565b6003546200094260201b62001f2b1790919060201c565b60045562000836565b620007ee620007c36001620006d96002620006c56008546007546200059b60201b6200259a1790919060201c565b620006c5670de0b6b3a7640000620007186007546008546200094260201b62001f2b1790919060201c565b9050620008326200081b620007596064670de0b6b3a76400006200098c60201b62001f741790919060201c565b6003546200059b60201b6200259a1790919060201c565b6004555b506007546008556001805461ffff60501b19169055600062000861336001600160e01b03620009ea16565b50565b60006200088360016006546200059b60201b6200259a1790919060201c565b6006819055600154604080516020808201949094526801000000000000000090920460f01b6001600160f01b031916828201524260428301524360628301523360601b60828301528051808303607601815260969092019052805190820120620005f991849062000aa3811b6200270f17901c565b6000620005f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000aed60201b60201c565b6000620005f683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000b9460201b60201c565b6000826200099d57506000620005f9565b82820282848281620009ab57fe5b0414620005f65760405162461bcd60e51b8152600401808060200182810382526021815260200180620042766021913960400191505060405180910390fd5b620009ff60026001600160e01b036200086416565b156200086157306000908152600b602052604090205462000a2b9082906001600160e01b036200038516565b306000908152600b60209081526040918290205482516001600160a01b03851681529182015281517f36a68c9e340e3b2782f83b33f32e581414feb74b38d3e41d95ba6ad1420ebc00929181900390910190a1306000818152600b60205260409020546200086191906001600160e01b0362000bf116565b6000620005f683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525062000d1e60201b60201c565b6000818362000b7d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000b4157818101518382015260200162000b27565b50505050905090810190601f16801562000b6f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000b8a57fe5b0495945050505050565b6000818484111562000be95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562000b4157818101518382015260200162000b27565b505050900390565b336000908152600a60205260409020805460ff191690556001600160a01b03821662000c4f5760405162461bcd60e51b8152600401808060200182810382526021815260200180620042b76021913960400191505060405180910390fd5b62000c626001600160e01b036200050816565b62000caf8160405180606001604052806022815260200162004254602291396001600160a01b0385166000908152600b60209081526040909120549291906200250362000b94821b17901c565b6001600160a01b0383166000908152600b602090815260409091209190915560055462000ce791839062001f2b62000942821b17901c565b6005556040805182815290516000916001600160a01b03851691600080516020620042978339815191529181900360200190a35050565b6000818362000d705760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562000b4157818101518382015260200162000b27565b5082848162000d7b57fe5b06949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000dc757805160ff191683800117855562000df7565b8280016001018555821562000df7579182015b8281111562000df757825182559160200191906001019062000dda565b5062000e0592915062000e09565b5090565b6200037391905b8082111562000e05576000815560010162000e10565b61341e8062000e366000396000f3fe6080604052600436106102885760003560e01c806354bb859c11610153578063a457c2d7116100cb578063c447d1d21161007f578063dd62ed3e11610064578063dd62ed3e14610901578063e8e4197a1461093c578063f2fde38b14610951576102a3565b8063c447d1d2146108be578063d099bebe146108ec576102a3565b8063b095c82a116100b0578063b095c82a14610842578063b0be3f291461087b578063ba6fb263146108a9576102a3565b8063a457c2d7146107d0578063a9059cbb14610809576102a3565b8063815df4ca11610122578063927f0dd911610107578063927f0dd91461079157806395d89b41146107a65780639b179e7a146107bb576102a3565b8063815df4ca146107265780638da5cb5b14610760576102a3565b806354bb859c1461069b57806370a08231146106b0578063715018a6146106e3578063814208b2146106f8576102a3565b80632422e3c7116102015780632f05cda3116101b5578063395093511161019a578063395093511461060a5780633d7b04951461064357806342966c6814610671576102a3565b80632f05cda3146105b9578063313ce567146105df576102a3565b806327f7a494116101e657806327f7a4941461052e5780632aacb64a146105615780632e8e89bf1461058d576102a3565b80632422e3c7146104b95780632758ccfe146104f5576102a3565b806311a186f8116102585780631953e4341161023d5780631953e4341461041e5780631a6320851461044857806323b872dd14610476576102a3565b806311a186f8146103f457806318160ddd14610409576102a3565b8062ff2fb1146102ae57806303863cec146102ea57806306fdde031461031d578063095ea7b3146103a7576102a3565b366102a357361561029857600080fd5b6102a133610984565b005b361561029857600080fd5b3480156102ba57600080fd5b506102d8600480360360208110156102d157600080fd5b5035610b07565b60408051918252519081900360200190f35b3480156102f657600080fd5b506102a16004803603602081101561030d57600080fd5b50356001600160a01b0316610d0a565b34801561032957600080fd5b50610332610e02565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036c578181015183820152602001610354565b50505050905090810190601f1680156103995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b357600080fd5b506103e0600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610e98565b604080519115158252519081900360200190f35b34801561040057600080fd5b506102d8610eaf565b34801561041557600080fd5b506102d8610f22565b34801561042a57600080fd5b506102a16004803603602081101561044157600080fd5b5035610f28565b34801561045457600080fd5b506102a16004803603602081101561046b57600080fd5b503561ffff16610f6e565b34801561048257600080fd5b506103e06004803603606081101561049957600080fd5b506001600160a01b0381358116916020810135909116906040013561100d565b3480156104c557600080fd5b506102a1600480360360208110156104dc57600080fd5b50356fffffffffffffffffffffffffffffffff16611094565b34801561050157600080fd5b506102a16004803603604081101561051857600080fd5b506001600160a01b038135169060200135611151565b34801561053a57600080fd5b506102a16004803603602081101561055157600080fd5b50356001600160a01b0316611235565b34801561056d57600080fd5b506102a16004803603602081101561058457600080fd5b5035151561146e565b34801561059957600080fd5b506105a2611524565b6040805161ffff9092168252519081900360200190f35b6102a1600480360360208110156105cf57600080fd5b50356001600160a01b0316610984565b3480156105eb57600080fd5b506105f4611534565b6040805160ff9092168252519081900360200190f35b34801561061657600080fd5b506103e06004803603604081101561062d57600080fd5b506001600160a01b038135169060200135611559565b34801561064f57600080fd5b506102a16004803603602081101561066657600080fd5b503561ffff16611595565b34801561067d57600080fd5b506102a16004803603602081101561069457600080fd5b503561163a565b3480156106a757600080fd5b506105a2611644565b3480156106bc57600080fd5b506102d8600480360360208110156106d357600080fd5b50356001600160a01b031661166e565b3480156106ef57600080fd5b506102a1611689565b34801561070457600080fd5b506102a16004803603602081101561071b57600080fd5b503561ffff16611755565b34801561073257600080fd5b5061073b611814565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561076c57600080fd5b5061077561183c565b604080516001600160a01b039092168252519081900360200190f35b34801561079d57600080fd5b506102d861184b565b3480156107b257600080fd5b506103326118be565b3480156107c757600080fd5b506102d861191f565b3480156107dc57600080fd5b506103e0600480360360408110156107f357600080fd5b506001600160a01b038135169060200135611992565b34801561081557600080fd5b506103e06004803603604081101561082c57600080fd5b506001600160a01b0381351690602001356119e7565b34801561084e57600080fd5b506102a16004803603604081101561086557600080fd5b506001600160a01b038135169060200135611a0d565b34801561088757600080fd5b506102a16004803603602081101561089e57600080fd5b503561ffff16611a9f565b3480156108b557600080fd5b506105a2611b4a565b3480156108ca57600080fd5b506102a1600480360360208110156108e157600080fd5b503561ffff16611bcd565b3480156108f857600080fd5b506102a1611c8c565b34801561090d57600080fd5b506102d86004803603604081101561092457600080fd5b506001600160a01b0381358116916020013516611d5f565b34801561094857600080fd5b506105a2611d8a565b34801561095d57600080fd5b506102a16004803603602081101561097457600080fd5b50356001600160a01b0316611e09565b6001546002546fffffffffffffffffffffffffffffffff6c010000000000000000000000009092048216916109c19142911663ffffffff611f2b16565b1115610a14576040805162461bcd60e51b815260206004820152601660248201527f5253443a2063726f776473616c65206973206f76657200000000000000000000604482015290519081900360640190fd5b600154690a968163f0a57b40000090610a3890349062010000900461ffff16611f74565b1115610a755760405162461bcd60e51b81526004018080602001828103825260308152602001806131d96030913960400191505060405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600154610b04908290610aff90606490610af390609690610ae790349061ffff620100009091041663ffffffff611f7416565b9063ffffffff611f7416565b9063ffffffff611fcd16565b61200f565b50565b604080517ff8f9cbfae6cc78fbefe7cdc3a1793dfcf4f0e8bbd8cec470b6a28a7a5a3e1efd81527ff5ecf1b3e9debc68e1d9cfabc5997135bfb7a7a3938b7b606b5b4b3f2f1f0ffe60208201527ff6e4ed9ff2d6b458eadcdf97bd91692de2d4da8fd2d0ac50c6ae9a8272523616818301527fc8c0b887b0a8a4489c948c7f847c6125746c645c544c444038302820181008ff60608201527ff7cae577eec2a03cf3bad76fb589591debb2dd67e0aa9834bea6925f6a4a2e0e60808201527fe39ed557db96902cd38ed14fad815115c786af479b7e8324736353433727170760a08201527fc976c13bb96e881cb166a933a55e490d9d56952b8d4e801485467d236242260660c08201527f753a6d1b65325d0c552a4d1345224105391a310b29122104190a11030902010060e08201526101008082019092527f0100000000000000000000000000000000000000000000000000000000000000600170010000000000000000000000000000000068010000000000000000640100000000620100006010600460026000198c019081041790810417908104178881041790810417908104179081041790810417017e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff0281900460ff0390910151047f8000000000000000000000000000000000000000000000000000000000000000909211020190565b610d1261219b565b6000546001600160a01b03908116911614610d74576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60004711610dc9576040805162461bcd60e51b815260206004820152601e60248201527f5253443a20646f6573206e6f74206861766520616e792062616c616e63650000604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610dfe573d6000803e3d6000fd5b5050565b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e8e5780601f10610e6357610100808354040283529160200191610e8e565b820191906000526020600020905b815481529060010190602001808311610e7157829003601f168201915b5050505050905090565b6000610ea533848461219f565b5060015b92915050565b6000610eb961219b565b6000546001600160a01b03908116911614610f1b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5060035490565b60055490565b7f0869338c2bea036893a01b04610510f305407cfb199fbcc2e7e22e76bae8291781610f538361228b565b6040805192835260208301919091528051918290030190a150565b610f7661219b565b6000546001600160a01b03908116911614610fd8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff92909216919091179055565b336000908152600a60205260408120805460ff19166004179055611032848484612322565b61108a843361108585604051806060016040528060288152602001613332602891396001600160a01b038a166000908152600c60209081526040808320338452909152902054919063ffffffff61250316565b61219f565b5060019392505050565b61109c61219b565b6000546001600160a01b039081169116146110fe576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546fffffffffffffffffffffffffffffffff9092166c01000000000000000000000000027fffffffff00000000000000000000000000000000ffffffffffffffffffffffff909216919091179055565b61115961219b565b6000546001600160a01b039081169116146111bb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b804710156111fa5760405162461bcd60e51b81526004018080602001828103825260288152602001806132e96028913960400191505060405180910390fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611230573d6000803e3d6000fd5b505050565b61123d61219b565b6000546001600160a01b0390811691161461129f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561130357600080fd5b505afa158015611317573d6000803e3d6000fd5b505050506040513d602081101561132d57600080fd5b50511115610dfe57806001600160a01b031663a9059cbb61134c61183c565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516001600160a01b038616916370a08231916024808301926020929190829003018186803b1580156113ab57600080fd5b505afa1580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561143e57600080fd5b505af1158015611452573d6000803e3d6000fd5b505050506040513d602081101561146857600080fd5b50505050565b61147661219b565b6000546001600160a01b039081169116146114d8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60008054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015462010000900461ffff1690565b6000547801000000000000000000000000000000000000000000000000900460ff1690565b336000818152600c602090815260408083206001600160a01b03871684529091528120549091610ea5918590611085908663ffffffff61259a16565b61159d61219b565b6000546001600160a01b039081169116146115ff576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001805461ffff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff909216919091179055565b610b0433826125f4565b6000547c0100000000000000000000000000000000000000000000000000000000900461ffff1690565b6001600160a01b03166000908152600b602052604090205490565b61169161219b565b6000546001600160a01b039081169116146116f3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61175d61219b565b6000546001600160a01b039081169116146117bf576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805461ffff9092167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001546c0100000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6000546001600160a01b031690565b600061185561219b565b6000546001600160a01b039081169116146118b7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5060045490565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e8e5780601f10610e6357610100808354040283529160200191610e8e565b600061192961219b565b6000546001600160a01b0390811691161461198b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5060065490565b6000610ea53384611085856040518060600160405280602581526020016133c460259139336000908152600c602090815260408083206001600160a01b038d168452909152902054919063ffffffff61250316565b336000818152600a60205260408120805460ff1916600417905590610ea5908484612322565b6009546001600160a01b03163314611a565760405162461bcd60e51b815260040180806020018281038252602d8152602001806132bc602d913960400191505060405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055610dfe828261200f565b611aa761219b565b6000546001600160a01b03908116911614611b09576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001805461ffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff909216919091179055565b6000611b5461219b565b6000546001600160a01b03908116911614611bb6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5060015468010000000000000000900461ffff1690565b611bd561219b565b6000546001600160a01b03908116911614611c37576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805461ffff9092167c0100000000000000000000000000000000000000000000000000000000027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600454600654600154600554600354604080516020808201969096527fffff00000000000000000000000000000000000000000000000000000000000068010000000000000000860460f090811b821683850152426042840152436062840152608283019590955260a2820188905260c28201939093526401000000008504841b831660e28201526a010000000000000000000090940490921b1660e48301523360601b60e6830152805160da81840301815260fa90920190528051910120611d5a9163ffffffff61270f16565b600655565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b6000611d9461219b565b6000546001600160a01b03908116911614611df6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b50600154640100000000900461ffff1690565b611e1161219b565b6000546001600160a01b03908116911614611e73576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611eb85760405162461bcd60e51b815260040180806020018281038252602681526020018061324e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611f6d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612503565b9392505050565b600082611f8357506000610ea9565b82820282848281611f9057fe5b0414611f6d5760405162461bcd60e51b81526004018080602001828103825260218152602001806133116021913960400191505060405180910390fd5b6000611f6d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612751565b336000908152600a60205260409020805460ff191660011790556001600160a01b038216612084576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61208c6127b6565b60005474010000000000000000000000000000000000000000900460ff1615612104576004546120c2908263ffffffff61259a16565b6004556003546120d8908263ffffffff61259a16565b600355600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b600554612117908263ffffffff61259a16565b6005556001600160a01b0382166000908152600b6020526040902054612143908263ffffffff61259a16565b6001600160a01b0383166000818152600b602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3390565b6001600160a01b0383166121e45760405162461bcd60e51b81526004018080602001828103825260248152602001806133a06024913960400191505060405180910390fd5b6001600160a01b0382166122295760405162461bcd60e51b81526004018080602001828103825260228152602001806132746022913960400191505060405180910390fd5b6001600160a01b038084166000818152600c6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6006546000906122a290600163ffffffff61259a16565b6006819055600154604080516020808201949094526801000000000000000090920460f01b7fffff00000000000000000000000000000000000000000000000000000000000016828201524260428301524360628301523360601b608283015280518083036076018152609690920190528051910120610ea9908361270f565b6001600160a01b0383166123675760405162461bcd60e51b815260040180806020018281038252602581526020018061337b6025913960400191505060405180910390fd5b6001600160a01b03821615158061239b57506002336000908152600a602052604090205460ff16600481111561239957fe5b145b806123c357506003336000908152600a602052604090205460ff1660048111156123c157fe5b145b6123fe5760405162461bcd60e51b81526004018080602001828103825260238152602001806132096023913960400191505060405180910390fd5b6124066127b6565b60006124128483612823565b600754909150612428908363ffffffff61259a16565b60078190555061247181604051806060016040528060268152602001613296602691396001600160a01b0387166000908152600b6020526040902054919063ffffffff61250316565b6001600160a01b038086166000908152600b602052604080822093909355908516815220546124a6908263ffffffff61259a16565b6001600160a01b038085166000818152600b602090815260409182902094909455805185815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505050565b600081848411156125925760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561255757818101518382015260200161253f565b50505050905090810190601f1680156125845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611f6d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b336000908152600a60205260409020805460ff191690556001600160a01b0382166126505760405162461bcd60e51b815260040180806020018281038252602181526020018061335a6021913960400191505060405180910390fd5b6126586127b6565b61269b8160405180606001604052806022815260200161322c602291396001600160a01b0385166000908152600b6020526040902054919063ffffffff61250316565b6001600160a01b0383166000908152600b60205260409020556005546126c7908263ffffffff611f2b16565b6005556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000611f6d83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506129c3565b600081836127a05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561255757818101518382015260200161253f565b5060008385816127ac57fe5b0495945050505050565b6004336000908152600a602052604090205460ff1660048111156127d657fe5b141561282157600180546127fd916a010000000000000000000090910461ffff169061259a565b6001600a6101000a81548161ffff021916908361ffff160217905550612821612a25565b565b60006004336000908152600a602052604090205460ff16600481111561284557fe5b14156129bd57600054790100000000000000000000000000000000000000000000000000900460ff166128796103e861228b565b111561288c57612887612c19565b612894565b612894612d99565b600061289f83612e1c565b905060006128ac84612e3b565b6000549091507501000000000000000000000000000000000000000000900460ff1615612904576128dd85836125f4565b6128fd816128f1868563ffffffff611f2b16565b9063ffffffff611f2b16565b935061293c565b61291885610aff848463ffffffff61259a16565b61293961292c83600263ffffffff611fcd16565b859063ffffffff61259a16565b93505b600054760100000000000000000000000000000000000000000000900460ff16156129a257600061297482607563ffffffff611fcd16565b9050612986828263ffffffff611f2b16565b91506129928683612e6b565b61299c8682612fc6565b506129ac565b6129ac8582612e6b565b5060009050806129ba613040565b50505b50919050565b60008183612a125760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561255757818101518382015260200161253f565b50828481612a1c57fe5b06949350505050565b600054612a57907e01000000000000000000000000000000000000000000000000000000000000900461ffff1661228b565b6001546a0100000000000000000000900461ffff16118015612a8f575060015461ffff8082166a010000000000000000000090920416115b1561282157600154600754600091612ab991906a0100000000000000000000900461ffff16611fcd565b600781905560085411612b6457612b19612af66001612aea6002610af360085460075461259a90919063ffffffff16565b9063ffffffff61259a16565b610af3670de0b6b3a7640000610ae7600854600754611f2b90919063ffffffff16565b9050612b5c612b4d612b3a670de0b6b3a7640000606463ffffffff611f7416565b600554610af3908563ffffffff611f7416565b6003549063ffffffff611f2b16565b600455612bdf565b612bab612b886001612aea6002610af360085460075461259a90919063ffffffff16565b610af3670de0b6b3a7640000610ae7600754600854611f2b90919063ffffffff16565b9050612bdb612bcc612b3a670de0b6b3a7640000606463ffffffff611f7416565b6003549063ffffffff61259a16565b6004555b50600754600855600180547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff1690556000610b0433613141565b600054612cb690612c699060ff7b01000000000000000000000000000000000000000000000000000000820481169177010000000000000000000000000000000000000000000000900416611f74565b600054612aea90612c9b906103e89077010000000000000000000000000000000000000000000000900460ff16611f2b565b600154610ae790640100000000900461ffff166103e8611fcd565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000061ffff93841681029190911791829055600554600454600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16929091107501000000000000000000000000000000000000000000029190911790819055612d7b9360ff7a0100000000000000000000000000000000000000000000000000009092049190911692612aea929004166103e8611fcd565b600160066101000a81548161ffff021916908361ffff160217905550565b612da3600261228b565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169115157501000000000000000000000000000000000000000000029190911790819055612d7b9060ff7a01000000000000000000000000000000000000000000000000000090910416612aea606461228b565b600154600090610ea99083906601000000000000900461ffff16611fcd565b600154600090610ea990612e5e906601000000000000900461ffff166002611f74565b839063ffffffff611fcd16565b336000908152600a60205260409020805460ff19166002179055612e9f8230612e9a6064610af386605a611f74565b612322565b612eba8241612e9a6064610af386600a63ffffffff611f7416565b6000547c0100000000000000000000000000000000000000000000000000000000900461ffff1615612f2057600054612f1c90612bcc9083907c0100000000000000000000000000000000000000000000000000000000900461ffff16611fcd565b6003555b7f7fc90182319f5fadef39b68cbbb049c010d0addb72362423ed28341ae5d0bc2d612f576064610af384605a63ffffffff611f7416565b60408051918252519081900360200190a17f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc941612fa06064610af385600a63ffffffff611f7416565b604080516001600160a01b03909316835260208301919091528051918290030190a15050565b336000908152600a60205260409020805460ff19166003179055612ff282612fec61183c565b83612322565b7f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc961301b61183c565b604080516001600160a01b039092168252602082018490528051918290030190a15050565b6005546004541061308e5761306f61306a6001612aea600554600454611f2b90919063ffffffff16565b610b07565b6000601b6101000a81548160ff021916908360ff1602179055506130c8565b6130ad61306a6001612aea600454600554611f2b90919063ffffffff16565b6000601b6101000a81548160ff021916908360ff1602179055505b60005460647b0100000000000000000000000000000000000000000000000000000090910460ff1611613122576000547b01000000000000000000000000000000000000000000000000000000900460ff16606403613125565b60005b6000601b6101000a81548160ff021916908360ff160217905550565b61314b600261228b565b15610b0457306000908152600b602052604090205461316b90829061200f565b306000908152600b60209081526040918290205482516001600160a01b03851681529182015281517f36a68c9e340e3b2782f83b33f32e581414feb74b38d3e41d95ba6ad1420ebc00929181900390910190a1306000818152600b6020526040902054610b0491906125f456fe5253443a20726571756972656420616d6f756e74206578636565647320746865206d6178696d756d20616c6c6f77656445524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655253443a206f6e6c79207374616b652068656c7065722063616e2063616c6c20746869732066756e6374696f6e5253443a20726571756972656420616d6f756e742065786365656473207468652062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122031108888ce82f432ac0bd23584d1852969c7dc8c76d2ab1340955cc0fa035fc464736f6c6343000602003345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000765090ab712984081aee059ea7025c48a419818300000000000000000000000000000000000000000000000000000000000000195265666572656e63652053797374656d20666f7220446546690000000000000000000000000000000000000000000000000000000000000000000000000000035253440000000000000000000000000000000000000000000000000000000000