anchor.diff:  part of client;
   
   class EndingScreenRenderingSystem extends VoidEntitySystem {
  +  /// to prevent scrolling
  +  var preventDefaultKeys = new Set.from([KeyCode.UP, KeyCode.DOWN, KeyCode.LEFT, KeyCode.RIGHT, KeyCode.SPACE]);
  +  var keyState = <int, bool>{};
  +  var blockingKeys = new Set.from([KeyCode.UP, KeyCode.DOWN, KeyCode.ENTER]);
  +  var blockedKeys = new Set<int>();
  +
  +  List<String> buttonLabels = <String>['World Map', 'Lost Units', 'Lost Castles', 'Defeated Units', 'Conquered Castles', 'Scouted Area'];
     var redrawBuffer = true;
  +  var highlighted = 0;
  +  var selected = 0;
     GameManager gameManager;
     CanvasRenderingContext2D ctx;
     CanvasElement worldMap;
  
positive.code:          ..strokeRect(0, 0, 800, 600)
           ..strokeStyle = Colors.MENU_BORDER
           ..lineWidth = 2
           ..strokeRect(0, 0, 800, 100)
           ..fillStyle = Colors.MENU_LABEL
           ..fillText(winLoseText, 400 - bufferCtx.measureText(winLoseText).width / 2, 40)
           ..drawImage(worldMap, 200, 100)
           ..restore();
        redrawBuffer = false;
      }
      ctx.drawImage(buffer, 0, 0);
    }
  
    @override
  
negative.code:   void initialize() {
      buffer = new CanvasElement(width: 800, height: 600);
      bufferCtx = buffer.context2D;
      bufferCtx..font = '18px Verdana'
               ..textBaseline = 'top';
      window.onKeyDown.listen((event) => handleInput(event, true));
      window.onKeyUp.listen((event) => handleInput(event, false));
    }
  
    void handleInput(KeyboardEvent event, bool pressed) {
      var keyCode = event.keyCode;
      if (preventDefaultKeys.contains(keyCode)) {
        event.preventDefault();
      }
      if (blockedKeys.contains(keyCode) && pressed) return;
      keyState[keyCode] = pressed;
      if (!pressed) {
        blockedKeys.remove(keyCode);
      } else if (blockingKeys.contains(keyCode)) {
        blockedKeys.add(keyCode);
      }
    }
  
    @override
    void processSystem() {
      if (redrawBuffer) {
        if (null == worldMap) {
          worldMap = new CanvasElement(width: 550, height: 550);
          worldMap.context2D..drawImageScaled(trs.buffer, 0, 0, 550, 550)
                            ..drawImageScaled(rs.buffer, 0, 0, 550, 550)
                            ..globalAlpha = 0.4
                            ..drawImageScaled(fowrs.fogOfWar, 0, 0, 550, 550);
        }
        var winLoseText = 'You have ${gameManager.playerWon ? 'WON' : 'LOST'} after ${gameManager.turn} turns';
        bufferCtx..save()
  