/
argsPrefixmainChannelNamewindowWidthwindowHeight_childChannel_windows
_lastState_hwnds_initialRects
_lastPrune_pruning_ready_pendingSetup_sending_queued_lastSendErrorLog_handlerSet_busy_counterisOpen
knownHwndsopenIdssendTileFromChildonTileActionsendDialogAnsweronDialogAnsweronWindowClosedopen	_sanitize	pushState
_lastThumb_closing_sendCoalesced_sendhwndOfcaptureRects	applyRectupdateTitle_applySetupWhenReadyonClosedselftestChildclose	pruneDeadstop_ensureHandler_onCall	parseArgsCardWindowServiceZWindowMethodChannelmodeChannelModeunidirectionalMapStringWindowControllerdynamicint
WindowRectDateTimefromMillisecondsSinceEpochboolSetcontainsKeyvaluestoSetListkeystoListgrowableFuturevoidPaletteTileRequestinvokeMethodtoJsontimeoutDurationseconds
debugPrinteObjectinitialRectforceremoveisUsableshowNativeBridgelistChildWindowscreateWindowConfigurationhiddenAtLaunch	argumentsiwherecontainshreversedconfirmCardWindowdelayedmillisecondshwndtitle	unawaitedwindowIdlength
replaceAlltrim
isNotEmptyofnow
differenceentriesentryvaluegetCardWindowRectkeyapplyCardWindowRectsetCardWindowTitlesetupCardWindowwidthheightcalladdcloseCardWindowhideisEmptycardWindowAliveclearsetMethodCallHandler
MethodCallmethodhandleridstatefromJsonsplitfirst
instanceIdtryParse å`Ünä—ëû(œó‡Å»ñ    „B   
dart:async  „Z   6package:desktop_multi_window/desktop_multi_window.dart  „œ   package:flutter/foundation.dart  „Ç   package:flutter/services.dart  „ò   native_bridge.dart  …   palette_tile.dart  …-   window_rect.dart½… À †[ƒ K€�€”€×��`�e�´‚‚J‚š‚Á‚Æƒƒ`ƒ¬ƒø„5„?„A„W„Y„›„Æ„ï„ñ……,…H…J…e……�…Ì…ñ…ó†,†e†g†¸†¿‡‡W‡Ž‡±‡Õ‡×ˆˆeˆšˆ°ˆ×ˆÝˆß‰‰J‰L‰•‰Ø‰ÚŠ'ŠUŠWŠžŠ¥Ší‹:‹ˆ‹ÆŒŒJŒkŒmŒ¿ŒÆ��]�‰�³�øŽ?Ž‹ŽÜ�(�G�N�™�â���]�’�Ú‘	‘‘H‘O‘š‘æ’4’ƒ’Ñ““K“‡“°“²“þ”M”q”�”«”­”à•.•0•y•¤•«•ý–L–––Ö———I—–—˜—Û—â˜-˜z˜É™™`™k™†™µ™æ™ùš3š:š?šAš”šÛšÝ›(›/›z›Èœœdœ¤œ«œó�?�ˆ�Î�÷žž%ž;žHžSžnžªžÑžõŸŸ'ŸXŸkŸ®ŸµŸºŸ¼  1 I _ u { Ž � Ð ×¡¡j¡º¡è¢$¢&¢t¢®¢ü¢þ£*£1££Ç£Î¤¤[¤ ¤½¤Õ¤ê¥¥¥U¥x¥Å¦	¦Q¦s¦¹¦ñ§!§/§X§_§~§Æ¨¨]¨g¨µ©©W©¢©Ð©Ý©þªDª\ªgª|ªµª¾ªâ«««^«¨«º«Í¬!¬+¬@¬G¬Z¬e¬„¬Á¬Ô­­+­L­’­Ø®'®3®a®‹®�®Í¯¯¯7¯A¯�¯Þ°$°s°¼°Æ±±d±³²²O² ²ï³/³D³~³°³ú´(´E´‹´£´Îµµµ3µ@µKµeµ¯µéµôµý¶¶8¶„¶­¶¹·	·[·«·ô¸@¸�¸ß¹ ¹V¹f¹{¹Å¹Ñ¹Ú¹íº9ºfºpº¸»»J»Š»ž»±»ñ¼¼7¼`¼u¼†¼œ¼£¼¨¼ª¼þ½E½G½€½‡½Ô½û¾¾Q¾š¾á¿0¿w¿¼¿ÃÀ @À @[À @‡À @©À @ÁÀ @âÀ @ïÀ AÀ A;À AYÀ A‚À AÍÀ BÀ B)À B0À BgÀ BoÀ B¸À BÿÀ CIÀ C”À CÝÀ D$À DFÀ DNÀ D˜À DäÀ EÀ EGÀ E�À E°À EÛÀ FÀ F9À FŠÀ FÅÀ G	À GÀ GBÀ GKÀ GRÀ G‡À GŒÀ GŽÀ GÒÀ HÀ H	À HOÀ HVÀ H�À HÚÀ I)À IpÀ I¾À IñÀ IóÀ J-À J4À J‚À JÐÀ K!À KtÀ K¬À K³À LÀ LPÀ LˆÀ L¯À LÊÀ LâÀ MÀ MÀ M9À M]À MlÀ MsÀ M•À M¬À M·À MÍÀ MúÀ N.À NRÀ NjÀ NsÀ N„À N©À N°À NµÀ N·À NÕÀ NðÀ OÀ O)À O6À O…À OÔÀ PÀ PCÀ PNÀ P_À PˆÀ PÀÀ PÓÀ QÀ QÀ QhÀ Q³À QúÀ RÀ RkÀ R�À RÖÀ RßÀ RæÀ RëÀ RíÀ SAÀ SHÀ SŸÀ SëÀ TÀ T\À T^À TžÀ T¥À TòÀ UDÀ U~À U…À UÎÀ VÀ VbÀ V«À VÆÀ VÍÀ WÀ WLÀ W�À W¶À WèÀ X À X+À XLÀ XlÀ X¬À XíÀ XôÀ YÀ Y
À YÀ Y]À YdÀ Y«À YöÀ ZDÀ ZuÀ Z À Z¼À [ À [KÀ [PÀ [RÀ [™À [ À [îÀ \8À \zÀ \–À \�À \èÀ ]/À ]{À ]¦À ]ÂÀ ^À ^QÀ ^ˆÀ ^›À ^ÌÀ ^ÔÀ _"À _'À _)À _iÀ _pÀ _¿À `À `VÀ `�À `åÀ a2À adÀ akÀ a·À aíÀ b4À bzÀ bÈÀ bìÀ c5À cdÀ cªÀ c±À cèÀ d
À d>À dIÀ dÀ dœÀ dÌÀ déÀ eÀ eÀ eaÀ e«À e÷À f@À fwÀ f­À féÀ füÀ g;À gBÀ g�À g¬À gèÀ gíÀ gïÀ h-À hhÀ hŠÀ hªÀ hÎÀ hòÀ iÀ i@À i`À i�À i£À iîÀ j=À jgÀ jŽÀ j“À j•À jáÀ k2À krÀ k™À k·À kÂÀ kÓÀ kþÀ l/À lBÀ l†À l�À l’À l”À lÔÀ lÛÀ m-À mÀ m·À mîÀ möÀ n4À n~À nÆÀ oÀ o*À obÀ ojÀ oµÀ oÿÀ pJÀ pnÀ p�À pÑÀ qÀ q<À qlÀ q²À q¹À qäÀ qýÀ rCÀ rWÀ r€À ršÀ r©À rñÀ s	À sÀ sÀ s:À s|À sžÀ s£À s¥À sóÀ t-À tlÀ t™À tºÀ tÍÀ uÀ u(À u/À uFÀ u\À ugÀ u¥À uâÀ vÀ vÀ vÀ v)À vBÀ vIÀ vNÀ vPÀ v{À v“À vªÀ v¿À vØÀ vñÀ wÀ w"À w>À wTÀ wkÀ w‚À w‡À w‰À w×À xÀ xYÀ x[À x‹À x©À xðÀ y8À y…À yÀÀ yøÀ zÀ zÀ zÀ zSÀ zoÀ zƒÀ z™À zµÀ {À {À {WÀ {¦À {ðÀ |?À |hÀ |ˆÀ |­À |ÈÀ |òÀ }À }<À }xÀ }£À }²À }¿À }ÊÀ }àÀ }õÀ ~AÀ ~[À ~gÀ ~µÀ ~ÿÀ MÀ •À ÃÀ €À €9À €RÀ €yÀ €±À €ÇÀ €ÛÀ �'À �NÀ �nÀ �²À �âÀ �íÀ ‚À ‚À ‚dÀ ‚¶À ‚ÌÀ ‚âÀ ‚ûÀ ƒBÀ ƒNÀ ƒdÀ ƒkÀ ƒ}À ƒ‚À ƒ„À ƒÒÀ „À „]À „_À „˜À „æÀ …	À …@À …vÀ …}À …‹À …ËÀ † À †KÀ †SÀ †XÀ †[   „v/// ðŸªŸ KART PENCERESÄ° â€” bir CATIA kartÄ±nÄ± baÄŸÄ±msÄ±z, taÅŸÄ±nabilir pencereye
/// "aktarÄ±r" (kullanÄ±cÄ± isteÄŸi: kartÄ±n saÄŸ Ã¼stÃ¼ndeki ðŸ—– dÃ¼ÄŸmesi).
///
/// MÄ°MARÄ° (palette_service.dart ile AYNI kalÄ±p, iki fark yerde):
///   ana â†’ alt : `state` (gÃ¶rÃ¼necek kartÄ±n tam verisi, JSON)
///   alt â†’ ana : `ready`, `tile` (kart aksiyonu â€” `PaletteTileRequest`)
///
/// ðŸ“Œ NEDEN AYRI PENCERE: kart penceresi `desktop_multi_window` ile aÃ§Ä±lÄ±r â†’
///   kendi engine/isolate'Ä± vardÄ±r. BÃ¶ylece (a) kartta CATIA meÅŸgulken ana
///   pencere kilitlenmez, (b) kart baÅŸka bir sanal masaÃ¼stÃ¼nde aÃ§Ä±kken
///   `provider` nesnesi PAYLAÅžILMAZ (bunun iÃ§in kartÄ±n verisi JSON kanalÄ±ndan
///   akar â€” bkz. `PaletteTileView`).
///
/// ðŸ“Œ TEK YAZICI KURALI: alt pencere KARAR VERMEZ; `ðŸ‘� Ã¶ne getir`, `ðŸ’¾ kaydet`,
///   `â–¶ makro` gibi her ÅŸey istek olarak ana pencereye gider ve orada
///   `CatiaProvider.handlePaletteTileAction` ile YÃœRÃœTÃœLÃœR. BÃ¶ylece "aynÄ±
///   fonksiyonlarla kontrol" isteÄŸi birebir karÅŸÄ±lanÄ±r: alt pencere kendi
///   iÅŸ kodu YAZMAZ, ana pencerenin aynÄ± kapÄ±larÄ±nÄ± Ã§alar.„A  „Y  „›  „Æ  „ñ  …  …,      …g…x…z    …g…g…y  …è…Û…ƒk…ÛM/// `multi_window` argÃ¼manÄ±nÄ±n Ã¶neki (main.dart bu Ã¶nekle yÃ¶nlendirir).†M†;…õm†;6/// Alt pencerenin ana pencereye haber verdiÄŸi kanal.‡«‡�†i�E‡��1/// Pencere boyutu (FÄ°ZÄ°KSEL px, mantÄ±ksal px DEÄžÄ°L â€” native bÃ¶yle bekliyor).
///
/// ðŸ“Œ ORAN 16:10 â€” `CatiaListTile`'daki TV kartÄ±nÄ±n `AspectRatio`'si ile
///   AYNI. Pencere kart gibi gÃ¶rÃ¼nsÃ¼n diye oran birebir eÅŸitlenmiÅŸtir;
///   farklÄ± olursa iÃ§erik kÄ±rpÄ±lÄ±r / boÅŸluk kalÄ±r.‡Ï‡À‡³‡À 	ˆ„ˆ—ˆÙˆžˆ¸ˆ´ˆºˆÅˆÆˆt‡Ù�ˆt€‡/// Alt pencere -> ana pencere kanali (ayri kanal adli: ayni pencere
/// hem iki yonu kullanir ama `WindowMethodChannel` tek yonludur).‰E‰F‰:ˆáf‰:./// ðŸªŸ instanceId â†’ pencere denetleyicisi.‰Ó‰Ô‰Æ‰N€‡‰ÆP/// ðŸªŸ instanceId â†’ o kartÄ±n son gÃ¶nderilen Ã¶zeti (yeniden aÃ§Ä±lÄ±ÅŸta).ŠPŠQŠG‰ÜvŠGK/// instanceId â†’ kart penceresinin HWND'si (kapatma / canlilik kontrolu).‹ý‹þ‹íŠY�¦‹í�t/// ðŸªŸ instanceId â†’ geri yÃ¼klemede uygulanacak kayÄ±tlÄ± konum/boyut.
///
/// ðŸ“Œ NEDEN AYRI HARÄ°TA: `open()` Ã§aÄŸrÄ±ldÄ±ÄŸÄ± anda HWND henÃ¼z YOKTUR
///   (pencere `show()` olmadan listede bulunamÄ±yor). KayÄ±tlÄ± konum ancak
///   `_applySetupWhenReady` iÃ§inde, HWND bulunduktan SONRA uygulanabilir.
///   Harita `open` sÄ±rasÄ±nda doldurulur, orada tÃ¼ketilir.Œ!Œ)Œ*ŒDŒFŒEŒŒCŒ ŒcŒXŒLŒX ������ýŒoƒ¡�ýƒ…/// ðŸªŸ Alt pencerenin kanala `setWindowMethodHandler` kaydÄ±nÄ± YAPTIGI kartlar.
///
/// ðŸ”´ KÃ–K NEDEN (ikinci pencere aÃ§Ä±lÄ±nca donma/Ã§Ã¶kme): `WindowController`
///   oluÅŸturulurken alt motor HENÃœZ baÅŸlamamÄ±ÅŸtÄ±r. `open()` bu arada
///   `pushState` Ã§aÄŸÄ±rÄ±rsa native taraf
///   `CHANNEL_UNREGISTERED` dÃ¶ndÃ¼rÃ¼r:
///   `Channel "mixin.one/window_controller/<id>" not accessible`
///   (bkz. `window_channel_plugin.cc` â†’ `GetTarget`; pencere henÃ¼z
///   `registerMethodHandler` Ã§aÄŸÄ±rmamÄ±ÅŸ). Her baÅŸarÄ±sÄ±z gÃ¶nderim 700 ms
///   `timeout` + gÃ¼nlÃ¼k satÄ±rÄ± demek; `open()` 8 kez denediÄŸi ve her pencere
///   iÃ§in ayrÄ± Ã§alÄ±ÅŸtÄ±ÄŸÄ± iÃ§in yÃ¼k pencere sayÄ±sÄ±yla KATLANARAK bÃ¼yÃ¼r ve
///   UI thread'i kilitler.
///
///   Ã‡Ã–ZÃœM: alt pencere `ready` gÃ¶nderene kadar veri gÃ¶nderilMEZ; veri
///   `_lastState`'te bekler, `ready` gelince tek seferde gÃ¶nderilir.‘‘�à‘�á�é‘�ê‘�ï�ë�ü�õ�É�€ï�Éy/// instanceId -> `ready` geldikten sonra uygulanacak biÃ§imlendirme.
/// (HWND + baÅŸlÄ±k). Bkz. [_applySetupWhenReady].“F“G“8“E“9“A“-‘‚;“-‚	/// AynÄ± pencereye aynÄ± anda TEK gÃ¶nderim (backpressure).
///
/// ðŸ“Œ NEDEN: `desktop_multi_window`Ä±n `invokeMethod` Ã§aÄŸrÄ±sÄ± **senkron
///   beklemelidir** (native'de `channel_->InvokeMethod` hedef engine'in
///   yanÄ±tÄ±nÄ± bekler). Alt pencere meÅŸgulse (PNG decode, kart Ã§izimi) ana
///   pencere bloklanÄ±r. `unawaited` Ã§aÄŸrÄ±lar birikince kanal kuyruÄŸu ÅŸiÅŸer
///   ve uygulama kilitlenir. Burada pencere baÅŸÄ±na tek uÃ§uÅŸ sÄ±nÄ±rÄ± koyup,
///   sÄ±rada kalan veriyi EN YENÄ°SÄ°YLE birleÅŸtiriyoruz.
“«“¬“�“ª“Ž“–“™“©“š“¢“|“M`“| ”$”,”-”G”I”H”“´€–”S/// Kanal hatasÄ± gÃ¼nlÃ¼ÄŸÃ¼ iÃ§in son yazma zamanÄ± (hata fÄ±rtinasÄ±nÄ± kÄ±sar).”i”[”O”[ ”‡””s” ”§”œ”‘”œ  šÌšC€•šÌT/// ðŸ—‚ Alt pencereden gelen kart aksiyonu. `CatiaProvider` baÄŸlar (tek yazÄ±cÄ±).  }Ÿ¾€Í }Z/// ðŸ’¬âž¡ï¸� Alt pencereden gelen cevap isteÄŸi. `CatiaProvider` baÄŸlar (tek yazÄ±cÄ±). ¢ ’��¢�k/// ðŸªŸâœ–ï¸� Kart penceresi kapandÄ± (X, Alt+F4, Ã¶lÃ¼m temizliÄŸi).
///
/// ðŸ“Œ AMAÃ‡: `CatiaProvider` bu olayla kart baÅŸÄ±na tuttuÄŸu GÃ–NDERÄ°M
/// imzalarÄ±nÄ±/parmak izlerini temizler. Temizlenmezse aynÄ± kart yeniden
/// pencereye aktarÄ±ldÄ±ÄŸÄ±nda ESKÄ° imza durur, ilk state "deÄŸiÅŸmemiÅŸ" sayÄ±lÄ±p
/// elenir ve pencere boÅŸ/karÄ±ÅŸÄ±k gÃ¶rÃ¼nÃ¼r.À HÀ HÀ GõÀ G�tÀ GõK/// Son gÃ¶nderilen gÃ¶rÃ¼ntÃ¼ (kart baÅŸÄ±na) â€” deÄŸiÅŸim tespiti iÃ§in.À IìÀ IíÀ IäÀ IëÀ IåÀ IÙÀ H�ãÀ IÙ�Í/// ðŸªŸ KapanÄ±ÅŸ sÃ¼recindeki pencereler â€” bunlara GÃ–NDERÄ°M YAPILMAZ.
///
/// ðŸ”´ Ã‡Ã–KMENÄ°N KÃ–KÃœ (29.09.2026): `invokeMethod` SENKRON beklidir;
/// pencere motoru yok edilirken uÃ§an bir Ã§aÄŸrÄ± native'da
/// **use-after-free** yapÄ±p uygulamayÄ± dÃ¼ÅŸÃ¼rÃ¼yordu. KullanÄ±cÄ± "iki pencere
/// aÃ§tÄ±m, birini kapatÄ±rken program Ã§Ã¶ktÃ¼" diyordu â€” Ã§Ã¼nkÃ¼ kapanan
/// pencere hÃ¢lÃ¢ `_pushAllCardWindows` sÄ±rasÄ±ndaki gÃ¶nderim kuyruÄŸundaydÄ±.   •2•2�Þ–ì�©/// ðŸªŸ KayÄ±tlÄ± KART penceresi HWND'leri (palet/ayarlar gibi diÄŸer alt
/// pencereler BÄ°LEREK dahil deÄŸildir).
///
/// ðŸ“Œ NEDEN: `PaletteService.ensure()` HWND'yi bulamayÄ±nca `listChildWindows`
///   listesinden bir pencere seÃ§iyordu ve `.last` alÄ±yordu. Kart penceresi
///   aÃ§Ä±ldÄ±ÄŸÄ±nda liste sonunda O bulunduÄŸu iÃ§in `setupPalette` yanlÄ±ÅŸ
///   pencereye uygulanÄ±yordu. Bu liste onlarÄ± ayÄ±rmak iÃ§in.   ——~—c3/// AÃ§Ä±k kart pencerelerinin instance id listesi.    ”õ”õ”ü  ”¯”¯}”î3/// Bu kart iÃ§in zaten aÃ§Ä±k bir pencere var mÄ±?   ™?™?™R  —š—š‚£™-�ˆ/// ðŸ—‚ Kart aksiyonu â†’ ANA PENCERE (alt pencereden gÃ¶nderilir).
///
/// ðŸ“Œ NEDEN BURADA: `onTileAction` geri Ã§aÄŸÄ±rmasÄ± yalnÄ±z ANA pencerede
///   baÄŸlanÄ±r (bkz. `CatiaProvider` constructor). Alt pencerede o statik
///   NULL'dur ve `?.call` sessizce hiÃ§bir ÅŸey yapmaz â€” kullanÄ±cÄ± "dÃ¼ÄŸmeler
///   Ã§alÄ±ÅŸmÄ±yor" der. Bu metot alt pencereye Ã¶zel, doÄŸrudan kanala yazar.   �û�ûž   žžž   ž)ž)ž-  šßšß„Ù�äƒ/// ðŸ’¬âž¡ï¸� Kart penceresindeki sorunun [buttonIndex]. dÃ¼ÄŸmesine tÄ±klanÄ±r.
///
/// ðŸ�› 29.09.2026 â€” KULLANICI: soru pencerede gÃ¶rÃ¼ndÃ¼ ama cevap dÃ¼ÄŸmesi
///   Ã§alÄ±ÅŸmÄ±yordu. NEDEN: alt pencere `cardWindowMode`'da native snapshot
///   dinlemez; `realWindowPid` boÅŸ olduÄŸu iÃ§in `answerDialog` `pid <= 0`
///   kontrolÃ¼nde `false` dÃ¶nÃ¼yor, tÄ±klama hiÃ§ native'e gitmiyordu. TÄ±klama
///   "tek yazÄ±cÄ±" kuralÄ± gereÄŸi ANA pencerede yapÄ±lmalÄ±dÄ±r.
///
/// ðŸ“Œ NOT: Pencere modu DIÅžINDA bu yol kullanÄ±lmaz; `CatiaProvider`
///   doÄŸrudan `NativeBridge.answerCatiaDialog` Ã§aÄŸÄ±rÄ±r. Alt pencere her
///   zaman kendi `CatiaProvider`'Ä±na sahip olduÄŸu iÃ§in buradaki geri
///   Ã§aÄŸÄ±rma yalnÄ±z ana pencerede baÄŸlÄ±dÄ±r (bkz. `onTileAction`).   ¤Á¤Á¤È   ¤Ù¤Ù¤à   ¤î¤î¤ú  £ £ ™¦¤¶�§/// ðŸªŸ KartÄ± baÄŸÄ±msÄ±z pencereye aktarÄ±r.
///
/// AynÄ± kart iÃ§in zaten pencere varsa **yenisi aÃ§Ä±lmaz**, mevcut olan Ã¶ne
/// getirilir (kullanÄ±cÄ± dÃ¼ÄŸmeye iki kez basÄ±p iki pencere istemez).
///
/// ðŸªŸ [initialRect] verilirse (oturum geri yÃ¼kleme) pencere kayÄ±tlÄ±
/// KONUM/BOYUTTA aÃ§Ä±lÄ±r. Konum, HWND bulunduktan SONRA uygulanÄ±r
/// (bkz. [_applySetupWhenReady]) Ã§Ã¼nkÃ¼ HWND o anda henÃ¼z yoktur.   ½½½  ¼¬¼¬€—½[/// BaÅŸlÄ±ktaki `|` karakterini temizler (argÃ¼man ayrÄ±ÅŸtÄ±rÄ±cÄ±sÄ±nÄ± bozmamak iÃ§in).   À @­À @­À @´   À @ÅÀ @ÅÀ @Ú  ½I½IŠAÀ @�ƒQ/// ðŸ“¤ KartÄ±n gÃ¼ncel verisini alt pencereye gÃ¶nderir.
///
/// Pencere henÃ¼z hazÄ±r deÄŸilse veri kaybolmaz: [_lastState]'a yazÄ±lÄ±r ve
/// `open` tamamlanÄ±nca gÃ¶nderilir.
///
/// ðŸ“Œ Ä°MZA FÄ°LTRESÄ°: `thumb` alanÄ± base64 PNG'dir (yÃ¼zlerce KB). Her turda
///   aynÄ± kareyi yeniden gÃ¶ndermek kanalÄ± boÄŸardÄ±; bu yÃ¼zden gÃ¶rÃ¼ntÃ¼
///   deÄŸiÅŸmedikÃ§e ATLANIR â€” alt pencerede o kare zaten duruyordur.
/// ðŸ“Œ Ä°MZA FÄ°LTRESÄ°: `thumb` alanÄ± base64 PNG'dir (yÃ¼zlerce KB). Her turda
/// aynÄ± kareyi yeniden gÃ¶ndermek kanalÄ± boÄŸardÄ±; bu yÃ¼zden gÃ¶rÃ¼ntÃ¼
/// deÄŸiÅŸmedikÃ§e ATLANIR â€” alt pencerede o kare zaten duruyordur.
///
/// ðŸ”´ HAZIR KAPISI: alt pencere `ready` gÃ¶ndermeden gÃ¶nderim yapÄ±lmaz.
///   Aksi halde native `CHANNEL_UNREGISTERED` dÃ¶ner ve her deneme 700 ms
///   bekler (bkz. [_ready] aÃ§Ä±klamasÄ±).   À L³À L³À LÄ   À LÎÀ LÎÀ LÕ   À LæÀ LæÀ Lû  À IõÀ Iõ„¾À Lž‚˜/// ðŸ”´ BACKPRESSURE: pencereye aynÄ± anda TEK gÃ¶nderim.
///
/// `desktop_multi_window`Ä±n `invokeMethod`'Ä± senkron beklemelidir (native
/// `channel_->InvokeMethod` hedef engine'in cevabÄ±nÄ± bekler). Alt pencere
/// meÅŸgulken (PNG decode + kartÄ±n tam yeniden Ã§izimi) ana pencere bloklanÄ±r;
/// `unawaited` Ã§aÄŸrÄ±lar birikince kanal kuyruÄŸu ÅŸiÅŸer ve uygulama kilitlenir â€”
/// pencereler arttÄ±kÃ§a bu "kasma" katlanarak bÃ¼yÃ¼r.
///
/// Burada pencere baÅŸÄ±na tek uÃ§uÅŸ izni verilir; sÄ±radaki veri [_queued]'ta
/// TUTULUR ve en gÃ¼ncel haliyle birleÅŸtirilerek gÃ¶nderilir (eski kareleri
/// atarÄ±z â€” arayÃ¼z zaten en son durumu gÃ¶stermeli).   À NÙÀ NÙÀ Nê   À NôÀ NôÀ Nû   À OÀ OÀ O!  À N¹À N¹„0À NÍ    À T,À T,À T3  À RïÀ Rï�kÀ T%�9/// ðŸªŸ KartÄ±n ÃœST pencere HWND'si (0 ise kayÄ±t yok / pencere henÃ¼z hazÄ±r deÄŸil).
///
/// ðŸ“Œ TAÅžIMA Ä°Ã‡Ä°N: Alt pencere bu deÄŸeri `state` ile alÄ±r. `GetForegroundWindow()`
///   Flutter'Ä±n Ã‡OCUK HWND'sini dÃ¶ndÃ¼rÃ¼r; o pencereye kurulan sÃ¼rÃ¼kleme
///   dÃ¶ngÃ¼sÃ¼ gÃ¶rÃ¼nmez pencereyi taÅŸÄ±maz.   À T`À T`„¨À Wu‚û/// ðŸªŸ KayÄ±t anÄ±ndaki AÃ‡IK kart pencerelerinin konum/boyutu.
///
/// DÃ¶nen anahtar = `instanceId`, deÄŸer = `WindowRect` (FÄ°ZÄ°KSEL piksel).
/// HWND'si olmayan / kÃ¼Ã§Ã¼ltÃ¼lmÃ¼ÅŸ pencereler **bilinÃ§li olarak boÅŸ bÄ±rakÄ±lÄ±r**
/// (konumlarÄ± anlamsÄ±z â€” bkz. `WindowRect.isUsable`).
///
/// ðŸ“Œ NEDEN ANA PENCEREDEN: alt pencere kendi engine'inde Ã§alÄ±ÅŸÄ±r ve
///   `window_manager`/native kÃ¶prÃ¼sÃ¼ orada gÃ¼venilir DEÄžÄ°LDÄ°R (bkz.
///   `DetailWindowService` notlarÄ±). HWND'leri `_hwnds`'te tutan da ana
///   penceredir; `GetWindowRect` saf Win32 Ã§aÄŸrÄ±sÄ± olduÄŸu iÃ§in motor
///   farkÄ± Ã¶nemsizdir.
///
/// ðŸ“Œ YALNIZ "OTURUM KAYDEDÄ°LÄ°RKEN" Ã§aÄŸrÄ±lÄ±r (bkz.
///   `CatiaProvider._snapshotLiveSession`): her taÅŸÄ±mada dinlenmez.   À ZÀ ZÀ Z   À Z)À Z)À Z5  À YÀ Y‚@À Z€ù/// ðŸªŸ Pencereyi kayÄ±tlÄ± [rect]'e taÅŸÄ±r (HWND hazÄ±r olduktan sonra Ã§aÄŸrÄ±lÄ±r).
///
/// BaÅŸarÄ±sÄ±z olursa sessizce geÃ§ilir â€” pencere zaten aÃ§Ä±ldÄ±, konum
/// uygulanamamasÄ± kullanÄ±cÄ±yÄ± KAYBETMÄ°Z (varsayÄ±lan yerleÅŸimde kalÄ±r).   À ]QÀ ]QÀ ]X   À ]dÀ ]dÀ ]k  À [TÀ [TƒÑÀ ]E�ý/// ðŸªŸâœ�ï¸� Kart PENCERESÄ° baÅŸlÄ±ÄŸÄ±nÄ± gÃ¼nceller (konum/boyut deÄŸiÅŸmez).
///
/// ðŸ“Œ NEDEN: `SetupCardWindow` baÅŸlÄ±ÄŸÄ± yalnÄ±z AÃ‡ILIÅžTA bir kez yazÄ±lÄ±yor.
/// Kart baÅŸlÄ±ÄŸÄ± deÄŸiÅŸince (kullanÄ±cÄ± pencerede Ã§ift tÄ±klayÄ±p yazÄ±nca)
/// Alt+Tab/gÃ¶rev Ã§ubuÄŸu ipucu ESKÄ° adÄ± gÃ¶steriyordu â†’ "baÅŸlÄ±k
/// deÄŸiÅŸmedi" izlenimi.
///
/// HWND yoksa (pencere henÃ¼z biÃ§imlenmedi/yok) sessizce geÃ§ilir; gÃ¶rev
/// `open` sÄ±rasÄ±nda zaten `pending.title` ile yeni baÅŸlÄ±k yazÄ±lÄ±r.   À bÀ bÀ b  À _+À _+ˆÀÀ b‚Ð/// ðŸª— `ready` geldikten SONRA pencerenin biÃ§imlendirilmesi.
///
/// ðŸ”´ NEDEN GECÄ°KLETÄ°LDÄ°: `SetupCardWindow`, Flutter Ã‡OCUK HWND'sini bulup
///   onu `CardChildProc` ile alt sÄ±nÄ±flar (sÃ¼rÃ¼kleme + boyutlandÄ±rma bu
///   alt sÄ±nÄ±flamaya baÄŸlÄ±dÄ±r). O Ã§ocuk pencere alt motorun `OnCreate`
///   â†’ `SetChildContent` adÄ±mÄ±nda oluÅŸur. Motor henÃ¼z baÅŸlamadÄ±ysa
///   `GetWindow(hwnd, GW_CHILD)` NULL dÃ¶ner, alt sÄ±nÄ±flama sessizce
///   atlanÄ±r ve pencere taÅŸÄ±namaz/kasÄ±lÄ± kalÄ±r. Log kanÄ±tÄ±: `setup=true`
///   24.397'de, alt motor 24.472'de baÅŸlÄ±yor.
///
/// `ready` mesajÄ± `setWindowMethodHandler` kaydÄ±ndan SONRA gÃ¶nderildiÄŸi
/// iÃ§in o noktada Ã§ocuk HWND kesinlikle hazÄ±rdÄ±r.   À hLÀ hLÀ hS  À gñÀ gñ‚ À hC>/// âœ• ile pencere kapandÄ±: kaydÄ± sil (kart listede KALIR).   À kVÀ kVÀ k]  À j—À j—�ùÀ kH€£/// ðŸ§ª Selftest: alt pencereye "kendi provider'Ä±ndan dÃ¼ÄŸmelere bas" der.
/// BÃ¶ylece zincir GERÃ‡EK yoldan sÄ±nanÄ±r: alt provider â†’ kanal â†’ ana pencere.   À m›À m›À m¢  À l–À l–‡À m•€Þ/// Kart penceresini GERCEKTEN kapatir (kart listede KALIR).
///
/// Onceki hata: `onClosed` yalniz kaydi siliyordu, pencere ekranda kaliyordu.
/// Simdi native WM_CLOSE gonderilir; HWND yoksa/basarisizsa pencere gizlenir.   À tNÀ tNÀ tS À t[À s§À s§‚¥À tC€�/// Yikilmis (ornegin Alt+F4) pencerelerin kaydini temizler. Sik cagrilir,
/// bu yuzden [force] olmadikca 1.5 sn'de bir calisir.   À vRÀ vR�3À v‰+/// Uygulama kapanÄ±ÅŸÄ± / test temizliÄŸi.   À x]À x]�·À xq    À z9À z9À zD  À zÀ z‰fÀ z1    À „×À „×
À „Þ  À „aÀ „a�õÀ „Í:/// `multi_window` argÃ¼manÄ±ndan kart kimliÄŸini Ã§Ã¶zer. …J…JÀ �…P              ƒ K€�€”€×��`�e�´‚‚J‚š‚Á‚Æƒƒ`ƒ¬ƒø„5„?„A„W„Y„›„Æ„ï„ñ……,…H…J…e……�…Ì…ñ…ó†,†e†g†¸†¿‡‡W‡Ž‡±‡Õ‡×ˆˆeˆšˆ°ˆ×ˆÝˆß‰‰J‰L‰•‰Ø‰ÚŠ'ŠUŠWŠžŠ¥Ší‹:‹ˆ‹ÆŒŒJŒkŒmŒ¿ŒÆ��]�‰�³�øŽ?Ž‹ŽÜ�(�G�N�™�â���]�’�Ú‘	‘‘H‘O‘š‘æ’4’ƒ’Ñ““K“‡“°“²“þ”M”q”�”«”­”à•.•0•y•¤•«•ý–L–––Ö———I—–—˜—Û—â˜-˜z˜É™™`™k™†™µ™æ™ùš3š:š?šAš”šÛšÝ›(›/›z›Èœœdœ¤œ«œó�?�ˆ�Î�÷žž%ž;žHžSžnžªžÑžõŸŸ'ŸXŸkŸ®ŸµŸºŸ¼  1 I _ u { Ž � Ð ×¡¡j¡º¡è¢$¢&¢t¢®¢ü¢þ£*£1££Ç£Î¤¤[¤ ¤½¤Õ¤ê¥¥¥U¥x¥Å¦	¦Q¦s¦¹¦ñ§!§/§X§_§~§Æ¨¨]¨g¨µ©©W©¢©Ð©Ý©þªDª\ªgª|ªµª¾ªâ«««^«¨«º«Í¬!¬+¬@¬G¬Z¬e¬„¬Á¬Ô­­+­L­’­Ø®'®3®a®‹®�®Í¯¯¯7¯A¯�¯Þ°$°s°¼°Æ±±d±³²²O² ²ï³/³D³~³°³ú´(´E´‹´£´Îµµµ3µ@µKµeµ¯µéµôµý¶¶8¶„¶­¶¹·	·[·«·ô¸@¸�¸ß¹ ¹V¹f¹{¹Å¹Ñ¹Ú¹íº9ºfºpº¸»»J»Š»ž»±»ñ¼¼7¼`¼u¼†¼œ¼£¼¨¼ª¼þ½E½G½€½‡½Ô½û¾¾Q¾š¾á¿0¿w¿¼¿ÃÀ @À @[À @‡À @©À @ÁÀ @âÀ @ïÀ AÀ A;À AYÀ A‚À AÍÀ BÀ B)À B0À BgÀ BoÀ B¸À BÿÀ CIÀ C”À CÝÀ D$À DFÀ DNÀ D˜À DäÀ EÀ EGÀ E�À E°À EÛÀ FÀ F9À FŠÀ FÅÀ G	À GÀ GBÀ GKÀ GRÀ G‡À GŒÀ GŽÀ GÒÀ HÀ H	À HOÀ HVÀ H�À HÚÀ I)À IpÀ I¾À IñÀ IóÀ J-À J4À J‚À JÐÀ K!À KtÀ K¬À K³À LÀ LPÀ LˆÀ L¯À LÊÀ LâÀ MÀ MÀ M9À M]À MlÀ MsÀ M•À M¬À M·À MÍÀ MúÀ N.À NRÀ NjÀ NsÀ N„À N©À N°À NµÀ N·À NÕÀ NðÀ OÀ O)À O6À O…À OÔÀ PÀ PCÀ PNÀ P_À PˆÀ PÀÀ PÓÀ QÀ QÀ QhÀ Q³À QúÀ RÀ RkÀ R�À RÖÀ RßÀ RæÀ RëÀ RíÀ SAÀ SHÀ SŸÀ SëÀ TÀ T\À T^À TžÀ T¥À TòÀ UDÀ U~À U…À UÎÀ VÀ VbÀ V«À VÆÀ VÍÀ WÀ WLÀ W�À W¶À WèÀ X À X+À XLÀ XlÀ X¬À XíÀ XôÀ YÀ Y
À YÀ Y]À YdÀ Y«À YöÀ ZDÀ ZuÀ Z À Z¼À [ À [KÀ [PÀ [RÀ [™À [ À [îÀ \8À \zÀ \–À \�À \èÀ ]/À ]{À ]¦À ]ÂÀ ^À ^QÀ ^ˆÀ ^›À ^ÌÀ ^ÔÀ _"À _'À _)À _iÀ _pÀ _¿À `À `VÀ `�À `åÀ a2À adÀ akÀ a·À aíÀ b4À bzÀ bÈÀ bìÀ c5À cdÀ cªÀ c±À cèÀ d
À d>À dIÀ dÀ dœÀ dÌÀ déÀ eÀ eÀ eaÀ e«À e÷À f@À fwÀ f­À féÀ füÀ g;À gBÀ g�À g¬À gèÀ gíÀ gïÀ h-À hhÀ hŠÀ hªÀ hÎÀ hòÀ iÀ i@À i`À i�À i£À iîÀ j=À jgÀ jŽÀ j“À j•À jáÀ k2À krÀ k™À k·À kÂÀ kÓÀ kþÀ l/À lBÀ l†À l�À l’À l”À lÔÀ lÛÀ m-À mÀ m·À mîÀ möÀ n4À n~À nÆÀ oÀ o*À obÀ ojÀ oµÀ oÿÀ pJÀ pnÀ p�À pÑÀ qÀ q<À qlÀ q²À q¹À qäÀ qýÀ rCÀ rWÀ r€À ršÀ r©À rñÀ s	À sÀ sÀ s:À s|À sžÀ s£À s¥À sóÀ t-À tlÀ t™À tºÀ tÍÀ uÀ u(À u/À uFÀ u\À ugÀ u¥À uâÀ vÀ vÀ vÀ v)À vBÀ vIÀ vNÀ vPÀ v{À v“À vªÀ v¿À vØÀ vñÀ wÀ w"À w>À wTÀ wkÀ w‚À w‡À w‰À w×À xÀ xYÀ x[À x‹À x©À xðÀ y8À y…À yÀÀ yøÀ zÀ zÀ zÀ zSÀ zoÀ zƒÀ z™À zµÀ {À {À {WÀ {¦À {ðÀ |?À |hÀ |ˆÀ |­À |ÈÀ |òÀ }À }<À }xÀ }£À }²À }¿À }ÊÀ }àÀ }õÀ ~AÀ ~[À ~gÀ ~µÀ ~ÿÀ MÀ •À ÃÀ €À €9À €RÀ €yÀ €±À €ÇÀ €ÛÀ �'À �NÀ �nÀ �²À �âÀ �íÀ ‚À ‚À ‚dÀ ‚¶À ‚ÌÀ ‚âÀ ‚ûÀ ƒBÀ ƒNÀ ƒdÀ ƒkÀ ƒ}À ƒ‚À ƒ„À ƒÒÀ „À „]À „_À „˜À „æÀ …	À …@À …vÀ …}À …‹À …ËÀ † À †KÀ †SÀ †XÀ †[   CardWindowService  ¹'