608060405260dc60075560dc60085560166009556016600a556016600b556000600c556000600d556000600e556000600f556000601055600f600a6100449190610325565b61005190621e848061033b565b601155610060600f600a610325565b61006d90621e848061033b565b60125561007c600f600a610325565b61008990620f424061033b565b601355610098600f600a610325565b6100a590620f424061033b565b6014556016805461ffff60a81b191690553480156100c257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b03191633179055610122600f600a610325565b610130906305f5e10061033b565b33600090815260016020819052604082209290925560039061015a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260039093528183208054851660019081179091556016548216845282842080548616821790556005549091168352912080549092161790556101ca3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610202600f600a610325565b610210906305f5e10061033b565b60405190815260200160405180910390a3610352565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156102775780850481111561025b5761025b610226565b600184161561026957908102905b60019390931c928002610240565b935093915050565b60008261028e5750600161031f565b8161029b5750600061031f565b81600181146102b157600281146102bb576102d7565b600191505061031f565b60ff8411156102cc576102cc610226565b50506001821b61031f565b5060208310610133831016604e8410600b84101617156102fa575081810a61031f565b610307600019848461023c565b806000190482111561031b5761031b610226565b0290505b92915050565b600061033460ff84168361027f565b9392505050565b808202811582820484141761031f5761031f610226565b611ff2806103616000396000f3fe6080604052600436106101845760003560e01c8063751039fc116100d6578063a9059cbb1161007f578063f2fde38b11610059578063f2fde38b1461047d578063f5b3c3bf1461049d578063fb201b1d146104cd57600080fd5b8063a9059cbb14610401578063bf474bed14610421578063dd62ed3e1461043757600080fd5b80638da5cb5b116100b05780638da5cb5b146103875780638f9a55c0146103a557806395d89b41146103bb57600080fd5b8063751039fc146103475780637d1db4a51461035c578063896f1a951461037257600080fd5b806323b872dd1161013857806349bd5a5e1161011257806349bd5a5e146102c457806370a08231146102fc578063715018a61461033257600080fd5b806323b872dd14610268578063313ce567146102885780634464dd36146102a457600080fd5b8063095ea7b311610169578063095ea7b3146101ff5780630faee56f1461022f57806318160ddd1461025357600080fd5b8063022fe1eb1461019057806306fdde03146101a757600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b506101a56104e2565b005b3480156101b357600080fd5b5060408051808201909152600c81527f426f726b206f6e2042617365000000000000000000000000000000000000000060208201525b6040516101f69190611bf5565b60405180910390f35b34801561020b57600080fd5b5061021f61021a366004611c58565b610535565b60405190151581526020016101f6565b34801561023b57600080fd5b5061024560145481565b6040519081526020016101f6565b34801561025f57600080fd5b5061024561054c565b34801561027457600080fd5b5061021f610283366004611c84565b61056d565b34801561029457600080fd5b50604051600f81526020016101f6565b3480156102b057600080fd5b506101a56102bf366004611c58565b6105d6565b3480156102d057600080fd5b506016546102e4906001600160a01b031681565b6040516001600160a01b0390911681526020016101f6565b34801561030857600080fd5b50610245610317366004611cc5565b6001600160a01b031660009081526001602052604090205490565b34801561033e57600080fd5b506101a56106ca565b34801561035357600080fd5b506101a561077b565b34801561036857600080fd5b5061024560115481565b34801561037e57600080fd5b506101a561085d565b34801561039357600080fd5b506000546001600160a01b03166102e4565b3480156103b157600080fd5b5061024560125481565b3480156103c757600080fd5b5060408051808201909152600481527f424f524b0000000000000000000000000000000000000000000000000000000060208201526101e9565b34801561040d57600080fd5b5061021f61041c366004611c58565b6108f3565b34801561042d57600080fd5b5061024560135481565b34801561044357600080fd5b50610245610452366004611ce2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561048957600080fd5b506101a5610498366004611cc5565b610900565b3480156104a957600080fd5b5061021f6104b8366004611cc5565b60046020526000908152604090205460ff1681565b3480156104d957600080fd5b506101a5610a3e565b6005546001600160a01b0316336001600160a01b03161461050257600080fd5b3060009081526001602052604090205480156105215761052181610f04565b47801561053157610531816110b0565b5050565b60006105423384846110ea565b5060015b92915050565b600061055a600f600a611e18565b610568906305f5e100611e27565b905090565b600061057a848484611242565b6105cc84336105c785604051806060016040528060288152602001611f95602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906119f0565b6110ea565b5060019392505050565b6000546001600160a01b031633146106355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6005546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af11580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c59190611e3e565b505050565b6000546001600160a01b031633146107245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b031633146107d55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062c565b6107e1600f600a611e18565b6107ef906305f5e100611e27565b6011556107fe600f600a611e18565b61080c906305f5e100611e27565b6012557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61083c600f600a611e18565b61084a906305f5e100611e27565b60405190815260200160405180910390a1565b6000546001600160a01b031633146108b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062c565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156108f0573d6000803e3d6000fd5b50565b6000610542338484611242565b6000546001600160a01b0316331461095a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062c565b6001600160a01b0381166109d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161062c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a985760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062c565b60165474010000000000000000000000000000000000000000900460ff1615610b035760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161062c565b6015805473ffffffffffffffffffffffffffffffffffffffff1916734752ba5dbc23f44d87826276bf6fd6b1c372ad24908117909155610b59903090610b4b600f600a611e18565b6105c7906305f5e100611e27565b601560009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd09190611e60565b6001600160a01b031663c9c6539630601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c569190611e60565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf9190611e60565b601680546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff19909116811782556000908152600460209081526040808320805460ff199081166001908117909255945486168452600390925290912080549092161790556015541663f305d7194730610d6c816001600160a01b031660009081526001602052604090205490565b600080610d816000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e01573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e269190611e7d565b50506016546015546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebc9190611e3e565b50601680547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff1676010001000000000000000000000000000000000000000017905543600655565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610f4c57610f4c611eab565b6001600160a01b03928316602091820292909201810191909152601554604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe29190611e60565b81600181518110610ff557610ff5611eab565b6001600160a01b03928316602091820292909201015260155461101b91309116846110ea565b6015546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac9479061106d908590600090869030904290600401611ec1565b600060405180830381600087803b15801561108757600080fd5b505af115801561109b573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610531573d6000803e3d6000fd5b6001600160a01b0383166111655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161062c565b6001600160a01b0382166111e15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161062c565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112be5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161062c565b6001600160a01b03821661133a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161062c565b600081116113b05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161062c565b600080546001600160a01b038581169116148015906113dd57506000546001600160a01b03848116911614155b156118ad5761140f6103e8611409600954600e54116113fe57600754611402565b600c545b8590611a2a565b90611acf565b6001600160a01b03851660009081526004602052604090205490915060ff16801561144857506015546001600160a01b03848116911614155b801561146d57506001600160a01b03831660009081526003602052604090205460ff16155b15611577576011548211156114c45760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161062c565b601254826114e7856001600160a01b031660009081526001602052604090205490565b6114f19190611f33565b111561153f5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161062c565b43600654600161154f9190611f33565b111561156157823b1561156157600080fd5b600e805490600061157183611f46565b91905055505b6001600160a01b03831660009081526004602052604090205460ff161580156115b957506001600160a01b03831660009081526003602052604090205460ff16155b1561163957601254826115e1856001600160a01b031660009081526001602052604090205490565b6115eb9190611f33565b11156116395760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161062c565b6001600160a01b03831660009081526004602052604090205460ff16801561166a57506001600160a01b0384163014155b15611698576116956103e8611409600a54600e541161168b57600854611402565b600d548590611a2a565b90505b6001600160a01b03841660009081526004602052604090205460ff161580156116da57506001600160a01b03831660009081526004602052604090205460ff16155b80156116ef57506001600160a01b0384163014155b156116f8575060005b30600090815260016020526040902054601654600160a81b900460ff1615801561173a57506001600160a01b03841660009081526004602052604090205460ff165b801561174f5750601654600160b01b900460ff165b801561175c575060135481115b801561176b5750600b54600e54115b1561181e57601054431115611780576000600f555b6002600f54106117d25760405162461bcd60e51b815260206004820152601660248201527f4f6e6c7920322043412062616c616e63652073656c6c00000000000000000000604482015260640161062c565b6117ef6117ea846117e584601454611b11565b611b11565b610f04565b4780156117ff576117ff476110b0565b600f805490600061180f83611f46565b909155505043601055506118ab565b601654600160a81b900460ff1615801561185057506001600160a01b03841660009081526004602052604090205460ff165b80156118655750601654600160b01b900460ff165b8015611872575060135481115b80156118815750600b54600e54115b156118ab576118996117ea846117e584601454611b11565b4780156118a9576118a9476110b0565b505b505b801561192757306000908152600160205260409020546118cd9082611b26565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061191e9085815260200190565b60405180910390a35b6001600160a01b03841660009081526001602052604090205461194a9083611b85565b6001600160a01b03851660009081526001602052604090205561198f6119708383611b85565b6001600160a01b03851660009081526001602052604090205490611b26565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6119d98585611b85565b60405190815260200160405180910390a350505050565b60008184841115611a145760405162461bcd60e51b815260040161062c9190611bf5565b506000611a218486611f5f565b95945050505050565b600082600003611a3c57506000610546565b6000611a488385611e27565b905082611a558583611f72565b14611ac85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161062c565b9392505050565b6000611ac883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bc7565b6000818311611b205782611ac8565b50919050565b600080611b338385611f33565b905083811015611ac85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161062c565b6000611ac883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119f0565b60008183611be85760405162461bcd60e51b815260040161062c9190611bf5565b506000611a218486611f72565b602081526000825180602084015260005b81811015611c235760208186018101516040868401015201611c06565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146108f057600080fd5b60008060408385031215611c6b57600080fd5b8235611c7681611c43565b946020939093013593505050565b600080600060608486031215611c9957600080fd5b8335611ca481611c43565b92506020840135611cb481611c43565b929592945050506040919091013590565b600060208284031215611cd757600080fd5b8135611ac881611c43565b60008060408385031215611cf557600080fd5b8235611d0081611c43565b91506020830135611d1081611c43565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611d6c57808504811115611d5057611d50611d1b565b6001841615611d5e57908102905b60019390931c928002611d35565b935093915050565b600082611d8357506001610546565b81611d9057506000610546565b8160018114611da65760028114611db057611dcc565b6001915050610546565b60ff841115611dc157611dc1611d1b565b50506001821b610546565b5060208310610133831016604e8410600b8410161715611def575081810a610546565b611dfc6000198484611d31565b8060001904821115611e1057611e10611d1b565b029392505050565b6000611ac860ff841683611d74565b808202811582820484141761054657610546611d1b565b600060208284031215611e5057600080fd5b81518015158114611ac857600080fd5b600060208284031215611e7257600080fd5b8151611ac881611c43565b600080600060608486031215611e9257600080fd5b5050815160208301516040909301519094929350919050565b634e487b7160e01b600052603260045260246000fd5b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015611f135783516001600160a01b0316835260209384019390920191600101611eec565b50506001600160a01b039590951660608401525050608001529392505050565b8082018082111561054657610546611d1b565b600060018201611f5857611f58611d1b565b5060010190565b8181038181111561054657610546611d1b565b600082611f8f57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122050f1805ee751e03be436f1a283721e4dc10b05a8bbb492aa8ea78ea3b96d8d4864736f6c634300081b0033