anchor.diff:  
     end else if (parsed[2] = 'SETOUT') then
     begin
  +    var addr: Integer;
       try
         addr := StrToInt(parsed[3]);
       except
  
positive.code: /// /////////////////////////////////////////////////////////////////////////////
  
  procedure TRCSd.ParseAuth(Sender: TIdContext; parsed: TStrings);
  var User: TUser;
    client: TRCSdClient;
  begin
    // -> zjistime uzivatele
    User := UsrDb.GetUser(parsed[3]);
  
    // kontrola existence uzivatele
    if (not Assigned(User)) then
    begin
      PanelServer.SendLn(Sender, '-;RCSd;AUTH;not;Neexistující uživatel');
      Exit();
    end;
  
    // kontrola BANu uzivatele
    if (User.ban) then
    begin
      PanelServer.SendLn(Sender, '-;RCSd;AUTH;not;Uživatel ' + User.username + ' má BAN !');
      Exit();
    end;
  
    // kontrola hesla uzivatele
    if (not TUser.ComparePasswd(parsed[4], User.password, User.salt)) then
    begin
      PanelServer.SendLn(Sender, '-;RCSd;AUTH;not;Neplatné heslo');
      Exit();
    end;
  
    // kontrola opravneni root
    if (not User.root) then
    begin
      PanelServer.SendLn(Sender, '-;RCSd;AUTH;not;Uživatel nemá oprávnění root');
      Exit();
    end;
  
    client := TRCSdClient.Create(Sender);
    Self.clients.Add(client);
    PanelServer.SendLn(Sender, '-;RCSd;AUTH;ok;Autorizováno');
  end;
  
negative.code: end;
  
  procedure TRCSdClient.SendInput(addr: Integer);
  var str: string;
    max: Cardinal;
  begin
    str := '';
    max := RCSi.GetModuleInputsCountSafe(addr);
  
    for var i := 0 to max - 1 do
    begin
      try
        str := str + IntToStr(Integer(RCSi.GetInput(addr, i))) + '|';
  