1 puan yazan GN⁺ 2024-01-14 | 1 yorum | WhatsApp'ta paylaş
  • Counter-Strike’ın eski No user logon kopma sorunu CS2’de de yeniden üretilebiliyor; oyun başlatıldıktan hemen sonra sunucuya çok hızlı bağlanılırsa Steam ID doğrulaması başlamayabiliyor
  • Kritik nokta, CS2.exe başlatılırken çalışan levelload döngüsünün Steam3 doğrulamasını tamamlamadan erken kapanabilmesi ve sunucunun doğrulanmamış bir Steam ID ile bağlantıyı işlemesi
  • Esportal loglarında normal kullanıcılar için bile STEAM USERID validated kaydı bağlantıdan yaklaşık 1 dakika 20 saniye sonra yazıldı; başarısız kullanıcılar için ise 2~3 dakika sonra STEAMAUTH failure code 8 ve NETWORK_DISCONNECT_STEAM_LOGON ile kopma görüldü
  • Oyunu yeniden kurmak, dosyaları doğrulamak, Steam’i yeniden başlatmak, PC’yi yeniden başlatmak veya WiFi’yi devre dışı bırakmak kök nedeni çözmüyor; önce CS2’yi açıp ana menüde 5~10 saniye beklemek gerekiyor
  • Esportal, 10 Ocak 2024’te CS2.exe tamamen başlatılmadan steam://connect/<IP>:<Port> çalıştıran davranışı düzeltti; ardından ilgili ticket oranı %0’a düştü

Uzun süredir tekrarlanan No user logon durumu

  • Counter-Strike’taki No user logon kopması, oyun sırasında rastgele ortaya çıkan bir sorun olarak biliniyor ve 2008’den 2023’e kadar çeşitli forumlarda ve Valve’ın resmi destek forumlarında tekrar tekrar raporlandı
  • No user logon ile bazı gönderilerde görülen No steam logon, teknik olarak aynı kök nedenin farklı adları olabilir
  • İnternette yaygın olan çözümler kök nedeni düzeltmiyor
    • oyunu yeniden kurmak
    • oyun dosyalarını doğrulamak
    • Steam’i yeniden başlatmak
    • bilgisayarı yeniden başlatmak
    • WiFi’yi devre dışı bırakmak
  • CS2, 27 Eylül 2023’te CS:GO’nun yerini aldı ve normal kullanıcılar artık CS:GO’yu oynayamaz hale geldi
  • Valve’ın HackerOne bug bounty kapsamına cs2.exe dahil değildi ve CS2 Limited Test raporları da kapsam dışı olarak işaretlenmişti

Esportal’da aniden artan bildirimler

  • Esportal bu sorunu geçmişte CS:GO’da da yaşadı; kayıtlardaki ilk görülme zamanı 2019-11-15 19:15:32 CET, son CS:GO vakası ise CS2’ye geçişten bir gün önce, 2023-09-26 21:38:01 CET idi
  • CS2’nin ilk döneminde sorun kaybolmuş gibi görünüyordu, ancak 2024 Ocak ayının ilk haftasında kullanıcı bildirimleri arttı
    • 2024-01-03: günlük ticket’ların %6’sı
    • 2024-01-05~06: %18
    • 2024-01-07: %23
    • 2024-01-08: %10
    • 2024-01-09: %9
  • Bildirim saatleri çoğunlukla 13~17 CET aralığında yoğunlaştı; bu, Valve’ın bulunduğu Washington saatine göre 04~08 aralığına denk geliyor
  • Önceden bildirimler günün tamamına daha dengeli yayılırken, yeni gözlemlenen sorun belirli saat aralıklarında yoğunlaştı
  • Esportal dışındaki oyuncular da aynı sorunu yaşadığından, bu yalnızca belirli bir platforma özgü değildi

Belirtiler: geciken Steam doğrulaması ve kaybolan skin’ler

  • Gözlemlenen No user logon hatası, oyuncu oyun sunucusuna bağlandıktan 2~3 dakika sonra ortaya çıkıyordu ve bu süre oldukça tutarlıydı
  • Bir iş arkadaşı, “Oyuna girdikten sonra birkaç dakika boyunca CS2’de skin’ler görünmüyor” dedi; Esportal dışındaki oyuncular da skin eksikliği bildirdi
  • Skin’ler Steam ID sahipliğiyle bağlantılı olduğundan, kişisel skin’ler görünene kadar oyuncunun Steam üzerinden düzgün şekilde kimlik doğrulaması yapılmamış olması mümkündü
  • Normal kullanıcı loglarında, bağlantıdan yaklaşık 1 dakika 20 saniye sonra STEAM USERID validated kaydı görülüyordu
16:39:55: "Alice<1><>" connected
16:41:14: "Alice<1><>" STEAM USERID validated
17:17:32: "Alice<1><CT>" disconnected (reason "NETWORK_DISCONNECT_DISCONNECT_BY_USER")
  • 3 Ocak 2024’ten önceki eski loglarda Steam doğrulaması bağlantıdan 2~3 saniye sonra tamamlanıyordu
  • Washington’ın gece saatlerinde sorun doğrudan yeniden üretilebildi, ancak Washington gündüz saatlerinde yeniden üretilemedi

NETWORK_DISCONNECT_STEAM_LOGON ve failure code 8

  • Başarısız kullanıcı loglarında, STEAMAUTH: Client Bob received failure code 8 satırının hemen ardından bağlantı NETWORK_DISCONNECT_STEAM_LOGON ile kesiliyordu
16:40:13: "Bob<6><>" connected
16:43:02: STEAMAUTH: Client Bob received failure code 8
16:43:02: "Bob<6><TERRORIST>" disconnected (reason "NETWORK_DISCONNECT_STEAM_LOGON")
  • NETWORK_DISCONNECT_STEAM_LOGON, kullanıcının gördüğü No user logon mesajının dahili tanımlayıcısı gibi görünüyor
  • libengine2.so içinde STEAMAUTH: Client %s received failure code %d dizesi bulundu ve CS:GO’nun sızdırılmış kaynak kodundaki sv_steamauth.cpp ile tersine mühendislik sonuçları birlikte karşılaştırıldı
  • CS2’de ilgili işlev, eAuthSessionResponse değerine göre istemci bağlantısını kesiyor
    • 1: k_EAuthSessionResponseUserNotConnectedToSteam
    • 7: k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed
    • 8: k_EAuthSessionResponseAuthTicketInvalid
  • failure code 8, Steam3 doğrulaması başarısız olduğunda görülen k_EAuthSessionResponseAuthTicketInvalid değerine karşılık geliyor gibi görünüyor

Steam3 doğrulama akışı

  • Oyun istemcisi CS2.exe, oyun sunucusuna bağlanırken kendi Steam ID bilgisini gönderir
  • Oyun sunucusu, bu Steam ID’nin geçerli olup olmadığını ve oyunun sahibi olup olmadığını kontrol etmek için Steam3 sunucularına sorar
  • Doğrulama yanıtı beklenirken oyuncu sunucuda oynamaya devam edebilir, ancak kişisel skin’ler görünmeyebilir
  • Steam3 sunucusu “yes” döndürürse oyun sunucusu bu bilgiye güvenir ve skin gibi kişisel verileri uygulayabilir
  • Steam3 sunucusu “no” döndürürse oyun sunucusu istemciyi NETWORK_DISCONNECT_STEAM_LOGON ile bağlantıdan çıkarır
  • Washington’ın gece saatlerinde Steam3 yanıtlarının yavaşladığı durumda, doğrulamanın tamamlanması yaklaşık 1 dakika 20 saniye sürüyordu

CS2.exe güven doğrulaması ve Steam istemcisi

  • Steam ID’nin geçerli olması tek başına, ilgili CS2.exe örneğinin aynı makinede oturum açmış Steam hesabının oyunu olduğunu kanıtlamaz
  • CS2.exe, kendi gönderdiği Steam ID’nin o anda oturum açmış Steam hesabıyla eşleşip eşleşmediğini doğrulatmak için aynı makinedeki Steam.exe ile bağlantı kurmak zorundadır
  • Steam.exe bu eşleşmeyi doğrularsa, Steam3 sunucusuna ilgili Steam ID’nin CS2 için geçerli olduğunu geçici olarak kaydeder
  • Steam3’ün “no” döndürmesinin aday nedenleri içinde, gerçek soruna en yakın iki olasılık şunlara indirgeniyor
    • CS2.exe örneğine güvenilmemesi
    • Steam3 sunucusunun bu CS2.exe örneği için Steam ID bilgisini henüz bilmiyor olması

İstemci tarafındaki ipucu: NETWORK_DISCONNECT_LOOPSHUTDOWN

  • Başarısız loglarda, NETWORK_DISCONNECT_STEAM_LOGON öncesinde önce NETWORK_DISCONNECT_LOOPSHUTDOWN görünüyor
16:40:03: "Bob<6><>" connected
16:40:08: "Bob<6><Unassigned>" disconnected (reason "NETWORK_DISCONNECT_LOOPSHUTDOWN")
16:40:13: "Bob<6><>" connected
16:43:02: STEAMAUTH: Client Bob received failure code 8
16:43:02: "Bob<6><TERRORIST>" disconnected (reason "NETWORK_DISCONNECT_STEAM_LOGON")
  • NETWORK_DISCONNECT_LOOPSHUTDOWN sonrasında oyun 5 saniye sonra otomatik olarak yeniden bağlanmayı deniyor
  • Bu ilk kopma, oyun sunucusu tarafından değil CS2.exe’nin kendisi tarafından başlatılıyor
  • Dolayısıyla kök neden oyun sunucusunda değil, oyun istemcisi tarafındaydı

Source 2’nin levelload döngüsü ve başlatma sırası

  • Source 2 motoru aynı anda tek bir aktif döngü çalıştırır; bu döngü, belirli bir hedef tamamlanana kadar arka plan işlerini ve kullanıcı girdilerini tekrar tekrar işler
  • CS2.exe başlatıldıktan sonra en son çalışan döngü, gerçek menü etkileşimlerini ve oynanışı yöneten game döngüsüdür
  • Konsol çıktısında, game döngüsüne geçmeden hemen önce Steam kimlik doğrulama durumu OK olarak görünüyor
[SteamNetSockets] AuthStatus (steamid:<redacted>):  OK  (OK)
[Client] CL:  CLoopModeLevelLoad::MaybeSwitchToGameLoop switching to "game" loopmode with addons ()
[EngineServiceManager] SwitchToLoop game requested:  id [1] addons []
  • levelload, CS2 başlatılırken çalışan başlatma döngüsüdür; gerçek bir harita olmasa bile intro videosu ve ana menü gibi ilk ekranları yüklediği anlaşılıyor
  • levelload içindeki son işlerden biri, CS2.exe üzerinden Steam.exe aracılığıyla Steam3 doğrulamasını başlatmaktır

Hatanın doğrudan nedeni

  • CS2 ancak levelload döngüsü başarıyla tamamlandıktan sonra tamamen başlatılmış kabul edilebilir
  • levelload başlatması bitmeden erken sonlanırsa Steam3 doğrulaması başlamaz
  • Bu durumdaki CS2.exe örneği bozulmuş bir duruma girer ve yalnızca CS2 yeniden başlatılana kadar düzelmez
  • Hatanın akışı şu şekildedir
    • CS2.exe başlatılır
    • levelload döngüsü başlar
    • Steam3 doğrulaması başlatılmadan önce levelload erken kapanır
    • game döngüsü, doğrulanmamış Steam ID ile oyun sunucusuna bağlanır
    • oyun sunucusu Steam3’e doğrulama sorusu gönderir
    • en fazla yaklaşık 2 dakika 50 saniye sonra başarısız yanıt alır ve No user logon ile bağlantıyı keser
  • Bu sorun burada CS2 örneği ve adlarıyla ele alınıyor, ancak CS:GO ve Counter-Strike: Source’ta da eşdeğer bir hata bulunuyor; yalnızca teknik adlar ve mekanizma farklı

Hatayı tetikleyen bağlantı yöntemleri

  • Sorun, CS2’nin başlatılma biçimine bağlı bir race condition
  • Hatayı neredeyse kesin olarak tetikleyen yöntem, CS2 açık değilken doğrudan oyun sunucusuna bağlanmaktır
  • Riskli bağlantı yöntemleri şunlardır
    • oyun dışı sunucu tarayıcısından, CS2 çalışmıyorken veya yeni açılmışken sunucuya bağlanmak
    • Steam arkadaş listesinden, CS2 çalışmıyorken veya yeni açılmışken bir arkadaşın oyununa bağlanmak
    • steam://connect/127.0.0.1:27015 gibi Steam tarayıcı protokolüyle dışarıdan doğrudan bağlanmak
  • CS2 başlatıldıktan sonra tamamen başlatılmadan bu işlemler yapılırsa görülme olasılığı daha yüksektir
  • Nedenlerin ağırlığı şu benzetmeyle özetleniyor: “Counter-Strike’ı başlatma şekli %90, bilgisayar hızı %3, kullanıcı hızı %3, ayın durumu %3, gerçek kullanıcı ayar sorunu %1”

Gerçek çözüm yöntemi

  • Yapılmaması gerekenler
    • oyunu yeniden kurmak
    • oyun dosyalarını doğrulamak
    • Steam’i yeniden başlatmak
    • bilgisayarı yeniden başlatmak
    • WiFi’yi devre dışı bırakmak
    • CS2 başlatılmadan önce dışarıdan oyun sunucusuna bağlanmak
  • Bunun yerine önce CS2’yi başlatıp, oyun sunucusuna bağlanmadan önce yeterince beklemek gerekir
  • Ölçüt olarak oyun konsolu görünene kadar beklenebilir veya intro videosu göründükten sonra 5~10 saniye beklenebilir
  • Kesin olarak kontrol etmek için CS2 başlatıldıktan sonra oyun konsoluna status yazıp şu satırı görmek yeterlidir
[EngineServiceManager] @ Current  :  game

Esportal düzeltmesinin sonucu

  • Başarısız kullanıcı Bobun ilk denemeden 9 dakika sonra doğrulamayı başarıyla geçmesinin nedeni, CS2’yi yeniden başlatmış olması ve o sefer hatanın şanssız şekilde tetiklenmemesiydi
  • Bir kez Steam ID doğrulandıktan sonra, aynı oyun örneğinde Steam istemcisi kapatılmadığı sürece daha sonra başarısız olmuyor
  • Esportal, 10 Ocak 2024’e kadar CS2.exe işlemi görünür görünmez, tam başlatma tamamlanmadan bile steam://connect/<IP>:<Port> ile oyuncuyu matchmaking sunucusuna bağlıyordu
  • Bu davranış düzeltilip tüm Esportal oyuncularına dağıtıldıktan sonra ilgili kullanıcı ticket’ları durdu
  • Günlük ticket’lar içinde No user logon oranı 2024-01-07 tarihinde %23 seviyesine kadar çıkmıştı, ancak 2024-01-10 ile 2024-01-12 arasında %0 seviyesine düştü

1 yorum

 
GN⁺ 2024-01-14
Hacker News yorumları
  • Diyagramdaki akış, Steam'in Session Tickets dediği yönteme daha yakın; gerçekte ise biraz daha nüanslı
    Oyun istemcisi Steam sunucularından bir oturum bileti ister, ardından oyun sunucusuna belirli bir Steam ID'si olduğunu kanıtlayan bileti gönderir
    Sonrasında oyun sunucusu, biletin birden fazla kez kullanılıp kullanılmadığını veya değiştirilip değiştirilmediğini doğrulamak için Steam Web API'sine çevrimiçi olarak kontrol atmalıdır
    Görünüşe göre CS2 istemcisi, oturum bileti alma sürecindeki gecikmiş yanıtı düzgün işleyemiyor
    Akış burada ayrıntılı biçimde anlatılıyor: https://partner.steamgames.com/doc/features/auth#3
    Eğer yazıdaki diyagramdaki gibi çalışıyorsa, bir saldırganın kurbanın Steam ID'siyle sunucuya katılmak için yarışabilmesi oldukça endişe verici

    • Evet, büyük olasılıkla bu bir oturum bileti meselesi ve yazıda o kısım yeterince açık ifade edilmemiş gibi görünüyor
      Sorun, oyunun gerçekten oturum biletini oluşturmadan önce ya da yavaş Steam sunucu yanıtını beklerken kesilmesi ve bilet olmadan oyun sunucusuna bağlanabilmesinde gibi görünüyor
    • Evet, teknik olarak akış böyle ve sorunun açıklaması açısından çok kritik olmadığını düşündüm ama daha açık belirtmem gerekirdi
  • Yazı harika ama iz sürme süreci ile sonuçlar tamamen örtüşmüyor
    “Counter-Strike'ın başlama şekli: sorumluluğun %90'ı” denirken, dünyanın dört bir yanındaki oyuncuların Esportal dışında da aynı sorunu yaşadığı ve bunun Washington gece yarısı bakımıyla doğrulandığı söylenmesi aynı anda pek doğru olamaz
    Eğer sorumluluğun %90'ı başlatma biçimindeyse, sorun bakım saatlerinde yoğunlaşmazdı
    Kilit nokta şu gibi görünüyor: “oyun döngüsü başlamadan hemen önce Steam ID doğrulaması başlatılıyor” ve “levelload başlatması bitmezse Steam3 doğrulaması son adım olduğu için başlamıyor”
    Yani bakım saatlerinde steam3 sunucuları çok yavaşlarsa bu süreç uzuyor ve bu sırada oyunu başlatıp döngüyü kesme ihtimali artıyor
    Bu yüzden “Counter-Strike'ın başlama şekli” de doğru olabilir ama “ayın durumu: sorumluluğun %3'ü” gibi bir ifade aslında bakım penceresine işaret ettiği için biraz hedefi şaşırıyor
    Tavsiyeye “CET 13:00-17:00 arasında Valve bakım penceresi olduğu için birkaç dakika daha bekleyin” gibi bir not da eklenebilirdi
    Her hâlükârda bu sorunu yaşadım ve “biraz bekleyip yüklemenin bitmesine izin verin” çözümü şimdiye kadar duyduğum en pratik ve en makul çözüm

    • Açıklama ya da sonuçların ayrıntılarında boşluklar var ama bu yorumun da tamamen doğru olduğundan emin olmak zor
      CS:GO'da da bakım saatlerinden bağımsız olarak aynı sorun vardı, CS2'de ise yalnızca bakım saatlerinde gözlendi
      Sonuçta CS:GO ve CS2'deki hataların doğası farklı da olabilir ama CS:GO yerini CS2'ye bıraktığı için bunu artık kanıtlamanın yolu yok
  • Eskiden Steam yokken, bir arkadaşın bağlandığı sunucuyu görüp anında katılabilmek için aktif oyuncular ve skorlar listesi gösteren bir araç yapmıştım
    O aracı geliştirirken test ettiğim sunucuya hatalı bir paket gönderdim ve sunucu çöktü
    Delphi ile yazılmış kaynak kodu hâlâ duruyor; 10 yıllık bug'lar hâlâ yaşıyorsa bunun bugün bile sunucuları çökertip çökertemeyeceğini merak ediyorum

    • Bir deneyebilir misin? :D
  • Asıl bug, kimlik doğrulamanın LAN dışı çok oyunculu oturum başlatmanın zorunlu bir koşulu olmaması

    • Ya da oturum bileti doğrulama akışının oyun sunucusu ile Valve'ın kimlik doğrulama sunucuları arasındaki bağlantıya bağlı olması da sorunlu. O doğrulama sunucuları zaman zaman çok yavaş görünüyor
      Daha hızlı ve daha sağlam bir yöntem, Steam istemcisinin Valve'dan birkaç saat geçerli bir imzalı token alıp bunu saklaması ve oyun sunucusuna her bağlandığında o token'ı göndermesi olabilir
      Oyun sunucusu da Valve tarafından verilmiş ve sunucu içeriğiyle birlikte dağıtılan açık sertifikayla bunu yerelde doğrulayabilir
  • Bazı paragraflar “şapkanın üstüne bir şapka daha koymak” gibi hissettiriyor
    Zaten memeleşmiş paragrafların üstüne bir de alaycılık eklenince, daha ince olduğunda daha iyi çalışan unsur biraz aşırıya kaçmış gibi duruyor
    Başkalarının da dediği gibi, ana fikre daha hızlı girmek daha iyi olurdu

  • Okuması çok eğlenceliydi. Oyun istemcisinin neden aniden çöktüğünü de aynı şekilde araştırmanın mümkün olup olmadığını merak ediyorum
    Çalıştırılabilir dosya için bütünlük kontrolünün oyun çalışırken de sürüp sürmediğini ve bunlardan biri çalışma sırasında başarısız olursa başka bir bağlantı kesilme mesajı çıkıp çıkmadığını merak ediyorum
    GTA V'in aşırı uzun yükleme sürelerini analiz eden yazı gibi ödüllendirilmeyi hak ediyor gibi görünüyor: https://nee.lv/2021/02/28/How-I-cut-GTA-Online-loading-times...

    • Hangi ani çökmeden bahsettiğini merak ediyorum
      Çökmeler teorik olarak incelenebilir ama Valve çökme raporlarını diske kaydetmeyip sunucuya gönderiyor
      Hata ayıklayıcı bağlıyken gerçek zamanlı yakalayamazsan analiz daha zor oluyor; VAC yüzünden uğraştırıcı ama imkânsız değil. VAC kapatılabilir
  • Yazının başına, çözümü arayıp gelenler için bir özet koymak düşünceli bir hareket olmuş
    Ama hemen ardından “ne yapmamanız gerektiği” söyleniyor ve gerçekten yapılabilecek şey kilometre uzunluğundaki yazının ortasındaki tek bir cümleye saklanmış oluyor
    Geçici çözümün özete eklenmesi daha iyi olurdu

    • Neredeyse acımasız bir şaka gibi. Özet: Bunu yapmayın, onun yerine tüm yazıyı okuyun!
    • “Kilometre uzunluğundaki yazı” ölçü birimi olarak yaklaşık 25 kez Page Down, serbest ölçekte ise CTRL+F demek
    • Haklısın, bu yüzden özeti daha iyi olacak şekilde düzelttim
  • Strunk and White tarzı yazma tercihleri kafama kazınmış olduğu için söylüyorum; istersen tamamen görmezden gelebilirsin
    Geri bildirim istiyorsan yazıyı çok daha doğrudan ve kısa olacak şekilde sert biçimde kısaltmanı öneririm
    Uzun yazılar yazılabilir ama birkaç dakika sonra ek açıklamalar ve anekdotlar birikince ana akışı oldukça hızlı kaybettim
    Üstüne bir de Inception referanslı görsel gelince, bilgi aktaran bir metinden çok birbiriyle alakasız şeylerin toplandığı hissi güçleniyor
    Ne söylemek istediğini düşün, onu söyle ve sonra dönüp gerçekten sadece onu söyleyip söylemediğini kontrol et
    Geri kalanı yazarlık değil, daha çok klavye alıştırması. Söylenecek 3-4 şey varsa sadece onları söylemek yeterli

  • Yazı güzeldi ama birkaç soru kaldı
    levelloadloop yalnızca oyun başlatılırken mi çalışıyor, sunucuya katılırken ve harita yüklenirken çalışmıyor mu?
    Sorun, Steam kimlik doğrulama süreci başlamadan önce döngünün bitmesi ise bakım nedeniyle yavaşlama neden önemli hâle geliyor?

    • 1 numara doğru, yalnızca oyun başlatılırken çalışıyor
      Bu döngü adı Portal gibi tek oyunculu oyunlarla ilgili görünüyor ve bu tür oyunlarda seviyeler kesintisiz değiştiği için isim orada çok daha doğal duruyor
      2 numarada açıklamada boşluklar olduğu doğru ve cevabı bilmiyorum
      Yine de bu yöntemin sorunu çözdüğü kesin. Sonuçtaki ayrıntılar eksik olabilir ama şu an daha derine inme ihtiyacı hissetmiyorum
  • Valve'ın ödül programı metninde “Steam platformu ve Valve'ın geliştirip yayımladığı mevcut oyunlar” ifadesi yer alıyor
    Ayrıca 14 Haziran 2023 saat 10:00 PDT'den itibaren CS:GO için yeni raporların kapsam dışında olduğu ve CS2 Limited Test raporlarının da şu anda kapsam dışında olduğu yazıyor
    Valve'ın güvenlikte zayıf olduğu doğru ama HackerOne açıklamasının tamamı geniş yorumlanırsa ben bunu kişisel olarak kapsam içinde sayardım
    “Scope” sekmesi csgo.exe dışlanacak şekilde güncellenmediği için, yalnızca o sekmeye güvenmek de zor
    Yine de Valve'ın orayı lütfen güncellemesi lazım

    • Valve bunun kapsam içinde olup olmadığına dair basit bir soruya bile yanıt vermediği için kesin bir şey söylenemiyor
      Yine de sonuca katılıyorum; mantıklı geliyor