Hacker News Digest

Тег: #akamai

Постов: 3

Among European Companies That Use a CDN, Nearly 9 in 10 Use Cloudflare (ciphercue.com)

В Европе почти девять из десяти компаний, использующих CDN, выбрали Cloudflare: из 44 143 компаний с обнаруженным CDN 39 547 (89,6%) работают за его сервисом. Это выше среднего по вебу (84,1% по W3Techs), что указывает на особенно высокую концентрацию в регионе. На втором месте Amazon с 3 112 компаниями, но часть из них использует AWS как источник, а не CloudFront как фронтенд, поэтому Fastly (1 299 компаний) и Akamai (396) дают более чистую картину доли других чистых CDN-провайдеров.

Доля Cloudflare варьируется по странам: от 78,8% в Испании и Ирландии до 95,6% в Нидерландах. Великобритания лидирует по абсолютному числу — 15 846 компаний за Cloudflare, тогда как Германия, несмотря на крупный рынок, показывает наименьшую долю среди больших экономик — 81,4%. Такая концентрация создаёт системный риск: сбой у одного провайдера может вывести из строя большую часть рынка одновременно, как это уже случалось в глобальных инцидентах Cloudflare в 2025 году. Учёт ведётся по обнаруженным заголовкам (например, cf-ray), а компании могут учитываться у нескольких вендоров одновременно, если используютmulti-CDN setup.

by adulion • 08 сентября 2026 г. в 08:42 • 136 points

ОригиналHN

#akamai#amazon#aws#cdn#cf-ray#cloudflare#fastly

Комментарии (131)

Высокая доля Cloudflare в Европе обусловлена не только техническими преимуществами, но и корпоративной консервативностью, страхом ответственности и зависимостью от экосистемы — выбор часто мотивирован принципом «никто не был уволен за покупку Cloudflare». Европа 40 лет принимала американские технологии, и смена экосистемы требует десятилетий из-за поколенческой привычки. В Великобритании (17 тыс. сайтов) доля Cloudflare выше, чем во Франции (4 тыс.) и Германии (6 тыс.), что отражает культурную склонность к «cargo-culting» масштабных решений. Бесплатные DDoS-защиты воспринимаются как демпинг — Cloudflare теряет деньги, чтобы захватить рынок. Альтернативы: - Bunny.net — технически работоспособна, но незрелый API (один глобальный ключ с полными правами) и поддержка через Discord не внушают доверия корпоративным клиентам. - FRP — рабочая замена Cloudflare Tunnel для тех, кто хочет избежать зависимости. - CDN77 — используется лишь для раздачи статики, как узкоспециализированное решение. - Не обязательно регистрировать домен у Cloudflare — достаточно указать их DNS-серверы, чтобы снизить привязанность к экосистеме. - Для малого бизнеса Cloudflare дешевле Google Cloud, так как не требует платного балансировщика для хостинга статики. Споры: - $200/мес за CDN и DDoS-защиту — неприемлемая трата для большинства сайтов, где защиту можно настроить через rate-limiting на веб-сервере. - Cloudflare сравнивают с LG TV: постоянное слушание, но использование продолжается, несмотря на известные риски слежки NSA более десяти лет. Европа не развивает собственные решения не из-за отсутствия возможностей, а из-за отсутствия навыков и воли — вопрос компетенции, а не политики.

Decoding the obfuscated bash script on a Uniqlo t-shirt (tris.sherliker.net) 🔥 Горячее 💬 Длинная дискуссия

На футболке, продаваемой в магазинах Uniqlo в рамках кампании Akamai «Peace for All», на обратной стороне размещён кажущийся набор символов, который на самом деле представляет собой shebang, передающий в eval зашифрованный base64‑строкой. Чтобы получить её, авторы использовали OCR: Android‑поиск по кругу, Tesseract с настройками и Claude, после чего склеили получившийся текст, убедившись, что он заканчивается правильным паддингом и совпадающими кавычками. Строка в base64 состоит из 534 символов, заканчивается «==» и после декодирования дает более 300‑символьный bash‑скрипт, в котором явно видны комментарии и эмодзи‑символы.

После декодирования скрипт раскрывается как безобидный пасхальный яйцо: он выводит повторяющуюся строку «♥PEACE♥FOR♥ALL♥…» и анимирует её, используя размеры терминала, скрывая курсор, перехватывая Ctrl+C и в бесконечном цикле заменяя позицию символа по синусу. В коде присутствует надпись «Congratulations! You found the easter egg! ❤️». Для работы скрипт требует установленных утилит tput, bc и корректных размеров терминала; при слишком маленьком окне часть анимации отображается неполно, но даже в ограниченном пространстве сообщение остаётся читаемым. При этом в другой модели той же коллекции текст обрывается на «retu», что делает её нерабочей.

by speerer • 08 июля 2026 г. в 08:46 • 1472 points

ОригиналHN

#akamai#android#base64#bash#bc#ocr#tesseract#tput#uniqlo

Комментарии (231)

  • Уникальная футболка Uniqlo x Akamai содержит самописный bash‑скрипт, который действительно исполняется.
  • Пользователи обсуждают сложность OCR‑распознавания кода и предлагают способы ускорения вывода.
  • Есть отзывы о шрифте, kerningе и необходимости добавить задержку в цикле для читаемости.
  • Комментарии отмечают, что это не просто «визуальный» дизайн, а рабочий скрипт, вдохновлённый традицией «кода на одежде».

DDoS Botnet Aisuru Blankets US ISPs in Record DDoS (krebsonsecurity.com)

Крупнейшая в мире ботнет-сеть Aisuru, специализирующаяся на DDoS-атаках, недавно установила новый рекорд, обрушив на цели в интернете 29,6 терабит мусорного трафика в секунду. Основная часть её мощности исходит от сотен тысяч взломанных IoT-устройств в США, многие из которых — это камеры видеонаблюдения и маршрутизаторы, эксплуатируемые благодаря уязвимостям в их прошивках.

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

В результате, Aisuru теперь считается главной причиной, почему в последние недели наблюдаются перебои в работе интернета по всему миру, особенно в услугах доставки контента и защищенных DNS-сервисах, таких как Cloudflare и Google.

Хотя Aisuru наиболее известен атаками на игровые сервисы, он также всё чаще применяется для нанесения ущерба критически важной интернет-инфраструктуре, включая основу глобальной системы доменных имён (DNS).

В записях, полученных KrebsOnSecurity, показано, что на пике недавней DDoS-кампании Aisuru против провайдера услуг защиты от DDoS-атак Akamai, последний временно прекратил работу некоторых своих сервисов, включая защиту DNS, после того, как атака превысила два терабита в секунду.

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

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

Многие из последних атак Aisuru были сосредоточены на серверах, обслуживающих видеоигры, такие как Counter-Strike 2 и Minecraft. Но эксперты по безопасности, отслеживающие Aisuru, говорят, что они видят, как ботнет начинает атаковать более разнообразный набор целей, включая корпоративные и государственные сети.

Один из таких аналитиков — это Абрахам «Абби» Рамирес, руководитель отдела угроз в компании по защите от DDoS-атак NullRoute, расположенной в Лос-Анджелесе. Рамирес говорит, что, хотя Aisuru, безусловно, является самым большим ботнетом, который он когда-либо видел, он также является одним из самых сложных.

«Это не просто ботнет, который вы можете наблюдать и анализировать с помощью простого набора инструментов для мониторинга трафика», — сказал Рамирес. «Он использует множество методов, чтобы скрыть источник своего трафика, и они постоянно меняются, чтобы скрыться от обнаружения. Это, безусловно, самый сложный ботнет, который мы отслеживаем».

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

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

«По сути, они находят способы заставить свои жертвы усиливать сигнал атаки», — сказал он. «Это действительно то, что отличает Aisuru от любого другого ботнета, который мы видели до сих пор».

by JumpCrisscross • 13 октября 2025 г. в 23:21 • 167 points

ОригиналHN

#akamai#botnet#cloudflare#ddos#dns#google#iot#nullroute

Комментарии (123)

term BBBBB BBBBB BBBBB BBBbbb BBBBBB BBBBBB BBBBBBB BBBBBBBB BBBBB BBB BBB BBBBBB BBBBBB BBBBB BBBBB BBBBBB BBBBBB BBBBBBBB BBBBBB BBBBBB BBB BBBBBB BBBBB BBBBB BBBBB BBBBBB BBBBBB BBBBB BBBBBB BBBBB BBB BBBBB BBBBBB BBBBBBBBBB BBBBB BBB BBBBB BBBBBBBB BBBBB BBB BB BBBBBB BBBBB BBB BBBBBB BBBBBBBB BBBBB BBB BBBBBB BBBBB BBBBB BBBBB BBBBBB BBBBB BBBBBB BBBBB BBB BBBBBB BBBBB BBBBB BBBBB BBBBB BBBBBB BBB BBBGGGG BBB BBBBB BBBbbbbbb BBBBBB BBBBBB BBBBBB BBBBBB BBBBBB BBBBB BBBBB BBBBBB BBBBB BBB BBBBB BBBBBBB BBBBBB BBBBBB BBBBB BBBBB BBBBBB BBBBB BBBBB BBB BBB BBBBBB BBBBB BB BBBBB BBBBB BBBBBB BBBBB BBBBB BBBBB BBBBB BBBBB BBB BB BBBBB BBBBB BBBBB BB BBBBBB BB BBBBBB BBB BBBBBB BBBBBBBB BBBBB BBBBB BBB BBBBBBBB BBBBBBBB BBBBB BBBBBB BBB BBBBBBB BBBBB BB BBBBBB BBB BBB BBB BBBBB BB BBB BBBBB BBB BBBBBB BBBBBBBB BBB BB BBBBB BBB BBBBB BBB BBBBBBB BBBBB BBB BB BBB BB BBB BBB BB BBBBB BBB BBBBBB BBB BBBBB BBBBBBB BBB BBBBB BBB BBB BB BBB BBB BBB BBB BBBBBB BB BBBBBBBB BBBBB BBB BBB BBBBB BBB BBBBB BBB BBBBBB BBBBB BBB BBB BBB BBB BBBBBB BB BBB BB BBB BBB BBB BBBBB BBB BBBBBBB BBBBBBB BBB BBB BBB BBBBB BBB BBBBBB BBB BBB BBB BBB BBB BBB BBBBB BBB BBB BBBBBBB BB BBBBB BBB BBBBBB BBBBBBB BBB BBBBBB BBBBBB BBB BBB BBBBBB BBB BBBBBBB BBB BBB BBB BBB BB BBBBBB BBB BBBBBB BBBBBBB BBBBB BB BBBBB BB BBBBB BBBBBBB BBB BBB BBB BBBBBBB BBB BBB BBB BBBBBB BBB BB BB BBBBB BBB BBBBBBBB BBBBBBB BBB BBBBBBBB BBB BBBBBBB BBB BBB BBB BBB BBB BBBBB BBBBB BB BBBBB BBB BBBBB BBB BBB BBBBBB BBBBBBB BBB BBBBBBB BBB BBB BBB BBBBBBB BBB BBB BBBBB BBB BBBBB BB BBBBBBB BBB BBB BBB BBB BBBBBBB BBB BB BBBBB BBBBBBB BBB BBB BBB BBBBBBB BBB BBB BBBBB BBB BBBBB BBB BBB BBB BB BBB BBB BBBBB BB BB BBB BBB BBBBB BBB BBB BBB BBB BBB BBB BBBBB BBB BBB BBBBBB BBB BBB BBB BBB BBB BBB BBBBBBBB BBBBBBB BBBBB BBB BBBBBBB BBB BB BBBBBBB BBBBBBBbbbb BBBBB BB BBBBB BBB BBBBBB BBBBBBBB BBBBB BBBBBBBB BBB BBB BBB BBBBBBBB BB BBBBBBBBBB BBBBBBB BBBBBBB BBBBBBB BBB BBBBBB BB BBBBBBBB BBBBBBBB BBBBBBBbbbbb BBB BBB BB BBBBBBB BBBBBB BBBBB BBBBBB BBBBBBBbbbbb BBBBBBBbbbbbb BBBBBBBBBBBB BBBBBBBB BBBBBBBBBB BBBBBbbbbbbbbbbbb BBBBBBBB BBBBBBB BBBBBBBB BBBBBBB BBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBbbbbbbbbbbbbb BBBBBbbbbbbbbbbbbbb BBBBB BBBbbbbbb BBBBBBBbbbbbb BBBbbbbbbbbbbbbbbb BBBbbbbbbbbbbb BBBbbbbbbbbbbbbbbb BBBbbbbbbbbb BBBBBbbbbbbbbbbbbbb BBBbbbbbbbbbbbbbbb BBBbbbbbbbbbbbbbbb BBBBBB BBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBBBBBBbbbbbbbbbbbbbbbbbbbbb BBBbbbbbbbbbbbbbbbbbbbbbbbbbbb BBB BBB BBB BBB BBB BBB BBBBB BBBbbbbbbb BBBbbbbbbbbbbbbbbb BBB BBB BBB BBB BBB BBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBB BBB BBBBBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBBBB BBB BBB BBB BBBBBbbb BBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BB BBB BB BBB BBB BBB BBB BBB BBB BBB BBBBBbbbbbbbbbbb BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBBBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BB BB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BB BB BB BBB BBB BBB BBBBBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBBBB BB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BB BBB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBBBB BBB BBB BBB BBB BBB BBBBB BB BBB BBB BBB BBBBBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BB BBB BBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBBbbbbbbbbbbbbbbbbbbbbbBBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBBBBBBB BBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BB BBB bb BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBBBB BBB BBB BBB BBB BBB BBB BBBBBbbb BBBbbb BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BB BBB BBB BBB BB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBBBB BB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BB BBBBB BB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBBBBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB GGgggg BBBBBBBBBBBB BBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BB BBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddddbbbbb BBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb GG BBBBBBB BBBBBbbbbb GG BBBBBbbbbbbbbbbbbbbbbbbb BBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBB BBBBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBBBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBBBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBBBBBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BB BB BBB BBBBB BBB BBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BBB BBBBBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBBBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBBBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBB BBBBBBbbbGGGGGGGGggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggdddddddddddddddddddddddddddddddddddggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddddDDDDDDDDDDDDDDDDDDdddddddDDDDdddddDDDDdddddddddDDDDdddddddDDDDDDdddddDDDDDDDDDDDDDDDDDDDDDDdddDDDDdddddDDDDdddddDDDDDDDDdddDDDDDDDDdddddDDDDDDdddddDDDDDDDDDDdddddDDDDDDdddDDDDdddddDDDDdddddddDDDDDDdddDDDDdddddDDDDDDdddddddddDDDDdddddDDDDDDDDdddddDDDDdddddDDDDDDdddDDDDdddddDDDDdddddddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDddddDDDDDDDDDDDDDDdddddDDDDDDDDDDDDDDDDdddddddddddDDDDDDDDdddDDgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg