Embarcadero C ++ рдмрд┐рд▓реНрдбрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдУрдкрди WinSCP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛

PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ WinSP

рд╣рдо рд▓рдЧрд╛рддрд╛рд░ C / C ++ рдореЗрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛, рдпреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ Embarcadero C ++ рдмрд┐рд▓реНрдбрд░ рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реЛ рдЧрдПред рд╣рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдЬ рд╣рдордиреЗ WinSCP рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХреАред



WinSCP



WinSCP рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП SFTP рдФрд░ SCP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд░реА рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИред рдЬреАрдПрдирдпреВ рдЬреАрдкреАрдПрд▓ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╛рдЗрд▓ рдХреЙрдкреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред



рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ: http://winscp.net



рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Embarcadero C ++ Builder XE2 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдирд┐рд░реАрдХреНрд╖рдг



рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд▓рд╣рд╛рд▓, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рд╕рд╛рде рд╣реА рдЖрдк рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдкреВрд░реНрд╡-рддреИрдпрд╛рд░ * .i рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЕрдм рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред"



рдорд╛рдиреНрдпрддрд╛ рдкрд░рд┐рдгрд╛рдо



рдХрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рдереАрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ Embarcadero RAD Studio рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред



рдореЗрдореЗрдВрдЯ () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛



TForm * __fastcall TMessageForm::Create(....) { .... LOGFONT AFont; .... memset(&AFont, sizeof(AFont), 0); .... }
      
      





PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V575 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди '0' рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред рддреАрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред messagedlg.cpp 786



рддреАрд╕рд░реЗ рддрд░реНрдХ рдореЗрдВ рдореЗрдорд╕реЗрдЯ () рдлрд╝рдВрдХреНрд╢рди рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рд▓реЗрддрд╛ рд╣реИред рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдЕрдкреНрд░рд┐рдп рдЯрд╛рдЗрдкреЛред рд╕рдВрд░рдЪрдирд╛ рдЕрд╕рдорд╛рди рд╣реИред



рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдПрдХ рдФрд░ рд╕рдорд╛рди рдЯрд╛рдЗрдкреЛ рд╣реИ: messagedlg.cpp 796



рдПрдХ рдирдЧрдгреНрдп рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



 void __fastcall TCustomScpExplorerForm::EditorAutoConfig() { .... else { .... TEditorList EditorList; EditorList = *WinConfiguration->EditorList; EditorList.Insert(0, new TEditorPreferences(EditorData)); WinConfiguration->EditorList = &EditorList; } .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V506 рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдЪрд░ 'EditorList' рдореЗрдВ рдЗрд╕ рдЪрд░ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдкреЙрдЗрдВрдЯрд░ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред customscpexplorer.cpp 2633



рд╕реНрдХреЛрдк рдЫреЛрдбрд╝рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж 'EditorList' рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред



рд╕рдВрд╡рд╛рдж рдореЗрдВ рдХрдЪрд░рд╛



 bool __fastcall RecursiveDeleteFile(....) { SHFILEOPSTRUCT Data; memset(&Data, 0, sizeof(Data)); .... Data.pTo = L""; .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V540 рд╕рджрд╕реНрдп 'pTo' рдХреЛ рджреЛ 0 рд╡рд░реНрдгреЛрдВ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред 16.c рдкрд░ рдЖрдо



MSDN рдкрд░ pTo рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдХреЛ рдиреЛрдЯ рдХрд░реЗрдВ: "рдиреЛрдЯ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбрдмрд▓-рд╢реВрдиреНрдп рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред"



рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╡рд╛рдж рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдХрдЪрд░рд╛ рд╕рдорд╛рд╣рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдм рднрд╛рдЧреНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдб рд╡реИрд╕реЗ рднреА рдЧрд▓рдд рд╣реИред



рдбреБрдкреНрд▓реАрдХреЗрдЯ рдкрдВрдХреНрддрд┐



 int CFileZillaApi::Init(....) { .... m_pMainThread->m_hOwnerWnd=m_hOwnerWnd; m_pMainThread->m_hOwnerWnd=m_hOwnerWnd; .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V519 'm_pMainThread-> m_hOwnerWnd' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 88, 89. filezillaapi.cpp 89



рд╢рд╛рдпрдж рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рдмрд╕ рдПрдХ рд▓рд╛рдЗрди рд╕рддрд╣реА рд╣реИред



рдЯреВрдЯреА рд╣реБрдИ рдЬрд╛рдБрдЪ



 STDMETHODIMP CShellExtClassFactory::CreateInstance(....) { .... CShellExt* ShellExt = new CShellExt(); if (NULL == ShellExt) { return E_OUTOFMEMORY; } .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V668 'рд╢реЗрд▓рдПрдХреНрд╕реНрдЯ' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЕрд╢рдХреНрдд рдХрд░рдиреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЛрдИ рд╕рдордЭрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдореГрддрд┐ рдХреЛ 'рдирдП' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред dragext.cpp 554



"If (NULL == рд╢реЗрд▓рдПрдХреНрд╕реНрдЯ)" рдХреЛ рдЪреЗрдХ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рддреЛ 'рдирдпрд╛' рдСрдкрд░реЗрдЯрд░ рдЕрдкрд╡рд╛рдж std :: bad_alloc рдлреЗрдВрдХ рджреЗрдЧрд╛ред



Fprintf () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЦрддрд░рдирд╛рдХ рддрд░реАрдХрд╛



 bool CAsyncSslSocketLayer::CreateSslCertificate(....) { .... char buffer[1001]; int len; while ((len = pBIO_read(bio, buffer, 1000)) > 0) { buffer[len] = 0; fprintf(file, buffer); } .... }
      
      





V618 рдЗрд╕ рддрд░рд╣ рд╕реЗ 'fprintf' рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЦрддрд░рдирд╛рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬреЛ рд▓рд╛рдЗрди рдкрд╛рд╕ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рдЙрд╕рдореЗрдВ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг: рдкреНрд░рд┐рдВрдЯрдл ("% s", str); asyncsslsocketlayer.cpp 2247



рдпрджрд┐, рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдмрдлрд░ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реЛрдЧрд╛ред рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛:

 fprintf(file, "%s", buffer);
      
      





рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рднреЗрджреНрдпрддрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред



рдЪрд░ 'рдЧрд▓рддреА' рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рд╣реИ



 static error_t client_send_propfind_request(....) { .... error_t err = 0; int code = 0; apr_hash_t * props = NULL; const char * target = path_uri_encode(remote_path, pool); char * url_path = apr_pstrdup(pool, target); WEBDAV_ERR(neon_get_props(&props, ras, url_path, NEON_DEPTH_ZERO, starting_props, false, pool)); if (err && (err == WEBDAV_ERR_DAV_REQUEST_FAILED)) .... }
      
      





рдЪреЗрддрд╛рд╡рдиреА: V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ: (рдЧрд▓рдд == 1003)ред webdavfilesystem.cpp 10990



рдирд┐рд╖реНрдХрд░реНрд╖



рдЖрдк Embarcadero RAD Studio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╣рд╛рдБ рд╣реИрдВ? рдПрдп! рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЖрдВрдХрдбрд╝реЗ рдмрддрд╛рддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИрдВред рдЖрдУ рдФрд░ PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛ!



рдпрд╣ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реИред



рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдВрдбреНрд░реА рдХрд╛рд░рдкреЛрд╡ред Embarcadero C ++ рдмрд┐рд▓реНрдбрд░ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ WinSCP рдХрд╛ рдПрдХ рдЪреЗрдХ ред



рдХреНрдпрд╛ рдЖрдкрдиреЗ рд▓реЗрдЦ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ?
рдЕрдХреНрд╕рд░ рд╣рдорд╛рд░реЗ рд▓реЗрдЦреЛрдВ рд╕реЗ рд╡рд╣реА рдкреНрд░рд╢реНрди рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдпрд╣рд╛рдВ рдЙрдирдХреЗ рдЙрддреНрддрд░ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВ: рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рдХреИрдкреНрдкрдХреИрдЯ, рд╕рдВрд╕реНрдХрд░рдг 2014 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм ред рдХреГрдкрдпрд╛ рд╕реВрдЪреА рджреЗрдЦреЗрдВред




All Articles