Как стать автором
Поиск
Написать публикацию
Обновить
Криптонит
Разрабатываем. Исследуем. Просвещаем
Сначала показывать

В анализе видеопотока с помощью ИИ выделяют два подхода. Первый из них называется обработкой разреженного (sparse) видео. Он решает задачу предсказания одного результата по анализу видеофрагмента (массива кадров).

Второй подход решает задачу предсказания одного результата на кадр. Такую покадровую обработку называют анализом плотного (dense) видео. Модели ML для работы с плотным видео востребованы там, где требуется уловить кратковременные события и проанализировать быстрые изменения сцен.

❗️Существующие модели глубокого анализа видео (например, 3D CNNs) достигли впечатляющих результатов при обработке разреженного видео. Однако их адаптация к задачам плотного видео сопряжена с рядом проблем.

В частности, эти модели менее эффективны при работе с избыточными кадрами, с трудом улавливают временные корреляции на больших интервалах и неоправданно дороги в развёртывании.

Чтобы решить эти проблемы, коллектив исследователей из Белфаста (Ирландия) разработал TDViT — модель трансформера для обработки плотного видео с блоками временнóго расширения.

Эксперименты с наборами данных ImageNet VID и YouTube VIS показали, что TDViT эффективно извлекает пространственно-временны́е представления и ослабляет негативный эффект временнóй избыточности. Также иерархическая структура блоков позволяет моделировать динамику на больших временных интервалах.

Код TDViT открыт и доступен на GitHub

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Всем привет! Я работаю в ИТ-компании «Криптонит», и наши тимлиды (думаю, как везде) часто дают технические задачи на собеседованиях.

Я долго их уговаривала приоткрыть завесу тайны и показать, какие именно. И наконец-то у меня получилось!

Мы сняли видео, где решаем задачи с собеседований во frontend-разработку «Криптонита». Помог это сделать Василий Беляев, руководитель группы разработки интерфейсов.

?Смотрите ролик на YouTube-канале «Криптонита» — https://youtu.be/EhNF3Et5aDk. Он будет полезен для джунов и мидлов.

В видео разбираемся, что делать с задачей «Палиндром», «Поворот матрицы» и «Подсчёт элементов в списке». А в конце — бонус-решение, которое не требует кода. Обязательно досмотрите до конца!

Теги:
Всего голосов 6: ↑4 и ↓2+5
Комментарии0

Эль-76 — язык программирования высокого уровня, с которым мы хотим вас сегодня познакомить.

«Эль-76» был написан коллективом ИТМиВТ под руководством Владимира Пентковского, позже работавшего в Intel над серией процессоров Pentium.

Вместе со специалистами в области высокопроизводительных вычислений Всеволодом Сергеевичем Бурцевым и Борисом Бабаяном он принимал участие в создании серии супер-ЭВМ «Эльбрус» и уникального языка для неё.

Изначально этот язык называли «автокодом», поскольку для «Эльбрусов» он был нативным, а все остальные программы транслировались в него. Но по своей структуре «Эль-76» — типичный язык высокого уровня, созданный в соответствии с парадигмой структурного программирования. Он поддерживал использование условных переходов, создание циклов, обработку исключений и встроенные типы данных.

Последнее было крайне важно. Явное определение типа переменных упростило поиск участков кода, где их обработка выполнялась некорректно. Проще говоря, компьютер больше не пытался внезапно разделить число на символ или логический ноль.

Написание программ на «Эль-76» облегчалось использованием русскоязычных команд: «начало», «если», «иначе», «конец» и другими. На «Эль-76» были написаны программы для самых ответственных задач, включая обеспечения работы Центра управления полётами.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии1

Что такое нейропроцессор (NPU)? Это специализированный чип, выполняющий типичные для нейросетей вычисления быстрее, чем это делает процессор универсальной архитектуры. В основном это операции с векторами и матрицами. Другое название этих чипов — «ИИ-ускорители», или AI-сопроцессоры.

Одним из первых серийно выпускаемых NPU был Ni1000, разработанный Nestor совместно с Intel. Он появился на рынке в 1993 году и применялся для оптического распознавания символов (OCR).

В смартфонах NPU массово появились в 2015 году. Благодаря им стали возможны такие технологии, как разблокировка по лицу, автоматическое шумоподавление, замена фона во время видеозвонка, добавление масок и прочих AR-объектов на лету, поиск по картинке, мгновенный перевод надписей по наведению камеры, распознавание не только текста, но и любых объектов.

На уровне ЦОД нейропроцесоры выполняют фоновый анализ данных. Они выявляют фишинговые действия и нежелательный контент, создают автоматические субтитры, группируют сходные изображения и ускоряют многие рутинные операции.

Исходя из конкретных задач, ИИ-ускорители могут быть выполнены на базе программируемых вентильных матриц (FPGA), интегральных схем специального назначения (ASIC), или графических процессоров (GPU).

Популярны и гибридные схемы. Например, самый быстрый суперкомпьютер в мире Frontier использует для ускорения обработки задач искусственного интеллекта как наборы инструкций процессоров AMD Epyc, так и специализированные ускорители AMD Instinct MI250X.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

РЕФАЛ — метаязык, опередивший своё время.

В 1966 году советский кибернетик Валентин Фёдорович Турчин занялся разработкой уникального метаязыка РЕФАЛ (рекурсивных функций алгоритмический). Изначально РЕФАЛ предназначался для различных символьных преобразований, семантического и синтаксического анализа текста.

Однако уже к моменту первой реализации в 1968 году РЕФАЛ превратился в функциональный язык программирования, во многом опередивший своё время.

Уже тогда с помощью РЕФАЛ можно было переводить тексты, генерировать стихи, анализировать числовые последовательности и переписывать программы с одного языка на другой.

РЕФАЛ был основан на нормальных алгоритмах Маркова — сочетании набора символов какого-либо языка (алфавита) и алгоритмических правил их подстановки.

Как писал В. Ф. Турчин: «РЕФАЛ соединяет в себе математическую простоту с практической ориентацией на написание больших и сложных программ».

Исполнение программы на РЕФАЛ происходит путём компилирования её исходного кода в промежуточную программу для абстрактной машины, которая затем интерпретируется.

Современный диалект РЕФАЛ+ появился в 1990 году. Он применяется главным образом для анализа текстов, оптимизации программ (суперкомпиляции) и решения задач в области искусственного интеллекта. На базе популярной платформы Eclipse создана интегрированная среда разработки для РЕФАЛ+.

Теги:
Всего голосов 6: ↑6 и ↓0+8
Комментарии0

spGEMM (Sparse GEneral Matrix-Matrix multiplication) — операция умножения над разреженными матрицами.

Для хранения разреженных матриц используются три основных формата:
— список координат (COO);
— сжатое хранение строкой (CSR);
— сжатое хранение столбцом (CSC).

Каждый из них имеет своим преимущества и недостатки, поэтому есть различные варианты spGEMM, использующие тот или иной формат. Например, они реализованы в библиотеках cuSPARSE, MKL и Kokkos. Во фреймворке PyTorch операции над разреженными матрицами находятся в стадии разработки.

В новой архитектуре Ampere появилась аппаратная поддержка операций с разреженными матрицами, имеющими специальную структуру (semi-structured sparse matrix). Для Ampere Nvidia разработала оптимизированный подход к использованию spGEMM и добавила поддержку редуцирования нейросетей в библиотеку APEX (A PyTorch Extension).

Новый подход Nvidia позволяет получать разреженные нейросети без существенной потери в качественных метриках. Он уменьшает объём обрабатываемых данных и способствует более эффективному балансу нагрузки в параллельных вычислениях.

Теги:
Всего голосов 4: ↑4 и ↓0+5
Комментарии0

В этом посте знакомимся сразу с тремя языками программирования XX века: Алгол, Алмир и Аналитик.

В 1958 году Международная федерация по обработке информации (IFIP) разработала процедурный язык программирования Алгол. В Европе он составил конкуренцию американскому Фортрану, а в СССР стал основой для написания собственного высокоуровневого языка.

Такой язык с кириллическими операторами («ЕСЛИ», «ТО») и указателями формата вывода («МАССИВ», «ГРАФИК») был создан к 1965-му году коллективом под руководством В. М. Глушкова — советского академика, спроектировавшего первую в СССР персональную ЭВМ «МИР-1».

Язык получил название «АЛМИР-65» и применялся для описания инженерно-технических расчётов, производимых на «МИР-1». Он был удобен тем, что позволял использовать русскоязычные слова и привычные обозначения математических функций: EXP(X), SIN(X), ARCCOS(X), LN(X) и др.

Для следующей ЭВМ «МИР-2» было разработано расширение языка АЛМИР-65 под названием «Аналитик». В нём появились аналитические преобразования (откуда и название), а также абстрактные типы данных и сложные арифметические выражения с условиями.

Интересно, что для ввода данных в «Аналитике» использовался объединённый алфавит из 31 кириллической и 14 латинских заглавных букв. Это позволило сделать сравнительно компактную клавиатуру, в которой буквы занимали всего 45 клавиш.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

SALMONN — это новая мультимодальная модель машинного обучения с открытым исходным кодом, предназначенная для обработки аудиоданных любого типа: речи, музыки и различных звуков.

В основе SALMONN лежит интеграция большой языковой модели (LLM) с двумя энкодерами: Whisper для восприятия речи и BEATs для остальных звуков. Между собой аудиоэнкодеры и LLM объединяются через модуль преобразования данных Q-Former.

Благодаря такому сочетанию SALMONN может выполнять широкий спектр задач интеллектуальной обработки аудио, начиная с распознавания речи и заканчивая генерацией историй на основе услышанных звуков. Достаточно дать ей на вход аудиофрагмент и текстовое описание задачи.

В качестве LLM у SALMONN используется модель Vicuna, созданная на основе модели LLaMA с 13 миллиардами параметров и обученная на лучших диалогах с ChatGPT. Также авторы SALMONN выпустили версию своей модели на основе Vicuna с 7 миллиардами параметров. Первая требует для запуска видеокарту с 80 Гб памяти, а вторая — «всего» с 40 гигабайтами.

За счёт квантования модель можно ужать до 24 Гб, тогда получится запустить её даже на игровой видеокарте, а не только на профессиональном ускорителе.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

РЕФАЛ — метаязык, опередивший своё время. Продолжаем рассказывать про языки программирования XX века.

В 1966 году советский кибернетик Валентин Фёдорович Турчин занялся разработкой уникального метаязыка РЕФАЛ (рекурсивных функций алгоритмический). Изначально РЕФАЛ предназначался для различных символьных преобразований, семантического и синтаксического анализа текста.

Однако уже к моменту первой реализации в 1968 году РЕФАЛ превратился в функциональный язык программирования, во многом опередивший своё время.

Уже тогда с помощью РЕФАЛ можно было переводить тексты, генерировать стихи, анализировать числовые последовательности и переписывать программы с одного языка на другой.

РЕФАЛ был основан на нормальных алгоритмах Маркова — сочетании набора символов какого-либо языка (алфавита) и алгоритмических правил их подстановки.

Как писал В. Ф. Турчин: «РЕФАЛ соединяет в себе математическую простоту с практической ориентацией на написание больших и сложных программ».

Исполнение программы на РЕФАЛ происходит путём компилирования её исходного кода в промежуточную программу для абстрактной машины, которая затем интерпретируется.

Современный диалект РЕФАЛ+ появился в 1990 году. Он применяется главным образом для анализа текстов, оптимизации программ (суперкомпиляции) и решения задач в области искусственного интеллекта. На базе популярной платформы Eclipse создана интегрированная среда разработки для РЕФАЛ+.

Теги:
Всего голосов 6: ↑5 и ↓1+4
Комментарии0

Специалисты-исследователи лабораторий криптографии и телекоммуникаций Анастасия Чичаева и Роман Самохвалов представили свой доклад «Сегменты криптографической защиты в сетях ПРТС 5-го поколения» на конференции #РусКрипто

В нём они рассматривают подлежащие защите сегменты ПРТС, используемые в них криптографические механизмы и вопросы внедрения их отечественных аналогов.

Особое внимание уделяется стойкости алгоритмов обеспечения конфиденциальности и целостности трафика (NEA, NIA), а также возможностям перехода на российские стандартизованные криптографические механизмы (IPSec, IKEv2, TLS).

Теги:
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

На основе стандартов 3GPP разработан отечественный механизм аутентифицированной выработки общего ключа в сетях 5G, содержащий схему ECIES и протокол 5G-AKA-GOST.

Об этом на #РусКрипто рассказали криптографы компании «Криптонит» Степан Давыдов, Кирилл Царегородцев и Юрий Шкуратов.

В отличие от международных стандартов, протокол 5G-AKA-GOST обеспечивает приватность абонентов за счёт использования двусторонних случайностей. Обоснована стойкость разработанного механизма, рассмотрены вопросы внедрения в отечественный сегмент ПРТС и гармонизации с международными стандартами.

Теги:
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Схема электронной подписи «Шиповник» на основе кодов, исправляющих ошибки — один из кандидатов на новый российский стандарт постквантовых механизмов.

Наши специалисты-исследователи лаборатории криптографии Виктория Высоцкая и Диана Дас провели углублённый анализ стойкости этой схемы. Об этом они рассказали на конференции РусКрипто'24.

В работе приведена классификация атак на «Шиповник» с использованием алгоритмов, решающих задачи поиска прообраза и второго прообраза внутренней троичной хэш-функции, а также поиска коллизии хэш-функции Стрибог. Анализ коллег показал, что текущий набор параметров позволяет обеспечить стойкость схемы к рассмотренному множеству атак.

Теги:
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Что такое автокодировщик?

Автокодировщик, автоматический ассоциатор или автоэнкодер (autoencoder) — это архитектура искусственной нейронной сети, состоящая из двух частей: энкодера и декодера.

Энкодер анализирует входные данные и сжимает их для представления в скрытом пространстве (latent space). При этом сохраняются связи между автоматически выделенными признаками входных данных.

Декодер выполняет реконструкцию данных из сжатого состояния, то есть производит обратную операцию. Такая обработка данных помогает выявлять в них скрытые зависимости и экономить аппаратные ресурсы. В сжатом состоянии данные могут занимать в сотни и даже в тысячи раз меньший объём памяти.

Для обучения автокодировщика не требуется предварительно размеченная обучающая выборка, поэтому он рассматривается как разновидность модели машинного обучения без учителя. Во время обучения обе части автокодировщика взаимодействуют друг с другом по типу обратной связи. Благодаря этому энкодер учится выделять ключевые параметры и отсеивать информационный шум, а декодер — точнее восстанавливать исходные данные из их сжатого отображения.

Автокодировщики хороши для обнаружения статистических аномалий, поэтому широко распространены в системах антифрода, поведенческого анализа и фильтрации сетевого трафика. Также они нашли применение в технологиях фильтрации шумов, генерации новых данных и других методах интеллект

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Рассказываем про программирующую программу Ершова, которая оказала сильное влияние на школу информатики.

Работу над первым в мире самодостаточным транслятором ПП-1 Алексея Ляпунова продолжил его ученик Андрей Петрович Ершов.

В 1958 году Ершов написал монографию «Программирующая программа для быстродействующей электронной счётной машины». Она повлияла не только на отечественную, но и на западную школу информатики.

Будущий американский мэтр системного программирования Дональд Кнут изучал монографию Ершова на русском языке, когда сам был студентом.

Вскоре монография была издана за рубежом на разных языках. Её высоко оценили Джон Бэкус, Грейс Хоппер, Джон Маккарти и другие пионеры в области теоретического программирования. Фактически это был первый академический труд по автоматизации процесса создания программ и их переноса на разные архитектуры.

Монография описывала транслятор для БЭСМ и «Стрелы», в котором были реализованы новаторские подходы.

Ершов разработал принцип адресной кодировки объектов и описал «способ бесперебойного поиска информации по ключу с помощью функции расстановки». Сегодня мы чаще называем её функцией хеширования, применяя, в частности, для индексации массивов данных.

Андрей Петрович исследовал статистические свойства таких функций, а затем использовал их для оптимизации кода путём сокращения числа команд и экономии памяти. Позже под руководством Ершова были созданы целые системы оптимизации «АЛЬФА» и «БЕТА», предопределившие методологию оптимизирующей трансляции.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Ближайшие события

Что такое сшиваемые нейронные сети? Разбираемся вместе с коллегами из лаборатории больших данных компании «Криптонит».

На сегодня созданы целые семейства предварительно обученных моделей с различными архитектурами (таких как ResNet/DeiT), в каждом из которых есть версии разного масштаба (например, DeiT-Ti/S/B).

Но ни одна из готовых моделей не обладает способностью динамически адаптироваться к ограничениям вычислительных ресурсов, поскольку содержит фиксированный граф и не может быть переконфигурирована.

Устранить этот недостаток призвана концепция сшиваемых нейронных сетей (Stitchable Neural Networks), которая была реализована в виде фреймворка глубокого обучения SN-Net. Она позволяет сочетать множество архитектур нейросетей и достигать компромисса между смещением и дисперсией, одновременно задействуя различные типы предварительно обученных моделей, которые авторы называют «якорями».

SN-Net разделяет якоря на слои, а затем объединяет их с помощью дополнительных сшивающих слоёв, отображающих связи от одного якоря к другому. Во время работы SN-Net может мгновенно адаптироваться к изменяющимся ограничениям ресурсов путём переключения точек сшивки.

Эксперименты по классификации объектов на основе набора данных ImageNet демонстрируют, что SN-Net может достигать производительности на уровне или даже выше, чем индивидуально обученные модели, поддерживая при этом различные сценарии развёртывания.

Подробнее о SN-Net можно почитать здесь.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

COBOL (COmmon Business Oriented Language) — один из первых языков программирования, инструкции которого записывались английскими словами (OPEN, SELECT, ASSIGN…) и были легко читаемы. Он был создан в 1959 году комитетом CODASYL по разработке универсального языка программирования для коммерческих систем.

Парадокс в том, что сейчас это умирающий язык, от которого, тем не менее, зависят ключевые бизнес-процессы современного общества.

Написанные на COBOL программы работают исключительно быстро. Уже в семидесятых годах они могли обрабатывать миллионы транзакций в час. Именно благодаря COBOL компьютеры стали популярны в бизнесе и государственном секторе.

В США, Канаде, Мексике и десятках стран поменьше на COBOL до сих пор работают многие высоконагруженные бэкенды. Это сотни миллиардов строк кода, который сегодня уже мало кто может поддерживать.

Ветераны COBOL давно ушли на пенсию, а новые кадры нанимать всё сложнее. Если на заре программирования COBOL привлекал простотой синтаксиса, то сейчас у него относительно высокий порог входа.

С 2020 года IBM разрабатывает помощник на основе искусственного интеллекта, который помог бы переписать код с COBOL на Java. Проблема в том, что даже с ним остаётся колоссальное количество ручной работы и требуются многочисленные проверки.

Код на COBOL «вылизывали» полвека, и его можно считать образцом стабильности. Как поведут себя переписанные программы в столь ответственных областях — трудно предугадать, а цена ошибки слишком велика.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

В своих разработках «Криптонит» активно использует искусственные нейронные сети. Поэтому мы решили расшифровать связанные с этой сферой термины и их практический смысл. Все материалы из рубрики "Нейрословарь" подготовлены при помощи наших экспертов из лаборатории больших данных.

MPNet — это гибридная языковая модель, разработанная в 2020 году компанией Microsoft и китайским Университетом науки и технологий в Нанкине. Её название расшифровывается как Masked and Permuted Pre-training for Language Understanding (маскированное и перестановочное предварительное обучение для понимания языка).

Необходимость в разработке MPNet была продиктована тем, что в современных языковых моделях используются два основных подхода к обработке лексем: это масочное и пермутационное моделирование языка (MLM и PLM соответственно). PLM лучше учитывает зависимости между лексемами на выходе, а MLM эффективнее выполняет предварительное обучение и тонкую настройку согласованности.

MPNet объединяет сильные стороны MLM и PLM. Перестановки учитывают только локальный контекст (соседние слова) и ничего не знают о положении предсказываемого слова (или токена) в предложении, а при маскировании модель видит всё предложение целиком, кроме замаскированного слова. Она знает глобальный контекст предложения и положение слова, но плохо учитывает локальный контекст.

#нейрословарь

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Знаете, какой язык высокого уровня был одним из первых и дошёл до наших дней? Fortran — про него новый выпуск истории языков программирования.

Название Fortran является акронимом от FORmula TRANslating System — система трансляции формул. Он был разработан сотрудником IBM Джоном Бэкусом в 1954-1957 годах.

Ключевая идея Бэкуса была в том, что последовательности вычислений нужно записывать не в машинных кодах, а как вызовы типовых подпрограмм. При этом сами подпрограммы появились только в FORTRAN II вместе с поддержкой процедурного программирования в 1958 году. Для этого Бэкус и трое его коллег из IBM разработали символическую систему записи математических расчётов, сделав акцент на циклические выражения.

Другие важные особенности Fortran — встроенная поддержка параллельных вычислений и векторных операций. Поэтому Fortran до сих пор актуален, особенно в сфере высокопроизводительных вычислений (HPC). В частности, тесты для рейтинга TOP 500 самых быстрых суперкомпьютеров мира написаны на Fortran.

Ещё одна причина сохраняющейся актуальности языка — простота операций над большими массивами и компиляция в эффективный двоичный код. На Fortran пишут библиотеки математических функций (см. IMSL Fortran Numerical Libraries), ПО для решения инженерных и научных задач, специфический софт для Big Data и бизнес-аналитики.

Актуальная сегодня версия Fortran стандартизирована в 2018 году. Следующий стандарт Fortran 202x находится в разработке.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Ансамблевое обучение (ensemble learning) — это объединение разных моделей машинного обучения для более эффективного решения задачи классификации или регрессии. Идея комбинировать простые алгоритмы для взаимного нивелирования их ошибок возникла в 90-е годы XX века.

К настоящему моменту разработан целый ряд методов ансамблевого обучения, такие как бэггинг (bagging), стэкинг (stacking), блендинг (blending) и бустинг (boosting).

У каждого из них свои особенности, но базовый принцип один и тот же: сочетание разных алгоритмов позволяет улучшить модель предсказания, уменьшив смещение и дисперсию, а значит — снизить количество ложных срабатываний.

Ensemble Learning широко применяется в таких современных областях, как компьютерное зрение, распознавание речи, финансовая аналитика, биоинформатика и информационная безопасность. Например, ансамбль из алгоритмов логистической регрессии, дерева решений и метода ближайших соседей точнее классифицирует фишинговые письма, чем любой из них по отдельности.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Что такое «программирующая программа»?

Сегодня исходники программ выглядят как текст на английском языке со специфическими конструкциями, но так было не всегда. Первые программы писали в машинных кодах, и это было невероятно сложно. Требовалось детально знать архитектуру конкретной ЭВМ и пошагово представлять исполнение команд.

Переход от машинных кодов к языкам высокого уровня стал возможен благодаря разработке методов структурного представления алгоритмов и автоматизации самого процесса написания программ.

Одним из основоположников отечественной кибернетики и теоретического программирования был математик Алексей Андреевич Ляпунов. Ещё в начале пятидесятых годов прошлого века он предложил операторный метод описания программ и разработал теорию синтаксических программных структур.

Под руководством Алексея Ляпунова в 1954 году в Институте математики АН СССР был написан первый советский транслятор — ПП-1, или «программирующая программа номер 1». Она вызвала большой интерес со стороны высшего руководства страны и получила статус приоритетной разработки.

Уже в 1956 году на её базе создали «ПП-2» первый в мире транслятор с загрузчиком, отладчиком и библиотекой основных процедур. Он использовался на засекреченной ЭВМ «Стрела», установленной в Вычислительном центре Минобороны СССР.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Информация

Сайт
kryptonite.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия