Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 6)

Модерирует : gyra, Maz

Maz (26-09-2022 12:52): FAR Manager (часть 7)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Far Manager
 
   

 
Предыдущие топики:  1 2 3 4 5  
 
Где взять последнюю версию?
На странице загрузки скачайте MSI-инсталлятор стабильной сборки нужной вам разрядности (32 или 64 бита) или дистрибутив в виде 7z-архива и установите/распакуйте в любую папку (FAR портабелен и может работать без установки).
Там же на свой страх и риск можно взять наиболее свежую "ночную" сборку (в ночных сборках устраняются выявленные недоработки, добавляются новые функции, но могут содержаться и серьёзные ошибки).
Архив всех предыдущих ночных сборок FAR
Last release на github - собирается практически сразу (в течение получаса) после каждого коммита.
 
Общие сведения о совместимости FAR и плагинов
 
Можно воспользоваться одной из пользовательских сборок FAR Manager
Вопросы, касающиеся сборок, следует задавать непосредственно их авторам, а не на официальном форуме.
 
Где взять дополнительные плагины, скрипты и макросы?
Плагринг. В настоящее время большинство авторов (возможно, уже и все) выкладывают плагины здесь. Кроме плагинов здесь появляется всё относящиеся к FAR: дополнения, консольные шрифты, скрипты и пр.
Анонсы плагинов на официальном форуме. Даже если автор не выкладывает по каким-либо причинам плагин на плагринге, он может дать анонс в этой теме.
Полезные скрипты и макросы.
Шрифт TTF, аналог Terminal 10x18
 
Инструкции по сборке ФАРа из исходников
Набор для самостоятельной сборки ФАРа
Как собрать FAR самостоятельно (старая инструкция)  
 
Ссылки на устаревшие версии
 
Прочее
Портабелизация в FAR 3 плагинов для FAR 1
Выдержка из Far Manager Site and Forum ‹ FAQ :
Отличия FAR 3 от FAR 2
Отличия FAR 2 от FAR 1.7
 
Примечания
 
* 13 декабря 2008 г. произошло переименование веток: ANSI-ветка 1.71 превратилась в 1.75, а Unicode-ветка получила номер версии 2.0 (вместо 1.80). Т.е. версии 1.хх это ANSI ("старый" FAR), а версии 2.хх – Unicode ("новый" FAR). Эти ветки сильно различаются по способу взаимодействия с плагинами и системой!
* При обновлении ANSI-ветки 1.хх более старые версии плагинов могут работать в более новом FAR, но более новые плагины в большинстве случаев требуют обновления FAR (см. документацию).
* Unicode-плагины в ANSI-версии FAR не работают – у них иной способ взаимодействия (API) с Far.exe, поэтому даже не пытайтесь их использовать в FAR версии ниже 1.80.
* При обновлении Unicode-версии FAR 1.80/2.0/3.0 обращайте внимание на номер сборки: следует обязательно обновить все плагины для сборок 677/680/684, иначе они не будут работать. ANSI-плагины (кроме тех, которые работают в редакторе) можно применять в Unicode-версии FAR, в меню плагинов (вызываемом по F11) они будут помечены значком [A] справа от их имени. Unicode-плагины в FAR 1.80/2.x/3.х никаким значком после имени не помечаются.
* Unicode-версия FAR 1.80/2.x/3.х требует как минимум Windows 2000, т.е. она работает только в Windows 2000/XP/2003/Vista/2008/7/8/10.
* Плагины от FAR 2 несовместимы с FAR 3 и не запустятся.
* В FAR 3 выборочно могут работать плагины от FAR 1, однако не стоит брать от FAR 1 плагины для редактора или работающие с дисками: первые портят текст в Юникоде, вторые – файловую систему.
* В любом случае разрядность плагинов должна совпадать с разрядностью FAR, иначе плагин не будет загружен.
* Блондинку на скриншоте зовут Tommie Jo.

 
Принципиальные различия между hard link, symlink и junction
Как устранить взаимное влияние запущенных копий FAR в памяти
Как запустить Lua/MoonScript из FAR
Как правильно добавить в программу нужную DLL (или иную зависимость), чтобы при обновлении ОС или иных программ она не перестала работать
Патч для ansi-плагинов для хранения настроек плагинов в папке профиля, а не в реестре
Как распаковать UUE/XXE файлы патчей и использовать их?
 
ВНИМАНИЕ!
 
Правильное (корректное) завершение Far: всегда завершайте сеанс работы с Far по F10! Подробнее на форуме - Различие выхода из Far по F10 и крестиком
 
Общие правила обращения за помощью
  1. Решаете задачу самостоятельно, при необходимости ищете ответы в теме и других источниках. Предварительное изучение документации обязательно!
  2. Если ваших знаний не хватает, то задаёте вопрос в форуме и строго следуете инструкциям тех людей, которые вам помогают.
  3. Если решить задачу, следуя пунктам 1 и 2, не удалось, то задаёте вопрос разработчикам.

Невыполнение этих правил ведёт к тому, что никто не станет помогать решать вашу задачу.

Всего записей: 38816 | Зарегистр. 26-02-2002 | Отправлено: 17:36 15-01-2020 | Исправлено: Luber, 12:33 31-05-2022
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ariman, Попробовал считать sha-256 файлов с помощью IntChecker2 - медленнее чем sha2.lua в ~6-8 раз - Несовершенство алгоритма? Накладные расходы на зов плага, вывод неуместного диалога прогресса? И хорошо бы в качестве аргумента принимать не только путь на файл, но и сами данные, подлежащие хэшированию.
 
Shmuel, Не отказался бы от наличия быстрой реализации sha-256 в библе win.

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 07:30 07-07-2021 | Исправлено: Alexyz21, 07:34 07-07-2021
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
1. Не считаю, что это нужно встраивать в LuaFAR. Работает как внешняя библиотека, и пусть работает.
2. В который раз напоминаю вам, что обращаетесь не по адресу. Уже скоро год как я прекратил коммитить в репозиторию Far Manager.

Всего записей: 1861 | Зарегистр. 09-03-2012 | Отправлено: 08:01 07-07-2021
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вы и zg - невосполнимая потеря (

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 08:59 07-07-2021
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
Спасибо за высокую оценку. Хочется верить, что у zg всё в порядке.
Это как в анекдоте: в чём разница между англичанином и евреем? Англичанин уходит, не прощаясь, а еврей прощается, но не уходит.

Всего записей: 1861 | Зарегистр. 09-03-2012 | Отправлено: 09:13 07-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Записал баг Последствия b5838 Git-7af0fd7b1c - ошибки удаления и сломанный диалог - закрою по исправлении, а то тут опять стюардессу закапают.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 12:52 07-07-2021
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Это чистый фар, без конему?
 
Какой Visual Studio последний, или рекомендуемый из полностью совместимых с winXP?

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 13:34 07-07-2021 | Исправлено: Alexyz21, 13:36 07-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Это чистый фар, без конему?

Да, проверка специально проводится исключительно в среде консоли ОС

Цитата:
Какой Visual Studio последний, или рекомендуемый из полностью совместимых с winXP

Любой, вплоть до VisuaStudio 2017, там использовать vc150_xp toolkit. Для максимальной совместимости с новыми стандартами С++ вплоть до С++17 потребуется либо она, либо GCC/MinGW 11.x, ну этот и более новые стандарты поймёт.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 16:29 07-07-2021 | Исправлено: Victor_VG, 20:05 07-07-2021
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG, спасибо

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 19:44 07-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Если что, то рабочий GCC 10.2 могу у себя сархивировать, но развернётся примерно на 3 ГБ, зато не глючит как иные сборки GCC.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 20:10 07-07-2021
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если что, то рабочий GCC 10.2 могу у себя сархивировать

Пока не нужно, спасибо.

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 08:01 08-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Понял.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 12:29 08-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На данный момент откатил сеть на b5837 Git-f3deffb21 - достали глюки b5838+.  
 
Их можно отлавливать, но на отдельном стенде, а глюк с удалением через макрос группы выделенных файлов при наличии хоть одного залоченного становится сильно весёлым когда нажатие Пропустить (Пропустить все)  рассматривается Far.exe как "Удалить только APanel.Current, все остальные пропустить не меняя выделения" и повторяй операцию до бесконечности...
 
Добавлено:
В общем немного повозившись выделил Глюк с удалением через макрос группы выделенных файлов при наличии хоть одного залоченного - последствия b5838 Git-7af0fd7b1c - Issues #16 демонстратор:

Код:
Macro{
  area="Shell";
  key="AltT";
  description="https://github.com/VictorVG/latest/issues/16 DEMO";
  priority=61;
  condition=function() return (not APanel.Empty) end;
  action=function()
  local Q = "\nQuestion: do you like to delete all (%d units) files?";
  Panel.Select(0,1,3,"/.+\\.(log|tmp|temp)$/i")
  if APanel.Selected and msgbox("DEMO",Q:format(APanel.SelCount),0x20000)==1 then Keys("ShiftDel Enter") end
  Panel.Select(0,0,3,"/.+\\.(log|tmp|temp)$/i")
 end;
}

Проверял в консоли CMD при наличии только Far.exe + LuaMacro + test.lua содержащий указанный макрос и при запуске Win-R -> <FarExePath>\Far.exe из-под оболочки ОС на b5838+. В b5837 Git-f3deffb21 и ниже будут удалены все попавшие под маску файлы за исключением залоченных ОС или другими приложениями.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 15:01 08-07-2021 | Исправлено: Victor_VG, 15:07 08-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, тут разобрался - похоже, что фар снимает выделение после удаления первого файла, потому и остальные не удаляются. Достаточно убрать в демо строку  

Код:
Panel.Select(0,0,3,"/.+\\.(log|tmp|temp)$/i")  

чтобы в b5839 Git-a669ce696 - b5844 Git-afecc83c6 удалялись все файлы, но что интересно, глюк с "прятаньем" части диалога ошибки из-за блокировки файлов под активную панель похоже порождается вызовом строки

Код:
Panel.Select(0,0,3,"/.+\\.(log|tmp|temp)$/i")  

когда её нет он не проявляется.
 
Добавлено:
Для проявления эффекта "сломанного диалога" достаточно выполнить из командной строки Far b5838 и новее при наличия в каталоге хотя бы одного подпадающего под маску залоченного файла демо-скрипт test.lua:

Код:
local Msk="/.+\\.(log|tmp|temp)$/i";
local Q , T = "\nDo you like delete all (%d units) files?" , "Delete unused files";
Panel.Select(0,1,3,Msk)
if APanel.Selected and msgbox(T,Q:format(APanel.SelCount),0x20000)==1 then Keys("ShiftDel Enter") end
Panel.Select(0,0)

lua:@test.lua .
 
Т.о. причиной возникновения эффекта является наличие в каталоге блокированных по записи объектов и вызов Panel.Select() после запуска удаления. Видимо происходит наложение операций во времени что и приводит к проявлению эффекта.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 17:32 08-07-2021 | Исправлено: Victor_VG, 17:47 08-07-2021
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
5844, повторить на половину спрятанный диалог не удаётся. Запускал в %temp%, в нём есть залоченные и не 1 файлы с масками *.tmp, *log. Файлы по маске выделяются, выводится нормальный диалог на переднем плане, от исполнения отказываюсь )
 
Попробуйте заменить MessageBox() на far.Message(Q:format(APanel.SelCount),T,"&Ok;&Cancel") - повторяется?

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 22:58 08-07-2021 | Исправлено: Alexyz21, 23:23 08-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Да, и всё упирается в Panel.Select(0,0):
 

 
Ладно, с выделением в мусорке пока смирюсь ибо так Shell_DelBak.lua:

Код:
local Msk1="/.+\\.(bak\\d*)$/i";
local Msk2="/.+\\.(log|tmp|temp|(~\\w?|\\s?)tmp(~|\\s?)\\w?log|dir|xml|c|h|(c|h)pp|txt|(h|i)\\.(\\w?|\\s?|(c|h)pp|c|h|rc))$/i";
local Q = "\nDo you like delete all (%d units) files?";
local T = "Delete unused files";
 
Macro{
  id="3CCFF979-B268-4983-A00E-C3003086807A";
  area="Shell";
  key="AltB";
  description="Delete backup files";
  priority=60;
  condition=function() return not APanel.Empty end;
  action=function()
  Panel.Select(0,1,3,Msk1)
  if APanel.Selected and msgbox(T,Q:format(APanel.SelCount),0x20000)==1 then Keys("ShiftDel Enter") end
  Keys("ShiftDel Enter")
 end;
}
 
Macro{
  id="E446E62C-1BC3-4CDF-8E54-1A5C1FF32663";
  area="Shell";
  key="AltT";
  description="Delete temporary files";
  priority=60;
  condition=function() return not APanel.Empty end;
  action=function()
  Panel.Select(0,1,3,Msk2)
  if APanel.Selected and msgbox(T,Q:format(APanel.SelCount),0x20000)==1 then Keys("ShiftDel Enter") end
 end;
}

на b5838+ работает, в то время как одноимённый макрос SimSU после b5837 сломался и пришлось ему придумывать простую, но надёжную замену...

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 01:39 09-07-2021
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для решения данной задачи я бы вообще не использовал архаичное макро апи - только луа. Такие "солянки" в коде и медленны, и менее надёжны (имхо).
 
ShiftDel можно реализовть с помощью модуля lib.lua (спасибо w17 за идею) - Подробнее...
 
Зовём, например, так:

Код:
local lib = require'lib'
--lib.SHFileOp("FO_COPY",[[Z:\Temp\1]],[[Z:\Temp\2]],{"FOF_SILENT","FOF_NOCONFIRMATION","FOF_RENAMEONCOLLISION","FOF_NOERRORUI"})
lib.SHFileOp("FO_DELETE",[[Z:\Temp\1]],nil,{"FOF_SILENT","FOF_NOCONFIRMATION"})

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 07:41 09-07-2021 | Исправлено: Alexyz21, 12:41 09-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Согласен. Пробовал поиграть с win.DeleteFile() - выходит громоздко, да и замучаешься подтверждать коли что, а интерес в том, что  стоило бы заранее знать залочен объект или нет? Если залочен - сразу пропускаем, остальные под топор. И ShiftDel я выбрал именно потому, что фар не спрашивая кучу подтверждений удалит все указанные ему файлы и каталоги.  
 
Про lib.lua не знал, спасибо, воспользуюсь им.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 13:35 09-07-2021
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тоже о его существовании не знал до сегодняшнего утра, пока не написал ) Подумалось, что была бы полезна библиотека с востребованными функциями, требующих быстродействия, либо просто используемых в разных скриптах.

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 14:34 09-07-2021 | Исправлено: Alexyz21, 14:50 09-07-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Ну, лови в коллекцию FuncLib.lua
демка к ней проста:

Код:
-- DEMO for FuncLib.lua module
-- v1.1, Refactoring
-- VictorVG, 24.08.2019 11:28:59 +0300
 
local FuncLib=require("FuncLib")
far.Message(PlugVer("9D4A59D9-AD2D-478C-8F66-7D233CBB788D",1,1),"Image Viewer version:")
far.Message(PlugVer("E186306E-3B0D-48C1-9668-ED7CF64C0E65",1),"Integrity Checker version:")
far.Message(PlugVer("4EBBEFC8-2084-4B7F-94C0-692CE136894D",1),"Macro Browser version:")
far.Message(PlugVer(win.GetEnv("FARHOME").."\\plugins\\emenu\\EMenu.dll",2),"EMenu version:")


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33208 | Зарегистр. 31-07-2002 | Отправлено: 15:15 09-07-2021
Ajaja

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите со скриптом, растягавающим диалог Apply Command (Ctrl-G) на всю ширину окна Far-а.
Хотелось бы совсем простенький скрипт, не такой навороченый, как https://forum.farmanager.com/viewtopic.php?t=11924 , который у меня пока даже заставить работать не получилось. Да и испрльзовать его - это как из пушки по воробьям.
 
 

Всего записей: 1032 | Зарегистр. 17-06-2004 | Отправлено: 13:03 10-07-2021
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 6)
Maz (26-09-2022 12:52): FAR Manager (часть 7)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru