- 1
IT Оффтоп #75
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
IT Оффтоп #75
#46: (vanished) https://govnokod.xyz/_26654
#47: https://govnokod.ru/26671 https://govnokod.xyz/_26671
#48: https://govnokod.ru/26707 https://govnokod.xyz/_26707
#49: https://govnokod.ru/26750 https://govnokod.xyz/_26750
#49: https://govnokod.ru/26776 https://govnokod.xyz/_26776
#50: https://govnokod.ru/26804 https://govnokod.xyz/_26804
#51: https://govnokod.ru/26809 https://govnokod.xyz/_26809
#52: https://govnokod.ru/26817 https://govnokod.xyz/_26817
#53: https://govnokod.ru/26833 https://govnokod.xyz/_26833
#54: https://govnokod.ru/26840 https://govnokod.xyz/_26840
#55: https://govnokod.ru/26844 https://govnokod.xyz/_26844
#56: https://govnokod.ru/26862 https://govnokod.xyz/_26862
#57: https://govnokod.ru/26890 https://govnokod.xyz/_26890
#58: https://govnokod.ru/26916 https://govnokod.xyz/_26916
#59: https://govnokod.ru/26934 https://govnokod.xyz/_26934
#60: https://govnokod.ru/26949 https://govnokod.xyz/_26949
#61: https://govnokod.ru/26980 https://govnokod.xyz/_26980
#62: https://govnokod.ru/26999 https://govnokod.xyz/_26999
#63: https://govnokod.ru/27004 https://govnokod.xyz/_27004
#64: https://govnokod.ru/27020 https://govnokod.xyz/_27020
#65: https://govnokod.ru/27027 https://govnokod.xyz/_27027
#66: https://govnokod.ru/27040 https://govnokod.xyz/_27040
#67: https://govnokod.ru/27049 https://govnokod.xyz/_27049
#68: https://govnokod.ru/27061 https://govnokod.xyz/_27061
#69: https://govnokod.ru/27071 https://govnokod.xyz/_27071
#70: https://govnokod.ru/27097 https://govnokod.xyz/_27097
#71: https://govnokod.ru/27115 https://govnokod.xyz/_27115
#72: https://govnokod.ru/27120 https://govnokod.xyz/_27120
#73: https://govnokod.ru/27136 https://govnokod.xyz/_27136
#74: https://govnokod.ru/27160 https://govnokod.xyz/_27160
nepeKamHblu_nemyx # 0
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: https://index.gcode.space/.
Зеркала Говнокода и полезные ресурсы:
* https://govnokod.xyz/ (альтернативный Говнокод)
* https://gcode.space/ (read-only зеркало Говнокода)
* https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
* https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
* https://vorec.space/ (глоссарий Говнокода)
* https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)
gost # 0 ⇈
KAPA6AXCKuu_nemyx # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
Rooster # 0 ⇈
gost # 0 ⇈
Rooster # 0 ⇈
gost # 0 ⇈
defecatinho # 0 ⇈
CBuHOKYP # 0 ⇈
Для того, чтобы петушок хрукнул,нужно было сперва перекастовать его в поросёнка
guest # 0 ⇈
KAPA6AXCKuu_nemyx # 0 ⇈
MAKAKA # 0
Попробуйте мне поймать эксепшен, и вывести строку, на которой он был кинут по трейсу вместе со стектом
Rooster # 0 ⇈
gost # 0 ⇈
А что, собственно говоря, неюзабельное? Нейминг, конечно, наркоманский, да и документация печалит, но совсем уж упоротых подходов я тут не вижу.
MAKAKA # 0 ⇈
А, стоп. Ввыведи мне весь трейс-то, чтобы там были main() -> f -> g -> Exception
gost # 0 ⇈
Фрейм в нём будет указывать на строку, в которой ты к нему обращаешься. Но, повторюсь, что здесь не так? Что стек в другую сторону растёт?
> Ввыведи мне весь трейс-то
Ну print в цикл перемести. Это обычный обход односвязного списка, это не питонья магия.
guest # 0 ⇈
зачем он будет показывать туда у пойманного исключения? Ислючение должно иметь трейс того места, откуда его кинули, нет?
gost # 0 ⇈
guest # 0 ⇈
gost # 0 ⇈
Что тут неясного?
MAKAKA # 0 ⇈
Я заманкипатчил системную функцию, чтобы поймать ее исключение, и что-то с ним сделать.
Вопрос: как мне кинуть исключение так, чтобы там в стеке меня не было?
вероятно, можно дактайпнуть traceback, попррбую.
Как вообще собрать вручную эксепшен с нужным трейсом? трейсбек вручную не сделать, а при кидании исключения туда всегда насирается текущая строка
bormand # 0 ⇈
А нефиг наёбывать систему. Юзай chaining, выведутся оба трейса -- твой и оригинальный.
guest # 0 ⇈
охуительная логика.
"всё ненужно, что сломлось
всё ненужно, чего нет"
bormand # 0 ⇈
Но правильное решение здесь -- дать какой-то способ для пометки кастомных ассёртилок. Тогда сам фреймворк сможет их скрывать для удобства, как он сейчас это делает с кишками штатных ассёртов. И обязательно нужен режим, в котором можно посмотреть полный нефильтрованный трейс.
А редактирование бектрейса не просто не нужно... оно опасно, вредно и вообще по-пидорски.
bormand # 0 ⇈
Хуёво: необратимо испортить бектрейс и дать юзеру возможность поебаться с отладчиком.
Теперь моя логика понятна, я надеюсь?
jojaxon # 0 ⇈
CHayT # 0 ⇈
Я компилирую в emacs буффер, делаю на нём `M-x occur' и теку.
bormand # 0 ⇈
guest # 0 ⇈
https://govnokod.xyz/_27166/#comment-588552
gost # 0 ⇈
Сам себе злобный Буратино, дальнейшие претензии к «Питону» полностью бессмысленны.
> Вопрос: как мне кинуть исключение так, чтобы там в стеке меня не было?
Зачем ты хочешь наебать читающего твои логи? Это очень хуёвая практика, плохой Макака!
> Как вообще собрать вручную эксепшен с нужным трейсом?
Это уже вообще какая-то наркомания. Приведи реальный пример задачи, которая требует исключения с вручную собранным трейсом.
К слову, если f() из моего примера заменить на:
То итоговый трейс будет полностью правильным:
Правда, я душе не ебу, зачем нужно это делать вручную, когда есть вменяемый logging.exception() или, на худой конец, стандартный мудуль traceback с нормальными, высокоуровневыми абсракциями вроде print_traceback().
gost # 0 ⇈
Выведет строки с вызовами f() -> g() -> raise.
guest # 0 ⇈
вызывающая сторона может и не знать про мое существоание, и тогда для нее это будет обычное исключение, а может и знать.
Сделать это в питоне невозможно, потому что если я не сделаю raise без параметров (А кину что-то свое) то стек будет неверным
А собрать исключение вручную с верным стектом я тоже не могу
gost # 0 ⇈
Ты же понимаешь, что манкипатчинг функций из стандартной библиотеки — это пиздецки адовый костыль, и что делать так — очень хуёво само по себе?
> Сделать это в питоне невозможно
RTFM.
guest # 0 ⇈
лол, ну ты же сам выделил зелененьким 13-ю и 10-ю строки, а нужно, чтобы выброшенное из "g" исключение только его трейс и содержало.
> это пиздецки адовый костыль
да, но у меня нет выбора.
на самом деле я решил уже проблему тем, что поклал нужную инфу в thread local storage, и сделал raise без параметров, убрав таким образом следы своего пребывания, но сам факт того, что я не могу сделать это в динамической скриптушне без костыля это же пиздец
gost # 0 ⇈
Ещё раз: это наёб того, кто будет читать трейс. Именно ты хочешь сделать пиздец, выдав ловящему исключение некорректный стектрейс.
bormand # 0 ⇈
guest # 0 ⇈
Запусти вот такое говно с помощью pytest.
Ты увидишь красивое сообщение об ошибке.
Теперь раскоментируй строчку с манкипачтем.
Казалось бы: я делаю with_traceback, и разницы быть не должно. но она есть.
>некорректный
ну как и было написано выше "всё не нужно, что сломалось"
gost # 0 ⇈
Фиксим:
Получаем хорошее, годное сообщение об ошибке:
Всё замечательно работает.
MAKAKA # 0 ⇈
> real_fun(*args, **kwargs)
да где оно годное то?
в стеке все равно ненужное говно же
bormand # 0 ⇈
Кого ты наебать пытаешься то, заметая свои следы?
MAKAKA # 0 ⇈
During handling of the above exception, another exception occurred написано
пиздец) я вам говорю: "вот нерешаемая задача в питоне", а вы меня спрашиваете, кого я хочу наебать))
bormand # 0 ⇈
Я не вижу смысла в обмане самого себя и своих коллег. Сейчас у тебя честный трейс, в котором видно, что assertEquals заменён на какую-то хуйню. Коллеги тебе за это спасибо скажут, если в твоей заплатке какой-то косяк.
> и все равно получил бы
> During handling of the above exception, another exception occurred же
Ты хочешь сказать, что это не так? Что ты не кидал исключение во время обработки другого? )))
guest # 0 ⇈
Рассуждать о смысле, имхо, вообще странно. Программисты на го не видят смысла в обобщенном программировании. Это же все субъективно
>Ты хочешь сказать, что это не так?
я хочу сказать, что клиенту про это знать не нужно
вон, пайтест сломался от этого, и высрал тонну говна
bormand # 0 ⇈
Где он сломался то? Сообщение о фейле теста есть, в статистику фейл засчитался. Формат сообщения не изменился. Ну трейс чуть длиннее стал.
У тебя какая-нибудь гуйня что ли не может это показать?
guest # 0 ⇈
сравни аутпут с патчинком и без: там просто три страницы говнища
вот тебе дифф.
https://pastebin.com/tapbVcFd
bormand # 0 ⇈
Дык... Этот левый код реально исполнялся во время теста. И в нём потенциально может быть баг. Почему его не должно быть в трейсе? Сам же потом спасибо скажешь, что трейс честный и полный.
guest # 0 ⇈
bormand # 0 ⇈
Нет. Добавить его к текущему, насколько я помню.
guest # 0 ⇈
This method sets tb as the new traceback for the exception and returns the exception object. It is usually used in exception handling code like this:
как бы ты перевел?
bormand # 0 ⇈
Оно таки sets (т.е. вписывает в соотв. поле исключения этот бектрейс, можешь проверить), но потом raise туда ещё текущий трейс дописывает.
CHayT # 0 ⇈
Много логов > мало логов. Для разработчиков тулов, которые редактируют сообщения об ошибках и проглатывают логи, есть отдельная сковородка в аду.
3.14159265 # 0 ⇈
Обычно это разрабы по каким-то причинам не осилившие grep.
Хотя впадать в другую крайность: логгировать каждый чих и получать сотни гигабайт логов тоже не кошерно.
Так же бывают ситуации предусмотренных логикой кода исключений, для которых трейсы можно не логгировать. Например мы хотим отдать посредством исключения какой-то http-код.
gost # 0 ⇈
Да, а потом в этом куске левого кода ты допускаешь мелкую ошибку, которая через год начинает выкидывать GovnoError… И какой-то несчастный программист будет неделю ебаться, пытаясь понять, почему TestCase.assertEqual() бросает непредусмотренное документацией говно при совершенно корректном тесте.
За такое надо шею жать.
gost # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
* сделать исключение с кастомным трейсом нельзя: в нем все равно будут твои следы
* но вы считаете, что это и не надо
так?
bormand # 0 ⇈
Любители "исправленных" трейсов потом в аду битые сишные дампы читают.
guest # 0 ⇈
понятно, в общем.
Я такое регулярно слышу.
--В вашем языке нельзя $FOO
--Нельзя. И слава богу.
1024-- # 0 ⇈
Единственное, когда подобное может пригодиться - это когда ты делаешь ВМ, и там надо печатать исключения в терминах ВМ. Но там достаточно просто использовать MyException, которое не будет исключением с точки зрения языка реализации, его нельзя будет бросить в исходниках, это объект на уровне абстракции ВМ.
Программисты (особенно - после времён, когда не было структурного программирования, и программа сразу записывалась целиком, и можно было грепнуть и понять) придумали 1000 и 1 способ испоганить понимание кода -
1. Складирование значений в переменных.
2. Использование функций.
3. Рекурсия.
4. Динамический полиморфизм.
Единственная возможность понять, что происходит - посмотреть, что произошло в отладчике и посмотреть стектрейс. Потому, что по коду (особенно - с динамическим полипитухом) нельзя понять, что делает программа.
И ваша секта хочет убить эту возможность разобраться, что произошло, когда программа сломалась.
gost # 0 ⇈
Вывод pytest:
Когда коллеги тебя будут убивать за это — на ГК помощи не проси.
gost # 0 ⇈
Просто конфетка! Идеальное преступление. Коллеги в обе щёки расцелуют.
bormand # 0 ⇈
gost # 0 ⇈
gost # 0 ⇈
bormand # 0 ⇈
Я вот не вижу 3 страницы говна с кусками функций, которые на пастбине макаки. Просто FAIL и компактный бектрейс.
А в исходниках нашёл. Оно тупо скипает фреймы в начале (код, который запускает тест) и в конце трейса (кишки ассёртов), если они относятся к самому модулю unittest.
Причём делает это... по наличию глобалки __unittest. И если макакопатчить в модуле с глобалкой __unittest, то он волшебным образом пропадает из трейса.
Какой бектрейс )))
gost # 0 ⇈
bormand # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
Еще эти ебаные двойные подчеркивания.
gost # 0 ⇈
Особенно хорошо это работает, когда grebeshok имеет тип bool.
В этом году, кстати, на ГК обсирали одного жаваскриптуха, который писал кэширование чистых функций, и наличие аргумента в кэше проверял как «if (cache[arg])». Надо ли говорить, как прекрасно эта хуйня работала с функциями, возвращающими false, null, undefined, 0 или ''?
guest # 0 ⇈
guest # 0 ⇈
gost # 0 ⇈
>>> 5 интересных JavaScript-находок, сделанных в исходном коде Vue
>>>
1024-- # 0 ⇈
> в исходном коде Vue
Ну это же внутренняя питушня для конкретных случаев? Покрытие всех случаев сделало бы нечитаемый код и превратило бы Vue в анскильную тормозящую питушню. Есть же баланс между абстрактной теоретической всеприменимостью и здравым смыслом!
А если наружная питушня, то он, вероятно, написал в документации, как её использовать.
> false, null, undefined, 0 или ''
Как прекрасно эта хуйня работала с x={pitux: f=>x} (контейнер, содержащий в себе функцию, которая содержит этот контейнер в своём замыкании).
> возвращающими false, null, undefined, 0 или ''
Принимающими false, null, undefined, 0 или ''.
P.S. Нет, это не я писал эту функцию. Но это питушня для пирфоманса, не надо к ней строго относиться. Если сериализация аргумента делается дольше вызова функции, мемоизация становится не нужна.
bormand # 0 ⇈
Да, if (str in cache) читается намного хуже, чем if (!cache[str]).
> превратило бы в анскилльную тормозящую питушню
Ну тут согласен, я не знаю как в js сделать проверку на существование ключа без оверхеда... Итераторы то не завезли.
Но блин, в оригинальном коде то тоже джва обращения!
З.Ы. Лол, пишут что in на порядки медленнее обращения со скобочками... Какой багор )))
1024-- # 0 ⇈
Одна надежда на жит.
> З.Ы. Лол, пишут что in на порядки медленнее обращения со скобочками... Какой багор )))
Как? Как, Карл? Если размышлять логически, алгоритм внутри in должен быть частью исходного кода алгоритма []. Или это так дорого конструировать true/false? Какой анскилл.
Хотя, дяденька ПИ скажет, что это всё питушня и измерение производительности конкретного интерпретатора, в другой версии баланс сил сместится.
bormand # 0 ⇈
gost # 0 ⇈
Прикладываю исходники для повторимости, пидоры не хотят без регистрации сохранять:
1024-- # 0 ⇈
Звучит логично.
> из-за распределения совпадений/несовпадений
Есть мысль, что там как-то могут влиять ещё протопитухи.
Кстати, пришла мысль: а что, если дело в крестухах/питоняшах, которые проверяли перед тем, как войти?
Скажем, был тупой жид, который плохо соптимизировал первое, а на втором/третьем понял, что одно и то же написано?
Или скажем сравнивали эти два варианта вообще?
gost # 0 ⇈
Да хуй знает, вполне мог. Я специально длительные циклы сделал, там по идее жид должен был сработать на первых сотнях итераций.
Кстати, лучше бы нахрюкнул про отсутствие в «Питоне» ЖИДа, это действительно печально. Йажасцриптовый ЖИД работает очень и очень круто (хотя отсутствие хвостовых оптимизаций — это таки анскилл).
1024-- # 0 ⇈
Так я абстрактушок, пирфоманс-хеви питушнёй особо не занимаюсь, для моих задач интерпретатор питона не тормозил (максимум тормозил только сам код за счёт простого алгоритма с неудачной асимптотикой).
gost # 0 ⇈
3.14159265 # 0 ⇈
Это как раньше паттерн str.split('').reverse().join('') жутко тупил.
Но жс-макаки упорно продолжали писать.
В какой-то момент оказалось что проще допилить JITы, под этот конкретный идиоматчиный кейс.
В итоге оно стало работать быстро. В некоторых браузерах даже быстрее скучного for.
Но я за эстетику. Код с in очень красиво выглядит.
gost # 0 ⇈
А как там с hasOwnProperty() обстоит вопрос?
3.14159265 # 0 ⇈
По-моему из-за багров с обходов прототипов. Хотя странно.
Но тут-то как раз прототипного наследования нет!
> const cache = Object.create(null);
in только с nullовым прототипом и хорош.
1024-- # 0 ⇈
Чтобы дать результат in, нужно обойти прототипы.
1024-- # 0 ⇈
Вроде скриптушня, а пердолиться надо как с крестами.
gost # 0 ⇈
Потому что это ненужная и опасная хуйня, сто раз уже обсуждали.
> в ассоциативных массивах надо писать кавычки как в ЖСОНе
Потому что это тоже ненужная (хоть и не столь опасная) хуйня, в ЖСе работающая до крайности хуёво:
Впрочем, если уж так хочется — в «Питоне» тоже можно не писать кавычки:
И, заметь, никаких неоднозначностей или неявных преобразований. Заебись!
> нет значений по умолчанию
И слава Гвидо! Если мне нужны какие-то умолчания — я сам об этом напишу, а в общем случае отсутствие затребованного ключа — это ошибка в программе. Эйх же был не очень умным, и вменяемую обработку ошибок (хотя бы в виде исключений) запилить не осилил, а теперь толпы жаваскриптухов жрут undefined говно и просят добавки. Отвратительно.
> питушни с ".?"
Вот единственный нахрюк по делу! Тут поддержу: «.?» — хорошее, годное и, главное, явное решение, его отсутствие печалит.
Доброе утро, Uncaught SyntaxError: Invalid left-hand side expression in postfix operation.
MAKAKA # 0 ⇈
>Потому что это ненужная и опасная хуйня, сто раз уже обсуждали.
Что опасного?
Зачем скриптушку писать foo['bar'] вместо foo.bar?
в Groovy, JS и LUA такой хуйни нет
>Потому что это тоже ненужная
зачем писать лишние кавчки? в перле вот не пишут для ключей (А так же в JS и lua), и ничего
>И слава Гвидо!
тебе нравится ловить исключение про отсутствие ключа или писать монструозный getattr?
bormand # 0 ⇈
Мне нравится, что по-умолчанию поля и скобочки не смешиваются. А если мне реально хочется скрестить структуру и дикт -- для этого есть namedtuple.
В js же я не могу явно выразить свои намерения, там всё выглядит одинаково.
MAKAKA # 0 ⇈
Мне нравится, что массивы и листы не смешиваются, как в Java.
В питоне же я не могу явно выразить свои намерения, там всё выглядит одинаково.
bormand # 0 ⇈
Но от скриптушни мне тоже хочется какой-то минимальной выразительности, а не typeof(x) == 'undefined'.
Desktop # 0 ⇈
любая скриптушня это сорта говна
MAKAKA # 0 ⇈
но если уж мы берем скриптушню чтобы легко и быстро накидать скриптец на 10 строк, то нафиг нам завозить туда сложности статически типизированных языков?
Desktop # 0 ⇈
что современные статтипизированные компилируемые языки по выразительности ничуть не уступают скриптушне на 90-х
граница стёрлась
https://rderik.com/blog/using-swift-for-scripting/#hello-world
gost # 0 ⇈
В «Питоне» я могу полностью безопасно сделать «obj = json.loads(user_input)» и потечь. В «ЙажаСцрипте», написав что-то подобное, я получу дырень, в лучшем случае просто поломающую дальнейший код, в худшем — какой-нибудь XSS.
> зачем писать лишние кавчки?
Затем, чтобы была консистентность и понятность. Когда я в «Питоне» вижу {x: y} — я сразу понимаю, что в качестве ключа я получаю значение x по тем же самым правилам, что и в любом другом месте языка: если это переменная — ключом будет значение переменной, если число — ключом будет число, если строка — ключом будет строка, и так далее. В сраном ЖСе я получаю хуй знает что, сделанное по хуй знает каким запутанным правилам (одно только преобразования ключей в строки чего стоит… пиздец полнейший). И это хуёво.
Про монструозный obj.get('key') bormand уже ответил.
MAKAKA # 0 ⇈
В питоне целый модуль напилил ради json , а в JS оно из коробки.
В Java6 у меня куда больше консистенности и понятности, чем в питоне со всеми его getattr и getattribute, но мы же не говорим, что шестая джава лучше питона?
В 90% случаев мне удобнее написать foo.bar.buz (как я пишу например в щаблонах джанго) и не думать про какие-то кавычки
В JS правда много г-на с преобразованием, давайте сравним лучше с груви или lua
gost # 0 ⇈
Так вот в случае x['key'] == x.key он полностью проёбан. Поясню: в языках, поддерживающих такую хуйню по-умолчанию, нельзя класть в ассоциативные массивы ключи, пришедшие от пользователя. Это полнейший пиздец, на уровне «mysql_query("SELECT ... id = " + $_GET["id"])». Не понимаю, почему макаки от такого текут.
> В 90% случаев мне удобнее написать foo.bar.buz
Так сделай датакласс и потеки! Это ёбанных две строчки оверхеда.
Хранение данных в ассоциативных массивах без схемы — признак пиздеца в архитектуре. Ну или джаваскриптера.
1024-- # 0 ⇈
Иметь for x in range(10): или даже for x in 0..10: лучше, чем каждый раз писать двустрочные костыли в ES5.
Это же скриптушня, хочется выразительности в мелочах.
bormand # 0 ⇈
Эм, лолшто. Он же изкоробки, как и в жс. Просто в жс модулей и неймспейсов не было, поэтому всё валили в глобальный скоп, лол.
> а в JS оно изкоробки
Ты про то, что json -- это валидный js? Ну да, странно было бы не иметь JavaScript Object Notation изкоробки в JavaScript.
bootcamp_dropout # 0 ⇈
1024-- # 0 ⇈
bootcamp_dropout # 0 ⇈
1024-- # 0 ⇈
Погодите, если делать JSON.parse, а не eval, то всё должно быть в порядке. В JSON нельзя пихать функции и самоссылки. Как ещё через JSON.parse можно что-то сломать?
А, ну разве что user_input = "{hasOwnProperty: 1}", и тогда user_input.hasOwnProperty('aaa') выбросит исключение, т.к. единицу нельзя вызвать, она не ответит. Но функцию свою подставить уже не получится, только число, строку, массив, объект или null.
Если есть схема уязвимости - сообщите, пожалуйста. Я только про eval слышал пока.
gost # 0 ⇈
За исключением того, что в дальнейшем весь код, использующий объект, может попросту сломаться. А чтобы не ломался — надо писать «Object.prototype.method(obj, args)» или как там правильно. Очень удобно!
Более сложные уязвимости, конечно, требуют более специфических вещей — ну там обхода проверки типов через obj.toString() и так далее.
1024-- # 0 ⇈
Питно-сектанты!
Ладно ещё когда идёт речь об объектах - питухах, которые имеют заранее описанный интерфейс. Тогда может быть ненайденное поле или ненайденный метод - это баг.
Но если речь идёт о ключе ассоциативного массива, то почему? Я ищу питушню. Если нет - скажите мне об этом.
Хаскелешня возвращает Maybe, с которым ты пердолишься сам. Кресты позволяют как найти итератор, чтоб два раза не лукавпить, так и использовать скобочки, с которыми несуществующий ключ создаётся. Подход STL со скобочками - почти что скриптушковый, и никто не умер от него, и типизация не очень сильно сдулась.
gost # 0 ⇈
А «Йажасцрипт» тебе не говорит, что питушня не найдена, «Йажасцрипт» тебе просто возвращает какую-то хуйню. Была ли эта хуйня в объекте изначально, или «Йажасцрипт» эту хуйню выдумал — тебе неведомо. Это хуёвый подход.
> Кресты
Да-да, это одно из самых хуёвых и неудобных решений в интерфейсе местной std::map.
guest # 0 ⇈
bormand # 0 ⇈
m.at(key)
1024-- # 0 ⇈
Хотя, наверно это от отсутствия ГЦ.
Там можно было бы создать новый экземпляр значения с конструктором по умолчанию и просто его вернуть.
Но тогда надо либо возвращать копию имеющегося значения, либо делать хитрые хаки.
gost # 0 ⇈
Чтобы не быть голословным, правильный поиск Пети выглядит вот так:
Охуенно, блядь, удобно.
guest # 0 ⇈
bormand # 0 ⇈
Это я тебе набросил. Но at исключение кидает, как питоньи скобки. А вот аналога питоньего get нету к сожалению, только с итераторами пердолиться. Запилить то его несложно, просто изкоробки хотелось бы.
guest # 0 ⇈
?
Desktop # 0 ⇈
а он в крестах есть у любого типа что ли?
ну и семантически это подстава конечно
1024-- # 0 ⇈
gost # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Тут только новый метод делать, в духе std::optional<V> get(K k) const.
guest # 0 ⇈
gost # 0 ⇈
1024-- # 0 ⇈
Но автодобавление тоже нужно, и в том же жс его мне после крестона (setdefault и operator []) не хватает.
bormand # 0 ⇈
Им каскадить удобно: a[5][42] = 100500 или m[key]++. В пёрле вроде так же работает, но более правильно -- не вставляет если просто почитать решили.
guest # 0 ⇈
bormand # 0 ⇈
Тогда можно так сделать: V get(K k, V v = V()).
Но опшенал лучше если у типа нет специальных значений, которые прокатят за "не найдено". Именно поэтому я за опшенал.
gost # 0 ⇈
(За правильность расстановки многоточий без IDE не ручаюсь)
1024-- # 0 ⇈
bormand # 0 ⇈
1024-- # 0 ⇈
который бы компилился для всех, если последний аргумент подставлен, но не компилился бы для тех, у кого нет дефолтного, если не подставлен.
Если кресты так не умеют, то стоит их научить так делать, ведь все эти карты хорошо складываются на этапе компиляции.
bormand # 0 ⇈
Но в общем-то можно поддержать и std::optional<V> get(K k) и V get_or_default(K k, V default_ = V()) одновременно. Я не против.
Desktop # 0 ⇈
gost # 0 ⇈
std::optional<std::ref<V>> тогда уж. Ну или V *const.
1024-- # 0 ⇈
Я бы сделал в таком диалекте файловый NULL - какой-нибудь файл, который не смог открыться, бездну вроде виртуального /dev/null и т.п.
bormand # 0 ⇈
Ну не... Так делают, конечно. И довольно часто. Но из-за этого у тебя пропадёт замечательная компайл-тайм гарантия "если объект существует, то его можно юзать".
1024-- # 0 ⇈
bormand # 0 ⇈
Это уже скриптушня головного мозга какая-то...
Тут наоборот же идея в том, чтобы кривой код вообще не компилировался. Если ты не смог или забыл открыть файл -- ты не сможешь скомпилировать запись или чтение в него. Если функция вернула тебе файл -- значит он был открыт и им можно пользоваться (логически, с точностью до ошибок ос и железа, конечно).
А ты предлагаешь реальные баги под ковёр заметать, как в пхп каком-нибудь.
gost # 0 ⇈
От такого лучше отказаться в пользу perfect forwarding'а, как я чуть выше привёл пример. Суть в том, что если питушня с key таки найдётся, то никаких лишних объектов сконьструировано не будет, и, более того, аргументы никуда не мувнутся и останутся валидными. На этом принцимпе построены всякие новые (и очень удобные, по сравнению со старьём) «try_emplace()».
bormand # 0 ⇈
Да, он лучше, но мне было настолько лень его писать, что я передал просто по значению.
1024-- # 0 ⇈
gost # 0 ⇈
3.14159265 # 0 ⇈
И вроде читаешь пояснения лучших крестоводов — всё звучит логично.
Итераторы, автовставка, сопзты, типабезопасность, пирформанс.
А в реальном коде срань полнейшая: минное поле с граблями и кучами говна.
3.14159265 # 0 ⇈
Им нужно было сделать для автодобавления дефолтных значений новый оператор ?[].
По аналогии с сишарпным сахарком.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-
Тогда бы фейл превратился в вин.
И крестухов новыми значками уже не испугать. И 1024-- заапрувил бы.
Может быть даже перешёл на С++.
gost # 0 ⇈
bormand # 0 ⇈
3.14159265 # 0 ⇈
Какое говнище )))
В Новом Стандарте™ починят?
gost # 0 ⇈
Добрый день, 3.14159265. С возвращением! Где пропадал?
3.14159265 # 0 ⇈
Да я же периодически то набигаю на ГК, то отбигаю в сторону.
bormand # 0 ⇈
А вот и неправда. 99% реальных примеров кода, который шарится по всяким жсонами, ожидает что там все поля на месте и ничего не проверяет после поиска. А потом "на ваш номер undefined было отправлено сообщение".
Бросать исключение в таком случае правильнее, имхо. Ошибку быстрее заметят и исправят.
bormand # 0 ⇈
MAKAKA # 0 ⇈
During handling of the above exception, another exception occurred же
gost # 0 ⇈
Так и чувствую всю охуенность отладки такого кода.
guest # 0 ⇈
> заманкипатчил
Всё с тобой ясно.
Steve_Brown # 0 ⇈
Поэтому стектрейс должен быть ровно такой же, как у не манкипатченной функции.
Desktop # 0 ⇈
gost # 0 ⇈
1024-- # 0 ⇈
Кстати, в пистоне же модуль может быть файлом, а может - мемтухом или зожатиком. Или это в ЙАЖА, не помню.
Так что в стеке всё равно может быть питушня в зависимости от обстоятельств.
bormand # 0 ⇈
bormand # 0 ⇈
Каноничный способ:
Desktop # 0 ⇈
Этот комментарий сгенерирован автоматически (нет).
Список срачей и бесед по поводу исключений
1) https://govnokod.ru/27145#comment599735
2) https://govnokod.ru/26949#comment578129
3) https://govnokod.ru/26918#comment571754
4) https://govnokod.ru/26533#comment536726
и т.д.
каждый Новый год мы с мужиками...
CBuHOKYP # 0 ⇈
Аплодисменты, кися.
OCETuHCKuu_nemyx # 0
Даны 2 прямоугольника со сторонами параллельными осям, с целыми координатами. Нужно найти манхеттенское расстояние между ними (если пересекаются, то расстояние равно нулю). Как бы вы решали?
TOPT # 0 ⇈
OCETuHCKuu_nemyx # 0 ⇈
OCETuHCKuu_nemyx # 0 ⇈
-
-
-
-
-
-
-
-
-
Сводим задачу к "найти расстояние от точки до прямоугольника": ифаем все 9 вариантов расположения.
Дальше перебираем 4 угла одного прямоугольника и находим минимальное расстояние до другого алгоритмом выше.
bormand # 0 ⇈
Поскольку расстояние манхеттенское, можно отдельно посчитать его по вертикали и по горизонтали, а потом сложить.
Как-то так, наверное.
Блядь, невидимые чернила просвечивают (
OCETuHCKuu_nemyx # 0 ⇈
CHayT # 0 ⇈
bormand # 0 ⇈
errata: в строках 6-9 h читать как v.
gost # 0 ⇈
(p1.left - p2.left) * (p1.left - p2.right) <= 0 => есть пересечение, и для оставшихся трёх сторон по аналогии.
Плюс особый случай, когда один прямоугольник целиком внутри другого: там надо проверить, что (p1_i.x - p2_i.x) * (p1_i.y - p2_i.y) >= 0 для всех четырёх точек в упорядоченном виде (p1_1 — левый нижний угол первого прямоугольника, etc).
bormand # 0 ⇈
> плюс особый случай
Зачем? Приведи реальный пример, на котором код выдаёт неправильный ответ (с учётом ерраты выше).
gost # 0 ⇈
https://i.imgur.com/UVXoy5U.png
>>> если пересекаются, то расстояние равно нулю
bormand # 0 ⇈
assert(p.left < p.right)
assert(p.top < p.bottom)
gost # 0 ⇈
bormand # 0 ⇈
bormand # 0 ⇈
gost # 0
До чего же охуенно! И никаких тебе проёбов в виде «отправили login, приняли name».
1024-- # 0 ⇈
Ну, скажем, сериализованный наследник такого класса через LSP пройдёт, а через got an unexpected keyword argument не пройдёт.
gost # 0 ⇈
Более сложную логику — с проверками типов и прочей питушнёй — нужно делать вручную, например:
gost # 0 ⇈
Наследников надо создавать через их конструкторы, да, сериализованного наследника в конструктор родителя засунуть не получится. Тут, увы, ничего не поделаешь: в сериализованном виде тип не сохраняется, а duck typing по-умолчанию запиливать было бы слишком хардкорно и нестабильно.
bormand # 0 ⇈
Какая бутафория )))
gost # 0 ⇈
bormand # 0 ⇈
З.Ы. А, оно в User.__annotations__ падает.
gost # 0 ⇈
Ага, причём эти магические поля меняют чуть ли не в каждой минорной версии. Лучше на них не завязываться, конечно, пока стабильными не объявят.
bormand # 0 ⇈
Какой багор )))
gost # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
https://www.youtube.com/watch?v=-rTlo0ompmY
Desktop # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
bormand # 0 ⇈
Блин, они так скоро бутафорские шаблоны придумают...
Какой карго-культ )))
gost # 0 ⇈
bormand # 0 ⇈
gost # 0 ⇈
Оператор [] (и len()) — это Sequence.
bormand # 0 ⇈
Optional[T] -- это вызов оператора [] у typing.Optional?
gost # 0 ⇈
MAKAKA # 0 ⇈
коко-вариантность (или контр, я забыл)
gost # 0 ⇈
https://i.imgur.com/TuRVdje.png
Соснули.
guest # 0 ⇈
PEP-484
Вечно путаю эти "int", "out" и пр
gost # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
bormand # 0 ⇈
И потечь памятью, угу. Компайлтайм гц ведь нету.
gost # 0 ⇈
UPD: template<Memory> new -> <Memory::block(Memory::allocate_block(): :block), Memory::allocate_block()::new_memory_sta te> или что-то вроде того.
bormand # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
gost # 0 ⇈
MAKAKA # 0 ⇈
а в рантайме ничего проверять вообще ничего надо, они же для стат проверки
gost # 0 ⇈
> а в рантайме ничего проверять вообще ничего надо, они же для стат проверки
Надо. Да вон хотя бы для только что обсуждавшегося dataclass. Было бы куда удобнее, если бы оно гарантировало соблюдение типов полей (хотя бы опциональным флагом, типа check_types=True), но увы.
guest # 0 ⇈
(c)
gost # 0 ⇈
MAKAKA # 0 ⇈
В рантайме нету знания о том, чем паразитирован твой list.
Как можно в рантайме понять Iterable[int] он или Iterable[Svinokur]?
gost # 0 ⇈
Или вон, тот же «pydantic», https://pydantic-docs.helpmanual.io:
Рекурсивный пример:
MAKAKA # 0 ⇈
ты хочешь поспорить с pep-484 и 526?
https://www.python.org/dev/peps/pep-0484/#non-goals
https://www.python.org/dev/peps/pep-0526/#non-goals
"no desire to ever make type hints mandatory, even by convention."
Пайдантик это внешняя тула, она может чего угодно требовать.
В dataclass ты можешь написать Any, но типы все равно же не проверяются:
gost # 0 ⇈
Но как так получилось, что в dataclass они именно что mandatory? Ты не можешь сделать датакласс без аннотаций, не предусмотрено такого. Any — это тоже аннотация.
Но я так и не понял, как «no desire to ever make type hints mandatory, even by convention» мешает наличию встроенного инструмента для рантайм проверки типов. Вот как сложность разработки такого инструмента мешает — понял, как необязательность тайпхинтов — не понял.
Ещё раз: ты можешь в «Питоне» проверить, что переданный тебе объект является, например, коллекцией:
А вот проверить (провалидировать, если угодно), что переданный тебе объект является, например, коллекцией целых чисел, не можешь:
И вот это — говнище.
MAKAKA # 0 ⇈
питонисты соснули, пушо: сами запутались в своих пепах
Но скорее всего имелось ввиду, что питон никогда не заставит тебя соблюдать аннотации: в датаклассах они тоже для красоты
>А вот проверить (провалидировать, если угодно),
Проверить, что что-то является коллекцией, ты мог и до аннотаций. Это знание есть в рантайме.
А знания о том, каоко типа данные там могут лежать -- нету.
Аннотации не сущестувуют в рантайме. Никакой информации о них нет.
Твои проверки это просто алиасы для тех же collections.
gost # 0 ⇈
Да.
> Аннотации не сущестувуют в рантайме. Никакой информации о них нет.
Неверно. Аннотации в рантайме вполне себе существуют:
Соблюдать их тебя заставляют, это верно.
Выше я наглядно продемонстрировал, что «pydentic» прекрасно справляется с рекурсивной проверкой типов исключительно языковыми средствами, и List[int] от List[str] отличить способен. И именно такую валидацию я хочу искаропки.
MAKAKA # 0 ⇈
А забери мне аннотацию у переменной?
>исключительно языковыми средствами,
я не знаю, как он работает: он сам AST не строит?
gost # 0 ⇈
У переменных их нет, но в контексте разговора это совершенно неважно.
> я не знаю, как он работает: он сам AST не строит?
Вообще нет, он берёт аннотации и долго и уныло приходящие на вход данные проверяет на соответствие. Это не внешняя утилита, это просто библиотека.
MAKAKA # 0 ⇈
как так нет?
https://www.python.org/dev/peps/pep-0526/
>Это не внешняя утилита, это просто библиотека.
в чем разница? важно, что это не часть сипайтон
Пайшарм вон умеет вывод типов, но мы же не говорим, что в питоне есть вывод типов
gost # 0 ⇈
> в чем разница?
В том, что в «Питоне» уже сейчас есть все средства для создания вменяемого инструмента проверки обобщённых типов. Грубо говоря, авторы «pydantic» осилили написать функцию, которая работает примерно вот так:
Только вместо того, чтобы использовать простые и встроенные средства, им пришлось городить целую гору унылой метушни.
Desktop # 0 ⇈
?
gost # 0 ⇈
MAKAKA # 0 ⇈
gost # 0 ⇈
bormand # 0 ⇈
gost # 0 ⇈
guest # 0 ⇈
в TCL всё можно
Desktop # 0 ⇈
MAKAKA # 0 ⇈
тогда я не понимаю, на что ты жалуешься.
На то, что isinstance не работает?
так еще раз обращаю внимание на то, что isinstance ничего не знает об аннотациях
gost # 0 ⇈
Или на то, что нет отдельной функции validate_typehint() или что-то в этом духе.
> так еще раз обращаю внимание на то, что isinstance ничего не знает об аннотациях
О коллекциях она, ВНЕЗАПНО, тоже ничего не знает. Смотри:
Вот не наследуется list от Iterable — и всё. А issubclass говорит, что наследуется. Вот такие вот питоньи чудеса.
gost # 0 ⇈
Чудо новогоднее, блять!
gost # 0 ⇈
Мы зашкварили весь «Питон», и теперь все классы в нём — петухи.
Мораль сей басни такова: для isinstance() совершенно не обязательно что-то знать про тайпхинты, коллекции и прочую поебень. Реализация isinstance(x, List[int]) остаётся исключительно на совести автора List[int].
bormand # 0 ⇈
1024-- # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
А мне норм. В сишке/крестах синтаксис ещё более уёбищный в этом плане.
guest # 0 ⇈
Вроде общеизвестно, что
отчаянно сосёт с проглотом у
разве нет?
bormand # 0 ⇈
Угу, в крестах вон даже это признали и сделали:
MAKAKA # 0 ⇈
Кстати, постоянная тренировка памяти помогает избежать деменции и склероза, так что С++ программисты будут иметь светлую голову до девяноста лет
gost # 0 ⇈
И течь. Потому что если бы они просто вынесли доступность параметров функции «налево» — парсер бы окончательно охуел и вышел в окно.
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
gost # 0 ⇈
Вот примерно такая же хуйня, только на много-много строк, и делается в «Pydantic». Что делать с Iterable — хуй его знает, думать надо. А в идеале думать надо было авторам «Питона».
Desktop # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
- так это ж всегда можно было, к аннотациям и тайпихинтингу не имеет отношения
> мешает наличию встроенного инструмента для рантайм проверки типов
- я думаю, встроенный инструмент есть примерно с первой версии питона, иначе как бы он работал?
gost # 0 ⇈
MAKAKA # 0 ⇈
Смотри:
Есть тип выражения, а есть аннотации некоторых символов.
Они вообще никак между собой не связаны, питон никак не их не связывает
Какие-то левые тулы (пайдантик, mypy, pycharm) связывают, а питону пофиг.
gost # 0 ⇈
> левые тулы (пайдантик
Это не тула, это библиотека. Она работает исключительно в рантайме и исключительно за счёт внутриязыковых средств.
MAKAKA # 0 ⇈
питонухи не делали валидации же, разве сам питон умеет что-то валидировать?
gost # 0 ⇈
Доброе утро, MAKAKA.
guest # 0 ⇈
Приведенная тобой базовая валидация была в питоне издревле, и я не понимаю, почему мы смешиваем её с аннотациями.
Раньше в питоне было принято указывать тип в докстроке.
Можно получить докстроку врантайме, и что-то там проверить.
Но isinstance на твою докстроку срал, верно?
Вот аннотации это по сути такая же хень, как и докстроки, просто формализованная.
И питону, и isintanceу на них плевать.
Не плеваить только тулам типа пайдантика.
Сначала в питоне вообще все текли от УТИНОЙ типизации:
"мой класс string-like класс, ведь у него есть почти все методы строки".
Потом они завезли abstact base classes, чтобы стало можно сказать "я файл" или "я строка".
А потом появились аннотации, но это совершенно параллельная конструкция, ни к instance, ни к ABC не относящаяся.
Вообще это всё говно конечно.
Нужно было изначально сделать как в TypeScript, или добавить ключик для проверки типов в рантайме
gost # 0 ⇈
guest # 0 ⇈
>Sequence[int]
?
Разве ABC классы вообще поддерживают обобщенное программирование?
Мне казалось, что синтаксис Class[Type] есть только в аннотациях, не?
gost # 0 ⇈
А делается он простым перегруженным оператором []:
gost # 0 ⇈
Полностью автоматическая генерация моделей с поддержкой рекурсивного парсинга и строгой валидацией — это же просто охуенно! И вся эта прелесть — исключительно на аннотациях.
bormand # 0 ⇈
Либо когда разрешаем клиенту экономить трафик и не передавать часть полей.
CHayT # 0 ⇈
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
у вас опечатка в словосочетании "программистов на нормальных технологиях"
bormand # 0 ⇈
gost # 0 ⇈
guest # 0
http://nubo.ru/
чел реально двадцать леьт его поддержв
http://nubo.ru/news/index_.html
Desktop # 0 ⇈
я кончил
MAKAKA # 0 ⇈
http://nubo.ru/humor/beerprogram.html
флоат -- мани
фу таким быть
MAKAKA # 0 ⇈
блядь, циферки на этикекте
а
аа
gost # 0 ⇈
Что было-бы, если бы Билл Гейтс занялся пивом, а не операционками...
После выпития очередной бутылки Пива Ваш организм выдавал бы одно из следующих сообщений:
1) Некорректный организм. Проведите инсталляцию Пива на другом организме.
2) Инсталляция Пива прошла неудачно. Пиво будет деинсталлировано немедленно.
3) Ваш организм не позволяет настройку инсталлируеммого Пива на выставленный градус. По умолчанию принято безалкогольное пиво.
4) Не хватает емкости организма для инсталляции указанного количества Пива.
5) Переполнение мочевого пузыря. Произведен немедленный сброс его содержимого.
6) Инсталлированное Пиво не поддерживает корректной работы Вашей периферии. Джойстик в системе не обнаружен...
7) Пиво, которое Вы инсталлировали, судя по его серийному номеру, было продано владельцу из Калифорнии для единичной (однократной!) инсталляции! Вы инсталлируете пятый раз ранее инсталлированное другими Пиво!
8) Заплатите деньги за инсталлированное Пиво!
9) Инсталляция Вашего Пива успешно завершена! Теперь Вы каждое утро будете созерцать облака на фоне зарешеченного окошечка!
10) Подождите, пока Ваше Пиво завершит работу...
11) Приобретите и установите дополнительный драйвер для корректной работы Джойстика.
12) В почтовом ящике есть сообщение: "Вася! Благодаря нашей совместной инсталляции Пива и использованию тобой джойстика без предварительной установки драйвера, мой организм допускает 3 возможных варианта продолжения работы: Abort, Retry, Ignore..."
13) Ваш организм завис. Выгрузите все ранее загруженные сорта Пива и загрузите их заново.
bormand # 0 ⇈
jojaxon # 0 ⇈
Desktop # 0 ⇈
Desktop # 0 ⇈
CHayT # 0 ⇈
Desktop # 0
Требования к машинке: способная переваривать игры уровня RDR2 пусть не на ультре, но хотя бы на высоких настройках; актуальная для разработки в прожорливых IDE уровня VS, ну собсно и всё (?)
MAKAKA # 0 ⇈
Если хочется именно интел, то comet lake не меньше i5 (лучше i7, все таки ты хочешь тяжелые ide). Постарайся выбрать без GPU (ты же будешь внещнюю брать)
ищи N/A в графе GPU:
https://en.wikipedia.org/wiki/Comet_Lake_(microprocessor)
Память DDR4 лучше 16 (можно 32, если позволяют средства). Брать набор из минимум двух планок (чтобы завёлся дуал ченнел). В идеальном мире выбирать из списка, предложенного производителем мамки.
Мамку я обычно беру Asus. конкретная модель зависит от твоих потребностей в колве PCI-E и USB, но совсем маленькие лучше не брать, бо там будет все слишком близко.
Чипсет зависит от твоего выбора проца)
SSD на NVME разумеется!
Я сторонник Samsung 980 pro (не младше pro!!)
По GPU не подскажу, нужно читать обзоры.
Если будет очень мощная видео, то БП наверное лучше взять отдельно от корпуса, выбрав его по мощности (чтобы примерно совпадало с общей мощностью всего г-на, что ты туда поставишь), ну и не ноунеймовое говно, бо у него будет плохая кросс-нагрузочная.
Как минимум что-то типа https://www.ixbt.com/supply/corsair-rm650-2019-review.html#n7
Desktop # 0 ⇈
> БП наверное лучше взять отдельно от корпуса
- а есть корпуса сразу с БП? а то я не в курсе
guest # 0 ⇈
https://market.yandex.ru/product--kompiuternyi-korpus-in-win-ec022-450w-black/4810930/spec?track=tabs
хорошо подойдут для обычного офисного компа. Но я не уверен, что туда нужно ставить топовый проц и мощную видяху, это и по мощности БП видно..
Desktop # 0 ⇈
guest # 0 ⇈
У меня сейчас корпус восемнадцатилетней примерно давности, его БП давно ушел в небытие (он и питание-то современное не умеет, atx 2.2 или как там оно), и был заменен каким-то кодегеном
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
Я собрал комп в 2002-м году на Penitum 4 Northwood. У меня был корпус InWin (тогда они еще были хорошие, крепкие, в отличие от хлипкого говна, которое тогда было вокруг меня).
В 2013-м я перешел на i7 Ivy Bridge, и поменял БП.
Я обычно работаю на рабочем компе (из дома -- удалённо), так что от слабой машины я не очень-то и страдал
bormand # 0 ⇈
Прям намертво? Или просто в комплекте с корпусом зачем-то прилагается БП?
guest # 0 ⇈
У меня шел в комплекте, но я его потом вывернул, и вставил другой, когда апгрейтился
bormand # 0 ⇈
Для игровой всяко не вариант, вряд ли они туда блок с хорошим КПД воткнут. А на дешёвом говне можно будет яишницу жарить.
guest # 0 ⇈
Когда тебе нужно собрать тридцать рабочих мест для операторов 1С, но нет смысла ставить туда специальные БП:)
Дело и в КПД, и в мощности, и в перекосоёбах на кросс-нагрузочном, насколько я понимаю.
bormand # 0 ⇈
guest # 0 ⇈
Это как я себе дома в проводку поставлю тоненький аллюминевый провод, и буду греть стенку?
Кстати, проц питается от 12, но вроде ядро питается от куда мЕньшего напряжения, там этот VRM или как его?
bormand # 0 ⇈
guest # 0 ⇈
или ему не хватит выдаваемого там тока?
bormand # 0 ⇈
Собственно тот же принцип, что и с высоковольтными линиями между городами.
З.Ы. 3.3 и 5 на современных бп совсем слабенькие, почти вся мощность идёт на 12.
guest # 0 ⇈
5.5 вроде вообще мало кто использует, а 3.3 наверное едят какие-нить куллеры?
bormand # 0 ⇈
5 для усб и дисков.
3.3 и -5 скорее всего никто и не юзает уже. Может на какую-нибудь слаботочку на материнке, х.з.
guest # 0 ⇈
я думал, что sata 3.3
Блядь, все перепутал, нужно почитать
bormand # 0 ⇈
guest # 0 ⇈
Судя по раскладке, там было только 12в на кулер
https://i.stack.imgur.com/IA43b.jpg
Попиздиш тут с вами, и начинается стояк на железо.
Сразу хочется ремонтировать и собирать компы, лол
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Что-нибудь из 20хх-30хх серии нвидий. Всё что до этого морально устарело и не умеет в рейтрейсинг и DLSS. У амд на это пока ответа нету, насколько я знаю.
guest # 0 ⇈
>У амд на это пока ответа нету, насколько я знаю.
вопрос снят
забавно: проц лучше брать AMD, а карту -- нвидиа, так?
bormand # 0 ⇈
guest # 0 ⇈
Но не может быть такого, что RX 6000 будет лучше работать с AMDшным чипсетом (для их процов же и чипсеты ихние?)
Или я хуйню сказал?
Иными словами, не может так оказаться, что к процессору AMD лучше и карту взять AMD?
bormand # 0 ⇈
guest # 0 ⇈
вот про что я
It wont run Nvidia at SLI but may run single Nvidia card onlyl. SLI is exclusive to Nvidia chipset only while CrossifireX is available at Intel and AMD chipsets.
https://forums.tomshardware.com/threads/790fx-chipset-and-sli.452907/
bormand # 0 ⇈
Сейчас насколько помню на любой материнке работает и sli и crossfire. Ну если есть 2 слота под видюхи, конечно.
Desktop # 0 ⇈
bormand # 0 ⇈
Если нету -- классическую байду на пару килограмм цветмета.
Желательно еще хотя бы по одной вертушке на входе и выходе системника. Без них летом может не хватить охлаждения.
И да, если новый корпус берёшь -- смотри чтобы места побольше и можно было кабели спрятать с обратной стороны, чтобы эти джунгли потоку воздуха не мешали.
guest # 0 ⇈
https://3dnews.ru/assets/external/illustrations/2018/01/24/964587/vozduh.jpg
На жопу БП можно поставить куллер (обычно хорошие материнки умеют его сами выключать в зависимости от температуры на thermal zone, разъем "sys fan" или как-то так)
Кулера бывают sleeve (на сопле) и ball (на подшипнике)
Я за подшипник (правда, я свои знания лет десять не обновлял).
Потом запускаешь PowerMax, он нагружает тебе CPU и GPU, потом берешь CoreTemp или HWInfo, и смотришь температуры.
Если они близки к критическим -- нужно ставить куллер еще и на морду, и связывать провода жгутами, чтобы не мешать воздухку
bormand # 0 ⇈
Именно поэтому я за большие корпуса где можно спрятать все эти лианы за материнку.
А вертушку на морду лучше сразу взять. Они большие и тихие же. С хорошим потоком видюха с процом будут свои кулера поменьше крутить. В итоге меньше шума будет.
guest # 0 ⇈
* Чтобы там было много sys fan (иначе будешь пихать неуправляемый куллер прямо в БП через переходник)
* чтобы расстояние между девайсами было побольше
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
Кстати, за этим же OSPM следит в ACPI? или сама прошивка?
Но у меня самый противный звук был обычно от хуёво закрученного хуёвого корпуса, который дребежжал
Нормальные корпуса, когда закрыты, не дрожат, и там даже шумные куллеры не так страшны
Desktop # 0 ⇈
bormand # 0 ⇈
Компактный и мощный комп очень сложно собрать. Больше воздуха -- меньше ёбли.
guest # 0 ⇈
В целом чем больше у тебя корпус и мамка, тем тебе проще
bormand # 0 ⇈
Нафиг так жить.
Desktop # 0 ⇈
bormand # 0 ⇈
bormand # 0 ⇈
Возьми что-то тяжёлое, просторное и из хорошего металла, а не консервную банку.
Desktop # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
есть горизонтальные корпуса, но они чаще брендовые, и потом туда что-то не влезет
bormand # 0 ⇈
Видюха. Она и в tower то еле-еле. Кажется золотой хуй тут недавно обсуждал упихивание видюхи в компактный корпус и совместимость pci-e удлинителей.
guest # 0 ⇈
guest # 0 ⇈
https://market.yandex.ru/product--kompiuternyi-korpus-corsair-carbide-series-275r-black/51777466/spec?track=tabs&cpa=0
там и вертушки в комплекте, и место для других, и стальной (толщину не пишут, пидарасы), и БП в комлекте нети
guest # 0 ⇈
У них БП стоял вертикально, и занимал пол корпуса, а сам корпус был сделан из говна, которое сразу гнулось. Закрыть второй раз такой корпус было невозможно. Зато руки он резал только в путь.
На фоне крепеньких AT корпусов (с кожухом, состоящим из крышки и двух стенок) всё выглядело, как говно.
Потому мой InWin на том фоне выглядел няшно
Desktop # 0 ⇈
спереди панель не открывается что ли?
MAKAKA # 0 ⇈
но как именно в этой модели, нужно читать. Вообще, есть обзоры жеж
https://www.ixbt.com/supply/corsair-275r-airflow-review.html
Desktop # 0 ⇈
но после того, как я увидел, что разъёмы под аудио и USB сверху, всё стало понятно
нипайдёть
guest # 0 ⇈
на столе стоять будет?
guest # 0 ⇈
https://overclockers.ru/blog/molexandr/show/35127/inwin-predstavila-korpus-c200-dlya-rabochih-stancij
guest # 0 ⇈
https://market.yandex.ru/product--kompiuternyi-korpus-thermaltake-level-20-xt-cube-ca-1l1-00f1wn-00-black/165767493?cpa=0
но уних тоже дырки сверху.
походу, на морде они только у c200, лол.
gost # 0 ⇈
Desktop # 0 ⇈
bootcamp_dropout # 0 ⇈
MAKAKA # 0 ⇈
Алсо, на некоторых материнках есть экран, который показывает или пост коды при загрузке, или темепературу, и им это нравится.
Если они ставят стекло то это еще пол беды. А если питух ставит прозрачный пластик, то сразу нахуй.
Ну вот у inwin c200 корпус не прозрачный
bormand # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
https://market.yandex.ru/product--kompiuternyi-korpus-zalman-z3-black/10509296/spec?track=tabs&cpa=0
а, там в комментах пишут, что все хлипкое
нахуй его
Desktop # 0 ⇈
два допкулера там уже есть, спереди и сзади, можно пришпандорить ещё один здоровый на боковую стенку и будет збс
guest # 0 ⇈
bormand # 0 ⇈
Define R5. 10 кг весит, лол.
gost # 0 ⇈
Добрый день, bormand.
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
Любитель жарить яичницу на троттлящемся проце?
gost # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
bormand # 0 ⇈
Ну в 3дмарке например или в какой-нибудь современной игрушке.
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
Для сравнения, с небольшими твиками моя 1660 под полной нагрузкой греется на 54 градуса и практически не вертит вентиляторами (1250 RPM, треть от максимума). Именно поэтому я за «гроб».
Xepyc_DJIuHyc # 0 ⇈
https://i.imgur.com/7LAwTUH.png
https://i.imgur.com/rXZKuIl.png
gost # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
но звук бывает разный. в нормальных наушниках нормальный и звук
gost # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
Это всё поебень, для игр не имеющая практически никакого значения. Для них в первую очередь не качество воспроизведения, а объём. В наушниках у тебя никогда не будет «погружения» даже близко сравнимого с колонками — банально потому, что источник звука двигается вместе с твоей головой. И именно поэтому для игр и фильмов наушники сосали, сосут и будут сосать до тех пор, пока кто-нибудь не изобретёт механизм компенсации поворотов головы.
Да, слушать музыку в хороших наушниках может быть лучше, чем на колонках. Играть в фильмы и смотреть игры — увы.
bormand # 0 ⇈
В "VR" играх должно быть норм. Там в теории можно скорректировать звук под поворот головы.
gost # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
Потому что микродвижения. Ты в любом случае будешь сдвигать голову в стороны на несколько градусов, и этого уже достаточно, чтобы услышать разницу.
> и наушники тебе позволяют именно то что слышет ГГ
Это могло бы работать для «VR», но, увы, не для классических игр.
Услышав звук где-то слева и переведя взгляд на левую сторону экрана, в наушниках твой мозг получит дозу когнитивного диссонанса из-за того, что направление звука не поменялось. С колонками такой хуйни не происходит: мозг будет получать правильные объёмные характеристики звука.
Xepyc_DJIuHyc # 0 ⇈
gost # 0 ⇈
bormand # 0 ⇈
Рефлексы же, чтобы определить направление на источник звука.
gost # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
Понятно что когда не видишь звук а звук где-то с сзади. от какого-то очередного пердежа шугнешся и повернешся, да звук переместится за тобой вместе с наушниками. Но ГГ то стоит и слышет так же сзади - и сколько башкой не верти. Ну хз, мне кажется тут уже предпочтения каждого. Мне нравится наоборот когда я связан с ГГ пуповиной виде наушников и я понимаю звуки относительно его. Но я это по себе, потому что кино-игры я не играю, где сделан акцент на объемы и прочее говно не на героя а именно на играющего эффект произвести. Охуенно в дум в колонках играть наверное, ну прям каеф, когда мешанина и нехуя не понятно.
bootcamp_dropout # 0 ⇈
gost # 0 ⇈
>>> Но, разумеется, только если у тебя в квартире тишина, нет соседей с дрелью и орущего во всю мощь турбин пенала.
Микрофоны — да, тоже отдельная проблема, но тут уж ничего не поделаешь, приходится страдать.
bootcamp_dropout # 0 ⇈
Desktop # 0 ⇈
- даже у свена, купленного в подвале у Васяна?
сравниваем несравнимое
плюс некоторые игори прямо говорят: у нас лучший экспиренс в хедфонах, атата
bormand # 0 ⇈
gost # 0 ⇈
Ну я же специально сказал: обычных колонок. Свен из подвала — это не обычные колонки, это необычное говно.
> плюс некоторые игори прямо говорят: у нас лучший экспиренс в хедфонах, атата
Это для би-на-у-руш-ни. Специфическая хуета, но интересная, да.
Desktop # 0 ⇈
- что такое обычные колонки-то? Harman Kardon, B&O, Bose или вдруг Microlab?
> би-на-у-руш-ни
- I beg your pardon?
gost # 0 ⇈
Колонки из ценовой категории нормальных наушников.
> I beg your pardon?
https://www.youtube.com/watch?v=51za5u3LtEc&t=4m55s
На 4:55 послушай в наушниках и с увеличенной громкостью (и головой не верти, да).
Desktop # 0 ⇈
- какой-то очень расплывчатый ответ. Ну ок
> На 4:55 послушай в наушниках и с увеличенной громкостью (и головой не верти, да).
- и что тут? чуваки открыли для себя тампакс стерео и объёмный звук?
А головой я кстати и не думал вертеть, потому что я на картинку в первую очередь реагирую, меня в этом плане не так просто объебать. Подозреваю, что это зависит от вестибюлярки и физиологии конкретного человека в принципе
gost # 0 ⇈
Бинауральная запись — это апгрейд стереозвука: https://ru.wikipedia.org/wiki/Бинауральная_запись.
И да, она очень чувствительна к геометрии черепа/ушей, так что тут как повезёт. Попробуй с закрытыми глазами послушать, кстати. Ну и окружающий шум тоже сильно мешает.
Desktop # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
для меня всегда звук кулеров был неплохой защитой от шума ёбаных соседей
bormand # 0 ⇈
Я это слишком поздно понял, когда начал слышать свист дросселей в старом мониторе и назад дороги уже не было ;(
bormand # 0 ⇈
Ну вот сейчас померил ради интереса в киберпанке на ультрах с рейтрейсом: 60фпс, 360Вт на входе системника, 70 градусов на видюхе, 60 на проце.
Шумновато, конечно, но уши не закладывает. Надо видюху тоже на водяной контур прикрутить, всё руки никак не дойдут.
Сможет ли такое нескучный пенал?
Xepyc_DJIuHyc # 0 ⇈
bormand # 0 ⇈
И сколько там фпс? 30 как на соснолях?
Xepyc_DJIuHyc # 0 ⇈
bormand # 0 ⇈
Понятно, что поконпелировать да поиграться в феодалов компактного корпуса за глаза хватит.
Xepyc_DJIuHyc # 0 ⇈
бордерлендс3 отлично шел, кроме одного параметра.
gost # 0 ⇈
«Deep Rock Galactic»? Социальный штоле?
bormand # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
bormand # 0 ⇈
> Показывает ярлыки не менее "тягомотных" медмакса и египетского отсосина.
Xepyc_DJIuHyc # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
Desktop # 0 ⇈
там можно голосом команды отдавать!
Xepyc_DJIuHyc # 0 ⇈
Desktop # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
https://notabene91.github.io/HW_soundboard/
Xepyc_DJIuHyc # 0 ⇈
https://youtu.be/rBqaWfnCRZE
Xepyc_DJIuHyc # 0 ⇈
bormand # 0 ⇈
> 65Вт
Турбо-буст то хоть включен или как он там у AMD называется? Кулер под максималками поди ревёт как турбина самолёта?
Я гроб брал в первую очередь ради тихой и мощной системы. И да, я 12 ядер 8700k, которые ебашат на 100% под турбо бустом, почти не слышу.
Xepyc_DJIuHyc # 0 ⇈
3.14159265 # 0 ⇈
Неправда. HT (Intel) = SMT (AMD, IBM)
3.14159265 # 0 ⇈
ШТО??
Не было же у штеуда 12 ядерников с такими маркировками.
Edit: проверил. Так и есть. 6 ядер с HT.
Desktop # 0 ⇈
купишь такой и уже лишний раз на другую квартиру не съедешь
bormand # 0 ⇈
К слову, когда водянку начинаешь крепить, даже этот гроб кажется тесноватым.
А для переезда всё равно же машину заказывать. Так что плюс-минус коробка пофиг.
Desktop # 0 ⇈
- ну да, только до машины и из машины его ещё донести надо, а отдавать самое ценное грузчикам как-то стрёмно
не хватает каких-то ручек что ли.
CHayT # 0 ⇈
CHayT # 0 ⇈
Desktop # 0 ⇈
в идеале наверное было бы иметь две панели с обеих сторон на торцах передней крышки/панели в верхней её части, но я не уверен, что такое бывает в природе
с другой стороны, если прокидывать USB через тот же монитор, то вопрос остаётся только в разъёмах под гарнитуру с джеком
MAKAKA # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
а как её иначе в телефон-то засунуть?
bormand # 0 ⇈
К новым телефонам только блютус, походу. Места под джек больше нет.
bootcamp_dropout # 0 ⇈
некоторые еще с мини АЦП и усилком
bormand # 0 ⇈
bootcamp_dropout # 0 ⇈
думаю что звук от комбо проводные наушники + беспроводной адаптер получается лучше ем от беспроводных за ту же цену
Desktop # 0 ⇈
MAKAKA # 0 ⇈
с блек-джеком?
ну hd audio это у интела кодек вместо ac97, не суть.
У меня на работе тоже такая, кстати.
bormand # 0 ⇈
В мониторах есть же обычно. Попробуй, мож сойдёт если не аудиофил.
Desktop # 0 ⇈
bormand # 0 ⇈
defecate-plusplus # 0 ⇈
Вот сегодня как раз собирали офисный пека под дизайнера, в Залман "м3 плюс" влезла видюха, больше чем мАтх мать.
bormand # 0 ⇈
Вентиляторами ось рулит через acpi, насколько помню.
guest # 0 ⇈
>ось
ну слава богу, значит я с APM не перепутал
bormand # 0 ⇈
guest # 0 ⇈
2 штуки vs 8 штук
Хотя экономить шесть штук наверное глупо для нового компа
bormand # 0 ⇈
guest # 0 ⇈
В общем для HDD осталось одно применение: файлопомойка или бекап, которым пользуются раз в десятилетие.
Хотя я еще по весне видал одну серверную, где в рейдах стояли SAS HDD с высокой (как для HDD) rotation speed.
Их как раз использовали чтобы бекапить клиентские машины с 12-ти ночи до восьми утра (инкрементально), так что на скорость было похуй
YpaHeLI_ # 0
Сейчас поставил на новый десктоп Debian, и все было хорошо.
Прошил флешку образом Windows 7, чтобы тоже установить, он не грузится, перекидывает на граб. То же самое с Windows Server 2019. Прошивал через dd.
Через граб загрузить установщик тоже не выходит.
У меня комп производства HP, Secure boot отключил, Legacy boot включил.
И ведь Acronis и Linux грузятся, а винда нет.
Что может быть?
gost # 0 ⇈
P. S. И попробуй флешку «Rufus»-ом прошить.
guest # 0 ⇈
почему я не могу просто создать раздел, отформатировать его, и скопировать туда всё?
jojaxon # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
А линукс я тупо ддшу, всё равно везде гибридные образы.
З.Ы. Ну и ХР без сторонних тулов на флешку не вкатать. Возможно кто-то по старой памяти юзает.
guest # 0 ⇈
либо у тебя в биосе стоит загрузка с диска (поменяй бут ордер) либо у тебя режим UEFI, а флешка MBR (или наоборот). Проверь режим и тип флешки.
для MBR флешки наверное нужно еще поставить active у партиции (partedом)
YpaHeLI_ # 0 ⇈
Не в порядке загрузки дело.
Вот именно, что я включил режим Legacy Boot Support.
Я вчера с этой же флешки Linux ставил.
С этого образа тоже на другой компьютер ставил винду и этой же флешкой.
Так что дело точно в самом компьютере.
guest # 0 ⇈
укажи в загрузке ТОЛЬКО флешку, и посмотри на ошибку.
Ты не ответил, как ты сделал dd копию? создал партицию, и сделал копию туда? как разбивал флешку на партиции? пометил ли партицию как активную?
надеюсб, ты не влил .iso прямо на флешку без партиций?
укажи точно как ты сделал флешку, и что выбрал в загрузочном меню в биос, и что написало
YpaHeLI_ # 0 ⇈
MAKAKA # 0 ⇈
YpaHeLI_ # 0 ⇈
Я уже десятки раз так Windows ставил.
MAKAKA # 0 ⇈
на iso у линукса обычно стоит syslinux, там он есть. Виндовые же iso обычно расчитаны либо на заливку на CD (там mbr не нужно) или заливаюися через Rufus / ISO Download Tool: они создают mbr, раздел с ntfs (и загрузочным сектором) лььют туда файлы.
https://blog.superuser.com/2016/02/07/iso-files-optical-drives-and-bootable-flash-drives/
потому линуксовые iso можно dd на флешку, а виндовые только на CD. Либо нужно вручную создавать там фс
https://serverfault.com/questions/6714/how-to-make-windows-7-usb-flash-install-media-from-linux
Речь конечно об МБР
ДЛЯ UEFI ничего не нужно: там можно тупо сделать dd, ведь там EFI сам все загрузит.
Может, ты раньше флешки для UEFI делал?
в тред приглашается борманд
guest # 0 ⇈
у дебиана есть и efi и mbr.
У винды нхуя нету
не будет она грузиться с флешки если её туда dd, только с CDрома будет.
На флешку придется сесть, создать там MBR, раздел, форматнуть в NTFS, и скопировать файлы.
Тащимто, так именно руфус и делает.
У прыщей исошки гибридные, а MS сосет хуя
gost # 0 ⇈
guest # 0 ⇈
Классический биос для дисков читает МБР, и передает управление ему.
MBR от MS находит активную партицию , и передает управление ей.
Партиция имеет сектор, который запускет установщик.
Для CD у биос есть другой подход: Стандарт el torito предлагает
в начале CD иметь загрузчик, который бывает трех сортов
* Эмуляция дискеты: BIOS загружает образ дискеты, делает ее
доступной через прерывания как обычную дискету, и передает ей управление
код в этом загрузчике думает, что загрузился с дискеты
* Эмуляция диска. Биос делает CD доступным через прерывание как диск,
и передает управление. Загрузчик думает, что загрузился с диска,
и должен уметь iso9660.
* Без эмуляции: биос загружает в память код с диска, и передает ему управление.
Код загрузчика должен уметь работать с CD-ROM.
В UEFI прошивка просто находит .efi файл на разделе с fat, и передает
ему управление.
USB Flash drive выглядит как обычный диск (см mass storage class),
и никакой магии el torito не происходит, так что он должен иметь
MBR либо быть UEFI -- иметь партицию с fat и efi файлом.
iso это образ диска iso9660 (или udf в случае DVD), так что если
его dd, то MBR не появится (там будет обычный el torito).
Однако бывают гибриные iso, где есть И mbr, И el torito.
Смотрим лог руфуса для линуск
Disk image analysis:
Image has an unknown Master Boot Record
Image is a bootable disk image
ISO label: 'CentOS-Stream-8-x86_64-dvd'
Size: 757.1 MB (Projected)
Ага, тут есть MBR. Такой диск можно dd, и он загрузится.
Смотрим лог руфуса на винды
Scanning image...
ISO analysis:
'C:\temp\win10-pro-2004-b19041_264-x64-ru-by-sanlex-edition-2020-05-22_iso.torrent' doesn't look like an ISO image
Disk image analysis:
Image does not have a Boot Marker
Failed to scan image
Ага, MBR тут нет: такой диск не загроузится.
TBC
guest # 0 ⇈
Use Rufus MBR (в Advanced)
Как добавить MBR в прыщах на виндоiso, ведь там нет руфуса?
См утилиту isohybrid.
Другой вариант: отформатировать флешку в ntfs (mkfs), создав там mbr (через parted или fdisk) и скопировтаь туда файлы.
В теории какой-то BIOS мог загрузиться и с флешки, ddшнутой с .iso: просто прочитать UFS, найти там el torito, и запуститься
НО ОН НЕ ОБЯЗАН: это же не CD, это HDD (mass storage device).
Возможно, потому у тебя на каких-то компах и работало.
В общем для заливки wi7.iso на диск нужен или rufus, или fdisk/mkfs/cp или hybridiso
gost # 0 ⇈
Спасибо!
guest # 0 ⇈
запускаться под UAC!
Из аутпута видно, что MBR есть и у меня на физическом диске, и у прыщеiso, но не у виндоисо!
guest # 0 ⇈
guest # 0 ⇈
YpaHeLI_ # 0 ⇈
Почитал выше и не понимаю, почему раньше образ через dd работал.
guest # 0 ⇈
guest # 0
guest # 0
http://www.outsidethebox.ms/20667/
guest # 0 ⇈
MAKAKA # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Когда мне нужно куда-то пойти, я рспечатываю карту с яндекс.карт, и иду по ней
Desktop # 0 ⇈
птыч-птыч-птыч, дзынь, бжжжжж
guest # 0 ⇈
Если честно, что лазерный самсунг, тоже весьма древний.
А совсем-совсем давно был струйник, но у него засохла голова
Desktop # 0 ⇈
на тему спора о том, что раньше в играх не было критических багов
https://www.youtube.com/watch?v=cZLed1krEEQ
guest # 0 ⇈
кстати, я играл в это: там четыре черепашки, укаждого свое оружие, и на машине ездить можно
Desktop # 0 ⇈
в нес версии на этом уровне можно перепрыгнуть провалы по платформам
в дос версии невозможно этого сделать. пройти игру можно только с читом
gost # 0 ⇈
Портировали с «NES», добавили новую абилку (высокий прыжок), чутка поправили уровни — и в результате сделали один из них принципиально непроходимым: игромех не позволяет сделать нужный (длинный) прыжок.
MAKAKA # 0 ⇈
Desktop # 0 ⇈
3.14159265 # 0 ⇈
Да, классная игра.
inkanusinho # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
MAKAKA # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
MAKAKA # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
Desktop # 0 ⇈
MAKAKA # 0 ⇈
алсо, гайдзины это же по японки а не по кикики, не?
Desktop # 0 ⇈
Кетайцы делали под маркой блекберри ненужнофоны на ведре, но и они уже не делают
Твой единственный выход это купить себе BB Storm и колоть им орехи
> алсо, гайдзины это же по японки а не по кикики, не?
- сорта
MAKAKA # 0 ⇈
BlackBerry Limited is a Canadian multinational company specialising in enterprise software and the Internet of things. Originally known as Research In Motion (RIM), it developed the BlackBerry brand of smartphones and tablets.
guest # 0 ⇈
понел
канадцы купили китайцев просто
Desktop # 0 ⇈
KAPA6AXCKuu_nemyx # 0 ⇈
defecate-plusplus # 0 ⇈
guest # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0 ⇈
jojaxon # 0 ⇈
MAKAKA # 0 ⇈
если у меня терабайт .mp3, который я начал собирать еще прокупая диски на радиорынке в 1999-м году, то не пошли бы они навхуй?
Desktop # 0 ⇈
MAKAKA # 0 ⇈
Desktop # 0 ⇈
у меня в институте был телефон 32мб + карта на 512, туда даже помещалась дискография группы диАрея в херовом качестве
MAKAKA # 0 ⇈
У меня в далекой юности был creative nomad на 64 мегабайта, туда влезало штук двадцать песен русскава рока в хуйовом качестве
И сука: видился как USB Mass Storage (чуть ли не первый мой USB девай был). Просто блядь пишеш mp3 и течешь
У андроида уже был MTP, что тоже не плохо (хотя и хуже)
А у ябла -- ябло
Desktop # 0 ⇈
другое дело, что это такой себе плеер
Xepyc_DJIuHyc # 0 ⇈
Xepyc_DJIuHyc # 0 ⇈
MAKAKA # 0 ⇈
gost # 0 ⇈
Ты там осторожнее в этот магазин ходи, можешь внезапно обнаружить себя в другом мире.
jojaxon # 0 ⇈
Desktop # 0 ⇈
а вообще тебе бы стопудов подошла Nokia N900, только я не знаю, можно ли щас купить её в адекватном состоянии, да и прошивка там мягко говоря древняя
jojaxon # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Зато другими AT'шками можно было смски слать и читать и т.п.
guest # 0 ⇈
CHayT # 0 ⇈
nepeKamHblu_nemyx # 0
https://govnokod.ru/27168
https://govnokod.xyz/_27168/
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0