anchor.diff:    begin
       for var area: TArea in Self.areas do
         Area.ORDKClickClient();
  -    PanelServer.ConfirmationSequence(SenderPnl, Self.PrivokDKPotvrSekv, SenderOR as TArea,
  -      'Zapnutí přivolávací návěsti', TBlocks.GetBlksList(Self), nil);
  +
  +    Self.m_state.upoSenderOR := SenderOR;
  +    Self.m_state.upoSenderPnl := SenderPnl;
  +
  +    var barriers: TJCBarriers := TJCBarriers.Create();
  +    var UPO: TUPOItems := TList<TUPOItem>.Create;
  +    try
  +      Self.PrivolBarriers(barriers, SenderOR as TArea);
  +
  +      // Only warning barriers implemented yet, no other are required
  +
  +      if ((barriers.Count > 0) and (senderPnl <> nil)) then
  +      begin
  +        Self.Log('PN: celkem ' + IntToStr(barriers.Count) + ' warning bariér, žádám potvrzení...', ltMessage);
  +        for var i: Integer := 0 to barriers.Count - 1 do
  +          UPO.Add(JCBarriers.JCBarrierToMessage(barriers[i]));
  +
  +        PanelServer.UPO(SenderPnl, UPO, false, Self.PrivolBarriersConfirmed, Self.PrivolBarriersRejected, Self);
  +      end else begin
  +        Self.PrivolBarriersConfirmed(Self);
  +      end;
  +
  +    finally
  +      barriers.Free();
  +      UPO.Free();
  +    end;
  +
     end else begin
       if (Button = TPanelButton.F2) then
         PanelServer.Menu(SenderPnl, Self, TArea(SenderOR), '$' + TArea(SenderOR).name + ',-,' + 'KC');
     end;
   end;
   
  +procedure TBlkSignal.PrivolBarriers(var barriers: TList<TJCBarrier>; SenderArea: TArea);
  +begin
  +  var privol: TBlksList := Blocks.GetNavPrivol(SenderArea);
  +  for var i: Integer := 0 to privol.Count - 1 do
  +    barriers.Add(JCBarrier(barPrivol, privol[i] as TBlk, (privol[i] as TBlk).id));
  +end;
  +
  +procedure TBlkSignal.PrivolBarriersConfirmed(Sender: TObject);
  +begin
  +  if ((Self.m_state.upoSenderOR = nil) or (Self.m_state.upoSenderPnl = nil)) then
  +    Exit();
  +
  +  PanelServer.ConfirmationSequence(Self.m_state.upoSenderPnl, Self.PrivokDKPotvrSekv, Self.m_state.upoSenderOR as TArea,
  +    'Zapnutí přivolávací návěsti', TBlocks.GetBlksList(Self), nil);
  +
  +  Self.m_state.upoSenderOR := nil;
  +  Self.m_state.upoSenderPnl := nil;
  +end;
  +
  +procedure TBlkSignal.PrivolBarriersRejected(Sender: TObject);
  +begin
  +  Self.selected := TBlkSignalSelection.none;
  +end;
  +
   /// /////////////////////////////////////////////////////////////////////////////
   
   procedure TBlkSignal.PrivokDKPotvrSekv(Sender: TIdContext; success: Boolean);
  
positive.code: uses BlockDb, BlockTrack, TJCDatabase, TCPServerPanel, Graphics, BlockGroupSignal,
    GetSystems, Logging, TrainDb, BlockIR, AreaStack, ownStrUtils, BlockPst,
    BlockRailwayTrack, BlockRailway, BlockTurnout, BlockLock, TechnologieAB,
    predvidanyOdjezd, ownConvert, RCS, IfThenElse, RCSErrors;
  
  constructor TBlkSignal.Create(index: Integer);
  begin
  
negative.code: 
      procedure PrivolDKClick(SenderPnl: TIdContext; SenderOR: TObject; Button: TPanelButton);
      procedure PrivokDKPotvrSekv(Sender: TIdContext; success: Boolean);
      procedure PrivolBarriers(var barriers: TList<TJCBarrier>; SenderArea: TArea);
      procedure PrivolBarriersConfirmed(Sender: TObject);
      procedure PrivolBarriersRejected(Sender: TObject);
      procedure RNZPotvrSekv(Sender: TIdContext; success: Boolean);
  
      function GetTrackId(): TBlk;
  