/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * The below code uses the @ operator before parse_url() calls because in PHP * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @ * operator is usually a pretty strong indicator of code smell, but please don't * judge me by it in this case; ordinarily, I despise its use, but I can't find * a cleaner way to avoid this problem (using set_error_handler() could work, * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of * Pathologic. * @see https://drupal.org/node/2104849 * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = @parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $cached_settings = &drupal_static(__FUNCTION__, array()); if (!isset($cached_settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = @parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… // @todo: This is pretty horrible. Can this be simplified? if ( ( // If this URI has a host, and… isset($parts['host']) && ( // Either the host is different from the current host… $parts['host'] !== $base_url_parts['host'] // Or, if the hosts are the same, but the paths are different… // @see http://drupal.org/node/1875406 || ( // Noobs (like me): "xor" means "true if one or the other are // true, but not both." (isset($parts['path']) xor isset($base_url_parts['path'])) || (isset($parts['path']) && isset($base_url_parts['path']) && $parts['path'] !== $base_url_parts['path']) ) ) ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; $cached_settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $cached_settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $cached_settings['current_settings'] = &$cached_settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the base path. global $base_path; // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $cached_settings later and not have the changes be "permanent." $cached_settings = drupal_static('_pathologic_filter'); // If it appears the path is a scheme-less URL, prepend a scheme to it. // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it // looks like Pathologic can't handle the URL, it will return the scheme-less // original. // @see https://drupal.org/node/1617944 // @see https://drupal.org/node/2030789 if (strpos($matches[2], '//') === 0) { if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') { $matches[2] = 'https:' . $matches[2]; } else { $matches[2] = 'http:' . $matches[2]; } } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = @parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE || ( // If there's a scheme part and it doesn't look useful, bail out. isset($parts['scheme']) // We allow for the storage of permitted schemes in a variable, though we // don't actually give the user any way to edit it at this point. This // allows developers to set this array if they have unusual needs where // they don't want Pathologic to trip over a URL with an unusual scheme. // @see http://drupal.org/node/1834308 // "files" and "internal" are for Path Filter compatibility. && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', array('http', 'https', 'files', 'internal'))) ) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. // @todo Should we still try to do path correction on these files too? if (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $cached_settings['is_file'] = TRUE; } else { $cached_settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($cached_settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } // Is this is a root-relative url (no host) that didn't match above? // Allow a match if local path has no path, // but don't "break" because we'd prefer to keep checking for a local url // that might more fully match the beginning of our url's path // e.g.: if our url is /foo/bar we'll mark this as a match for // http://example.com but want to keep searching and would prefer a match // to http://example.com/foo if that's configured as a local path elseif (!isset($parts['host']) && (!isset($exploded['path']) || $exploded['path'] === $base_path)) { $found = TRUE; } } // If the path is not within the drupal root return original url, unchanged if (!$found) { return $matches[0]; } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. $parts['path'] = ltrim($parts['path'],'/'); // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // If we didn't previously identify this as a file, check to see if the file // exists now that we have the correct path relative to DRUPAL_ROOT if (!$cached_settings['is_file']) { $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . '/'. $parts['path']); } // Okay, deal with language stuff. if ($cached_settings['is_file']) { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } else { // Let's see if we can split off a language prefix from the path. if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $cached_settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $cached_settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are disabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($cached_settings['is_file'])) { $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = @parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $cached_settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return " {$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } Берег героев: 15 минут у обелиска | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Берег героев: 15 минут у обелиска

– Здорово, парни! – произношу вслух, грустно улыбаясь, и поглаживаю рукой холодную плиту обелиска. Взгляд медленно пробегает по ровным рядам фамилий воинов Красной Армии, которых здесь ровно 1295. Среди них – отдельная плита для десяти Героев Советского Союза. Читая даты рождения и смерти, ловлю себя на мысли, что в среднем возраст солдат и офицеров – не старше 30…
Лоевское поднепровье – моя малая Родина. Отсюда, с высоты холма, над поймой Днепра далеко просматривается Украина.
Здесь на пересечениях знаменитого пути «из варягов в греки», в древнем Любече, расположенном в полутора десятках километрах на противоположном берегу, много веков назад славянка Малуша родила и взрастила великого государственника, первого собирателя и «крестителя» Руси князя Владимира. А позже, в 17-м веке, на этих землях насмерть сражались сформированные из местных крестьян загоны казацкого полковника Кричевского с войском гетмана Речи Посполитой Януша Радзивилла…
Прекраснейший край лесов, полей и заливных лугов… Колыбель русской цивилизации… Берег тружеников и героев… Если есть место на земле, которое может ассоциироваться с классическим образом «Родина» – то это именно оно.
Здесь, на Лоевщине я родился и, несмотря на повседневную занятость, всегда нахожу весной время приехать, чтобы навестить свою родню и лишний раз взглянуть на разлив древнего, воспетого в былинах Днепра.
И каждый раз во время приезда посещаю поселок Деражичи – место самого крупного на Лоевщине воинского захоронения, чтобы «поздороваться» с лежащими здесь ребятами, убрать вокруг ограды мемориала редкий мусор, отдать дань своей памяти и уважения...
Не сразу пришел я к такому ежегодному ритуалу. Сколько раз мальчишкой с местной ребятней гонял на «велике» мимо памятников, лишь изредка останавливая свой взгляд на братских захоронениях. И только с годами начало приходить понимание значения нечеловеческого подвига, совершенного простыми советскими парнями на этой земле. Такого же, как и в тысячах других мест воюющего и истекающего кровью Союза.
Позже осознание непосредственной связи своего рождения с Речицко-Лоевской операцией по форсированию Днепра армиями маршала Рокоссовского и штурмом немецкого «Восточного вала» заставили меня заняться ее подробным изучением.
Стоя у мемориала, я восстанавливаю в памяти информацию по обстоятельствам той битвы, пытаюсь воспроизвести точные цифры и факты.
Немцы были убеждены, что лоевский участок неприступен. Они сосредоточили в Лоевском районе 18 пехотных батальонов, 330 орудий и минометов, почти 350 пулеметов.
– При реке шириной в 400 метров и глубиной 7-8 метров оборона противника состояла из двух линий траншей с ходами сообщений полного профиля, – писал в своих воспоминаниях генерал Батов.
На высоком берегу старого русла находились окопы артиллерии для ведения огня прямой наводкой. Населенные пункты и отдельные постройки были приспособлены к длительной обороне.
На подготовку к форсированию Днепра нашим войскам было отведено 5 дней. Все это время шла напряженная работа: разведка, подготовка переправочных средств, тренировка личного состава. Для непосредственного десантирования были сформированы десантные батальоны, которые должны были первыми переправиться через Днепр и овладеть плацдармом на правом берегу.
Батальоны формировались из числа солдат и офицеров, уже имевших опыт форсирования больших водных преград.
15 октября ровно в 6 ч. 30 минут началось наступление. В артподготовку включились сотни орудий. Над Днепром пронеслись штурмовики 299-й авиадивизии из 16-й Воздушной Армии генерала С.Руденко. Под прикрытием дымовой завесы лодки с десантниками отчалили от левого берега. Переправа началась. По словам очевидцев, этот смертный бой шел воистину, как писал поэт, не ради славы – ради жизни на земле.
Внезапность наступления сыграла свою роль, но только в самом начале. Однако уже на середине реки наших солдат встретила стена беспощадного огня. Ледяная вода Днепра бурлила от взрывов снарядов, мин и бомб. Фашисты понимали, что успешная операция на данном участке даст оперативный простор Красной Армии для развития наступления, и поэтому сопротивлялись с яростью и ожесточением.
Для многих тысяч бойцов великая река в течение того дня стала общей братской могилой…
При изучении эпизодов операции до глубины души поразили повествования о подвигах советских солдат. И конкретно – все, что связано с местом моего рождения – деревней Бывальки. Ведь именно здесь шло одно из самых ожесточенных сражений в Речицко-Лоевской наступательной операции.
Почему? Да потому что деревня, как и другие населенные пункты, стоит на естественной возвышенности, по линии которой фашисты и выстроили свой эшелонированный укрепленный «Восточный вал». Но, помимо указанных обстоятельств, Днепр от Бывалек отделяет заливной луг шириной в два километра, который штурмовым группам после речной переправы приходилось преодолевать под прицельным огнем бьющей с высоты немецкой артиллерии и пулеметов.
Я вчитывался в описание обстоятельств битвы. «Включая» воображение, пытался представить те «жаркие» дни. Что думали воины, идя в бой? Что чувствовали? Что двигало их к свершению таких сверхчеловеческих поступков?! Я десятки раз задавал себе эти вопросы. И чтобы найти ответ, искал в разных источниках их автобиографии, изучал найденные справки. Вот лишь некоторые из них:
Карпенко Виктор Александрович – командир пулеметной роты 1281-го стрелкового полка 60-й стрелковой дивизии 65-й армии Центрального фронта, старший лейтенант.
Родился 28 июля 1923 года в селе Кочеров Радомышльского района Житомирской области в крестьянской семье. Украинец. Член ВЛКСМ с 1941 года. В 1938 году окончил среднюю школу. В 1940 году — Киевское техническое училище. Работал на авиазаводе помощником мастера.
В 1941 году призван в ряды Красной Армии. В 1942 году окончил Киевское пехотное училище. В боях Великой Отечественной войны – с 1942 года. Воевал на Брянском и Центральном фронтах. Был дважды ранен.
Осенью 1943 года советские войска вышли к Днепру. Пулеметная рота, которой командовал старший лейтенант В.А.Карпенко, вместе со стрелковыми подразделениями была назначена в первый десантный отряд. Форсировали Днепр южнее Лоева Гомельской области Белоруссии.
Темная осенняя ночь. Холодные воды реки. Неспокоен Днепр, словно волнуется за смельчаков, стремительно плывущих на лодках и утлых плотиках к его правому берегу. Такая ночь и помеха, и помощница для десантников. Подплыли неслышно и сразу же выбрались на прибрежные бугры, сбили с них врага.
Опомнившись от удара, фашисты предприняли отчаянные попытки сбросить десант обратно в реку. Завязался ночной бой. Советские воины крепко зацепились, на атаки отвечали контр­атаками. Плацдарм хотя и медленно, но расширялся.
На рассвете 18 октября 1943 года старший лейтенант В.А.Карпенко вдруг заметил, что враг начал занимать важную высоту, с которой хорошо просматривался Днепр. Ясно, думал командир роты, что с этой высоты противник будет управлять огнем артиллерии по нашим войскам, которые вот-вот должны форсировать Днепр. А если так — надо парализовать «глаза» врага.
Как старший из оставшихся командиров В.А.Карпенко принимает решение выбить гитлеровцев с господствующей над местностью высоты. Короткий, но напряженный бой — и высота взята. Теперь надо закрепиться, удержать ее. В.А.Карпенко хорошо понимал, что враг попытается, чего бы это ему ни стоило, вернуть утраченные позиции.
Пулеметчики, используя захваченные вражеские траншеи, начали готовиться к решительному бою. И бой начался. Враг обрушил на высоту тучи артиллерийских снарядов и авиабомб. За шквалом огня вражеская пехота с танками пошла в атаку. По ним ударили наши пулеметчики. Танки подрывали гранатами, жгли бутылками с зажигательной смесью.
Отбито уже две атаки. Но и ряды защитников высоты сильно поредели. Уцелели только три пулемета, причем один из них остался без расчета. Враг снова обрушил на высоту шквал артиллерийско-минометного огня, бросил авиацию, затем пошел в новую атаку. Мастер пулеметного огня В.А.Карпенко расстреливал цепи противника, прижимал их к земле.
Пали в бою уже все товарищи. Замолкли их пулеметы. На высоте остался он один. Воспаленными глазами окинул реку и увидел лодки с бойцами, которые спешили к правому берегу на выручку своим товарищам.
Враг тем временем стремился обойти высотку с флангов. Но В.А.Карпенко, разворачивая пулемет то влево, то вправо, не подпускал фашистов к высоте, пока пуля не сразила его. А в это время высоту уже занимали подоспевшие подразделения советских воинов. По свидетельствам бойцов, Карпенко через нестерпимую, пронизывающую все тело боль улыбнулся подоспевшим боевым товарищам и умер у них на руках.
Василий Иванович Куликов – командир орудия 2-й батареи 969-го артиллерийского полка 60-й Севской стрелковой дивизии 18-го стрелкового корпуса 65-й армии Белорусского фронта, старший сержант.
Родился в 1921 году в городе Иваново-Вознесенске (ныне Иваново) в семье рабочего. Русский. Член ВКП(б) с 1943 года. Окончил 7 классов, работал слесарем-водопроводчиком в депо.
В Красной Армии с 1940 года. Служил в артиллерии. Участник Великой Отечественной войны с 1941 года. За три года боев был награжден орденом Красного Знамени, медалью «За отвагу».
Командир орудия старший сержант Куликов отличился при форсировании реки Днепр. 17 октября 1943 года он переправился через реку в районе деревни Бывальки (Лоевский район Гомельской области). У самого берега орудие и расчет смыло с плота близким взрывом. Куликов организовал спасение орудия и боеприпасов. Вытащив пушки на сушу, артиллеристы тут же вступили в бой, помогли отразить пехоте очередную контратаку. В течение нескольких дней вместе с пехотой расчет Куликова удерживал захваченный плацдарм. Вот как описан один из боевых эпизодов тех дней в наградном листе на представление к геройскому званию.
«20 октября 1943 года, выкатив свое орудие на прямую наводку, вступил в единоборство с пятью немецкими «фердинандами». Снаряды рвались в трех-пяти метрах от орудия Куликова. Будучи раненым, с подбитым колесом у пушки, он продолжал вести огонь, в упор расстреливая вражескую технику и фашистов. При этом подбил один «фердинанд», два 105-миллиметровых орудия, два пулемета, одну штабную повозку с документами, две упряжки с лошадьми, уничтожил до 20 немецких солдат и офицеров и обратил в бегство четырех «фердинандов».
21 октября 1943 года был представлен к званию Героя Советского Союза. Но узнать о высокой награде отважному артиллеристу было не суждено. Наши войска продолжали наступление на правом берегу Днепра. Старший сержант Куликов геройский погиб 30 октября 1943 года.
Указом Президиума Верховного Совета СССР от 9 февраля 1944 года за образцовое выполнение боевых заданий командования на фронте борьбы с немецко-фашист­скими захватчиками и проявленные при этом мужество и героизм старшему сержанту Куликову Василию Ивановичу посмертно присвоено звание Героя Советского Союза.
Похоронен в деревне Михалевка Лоевского района Гомельской области. На могиле установлена мемориальная плита. Его имя носит школа № 23 города Иванова.
Награжден орденами Ленина, Красной Звезды, медалью.
Фрол Андреевич Ермаков – лейтенант, командир стрелковой роты 1281-го стрелкового полка 60-й Севско-Варшавской Краснознаменной ордена Суворова стрелковой дивизии. Родился в 1915 году в деревне Нестеровка Новосергиевского района Оренбургской области в семье бедного крестьянина. Русский. Член КПСС с 1943 года. После окончания начальной школы до призыва на военную службу работал на торфоразработках и на кирпичном заводе. В 1937 году призван в Красную Армию, окончил полковую школу в 1938 году, курсы младших лейтенантов в 1941 году, затем проходил службу в запасном полку, обучая молодых бойцов. С мая 1942 года до дня гибели – 20 октября 1943 года – воевал на Юго-Западном, Центральном фронтах, участвовал в боях под Харьковом, в Курской битве, освобождении Украины, Белоруссии.
Звание Героя Советского Союза Ф.А.Ермакову присвоено посмертно 30 октября 1943 года за отвагу и доблесть, проявленные при форсировании Днепра, захвате и удержании плацдарма на западном берегу реки.
В три часа ночи 18 сентября 1943 года десантники во главе с лейтенантом Ермаковым на плотах и лодках отплыли от восточного берега. Противник пока ничего не подозревал, вел себя как обычно: освещал свой берег ракетами, изредка стрелял из пулеметов в сторону нашего расположения. Но уже примерно на середине реки фашисты заметили десантников и открыли неистовый огонь из всех видов оружия.
Стрелковая рота Ермакова с небольшими потерями высадилась на берег и во главе с командиром бросилась на штурм первой траншеи врага. Смелым и стремительным броском, ломая упорное сопротивление, рота Ермакова овладела первой траншеей, захватила прибрежную высоту и устремилась вперед. Тотчас же лейтенант Ермаков радировал командованию о том, что плацдарм занят, рота готова к наступлению на село Бывальки, требуется поддержка огнем.
На захваченную позицию переправлялись остальные роты батальона. Артиллерия начала обстрел противника. После сильного огневого налета Ермаков, эффективно используя взаимодействие огня своей роты и артиллерии, несмотря на сильное противодействие противника, поднял своих бойцов в атаку и повел на село.
Овладев окраиной села, рота закрепилась на занятом рубеже. Враг не мог смириться с потерей своих позиций и перешел в контратаку. В этот день гитлеровцы предпринимали контратаку трижды, но безуспешно. Рота под командованием лейтенанта Ермакова нанесла большие потери противнику и не отступила ни на шаг.
Утром 19 сентября гитлеровцы, подтянув свежие силы, вновь пошли в наступление. На этот раз против роты Ермакова, поредевшей в бою, противник бросил целый батальон пехоты. Советские воины защищались до последней возможности, но превосходящим силам врага все-таки удалось ворваться в расположение роты. В эти критические минуты командир поднялся из окопа и крикнул: «Вперед! За Родину! За Сталина!» Стреляя на ходу в наседавших гитлеровцев, он повел своих бойцов в атаку. Фашисты были вынуждены бежать. Но вражеская пуля сразила героя….
В памяти всплыли слова из исторической справки: «За мужество и героизм, проявленные при форсировании Днепра и освобождении Лоевского района от немецко-фашистских захватчиков, 279 воинов удостоены звания Героя Советского Союза»...
Я представляю грохот сражения, лязг и пылающий жар рвущегося на части металла, кружащую над полем боя смерть и… потоки, нет – целые реки крови! И спрашиваю себя: что в состоянии заставить человека не сойти с ума, осознанно вести вперед свое тело на выполнение поставленной задачи посреди всего этого ужаса и ада на земле?! Что заставляет идти заведомо меньшими силами в контратакующую штыковую, когда кажется, что нет в природе способов повергнуть столь многочисленного врага? Стиснув зубы, методично и четко отдавать приказы посреди рвущихся и сметающих все живое снарядов? При этом вести прицельный огонь по рою идущих на тебя 50-тонных бронированных чудовищ?
Что принуждает вести огонь из пулемета, когда ты остался один против тьмы врагов, когда твоя плоть прошита пулями и осколками, ты истекаешь кровью, а десятки твоих братьев замертво лежат рядом? Ведь можно спрятаться, отлежаться под трупами! А потом сослаться на ранение и невозможность при таких условиях вести бой!..
В какой-то момент от воспоминаний и мыслей о прочитанном подкативший ком к горлу спирает дыхание. Но выработанная годами привычка позволяет удержаться от ненужных на этом святом месте слез. И только сильнее сжимаются и играют от напряжения на щеках скулы…
Ради чего же, хлопцы, сложили вы свои головы?! Ради чего принимали героическую и мученическую смерть?!
Ради своих потомков? Может быть, ради режиссера-постмодерниста Михалкова, который запечатлел в своем «Предстоянии» образ умирающего воителя Красной державы в оскотиненном, грязном «покажи с…ськи»?! Быть может, ради отечественных или «забугорных» историков, пытающихся сейчас переписать достоверно всем известные факты?!
Да нет, хлопцы! Не «особист» из НКВД заставлял Вас идти вперед! И умирали вы ради иных ценностей! Никто меня в этом никогда не разубедит, какие бы на это ни были брошены силы и средства!
Цитадель – не стены и не оружие на них! Люди – вот цитадель! Вера – вот оружие! Не страх, навеянный заградотрядами! Не примитивные инстинкты, которыми вас сейчас пытаются опорочить и вытоптать в грязи некоторые так называемые деятели культуры от постмодернизма!
И если умирали Вы ради своих потомков, то возьму на себя смелость заявить, что уж точно не ради таких! Есть еще люди, достойные Вас! Пусть плотность их на тысячу населения гораздо меньше, чем при Вашей жизни. Но тем серьезнее и значительнее на них ответственность за преемственность и верность Вашему Великому Подвигу!
Я далеко не святой и не праведный. Но именно Ваш пример делает лучше, чище и правильнее и меня! Сотни, тысячи других людей! И, слава Богу, есть молодежь (чтобы там ни говорили!), которая помнит и своими делами чтит Вашу память! Для меня честь жить и работать рядом с такими, как они! И пошли к черту все те, кто обвинит меня в излишней «пафосности» и эмоциональности таких рассуждений! Я не буду бояться и стесняться своих чувств! Ибо лишь мне да Богу известно, что они искренни и честны.
Нет той державы, которую вы, не жалея сил и крови, освобождали от зловещего, олицетворявшего смерть врага! С развалом Союза преданы отстаиваемые Вами ценности! Инфраструктурная и нравственная деградация захлестнула большинство стран постсоветского пространства. В судоргах цветных революций, в хаотичном безумии «оранжевого» безвластия корчатся Киргизия, Украина.
Деиндустриализация и промышленная деградация, словно раковая опухоль, поразили Россию. В поездах московского метрополитена от смертоносных шахидских поясов гибнут простые люди.
Это же Вы или такие, как Вы, в составе ударных комсомольских бригад с такой радостью и запалом строили его первые станции в довоенные 30-е! Помните? Разве ради этого Вы их строили?!
Нет! Не похоронен последний солдат, а значит – не окончена война! Ваша война, ребята, ставшая нашей! Наплевать на то, что все считают, будто два десятка лет назад мы ее проиграли! Потому что многие из числа таких, как я, верят и знают, что проиграна лишь битва! Потому что именно на моей, белорусской земле стоят мои современники – духовные наследники победоносцев. Наследники-знаменосцы, которые, в отличие от многих других постсоветских руководителей, имеют моральное право так себя называть! Потому что есть принципы и интересы народа, которыми нельзя торговать ни перед сомнениями, которые порождают соблазны, ни перед личиной страха мирового кризиса, ни перед попытками мощного внешнего политического давления.
Да, мы получаем удары извне. Порой это удары под дых. Удары, отдающие в самое сердце. Ибо исходят они от самых близких нам братьев. Но мы ищем способы, перегруппировываем силы, находим новые средства и методы. Мы – хозяева на своей земле! Мы боремся и верим! И уже понимаем истинность смысла древней скандинавской пословицы, утверждающей, что северный ветер сделал викингов. Все трудности при наличии созидательной воли делают нас сильнее и мощнее. Не замечать этого уже нельзя!
И, слава Богу, еще не смолкает барабанная дробь, собирающая передовых представителей молодого поколения под эти знамена. А значит, приходит время «разжимать ладони у мертвых» и «принимать оружье из натруженных рук». Приходит время поднимать знамена, Ваши знамена, парни! Приходит время мобилизовать силы для строительства новой страны – моей Беларуси! Время делать ее примером и ориентиром для остальных.
Ход мыслей внезапно прерывает порыв ветра. Где-то вдали над разлившимся Днепром начали сгущаться и багроветь тяжелые облака. В их угрожающей темной толще сверкнула молния, предвещая сильную грозовую бурю… Весенний шторм, вещающий о грядущей работе и борьбе, о времени созидания и испытаний!..
Ловлю себя на мысли, что от минутной тоскливой грусти на лице не осталось и следа! Надвигающаяся гроза, вид могучего Днепра и грозное величие обелиска вселили здоровую злость и уверенное спокойствие.
Пора идти. До свиданья, братья! Придет время – мы встретимся в другом мире! Но не сейчас! Не сейчас...
Виталий ДЕМЧИХИН,
Белорусская группа
развития
 

Автор: 
Виталий ДЕМЧИХИН
Номер газеты: