using System;
namespace Balloons_Pops_Game_Variant_Four
{
public class Player : IComparable
{
private string playerName;
private int playerScore;
public Player()
{
playerName = "no name";
playerScore = 0;
}
public Player(string name, int score)
{
playerName = name;
playerScore = score;
}
public string Name
{
get { return playerName; }
set { playerName = value; }
}
public int Score
{
get { return playerScore; }
set { playerScore = value; }
}
public override bool Equals(object obj)
{
if (obj == null)
{
return false;
}
return Equals(this, obj as Player);
}
public override int GetHashCode()
{
return this.GetHashCode();
}
public int CompareTo(object obj)
{
if (!(obj is Player))
{
throw new ArgumentException(
"A Player object is required for comparison.");
}
Player s1 = this;
Player s2 = (Player)obj;
return -1 * s1.Score.CompareTo(s2.Score);
}
public bool Equals(Player x, Player y)
{
if ((x.Name) != (y.Name)) return false;
if ((x.Score) != (y.Score)) return false;
return true;
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIEJhbGxvb25zX1BvcHNfR2FtZV9WYXJpYW50X0ZvdXIKewogICAgcHVibGljIGNsYXNzIFBsYXllciA6IElDb21wYXJhYmxlCiAgICB7CiAgICAgICAgcHJpdmF0ZSBzdHJpbmcgcGxheWVyTmFtZTsKICAgICAgICBwcml2YXRlIGludCBwbGF5ZXJTY29yZTsKCiAgICAgICAgcHVibGljIFBsYXllcigpCiAgICAgICAgewogICAgICAgICAgICBwbGF5ZXJOYW1lID0gIm5vIG5hbWUiOwogICAgICAgICAgICBwbGF5ZXJTY29yZSA9IDA7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgUGxheWVyKHN0cmluZyBuYW1lLCBpbnQgc2NvcmUpCiAgICAgICAgewogICAgICAgICAgICBwbGF5ZXJOYW1lID0gbmFtZTsKICAgICAgICAgICAgcGxheWVyU2NvcmUgPSBzY29yZTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBzdHJpbmcgTmFtZQogICAgICAgIHsgCiAgICAgICAgICAgIGdldCB7IHJldHVybiBwbGF5ZXJOYW1lOyB9CiAgICAgICAgICAgIHNldCB7IHBsYXllck5hbWUgPSB2YWx1ZTsgfQogICAgICAgIH0KCiAgICAgICAgcHVibGljIGludCBTY29yZQogICAgICAgIHsKICAgICAgICAgICAgZ2V0IHsgcmV0dXJuIHBsYXllclNjb3JlOyB9CiAgICAgICAgICAgIHNldCB7IHBsYXllclNjb3JlID0gdmFsdWU7IH0KICAgICAgICB9CgogICAgICAgIHB1YmxpYyBvdmVycmlkZSBib29sIEVxdWFscyhvYmplY3Qgb2JqKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKG9iaiA9PSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIEVxdWFscyh0aGlzLCBvYmogYXMgUGxheWVyKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBvdmVycmlkZSBpbnQgR2V0SGFzaENvZGUoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuR2V0SGFzaENvZGUoKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBpbnQgQ29tcGFyZVRvKG9iamVjdCBvYmopCiAgICAgICAgewogICAgICAgICAgICBpZiAoIShvYmogaXMgUGxheWVyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgIkEgUGxheWVyIG9iamVjdCBpcyByZXF1aXJlZCBmb3IgY29tcGFyaXNvbi4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgUGxheWVyIHMxID0gdGhpczsKICAgICAgICAgICAgUGxheWVyIHMyID0gKFBsYXllcilvYmo7CiAgICAgICAgICAgIHJldHVybiAtMSAqIHMxLlNjb3JlLkNvbXBhcmVUbyhzMi5TY29yZSk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoUGxheWVyIHgsIFBsYXllciB5KQogICAgICAgIHsKCiAgICAgICAgICAgIGlmICgoeC5OYW1lKSAhPSAoeS5OYW1lKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBpZiAoKHguU2NvcmUpICE9ICh5LlNjb3JlKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgIH0KfQo=