Перейти к содержимому
KAMOUniverse

Журнал изменений

Что нового.

Каждое усовершенствование платформы, как только она появится.

  1. · AIService

    Поворот голоса помощника SI для Alexa

    Программа голосового помощника (2026-10-27) P3-1, P3-5. POST **************** (внутренний, X-Internal-Auth): собственный разговор помощника участника через ту же синхронную оркестрацию, со стилем голоса (две короткие устные предложения, ничего клинического или секрета), нет инструментов PHI (EHR / пакеты здоровья никогда, и PHI-чувствительные инструменты в организациях PHI), рискованные звонки и вопросы типа «Скажите да или нет» (отправки, деньги, безопасность и устройства требуют голосового PIN-кода, прежде чем будет принято да), срок после который ход продолжает работать и поднимает SI_ASSISTANT_REPLY с телефоном push, 'переведите меня на <SI>' с собственной сессией этого SI (kamoai-service K5; приостановленные или выведенные из эксплуатации SI отклоняются), и 'отправить это на мой телефон'. Оркестрационные ловушки являются аддитивными: TurnOptions на handleMessageSyncDetailed, SyncTurn.held, фильтр инструмента на AssistantService.withTools, PlaneTool.phiSensitive из _meta плоскости инструмента.

  2. · EmailService

    Различные телефонные и голосовые каналы, зеркало голоса и SI_ASSISTANT_REPLY

    Программа голосового помощника (2026-10-27) С3-5, С4-1, С4-2, С4-4. - GET / PUT / API / уведомления / каналы и PUT **************** по-вид телефона / голоса выбор (БЕЛЛ всегда включен), часы молчания голоса (по умолчанию 21:00-08:00 зона членов), ежедневный лимит голоса (по умолчанию 10). - raise(): телефонный push уважает выбор PHONE; NotificationVoiceSender посылает проходящую карту после commit to IoTService /api/iot/internal/voice/notify (голосовые часы тишины, Kamo Не беспокоить, выполняемое событие календаря и капа держит его, если только не URGENT; RPM_ALERT и SI_AUTH_REQUEST никогда). - **************** и /read для 'спросить Kamo Universe что нового'. - SI_ASSISTANT_REPLY не принадлежит к приложению; перечислены после SI_AUTH_REQUEST.

  3. · SecurityService

    Прекращение работы СИ с ее состояния, подсчёты состояния, отсутствие удалений на /account

    - Статус прекращения СИ запускает жизненный цикл вывода СИ из эксплуатации после (остановка рейсов, телефонная линия, освобождение места и лицензии, удостоверение и отозванные сессии, переданные задачи, сохраненная история). Потребности MANAGE_AI_WORKFORCE как это делает Retire, плюс собственный статус MANAGE_MEMBER_SECURITY; SI никогда прекращает работу; выбор рабочей станции следует за ним. Другие состояния отказано в простых SI-словах; прерванному SI прямо говорится, что он не может вернуться. - Получить **************** **************** customers/status-counts: по одному сгруппированному запросу, ограниченному организацией. - POST члены-подписчики/статус (Terminate/Activate: только members.is_active, никогда пользователя; MANAGE_MEMBERS) и клиентов/статуса (Деактивировать/Активировать: только accounts.is_active; EDIT_ACCOUNTS или DELETE_ACCOUNTS). - members-subscribers?include=all списки прекращенных подписчиков для /account. - DELETE customers/{uid} предназначен только для операторов платформы (открыть окно god).

  4. · kamo-shared-library

    Выбор каналов по видам, голосовые тихие часы и ограничение, SI_ASSISTANT_REPLY, виды голосовой активности

    Программа Voice Assistant (2026-10-27) P3-5, P3-6, P4-1. Заявляет, что было применено вручную: member_notification_channels (член, вид, ТЕЛЕФОН|ГОЛОС, включено), **************** **************** **************** и IotActivityKind VOICE_ASSISTANT_TURN, VOICE_ALERT_SENT добавлены последними.

  5. · kamo-internal

    DNS записи псевдонима домена, псевдоним по умолчанию коллеги, настоящий адрес отправки как

    Настройки -> Электронная почта -> Домены -> Псевдонимы доменов: каждый домен показывает, является ли он готов или ожидает DNS, и диалоговое окно DNS-записи перечисляет MX, SPF и DKIM записи, которые ему нужны (из EmailService), каждая проверяется в режиме реального времени, с кнопками копирования. Составление как коллега теперь открывается на их псевдоним по умолчанию, то же правило следует собственный псевдоним по умолчанию члена (colleagueDefaultAlias). "Выходит как" на вкладке члена читает sendsAs сервера вместо того, чтобы гадать из первой копии псевдонима-домена, что было неправильно, когда ни один псевдоним-домен не по умолчанию

  6. · kamo-shared-library

    Заявление столбцов и таблиц связи голосового помощника (личные связи, последняя ошибка, PIN-коды, голосовые профили)

    Столбцы на iot_alexa_links (last_error_code/at, pending_grant_choice, owner_kind, owner_member_id, site_id, notifications_enabled) и таблицы iot_voice_org_settings, iot_voice_persons, iot_voice_pins, применяемые вручную от iot-service ****************, чтобы KamoInitializer смог воссоздать их.

  7. · MCPGatewayService

    Meetings_join_external, **************** meetings_cancel_external (TPEXTMEET)

    СИ присоединяется к внешнему совещанию (Zoom, Teams, Meet, Webex, GoTo, любому поставщику) по данным, предоставленным ему коллегой, теперь или в начале приглашения, по телефону. JOIN_MEETING (охранник идентичности держит его на непроверенных каналах), права VIEW_MEETINGS + ACCESS_VOIP (проверяется снова в kamoai-service с объединением запрашивающего), только на проверенных запрос (цитирование, собственный запуск, подтверждение, или линия встречи подписанного товарища по команде); никогда не на собственной СИ инициатива. Пароли и ключи никогда не возвращаются в модель. meetings_join точки за пределами ссылки здесь. Охранники: не раскрывающиеся (аудитория звонка - посторонние), не содержащие, фразы одобрения, возрожденные золотые.

  8. · kamo-internal

    Отчеты об ипотечном кредитовании доступны с любого экрана MLOS, открыты уже отфильтрованы

    - Ссылки на отчеты теперь могут предварительно заполнять параметры: **************** (дата диапазонов, списки с запятыми для многократного выбора). Только параметры, ссылка никогда не расширяет то, что видит пользователь. - ReportQuickLinks: меню Отчеты рабочего экрана. Он спрашивает сервер, какие отчеты член может запускаться (один раз на страницу) и предлагать только те, так что он ничего не отображает для участника, который не может открыть ни одного. - Размещено на панели инструментов Pipeline, страница HMDA LAR, Board, Documents, Capital &amp; Risk, Экраны подтверждения, ценообразования и управления; на странице кредита открывается каждый отчет (проверка статуса, сроки TRID, условия, документы, блокировки, события блокировки, заказы поставщиков, решения СИ); рыночные параметры связывают лицензирование и полная история конфигурации (панель готовности показывает только последние шесть). - Стрижка "Справедливое кредитование — скоро" Управления исчезла: Справедливое кредитование настоящий отчет теперь. - Ипотечное кредитование типа полки и иконки. Пары с kamo-shared-library 17a7a233 и SecurityService 6ce48d17.

  9. · kamo-internal

    Администраторы могут редактировать роль администратора, при этом ее право блокировки прикреплено к

    Роль администратора (полный доступ) была отображена как Защищенная и не могла быть открыта отправляет lockedRights (вызывающий имеет эту роль), роль открывается с ее редактируемыми правами и права показаны с замком и причиной, только для чтения. Предоставление/отзыв филиала теперь превалирует над принудительным и заблокированные строки, как это уже делал переключатель каждой строки. Модели безопасности роли остаются только для чтения.

  10. · KlusterServices

    Postfix узнает псевдонимы доменов из базы данных почты

    Псевдонимы доменов организации (Настройки -> Электронная почта -> Домены) обычно требуются virtual_alias_domains и отредактированная здесь карта. EmailService теперь хранит таблица alias_domains на почтовом сервере (KamoMailAliasDomains), и postfix читает ее: mysql-virtual-alias-domains.cf принимает домен, и **************** передает local@alias только local@target когда это реальный аккаунт или псевдоним, так что неизвестные имена отклоняются на RCPT. Добавка: статические домены и карта платформы kamouniverse.com остаются впереди таблица уже существует в реальном времени (создана вручную и с помощью EmailService на start); сопоставление, именующее отсутствующую таблицу, будет терпеть неудачу при каждом поиске, поэтому оно также mysql-init-configmap.yaml для новой базы данных.

  11. · SecurityService

    Участники, обладающие ролью администратора, могут редактировать его права

    PUT /api/security/roles/{id} маршрутизирует права роли Администратора через **************** ПЕРЕД любой другой записью так отказывается сохранить записи ничего. Только вызывающий, который имеет эту роль (или имеет открытое окно god) может; только CONFIGURE_SYSTEM Сохранение, которое отключило бы CONFIGURE_SYSTEM, является 400 по простой причине. Роль имеет значение carry lockedRights для такого вызывающего. Модели безопасности на роли остаются заблокированными.

  12. · kamo-shared-library

    Администраторы могут изменять права роли Администратор, никогда не отключая CONFIGURE_SYSTEM

    Роль администратора (полный доступ) хранится isAllowEditSecurity=false, так что никто не может изменить **************** является единственной дверью в: она принимает только org's role_admin_id роли и отказывается от любого сохранения (после нормализации уровня), которое оставляет право в Этот набор представляет собой CONFIGURE_SYSTEM плюс его предки: право, которое открывает Настройки> Essential и каждая роль писать, так что его владельцы всегда могут вернуться. SecurityRoleDTO.lockedRights сообщает редактору, какие коммутаторы прикреплены.

  13. · EmailService

    Псевдонимные домены получают и подписываются самостоятельно; по умолчанию коллега и самостоятельно

    Почтовый сервер теперь узнает псевдонимы доменов организации от EmailService вместо вручную отредактированная конфигурация postfix. KamoMailAliasDomains хранит таблицу alias_domains в база данных KamoMail MySQL (создана при запуске; postfix читает ее - см klusterservices mail/), маршрутизируя local@alias к local@target, где это реальный адрес добавить/удалить его синхронизацию, и запуск согласовать маршруты строк, которые передать его. Каждый псевдонимный домен, не являющийся хостом платформы, получает там ключ DKIM, и EmailSmtpService.sendAsMember подписывает почту пользователя с помощью существующего DkimSigner. У хостов платформы хранятся ключи rspamd, поэтому почта kamouniverse.com GET **************** перечисляет MX, SPF и DKIM регистрирует потребности домена, каждый из которых проверяется в режиме реального времени. Кроме того: - AliasView.sendsAs: адрес, под которым псевдоним по умолчанию отправляется (его копия на домене по умолчанию псевдонима организации, иначе сама) - вкладка настройки угадала. - /sendable отмечает первичный почтовый ящик коллеги (isPrimary), так что составление как их можно открыть под их псевдонимом по умолчанию. - Пользователь может установить свой собственный отправитель по умолчанию без MANAGE_EMAIL_ACCOUNTS.

  14. · SecurityService

    Сотрудник по кредитам и инвесторы, отбирающие отчеты по ипотечному кредитованию, проверенные на Hibernate флота

    - mortgageLoanOfficers: члены, назначенные в качестве кредитного сотрудника по крайней мере на одном из сделки организации (уже, чем каждый член, так что выборщик перечисляет имена, которые кредитов). - mortgageInvestors: имена инвесторов на снимках ценообразования организации. **************** запускает все восемнадцать отчетов (kamo-shared-library 17a7a233) на Hibernate 6.2 ЭТОГО сервиса без базы данных: каждое заявление отчёта компилируется по отношению к реальному сопоставлению, по умолчанию и с каждым набор параметров, и запрос организации на кредит отвечает на синтетический кредит, так что библиотека построена на базе 6.5, и Java CI не работает тестов, так что это единственное место, где несовместимость 6.2 будет показана до того, как член открыл доклад.

  15. · kamo-shared-library

    Система ипотечного кредитования, содержащая 18 отчетов о ревизии, соблюдении требований и операциях

    У компании &quot; Report Studio &quot; не было отчетов об ипотечных кредитах; у министерства жилищного строительства был один реальный отчет о соблюдении HMDA LAR page) и набор рабочих экранов, которые не могли фильтровать, экспортировать или планировать. Это добавляет папку ипотечного кредитования и восемнадцать отчетов, все из которых имеют организационную сферу охвата, все защищенные на View Mortgage Pipeline, все с проборкой, сохраненные представления, планирование и экспорт CSV/Excel/PDF: - Регулирование: обзор ЛААР УМВБ, проверки УМВБ, справедливые результаты кредитования (проверка в разбивке по группам заявителей, флаг &quot; четыре пятых &quot; ), рабочий лист отчета об ипотечном кредитовании, ТРИД Сроки раскрытия информации (общие или конкретные рабочие дни, правило о почтовых ящиках), неблагоприятные Своевременность действий (Рег. B 30 дней) - Трубопроводы и производство: старение трубопроводов, производство и время цикла, выпадение и Пулл-Трус - Блокировка стола: Срок действия блокировки, расширения блокировки, реблокировки и перерывы - Подписание и операции: условия старения и отказы, требования к документам, Обработка заказов поставщиков - Аудит: аудит изменения статуса займа, аудит решения и отмены СИ, лицензирование Соответствие, аудит изменения конфигурации Фреймворк: ReportFolder.MORTGAGE и ReportRowFilter — применен фильтр члена к завершенным строкам, с теми же значениями операторов, что и в SQL-пути, для отчетов столбцы которого рассчитываются (дни в состоянии, результаты по срокам). MortgageReportSupport сохраняет для каждого займа считанную скалярную проекцию, ограниченную организация (LoanFile -> AppMortgage -> организация), поскольку большинство ипотечных таблиц не имеют столбца организации, а загрузки сущностей вызывают запрос на каждого дочернего объекта. В справочном тексте каждого отчета говорится то, чего он не видит: нет детализированных сборов (нет проверка), отсутствие записи о намерении продолжать, уведомления, направленные за пределы системы, незаполненный LAR

  16. · kamo-shared-library

    Субъект AiExternalMeeting для присоединения СИ к совещаниям третьих сторон (TPEXTMEET)

    Объявляет ai_external_meeting (kamoai-service **************** применено), так что KamoInitializer может воссоздать его.

  17. · AIService

    GPT-Live сеансы через реле (LIVE_AUDIO билеты), пробуемые с живой сессией

    TPGPTLIVE (владелец 2026-10-27, пилот). Основной WebSocket GPT-Live принимает только ключ проекта, так что LIVE_AUDIO билет маршрутизирует заказ REALTIME_AUDIO организации, сохраняет ее живые модели и ретранслирует wss://…/v1/live/sessions с добавленным ключом на стороне сервера (измеряется в секунду как REALTIME_AUDIO). Секрет клиента в режиме реального времени никогда не создается для реальной модели; REALTIME_AUDIO зонд реальной модели открывает сеанс GPT-Live (session.start -> session.started -> close) принимает <base>/live/sessions, путь плагина LiveKit. Name hint gpt-live-* = REALTIME_AUDIO; известная модель gpt-live-1.

  18. · SecurityService

    Запустить десять прав Ипотечного калькулятора из CALC_SIMPLE

    Тот, кто может открыть калькулятор сегодня находит калькулятор -> Ипотечный на загрузку, которая добавляет CALC_MORTGAGE_* (shared-lib 1ae01ae8); затем каждая из них предоставляется или отзывается самостоятельно.

  19. · kamo-internal

    Псевдонимы доменов в Настройках и на вкладке «Папки пользователей»

    Настройки -> Электронная почта -> Домены получает карту Псевдонимы доменов: добавить проверенный домен, удалить один, выбрать по умолчанию или нет. Вкладка Электронная почта и Папки теперь показывает адреса основных почтовых ящиков на каждом домене псевдонима (Dylan@kamocrm.com также является Dylan@kamouniverse.com), и добавить-псевдоним форма получает домен пикер, так что псевдоним может идти прямо на псевдоним домена. Прокси больше не ограничивает псевдонимы одним доменом по умолчанию организации; EmailService уже отказывает домену, который не принадлежит организации.

  20. · EmailService

    Управление псевдонимными доменами организации и разрешение псевдонимов на них

    org_alias_domains когда-либо существовало только с помощью написанного от руки SQL /api/email/alias-domains перечисляет их (любой член организации) и добавляет, удаляет и устанавливает значение по умолчанию (MANAGE_EMAIL_ACCOUNTS). Домен может быть добавлен только org доказал, что он держит его, и никогда не один из его почтовых ящиков уже живут на. KamoMail createAlias теперь принимает псевдоним на домене псевдонима (sales@kamouniverse.com): в домене нет строки virtual_domains, поэтому псевдоним хранится в домене почтового ящика назначения; postfix ищет псевдонимы только источник и уже перечисляет домен в virtual_alias_domains. Также исправляет AliasResponseMemberIsTextTest, который был нарушен предыдущей фиксацией добавление aliasDomainAddresses в AliasView.

  21. · kamo-internal

    Десять Ипотечные калькуляторы в разделе Калькулятор → Ипотечный

    Ежемесячная оплата, Доступность покупки, Сумма займа от оплаты, Первоначальная оплата, Затраты на закрытие Оценочные, наличные на закрытие, DTI, LTV (с CLTV и HCLTV), Дополнительная выплата / досрочная выплата и График амортизации, каждый режим калькулятора в своем собственном окне инструмента, построенный из одного общего набора (mortgageUi.tsx): результаты подсчета, цветные пончики, стержни, датчики и балансовые кривые, деньги и процентных полей с ползунками, вводные данные сохраняются в окне, уменьшение движения соблюдается. Каждая из них контролируется своим собственным правом CALC_MORTGAGE_* (shared-lib 1ae01ae8, ids 650-659) их под Ипотечным родителем; член, держащий только один, получает этот калькулятор на своем месте живёт в lib/mortgage/calculatorMath.ts наверху payment.ts/affordability.ts, с тестами калькулятор тур приобретает Ипотечный шаг; копия в словаре (aa98d5f2).

  22. · kamo-shared-library

    Десять Ипотечный калькулятор прав под Калькулятор (650-659)

    CALC_MORTGAGE_PAYMENT, _AFFORDABILITY, _LOAN_FROM_PAYMENT, _DOWN_PAYNMENT, _CLOING_COSTS, _CASH_TO_CLOSE, _DTI, _LTV, _EXTRA_PAYMENT и _AMORTIZATION: по одному на каждый Ипотечный калькулятор, ServiceType.CALCULATOR наряду с девятью существующими режимами, каждый из которых является автономным корнем. RoleRightHierarchyTest: значения 403 -> 413, автономный 79 -> 89, корни 124 -> 134.

  23. · KlusterServices

    Идентификация каждого участника встречи является идентичностью его собственной проверенной сессии (mod_kamo_presence_identity)

    TPMEETAUTH (заказ владельца 2026-10-26): ухо SI читает, кто каждая конечная точка от его идентичности присутствия. Сток presence_identity снимает идентичность клиента свой <identity> только для сеансов с токенами, так что анонимный guest.meet.Meet или Нога Джигаси может быть подделана. Этот модуль MUC снимает с каждого клиента идентичность и записывает только контекст JWT сессии (подписывает его коляска) от собственного члена ***; гости переносят guest-<hex>) Просоды под (поддельный идентификатор удален, идентификатор токена записан). Применено 2026-10-27 04:32Z без прямой конференции (jicofo статистика: 0 конференций, 0 участники); Jicofo и Jigasi восстановлены, гости получают жетоны.

  24. · MCPGatewayService

    Во время встречи, собственный спикер линии решает авторитет (подписанный начальник приказывает, товарищ по команде спрашивает, гостем является любой)

    TPMEETAUTH (заказ владельца 2026-10-26). kamoai-voice именует линию встречи a ответы на вызовы (X-Kamo-Meeting-Turn, никогда не модель); MeetingTurns спрашивает kamoai-service, который это сказал, из собственного потока этой конечной точки и проверил Идентификация: - СУПЕРВИЗОР (подписанный, или подтвержденный гостем): их заказ, номер союз неподчинения (orderRef meet:<turn> или auth:<id>), без всплывающих окон; - TEAM_MEMBER: аутентифицирована, защита идентичности позволяет СИ действовать со своими Только СОБСТВЕННЫЕ права; - NONE / непрочитанное / не соответствует потоку оратора: любой уровень. Порядки соблюдаются по строкам, никогда не под ключом хода, так что один оратор никогда не переносится в следующий. identity_request_confirmation в встрече предназначен для диспетчер линии (about=meet-turn:<turn>). Тесты: ToolCallPipelineMeetingTest (6), IdentityPackTest (+1); полный набор 2013 зеленый.

  25. · SecurityService

    Линия встречи, о которой сообщил зарегистрированный супервайзер, является приказом, на который может откликнуться Плоскость Инструмента (meet:<turn id>)

    TPMEETAUTH (заказ владельца 2026-10-26): в Kamo Meet входящего супервайзера запрос является их прямым приказом (Нет союза Неподчинения) проверяет линию через атрибуцию оратора kamoai-service (каждый микрофон участника) и цитирует его как meet:<turn id>.

  26. · kamo-internal

    Показывать адреса псевдонимов в доменах псевдонимов организации

    Под каждым псевдонимом на вкладке Электронная почта и папка члена, перечислите тот же псевдоним на org's alias domains, и под чипом отправителя по умолчанию, адрес, который он выходит как.

  27. · EmailService

    Псевдоним работает на каждом домене псевдонима, как основной почтовый ящик

    Псевдонимные домены организации (org_alias_domains) уже зеркально отображают основной домен участника почтовый ящик в составитель (erik@kamocrm.com также предлагается как erik@kamouniverse.com) но никогда их псевдонимы, так eric.white@kamocrm.com не мог отправить как eric.white@kamouniverse.com - хотя карта псевдонима платформы postfix уже существует доставляет этот адрес псевдониму. Каждый псевдоним теперь получает одни и те же зеркальные строки в /sendable, которые читает canSendAs, так что копия псевдонима по умолчанию на псевдониме по умолчанию организации домен принимает значение по умолчанию, как и основной домен возвращает aliasDomainAddresses, чтобы Settings мог их показать.

  28. · MCPGatewayService

    Защита от олицетворения — непроверенный разговор получает только то, что кто-то может попросить, пока участник не подтвердит в Kamo

    Владелец 2026-10-26 (TPCALLTOOLS B): кто-то, кто только ЗАЯВЛЯЕТ, что является членом, начальник или кто-то, обладающий властью, не должен заставлять СИ делать что-либо вредоносным или основанным на этом утверждении, даже в рамках собственных прав СИ; принудительное со стороны сервера. IdentityGuard (новый фасоль, один конструктор; подключен сеттером): для записи SI в запуске на канале, который не доказывает никого (звонок, встреча, текст, недоказанный электронная почта, веб-/социальный чат, последующие действия; /auth-requests/identity), без постоянного подтверждения, командный заказ, проверено onRequestOf или человеческое одобрение, только записи на уровне любого проходят (внутренние сообщения, новые записи, задачи, заметки, заказы, собственное ведение бухгалтерии) и ответы на собственный ответчик разговора без вложений. Все остальное отвечает IDENTITY_UNVERIFIED (проверено DENIED) наименование identity_request_confirmation. Неудачный поиск удерживает охраняемые записи. identity_request_confirmation отвечает на id запроса (живой вызов ожидает одобренный ответ означает, что запуск подтвержден, и OrderDelegation снимает свой сразу же оставил 'no order' (подтверждением является тогда порядок выполнения, auth:<id>, Отсутствие прав профсоюзов на неподчинение).

  29. · kamo-internal

    Выбор псевдонима в качестве отправителя по умолчанию

    Вкладка Электронная почта и Папки получает столбец Отправитель по умолчанию на псевдонимах table: установить один псевдоним по умолчанию или вернуть его в основную папку. Композитор открывает свое поле От этого псевдонима, где бы оно ни находилось в ином случае открыты в основной папке пользователя: новое сообщение, и новое, ответ и совместный, дополнительный или коллегиальный почтовый ящик - это почтовый ящик, который псевдоним сохраняет идентичность отправки основного пользователя, а также идентичность отправки и шаблон подписи, как это уже делал выбранный псевдоним.

  30. · EmailService

    По умолчанию пользователь может отправлять сообщения из псевдонима

    PUT **************** выбирает, в каком файле находится псевдоним для основной папки пользователя (null очищает её). Максимум один псевдоним на пользователя carries is_default; столбец уже существовал и никогда не устанавливался. /sendable и /from-addresses теперь сообщают isDefault на строках псевдонимов, что композитор открывает свое поле От.

Ваша вселенная ждет.

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

Бесплатно навсегда — не требуется кредитная карта