From 48eccb5e2497b692892c7b24ffa1ed7a6f8480b8 Mon Sep 17 00:00:00 2001 From: user Date: Mon, 20 Jul 2026 12:04:14 +0200 Subject: [PATCH] feat: add interactive FC01 heap4 card --- .gitignore | 9 + README.md | 41 +- doc/assets/a1-context.png | Bin 0 -> 28502 bytes doc/assets/a1-context.puml | 31 + doc/assets/a1-context.svg | 52 + doc/assets/a2-structure.png | Bin 0 -> 28865 bytes doc/assets/a2-structure.puml | 48 + doc/assets/a2-structure.svg | 71 + doc/assets/a5-flow.png | Bin 0 -> 32508 bytes doc/assets/a5-flow.puml | 29 + doc/assets/a5-flow.svg | 56 + doc/assets/a6-state.png | Bin 0 -> 25695 bytes doc/assets/a6-state.puml | 29 + doc/assets/a6-state.svg | 50 + doc/assets/a7-runtime.png | Bin 0 -> 14247 bytes doc/assets/a7-runtime.puml | 23 + doc/assets/a7-runtime.svg | 44 + doc/card-plan.md | 178 + doc/generated/main.tex | 312 ++ doc/main.tex | 411 +- ...2-4654524c-73f2-46df-83a3-d448ba6d6c5a.pdf | Bin 403169 -> 0 bytes ...3-4654524c-73f2-46df-83a3-d448ba6d6c5a.pdf | Bin 0 -> 334691 bytes json/card_source.json | 1172 +++++ json/card_spec.json | 811 ++++ web/app.css | 1 + web/app.js | 61 + web/card-data.json | 4038 +++++++++++++++++ web/figures/a1-context.puml | 31 + web/figures/a1-context.svg | 52 + web/figures/a2-structure.puml | 48 + web/figures/a2-structure.svg | 71 + web/figures/a5-flow.puml | 29 + web/figures/a5-flow.svg | 56 + web/figures/a6-state.puml | 29 + web/figures/a6-state.svg | 50 + web/figures/a7-runtime.puml | 23 + web/figures/a7-runtime.svg | 44 + web/index.html | 15 + web/style.css | 39 + 39 files changed, 7744 insertions(+), 210 deletions(-) create mode 100644 doc/assets/a1-context.png create mode 100644 doc/assets/a1-context.puml create mode 100644 doc/assets/a1-context.svg create mode 100644 doc/assets/a2-structure.png create mode 100644 doc/assets/a2-structure.puml create mode 100644 doc/assets/a2-structure.svg create mode 100644 doc/assets/a5-flow.png create mode 100644 doc/assets/a5-flow.puml create mode 100644 doc/assets/a5-flow.svg create mode 100644 doc/assets/a6-state.png create mode 100644 doc/assets/a6-state.puml create mode 100644 doc/assets/a6-state.svg create mode 100644 doc/assets/a7-runtime.png create mode 100644 doc/assets/a7-runtime.puml create mode 100644 doc/assets/a7-runtime.svg create mode 100644 doc/card-plan.md create mode 100644 doc/generated/main.tex delete mode 100644 doc/pdf/mpabi-inf-rv32i-freertos-01-heap4-v0.2-4654524c-73f2-46df-83a3-d448ba6d6c5a.pdf create mode 100644 doc/pdf/mpabi-inf-rv32i-freertos-01-heap4-v0.3-4654524c-73f2-46df-83a3-d448ba6d6c5a.pdf create mode 100644 json/card_source.json create mode 100644 json/card_spec.json create mode 100644 web/app.css create mode 100644 web/app.js create mode 100644 web/card-data.json create mode 100644 web/figures/a1-context.puml create mode 100644 web/figures/a1-context.svg create mode 100644 web/figures/a2-structure.puml create mode 100644 web/figures/a2-structure.svg create mode 100644 web/figures/a5-flow.puml create mode 100644 web/figures/a5-flow.svg create mode 100644 web/figures/a6-state.puml create mode 100644 web/figures/a6-state.svg create mode 100644 web/figures/a7-runtime.puml create mode 100644 web/figures/a7-runtime.svg create mode 100644 web/index.html create mode 100644 web/style.css diff --git a/.gitignore b/.gitignore index 7c8f381..281bd77 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,12 @@ build/*/prog.map build/*/*.o cmake-build-*/ compile_commands.json +doc/generated/*.aux +doc/generated/*.fdb_latexmk +doc/generated/*.fls +doc/generated/*.log +doc/generated/*.out +doc/generated/*.pdf +doc/generated/*.upa +doc/generated/*.upb +doc/generated/build-meta.tex diff --git a/README.md b/README.md index 9cd0480..96c0f87 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,14 @@ # Karta pracy: FreeRTOS `heap_4` -Trzy krótkie zadania po kartach `pointers` i `structures`: +Trzy programy wspierające kartę po K&R 5.4 oraz `structures`: -1. first-fit + split na arenie 256 B; +1. nagłówek, wyrównanie i geometria splitu na arenie 256 B; 2. lista adresowa + scalanie `A | B | C`; 3. niezmodyfikowany FreeRTOS-Kernel V11.3.0 `heap_4.c`. +W lekcji 30-minutowej programy 1–2 są demonstracjami z predykcją. Uczeń +debugguje wyłącznie program 3. + Task 3 linkuje upstream `portable/MemMang/heap_4.c` z commita `9b777ae5c5b8e9e456065a00294d1e5f5f9facf5`. @@ -14,8 +17,42 @@ Task 3 linkuje upstream `portable/MemMang/heap_4.c` z commita - RP2350: zgodny core+port z forka Raspberry Pi (`4f7299d6ea74`) oraz podstawiony stabilny allocator V11.3.0. +## Bezpośrednia kontynuacja K&R 5.4 + +Lekcja zaczyna się od gotowego projektu z poprzedniej karty: +`allocbuf[64]`, `allocp`, `alloc(5)`, `alloc(7)` oraz offsety +`0 -> 5 -> 12`. Ten alokator: + +- nie potrafi zwolnić pierwszego bloku i zachować drugiego; +- nie przechowuje rozmiaru ani stanu zwróconego obszaru; +- nie zapamiętuje i nie wykorzystuje dziur; +- odzyskuje pamięć wyłącznie przez reset całej areny. + +FC01 odpowiada na jedno pytanie projektowe: **co trzeba dodać, aby zwalniać +dowolny blok i ponownie wykorzystywać powstałe miejsce?** Odpowiedzią jest +mechanika `heap_4`: nagłówek bloku, lista wolnych bloków uporządkowana po +adresie, first-fit, split oraz scalanie fizycznych sąsiadów. + +FreeRTOS udostępnia kilka wymiennych implementacji tego samego API i projekt +linkuje dokładnie jedną. `heap_1`, `heap_2`, `heap_3` i `heap_5` są w tej +karcie tylko jednominutową mapą kontekstu. Cała obserwowana implementacja to +niezmodyfikowany [`heap_4.c` z FreeRTOS-Kernel V11.3.0](https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/V11.3.0/portable/MemMang/heap_4.c). + +Lekcja trwa 30 minut. Task 1 i Task 2 są krótkimi demonstracjami z predykcją; +Task 3 jest jedynym centralnym przebiegiem ucznia w debuggerze. Obraz dla +Pico 2 W musi być zbudowany i wgrany przed zajęciami. `heap_4` jest wyborem +linkera projektu, nie sprzętowym mechanizmem RP2350. + ## Jedno wejście: `stemctl` +Centralny przebieg lekcji, przygotowany przed wejściem uczniów: + +```bash +stemctl debug rp2350 freertos heap4 3 --device /dev/bus/usb/BBB/DDD +``` + +Pełna weryfikacja repozytorium wykonywana poza 30-minutową lekcją: + ```bash stemctl series cards fetch freertos heap4 stemctl test native-amd64 freertos heap4 1 diff --git a/doc/assets/a1-context.png b/doc/assets/a1-context.png new file mode 100644 index 0000000000000000000000000000000000000000..1d666d60a2bd29590064becd2c31f33559cd79f6 GIT binary patch literal 28502 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\n01 A / B / C experiment\nrequests payload bytes" as APP +rectangle "<>\n02 pvPortMalloc / vPortFree\nheap statistics" as API +rectangle "<>\n03 heap_4\nfirst-fit · split · coalesce" as H4 +rectangle "<>\n04 ucHeap[4096]\nheaders + payload" as ARENA +rectangle "<>\n05 Hazard3 / RV32I\nGDB · registers · memory" as TARGET + +APP -down-> API : request / release +API -down-> H4 : direct C call +H4 -down-> ARENA : manages +ARENA -down-> TARGET : stored in RAM + +note right of H4 +heap_1: allocate only +heap_2: free, no coalesce +heap_3: libc wrapper +heap_4: free + coalesce +heap_5: multiple regions +end note +@enduml diff --git a/doc/assets/a1-context.svg b/doc/assets/a1-context.svg new file mode 100644 index 0000000..eb1ad43 --- /dev/null +++ b/doc/assets/a1-context.svg @@ -0,0 +1,52 @@ +A1 CONTEXT — from linear cursor to reusable heap«application»01 A / B / C experimentrequests payload bytes«public API»02 pvPortMalloc / vPortFreeheap statistics«allocator»03 heap_4first-fit · split · coalesce«arena»04 ucHeap[4096]headers + payload«target»05 Hazard3 / RV32IGDB · registers · memoryheap_1: allocate onlyheap_2: free, no coalesceheap_3: libc wrapperheap_4: free + coalesceheap_5: multiple regionsrequest / releasedirect C callmanagesstored in RAM \ No newline at end of file diff --git a/doc/assets/a2-structure.png b/doc/assets/a2-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..2f802e8e1f3f805296c6596d39f66f7de8e482d8 GIT binary patch literal 28865 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Ó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 IjA_vS0;FUB@&Et; literal 0 HcmV?d00001 diff --git a/doc/assets/a2-structure.puml b/doc/assets/a2-structure.puml new file mode 100644 index 0000000..262ad72 --- /dev/null +++ b/doc/assets/a2-structure.puml @@ -0,0 +1,48 @@ +@startuml +scale 620 height +top to bottom direction +skinparam backgroundColor transparent +skinparam shadowing false +skinparam defaultFontName Monospace +skinparam defaultFontSize 10 +skinparam classBorderColor #2c7794 +skinparam classBackgroundColor #edf6fa +skinparam ArrowColor #8095a1 +title A2 STRUCTURE — in-band metadata and address order + +class "01 Block header" as HEADER { + next : BlockLink_t* + size : size_t +} +class "Allocated block" as ALLOC { + 02 header + 13 byte request + aligned total = 32 bytes + payload begins after header +} +class "03 Free remainder" as REM { + own header + size = 224 bytes +} + +HEADER *-- ALLOC : precedes payload +ALLOC -down-> REM : split preserves 256 + +class "04 Address-ordered free list" as LIST { + previous < inserted < current +} +class "05 Right neighbour" as RIGHT { + block + block.size == current +} +class "06 Left neighbour" as LEFT { + previous + previous.size == block +} + +REM -down-> LIST : insert by address +LIST -down-> RIGHT : join first +RIGHT -down-> LEFT : then join left + +note right of LIST +Ordering makes both physical +neighbours locally visible. +end note +@enduml diff --git a/doc/assets/a2-structure.svg b/doc/assets/a2-structure.svg new file mode 100644 index 0000000..cc49cc7 --- /dev/null +++ b/doc/assets/a2-structure.svg @@ -0,0 +1,71 @@ +A2 STRUCTURE — in-band metadata and address order01 Block headernext : BlockLink_t*size : size_tAllocated block02 header + 13 byte requestaligned total = 32 bytespayload begins after header03 Free remainderown headersize = 224 bytes04 Address-ordered free listprevious < inserted < current05 Right neighbourblock + block.size == current06 Left neighbourprevious + previous.size == blockOrdering makes both physicalneighbours locally visible.precedes payloadsplit preserves 256insert by addressjoin firstthen join left \ No newline at end of file diff --git a/doc/assets/a5-flow.png b/doc/assets/a5-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc1bcf1ca1573705456f94688eea221c5ce1881 GIT binary patch literal 32508 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

elaA0vNA~?_z#`YV$N#&>3fbF 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

gOXeqZ&_G<V^>;kz+#S+_oI87kS!@CXGm<4Z`( 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 largest" as S5 +rectangle "06 FREE B\ninsert by address\njoin right + left" as S6 +rectangle "07 E02 COALESCED\n1 free block\nfinal = initial" as S7 +rectangle "08 OOM CHECK\nNULL · hook=1\nasserts=0 · PASS=1" as S8 + +S1 -right-> S2 : pvPortMalloc +S2 -right-> S3 : split remainder +S3 -right-> S4 : vPortFree +S4 -down-> S5 : heap stats +S5 -left-> S6 : continue +S6 -left-> S7 : coalesce +S7 -left-> S8 : oversized request +@enduml diff --git a/doc/assets/a5-flow.svg b/doc/assets/a5-flow.svg new file mode 100644 index 0000000..fc2db0e --- /dev/null +++ b/doc/assets/a5-flow.svg @@ -0,0 +1,56 @@ +A5 FLOW — allocate, fragment, coalesce, verify01 RESETinitial free = 408002 ALLOC A24 byte payloadfirst-fit + split03 ALLOC B / C40 + 16 byte payloadafter = 395204 FREE A / CB remains allocated05 E01 FRAGMENTED2 free blockscurrent > largest06 FREE Binsert by addressjoin right + left07 E02 COALESCED1 free blockfinal = initial08 OOM CHECKNULL · hook=1asserts=0 · PASS=1pvPortMallocsplit remaindervPortFreeheap statscontinuecoalesceoversized request \ No newline at end of file diff --git a/doc/assets/a6-state.png b/doc/assets/a6-state.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e025d0e58934b8971c6847ba312e38eb17ebab GIT binary patch literal 25695 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 Free : 01 one list node +Free --> Allocated : 02 first-fit + split\ncurrent free decreases +Allocated --> Fragmented : free A and C +Fragmented : 03 two free blocks +Fragmented : sum free > largest block +Fragmented --> Coalesced : free B\naddress-order joins neighbours +Coalesced : 04 one free block +Coalesced : current free = initial free +Coalesced --> OOMChecked : request > arena +OOMChecked : NULL + hook once +OOMChecked --> [*] + +state "05 minimum-ever" as MIN +Allocated -right-> MIN : records low watermark +Fragmented -right-> MIN : does not rise +Coalesced -right-> MIN : history remains +@enduml diff --git a/doc/assets/a6-state.svg b/doc/assets/a6-state.svg new file mode 100644 index 0000000..12a9095 --- /dev/null +++ b/doc/assets/a6-state.svg @@ -0,0 +1,50 @@ +A6 STATE — block state and heap statisticsFreeAllocatedFragmented03 two free blockssum free > largest blockCoalesced04 one free blockcurrent free = initial freeOOMCheckedNULL + hook once05 minimum-ever01 one list node02 first-fit + splitcurrent free decreasesfree A and Cfree Baddress-order joins neighboursrequest > arenarecords low watermarkdoes not risehistory remains \ No newline at end of file diff --git a/doc/assets/a7-runtime.png b/doc/assets/a7-runtime.png new file mode 100644 index 0000000000000000000000000000000000000000..016896463ad8e51dc406a36b80a53b4d6575f2e0 GIT binary patch literal 14247 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\n01 task03 C\nA/B/C experiment" as SRC +rectangle "<>\n02 ELF + image\nheap_4 symbols" as ELF +rectangle "<>\n03 fragmented\nblocks=2 · aligned=1" as E1 +rectangle "<>\n04 ucHeap[4096]\nheaders + payload" as MEM +rectangle "<>\n05 coalesced\nfinal=initial · blocks=1\nOOM=1 · PASS=1" as E2 + +SRC --> ELF : compile + link +ELF --> E1 : reset / load / replay +E1 --> MEM : inspect bytes +MEM --> E2 : continue +@enduml diff --git a/doc/assets/a7-runtime.svg b/doc/assets/a7-runtime.svg new file mode 100644 index 0000000..62a80d5 --- /dev/null +++ b/doc/assets/a7-runtime.svg @@ -0,0 +1,44 @@ +A7 RUNTIME — one artifact, two checkpoints, one proof«source»01 task03 CA/B/C experiment«artifact»02 ELF + imageheap_4 symbols«checkpoint E01»03 fragmentedblocks=2 · aligned=1«memory»04 ucHeap[4096]headers + payload«checkpoint E02»05 coalescedfinal=initial · blocks=1OOM=1 · PASS=1compile + linkreset / load / replayinspect bytescontinue \ No newline at end of file diff --git a/doc/card-plan.md b/doc/card-plan.md new file mode 100644 index 0000000..e7ba896 --- /dev/null +++ b/doc/card-plan.md @@ -0,0 +1,178 @@ +# FC01 — FreeRTOS `heap_4`: od kursora do wolnych bloków + +## Decyzja dydaktyczna + +To jest jedna 30-minutowa lekcja i bezpośrednia kontynuacja projektu +K&R 5.4 z karty C07. Karta nie uczy pięciu implementacji heap jako pięciu +równorzędnych tematów. `heap_1`, `heap_2`, `heap_3` i `heap_5` zajmują łącznie +maksymalnie minutę kontekstu. Cała właściwa praca dotyczy `heap_4`. + +Task 1 i Task 2 są krótkimi modelami prowadzonymi przez nauczyciela. Uczeń +najpierw zapisuje predykcję, ale nie buduje i nie debugguje tych programów +osobno podczas lekcji. Task 3, linkujący upstream `heap_4.c`, jest jedynym +centralnym przebiegiem ucznia. + +## Stan wejściowy z K&R 5.4 + +Uczeń przychodzi z działającym kodem: + +```text +allocbuf[64] +allocp +allocator_reset() +alloc_local(5) -> offset 0 +alloc_local(7) -> offset 5 +allocp -> offset 12 +alloc_local(0) oraz OOM -> NULL bez przesunięcia kursora +``` + +Nie powtarzamy sposobu działania tego kodu. Zaczynamy od jego granicy: + +> Jak zwolnić obszar 5 B spod offsetu 0, zachować późniejszy obszar 7 B spod +> offsetu 5 i ponownie wykorzystać powstałą dziurę? + +W projekcie nie istnieje operacja zwolnienia pojedynczego obszaru. Nawet proste +cofnięcie kursora unieważniłoby wszystkie późniejsze przydziały. Brakuje +tożsamości bloku, jego rozmiaru, zbioru dziur i mechanizmu ich łączenia. + +## Cel w jednym zdaniu + +Po 30 minutach uczeń potrafi wyjaśnić i pokazać w debuggerze, jak `heap_4` +dodaje do liniowej areny nagłówki, wybór first-fit, podział bloku, listę wolnych +bloków oraz scalanie sąsiadów, a następnie odróżnić bieżącą ilość wolnej +pamięci, największy wolny blok i minimum-ever. + +## Most K&R 5.4 -> `heap_4` + +| K&R 5.4 — stan projektu | Ograniczenie | `heap_4` — nowy mechanizm | +| --- | --- | --- | +| `allocbuf[64]` i jeden `allocp` | istnieje tylko wolny ogon areny | `ucHeap[]` i bloki opisane nagłówkami | +| wynik to surowy adres | allocator nie zna później rozmiaru obszaru | `BlockLink_t` przed payloadem przechowuje rozmiar | +| kolejne przydziały tylko przesuwają kursor | nie można użyć dziury | lista wolnych bloków i wybór first-fit | +| brak zwalniania pojedynczego obszaru | reset odzyskuje wszystko naraz | `vPortFree()` odzyskuje wskazany blok | +| brak relacji między dziurami | sąsiednie dziury pozostają rozdzielone | porządek adresowy i coalescing w obie strony | +| tylko sukces albo `NULL` | brak informacji o fragmentacji | free, largest, liczba bloków i minimum-ever | + +W realnym `heap_4.c` najwyższy bit `xBlockSize` oznacza blok przydzielony. +Uproszczone modele Task 1–2 pokazują geometrię i listę, ale nie odtwarzają tego +bitu. To jawna granica modelu. + +## Przygotowanie przed lekcją + +Budowanie, flashowanie i wykrywanie debug probe nie wchodzą do budżetu 30 minut. +Przed wejściem uczniów: + +1. zbuduj Task 3 dla `pico2_w` / RP2350 RISC-V; +2. wgraj zweryfikowany obraz i otwórz sesję na tym samym ELF; +3. ustaw pierwszy breakpoint na `heap4_fragmented_checkpoint`; +4. przygotuj widok `ucHeap`, `g_fragmented_stats`, `g_final_stats`, + `xFreeBytesRemaining` i `xMinimumEverFreeBytesRemaining`; +5. przygotuj Hazard3 jako awaryjny zamiennik — podczas lekcji użyj jednej + platformy, nigdy obu. + +`heap_4` jest implementacją wybraną i linkowaną przez projekt. Nie jest +sprzętowym heapem ani peryferium RP2350. + +## Przebieg 30 minut + +| Czas | Tryb | Działanie i dowód | +| --- | --- | --- | +| 0–3 min | problem | Przypomnij wyłącznie offsety `0 -> 5 -> 12`. Uczeń próbuje zwolnić pierwszy obszar bez utraty drugiego i nazywa brakującą operację. | +| 3–4 min | kontekst | Jedno zdanie: FreeRTOS dostarcza wymienne implementacje tego samego API; ta karta i oficjalne przykłady Pico 2 W linkują `heap_4`. | +| 4–9 min | Task 1 — demo | Do żądania dodaj nagłówek, wyrównaj rozmiar, wybierz pierwszy pasujący blok i podziel go. Uczeń zapisuje `wanted` i `remainder` przed odsłonięciem wyniku. | +| 9–16 min | Task 2 — demo | Dla `A:48 | B:48 | C:48` pokaż listę `A -> C`, wstaw `B` po adresie i sprawdź scalenie w prawo oraz w lewo: `2 bloki / 96 B / largest 48 B -> 1 blok / 144 B / largest 144 B`. | +| 16–27 min | Task 3 — RUN | Na przygotowanym Pico 2 W przejdź przez prawdziwy `heap_4.c`: trzy alokacje, free A i C, checkpoint z dwoma blokami, free B, checkpoint z jednym blokiem, OOM=`NULL` i jeden malloc-failed hook. Uczeń wypełnia tabelę relacji. | +| 27–30 min | wyjście | Uczeń wymienia trzy dodatki ponad K&R (`header`, `free list`, `coalescing`) i wyjaśnia: suma wolnych bajtów może być większa od największego bloku, a minimum-ever nie rośnie po `free`. | + +## Task 1 — model nagłówka i splitu + +Task 1 nie jest osobnym laboratorium. Na RV32 nagłówek modelu ma 8 B, więc +żądanie 13 B daje `wanted=24 B` i `remainder=232 B` z areny 256 B. Na AMD64 +odpowiednie wartości to 16 B, 32 B i 224 B. Różnica ABI jest tylko pomocą w +zrozumieniu `sizeof` i wyrównania; podczas głównego przebiegu obowiązuje RP2350. + +Predykcja ucznia: + +```text +free list: [16 B] -> [80 B] -> [160 B] +request + header po wyrównaniu: 24 B +first-fit wybiera: __________ +po split: allocated ______ B, remainder ______ B +``` + +Wykonywalny Task 1 dowodzi obecnie geometrii splitu jednego bloku. Samo +przeszukanie dwóch kandydatów jest elementem demonstracji i realnego +`pvPortMalloc()`, dlatego nie opisujemy Task 1 jako pełnego testu first-fit. + +## Task 2 — model listy adresowej i coalescingu + +```text +pamięć: [ A:48 FREE ][ B:48 USED ][ C:48 FREE ] +free list: A --------------------------------> C + +vPortFree(B) + 1. wstaw B pomiędzy A i C według adresu; + 2. jeśli end(B) == addr(C), połącz B+C; + 3. jeśli end(A) == addr(BC), połącz A+BC; + +wynik: [ ABC:144 FREE ] +free list: A -> END +``` + +Uczeń przed odsłonięciem rysuje listę i wpisuje `2 -> 1`, `96 -> 144` oraz +`48 -> 144` odpowiednio dla liczby bloków, sumy i largest. + +## Task 3 — centralny przebieg upstream `heap_4.c` + +```text +RESET/INIT + -> ALLOC A(24) + -> ALLOC B(40) + -> ALLOC C(16) + -> FREE A + -> FREE C + -> heap4_fragmented_checkpoint # 2 free blocks + -> FREE B + -> OOM request + -> task03_debug_checkpoint # 1 free block, pass=1 +``` + +Uczeń zapisuje tylko relacje, ponieważ dokładne bajty zależą od ABI i +konfiguracji: + +| Obserwacja | Oczekiwany związek | +| --- | --- | +| po trzech alokacjach | `after_allocations < initial_free` | +| stan pofragmentowany | `free_blocks == 2`, `largest < total_free` | +| po `free(B)` | `final_free == initial_free`, `free_blocks == 1` | +| low-water mark | `minimum_ever <= after_allocations` i nie rośnie po free | +| OOM | wynik `NULL`, hook `1`, brak uszkodzenia listy | + +Minimalny dowód w GDB: + +```gdb +p g_fragmented_stats +p g_final_stats +p xFreeBytesRemaining +p xMinimumEverFreeBytesRemaining +p xStart +p pxEnd +x/96bx ucHeap +``` + +## Kryterium zaliczenia + +Uczeń zalicza lekcję, jeżeli: + +- wskaże, dlaczego jeden kursor nie wystarcza do zwolnienia obszaru ze środka; +- rozróżni nagłówek allocatora od payloadu i stosu `sp`; +- przewidzi przejście wolnej listy `2 -> 1` po zwolnieniu B; +- wyjaśni różnicę `total free` kontra `largest free block`; +- wyjaśni, dlaczego minimum-ever nie wraca po `free`; +- pokaże `aligned=1 oom=1 hooks=1 asserts=0 pass=1` w Task 3. + +## Poza lekcją + +Jako rozszerzenie lub pracę własną pozostają: pełne czytanie `heap_4.c`, +uruchomienie Task 1–2 na AMD64 i Hazard3, samodzielny deploy RP2350 oraz +porównanie z `heap_1`, `heap_2`, `heap_3` i `heap_5`. diff --git a/doc/generated/main.tex b/doc/generated/main.tex new file mode 100644 index 0000000..3130740 --- /dev/null +++ b/doc/generated/main.tex @@ -0,0 +1,312 @@ +% Generated from json/card_source.json by tools/render_card.py. +% Do not edit manually; update the JSON and regenerate. + +\documentclass[12pt,a4paper]{article} + +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[utf8]{inputenc} +\usepackage[polish]{babel} +\usepackage{csquotes} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{xcolor} +\usepackage[a4paper,left=2.15cm,right=2.15cm,top=0.5cm,bottom=0.5cm,headheight=24mm,headsep=3mm,includehead]{geometry} +\usepackage{eso-pic} +\usepackage{marginnote} +\usepackage{array} +\usepackage{tabularx} +\usepackage{graphicx} +\usepackage{pdflscape} +\usepackage{float} +\usepackage{silence} +\WarningFilter{soulutf8}{This package is obsolete} +\usepackage{pdfcomment} +\usepackage{enumitem} +\usepackage{needspace} +\usepackage{fancyhdr} +\usepackage{lastpage} +\usepackage{microtype} +\usepackage[most]{tcolorbox} +\usepackage{qrcode} +\IfFileExists{references.bib}{% + \usepackage[backend=biber,style=numeric,sorting=none]{biblatex}% + \addbibresource{references.bib}% +}{} + +\hypersetup{hidelinks} + +\IfFileExists{build-meta.tex}{% + \input{build-meta.tex}% +}{% + \newcommand{\BuildCommit}{lokalna}% +} + +\newcommand{\DocumentAuthor}{M. Pabiszczak} +\newcommand{\DocumentYear}{2026} +\newcommand{\CardSeries}{freertos-c} +\newcommand{\CardNumber}{01} +\newcommand{\CardCount}{15} +\newcommand{\CardSlug}{heap4-mechanics} +\newcommand{\CardVersion}{v00.01} +\newcommand{\DocumentUUID}{87e48095-7793-54e3-9230-4e61d31bd459} + +\newcommand{\EmptyCheck}{\(\square\)} +\newcommand{\EscAnswerLines}[1][3]{\par\noindent\dotfill\par\noindent\dotfill\par\noindent\dotfill} +\newcommand{\EscWriteRow}[1][2.8em]{\rule{0pt}{#1}} +\setlength{\parindent}{0pt} +\setlength{\parskip}{0.45em} +\setlength{\headheight}{24mm} +\setlength{\headsep}{3mm} +\setlength{\footskip}{8mm} +\setlength{\marginparwidth}{1.5cm} +\setlength{\marginparsep}{0.25cm} +\renewcommand{\arraystretch}{1.22} +% Margin separator lines disabled for layout trial. + +\newcommand{\ESCPageResourceHeader}{% + \begingroup% + \setlength{\parskip}{0pt}% + \setlength{\fboxsep}{0pt}% + \setlength{\fboxrule}{0.35pt}% + \setlength{\arrayrulewidth}{0.35pt}% + \noindent\fbox{% + \begin{minipage}[c][23.5mm][c]{\dimexpr\textwidth-2\fboxrule\relax}% + \begin{minipage}[c][23mm][c]{24mm}\centering% + \href{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-heap4}{\qrcode[level=L,height=22mm]{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-heap4}}% + \end{minipage}% + \vrule width0.35pt% + \begin{minipage}[c][23mm][c]{\dimexpr\linewidth-48mm-0.7pt\relax}% + \setlength{\tabcolsep}{0pt}% + \renewcommand{\arraystretch}{0}% + \begin{tabularx}{\linewidth}{@{}p{\dimexpr0.50000000\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.15126050\linewidth-\arrayrulewidth\relax}|X@{}}% + \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries TITLE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{7.7}{7.9}\selectfont\ttfamily\bfseries heap\_4: From Linear Cursor to Reusable Blocks}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries VER.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.6}{6.8}\selectfont\ttfamily\bfseries v00.01}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries DATETIME}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries 2026-07-20T00:00:00+02:00}\hspace{0.45mm}}\par} \\% + \end{tabularx}% + \par\nointerlineskip% + \hrule height0.35pt% + \nointerlineskip% + \begin{tabularx}{\linewidth}{@{}p{\dimexpr0.50000000\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.25210084\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.14285714\linewidth-\arrayrulewidth\relax}|X@{}}% + \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries PROJECT}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{7.7}{7.9}\selectfont\ttfamily\bfseries Freestanding C nad FreeRTOS}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries SERIES}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries FreeRTOS C}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries CARD}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries 01/15}\hspace{0.45mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{3.2}{3.4}\selectfont\ttfamily\bfseries SHEET}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{6.4}{6.6}\selectfont\ttfamily\bfseries \thepage/\pageref{LastPage}}\hspace{0.45mm}}\par} \\% + \end{tabularx}% + \par\nointerlineskip% + \hrule height0.35pt% + \nointerlineskip% + \begin{tabularx}{\linewidth}{@{}p{\dimexpr0.05882353\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.05042017\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.14705882\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.09243697\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.07563025\linewidth-\arrayrulewidth\relax}|p{\dimexpr0.07563025\linewidth-\arrayrulewidth\relax}|X@{}}% + \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries SUBJ.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries Inf.}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries PROG.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries CORE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries SCOPE}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries LEVEL}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hspace{0.15mm}{\fontsize{2.85}{3}\selectfont\ttfamily\bfseries POS.}\par\nointerlineskip\vspace{0.12mm}\noindent\makebox[\linewidth][r]{{\fontsize{4.45}{4.65}\selectfont\ttfamily\bfseries —}\hspace{0.15mm}}\par} & \parbox[c][5.19414mm][c]{\linewidth}{\hbox to\linewidth{\hspace{0.35mm}{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries GITEA UUID}\hfill{\fontsize{3.4}{3.75}\selectfont\ttfamily 87e48095-7793-54e3-9230-4e61d31bd459}\hspace{0.35mm}}\par\nointerlineskip\hbox to\linewidth{\hspace{0.35mm}{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries CARD UUID} {\fontsize{3.4}{3.75}\selectfont\ttfamily aea09ab7-9bfd-5368-8d1b-c8724871c1a7}\hfill{\fontsize{3.4}{3.75}\selectfont\ttfamily\bfseries AUTHOR M. Pabiszczak}\hspace{0.35mm}}} \\% + \end{tabularx}% + \par\nointerlineskip% + \hrule height0.35pt% + \nointerlineskip% + \begin{tabularx}{\linewidth}{@{}X@{}}% + \parbox[c][3.46276mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{4.5}{4.85}\selectfont\ttfamily\bfseries GITEA} {\fontsize{4.5}{4.85}\selectfont\ttfamily\href{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-heap4}{\nolinkurl{https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-heap4}}}} \\% + \end{tabularx}% + \par\nointerlineskip% + \hrule height0.35pt% + \nointerlineskip% + \begin{tabularx}{\linewidth}{@{}X@{}}% + \parbox[c][3.46276mm][c]{\linewidth}{\hspace{0.45mm}{\fontsize{4.5}{4.85}\selectfont\ttfamily\bfseries HTML} {\fontsize{4.5}{4.85}\selectfont\ttfamily\href{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/aea09ab7-9bfd-5368-8d1b-c8724871c1a7}{\nolinkurl{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/aea09ab7-9bfd-5368-8d1b-c8724871c1a7}}}} \\% + \end{tabularx}% + \end{minipage}% + \vrule width0.35pt% + \begin{minipage}[c][23mm][c]{24mm}\centering% + \href{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/aea09ab7-9bfd-5368-8d1b-c8724871c1a7}{\qrcode[level=L,height=22mm]{https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/aea09ab7-9bfd-5368-8d1b-c8724871c1a7}}% + \end{minipage}% + \end{minipage}% + }% + \endgroup% +} + +\pagestyle{fancy} +\fancyhf{} +\fancyhead[C]{\ESCPageResourceHeader} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} + +\newcommand{\ESCMarginTag}[4]{% + \hspace*{#1}\textcolor{#2}{#3~#4}% +} +\newcommand{\ESCSectionBlockStart}{% + \Needspace{8\baselineskip}% + \par\vspace{0.35em}% + \noindent\textcolor{black!28}{\rule{\textwidth}{0.35pt}}% + \par\vspace{0.15em}% +} +\newcommand{\ESCSectionBlockEnd}{% + \par\vspace{0.45em}% +} +\newcommand{\ESCTinyStepSeparator}{% + \par\vspace{0.10em}% + \noindent{\color{black!18}\leaders\hbox{\rule{0.60em}{0.22pt}\hspace{0.38em}}\hfill\kern0pt}% + \par\vspace{0.10em}% +} +\newtcolorbox{ESCTaskFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black,boxsep=0pt,left=1.4mm,right=1.4mm,top=0.8mm,bottom=0.8mm,colbacktitle=black!7,coltitle=black,title={\ttfamily\bfseries TASK\quad #1}} +\newtcolorbox{ESCBlockFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black!55,boxsep=0pt,left=1.0mm,right=1.0mm,top=0.6mm,bottom=0.6mm,colbacktitle=black!4,coltitle=black,title={\ttfamily\bfseries BLOCK\quad #1}} +\newtcolorbox{ESCStepFrame}[1]{enhanced,breakable,arc=0pt,boxrule=0.35pt,colback=white,colframe=black!28,boxsep=0pt,left=0.8mm,right=0.8mm,top=0.45mm,bottom=0.45mm,colbacktitle=black!2,coltitle=black,title={\ttfamily STEP\quad #1}} +\newtcolorbox{ESCConclusionFrame}{enhanced,breakable,arc=0pt,boxrule=0.45pt,colback=blue!2,colframe=blue!45!black,boxsep=0pt,left=1.2mm,right=1.2mm,top=0.7mm,bottom=0.7mm,colbacktitle=blue!7,coltitle=black,title={\ttfamily\bfseries WNIOSEK}} + +\newcommand{\ESCLearningTreeWidget}{% + \reversemarginpar + \marginnote[% + \begin{minipage}{\marginparwidth}% + \raggedright + {\fontsize{3.55}{3.95}\selectfont\ttfamily + \begin{minipage}[t]{\marginparwidth}% + \raggedright + {\bfseries\textcolor{black!65}{TECH}\par}% + \vspace{0.08em}% + \hspace*{0.00em}\textcolor{red}{WE~01}\textcolor{black!48}{}\par% + \hspace*{0.28em}\textcolor{orange!85!black}{EK~LOCAL~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.01}{Uczeń odtwarza dwa checkpointy Hazard3 i odróżnia current free, largest free block oraz\textCR minimum-ever.}}\par% + \hspace*{0.54em}\textcolor{blue!70!black}{KW~LOCAL~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.01}{Łączy kod, diagram i zweryfikowany dowód.}}\par% + \end{minipage}% + }% + \end{minipage}% + ]{} + \normalmarginpar + + \marginnote{% + \begin{minipage}{\marginparwidth}% + \raggedright + {\fontsize{3.55}{3.95}\selectfont\ttfamily + \hspace*{0.06cm}% + \begin{minipage}[t]{\dimexpr\marginparwidth-0.06cm\relax}% + \raggedright + {\bfseries\textcolor{black!65}{OG}\par}% + \vspace{0.08em}% + \hspace*{0.00em}\textcolor{red}{WE~01}\textcolor{black!48}{}\par% + \hspace*{0.28em}\textcolor{green!50!black}{EN~LOCAL~EN~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.01}{Uczeń wyjaśnia nagłówek, wyrównanie, first-fit, split, adresową listę wolnych bloków i\textCR dwustronne coalescing.}}\par% + \hspace*{0.54em}\textcolor{blue!70!black}{KW~LOCAL~KW~RTOS}\textcolor{black!48}{\pdftooltip[width=\textwidth]{.01}{Łączy kod, diagram i zweryfikowany dowód.}}\par% + \end{minipage}% + }% + \end{minipage}% + } + +} + +\begin{document} +\sloppy + +\vspace{1.0em} +\noindent{\Large\bfseries Cel karty}\par +\vspace{0.35em} +Uczeń przechodzi od liniowego kursora z K\&R 5.4 do wielokrotnego użycia tej samej areny: rozpoznaje nagłówek bloku, first-fit, split oraz dwustronne scalanie wolnych bloków w heap\_4. + +\vspace{0.8em} +\noindent\textcolor{black!25}{\rule{\textwidth}{0.35pt}} +\vspace{0.7em} +\noindent{\Large\bfseries Zakres karty}\par +\vspace{0.35em} +Dwa małe modele C przygotowują przewidywanie. Główny replay uruchamia prawdziwe FreeRTOS-Kernel V11.3.0 heap\_4 na RV32I/Hazard3 i dowodzi fragmentacji, pełnego scalenia, minimum-ever oraz kontrolowanego OOM. +\vspace{0.55em} +\small\begin{tabularx}{\textwidth}{@{}>{\ttfamily\raggedright\arraybackslash}p{0.85cm}>{\ttfamily\raggedright\arraybackslash}p{1.45cm}X>{\raggedright\arraybackslash}p{2.45cm}>{\raggedright\arraybackslash}p{1.75cm}>{\ttfamily\raggedright\arraybackslash}p{1.50cm}@{}} +\textbf{Lekcja} & \textbf{Task} & \textbf{Najważniejsza idea} & \textbf{Priorytet} & \textbf{Status} & \textbf{Version} \\ \hline +\hline +\multicolumn{1}{|l|}{\textbf{\texttt{FC01}}} & \multicolumn{1}{l|}{\textbf{\texttt{Task01}}} & \multicolumn{1}{l|}{\textbf{headers, address-ordered free list, first-fit, split, coalescing and heap statistics}} & \multicolumn{1}{l|}{\textbf{główny}} & \multicolumn{1}{l|}{\textbf{opracowane}} & \multicolumn{1}{l|}{\textbf{\texttt{v00.01}}} \\ \hline +\end{tabularx} +\normalsize + + +\vspace{0.8em} +\noindent\textcolor{black!25}{\rule{\textwidth}{0.35pt}} + +\clearpage + +\ESCSectionBlockStart +\noindent{\small\bfseries A1 — Od liniowego kursora do odzyskiwalnej areny \hfill część 1/1 \textperiodcentered\ r1 c1}\par +\vspace{0.35em} +\begin{figure}[H] + \centering + \includegraphics[width=0.47121\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a1-context.png}} + \caption{A1 CONTEXT — od żądania aplikacji do rzeczywistych bajtów ucHeap. — część 1/1 (r1 c1).} + \label{fig:a1-context} +\end{figure} +\ESCSectionBlockEnd + +\clearpage +\ESCSectionBlockStart +\noindent{\small\bfseries A2 — Nagłówek, payload i lista wolnych bloków \hfill część 1/1 \textperiodcentered\ r1 c1}\par +\vspace{0.35em} +\begin{figure}[H] + \centering + \includegraphics[width=0.44697\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a2-structure.png}} + \caption{A2 STRUCTURE — metadane wewnątrz areny i adresowo uporządkowana lista. — część 1/1 (r1 c1).} + \label{fig:a2-structure} +\end{figure} +\ESCSectionBlockEnd + +\clearpage +\begin{landscape} +\ESCSectionBlockStart +\noindent{\small\bfseries A5 — First-fit, fragmentacja i pełne scalenie \hfill część 1/1 \textperiodcentered\ r1 c1}\par +\vspace{0.35em} +\begin{figure}[H] + \centering + \includegraphics[width=0.86277\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a5-flow.png}} + \caption{A5 FLOW — inicjalizacja, A/B/C, fragmentacja, dwustronne scalenie i OOM. — część 1/1 (r1 c1).} + \label{fig:a5-flow} +\end{figure} +\ESCSectionBlockEnd +\end{landscape} + +\clearpage +\ESCSectionBlockStart +\noindent{\small\bfseries A6 — Stan bloku a stan statystyk \hfill część 1/1 \textperiodcentered\ r1 c1}\par +\vspace{0.35em} +\begin{figure}[H] + \centering + \includegraphics[width=0.52424\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a6-state.png}} + \caption{A6 STATE — wolny, przydzielony, rozdzielony, scalony oraz minimum-ever. — część 1/1 (r1 c1).} + \label{fig:a6-state} +\end{figure} +\ESCSectionBlockEnd + +\clearpage +\begin{landscape} +\ESCSectionBlockStart +\noindent{\small\bfseries A7 — Dowód w Hazard3 i ELF \hfill część 1/1 \textperiodcentered\ r1 c1}\par +\vspace{0.35em} +\begin{figure}[H] + \centering + \includegraphics[width=0.86596\linewidth,trim=0.000bp 0.000bp 0.000bp 0.000bp,clip]{\detokenize{../assets/a7-runtime.png}} + \caption{A7 RUNTIME — kod, ELF, checkpoint, pamięć i statystyki jednego przebiegu. — część 1/1 (r1 c1).} + \label{fig:a7-runtime} +\end{figure} +\ESCSectionBlockEnd +\end{landscape} + +\clearpage +\ESCSectionBlockStart +\section{Task01 — mechanika heap\_4} + +\begin{ESCTaskFrame}{TASK01 · Predict and prove reusable heap\_4 blocks} +{\scriptsize\ttfamily aea09ab7-9bfd-5368-8d1b-c8724871c1a7}\par +\begin{ESCBlockFrame}{A — przewidywanie} +Przejdź przez model nagłówka, split i porządek adresowy przed uruchomieniem prawdziwego heap\_4. +\begin{ESCStepFrame}{size · Policz rozmiar bloku.} +Dodaj nagłówek do 13 bajtów i wyrównaj wynik do ośmiu. +\end{ESCStepFrame} +\begin{ESCStepFrame}{list · Narysuj listę po free(A,C).} +Zaznacz, dlaczego przydzielony B rozdziela dwa wolne obszary. +\end{ESCStepFrame} +\end{ESCBlockFrame} +\begin{ESCBlockFrame}{B — replay Hazard3} +Powiąż diagram z dwoma deterministycznymi checkpointami. +\begin{ESCStepFrame}{fragmented · Sprawdź E01.} +Porównaj liczbę wolnych bloków, największy blok i bieżące wolne bajty. +\end{ESCStepFrame} +\begin{ESCStepFrame}{coalesced · Sprawdź E02.} +Udowodnij pełne scalenie, zachowanie minimum-ever i kontrolowany OOM. +\end{ESCStepFrame} +\end{ESCBlockFrame} +\begin{ESCBlockFrame}{Ćwiczenie · Ćwiczenie — ta sama suma, inna użyteczność} +Zaproponuj dwa układy wolnych bloków o tej samej sumie bajtów, ale tylko jeden zdolny obsłużyć wskazane duże żądanie. Uzasadnij odpowiedź przez largest-free-block. +\par\textbf{Evidence:} Dwa diagramy listy, suma wolnych bajtów, rozmiar największego bloku i wynik pvPortMalloc. +\par\textbf{Acceptance:} Uczeń nie utożsamia sumy wolnej pamięci z możliwością pojedynczego dużego przydziału. +\end{ESCBlockFrame} +\tcblower\textbf{Task acceptance:} Model 13 -> 32 bajty; poprawna predykcja dwóch wolnych bloków po free(A,C) i jednego po free(B); final free = initial free; minimum-ever nie rośnie; OOM zwraca NULL; PASS=1. +\end{ESCTaskFrame} +\begin{ESCConclusionFrame} +heap\_4 odzyskuje pamięć dzięki metadanym w arenie, adresowo uporządkowanej liście i scalaniu sąsiadów. Suma wolnych bajtów nie zastępuje informacji o największym bloku, a minimum-ever jest historią, nie bieżącym stanem. +\end{ESCConclusionFrame} +\ESCSectionBlockEnd + +\end{document} diff --git a/doc/main.tex b/doc/main.tex index ccb668c..bd0c27e 100644 --- a/doc/main.tex +++ b/doc/main.tex @@ -1,8 +1,8 @@ -\documentclass[11pt]{article} +\documentclass[10pt]{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[polish]{babel} -\usepackage[a4paper,margin=1.75cm]{geometry} +\usepackage[a4paper,margin=1.55cm]{geometry} \usepackage{array,tabularx,booktabs} \usepackage{amsmath,amssymb} \usepackage{xcolor,listings} @@ -12,6 +12,7 @@ \definecolor{accent}{HTML}{16324A} \definecolor{accentlight}{HTML}{EEF3F7} \definecolor{rulegray}{HTML}{D7DEE5} +\definecolor{success}{HTML}{236B45} \hypersetup{colorlinks=true,linkcolor=accent,urlcolor=blue} \IfFileExists{build-meta.tex}{\input{build-meta.tex}}{\newcommand{\BuildCommit}{local}} \newcommand{\PublisherDomain}{mpabi} @@ -20,292 +21,286 @@ \newcommand{\CardArea}{inf} \newcommand{\CardSeries}{rv32i-freertos} \newcommand{\CardNumber}{01} -\newcommand{\CardCount}{14} +\newcommand{\CardCount}{15} \newcommand{\CardSlug}{heap4} -\newcommand{\CardVersion}{v0.2} +\newcommand{\CardVersion}{v0.3} \newcommand{\DocumentKey}{\PublisherDomain/\CardArea/\CardSeries/\CardNumber/\CardSlug/\CardVersion} \newcommand{\DocumentUUID}{4654524c-73f2-46df-83a3-d448ba6d6c5a} \lstset{ language=C,basicstyle=\ttfamily\scriptsize,columns=fullflexible, keepspaces=true,frame=single,breaklines=true,showstringspaces=false, - numbers=left,numberstyle=\tiny\color{accent},numbersep=6pt, - backgroundcolor=\color{accentlight},rulecolor=\color{rulegray} + numbers=none,backgroundcolor=\color{accentlight},rulecolor=\color{rulegray} } \pagestyle{fancy} \fancyhf{} -\lhead{\textbf{FreeRTOS: heap\_4}} -\rhead{\small karta 01/14} +\lhead{\textbf{FC01 · FreeRTOS \texttt{heap\_4}}} +\rhead{\small 30 minut · Pico 2 W / RP2350} \lfoot{\scriptsize commit \BuildCommit} \cfoot{\scriptsize \thepage/\pageref{LastPage}} \rfoot{\scriptsize V11.3.0 / \CardVersion} -\setlength{\headheight}{15pt} -\setlength{\footskip}{22pt} -\setlist[itemize]{nosep,leftmargin=1.5em} -\setlist[enumerate]{itemsep=.25em,leftmargin=1.7em} +\setlength{\headheight}{14pt} +\setlength{\footskip}{19pt} +\setlist[itemize]{nosep,leftmargin=1.45em} +\setlist[enumerate]{nosep,leftmargin=1.65em} \newcommand{\checkline}{\(\square\)\;} +\newcommand{\blank}[1]{\rule{#1}{.2pt}} \begin{document} \sloppy \begin{center} - {\LARGE\bfseries Karta pracy: FreeRTOS \texttt{heap\_4}}\par - \vspace{.4em} - {\large model $\rightarrow$ prawdziwy upstream $\rightarrow$ RP2350}\par + {\LARGE\bfseries FreeRTOS \texttt{heap\_4}: od kursora do wolnych bloków}\par + \vspace{.25em} + {\large bezpośrednia kontynuacja projektu K\&R 5.4}\par \end{center} -\begin{tabularx}{\textwidth}{@{}lX@{}} +\noindent\begin{tabularx}{\textwidth}{@{}p{1.45cm}Xp{1.4cm}X@{}} \toprule -Klucz & \texttt{\DocumentKey} \\ -Wersja / commit & \texttt{\CardVersion} / \texttt{\BuildCommit} \\ -Data & 14.07.2026 \\ -Allocator & FreeRTOS-Kernel V11.3.0, \texttt{9b777ae5c5b8} \\ -Port RP2350 & fork Raspberry Pi, \texttt{4f7299d6ea74} \\ -Źródło & \texttt{portable/MemMang/heap\_4.c} — bez modyfikacji \\ -Punkt wejścia & \texttt{stemctl} \\ +Karta & FC01 / \CardCount & Czas & 30 minut \\ +Płytka & Raspberry Pi Pico 2 W & Układ & RP2350, rdzeń RISC-V \\ +Allocator & FreeRTOS-Kernel V11.3.0 & Źródło & upstream \texttt{heap\_4.c} \\ +Wersja & \CardVersion & Data & 19.07.2026 \\ \bottomrule \end{tabularx} -\section*{Tylko trzy kroki} -\begin{enumerate} - \item First-fit + split: skąd bierze się drugi nagłówek. - \item Free-list + coalescing: dlaczego lista jest uporządkowana po adresie. - \item API FreeRTOS: \texttt{pvPortMalloc}, \texttt{vPortFree}, stats, OOM. -\end{enumerate} +\section*{Punkt startowy — tego już nie powtarzamy} -\section*{Warunek zaliczenia} -\begin{itemize} - \item \checkline przewiduję rozmiary nagłówków i bloków na AMD64/RV32; - \item \checkline rozpoznaję fragmentację: suma wolnych bajtów $\neq$ największy blok; - \item \checkline pokazuję split i dwa kierunki scalania w Memory; - \item \checkline odczytuję \texttt{xStart}, \texttt{pxEnd}, minimum-ever i stack frame; - \item \checkline Task 3 daje \texttt{pass=1} na host, Hazard3 i RP2350. -\end{itemize} +Z poprzedniej karty działa projekt: -\newpage -\section{Start — polecenia i platformy} - -\begin{lstlisting}[language=bash,numbers=none] -stemctl test native-amd64 freertos heap4 1 -stemctl test hazard3-sim freertos heap4 2 -stemctl debug hazard3-sim freertos heap4 3 -stemctl test rp2350 freertos heap4 3 -stemctl deploy rp2350 freertos heap4 3 \ - --device /dev/bus/usb/BBB/DDD +\begin{lstlisting} +allocbuf[64]; allocp = allocbuf; +alloc_local(5) -> offset 0 +alloc_local(7) -> offset 5 +allocp -> offset 12 +alloc_local(0) i OOM -> NULL; kursor pozostaje na 12 \end{lstlisting} -\begin{tabularx}{\textwidth}{@{}p{3.1cm}XXX@{}} +\noindent\fcolorbox{accent}{accentlight}{% +\begin{minipage}{.94\textwidth} +\textbf{Pytanie projektowe.} Jak zwolnić obszar 5 B spod offsetu 0, zachować +późniejszy obszar 7 B spod offsetu 5 i ponownie wykorzystać powstałą dziurę? +W naszym projekcie nie istnieje \texttt{free}; reset odzyskuje całą arenę. +Samo cofnięcie kursora zniszczyłoby również późniejsze przydziały. +\end{minipage}} + +\section*{Cel lekcji} + +Potrafię wskazać trzy elementy dodane przez \texttt{heap\_4} do alokatora +liniowego --- \textbf{nagłówek bloku, listę wolnych bloków i scalanie} --- oraz +potwierdzić ich działanie na prawdziwym \texttt{heap\_4.c}. + +\section*{Plan 30 minut} + +\begin{tabularx}{\textwidth}{@{}p{1.55cm}p{3.0cm}X@{}} \toprule - & AMD64 & Hazard3 & RP2350 \\ +Czas & Tryb & Wynik \\ \midrule -Task 1--2 & model + sanitizery & model na RTL & build \\ -Task 3 & V11.3 + adapter 1-thread & pełny V11.3 + port RISC-V & zgodny core+port RP; allocator V11.3 \\ -Debug & GDB & GDB stub RTL & OpenOCD; SRAM \\ -Deploy & --- & --- & SPI flash + verify \\ +0--3 & problem K\&R & nazwać, dlaczego jeden kursor nie zwolni obszaru ze środka \\ +3--4 & kontekst & FreeRTOS linkuje jedną implementację; tutaj pracujemy tylko z \texttt{heap\_4} \\ +4--9 & Demo 1 & przewidzieć nagłówek, first-fit i split \\ +9--16 & Demo 2 & przewidzieć listę adresową i scalenie \texttt{2 -> 1} \\ +16--27 & Task 3 RUN & dwa checkpointy prawdziwego \texttt{heap\_4.c} na Pico 2 W \\ +27--30 & wyjście & odróżnić total free, largest free i minimum-ever \\ \bottomrule \end{tabularx} -\subsection*{Termdebug} -\begin{tabularx}{\textwidth}{@{}lXlX@{}} -\toprule -\texttt{F5} & continue & \texttt{F9} & breakpoint \\ -\texttt{F10} & next & \texttt{F11} & step \\ -\texttt{Shift-F11} & finish & \texttt{F8} & stepi \\ -\texttt{:StudentStack} & frame + stos & \texttt{:StudentLst} & listing ELF-a \\ -\bottomrule -\end{tabularx} - -\textbf{Strategia obserwacji}: breakpoint przed zmianą $\rightarrow$ Memory -$\rightarrow$ continue/finish $\rightarrow$ Memory. Nie opieramy karty na data -watchpointach. +\vfill +\noindent\textbf{Jedna minuta kontekstu:} \texttt{heap\_1} przypomina rosnący +kursor bez \texttt{free}; \texttt{heap\_2} nie scala; \texttt{heap\_3} używa +alokatora biblioteki C; \texttt{heap\_5} rozszerza mechanikę \texttt{heap\_4} +na wiele regionów. Nie są to tematy tej lekcji. \newpage -\section{Task 1 — first-fit i split} +\section{Most: od K\&R 5.4 do \texttt{heap\_4}} -\subsection*{Policz przed uruchomieniem} -\begin{tabular}{@{}lcc@{}} +\begin{tabularx}{\textwidth}{@{}p{3.5cm}p{4.8cm}X@{}} \toprule - & AMD64 & RV32 \\ +K\&R 5.4 — co mamy & Ograniczenie & Co dodaje \texttt{heap\_4} \\ \midrule -\texttt{sizeof(ModelBlock)} & \rule{1.6cm}{.2pt} & \rule{1.6cm}{.2pt} \\ -request & 13 B & 13 B \\ -\texttt{align8(header + request)} & \rule{1.6cm}{.2pt} & \rule{1.6cm}{.2pt} \\ -remainder z 256 B & \rule{1.6cm}{.2pt} & \rule{1.6cm}{.2pt} \\ -offset payloadu & \rule{1.6cm}{.2pt} & \rule{1.6cm}{.2pt} \\ +\texttt{allocbuf[64]}, \texttt{allocp} & istnieje tylko wolny ogon areny & arena podzielona na opisane bloki \\ +wynik to surowy adres & później nie znamy rozmiaru obszaru & nagłówek \texttt{BlockLink\_t} przed payloadem \\ +przydział przesuwa kursor & nie wykorzystamy dziury & lista wolnych bloków i first-fit \\ +reset całej areny & brak zwolnienia jednego obszaru & \texttt{vPortFree()} wskazanego bloku \\ +brak relacji między dziurami & sąsiednie dziury są rozdzielone & porządek adresowy i coalescing \\ +sukces albo \texttt{NULL} & brak miary fragmentacji & free, largest, block count, minimum-ever \\ \bottomrule -\end{tabular} +\end{tabularx} + +\subsection*{Nagłówek realnego bloku} + +\begin{lstlisting} +typedef struct A_BLOCK_LINK { + struct A_BLOCK_LINK *pxNextFreeBlock; + size_t xBlockSize; /* MSB oznacza blok przydzielony */ +} BlockLink_t; + +[ BlockLink_t | payload zwracany przez pvPortMalloc() ] +^ metadata ^ adres widziany przez aplikacje +\end{lstlisting} + +\textbf{Granica modelu:} Task 1--2 używają uproszczonego nagłówka +\texttt{\{next,size\}}. Bit allocated i pełne zabezpieczenia oglądamy dopiero +w upstream \texttt{heap\_4.c}. + +\section{Demo 1 — pierwszy pasujący blok i split (5 minut)} + +Na RP2350/RV32 nagłówek modelu ma 8 B. Dla żądania 13 B: + +\[ +\texttt{wanted}=\operatorname{align8}(8+13)=24\ \mathrm{B} +\] + +\begin{lstlisting} +free list przed: [ block 16 B ] -> [ block 256 B ] -> END +request po naglowku i align8: 24 B +\end{lstlisting} + +\textbf{Predykcja — wpisz przed odsłonięciem:} -\subsection*{Do wykonania} \begin{enumerate} - \item Wskaż nagłówek bloku przydzielonego i nagłówek remainder. - \item Sprawdź: \texttt{wanted + remainder == 256}. - \item Zmień request 13 na 17; przewidź wynik bez uruchamiania. - \item W listingu znajdź dodawanie bajtowego offsetu do adresu areny. + \item Pierwszy pasujący blok ma \blank{1.5cm} B. + \item Blok przydzielony ma \blank{1.5cm} B, a remainder \blank{1.5cm} B. + \item Równość zachowania areny: \blank{2cm} + \blank{2cm} = 256 B. \end{enumerate} -\lstinputlisting{../src/tasks/task01_first_fit_split.c} +\noindent\textbf{Sprawdzenie po predykcji:} +\texttt{16 B} nie mieści żądania, więc first-fit wybiera \texttt{256 B}; split +daje \texttt{24 B + 232 B}. Realny \texttt{heap\_4} dzieli blok tylko wtedy, +gdy reszta jest większa od minimalnego rozmiaru bloku. + +\noindent\textbf{Nie uruchamiamy osobnego debugowania Task 1.} Model służy do +policzenia geometrii; centralny RUN jest w Task 3. \newpage -\section{Task 2 — lista adresowa i coalescing} +\section{Demo 2 — lista adresowa i coalescing (7 minut)} -\subsection*{Eksperyment} \begin{center} -\texttt{A:48 | B:48 | C:48}\quad -$\xrightarrow{\text{free A, free C}}$\quad -\texttt{A:48 -> C:48}\quad -$\xrightarrow{\text{free B}}$\quad -\texttt{A:144} +\texttt{[ A:48 FREE ][ B:48 USED ][ C:48 FREE ]} \end{center} -\subsection*{Do wykonania} -\begin{enumerate} - \item Zatrzymaj program w \texttt{task02\_fragmented\_checkpoint}. - \item Zapisz adresy i rozmiary dwóch elementów free-list. - \item Wykonaj \texttt{F5}; zatrzymaj w \texttt{task02\_debug\_checkpoint}. - \item Wskaż pierwszy warunek scalania: z blokiem po prawej. - \item Wskaż drugi warunek scalania: z blokiem po lewej. - \item Wyjaśnij, czemu kolejność po adresie redukuje koszt szukania sąsiadów. -\end{enumerate} +\begin{lstlisting} +pamiec: A -------- B -------- C +free list: A ------------------> C -> END +\end{lstlisting} + +\textbf{Predykcja:} po \texttt{vPortFree(B)} narysuj listę i uzupełnij: -\subsection*{Tabela obserwacji} \begin{tabular}{@{}lccc@{}} \toprule -Stan & liczba bloków & suma & największy \\ +Stan & liczba wolnych bloków & suma wolna & największy blok \\ \midrule -przed B & \rule{1.4cm}{.2pt} & \rule{1.4cm}{.2pt} & \rule{1.4cm}{.2pt} \\ -po B & \rule{1.4cm}{.2pt} & \rule{1.4cm}{.2pt} & \rule{1.4cm}{.2pt} \\ +przed zwolnieniem B & \blank{1.2cm} & \blank{1.2cm} & \blank{1.2cm} \\ +po zwolnieniu B & \blank{1.2cm} & \blank{1.2cm} & \blank{1.2cm} \\ \bottomrule \end{tabular} -\lstinputlisting{../src/tasks/task02_address_order_coalesce.c} +\subsection*{Odsłoń po zapisaniu predykcji} -\newpage -\section{Task 3 — prawdziwy FreeRTOS \texttt{heap\_4.c}} - -\subsection*{Sekwencja testowa} \begin{enumerate} - \item init przez pierwsze \texttt{pvPortMalloc(1)} i \texttt{vPortFree}; zapisz $F_0$; - \item malloc: 24 B, 40 B, 16 B; zapisz $F_1$; - \item free pierwszego i trzeciego; oczekuj 2 wolnych bloków; - \item free środkowego; oczekuj jednego bloku i $F_{final}=F_0$; - \item malloc większy niż heap; oczekuj \texttt{NULL} i jednego hooka. + \item Wstaw B między A i C według adresu. + \item \texttt{end(B) == address(C)}: połącz B z C. + \item \texttt{end(A) == address(BC)}: połącz A z BC. \end{enumerate} -\subsection*{Inwarianty — zaznacz po teście} -\begin{itemize} - \item \checkline $F_0 > F_1$; - \item \checkline $F_{final}=F_0$; - \item \checkline minimum-ever $\leq F_1$ i nie rośnie po free; - \item \checkline każdy payload ma adres podzielny przez 8; - \item \checkline OOM zwraca \texttt{NULL}; - \item \checkline końcowa free-list ma dokładnie jeden blok. -\end{itemize} - -\lstinputlisting{../src/tasks/task03_freertos_heap4.c} - -\newpage -\section{Czytanie upstream \texttt{heap\_4.c}} - -\subsection*{Znajdź w pliku — nie czytaj całego od góry} -\begin{lstlisting}[language=bash,numbers=none] -K=/opt/FreeRTOS-Kernel/portable/MemMang/heap_4.c -rg -n 'xHeapStructSize|pvPortMalloc|prvHeapInit' "$K" -rg -n 'prvInsertBlockIntoFreeList|vPortFree' "$K" -rg -n 'xFreeBytesRemaining|xMinimumEver' "$K" -rg -n 'heapADD_WILL_OVERFLOW|heapBLOCK_ALLOCATED' "$K" +\begin{lstlisting} +przed: A:48 -> C:48 -> END blocks=2 total=96 largest=48 +po: A:144 -> END blocks=1 total=144 largest=144 \end{lstlisting} -\begin{itemize}[leftmargin=*,itemsep=2pt] - \item \texttt{xHeapStructSize}: dlaczego jest wyrównany oddzielnie od - \texttt{sizeof}? - \item \texttt{heapBLOCK\_ALLOCATED\_BITMASK}: który bit rozmiaru oznacza - właściciela? - \item \texttt{pvPortMalloc}: gdzie są overflow, alignment, first-fit i split? - \item \texttt{vPortFree}: jak odzyskuje nagłówek z payloadu? - \item \texttt{prvInsertBlockIntoFreeList}: gdzie są dwa kierunki scalania? - \item \texttt{xMinimumEverFreeBytesRemaining}: dlaczego free go nie zwiększa? -\end{itemize} +Porządek po adresie sprawia, że fizycznych sąsiadów można sprawdzić podczas +jednego wstawienia. To jest mechanizm funkcji +\texttt{prvInsertBlockIntoFreeList()} z \texttt{heap\_4.c}. -\subsection*{Breakpointy} -\begin{lstlisting}[numbers=none] -b pvPortMalloc -b vPortFree -b prvInsertBlockIntoFreeList -p xStart -p pxEnd +\section{Task 3 — jedyny centralny RUN (11 minut)} + +Obraz i sesja muszą być przygotowane przed lekcją. Nie kompilujemy ani nie +flashujemy w czasie tych 30 minut. + +\begin{lstlisting}[language=bash] +# wykonane przed lekcja: +stemctl debug rp2350 freertos heap4 3 --device /dev/bus/usb/BBB/DDD +\end{lstlisting} + +\begin{lstlisting} +RESET/INIT + -> ALLOC A(24) -> ALLOC B(40) -> ALLOC C(16) + -> FREE A -> FREE C + -> heap4_fragmented_checkpoint # STOP 1 + -> FREE B -> OOM request + -> task03_debug_checkpoint # STOP 2 +\end{lstlisting} + +\textbf{STOP 1:} zapisz liczbę bloków, sumę i largest. Przed \texttt{F5} +przewidź, co zmieni \texttt{FREE B}. + +\textbf{STOP 2:} sprawdź odzyskanie areny, minimum-ever, OOM i hook. + +\newpage +\section{Dowód na Pico 2 W / RP2350} + +\textbf{Ważne:} \texttt{heap\_4} jest plikiem wybranym i linkowanym przez +projekt. Nie jest sprzętowym heapem ani peryferium RP2350. Pico 2 W dostarcza +realną pamięć SRAM, w której obserwujemy ten sam algorytm. + +\subsection*{Minimalny widok GDB} + +\begin{lstlisting} +p g_fragmented_stats +p g_final_stats p xFreeBytesRemaining p xMinimumEverFreeBytesRemaining -x/160bx ucHeap +p xStart +p pxEnd +x/96bx ucHeap \end{lstlisting} -\newpage -\section{RP2350 — deploy i dowód sprzętowy} +\subsection*{Tabela obserwacji} -\subsection*{Polecenie} -\begin{lstlisting}[language=bash,numbers=none] -stemctl probe list -stemctl deploy rp2350 freertos heap4 3 \ - --device /dev/bus/usb/BBB/DDD -\end{lstlisting} - -\subsection*{Automatyczny test zatrzymuje się dwa razy} -\begin{enumerate} - \item \texttt{heap4\_fragmented\_checkpoint}: 2 wolne bloki; - \item \texttt{task03\_debug\_checkpoint}: heap odtworzony, OOM obsłużony. -\end{enumerate} - -\subsection*{Zapis ucznia} -\begin{tabular}{@{}ll@{}} +\begin{tabularx}{\textwidth}{@{}p{4.2cm}p{3.0cm}X@{}} \toprule -Wielkość & Wartość \\ +Wielkość & Odczyt & Warunek \\ \midrule -\texttt{initial free} & \rule{4cm}{.2pt} \\ -\texttt{after allocations} & \rule{4cm}{.2pt} \\ -\texttt{minimum ever} & \rule{4cm}{.2pt} \\ -\texttt{final free} & \rule{4cm}{.2pt} \\ -\texttt{sp / fp / pc} & \rule{7cm}{.2pt} \\ +\texttt{initial\_free} & \blank{2.3cm} & punkt odniesienia \\ +\texttt{after\_allocations} & \blank{2.3cm} & mniejsze niż initial \\ +STOP 1: free blocks & \blank{2.3cm} & równe 2 \\ +STOP 1: total / largest & \blank{2.3cm} & largest mniejsze niż total \\ +STOP 2: final free & \blank{2.3cm} & równe initial \\ +STOP 2: free blocks & \blank{2.3cm} & równe 1 \\ +minimum-ever & \blank{2.3cm} & nie rośnie po free \\ +OOM / hook / asserts / pass & \blank{2.3cm} & \texttt{1 / 1 / 0 / 1} \\ \bottomrule -\end{tabular} +\end{tabularx} -\subsection*{Kontrakt} -\begin{itemize} - \item flash: write + verify; ELF: RISC-V; - \item breakpointy sprzętowe, nie data watchpoint; - \item \texttt{aligned=1 oom=1 hooks=1 asserts=0 pass=1}; - \item \texttt{sp \& 15 == 0}; - \item \texttt{rp2350-hardware-ok task=task03 heap\_4=upstream}. -\end{itemize} +\section*{Wyjście — trzy minuty} -\textbf{Operacje są rozdzielone}: \texttt{debug} ładuje do SRAM; -\texttt{deploy} zapisuje trwały obraz do SPI flash. - -\newpage -\section{Podsumowanie i oddanie} - -\subsection*{Odpowiedz jednym zdaniem} \begin{enumerate} - \item Dlaczego \texttt{heap\_4} scala, a nie tylko odkłada blok na listę?\\[.6em] - \rule{\textwidth}{.2pt} - \item Dlaczego „wolne razem” nie oznacza „można przydzielić jeden duży blok”?\\[.6em] - \rule{\textwidth}{.2pt} - \item Gdzie leży metadata bloku przydzielonego aplikacji?\\[.6em] - \rule{\textwidth}{.2pt} - \item Co mierzy minimum-ever-free, a czego nie mierzy?\\[.6em] - \rule{\textwidth}{.2pt} + \item Dlaczego jeden \texttt{allocp} nie wystarcza do zwolnienia obszaru + spod offsetu 0 przy zachowaniu obszaru spod offsetu 5?\\[.35em] + \blank{.96\linewidth} + \item Jak \texttt{vPortFree()} znajduje rozmiar payloadu, skoro dostaje tylko + jego adres?\\[.35em] + \blank{.96\linewidth} + \item Dlaczego 96 wolnych bajtów w dwóch blokach nie pozwala przydzielić + jednego bloku 80 B?\\[.35em] + \blank{.96\linewidth} \end{enumerate} -\subsection*{Oddaj} +\subsection*{Zaliczenie} + \begin{itemize} - \item \checkline wyniki 3 tasków na AMD64; - \item \checkline Hazard3: trzy kody wyjścia 0; - \item \checkline zrzut Task 2: przed i po scaleniu; - \item \checkline zrzut Task 3: source + listing + Memory + Stack; - \item \checkline wynik RP2350 \texttt{rp2350-hardware-ok}; - \item \checkline wypełnione inwarianty i cztery odpowiedzi. + \item \checkline wymieniam: header, free list, coalescing; + \item \checkline przewiduję \texttt{2 bloki -> 1 blok}; + \item \checkline odróżniam payload, metadata allocatora i stos \texttt{sp}; + \item \checkline odróżniam current free, largest free i minimum-ever; + \item \checkline Task 3 kończy się + \texttt{aligned=1 oom=1 hooks=1 asserts=0 pass=1}. \end{itemize} \vfill -\noindent\textbf{Dalej}: taski FreeRTOS, scheduler, osobne stosy, 1 kHz tick; -następnie cienki C++ header wrapper i użycie w projekcie hoveboard. +\noindent\textbf{Poza lekcją:} pełne czytanie upstream \texttt{heap\_4.c}, +osobne uruchomienie Task 1--2 na AMD64/Hazard3, samodzielny deploy RP2350 oraz +porównanie z \texttt{heap\_1}, \texttt{heap\_2}, \texttt{heap\_3} i +\texttt{heap\_5}. \end{document} diff --git a/doc/pdf/mpabi-inf-rv32i-freertos-01-heap4-v0.2-4654524c-73f2-46df-83a3-d448ba6d6c5a.pdf b/doc/pdf/mpabi-inf-rv32i-freertos-01-heap4-v0.2-4654524c-73f2-46df-83a3-d448ba6d6c5a.pdf deleted file mode 100644 index ccdb4bd7f202b904f8210f275fd332e3f1c1838e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403169 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

#Ovk(tI4$q7+?6x)Vr_BAE`7svg1GL$K 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 n9oN>TK4)ee9@@nzk;&E8W-UJYjIgvI0Og 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

XHv@{Y+i7i23ak`yD}TUlmfDqz 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

LzvsJFJr0poLFJ5}S zI;*)DBtm-@U#p7;8#r3>#+=_kn9aq`gV;4Iya;ZEweEb#5B1$%weTPu$w}k;k{HTJ zv@K8_zk0tZioXmZs7sMPsf^4zfRFM}9Ab^GD;bdKge;Ai@AR54NF zZ}9QUKkC!nu7f^O@%DnQwIJFGSP27$|77Tg$#=Gh@?m|3=Bb;{j~A(XZq=%w;9!e` zI{%yDPBHPmu)1yuGSig;4kK7rPQO(7K}#Jxm_8{CS=q{wSOT#o9H?}CL6nA#j*!@@EH^g z@3%(N7hdrA_PBwoaxN@5fv7!RzENM_Q%5~K{0%Cn>oUDSg&*S98wn{ES;~ru9a&E! z{D8LhIOji=AHrmJyrzZ7ei^muqTccHuMpI6fk#PP%TyMI^*a{G_)~9Z_ac&JtNIM> zmY9qkpu~yU=Eq43O~tiF`&!v@cM$V|>e-C<)*K0?7G zDnPiuH?YuEeR05Hm*Ivgm@fyt1sl?26iV6Mj_RS!#D8FP;z*>m|neZ(t9Vwb)XUZ7@;9&l)8K@*J|&k z)U-SRrz1#X(pLo~@B9&Ejd#6JGff7h`|oH?P=Tyw>?+NBM zj?d=~LxU?FMx8SOiHMar(9-iNiWBe+?3F#+dX#BsIX>@}Pu

3`(^}bOe7w)dA|w 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

yk<|qf7`sVA(ms64@dT^Y6@)-7Ky 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 literal 0 HcmV?d00001 diff --git a/json/card_source.json b/json/card_source.json new file mode 100644 index 0000000..9decc8c --- /dev/null +++ b/json/card_source.json @@ -0,0 +1,1172 @@ +{ + "$schema": "../../../tools/card-layouts/schemas/card-source.schema.json", + "schema": "esc-card-source.v1", + "card": { + "id": "mpabi-freertos-c-01-heap4-mechanics", + "series": "freertos-c", + "series_title": "FreeRTOS C", + "number": "01", + "count": "15", + "slug": "heap4-mechanics", + "title": "heap_4: From Linear Cursor to Reusable Blocks", + "topic": "headers, address-ordered free list, first-fit, split, coalescing and heap statistics", + "project": "Freestanding C nad FreeRTOS", + "subject": "Informatyka", + "level": "Rok 2 · L01 · RV32I/Hazard3", + "revision_date": "2026-07-20T00:00:00+02:00", + "status": "Gotowa", + "version": "v00.01", + "uuid": "87e48095-7793-54e3-9230-4e61d31bd459", + "author": "M. Pabiszczak", + "year": "2026" + }, + "generated": { + "tex": "doc/generated/main.tex", + "html": "web/index.html", + "html_css": "web/style.css", + "html_tree_inspector": false, + "react_app": true + }, + "render_dictionary": false, + "viewpoints": [ + { + "id": "A1", + "label": "CONTEXT", + "subtitle": "from cursor to reusable heap", + "status": "enabled", + "target_label": "fig:a1-context" + }, + { + "id": "A2", + "label": "STRUCTURE", + "subtitle": "headers and address order", + "status": "enabled", + "target_label": "fig:a2-structure" + }, + { + "id": "A3", + "label": "DISPATCH", + "subtitle": "not used by the allocator", + "status": "unavailable", + "reason": "heap_4 is called directly through pvPortMalloc and vPortFree; there is no callback or dispatch mechanism to explain." + }, + { + "id": "A4", + "label": "APPLICATION", + "subtitle": "experiment is already explicit", + "status": "unavailable", + "reason": "The concrete A/B/C allocation experiment is completely represented by A5 and its two runtime checkpoints." + }, + { + "id": "A5", + "label": "FLOW", + "subtitle": "allocate, fragment, coalesce", + "status": "enabled", + "target_label": "fig:a5-flow" + }, + { + "id": "A6", + "label": "STATE", + "subtitle": "block list and statistics", + "status": "enabled", + "target_label": "fig:a6-state" + }, + { + "id": "A7", + "label": "RUNTIME", + "subtitle": "Hazard3 evidence", + "status": "enabled", + "target_label": "fig:a7-runtime" + }, + { + "id": "A8", + "label": "PATTERNS", + "subtitle": "mechanism, not a separate page", + "status": "unavailable", + "reason": "First-fit and the intrusive address-ordered free list are already proved in A2 and A5; a separate pattern page would duplicate them." + } + ], + "debug_strategies": { + "code.model": { + "id": "code.model", + "kind": "code", + "action": "open", + "expected_observations": [ + "requested size includes header and alignment", + "free list is ordered by block address" + ], + "assertions": [ + "payload begins after the header", + "split preserves the total arena size" + ], + "evidence_fields": [ + "code_ref", + "header bytes", + "wanted bytes", + "block address" + ], + "prerequisites": [ + "K&R 5.4 linear allocator complete" + ], + "layout": [ + "header", + "payload", + "remainder", + "address-ordered list" + ], + "commands": [ + "rg -n 'ModelBlock|align_up|insert_and_coalesce' src/tasks" + ] + }, + "code.heap4": { + "id": "code.heap4", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ] + }, + "run.fragmented": { + "id": "run.fragmented", + "kind": "run", + "action": "replay", + "expected_observations": [ + "A and C are free while B remains allocated", + "the free list contains two blocks" + ], + "assertions": [ + "xNumberOfFreeBlocks equals 2", + "current free bytes exceed the largest free block" + ], + "evidence_fields": [ + "free blocks", + "largest block", + "free bytes", + "heap bytes" + ], + "prerequisites": [ + "clean Hazard3 RAM", + "task03 image loaded" + ], + "layout": [ + "source", + "free-list stats", + "ucHeap memory", + "registers" + ], + "commands": [ + "break heap4_fragmented_checkpoint", + "print g_fragmented_stats", + "x/64bx ucHeap" + ] + }, + "run.coalesced": { + "id": "run.coalesced", + "kind": "run", + "action": "replay", + "expected_observations": [ + "freeing B joins both neighbours", + "the arena returns to one reusable block" + ], + "assertions": [ + "final free equals initial free", + "minimum-ever does not rise after free", + "oversized allocation returns NULL and calls the hook once" + ], + "evidence_fields": [ + "final free", + "largest block", + "minimum-ever", + "OOM hook", + "PASS" + ], + "prerequisites": [ + "fragmented checkpoint reached" + ], + "layout": [ + "final stats", + "minimum-ever", + "OOM hook", + "PASS" + ], + "commands": [ + "break task03_debug_checkpoint", + "print g_final_stats", + "print g_task03_pass" + ] + }, + "code.identity": { + "id": "code.identity", + "kind": "code", + "action": "open", + "expected_observations": [ + "upstream heap_4 symbols are linked", + "checkpoint and ucHeap symbols remain observable" + ], + "assertions": [ + "pvPortMalloc and vPortFree are present", + "prvInsertBlockIntoFreeList is present" + ], + "evidence_fields": [ + "source blob", + "ELF SHA256", + "image SHA256", + "symbol" + ], + "prerequisites": [ + "built ELF" + ], + "layout": [ + "symbols", + "sections", + "artifact hashes" + ], + "commands": [ + "tests/check_task03_elf.sh build/task03_freertos_heap4/prog.elf" + ] + } + }, + "template": "templates/karta-klasyczna.json", + "title_block": { + "category": "KARTA PRACY · INFORMATYKA", + "prepared_by": "M. Pabiszczak", + "prepared_on": "2026-07-20T00:00:00+02:00", + "title": "heap_4: From Linear Cursor to Reusable Blocks", + "url": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/aea09ab7-9bfd-5368-8d1b-c8724871c1a7", + "repository_url": "https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-heap4", + "url_host_uuid": "dce7fb9d-7b2f-5d49-96a2-3a30d3070b84", + "url_domain": "mpabi.pl", + "doc_uuid": "aea09ab7-9bfd-5368-8d1b-c8724871c1a7", + "revision": "v00.01", + "issued_on": "2026-07-20T00:00:00+02:00", + "series": "FREERTOS-C-01", + "document_type": "karta pracy", + "tool": "card-layouts", + "show_qr": true, + "show_repository_qr": true, + "height_cm": 2.6, + "repeat_on_every_page": true, + "replace_front_matter": true + }, + "front_page_scope": { + "title": "Cel karty", + "content_tex": "Uczeń przechodzi od liniowego kursora z K\\&R 5.4 do wielokrotnego użycia tej samej areny: rozpoznaje nagłówek bloku, first-fit, split oraz dwustronne scalanie wolnych bloków w heap\\_4.", + "scope_title": "Zakres karty", + "scope_content_tex": "Dwa małe modele C przygotowują przewidywanie. Główny replay uruchamia prawdziwe FreeRTOS-Kernel V11.3.0 heap\\_4 na RV32I/Hazard3 i dowodzi fragmentacji, pełnego scalenia, minimum-ever oraz kontrolowanego OOM.", + "scope_table": { + "headers": [ + "Lekcja", + "Task", + "Najważniejsza idea", + "Priorytet", + "Status", + "Version" + ], + "rows": [ + { + "chapter": "FC01", + "task": "Task01", + "idea_tex": "headers, address-ordered free list, first-fit, split, coalescing and heap statistics", + "priority": "główny", + "status": "ready", + "version": "v00.01", + "key": true + } + ] + } + }, + "side_margin_tree_layout": { + "columns": [ + { + "id": "zawodowe", + "label": "TECH", + "side": "left", + "tree": "WE -> EK -> KW", + "description": "Dowody runtime." + }, + { + "id": "ogolne", + "label": "OG", + "side": "right", + "tree": "WE -> EN -> KW", + "description": "Model FreeRTOS C." + } + ] + }, + "learning_effects": { + "FC01.EN01": { + "bloom_level": "Analiza", + "label": "Model bloków heap_4", + "text": "Uczeń wyjaśnia nagłówek, wyrównanie, first-fit, split, adresową listę wolnych bloków i dwustronne coalescing.", + "assessment_criteria": [ + "FC01.KW01" + ] + }, + "FC01.EK01": { + "bloom_level": "Zastosowanie", + "label": "Fragmentacja i odzyskanie areny", + "text": "Uczeń odtwarza dwa checkpointy Hazard3 i odróżnia current free, largest free block oraz minimum-ever.", + "assessment_criteria": [ + "FC01.KW01" + ] + } + }, + "assessment_criteria": { + "FC01.KW01": { + "text": "Model 13 -> 32 bajty; poprawna predykcja dwóch wolnych bloków po free(A,C) i jednego po free(B); final free = initial free; minimum-ever nie rośnie; OOM zwraca NULL; PASS=1.", + "learning_effects": [ + "FC01.EN01", + "FC01.EK01" + ] + } + }, + "educational_requirements": { + "FC01.WE01": { + "text": "Analiza i weryfikacja mechaniki dynamicznej alokacji heap_4 w FreeRTOS C na RV32I/Hazard3.", + "label": "headers, address-ordered free list, first-fit, split, coalescing and heap statistics", + "learning_effects": [ + "FC01.EN01", + "FC01.EK01" + ], + "learning_tree": { + "schema": "we-learning-tree.v1", + "policy": "Każda aktywna kotwica wskazuje kod lub checkpoint.", + "ogolne": [ + { + "effect_ref": "FC01.EN01", + "display": "EN LOCAL RTOS.01", + "source": "LOCAL", + "official": "RTOS", + "local": "01", + "kind": "EN", + "tree_id": "FC01.WE01.OG.LOCAL.RTOS.01", + "text": "Uczeń wyjaśnia nagłówek, wyrównanie, first-fit, split, adresową listę wolnych bloków i dwustronne coalescing.", + "kw": [ + { + "criterion_ref": "FC01.KW01", + "display": "KW LOCAL RTOS.01", + "source": "LOCAL", + "kind": "KW", + "official": "RTOS", + "local": "01", + "text": "Łączy kod, diagram i zweryfikowany dowód." + } + ] + } + ], + "zawodowe": [ + { + "effect_ref": "FC01.EK01", + "display": "EK LOCAL RTOS.01", + "source": "LOCAL", + "official": "RTOS", + "local": "01", + "kind": "EK", + "tree_id": "FC01.WE01.TECH.LOCAL.RTOS.01", + "text": "Uczeń odtwarza dwa checkpointy Hazard3 i odróżnia current free, largest free block oraz minimum-ever.", + "kw": [ + { + "criterion_ref": "FC01.KW01", + "display": "KW LOCAL RTOS.01", + "source": "LOCAL", + "kind": "KW", + "official": "RTOS", + "local": "01", + "text": "Łączy kod, diagram i zweryfikowany dowód." + } + ] + } + ] + } + } + }, + "debug_checkpoints": { + "schema": "stem-debug-checkpoints.v1", + "semantics": "deterministic-replay", + "artifact": { + "source": "src/tasks/task03_freertos_heap4.c", + "source_git_blob": "a73eb936ad3896bc212fe7fcc1e9918e4430746e", + "elf": "build/task03_freertos_heap4/prog.elf", + "hazard3_elf_sha256": "6a7b20ad3447d0877e7ecff39087653e32f4931e2364bdc2ea533bf5d70f7854", + "hazard3_image": "build/task03_freertos_heap4/prog.bin", + "hazard3_image_sha256": "c9d9b45546305671fa6172156fbfc58b90b145fe952e3b7cfe8cce0da0f5e7dd" + }, + "targets": { + "hazard3-sim": { + "adapter": "hazard3-reset-load-replay.v1", + "baseline": "restart-backend", + "clean_ram": true + } + }, + "items": { + "task01.fragmented": { + "event_id": "E01", + "stop": { + "symbol": "heap4_fragmented_checkpoint", + "offset": 0 + }, + "verify": { + "expressions": [ + { + "expr": "g_fragmented_stats.xNumberOfFreeBlocks", + "equals": 2 + }, + { + "expr": "g_initial_free > g_after_allocations", + "equals": 1 + }, + { + "expr": "g_allocations_aligned", + "equals": 1 + } + ] + } + }, + "task01.coalesced": { + "event_id": "E02", + "stop": { + "symbol": "task03_debug_checkpoint", + "offset": 0 + }, + "verify": { + "expressions": [ + { + "expr": "g_final_stats.xNumberOfFreeBlocks", + "equals": 1 + }, + { + "expr": "g_final_free == g_initial_free", + "equals": 1 + }, + { + "expr": "g_oom_is_null", + "equals": 1 + }, + { + "expr": "g_task03_pass", + "equals": 1 + } + ] + } + } + } + }, + "sections": [ + { + "title": "A1 — Od liniowego kursora do odzyskiwalnej areny", + "order": 10, + "content_kind": "prose", + "asset_page_mode": "one-per-page", + "page_orientation": "portrait", + "content_tex": "Kursor liniowy potrafi tylko rosnąć. heap_4 dodaje metadane i listę wolnych bloków, dzięki czemu zwolniona pamięć wraca do ponownego użycia.", + "assets": [ + { + "path": "assets/a1-context.png", + "html_path": "assets/a1-context.svg", + "source_path": "assets/a1-context.puml", + "caption": "A1 CONTEXT — od żądania aplikacji do rzeczywistych bajtów ucHeap.", + "label": "fig:a1-context", + "alt": "A1 · granice odpowiedzialności heap_4", + "kind": "diagram", + "width": 1.0, + "page_grid": { + "columns": 1, + "rows": 1, + "page_width": 660, + "page_height": 760, + "overview": true, + "step_tiles": { + "application": 1, + "api": 1, + "allocator": 1, + "arena": 1, + "target": 1 + } + }, + "interactive": { + "kind": "uml-class", + "storage_key": "fc01-a1-context", + "title": "A1 · granice odpowiedzialności heap_4", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a1", + "label": "A1 CONTEXT", + "description": "Aplikacja korzysta z publicznego API, heap_4 zarządza jedną areną, a Hazard3 pokazuje jej rzeczywisty stan." + }, + "phases": [ + { + "id": "boundary", + "label": "APPLICATION / API / ALLOCATOR / TARGET", + "steps": [ + { + "id": "application", + "number": 1, + "label": "aplikacja żąda i zwalnia bajty", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Aplikacja zna wyłącznie publiczne API i wskaźniki payloadu.", + "evidence": "trzy żądania 24, 40 i 16 bajtów" + }, + { + "id": "api", + "number": 2, + "label": "FreeRTOS wystawia malloc, free i statystyki", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:90", + "description": "API oddziela eksperyment od prywatnej listy bloków.", + "evidence": "pvPortMalloc, vPortFree, vPortGetHeapStats" + }, + { + "id": "allocator", + "number": 3, + "label": "heap_4 zarządza blokami i kolejnością adresów", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Prywatny mechanizm wybiera, dzieli i scala wolne bloki.", + "evidence": "reset i inicjalizacja listy" + }, + { + "id": "arena", + "number": 4, + "label": "ucHeap jest jedną ograniczoną areną", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:11", + "description": "Metadane i payload znajdują się w tej samej statycznej tablicy.", + "evidence": "4096 bajtów, wyrównanie portu" + }, + { + "id": "target", + "number": 5, + "label": "Hazard3 ujawnia adresy i bajty", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "05", + "code_ref": "tests/check_task03_elf.sh:8", + "description": "ELF łączy kod, symbole i pamięć obserwowaną przez GDB.", + "evidence": "ucHeap i checkpointy w symbolach ELF" + } + ] + } + ] + } + } + ] + }, + { + "title": "A2 — Nagłówek, payload i lista wolnych bloków", + "order": 20, + "content_kind": "prose", + "asset_page_mode": "one-per-page", + "page_orientation": "portrait", + "content_tex": "Rozmiar żądania rośnie o nagłówek i wyrównanie. Duży wolny blok może zostać rozdzielony na blok przydzielony i użyteczną resztę.", + "assets": [ + { + "path": "assets/a2-structure.png", + "html_path": "assets/a2-structure.svg", + "source_path": "assets/a2-structure.puml", + "caption": "A2 STRUCTURE — metadane wewnątrz areny i adresowo uporządkowana lista.", + "label": "fig:a2-structure", + "alt": "A2 · struktura bloku i listy", + "kind": "diagram", + "width": 1.0, + "page_grid": { + "columns": 1, + "rows": 1, + "page_width": 660, + "page_height": 760, + "overview": true, + "step_tiles": { + "header": 1, + "alignment": 1, + "split": 1, + "address-order": 1, + "right-join": 1, + "left-join": 1 + } + }, + "interactive": { + "kind": "uml-class", + "storage_key": "fc01-a2-structure", + "title": "A2 · struktura bloku i listy", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a2", + "label": "A2 STRUCTURE", + "description": "Każdy blok ma nagłówek, a tylko wolne bloki wykorzystują wskaźnik next do budowy listy uporządkowanej adresami." + }, + "phases": [ + { + "id": "blocks", + "label": "HEADER / PAYLOAD / FREE LIST", + "steps": [ + { + "id": "header", + "number": 1, + "label": "nagłówek przechowuje next i size", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "01", + "code_ref": "src/tasks/heap4_model.h:11", + "description": "ModelBlock pokazuje minimalny kontrakt metadanych heap_4.", + "evidence": "dwa słowa metadanych" + }, + { + "id": "alignment", + "number": 2, + "label": "żądanie obejmuje nagłówek i wyrównanie", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "02", + "code_ref": "src/tasks/task01_first_fit_split.c:3", + "description": "13 bajtów payloadu zajmuje 32 bajty całego bloku.", + "evidence": "header=16, wanted=32" + }, + { + "id": "split", + "number": 3, + "label": "split pozostawia osobny wolny blok", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "03", + "code_ref": "src/tasks/task01_first_fit_split.c:43", + "description": "Reszta zachowuje własny nagłówek i trafia na listę wolnych.", + "evidence": "32 + 224 = 256" + }, + { + "id": "address-order", + "number": 4, + "label": "lista jest uporządkowana rosnącymi adresami", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "04", + "code_ref": "src/tasks/task02_address_order_coalesce.c:29", + "description": "Pozycja w liście ujawnia bezpośredniego poprzednika i następnika.", + "evidence": "previous < block < current" + }, + { + "id": "right-join", + "number": 5, + "label": "blok scala się z prawym sąsiadem", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "05", + "code_ref": "src/tasks/task02_address_order_coalesce.c:40", + "description": "Koniec zwalnianego bloku równy adresowi current oznacza ciągłość.", + "evidence": "block + size == current" + }, + { + "id": "left-join", + "number": 6, + "label": "wynik scala się z lewym sąsiadem", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "06", + "code_ref": "src/tasks/task02_address_order_coalesce.c:48", + "description": "Drugi test domyka dwustronne scalanie w jeden blok.", + "evidence": "previous + size == block" + } + ] + } + ] + } + } + ] + }, + { + "title": "A5 — First-fit, fragmentacja i pełne scalenie", + "order": 50, + "content_kind": "prose", + "asset_page_mode": "one-per-page", + "page_orientation": "landscape", + "content_tex": "Uczeń najpierw przewiduje liczbę wolnych bloków. RUN odtwarza dwa stabilne stany: po zwolnieniu A i C oraz po zwolnieniu B.", + "assets": [ + { + "path": "assets/a5-flow.png", + "html_path": "assets/a5-flow.svg", + "source_path": "assets/a5-flow.puml", + "caption": "A5 FLOW — inicjalizacja, A/B/C, fragmentacja, dwustronne scalenie i OOM.", + "label": "fig:a5-flow", + "alt": "A5 · pełny przebieg heap_4", + "kind": "diagram", + "width": 1.0, + "page_grid": { + "columns": 1, + "rows": 1, + "page_width": 940, + "page_height": 560, + "overview": true, + "step_tiles": { + "reset": 1, + "alloc-a": 1, + "alloc-bc": 1, + "free-ac": 1, + "fragmented": 1, + "free-b": 1, + "coalesced": 1, + "oom": 1 + } + }, + "interactive": { + "kind": "uml-sequence", + "storage_key": "fc01-a5-flow", + "title": "A5 · pełny przebieg heap_4", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a5", + "label": "A5 FLOW", + "description": "Jeden przebieg A/B/C przechodzi od pustej areny przez trzy przydziały i dwa wolne obszary do ponownie scalonego bloku." + }, + "phases": [ + { + "id": "replay", + "label": "ALLOCATE / FRAGMENT / COALESCE", + "steps": [ + { + "id": "reset", + "number": 1, + "label": "reset i inicjalizacja areny", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Pierwsze małe żądanie inicjalizuje sentinele i listę.", + "evidence": "initial free = 4080" + }, + { + "id": "alloc-a", + "number": 2, + "label": "first-fit przydziela A", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Pierwszy wystarczający blok zostaje rozdzielony.", + "evidence": "A payload = 24" + }, + { + "id": "alloc-bc", + "number": 3, + "label": "kolejne split tworzą B i C", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:79", + "description": "B i C zajmują kolejne fragmenty tego samego wolnego bloku.", + "evidence": "after allocations = 3952" + }, + { + "id": "free-ac", + "number": 4, + "label": "zwolnij A i C, pozostaw B", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:88", + "description": "C scala się z prawą resztą, ale B oddziela ją od A.", + "evidence": "dwa wolne bloki" + }, + { + "id": "fragmented", + "number": 5, + "label": "checkpoint fragmentacji", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:91", + "snapshot_ref": "task01.fragmented", + "description": "GDB zatrzymuje program przy dwóch wolnych blokach.", + "evidence": "xNumberOfFreeBlocks = 2" + }, + { + "id": "free-b", + "number": 6, + "label": "zwolnij B między dwoma sąsiadami", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "06", + "code_ref": "src/tasks/task03_freertos_heap4.c:93", + "description": "Wstawienie adresowe umożliwia dwa testy ciągłości.", + "evidence": "A + B + C + reszta są ciągłe" + }, + { + "id": "coalesced", + "number": 7, + "label": "arena wraca do jednego bloku", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "07", + "code_ref": "src/tasks/task03_freertos_heap4.c:96", + "snapshot_ref": "task01.coalesced", + "description": "Finalne statystyki dowodzą pełnego odzyskania areny.", + "evidence": "final free = initial free; blocks = 1" + }, + { + "id": "oom", + "number": 8, + "label": "zbyt duże żądanie kończy się NULL", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "08", + "code_ref": "src/tasks/task03_freertos_heap4.c:98", + "description": "Kontrolowany OOM nie narusza listy i wywołuje hook dokładnie raz.", + "evidence": "NULL, hooks=1, asserts=0" + } + ] + } + ] + } + } + ] + }, + { + "title": "A6 — Stan bloku a stan statystyk", + "order": 60, + "content_kind": "prose", + "asset_page_mode": "one-per-page", + "page_orientation": "portrait", + "content_tex": "Fragmentacja to nie tylko suma wolnych bajtów. O możliwości przydziału decyduje także największy pojedynczy blok.", + "assets": [ + { + "path": "assets/a6-state.png", + "html_path": "assets/a6-state.svg", + "source_path": "assets/a6-state.puml", + "caption": "A6 STATE — wolny, przydzielony, rozdzielony, scalony oraz minimum-ever.", + "label": "fig:a6-state", + "alt": "A6 · stany bloków i liczników", + "kind": "diagram", + "width": 1.0, + "page_grid": { + "columns": 1, + "rows": 1, + "page_width": 660, + "page_height": 760, + "overview": true, + "step_tiles": { + "free": 1, + "allocated": 1, + "fragmented-state": 1, + "coalesced-state": 1, + "minimum-ever": 1 + } + }, + "interactive": { + "kind": "uml-class", + "storage_key": "fc01-a6-state", + "title": "A6 · stany bloków i liczników", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a6", + "label": "A6 STATE", + "description": "Bieżąca liczba wolnych bajtów może rosnąć po free, ale minimum-ever pozostaje historycznym minimum." + }, + "phases": [ + { + "id": "state", + "label": "BLOCK STATE / HEAP STATS", + "steps": [ + { + "id": "free", + "number": 1, + "label": "wolny blok należy do listy", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Stan początkowy zawiera jeden największy wolny blok.", + "evidence": "initial free = largest free" + }, + { + "id": "allocated", + "number": 2, + "label": "przydzielony blok znika z listy wolnych", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Payload jest wyrównany, a bieżąca wolna pamięć maleje.", + "evidence": "all payload pointers aligned" + }, + { + "id": "fragmented-state", + "number": 3, + "label": "dwa wolne bloki nie są jednym dużym blokiem", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:90", + "snapshot_ref": "task01.fragmented", + "description": "Suma wolnego miejsca nie gwarantuje jednego dużego przydziału.", + "evidence": "free blocks = 2" + }, + { + "id": "coalesced-state", + "number": 4, + "label": "scalenie przywraca jeden największy blok", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:94", + "snapshot_ref": "task01.coalesced", + "description": "Current free i largest wracają do wartości początkowej.", + "evidence": "free blocks = 1" + }, + { + "id": "minimum-ever", + "number": 5, + "label": "minimum-ever zachowuje najniższy poziom", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:95", + "description": "Historyczne minimum nie zwiększa się po odzyskaniu pamięci.", + "evidence": "minimum-ever <= after allocations" + } + ] + } + ] + } + } + ] + }, + { + "title": "A7 — Dowód w Hazard3 i ELF", + "order": 70, + "content_kind": "prose", + "asset_page_mode": "one-per-page", + "page_orientation": "landscape", + "content_tex": "Snapshot jest dowodem tylko wtedy, gdy zawiera tożsamość artefaktu, pozycję programu i wartości, które rozstrzygają hipotezę.", + "assets": [ + { + "path": "assets/a7-runtime.png", + "html_path": "assets/a7-runtime.svg", + "source_path": "assets/a7-runtime.puml", + "caption": "A7 RUNTIME — kod, ELF, checkpoint, pamięć i statystyki jednego przebiegu.", + "label": "fig:a7-runtime", + "alt": "A7 · dowód runtime heap_4", + "kind": "diagram", + "width": 1.0, + "page_grid": { + "columns": 1, + "rows": 1, + "page_width": 940, + "page_height": 560, + "overview": true, + "step_tiles": { + "source": 1, + "elf": 1, + "fragmented-runtime": 1, + "memory": 1, + "final-runtime": 1 + } + }, + "interactive": { + "kind": "uml-class", + "storage_key": "fc01-a7-runtime", + "title": "A7 · dowód runtime heap_4", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a7", + "label": "A7 RUNTIME", + "description": "Ten sam artefakt łączy źródło, symbole ELF, dwa checkpointy, pamięć ucHeap i końcowe asercje." + }, + "phases": [ + { + "id": "evidence", + "label": "ARTIFACT / CHECKPOINT / MEMORY / ASSERTION", + "steps": [ + { + "id": "source", + "number": 1, + "label": "źródło wskazuje eksperyment A/B/C", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:62", + "description": "Blob źródła jest częścią tożsamości karty.", + "evidence": "source git blob" + }, + { + "id": "elf", + "number": 2, + "label": "ELF zawiera prawdziwe symbole heap_4", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "02", + "code_ref": "tests/check_task03_elf.sh:8", + "description": "Test ABI odrzuca atrapę bez pvPortMalloc, vPortFree i ucHeap.", + "evidence": "upstream symbols present" + }, + { + "id": "fragmented-runtime", + "number": 3, + "label": "checkpoint pokazuje dwa wolne bloki", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:91", + "snapshot_ref": "task01.fragmented", + "description": "Neovim, GDB i pamięć zatrzymują się na tym samym stanie.", + "evidence": "blocks=2 and aligned=1" + }, + { + "id": "memory", + "number": 4, + "label": "ucHeap ujawnia nagłówki i payload", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:11", + "description": "Widok bajtów łączy diagram z realnym układem areny.", + "evidence": "aligned arena and in-band metadata" + }, + { + "id": "final-runtime", + "number": 5, + "label": "checkpoint końcowy dowodzi odzyskania", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:111", + "snapshot_ref": "task01.coalesced", + "description": "Jedna ramka łączy stats, OOM, hook i PASS.", + "evidence": "final=initial, blocks=1, pass=1" + } + ] + } + ] + } + } + ] + }, + { + "title": "Task01 — mechanika heap_4", + "order": 90, + "content_kind": "tasks", + "task_refs": [ + "task01" + ] + } + ], + "tasks": { + "task01": { + "title": "Predict and prove reusable heap_4 blocks", + "uuid": "aea09ab7-9bfd-5368-8d1b-c8724871c1a7", + "prompt_tex": "Przewidź układ bloków po alloc A/B/C, następnie po free(A,C) i free(B). Odtwórz oba checkpointy i udowodnij, że arena została scalona bez utraty minimum-ever.", + "criterion": "Model 13 -> 32 bajty; poprawna predykcja dwóch wolnych bloków po free(A,C) i jednego po free(B); final free = initial free; minimum-ever nie rośnie; OOM zwraca NULL; PASS=1.", + "conclusion_tex": "heap\\_4 odzyskuje pamięć dzięki metadanym w arenie, adresowo uporządkowanej liście i scalaniu sąsiadów. Suma wolnych bajtów nie zastępuje informacji o największym bloku, a minimum-ever jest historią, nie bieżącym stanem.", + "flow": [ + { + "kind": "block", + "id": "predict", + "title": "A — przewidywanie", + "content_tex": "Przejdź przez model nagłówka, split i porządek adresowy przed uruchomieniem prawdziwego heap\\_4.", + "steps": [ + { + "id": "size", + "title": "Policz rozmiar bloku.", + "content_tex": "Dodaj nagłówek do 13 bajtów i wyrównaj wynik do ośmiu." + }, + { + "id": "list", + "title": "Narysuj listę po free(A,C).", + "content_tex": "Zaznacz, dlaczego przydzielony B rozdziela dwa wolne obszary." + } + ] + }, + { + "kind": "block", + "id": "replay", + "title": "B — replay Hazard3", + "content_tex": "Powiąż diagram z dwoma deterministycznymi checkpointami.", + "steps": [ + { + "id": "fragmented", + "title": "Sprawdź E01.", + "content_tex": "Porównaj liczbę wolnych bloków, największy blok i bieżące wolne bajty." + }, + { + "id": "coalesced", + "title": "Sprawdź E02.", + "content_tex": "Udowodnij pełne scalenie, zachowanie minimum-ever i kontrolowany OOM." + } + ] + }, + { + "kind": "exercise", + "id": "fragmentation", + "title": "Ćwiczenie — ta sama suma, inna użyteczność", + "prompt_tex": "Zaproponuj dwa układy wolnych bloków o tej samej sumie bajtów, ale tylko jeden zdolny obsłużyć wskazane duże żądanie. Uzasadnij odpowiedź przez largest-free-block.", + "evidence_tex": "Dwa diagramy listy, suma wolnych bajtów, rozmiar największego bloku i wynik pvPortMalloc.", + "criterion": "Uczeń nie utożsamia sumy wolnej pamięci z możliwością pojedynczego dużego przydziału.", + "based_on": [ + "predict", + "replay" + ] + } + ], + "educational_requirement_refs": [ + "FC01.WE01" + ], + "learning_effect_refs": [ + "FC01.EN01", + "FC01.EK01" + ], + "assessment_criterion_ref": "FC01.KW01" + } + }, + "tasks_order": [ + "task01" + ] +} diff --git a/json/card_spec.json b/json/card_spec.json new file mode 100644 index 0000000..74ca110 --- /dev/null +++ b/json/card_spec.json @@ -0,0 +1,811 @@ +{ + "card": { + "number": "01", + "slug": "heap4-mechanics", + "title": "heap_4: From Linear Cursor to Reusable Blocks", + "topic": "headers, address-ordered free list, first-fit, split, coalescing and heap statistics", + "status": "Gotowa", + "version": "v00.01", + "revision_date": "2026-07-20T00:00:00+02:00" + }, + "front": { + "goal": "Uczeń przechodzi od liniowego kursora z K\\&R 5.4 do wielokrotnego użycia tej samej areny: rozpoznaje nagłówek bloku, first-fit, split oraz dwustronne scalanie wolnych bloków w heap\\_4.", + "scope": "Dwa małe modele C przygotowują przewidywanie. Główny replay uruchamia prawdziwe FreeRTOS-Kernel V11.3.0 heap\\_4 na RV32I/Hazard3 i dowodzi fragmentacji, pełnego scalenia, minimum-ever oraz kontrolowanego OOM." + }, + "viewpoints": [ + { + "id": "A1", + "label": "CONTEXT", + "subtitle": "from cursor to reusable heap", + "status": "enabled" + }, + { + "id": "A2", + "label": "STRUCTURE", + "subtitle": "headers and address order", + "status": "enabled" + }, + { + "id": "A3", + "label": "DISPATCH", + "subtitle": "not used by the allocator", + "status": "unavailable", + "reason": "heap_4 is called directly through pvPortMalloc and vPortFree; there is no callback or dispatch mechanism to explain." + }, + { + "id": "A4", + "label": "APPLICATION", + "subtitle": "experiment is already explicit", + "status": "unavailable", + "reason": "The concrete A/B/C allocation experiment is completely represented by A5 and its two runtime checkpoints." + }, + { + "id": "A5", + "label": "FLOW", + "subtitle": "allocate, fragment, coalesce", + "status": "enabled" + }, + { + "id": "A6", + "label": "STATE", + "subtitle": "block list and statistics", + "status": "enabled" + }, + { + "id": "A7", + "label": "RUNTIME", + "subtitle": "Hazard3 evidence", + "status": "enabled" + }, + { + "id": "A8", + "label": "PATTERNS", + "subtitle": "mechanism, not a separate page", + "status": "unavailable", + "reason": "First-fit and the intrusive address-ordered free list are already proved in A2 and A5; a separate pattern page would duplicate them." + } + ], + "artifact": { + "source": "src/tasks/task03_freertos_heap4.c", + "elf": "build/task03_freertos_heap4/prog.elf", + "image": "build/task03_freertos_heap4/prog.bin" + }, + "strategies": [ + { + "id": "code.model", + "kind": "code", + "prerequisites": [ + "K&R 5.4 linear allocator complete" + ], + "layout": [ + "header", + "payload", + "remainder", + "address-ordered list" + ], + "commands": [ + "rg -n 'ModelBlock|align_up|insert_and_coalesce' src/tasks" + ], + "expected_observations": [ + "requested size includes header and alignment", + "free list is ordered by block address" + ], + "assertions": [ + "payload begins after the header", + "split preserves the total arena size" + ], + "evidence_fields": [ + "code_ref", + "header bytes", + "wanted bytes", + "block address" + ] + }, + { + "id": "code.heap4", + "kind": "code", + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ] + }, + { + "id": "run.fragmented", + "kind": "run", + "prerequisites": [ + "clean Hazard3 RAM", + "task03 image loaded" + ], + "layout": [ + "source", + "free-list stats", + "ucHeap memory", + "registers" + ], + "commands": [ + "break heap4_fragmented_checkpoint", + "print g_fragmented_stats", + "x/64bx ucHeap" + ], + "expected_observations": [ + "A and C are free while B remains allocated", + "the free list contains two blocks" + ], + "assertions": [ + "xNumberOfFreeBlocks equals 2", + "current free bytes exceed the largest free block" + ], + "evidence_fields": [ + "free blocks", + "largest block", + "free bytes", + "heap bytes" + ] + }, + { + "id": "run.coalesced", + "kind": "run", + "prerequisites": [ + "fragmented checkpoint reached" + ], + "layout": [ + "final stats", + "minimum-ever", + "OOM hook", + "PASS" + ], + "commands": [ + "break task03_debug_checkpoint", + "print g_final_stats", + "print g_task03_pass" + ], + "expected_observations": [ + "freeing B joins both neighbours", + "the arena returns to one reusable block" + ], + "assertions": [ + "final free equals initial free", + "minimum-ever does not rise after free", + "oversized allocation returns NULL and calls the hook once" + ], + "evidence_fields": [ + "final free", + "largest block", + "minimum-ever", + "OOM hook", + "PASS" + ] + }, + { + "id": "code.identity", + "kind": "code", + "prerequisites": [ + "built ELF" + ], + "layout": [ + "symbols", + "sections", + "artifact hashes" + ], + "commands": [ + "tests/check_task03_elf.sh build/task03_freertos_heap4/prog.elf" + ], + "expected_observations": [ + "upstream heap_4 symbols are linked", + "checkpoint and ucHeap symbols remain observable" + ], + "assertions": [ + "pvPortMalloc and vPortFree are present", + "prvInsertBlockIntoFreeList is present" + ], + "evidence_fields": [ + "source blob", + "ELF SHA256", + "image SHA256", + "symbol" + ] + } + ], + "checkpoints": { + "task01.fragmented": { + "event_id": "E01", + "stop": { + "symbol": "heap4_fragmented_checkpoint", + "offset": 0 + }, + "verify": { + "expressions": [ + { + "expr": "g_fragmented_stats.xNumberOfFreeBlocks", + "equals": 2 + }, + { + "expr": "g_initial_free > g_after_allocations", + "equals": 1 + }, + { + "expr": "g_allocations_aligned", + "equals": 1 + } + ] + } + }, + "task01.coalesced": { + "event_id": "E02", + "stop": { + "symbol": "task03_debug_checkpoint", + "offset": 0 + }, + "verify": { + "expressions": [ + { + "expr": "g_final_stats.xNumberOfFreeBlocks", + "equals": 1 + }, + { + "expr": "g_final_free == g_initial_free", + "equals": 1 + }, + { + "expr": "g_oom_is_null", + "equals": 1 + }, + { + "expr": "g_task03_pass", + "equals": 1 + } + ] + } + } + }, + "sections": [ + { + "id": "A1", + "label": "CONTEXT", + "title": "Od liniowego kursora do odzyskiwalnej areny", + "order": 10, + "orientation": "portrait", + "description": "Aplikacja korzysta z publicznego API, heap_4 zarządza jedną areną, a Hazard3 pokazuje jej rzeczywisty stan.", + "content_tex": "Kursor liniowy potrafi tylko rosnąć. heap_4 dodaje metadane i listę wolnych bloków, dzięki czemu zwolniona pamięć wraca do ponownego użycia.", + "assets": [ + { + "stem": "a1-context", + "title": "A1 · granice odpowiedzialności heap_4", + "caption": "A1 CONTEXT — od żądania aplikacji do rzeczywistych bajtów ucHeap.", + "label": "fig:a1-context", + "alt": "A1 · granice odpowiedzialności heap_4", + "phases": [ + { + "id": "boundary", + "label": "APPLICATION / API / ALLOCATOR / TARGET", + "steps": [ + { + "id": "application", + "number": 1, + "label": "aplikacja żąda i zwalnia bajty", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Aplikacja zna wyłącznie publiczne API i wskaźniki payloadu.", + "evidence": "trzy żądania 24, 40 i 16 bajtów" + }, + { + "id": "api", + "number": 2, + "label": "FreeRTOS wystawia malloc, free i statystyki", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:90", + "description": "API oddziela eksperyment od prywatnej listy bloków.", + "evidence": "pvPortMalloc, vPortFree, vPortGetHeapStats" + }, + { + "id": "allocator", + "number": 3, + "label": "heap_4 zarządza blokami i kolejnością adresów", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Prywatny mechanizm wybiera, dzieli i scala wolne bloki.", + "evidence": "reset i inicjalizacja listy" + }, + { + "id": "arena", + "number": 4, + "label": "ucHeap jest jedną ograniczoną areną", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:11", + "description": "Metadane i payload znajdują się w tej samej statycznej tablicy.", + "evidence": "4096 bajtów, wyrównanie portu" + }, + { + "id": "target", + "number": 5, + "label": "Hazard3 ujawnia adresy i bajty", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "05", + "code_ref": "tests/check_task03_elf.sh:8", + "description": "ELF łączy kod, symbole i pamięć obserwowaną przez GDB.", + "evidence": "ucHeap i checkpointy w symbolach ELF" + } + ] + } + ] + } + ] + }, + { + "id": "A2", + "label": "STRUCTURE", + "title": "Nagłówek, payload i lista wolnych bloków", + "order": 20, + "orientation": "portrait", + "description": "Każdy blok ma nagłówek, a tylko wolne bloki wykorzystują wskaźnik next do budowy listy uporządkowanej adresami.", + "content_tex": "Rozmiar żądania rośnie o nagłówek i wyrównanie. Duży wolny blok może zostać rozdzielony na blok przydzielony i użyteczną resztę.", + "assets": [ + { + "stem": "a2-structure", + "title": "A2 · struktura bloku i listy", + "caption": "A2 STRUCTURE — metadane wewnątrz areny i adresowo uporządkowana lista.", + "label": "fig:a2-structure", + "alt": "A2 · struktura bloku i listy", + "phases": [ + { + "id": "blocks", + "label": "HEADER / PAYLOAD / FREE LIST", + "steps": [ + { + "id": "header", + "number": 1, + "label": "nagłówek przechowuje next i size", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "01", + "code_ref": "src/tasks/heap4_model.h:11", + "description": "ModelBlock pokazuje minimalny kontrakt metadanych heap_4.", + "evidence": "dwa słowa metadanych" + }, + { + "id": "alignment", + "number": 2, + "label": "żądanie obejmuje nagłówek i wyrównanie", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "02", + "code_ref": "src/tasks/task01_first_fit_split.c:3", + "description": "13 bajtów payloadu zajmuje 32 bajty całego bloku.", + "evidence": "header=16, wanted=32" + }, + { + "id": "split", + "number": 3, + "label": "split pozostawia osobny wolny blok", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "03", + "code_ref": "src/tasks/task01_first_fit_split.c:43", + "description": "Reszta zachowuje własny nagłówek i trafia na listę wolnych.", + "evidence": "32 + 224 = 256" + }, + { + "id": "address-order", + "number": 4, + "label": "lista jest uporządkowana rosnącymi adresami", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "04", + "code_ref": "src/tasks/task02_address_order_coalesce.c:29", + "description": "Pozycja w liście ujawnia bezpośredniego poprzednika i następnika.", + "evidence": "previous < block < current" + }, + { + "id": "right-join", + "number": 5, + "label": "blok scala się z prawym sąsiadem", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "05", + "code_ref": "src/tasks/task02_address_order_coalesce.c:40", + "description": "Koniec zwalnianego bloku równy adresowi current oznacza ciągłość.", + "evidence": "block + size == current" + }, + { + "id": "left-join", + "number": 6, + "label": "wynik scala się z lewym sąsiadem", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "06", + "code_ref": "src/tasks/task02_address_order_coalesce.c:48", + "description": "Drugi test domyka dwustronne scalanie w jeden blok.", + "evidence": "previous + size == block" + } + ] + } + ] + } + ] + }, + { + "id": "A5", + "label": "FLOW", + "title": "First-fit, fragmentacja i pełne scalenie", + "order": 50, + "orientation": "landscape", + "description": "Jeden przebieg A/B/C przechodzi od pustej areny przez trzy przydziały i dwa wolne obszary do ponownie scalonego bloku.", + "content_tex": "Uczeń najpierw przewiduje liczbę wolnych bloków. RUN odtwarza dwa stabilne stany: po zwolnieniu A i C oraz po zwolnieniu B.", + "assets": [ + { + "stem": "a5-flow", + "title": "A5 · pełny przebieg heap_4", + "caption": "A5 FLOW — inicjalizacja, A/B/C, fragmentacja, dwustronne scalenie i OOM.", + "label": "fig:a5-flow", + "alt": "A5 · pełny przebieg heap_4", + "diagram_kind": "sequence", + "phases": [ + { + "id": "replay", + "label": "ALLOCATE / FRAGMENT / COALESCE", + "steps": [ + { + "id": "reset", + "number": 1, + "label": "reset i inicjalizacja areny", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Pierwsze małe żądanie inicjalizuje sentinele i listę.", + "evidence": "initial free = 4080" + }, + { + "id": "alloc-a", + "number": 2, + "label": "first-fit przydziela A", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Pierwszy wystarczający blok zostaje rozdzielony.", + "evidence": "A payload = 24" + }, + { + "id": "alloc-bc", + "number": 3, + "label": "kolejne split tworzą B i C", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:79", + "description": "B i C zajmują kolejne fragmenty tego samego wolnego bloku.", + "evidence": "after allocations = 3952" + }, + { + "id": "free-ac", + "number": 4, + "label": "zwolnij A i C, pozostaw B", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:88", + "description": "C scala się z prawą resztą, ale B oddziela ją od A.", + "evidence": "dwa wolne bloki" + }, + { + "id": "fragmented", + "number": 5, + "label": "checkpoint fragmentacji", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:91", + "snapshot_ref": "task01.fragmented", + "description": "GDB zatrzymuje program przy dwóch wolnych blokach.", + "evidence": "xNumberOfFreeBlocks = 2" + }, + { + "id": "free-b", + "number": 6, + "label": "zwolnij B między dwoma sąsiadami", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "06", + "code_ref": "src/tasks/task03_freertos_heap4.c:93", + "description": "Wstawienie adresowe umożliwia dwa testy ciągłości.", + "evidence": "A + B + C + reszta są ciągłe" + }, + { + "id": "coalesced", + "number": 7, + "label": "arena wraca do jednego bloku", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "07", + "code_ref": "src/tasks/task03_freertos_heap4.c:96", + "snapshot_ref": "task01.coalesced", + "description": "Finalne statystyki dowodzą pełnego odzyskania areny.", + "evidence": "final free = initial free; blocks = 1" + }, + { + "id": "oom", + "number": 8, + "label": "zbyt duże żądanie kończy się NULL", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "08", + "code_ref": "src/tasks/task03_freertos_heap4.c:98", + "description": "Kontrolowany OOM nie narusza listy i wywołuje hook dokładnie raz.", + "evidence": "NULL, hooks=1, asserts=0" + } + ] + } + ] + } + ] + }, + { + "id": "A6", + "label": "STATE", + "title": "Stan bloku a stan statystyk", + "order": 60, + "orientation": "portrait", + "description": "Bieżąca liczba wolnych bajtów może rosnąć po free, ale minimum-ever pozostaje historycznym minimum.", + "content_tex": "Fragmentacja to nie tylko suma wolnych bajtów. O możliwości przydziału decyduje także największy pojedynczy blok.", + "assets": [ + { + "stem": "a6-state", + "title": "A6 · stany bloków i liczników", + "caption": "A6 STATE — wolny, przydzielony, rozdzielony, scalony oraz minimum-ever.", + "label": "fig:a6-state", + "alt": "A6 · stany bloków i liczników", + "phases": [ + { + "id": "state", + "label": "BLOCK STATE / HEAP STATS", + "steps": [ + { + "id": "free", + "number": 1, + "label": "wolny blok należy do listy", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Stan początkowy zawiera jeden największy wolny blok.", + "evidence": "initial free = largest free" + }, + { + "id": "allocated", + "number": 2, + "label": "przydzielony blok znika z listy wolnych", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Payload jest wyrównany, a bieżąca wolna pamięć maleje.", + "evidence": "all payload pointers aligned" + }, + { + "id": "fragmented-state", + "number": 3, + "label": "dwa wolne bloki nie są jednym dużym blokiem", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:90", + "snapshot_ref": "task01.fragmented", + "description": "Suma wolnego miejsca nie gwarantuje jednego dużego przydziału.", + "evidence": "free blocks = 2" + }, + { + "id": "coalesced-state", + "number": 4, + "label": "scalenie przywraca jeden największy blok", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:94", + "snapshot_ref": "task01.coalesced", + "description": "Current free i largest wracają do wartości początkowej.", + "evidence": "free blocks = 1" + }, + { + "id": "minimum-ever", + "number": 5, + "label": "minimum-ever zachowuje najniższy poziom", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:95", + "description": "Historyczne minimum nie zwiększa się po odzyskaniu pamięci.", + "evidence": "minimum-ever <= after allocations" + } + ] + } + ] + } + ] + }, + { + "id": "A7", + "label": "RUNTIME", + "title": "Dowód w Hazard3 i ELF", + "order": 70, + "orientation": "landscape", + "description": "Ten sam artefakt łączy źródło, symbole ELF, dwa checkpointy, pamięć ucHeap i końcowe asercje.", + "content_tex": "Snapshot jest dowodem tylko wtedy, gdy zawiera tożsamość artefaktu, pozycję programu i wartości, które rozstrzygają hipotezę.", + "assets": [ + { + "stem": "a7-runtime", + "title": "A7 · dowód runtime heap_4", + "caption": "A7 RUNTIME — kod, ELF, checkpoint, pamięć i statystyki jednego przebiegu.", + "label": "fig:a7-runtime", + "alt": "A7 · dowód runtime heap_4", + "phases": [ + { + "id": "evidence", + "label": "ARTIFACT / CHECKPOINT / MEMORY / ASSERTION", + "steps": [ + { + "id": "source", + "number": 1, + "label": "źródło wskazuje eksperyment A/B/C", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:62", + "description": "Blob źródła jest częścią tożsamości karty.", + "evidence": "source git blob" + }, + { + "id": "elf", + "number": 2, + "label": "ELF zawiera prawdziwe symbole heap_4", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "02", + "code_ref": "tests/check_task03_elf.sh:8", + "description": "Test ABI odrzuca atrapę bez pvPortMalloc, vPortFree i ucHeap.", + "evidence": "upstream symbols present" + }, + { + "id": "fragmented-runtime", + "number": 3, + "label": "checkpoint pokazuje dwa wolne bloki", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:91", + "snapshot_ref": "task01.fragmented", + "description": "Neovim, GDB i pamięć zatrzymują się na tym samym stanie.", + "evidence": "blocks=2 and aligned=1" + }, + { + "id": "memory", + "number": 4, + "label": "ucHeap ujawnia nagłówki i payload", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:11", + "description": "Widok bajtów łączy diagram z realnym układem areny.", + "evidence": "aligned arena and in-band metadata" + }, + { + "id": "final-runtime", + "number": 5, + "label": "checkpoint końcowy dowodzi odzyskania", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:111", + "snapshot_ref": "task01.coalesced", + "description": "Jedna ramka łączy stats, OOM, hook i PASS.", + "evidence": "final=initial, blocks=1, pass=1" + } + ] + } + ] + } + ] + } + ], + "learning": { + "model_label": "Model bloków heap_4", + "model": "Uczeń wyjaśnia nagłówek, wyrównanie, first-fit, split, adresową listę wolnych bloków i dwustronne coalescing.", + "replay_label": "Fragmentacja i odzyskanie areny", + "replay": "Uczeń odtwarza dwa checkpointy Hazard3 i odróżnia current free, largest free block oraz minimum-ever.", + "criterion": "Model 13 -> 32 bajty; poprawna predykcja dwóch wolnych bloków po free(A,C) i jednego po free(B); final free = initial free; minimum-ever nie rośnie; OOM zwraca NULL; PASS=1.", + "requirement": "Analiza i weryfikacja mechaniki dynamicznej alokacji heap_4 w FreeRTOS C na RV32I/Hazard3." + }, + "task": { + "short_label": "mechanika heap_4", + "title": "Predict and prove reusable heap_4 blocks", + "prompt_tex": "Przewidź układ bloków po alloc A/B/C, następnie po free(A,C) i free(B). Odtwórz oba checkpointy i udowodnij, że arena została scalona bez utraty minimum-ever.", + "conclusion_tex": "heap\\_4 odzyskuje pamięć dzięki metadanym w arenie, adresowo uporządkowanej liście i scalaniu sąsiadów. Suma wolnych bajtów nie zastępuje informacji o największym bloku, a minimum-ever jest historią, nie bieżącym stanem.", + "flow": [ + { + "kind": "block", + "id": "predict", + "title": "A — przewidywanie", + "content_tex": "Przejdź przez model nagłówka, split i porządek adresowy przed uruchomieniem prawdziwego heap\\_4.", + "steps": [ + { + "id": "size", + "title": "Policz rozmiar bloku.", + "content_tex": "Dodaj nagłówek do 13 bajtów i wyrównaj wynik do ośmiu." + }, + { + "id": "list", + "title": "Narysuj listę po free(A,C).", + "content_tex": "Zaznacz, dlaczego przydzielony B rozdziela dwa wolne obszary." + } + ] + }, + { + "kind": "block", + "id": "replay", + "title": "B — replay Hazard3", + "content_tex": "Powiąż diagram z dwoma deterministycznymi checkpointami.", + "steps": [ + { + "id": "fragmented", + "title": "Sprawdź E01.", + "content_tex": "Porównaj liczbę wolnych bloków, największy blok i bieżące wolne bajty." + }, + { + "id": "coalesced", + "title": "Sprawdź E02.", + "content_tex": "Udowodnij pełne scalenie, zachowanie minimum-ever i kontrolowany OOM." + } + ] + }, + { + "kind": "exercise", + "id": "fragmentation", + "title": "Ćwiczenie — ta sama suma, inna użyteczność", + "prompt_tex": "Zaproponuj dwa układy wolnych bloków o tej samej sumie bajtów, ale tylko jeden zdolny obsłużyć wskazane duże żądanie. Uzasadnij odpowiedź przez largest-free-block.", + "evidence_tex": "Dwa diagramy listy, suma wolnych bajtów, rozmiar największego bloku i wynik pvPortMalloc.", + "criterion": "Uczeń nie utożsamia sumy wolnej pamięci z możliwością pojedynczego dużego przydziału.", + "based_on": [ + "predict", + "replay" + ] + } + ] + } +} diff --git a/web/app.css b/web/app.css new file mode 100644 index 0000000..eac8d78 --- /dev/null +++ b/web/app.css @@ -0,0 +1 @@ +.paper{display:flex;flex-direction:column;gap:3.3cm}.paper>.sheet,.paper>.sheet-spread>.sheet{width:210mm;height:297mm;min-height:297mm;max-height:297mm;margin:0 auto;overflow:hidden}.paper>.sheet.sheet--landscape,.paper>.sheet-spread>.sheet.sheet--landscape{width:297mm;min-width:297mm;max-width:297mm;height:210mm;min-height:210mm;max-height:210mm}.paper>.sheet>.sheet-content,.paper>.sheet-spread>.sheet>.sheet-content{height:297mm;min-height:297mm;max-height:297mm;overflow-x:hidden;overflow-y:hidden}.paper>.sheet.sheet--landscape>.sheet-content,.paper>.sheet-spread>.sheet.sheet--landscape>.sheet-content{height:210mm;min-height:210mm;max-height:210mm}.sheet-spread{display:contents}.paper.is-diagram-spread .sheet-spread{display:grid;grid-template-columns:repeat(var(--spread-columns, 1),max-content);width:max-content;max-width:none;margin:0 auto;align-items:flex-start;gap:2mm;zoom:var(--spread-fit-scale, 1)}.paper.is-diagram-spread .sheet-spread>.sheet{flex:0 0 auto}.viewer-chrome{position:sticky;top:0;z-index:80;width:100%}.viewer-action-toast{position:absolute;z-index:12;right:9px;bottom:9px;max-width:min(720px,calc(100vw - 18px));box-sizing:border-box;overflow:hidden;border:1px solid #42b8e7;border-radius:3px;background:#102c38ee;color:#dff7ff;padding:5px 9px;box-shadow:0 4px 14px #0007;text-overflow:ellipsis;white-space:nowrap;font:750 10px/1.25 ui-monospace,monospace}.viewer-chrome .topbar{position:sticky;top:0;z-index:90}.viewpoint-bar{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:1px;min-height:31px;border-top:1px solid #9aa8ae;border-bottom:1px solid #718087;background:#718087;box-shadow:0 2px 5px #0002}.viewpoint-bar button{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:5px;min-width:0;border:0;background:#f7f9fa;color:#1f3038;padding:5px 7px;text-align:left;cursor:pointer}.viewpoint-bar button:hover,.viewpoint-bar button:focus-visible{z-index:1;background:#e9f3f7;outline:2px solid #287495;outline-offset:-2px}.viewpoint-bar button[aria-current=location]{background:#dcecf3;box-shadow:inset 0 -3px #167ca4}.viewpoint-bar button>span{color:#1b6785;font:850 10px/1 ui-monospace,monospace}.viewpoint-bar button>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:750 10px/1.1 system-ui,sans-serif}.viewpoint-bar button.is-unavailable{background:#eef0f1;color:#5d686d;cursor:not-allowed}.viewpoint-bar button.is-unavailable>span{color:#68747a}.viewpoint-bar button.is-unavailable>small{border:1px solid #9da7ab;border-radius:2px;padding:1px 3px;font:750 7px/1 ui-monospace,monospace}.card-library-toggle{display:inline-flex;align-items:center;flex:none;height:28px;gap:6px;border:1px solid #6e7d84;border-radius:3px;background:#f6f8f9;color:#26373f;padding:2px 8px;font:750 11px/1 ui-monospace,monospace;cursor:pointer}.card-library-toggle:hover,.card-library-toggle:focus-visible{border-color:#1d7799;background:#edf7fa;outline:none}.card-library-toggle.is-active{border-color:#126d8f;background:#174f67;color:#fff}.card-library-toggle-icon{font:700 16px/1 system-ui,sans-serif}.card-library-toggle kbd{color:#267697;font:inherit}.card-library-toggle.is-active kbd{color:#aee9ff}:root{--side-panel-top: 36px;--side-panel-width: min(960px, calc(100vw - 28px) );--side-panel-trigger-length: 56px}.side-panel-dock{position:fixed;z-index:240;top:var(--side-panel-top);bottom:0;width:0;pointer-events:none}.side-panel-dock--left{left:0}.side-panel-dock--right{right:0}.side-panel-rail{position:fixed;z-index:243;top:calc(var(--side-panel-top) + 8px);display:flex;width:13px;flex-direction:column;gap:10px;pointer-events:auto}.side-panel-dock--left .side-panel-rail{left:0}.side-panel-dock--right .side-panel-rail{right:0}.side-panel-trigger{--side-panel-accent: #167ca4;position:relative;display:grid;width:13px;height:var(--side-panel-trigger-length);place-items:center;border:0;border-radius:0;background:transparent;padding:0;cursor:pointer}.side-panel-trigger:before{content:"";display:block;width:3px;height:calc(var(--side-panel-trigger-length) - 8px);border-radius:999px;background:var(--side-panel-accent);box-shadow:0 0 0 1px #ffffff73,0 3px 10px -5px var(--side-panel-accent);opacity:.78;transition:width .14s ease,opacity .14s ease,box-shadow .14s ease}.side-panel-trigger:hover:before,.side-panel-trigger:focus-visible:before,.side-panel-trigger.is-open:before{width:4px;opacity:1}.side-panel-trigger.is-pinned:before{width:5px;box-shadow:0 0 0 1px #ffffff9e,0 3px 12px -4px var(--side-panel-accent)}.side-panel-trigger:focus-visible{outline:2px solid var(--side-panel-accent);outline-offset:-2px}.side-panel-trigger>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.side-panel{position:fixed;z-index:241;top:var(--side-panel-top);bottom:0;display:flex;width:var(--side-panel-width);max-width:calc(100vw - 20px);box-sizing:border-box;flex-direction:column;overflow:hidden;border-color:#819098;background:#f7f9fa;color:#17252c;pointer-events:none;transition:transform .18s cubic-bezier(.22,.78,.24,1);will-change:transform}.side-panel-dock--left .side-panel{left:0;border-right:1px solid #819098;box-shadow:15px 0 34px -24px #101b218c;transform:translate(calc(-100% - 14px))}.side-panel-dock--right .side-panel{right:0;border-left:1px solid #819098;box-shadow:-15px 0 34px -24px #101b218c;transform:translate(calc(100% + 14px))}.side-panel.is-open{transform:translate(0);pointer-events:auto}.side-panel:after{content:"";position:absolute;top:10px;width:4px;height:48px;border-radius:999px;background:var(--side-panel-accent);pointer-events:none}.side-panel-dock--left .side-panel:after{right:-2px}.side-panel-dock--right .side-panel:after{left:-2px}.side-panel-header{display:flex;min-height:38px;box-sizing:border-box;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #aebbc1;background:#e7edef;padding:4px 7px 4px 10px}.side-panel-header>div:first-child{display:flex;min-width:0;align-items:baseline;gap:7px}.side-panel-header small{color:#52666f;font:600 16px/1 ui-monospace,monospace;letter-spacing:.08em}.side-panel-header strong{overflow:hidden;color:#11191d;text-overflow:ellipsis;white-space:nowrap;font:600 16px/1.2 system-ui,sans-serif}.side-panel-actions{display:flex;flex:none;gap:4px}.side-panel-actions button{display:grid;min-width:38px;height:24px;place-items:center;border:1px solid #8b999f;border-radius:3px;background:#fff;color:#26373f;padding:0 6px;font:650 16px/1 ui-monospace,monospace;cursor:pointer}.side-panel-actions button:last-child{min-width:24px;padding:0;font-size:18px}.side-panel-actions button:hover,.side-panel-actions button:focus-visible,.side-panel-actions button.is-pinned{border-color:var(--side-panel-accent);background:#edf7fa;outline:none}.side-panel-body,.card-library-panel{display:flex;min-height:0;flex:1;flex-direction:column;overflow:hidden}.card-library-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:18px 18px 15px;border-bottom:1px solid #bdc9ce;background:#e8eef1}.card-library-header small{color:#52666f;font:600 16px/1.25 ui-monospace,monospace;letter-spacing:.09em;text-transform:uppercase}.card-library-header h2{margin:4px 0 2px;font:750 22px/1.15 system-ui,sans-serif}.card-library-header p{margin:0;color:#607078;font:500 16px/1.35 system-ui,sans-serif}.card-library-header>button{display:grid;width:34px;height:34px;place-items:center;flex:none;border:1px solid #77878e;border-radius:3px;background:#fff;color:#25353c;padding:0;font:25px/1 system-ui,sans-serif;cursor:pointer}.card-library-header>button:hover,.card-library-header>button:focus-visible{border-color:#126d8f;background:#edf7fa;outline:2px solid #85c5dc;outline-offset:1px}.card-library-tree{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px 0 18px;scrollbar-color:#8a9aa1 #edf1f3}.card-library-tree details{border:0}.card-library-tree summary{display:grid;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:6px;min-height:30px;box-sizing:border-box;padding:5px 10px 5px 4px;list-style:none;cursor:pointer;user-select:none}.card-library-tree summary::-webkit-details-marker{display:none}.card-library-tree summary:hover,.card-library-tree summary:focus-visible{background:#eaf1f4;outline:none}.card-library-branch{color:#25363d;font:16px/1 ui-monospace,monospace;transform:rotate(-90deg);transition:transform .12s ease}.card-library-tree details[open]>summary .card-library-branch{transform:rotate(0)}.card-library-tree summary strong,.card-library-tree summary small{display:block}.card-library-tree summary strong{color:#070a0b;font:550 16px/1.3 system-ui,sans-serif}.card-library-tree summary small{margin-top:2px;color:#303b40;font:500 16px/1.25 ui-monospace,monospace;letter-spacing:.04em}.card-library-tree summary output{min-width:22px;color:#26363d;padding:0 2px;text-align:center;font:550 16px/1.2 ui-monospace,monospace}.card-library-subject>summary{min-height:42px;border-bottom:1px solid #9eacb2;background:#dfe8ec;padding:7px 14px}.card-library-subject>summary:hover,.card-library-subject>summary:focus-visible{background:#d5e1e5}.card-library-subject>summary strong{color:#000;font:600 16px/1.3 system-ui,sans-serif}.card-library-subject>summary small{color:#28353a;font:500 16px/1.25 ui-monospace,monospace}.card-library-level-list{margin-left:18px;border-left:1px solid #8e9da4}.card-library-level>summary{min-height:38px;border-bottom:1px solid #cbd4d8;padding-left:8px}.card-library-level>summary strong{color:#000;font:550 16px/1.3 system-ui,sans-serif}.card-library-series-list{margin-left:18px;border-left:1px solid #a5b1b6;padding:2px 0 6px}.card-library-series>summary{min-height:34px;padding-left:8px}.card-library-series>summary strong{color:#000;font:550 16px/1.3 system-ui,sans-serif}.card-library-series>summary small{color:#26343a;font:500 16px/1.25 ui-monospace,monospace}.card-library-cards,.card-library-tasks{list-style:none;margin-top:0;margin-bottom:2px;padding:0}.card-library-cards{margin-left:18px;border-left:1px solid #bac3c7}.card-library-card-entry{margin:0}.card-library-card{display:grid;grid-template-columns:19px minmax(0,1fr) auto;align-items:start;gap:5px;min-height:38px;box-sizing:border-box;border:0;border-left:3px solid transparent;color:#000;padding:5px 8px 5px 3px;text-decoration:none}.card-library-node{color:#536168;font:16px/1.35 ui-monospace,monospace}.card-library-card-copy,.card-library-card-copy strong,.card-library-card-copy>span{display:block;min-width:0}.card-library-card-copy strong{color:#000;font:550 16px/1.3 ui-monospace,monospace}.card-library-card-copy>span{margin-top:2px;color:#0b0d0e;font:500 16px/1.35 system-ui,sans-serif;white-space:normal}.card-library-card-meta{display:flex;align-items:flex-end;flex-direction:column;gap:2px}.card-library-card-meta small{color:#26343a;font:500 16px/1.25 ui-monospace,monospace}.card-library-card.is-available{cursor:pointer}.card-library-card.is-available:hover,.card-library-card.is-available:focus-visible{background:#eaf5f8;outline:none}.card-library-card.is-current{border-left-color:#16769b;background:#dff1f7}.card-library-card.is-current:hover,.card-library-card.is-current:focus-visible{background:#cfeaf3;outline:1px solid #5ba9c4;outline-offset:-1px}.card-library-card.is-unavailable{color:#000}.card-library-card.is-unavailable .card-library-card-copy strong,.card-library-card.is-unavailable .card-library-card-meta small{color:#1d292e}.card-library-card.is-unavailable .card-library-card-copy>span{color:#0b0d0e}.card-library-tasks{margin-left:36px;border-left:1px solid #c3cacc}.card-library-tasks li>a,.card-library-tasks li>span{display:grid;grid-template-columns:19px auto minmax(0,1fr);gap:5px;align-items:start;color:#000;padding:4px 8px 5px 3px;text-decoration:none}.card-library-tasks li>a:hover,.card-library-tasks li>a:focus-visible{background:#eaf5f8;outline:none}.card-library-tasks strong{color:#000;font:550 16px/1.35 ui-monospace,monospace}.card-library-tasks li>a>span:last-child,.card-library-tasks li>span>span:last-child{color:#111;font:500 16px/1.35 system-ui,sans-serif}.card-library-footer{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid #bdc9ce;background:#edf1f3;color:#5a6a72;font:500 16px/1.3 system-ui,sans-serif}.card-library-footer span{display:inline-flex;align-items:center;gap:4px}.card-library-footer i{width:7px;height:7px;border-radius:50%;background:#929da2}.card-library-footer i.is-online{background:#26815b}.card-library-footer kbd{margin-left:auto;border:1px solid #a2afb5;border-radius:2px;background:#fff;padding:2px 5px;font:600 16px/1 ui-monospace,monospace}.card-library-treegrid{min-height:0;flex:1;overflow:auto;margin:8px;border:1px solid rgb(31 35 40 / 18%);border-radius:6px;background:#fff;scrollbar-color:#93a2a8 #edf1f2;scrollbar-width:thin}.card-library-treegrid-row{display:grid;min-width:760px;min-height:38px;box-sizing:border-box;grid-template-columns:minmax(500px,1fr) 110px 120px;align-items:stretch;border-bottom:1px solid rgb(31 35 40 / 9%);color:#273941;font:500 16px/1.25 ui-monospace,monospace}.card-library-treegrid-row>[role=gridcell],.card-library-treegrid-row>[role=columnheader]{display:flex;min-width:0;align-items:center;overflow:hidden;padding:7px 9px;text-overflow:ellipsis;white-space:nowrap}.card-library-treegrid-row>[role=gridcell]+[role=gridcell],.card-library-treegrid-row>[role=columnheader]+[role=columnheader]{border-left:1px solid rgb(31 35 40 / 9%)}.card-library-treegrid-head{position:sticky;z-index:3;top:0;min-height:34px;border-bottom-color:#1f232833;background:#eef1f2;color:#3e525b;font-weight:700;letter-spacing:.045em}.card-library-treegrid-row:not(.card-library-treegrid-head):hover{background:#1f23280a}.card-library-treegrid-row.is-subject{background:#dfe8e5}.card-library-treegrid-row.is-level{background:#f5f8f8}.card-library-treegrid-row.is-series{background:#f9fbfb}.card-library-treegrid-row.is-card{min-height:42px;background:#fff}.card-library-treegrid-row.is-task{background:#fbfcfc}.card-library-treegrid-row.is-current{box-shadow:inset 3px 0 #1680a5;background:#e1f1f6}.card-library-tree-title{gap:6px;padding-left:calc(8px + (var(--card-library-depth, 0) * 21px))!important;font-family:system-ui,sans-serif}.card-library-tree-expander{display:inline-grid;width:24px;height:24px;flex:none;place-items:center;border:0;background:transparent;color:#405961;padding:0;font:18px/1 ui-monospace,monospace;cursor:pointer}.card-library-tree-expander:hover,.card-library-tree-expander:focus-visible{background:#165d6b1a;color:#165d6b;outline:1px solid rgb(22 93 107 / 28%)}.card-library-tree-expander.is-empty{cursor:default}.card-library-tree-link,.card-library-tree-label{display:flex;min-width:0;align-items:baseline;gap:7px;overflow:hidden;color:#10181c;text-decoration:none;white-space:nowrap}.card-library-tree-link:hover,.card-library-tree-link:focus-visible{color:#075d7c;outline:none;text-decoration:underline;text-underline-offset:2px}.card-library-tree-link strong,.card-library-tree-label strong{flex:none;color:inherit;font:700 16px/1.25 ui-monospace,monospace}.card-library-tree-link>span,.card-library-tree-label>span{min-width:0;overflow:hidden;color:inherit;text-overflow:ellipsis;white-space:nowrap;font:500 16px/1.25 system-ui,sans-serif}.card-library-treegrid-row.is-subject .card-library-tree-label strong,.card-library-treegrid-row.is-level .card-library-tree-label strong,.card-library-treegrid-row.is-series .card-library-tree-label strong{font-family:system-ui,sans-serif;font-weight:650}.card-library-tree-state{display:inline-flex;min-width:76px;min-height:24px;box-sizing:border-box;align-items:center;justify-content:center;border:1px solid transparent;border-radius:5px;color:#33474f;padding:2px 7px;font:650 14px/1 ui-monospace,monospace;white-space:nowrap}.card-library-tree-state[data-state=current]{border-color:#3184a0;background:#e9f5f8;color:#075d7c}.card-library-tree-state[data-state=online]{border-color:#4b9a7a;background:#edf8f2;color:#176144}.card-library-tree-state[data-state=plan]{border-color:#c59a49;background:#fff7e5;color:#775313}.card-library-treegrid-row.is-unavailable .card-library-tree-label,.card-library-treegrid-row.is-unavailable .card-library-tree-label strong{color:#10181c}.side-toc,.side-progress{min-height:0;flex:1;overflow-y:auto;background:#fff;color:#11191d}.side-toc>header,.side-progress>header{padding:16px 18px 13px;border-bottom:1px solid #bdc9ce;background:#f0f4f5}.side-toc>header small,.side-progress>header small{color:#53666f;font:750 9px/1 ui-monospace,monospace;letter-spacing:.08em}.side-toc>header h2,.side-progress>header h2{margin:4px 0 0;color:#10181c;font:750 21px/1.15 system-ui,sans-serif}.side-toc ol{margin:0;padding:7px 0 20px;list-style:none}.side-toc li{border-bottom:1px solid #e2e7e9}.side-toc a{display:grid;grid-template-columns:34px minmax(0,1fr);gap:9px;align-items:baseline;padding:10px 16px;color:#11191d;text-decoration:none}.side-toc a:hover,.side-toc a:focus-visible{background:#eaf5f8;outline:none}.side-toc a span{color:#267493;font:800 10px/1 ui-monospace,monospace}.side-toc a strong{font:650 13px/1.3 system-ui,sans-serif}.side-progress-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:16px;border:1px solid #b6c2c7;background:#f4f7f8;padding:14px;font:650 13px/1.3 system-ui,sans-serif}.side-progress-summary strong{color:#1d617b;font:850 20px/1 ui-monospace,monospace}.side-progress-links{display:grid;gap:8px;padding:0 16px 18px}.side-progress-links a{border:1px solid #87979e;border-radius:3px;background:#fff;color:#174f67;padding:10px 12px;text-decoration:none;font:700 12px/1.2 system-ui,sans-serif}.side-progress-links a:hover,.side-progress-links a:focus-visible{border-color:#167ca4;background:#edf7fa;outline:none}.side-progress-error{margin:0 16px 14px;border-left:3px solid #a52d2d;background:#fff1f1;color:#7d1f1f;padding:8px 10px;font:12px/1.35 system-ui,sans-serif}.classroom-panel{display:flex;min-height:0;flex:1;flex-direction:column;overflow:hidden;background:#f7f9fa;color:#11191d}.classroom-treegrid{min-height:0;flex:1;overflow:auto;margin:8px;border:1px solid rgb(31 35 40 / 18%);border-radius:6px;background:#fff;scrollbar-color:#93a2a8 #edf1f2;scrollbar-width:thin}.classroom-treegrid-row{display:grid;min-width:920px;box-sizing:border-box;grid-template-columns:minmax(410px,1fr) 100px 150px 150px 110px;align-items:center;border-bottom:1px solid rgb(31 35 40 / 8%);color:#273941;font:500 16px/1.25 ui-monospace,monospace}.classroom-treegrid-row>[role=gridcell],.classroom-treegrid-row>[role=columnheader]{min-width:0;overflow:hidden;padding:8px;text-overflow:ellipsis;white-space:nowrap}.classroom-treegrid-row>[role=gridcell]+[role=gridcell],.classroom-treegrid-row>[role=columnheader]+[role=columnheader]{border-left:1px solid rgb(31 35 40 / 8%)}.classroom-treegrid-head{position:sticky;z-index:2;top:0;border-bottom-color:#1f23282e;background:#eef1f2;color:#3e525b;font-weight:650;letter-spacing:.04em}.classroom-node-row:hover{background:#1f23280a}.classroom-node-row.is-class{background:#dfe8e5}.classroom-node-row.is-student{background:#f8faf9}.classroom-node-row.is-task{background:#edf3f5}.classroom-node-row.is-block,.classroom-node-row.is-exercises{background:#f5f7f8}.classroom-node-row.is-phase{background:#fafbfb}.classroom-node-title{display:flex;align-items:center;gap:6px;padding-left:calc(8px + (var(--classroom-depth, 0) * 20px))!important;font-family:system-ui,sans-serif}.classroom-node-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:500}.classroom-node-row.is-class .classroom-node-title strong,.classroom-node-row.is-student .classroom-node-title strong,.classroom-node-row.is-task .classroom-node-title strong{font-weight:650}.classroom-expander{display:inline-grid;width:24px;height:24px;flex:none;place-items:center;border:0;background:transparent;color:#405961;padding:0;font:18px/1 ui-monospace,monospace;cursor:pointer}.classroom-expander:hover,.classroom-expander:focus-visible{background:#165d6b1a;color:#165d6b;outline:1px solid rgb(22 93 107 / 28%)}.classroom-expander.is-empty{cursor:default}.classroom-status,.classroom-sync,.classroom-visit,.classroom-commit{display:inline-flex;min-width:92px;box-sizing:border-box;align-items:center;justify-content:center;border:1px solid;border-radius:5px;padding:4px 6px;font:550 16px/1 ui-monospace,monospace;letter-spacing:.015em}.classroom-status[data-status=online]{border-color:#6b9a87;background:#e7f4ee;color:#155e43}.classroom-status[data-status=away]{border-color:#baa06a;background:#fff5d9;color:#765510}.classroom-status[data-status=offline]{border-color:#a5afb3;background:#f0f2f3;color:#596970}.classroom-status[data-status=error]{border-color:#bd7b7b;background:#fff0f0;color:#8c2929}.classroom-sync[data-sync=follow]{border-color:#6c98aa;background:#e8f3f7;color:#155c77}.classroom-sync[data-sync=paused]{border-color:#baa06a;background:#fff6df;color:#765510}.classroom-sync[data-sync=local]{border-color:#9a86ae;background:#f4eef9;color:#65427c}.classroom-visit[data-visit=present],.classroom-commit[data-commit=committed]{border-color:#6b9a87;background:#e7f4ee;color:#155e43}.classroom-visit[data-visit=missed],.classroom-commit[data-commit=missing]{border-color:#bd7b7b;background:#fff0f0;color:#8c2929}.classroom-visit[data-visit=pending],.classroom-commit[data-commit=working]{border-color:#baa06a;background:#fff6df;color:#765510}.classroom-legend{display:flex;flex:none;flex-wrap:wrap;gap:7px 12px;border-top:1px solid #aebbc1;background:#edf1f2;padding:9px 11px;color:#485c65;font:500 16px/1.35 system-ui,sans-serif}.classroom-legend span{display:inline-flex;align-items:center;gap:4px}.classroom-legend i{width:12px;height:12px;border:1px solid #73858c;border-radius:50%;background:#aeb7bb}.classroom-legend i[data-status=online]{border-color:#3e7c63;background:#45a27b}.classroom-legend i[data-status=away]{border-color:#a0782d;background:#dcae51}.classroom-legend i[data-status=offline]{border-color:#859399;background:#b6c0c4}.classroom-legend b{color:#65427c;font:600 16px/1 ui-monospace,monospace}.viewer-chrome.is-nvim-fit{display:flex;width:100%;height:100vh;height:100dvh;max-height:100dvh;flex-direction:column;overflow:hidden;background:#11171a}.viewer-chrome.is-nvim-fit .topbar,.viewer-chrome.is-nvim-fit .viewpoint-bar,.viewer-chrome.is-nvim-fit .allocator-panel{flex:none}.viewer-chrome.is-nvim-fit .nvim-panel{display:flex;min-height:0;flex:1;flex-direction:column}.viewer-chrome.is-nvim-fit .nvim-screen-scroll{min-height:0;height:auto!important;flex:1}.viewer-chrome.is-nvim-fit .nvim-resize-handle{display:none}.viewer-chrome.is-nvim-fit .nvim-screen-stage{width:100%;height:100%;margin:0;zoom:1}.viewer-chrome.is-nvim-fit .nvim-screen-content{right:1mm;overflow:hidden;scrollbar-width:none}.viewer-chrome.is-nvim-fit .nvim-screen-grid{display:flex;width:100%;min-height:0;height:100%;align-items:center;justify-content:center}.viewer-chrome.is-nvim-fit .nvim-screen{width:auto!important;height:auto!important;max-width:100%;max-height:100%}.viewer-chrome.is-nvim-fit .nvim-screen-content::-webkit-scrollbar{display:none}.topbar-nvim-section{display:flex;align-items:center;min-width:0;gap:6px}.nvim-toolbar-boundary{flex:none;color:#6f7d83;font:700 14px/1 ui-monospace,monospace}.nvim-toolbar-context{flex:none;width:5ch;color:#263238;font:800 12px/1 ui-monospace,monospace;letter-spacing:.08em;text-align:center}.nvim-toolbar-actions{display:flex;align-items:center;gap:3px}.nvim-toolbar-button{display:inline-flex;align-items:center}.nvim-toolbar-key{flex:0 0 2ch;color:#267697;font:inherit;text-align:center}.nvim-toolbar-label{flex:0 0 5ch;max-width:5ch;overflow:hidden;text-align:left;white-space:nowrap}.topbar-nvim-meta{display:flex;align-items:baseline;min-width:0;max-width:min(44vw,720px);gap:6px}.topbar-nvim-meta strong,.topbar-nvim-meta small{overflow:auto;text-overflow:ellipsis;white-space:nowrap}.topbar-nvim-meta strong{color:#263238;font:700 12px/1.25 system-ui,sans-serif}.topbar-nvim-meta small{color:#66747a;font:500 10px/1.25 system-ui,sans-serif}.viewer-nvim-toggle{border:1px solid #68747a;border-radius:3px;background:#fff;color:#263238;padding:2px 8px;font:650 16px/1.3 system-ui,sans-serif;cursor:pointer}.viewer-nvim-toggle[aria-pressed=true]{border-color:#267697;background:#eaf6fb;color:#174d64}.allocator-panel{width:100%;box-sizing:border-box;border-top:1px solid #40515a;border-bottom:1px solid #40515a;background:#f7f9f5;color:#182127;box-shadow:0 4px 12px #0002;font:11px/1.25 system-ui,sans-serif}.allocator-panel>header{display:grid;grid-template-columns:125px minmax(260px,auto) 1fr;gap:8px;align-items:baseline;min-height:22px;padding:3px 8px;border-bottom:1px solid #b7c1c4;background:#e8eef0}.allocator-panel>header>span{color:#166987;font:800 9px/1.2 ui-monospace,monospace;letter-spacing:.06em}.allocator-panel>header>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:750 11px/1.2 ui-monospace,monospace}.allocator-panel>header>small{overflow:hidden;color:#536168;text-overflow:ellipsis;white-space:nowrap}.allocator-panel-body{display:grid;grid-template-columns:230px minmax(420px,1fr) minmax(310px,.8fr);gap:9px;align-items:stretch;padding:5px 8px 7px}.allocator-metrics{display:grid;grid-template-columns:1fr 1fr;gap:3px 8px;margin:0}.allocator-metrics>div{min-width:0;border-left:2px solid #8ea2ab;padding-left:5px}.allocator-metrics dt{color:#627077;font:750 7px/1.2 ui-monospace,monospace;letter-spacing:.05em}.allocator-metrics dd{margin:1px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:700 10px/1.2 ui-monospace,monospace}.allocator-arena-view{min-width:0}.allocator-arena-view.is-inactive{opacity:.42}.allocator-arena-labels{display:flex;justify-content:space-between;gap:8px;margin-bottom:3px;color:#536168;font:700 8px/1.2 ui-monospace,monospace}.allocator-arena-labels strong{color:#075f80}.allocator-pinned-arena{position:relative;display:grid;grid-template-columns:repeat(var(--allocator-size),minmax(2px,1fr));height:32px;border:1px solid #28343a;background:#fff}.allocator-pinned-arena i{min-width:0;border-right:1px solid #e1e5e6;background:#fbfcfc}.allocator-pinned-arena i:nth-child(8n){border-right-color:#87969d}.allocator-pinned-arena i.is-allocated{border-right-color:#b2d8e6;background:#43a8ce}.allocator-cursor{position:absolute;z-index:2;top:-4px;bottom:-4px;width:2px;background:#d02d25;transform:translate(-1px);box-shadow:0 0 0 1px #fff9}.allocator-cursor:before{content:"allocp";position:absolute;top:1px;left:4px;color:#8d1d17;font:800 7px/1 ui-monospace,monospace}.allocator-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 7px;min-width:0}.allocator-facts>div{display:flex;min-width:0;justify-content:space-between;gap:5px;border-bottom:1px dotted #b4bec2}.allocator-facts span{overflow:hidden;color:#46565e;text-overflow:ellipsis;white-space:nowrap}.allocator-facts code{overflow:hidden;color:#142e39;text-overflow:ellipsis;white-space:nowrap;font:700 9px/1.3 ui-monospace,monospace}.allocator-facts p{grid-column:1 / -1;margin:0;color:#647278}.nvim-panel{width:100%;box-sizing:border-box;border-bottom:1px solid #52616a;background:var(--desk, #eee);color:#e7eef1;box-shadow:0 5px 16px #0004;font:12px/1.3 system-ui,sans-serif}.nvim-status{flex:none;border:1px solid #66757c;border-radius:999px;padding:1px 6px;color:#c9d3d8;font:750 9px/1.35 ui-monospace,monospace;letter-spacing:.04em}.nvim-status--connected,.nvim-status--ready{border-color:#31a86d;background:#173b2a;color:#8aefb7}.nvim-status--connecting,.nvim-status--replaying,.nvim-status--verifying{border-color:#c38f2a;background:#3e321b;color:#ffd47d}.nvim-status--failed,.nvim-status--offline,.nvim-status--unselected{border-color:#a34b4b;background:#3b2020;color:#faa}.nvim-control-indicator{flex:none;border:1px solid #60747e;border-radius:3px;background:#222e34;color:#b9c6cc;padding:3px 8px;font:700 10px/1.2 ui-monospace,monospace;letter-spacing:.04em;white-space:nowrap;cursor:pointer}.nvim-control-indicator.is-active{border-color:#3cb3e2;background:#17465a;color:#d9f5ff}.nvim-control-indicator.is-engaged{box-shadow:inset 0 0 0 1px #8ee4ff}.nvim-work-indicator{flex:none;border:1px solid #7a878d;border-radius:3px;background:#f4f6f7;color:#56646a;padding:3px 8px;font:700 10px/1.2 ui-monospace,monospace;letter-spacing:.03em;white-space:nowrap;cursor:pointer}.nvim-work-indicator.is-active{border-color:#cf3d31;background:#fff0ee;color:#9f241b}.nvim-work-indicator.is-engaged{box-shadow:inset 0 0 0 1px #cf3d31}.nvim-work-indicator:disabled{border-color:#a8b0b4;background:#e6e9ea;color:#7c878c;cursor:not-allowed;opacity:.8}.nvim-height-toggle{flex:none;border:1px solid #75848b;border-radius:3px;background:#f4f6f7;color:#425159;padding:3px 8px;font:700 10px/1.2 ui-monospace,monospace;letter-spacing:.03em;white-space:nowrap;cursor:pointer}.nvim-height-toggle.is-active{border-color:#267697;background:#eaf6fb;color:#174d64}.topbar-nvim-section .nvim-toolbar-button{flex:0 0 9.5ch;width:9.5ch;min-width:9.5ch;max-width:9.5ch;height:24px;box-sizing:border-box;justify-content:flex-start;gap:.55ch;padding:2px .55ch;font:750 12px/1 ui-monospace,monospace;letter-spacing:0}.nvim-shortcut-strip{flex:none;color:#536168;font:650 10px/1.2 ui-monospace,monospace;white-space:nowrap}.nvim-shortcut-strip kbd{color:#263238;font:inherit}.nvim-screen-scroll{position:relative;width:100%;box-sizing:border-box;height:var(--nvim-panel-height, 75vh);max-height:none;min-height:240px;overflow:auto;overscroll-behavior:contain;background:var(--desk, #eee);outline:none;scrollbar-color:#58666d #171d20}.nvim-screen-stage{position:relative;width:210mm;margin:0 auto;background:#fff;zoom:var(--viewer-canvas-scale)}.nvim-screen-surface{position:absolute;inset:0 4mm;box-sizing:border-box;padding:1mm;background:#fff}.nvim-screen-frame{position:relative;height:100%;box-sizing:border-box;border:1px solid #267697;background:#101315;box-shadow:0 0 0 3px #000}.nvim-screen-scroll[data-sync=on] .nvim-screen-frame{border-color:#35b9ef}.nvim-screen-scroll[data-control=true] .nvim-screen-frame{box-shadow:0 0 0 3px #cf3d31}.nvim-screen-scroll[data-control=true]{cursor:text}.nvim-screen-content{position:absolute;inset:1mm -5mm 1mm 1mm;overflow-x:hidden;overflow-y:scroll;overscroll-behavior:contain;background:transparent;scrollbar-width:thin;scrollbar-color:#829097 #fff}.nvim-screen-grid{width:calc(100% - 6mm);min-height:100%;background:#101315}.nvim-screen-content::-webkit-scrollbar{width:.8mm}.nvim-screen-content::-webkit-scrollbar-track{background:#fff}.nvim-screen-content::-webkit-scrollbar-thumb{border:.12mm solid #fff;border-radius:99px;background:#829097}.nvim-screen-content::-webkit-scrollbar-thumb:hover{background:#aeb9be}.nvim-screen{display:block;max-width:none;margin:0;outline:none;image-rendering:auto}.nvim-screen:focus{box-shadow:none}.nvim-screen-empty{position:absolute;inset:0;display:grid;place-content:center;gap:5px;padding:16px;color:#9cabb2;text-align:center}.nvim-screen-empty strong{color:#e0e8eb;font:750 11px/1.3 ui-monospace,monospace}.nvim-resize-handle{position:relative;width:100%;height:12px;border-top:1px solid #46565e;background:#182126;cursor:ns-resize;touch-action:none}.nvim-resize-handle:after{content:"";position:absolute;top:4px;left:50%;width:min(160px,22vw);height:3px;border-radius:999px;background:#6c7e87;transform:translate(-50%)}.nvim-resize-handle:hover,.nvim-resize-handle:focus-visible{background:#23323a;outline:none}.nvim-resize-handle:hover:after,.nvim-resize-handle:focus-visible:after{background:#35b9ef}.shortcut-help-backdrop{position:fixed;z-index:200;inset:0;display:grid;place-items:center;padding:20px;background:#10171dcc}.shortcut-help{width:min(680px,calc(100vw - 40px));max-height:calc(100vh - 40px);overflow:auto;border:1px solid #71818a;border-radius:6px;background:#f8fafb;color:#172127;box-shadow:0 18px 60px #0008;font:14px/1.4 system-ui,sans-serif}.shortcut-help>header{display:flex;align-items:start;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid #c8d1d5;background:#e8eef1}.shortcut-help header small{color:#52646d;font:750 10px/1.2 ui-monospace,monospace;letter-spacing:.08em}.shortcut-help h2{margin:4px 0 0;font-size:17px}.shortcut-help header button{width:32px;height:32px;border:1px solid #71818a;border-radius:3px;background:#fff;font:22px/1 system-ui,sans-serif;cursor:pointer}.shortcut-help dl{margin:0;padding:10px 18px}.shortcut-help dl>div{display:grid;grid-template-columns:minmax(180px,.8fr) 1.5fr;gap:14px;align-items:center;padding:8px 0;border-bottom:1px solid #dde3e6}.shortcut-help dt,.shortcut-help dd{margin:0}.shortcut-help kbd{display:inline-block;border:1px solid #839198;border-bottom-width:2px;border-radius:3px;background:#fff;padding:3px 7px;font:700 12px/1.2 ui-monospace,monospace}.shortcut-help>p{margin:0;padding:4px 18px 16px;color:#526068}.memory-react{border:1px solid #555;background:#fff;font:14px/1.35 system-ui,sans-serif;padding:10px;color:#1b1b1b}.memory-react>header{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #bbb;padding-bottom:7px}.memory-react>header small{display:block;margin-bottom:2px;color:#555;font:700 10px/1.2 ui-monospace,monospace;letter-spacing:.08em}.memory-react h3{font-size:15px;margin:0}.memory-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.memory-actions button{border:1px solid #777;background:#fff;padding:4px 8px;cursor:pointer}.memory-actions button[aria-pressed=true]{background:#dff3fb;border-color:#237da1;font-weight:700}.memory-lanes{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:6px;margin:8px 0}.memory-lane{min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:3px;border:1px solid #999;background:#fafafa;padding:7px;text-align:left}.memory-lane.compile{background:#fff8dc}.memory-lane.bss{background:#edf7fb}.memory-lane.stack{background:#f3f8ef}.memory-lane.registers{background:#f4f4f4}.memory-lane.text{background:#f7f0fa}.memory-lane>b{font-size:11px;letter-spacing:.04em}.memory-lane button{border:1px solid transparent;background:transparent;padding:3px;text-align:left;cursor:pointer}.memory-lane button:hover,.memory-lane button.active{border-color:#238bb7;background:#fff}.memory-lane code{font-size:10px;white-space:normal}.arena-wrap{margin:12px 0 6px}.arena-label{display:flex;justify-content:space-between;margin-bottom:4px}.arena{--allocp: 0;--arena-size: 64;position:relative;display:grid;grid-template-columns:repeat(var(--arena-size),1fr);height:40px;border:1px solid #222;margin-bottom:28px}.arena i{border-right:1px solid #ddd}.arena .allocp{position:absolute;left:calc(var(--allocp) / var(--arena-size) * 100%);top:43px;transform:translate(-50%);color:#087da8;font:700 11px/1.2 ui-monospace,monospace;white-space:nowrap}.memory-stage{border-top:1px solid #ddd;padding-top:7px;margin:0}.memory-inspector{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin-top:7px;padding:7px;border-left:3px solid #238bb7;background:#f5fbfd}.memory-inspector strong{grid-row:1/3}.memory-inspector code{font-size:11px}.memory-inspector span{font-size:12px}.asset-static-fallback{display:none}.uml-react{border:1px solid #555;background:#fff;font:13px/1.35 system-ui,sans-serif;color:#1b1b1b}.uml-react>header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border-bottom:1px solid #bbb;background:#fafafa}.uml-react>header small{display:block;color:#555;font:700 10px/1.2 ui-monospace,monospace;letter-spacing:.06em}.uml-react h3{margin:2px 0 0;font-size:15px}.uml-actions{display:flex;gap:3px;flex-wrap:wrap;justify-content:flex-end}.uml-actions button{border:1px solid #aaa;border-radius:2px;background:#fcfcfc;color:#444;padding:2px 6px;font:600 10px/1.25 ui-monospace,monospace;cursor:pointer}.uml-actions button:hover{border-color:#64879a;background:#f5fafc}.uml-actions button[data-completed=true]{border-color:#62a47f;background:#edf8f1;color:#14613a}.uml-actions button[aria-pressed=true]{border-color:#287495;background:#edf7fb;color:#174d64;box-shadow:inset 0 0 0 1px #b9dce9}.uml-canvas{display:block;overflow-x:hidden;overflow-y:visible;box-sizing:border-box;padding:8px 10px;text-align:center}.uml-svg-host{width:max-content;min-width:100%}.uml-canvas img,.uml-svg-host svg{display:block;width:auto!important;max-width:none!important;height:auto!important;max-height:none;margin-inline:auto;object-fit:contain}.uml-svg-host{cursor:pointer}.uml-svg-host.is-tiled{position:relative;width:var(--uml-tile-page-width);min-width:var(--uml-tile-page-width);height:var(--uml-tile-page-height);overflow:hidden;cursor:default}.uml-svg-host.is-tiled>svg{position:absolute;top:var(--uml-tile-top);left:var(--uml-tile-left);margin:0}.uml-static-crop{position:absolute;top:var(--uml-tile-top);left:var(--uml-tile-left);overflow:hidden}.uml-static-crop>img{display:block;max-width:none!important;max-height:none!important;margin:0!important;object-fit:fill!important;transform-origin:0 0}.uml-tile-part{display:inline-block;margin-left:.65em;color:#607985;font:650 9px/1.2 ui-monospace,monospace;letter-spacing:.03em;white-space:nowrap}.uml-phase-actions>span{display:inline-flex;align-items:center;border:1px solid #9eb2bd;border-radius:2px;background:#f1f5f7;color:#3d5967;padding:2px 6px;font:700 10px/1.25 ui-monospace,monospace}.uml-stage-region{cursor:pointer;transition:fill .14s ease,stroke .14s ease,stroke-width .14s ease}.uml-stage-region-completed.uml-stage-region-bg{fill:#e7f6ed!important;fill-opacity:1!important;stroke:#258154!important;stroke-width:3px!important}.uml-stage-region-completed.uml-stage-region-outline{stroke:#258154!important;stroke-width:3px!important}.uml-stage-region-active.uml-stage-region-bg{fill:#e7f6fc!important;fill-opacity:1!important;stroke:#187ea7!important;stroke-width:3px!important}.uml-stage-region-active.uml-stage-region-outline{stroke:#187ea7!important;stroke-width:3px!important}.uml-stage-region-active.uml-stage-region-completed.uml-stage-region-bg{fill:#e7f6ed!important}.uml-stage-region:focus{outline:none;stroke:#005f87!important;stroke-width:4px!important}.uml-inline-warning{display:block;padding-top:5px;color:#8b2d20;font-size:11px}.uml-stage{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:0 8px 8px;padding:8px;border-left:3px solid #315f78;background:#eef7fb}.uml-stage strong{grid-row:1/3}.uml-stage code{grid-column:2;font-size:11px}.uml-approval{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 8px 8px;padding-top:6px;border-top:1px solid #d2d2d2;color:#555;font-size:11px}.uml-approval button{flex:0 0 auto;border:1px solid #477a5d;border-radius:2px;background:#edf8f1;color:#174e30;padding:3px 7px;font:600 10px/1.25 system-ui,sans-serif;cursor:pointer}.uml-approval button:disabled{border-color:#bbb;background:#f3f3f3;color:#888;cursor:not-allowed}.uml-react>.uml-snapshot-header{display:block;padding:5px 8px 4px}.uml-header-first-line{display:flex;align-items:center;justify-content:space-between;gap:10px}.uml-header-first-line h3{flex:1 1 auto;min-width:0;margin:0;color:#20282c;text-align:left;font-size:12px;line-height:1.25}.uml-header-first-line h3>span{color:#245f7a;font-family:ui-monospace,monospace;letter-spacing:.04em}.uml-header-description{max-width:620px;margin:2px 0 0;color:#555;text-align:left;font-size:8px}.uml-header-navigation{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-end;gap:6px}.uml-page-continuation{display:inline-flex;flex:0 0 auto;align-items:center;gap:2px;min-height:22px;border:1px solid #86a5b3;border-radius:3px;background:#edf7fa;padding:1px 5px;color:#126b8c;font:850 15px/1 ui-monospace,monospace;animation:uml-continuation-pulse 1.15s ease-in-out infinite alternate}.uml-page-continuation i{display:inline-grid;min-width:14px;place-items:center;font-style:normal}@keyframes uml-continuation-pulse{0%{border-color:#9fb5be;background:#f6fafb;color:#4c7180;box-shadow:none}to{border-color:#167ca4;background:#dff2f8;color:#075c7c;box-shadow:0 0 0 2px #8dcde433}}@media(prefers-reduced-motion:reduce){.uml-page-continuation{animation:none}}.uml-phase-actions,.uml-step-actions{display:flex;align-items:center;flex-wrap:wrap;gap:3px}.uml-phase-actions{flex:0 0 auto;flex-wrap:nowrap;justify-content:flex-end;white-space:nowrap}.uml-phase-actions button,.uml-step-actions button,.uml-edit-toggle,.uml-snapshot-cursor button{border:1px solid #aaa;border-radius:2px;background:#fff;color:#444;cursor:pointer;font:600 9px/1.2 ui-monospace,monospace}.uml-edit-toggle{min-width:42px;padding:3px 7px;border:1px solid #8a9ca5;border-radius:2px;background:#f7f9fa;color:#334d59;cursor:pointer;font:750 9px/1.2 ui-monospace,monospace;letter-spacing:.04em}.uml-edit-toggle.is-active{border-color:#b56b16;background:#fff3df;color:#713c00;box-shadow:inset 0 0 0 1px #f0c78f}.uml-phase-actions button{padding:3px 7px}.uml-phase-actions button[aria-pressed=true]{border-color:#287495;background:#edf7fb;color:#174d64}.uml-step-actions{min-height:0;padding:0;border:0;background:transparent}.uml-step-actions>span{margin-right:4px;color:#555;font:700 9px/1.2 ui-monospace,monospace}.uml-step-actions button{min-width:25px;padding:2px 4px}.uml-step-actions button[data-completed=true]{border-color:#62a47f;background:#edf8f1;color:#14613a}.uml-step-actions button[aria-pressed=true]{border-color:#287495;background:#287495;color:#fff}.uml-step-actions button[data-mode=CODE]:after,.uml-step-actions button[data-mode=RUN]:after{margin-left:3px;font-size:7px;letter-spacing:.02em}.uml-step-actions button[data-mode=CODE]:after{content:"C"}.uml-step-actions button[data-mode=RUN]:after{content:"R"}.uml-snapshot-layout{background:#fff;border-bottom:1px solid #ddd}.uml-step-canvas{min-width:0}.uml-step-canvas .uml-svg-host svg{max-height:none}.uml-step-hit{cursor:pointer;fill:transparent}.uml-step-hit-active{fill:#3ea6ce!important;fill-opacity:.08!important}.uml-step-element{transition:fill .12s ease,stroke .12s ease,stroke-width .12s ease}line.uml-step-element-completed:not(.uml-step-element-active){stroke:#258154!important;stroke-width:1.8px!important}polygon.uml-step-element-completed:not(.uml-step-element-active){fill:#258154!important;stroke:#258154!important}text.uml-step-element-completed:not(.uml-step-element-active){fill:#1d7049!important}line.uml-step-element-active{stroke:#087ca8!important;stroke-width:2.6px!important}polygon.uml-step-element-active{fill:#087ca8!important;stroke:#087ca8!important}text.uml-step-element-active{fill:#075d7d!important;font-weight:700!important}.uml-step-hit:focus{outline:none;stroke:#bd554d;stroke-width:.8px;stroke-dasharray:3 3}.uml-class-svg-active>g>*:not(.uml-class-focus-region):not(.uml-class-step-hit):not(.uml-layout-hit):not(.uml-layout-resize){opacity:.62;transition:opacity .12s ease}.uml-class-svg-active .uml-step-element:not(.uml-step-element-active){opacity:.98!important}.uml-class-svg-active text.uml-step-element-tone-a:not(.uml-step-element-active){fill:#174f69!important}.uml-class-svg-active text.uml-step-element-tone-b:not(.uml-step-element-active){fill:#586581!important}.uml-class-svg-active rect.uml-step-element-tone-a:not(.uml-step-element-active){fill:#eaf5f8!important;stroke:#3f7890!important}.uml-class-svg-active rect.uml-step-element-tone-b:not(.uml-step-element-active){fill:#f2eef8!important;stroke:#7b86a1!important}.uml-class-svg-active path.uml-step-element-tone-a:not(.uml-step-element-active),.uml-class-svg-active line.uml-step-element-tone-a:not(.uml-step-element-active),.uml-class-svg-active polygon.uml-step-element-tone-a:not(.uml-step-element-active){stroke:#3f7890!important}.uml-class-svg-active path.uml-step-element-tone-b:not(.uml-step-element-active),.uml-class-svg-active line.uml-step-element-tone-b:not(.uml-step-element-active),.uml-class-svg-active polygon.uml-step-element-tone-b:not(.uml-step-element-active){stroke:#7b86a1!important}.uml-class-svg-active .uml-step-element-active{opacity:1!important}.uml-class-svg-active text.uml-step-element-active{fill:#b42318!important;font-weight:700!important}.uml-class-svg-active path.uml-step-element-active,.uml-class-svg-active line.uml-step-element-active,.uml-class-svg-active polygon.uml-step-element-active,.uml-class-svg-active rect.uml-step-element-active{stroke:#bd554d!important;stroke-width:1.35px!important}.uml-class-svg-active polygon.uml-step-element-active{fill:#bd554d!important}.uml-class-focus-region{display:none}.uml-step-canvas.is-layout-editing{position:relative;touch-action:none;background-color:#fbfcfd;background-image:linear-gradient(#7d98a20d 1px,transparent 1px),linear-gradient(90deg,#7d98a20d 1px,transparent 1px);background-size:12px 12px}.uml-layout-editing .uml-step-hit,.uml-layout-editing .uml-class-focus-region{pointer-events:none}.uml-layout-hit{fill:#4e9ec4;fill-opacity:.035;stroke:#247a9e;stroke-width:1.1px;stroke-dasharray:5 3;vector-effect:non-scaling-stroke;cursor:grab;pointer-events:all}.uml-layout-hit:hover{fill-opacity:.09;stroke-width:1.6px}.uml-layout-hit.is-selected{fill:#f7a928;fill-opacity:.08;stroke:#b66b00;stroke-width:1.8px;stroke-dasharray:none}.uml-layout-hit:active{cursor:grabbing}.uml-layout-resize{fill:#fff;stroke:#b66b00;stroke-width:1.5px;vector-effect:non-scaling-stroke;cursor:nwse-resize;pointer-events:all}.uml-layout-editor{display:grid;grid-template-columns:minmax(140px,.8fr) minmax(240px,1.8fr) minmax(260px,1.4fr);gap:7px 10px;align-items:end;padding:8px 10px 9px;border-top:2px solid #b97822;background:#f7f5f0;color:#26343a;text-align:left;font:10px/1.3 system-ui,sans-serif}.uml-layout-editor-title{grid-column:1/-1;display:flex;align-items:baseline;gap:9px}.uml-layout-editor-title strong{color:#713c00;font:800 11px/1.2 ui-monospace,monospace;text-transform:uppercase}.uml-layout-editor-title span{color:#65737a}.uml-layout-editor-title b{margin-left:auto;color:#9c2f1b;font-size:9px}.uml-layout-editor label{display:grid;gap:2px;color:#52636b;font:700 8px/1.2 ui-monospace,monospace;text-transform:uppercase}.uml-layout-editor input,.uml-layout-editor select,.uml-layout-editor textarea{box-sizing:border-box;width:100%;min-width:0;border:1px solid #9ca9ae;border-radius:2px;background:#fff;color:#172126;padding:4px 5px;font:10px/1.25 ui-monospace,monospace;text-transform:none}.uml-layout-editor textarea{resize:vertical;line-height:1.35}.uml-layout-number-grid,.uml-layout-style-grid{display:grid;gap:5px}.uml-layout-number-grid{grid-template-columns:repeat(4,minmax(48px,1fr))}.uml-layout-style-grid{grid-template-columns:repeat(5,minmax(54px,1fr))}.uml-layout-editor-text{align-self:stretch}.uml-layout-editor input[type=color]{min-height:27px;padding:2px}.uml-layout-editor-actions{grid-column:1/-1;display:flex;gap:5px}.uml-layout-editor-actions button{border:1px solid #87979f;border-radius:2px;background:#fff;color:#283940;padding:4px 8px;cursor:pointer;font:700 9px/1.2 ui-monospace,monospace}.uml-layout-editor-actions button.is-primary{border-color:#287495;background:#287495;color:#fff}.uml-layout-editor-actions button.is-danger{margin-left:auto;border-color:#a26156;color:#812b1c}.uml-layout-editor-actions button:disabled{opacity:.45;cursor:not-allowed}.uml-layout-editor output{grid-column:1/-1;min-height:1.2em;color:#52636b;font:9px/1.25 ui-monospace,monospace}@media(max-width:900px){.uml-layout-editor{grid-template-columns:1fr}.uml-layout-editor-title,.uml-layout-editor-actions,.uml-layout-editor output{grid-column:1}}@media print{.uml-edit-toggle,.uml-layout-editor,.uml-layout-hit,.uml-layout-resize{display:none!important}}.uml-snapshot-panel{display:grid;gap:8px;min-width:0;padding:8px;background:#fafafa;font-size:10px}.uml-snapshot-panel>header{display:flex;justify-content:space-between;gap:8px;align-items:center}.uml-snapshot-panel>header>div:first-child>span,.uml-snapshot-panel>header>div:first-child>strong{display:block}.uml-snapshot-panel>header>div:first-child>span{color:#5a5a5a;font:700 9px/1.2 ui-monospace,monospace}.uml-snapshot-panel>header>div:first-child>strong{font-size:12px}.uml-snapshot-panel>header>div:first-child>strong code{display:inline-block;min-width:24px;color:#075d7d}.uml-snapshot-cursor{display:flex;align-items:center;gap:4px}.uml-snapshot-cursor button{width:23px;height:23px;padding:0}.uml-snapshot-cursor button:disabled{opacity:.35;cursor:default}.uml-snapshot-cursor output{min-width:34px;text-align:center;font:700 9px/1 ui-monospace,monospace}.uml-snapshot-description{margin:0;color:#333}.uml-snapshot-panel section{min-width:0;border:1px solid #d0d0d0;background:#fff;padding:7px}.uml-snapshot-panel h4{margin:0 0 4px;color:#315f78;font:700 9px/1.2 ui-monospace,monospace;text-transform:uppercase}.uml-state-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;min-width:0}.uml-snapshot-registers dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;margin:0}.uml-snapshot-registers dl>div{display:grid;grid-template-columns:auto 1fr;gap:5px;min-width:0;padding:2px 4px;border-left:2px solid #bbb;background:#f6f6f6}.uml-snapshot-registers dl>div.primary{grid-column:1/-1;border-color:#287495;background:#edf7fb}.uml-snapshot-registers dt{color:#555;font-weight:700}.uml-snapshot-registers dd,.uml-snapshot-variables dd,.uml-snapshot-memory dd{min-width:0;margin:0;overflow-wrap:anywhere;text-align:right;font:600 9px/1.25 ui-monospace,monospace}.uml-snapshot-variables dl{display:grid;gap:3px;margin:0}.uml-snapshot-variables dl>div{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px;padding:3px 5px;border-left:2px solid #5f899b;background:#f5f8f9}.uml-snapshot-variables dt{font-weight:700}.uml-snapshot-variables dt small{display:block;color:#777;font:8px/1.2 ui-monospace,monospace}.uml-snapshot-variables [data-state=uninitialised],.uml-stack-lane article[data-state=uninitialised]{color:#777;background:#f5f5f5}.uml-snapshot-variables [data-state=uninitialised] dt:after,.uml-stack-lane article[data-state=uninitialised]>strong:after{content:" ?";color:#9a6a00}.uml-arena-snapshot>div{position:relative;height:10px;border:1px solid #666;background:repeating-linear-gradient(90deg,#fff 0 7px,#eee 7px 8px)}.uml-arena-snapshot>div span{display:block;height:100%;background:#b8ddeb}.uml-arena-snapshot>div i{position:absolute;top:-3px;bottom:-3px;width:2px;background:#075d7d;transform:translate(-1px)}.uml-arena-snapshot>p{display:grid;grid-template-columns:1fr auto 1fr;gap:4px;margin:3px 0;font-size:8px}.uml-arena-snapshot>p code:last-child{text-align:right}.uml-arena-bytes{display:block;margin-bottom:4px;overflow-wrap:anywhere;color:#666;font-size:8px}.uml-snapshot-memory dl{display:grid;gap:2px;margin:0}.uml-snapshot-memory dl>div{display:grid;grid-template-columns:1fr auto;gap:4px;padding-top:2px;border-top:1px solid #eee}.uml-snapshot-memory dt{font-weight:700}.uml-snapshot-memory dt small{display:block;color:#777;font:8px/1.2 ui-monospace,monospace}.uml-snapshot-stack>header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.uml-snapshot-stack>header>p{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px 9px;margin:0;color:#555;font-size:8px}.uml-stack-axis{display:flex;justify-content:space-between;gap:8px;margin:3px 89px 2px;color:#777;font:8px/1.2 ui-monospace,monospace}.uml-stack-lane{display:flex;align-items:stretch;min-width:0;overflow-x:auto;border:1px solid #66757c;background:#eef1f2}.uml-stack-boundary{display:grid;place-content:center;flex:0 1 82px;min-width:64px;padding:5px;background:#273941;color:#fff;text-align:center;font:700 8px/1.25 ui-monospace,monospace}.uml-stack-boundary small{color:#a9d9eb;font-size:8px;text-transform:uppercase}.uml-stack-gap{display:grid;place-content:center;flex:.7 1 70px;min-width:60px;min-height:52px;border-right:1px dashed #9da8ad;color:#78858b;text-align:center;font:8px/1.2 ui-monospace,monospace}.uml-stack-gap strong,.uml-stack-gap small{display:block}.uml-stack-gap strong{color:#52636b}.uml-stack-gap small{color:#78858b;font-size:8px}.uml-stack-lane article{display:grid;align-content:center;flex:1 1 92px;min-width:76px;padding:5px 7px;border-right:1px solid #9da8ad;background:#fff;text-align:center}.uml-stack-lane article[data-state=initialised]{border-top:3px solid #2c8060}.uml-stack-lane article[data-state=saved]{border-top:3px solid #6d7196;background:#f7f6fb}.uml-stack-lane article strong,.uml-stack-lane article code,.uml-stack-lane article small{display:block;overflow-wrap:anywhere}.uml-stack-lane article strong{font:700 9px/1.2 ui-monospace,monospace}.uml-stack-lane article code{margin:2px 0;color:#1f4555;font-size:8px}.uml-stack-lane article small{color:#777;font:8px/1.2 ui-monospace,monospace}.uml-snapshot-observation p{margin:0 0 3px}.uml-snapshot-observation small{display:block;overflow-wrap:anywhere;color:#666;font:8px/1.3 ui-monospace,monospace}.task-conclusion{margin:8px 0 0;padding:7px 9px;border:1px solid #315f78;background:#f3f9fc}.task-conclusion>strong{display:block;margin-bottom:3px;color:#315f78;font:700 10px/1.2 ui-monospace,monospace}.task-conclusion p{margin:0}.asset-source-link{display:inline-block;margin:5px 0;color:#315f78;font:600 11px/1.3 system-ui,sans-serif}.section-sheet--asset .section-heading{align-items:baseline;margin:0 0 1.5mm}.section-sheet--asset .section-heading .section-index{margin-right:4mm;color:#68757b;font-size:10px;font-weight:600}.section-sheet--asset .section-heading .section-title{color:#20282c;font:750 13px/1.2 system-ui,sans-serif}.section-sheet--asset .card-section>p{max-width:110ch;margin:0 0 2mm;color:#58656b;font:9px/1.3 system-ui,sans-serif}.section-sheet--asset .card-asset{margin-top:2mm}.lesson-progress-control{display:inline-flex;align-items:center;margin-right:7px;padding:2px 7px;border:1px solid #8c8c8c;border-radius:12px;background:#fff;cursor:pointer}.lesson-progress-control:disabled{cursor:wait;opacity:.6}.lesson-progress-control[data-status=approved]{background:#e7f6ed;border-color:#18794e}.lesson-progress-topbar{display:flex;flex:none;align-items:center;gap:5px;min-width:0;padding-left:7px;border-left:1px solid #a9b3b8;color:#33444c;font:650 10px/1.2 system-ui,sans-serif;white-space:nowrap}.lesson-progress-topbar strong{color:#52636b;font:800 9px/1 ui-monospace,monospace;letter-spacing:.05em}.lesson-progress-topbar output{min-width:3.8ch;border:1px solid #91a1a8;border-radius:999px;background:#fff;padding:2px 6px;color:#1e566e;text-align:center;font:800 9px/1 ui-monospace,monospace}.lesson-progress-topbar a{color:#245f7a;text-decoration:none}.lesson-progress-topbar a:hover,.lesson-progress-topbar a:focus-visible{text-decoration:underline}.lesson-progress-error{color:#9b1c1c;font-weight:900}.step-row{display:flex;align-items:center;margin:4px 0}.section-anchor{position:relative;top:-45px}.app-load-error{max-width:760px;margin:10vh auto;padding:24px;border:1px solid #9b1c1c;background:#fff;font-family:system-ui,sans-serif}.app-load-error pre{white-space:pre-wrap}@media(max-width:800px){.viewpoint-bar{grid-template-columns:repeat(4,minmax(0,1fr))}.viewpoint-bar button{min-height:28px}.card-library-toggle>span:last-child{display:none}.card-library-toggle{gap:4px;padding-inline:6px}.topbar-nvim-meta{display:none}.topbar-nvim-section .nvim-control-indicator{max-width:42vw;overflow:hidden;text-overflow:ellipsis}.nvim-shortcut-strip,.nvim-work-indicator{display:none}.allocator-panel>header{grid-template-columns:auto 1fr}.allocator-panel>header>small{display:none}.allocator-panel-body{grid-template-columns:1fr}.allocator-metrics,.allocator-facts{display:none}.memory-lanes{grid-template-columns:1fr 1fr}.memory-react>header,.uml-react>header{align-items:flex-start;flex-direction:column}.uml-header-first-line,.uml-header-navigation{width:100%;align-items:flex-start;flex-direction:column}.uml-header-navigation{gap:4px}.memory-actions{justify-content:flex-start}.uml-snapshot-layout{display:block}.uml-step-canvas{border:0}.uml-phase-actions{width:100%;justify-content:flex-end}.uml-state-grid{grid-template-columns:1fr}.uml-snapshot-stack>header{align-items:flex-start;flex-direction:column}.uml-snapshot-stack>header>p{justify-content:flex-start}.uml-stack-axis{margin-right:0;margin-left:0}}@media print{@page card-portrait{size:A4 portrait;margin:0}@page card-landscape{size:A4 landscape;margin:0}.sheet--portrait{page:card-portrait}.sheet--landscape{page:card-landscape}.paper{display:block;gap:0}.paper>.sheet,.paper>.sheet>.sheet-content,.paper>.sheet-spread>.sheet,.paper>.sheet-spread>.sheet>.sheet-content{height:auto;min-height:0;max-height:none;overflow:visible}.sheet-spread{display:contents!important}.viewer-chrome,.side-panel-dock,.memory-react{display:none!important}.asset-static-fallback{display:block!important;width:100%}.uml-actions,.uml-phase-actions,.uml-step-actions,.uml-snapshot-panel,.uml-stage,.uml-approval,.asset-source-link,.lesson-progress-topbar,.lesson-progress-control,.uml-page-continuation{display:none!important}} diff --git a/web/app.js b/web/app.js new file mode 100644 index 0000000..c1573ef --- /dev/null +++ b/web/app.js @@ -0,0 +1,61 @@ +var Pp=Object.create;var ks=Object.defineProperty;var Tp=Object.getOwnPropertyDescriptor;var Mp=Object.getOwnPropertyNames;var Rp=Object.getPrototypeOf,Op=Object.prototype.hasOwnProperty;var $t=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $p=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Mp(t))!Op.call(e,o)&&o!==n&&ks(e,o,{get:()=>t[o],enumerable:!(r=Tp(t,o))||r.enumerable});return e};var bo=(e,t,n)=>(n=e!=null?Pp(Rp(e)):{},$p(t||!e||!e.__esModule?ks(n,"default",{value:e,enumerable:!0}):n,e));var Rs=$t(W=>{"use strict";var xr=Symbol.for("react.element"),Ip=Symbol.for("react.portal"),Fp=Symbol.for("react.fragment"),Dp=Symbol.for("react.strict_mode"),jp=Symbol.for("react.profiler"),Up=Symbol.for("react.provider"),Vp=Symbol.for("react.context"),Bp=Symbol.for("react.forward_ref"),Hp=Symbol.for("react.suspense"),Kp=Symbol.for("react.memo"),Wp=Symbol.for("react.lazy"),Ss=Symbol.iterator;function Gp(e){return e===null||typeof e!="object"?null:(e=Ss&&e[Ss]||e["@@iterator"],typeof e=="function"?e:null)}var _s={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Cs=Object.assign,Ls={};function Vn(e,t,n){this.props=e,this.context=t,this.refs=Ls,this.updater=n||_s}Vn.prototype.isReactComponent={};Vn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Vn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function zs(){}zs.prototype=Vn.prototype;function Qi(e,t,n){this.props=e,this.context=t,this.refs=Ls,this.updater=n||_s}var qi=Qi.prototype=new zs;qi.constructor=Qi;Cs(qi,Vn.prototype);qi.isPureReactComponent=!0;var Ns=Array.isArray,As=Object.prototype.hasOwnProperty,Xi={current:null},Ps={key:!0,ref:!0,__self:!0,__source:!0};function Ts(e,t,n){var r,o={},i=null,l=null;if(t!=null)for(r in t.ref!==void 0&&(l=t.ref),t.key!==void 0&&(i=""+t.key),t)As.call(t,r)&&!Ps.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(s===1)o.children=n;else if(1{"use strict";Os.exports=Rs()});var Ks=$t(le=>{"use strict";function nl(e,t){var n=e.length;e.push(t);e:for(;0>>1,o=e[r];if(0>>1;rEo(s,n))uEo(d,s)?(e[r]=d,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else if(uEo(d,n))e[r]=d,e[u]=n,r=u;else break e}}return t}function Eo(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}typeof performance=="object"&&typeof performance.now=="function"?($s=performance,le.unstable_now=function(){return $s.now()}):(Ji=Date,Is=Ji.now(),le.unstable_now=function(){return Ji.now()-Is});var $s,Ji,Is,At=[],Zt=[],Zp=1,mt=null,Oe=3,Lo=!1,kn=!1,wr=!1,js=typeof setTimeout=="function"?setTimeout:null,Us=typeof clearTimeout=="function"?clearTimeout:null,Fs=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function rl(e){for(var t=wt(Zt);t!==null;){if(t.callback===null)Co(Zt);else if(t.startTime<=e)Co(Zt),t.sortIndex=t.expirationTime,nl(At,t);else break;t=wt(Zt)}}function ol(e){if(wr=!1,rl(e),!kn)if(wt(At)!==null)kn=!0,ll(il);else{var t=wt(Zt);t!==null&&al(ol,t.startTime-e)}}function il(e,t){kn=!1,wr&&(wr=!1,Us(kr),kr=-1),Lo=!0;var n=Oe;try{for(rl(t),mt=wt(At);mt!==null&&(!(mt.expirationTime>t)||e&&!Hs());){var r=mt.callback;if(typeof r=="function"){mt.callback=null,Oe=mt.priorityLevel;var o=r(mt.expirationTime<=t);t=le.unstable_now(),typeof o=="function"?mt.callback=o:mt===wt(At)&&Co(At),rl(t)}else Co(At);mt=wt(At)}if(mt!==null)var i=!0;else{var l=wt(Zt);l!==null&&al(ol,l.startTime-t),i=!1}return i}finally{mt=null,Oe=n,Lo=!1}}var zo=!1,_o=null,kr=-1,Vs=5,Bs=-1;function Hs(){return!(le.unstable_now()-Bse||125r?(e.sortIndex=n,nl(Zt,e),wt(At)===null&&e===wt(Zt)&&(wr?(Us(kr),kr=-1):wr=!0,al(ol,n-r))):(e.sortIndex=o,nl(At,e),kn||Lo||(kn=!0,ll(il))),e};le.unstable_shouldYield=Hs;le.unstable_wrapCallback=function(e){var t=Oe;return function(){var n=Oe;Oe=t;try{return e.apply(this,arguments)}finally{Oe=n}}}});var Gs=$t((uh,Ws)=>{"use strict";Ws.exports=Ks()});var Xd=$t(lt=>{"use strict";var Jp=No(),ot=Gs();function z(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Al=Object.prototype.hasOwnProperty,em=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ys={},Qs={};function tm(e){return Al.call(Qs,e)?!0:Al.call(Ys,e)?!1:em.test(e)?Qs[e]=!0:(Ys[e]=!0,!1)}function nm(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function rm(e,t,n,r){if(t===null||typeof t>"u"||nm(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function We(e,t,n,r,o,i,l){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=l}var Me={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Me[e]=new We(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Me[t]=new We(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Me[e]=new We(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Me[e]=new We(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Me[e]=new We(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Me[e]=new We(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Me[e]=new We(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Me[e]=new We(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Me[e]=new We(e,5,!1,e.toLowerCase(),null,!1,!1)});var ka=/[\-:]([a-z])/g;function Sa(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(ka,Sa);Me[t]=new We(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(ka,Sa);Me[t]=new We(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(ka,Sa);Me[t]=new We(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Me[e]=new We(e,1,!1,e.toLowerCase(),null,!1,!1)});Me.xlinkHref=new We("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Me[e]=new We(e,1,!1,e.toLowerCase(),null,!0,!0)});function Na(e,t,n,r){var o=Me.hasOwnProperty(t)?Me[t]:null;(o!==null?o.type!==0:r||!(2s||o[l]!==i[s]){var u=` +`+o[l].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=l&&0<=s);break}}}finally{ul=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Pr(e):""}function om(e){switch(e.tag){case 5:return Pr(e.type);case 16:return Pr("Lazy");case 13:return Pr("Suspense");case 19:return Pr("SuspenseList");case 0:case 2:case 15:return e=cl(e.type,!1),e;case 11:return e=cl(e.type.render,!1),e;case 1:return e=cl(e.type,!0),e;default:return""}}function Rl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Wn:return"Fragment";case Kn:return"Portal";case Pl:return"Profiler";case Ea:return"StrictMode";case Tl:return"Suspense";case Ml:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case nc:return(e.displayName||"Context")+".Consumer";case tc:return(e._context.displayName||"Context")+".Provider";case _a:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ca:return t=e.displayName||null,t!==null?t:Rl(e.type)||"Memo";case en:t=e._payload,e=e._init;try{return Rl(e(t))}catch{}}return null}function im(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Rl(t);case 8:return t===Ea?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function gn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function oc(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function lm(e){var t=oc(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(l){r=""+l,i.call(this,l)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(l){r=""+l},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Po(e){e._valueTracker||(e._valueTracker=lm(e))}function ic(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=oc(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function ii(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ol(e,t){var n=t.checked;return ve({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Xs(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=gn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function lc(e,t){t=t.checked,t!=null&&Na(e,"checked",t,!1)}function $l(e,t){lc(e,t);var n=gn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Il(e,t.type,n):t.hasOwnProperty("defaultValue")&&Il(e,t.type,gn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Zs(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Il(e,t,n){(t!=="number"||ii(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Tr=Array.isArray;function rr(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=To.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Kr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Or={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},am=["Webkit","ms","Moz","O"];Object.keys(Or).forEach(function(e){am.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Or[t]=Or[e]})});function cc(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Or.hasOwnProperty(e)&&Or[e]?(""+t).trim():t+"px"}function dc(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=cc(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var sm=ve({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function jl(e,t){if(t){if(sm[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(z(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(z(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(z(61))}if(t.style!=null&&typeof t.style!="object")throw Error(z(62))}}function Ul(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Vl=null;function La(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Bl=null,or=null,ir=null;function tu(e){if(e=uo(e)){if(typeof Bl!="function")throw Error(z(280));var t=e.stateNode;t&&(t=Mi(t),Bl(e.stateNode,e.type,t))}}function pc(e){or?ir?ir.push(e):ir=[e]:or=e}function mc(){if(or){var e=or,t=ir;if(ir=or=null,tu(e),t)for(e=0;e>>=0,e===0?32:31-(xm(e)/bm|0)|0}var Mo=64,Ro=4194304;function Mr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ui(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,l=n&268435455;if(l!==0){var s=l&~o;s!==0?r=Mr(s):(i&=l,i!==0&&(r=Mr(i)))}else l=n&~o,l!==0?r=Mr(l):i!==0&&(r=Mr(i));if(r===0)return 0;if(t!==0&&t!==r&&(t&o)===0&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ao(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-_t(t),e[t]=n}function Nm(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Ir),cu=" ",du=!1;function Mc(e,t){switch(e){case"keyup":return Zm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Rc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Gn=!1;function ef(e,t){switch(e){case"compositionend":return Rc(t);case"keypress":return t.which!==32?null:(du=!0,cu);case"textInput":return e=t.data,e===cu&&du?null:e;default:return null}}function tf(e,t){if(Gn)return e==="compositionend"||!$a&&Mc(e,t)?(e=Pc(),qo=Ma=on=null,Gn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=fu(n)}}function Fc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Fc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Dc(){for(var e=window,t=ii();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=ii(e.document)}return t}function Ia(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function df(e){var t=Dc(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Fc(n.ownerDocument.documentElement,n)){if(r!==null&&Ia(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=gu(n,i);var l=gu(n,r);o&&l&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Yn=null,Ql=null,Dr=null,ql=!1;function hu(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ql||Yn==null||Yn!==ii(r)||(r=Yn,"selectionStart"in r&&Ia(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Dr&&Xr(Dr,r)||(Dr=r,r=pi(Ql,"onSelect"),0Xn||(e.current=na[Xn],na[Xn]=null,Xn--)}function ae(e,t){Xn++,na[Xn]=e.current,e.current=t}var hn={},De=vn(hn),Xe=vn(!1),An=hn;function cr(e,t){var n=e.type.contextTypes;if(!n)return hn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Ze(e){return e=e.childContextTypes,e!=null}function fi(){de(Xe),de(De)}function Eu(e,t,n){if(De.current!==hn)throw Error(z(168));ae(De,t),ae(Xe,n)}function Yc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(z(108,im(e)||"Unknown",o));return ve({},n,r)}function gi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||hn,An=De.current,ae(De,e),ae(Xe,Xe.current),!0}function _u(e,t,n){var r=e.stateNode;if(!r)throw Error(z(169));n?(e=Yc(e,t,An),r.__reactInternalMemoizedMergedChildContext=e,de(Xe),de(De),ae(De,e)):de(Xe),ae(Xe,n)}var Ft=null,Ri=!1,wl=!1;function Qc(e){Ft===null?Ft=[e]:Ft.push(e)}function wf(e){Ri=!0,Qc(e)}function xn(){if(!wl&&Ft!==null){wl=!0;var e=0,t=ee;try{var n=Ft;for(ee=1;e>=l,o-=l,Dt=1<<32-_t(t)+o|n<R?(j=T,T=null):j=T.sibling;var I=g(p,T,h[R],k);if(I===null){T===null&&(T=j);break}e&&T&&I.alternate===null&&t(p,T),c=i(I,c,R),P===null?C=I:P.sibling=I,P=I,T=j}if(R===h.length)return n(p,T),pe&&Sn(p,R),C;if(T===null){for(;RR?(j=T,T=null):j=T.sibling;var ke=g(p,T,I.value,k);if(ke===null){T===null&&(T=j);break}e&&T&&ke.alternate===null&&t(p,T),c=i(ke,c,R),P===null?C=ke:P.sibling=ke,P=ke,T=j}if(I.done)return n(p,T),pe&&Sn(p,R),C;if(T===null){for(;!I.done;R++,I=h.next())I=y(p,I.value,k),I!==null&&(c=i(I,c,R),P===null?C=I:P.sibling=I,P=I);return pe&&Sn(p,R),C}for(T=r(p,T);!I.done;R++,I=h.next())I=f(T,p,R,I.value,k),I!==null&&(e&&I.alternate!==null&&T.delete(I.key===null?R:I.key),c=i(I,c,R),P===null?C=I:P.sibling=I,P=I);return e&&T.forEach(function(re){return t(p,re)}),pe&&Sn(p,R),C}function _(p,c,h,k){if(typeof h=="object"&&h!==null&&h.type===Wn&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case Ao:e:{for(var C=h.key,P=c;P!==null;){if(P.key===C){if(C=h.type,C===Wn){if(P.tag===7){n(p,P.sibling),c=o(P,h.props.children),c.return=p,p=c;break e}}else if(P.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===en&&zu(C)===P.type){n(p,P.sibling),c=o(P,h.props),c.ref=Cr(p,P,h),c.return=p,p=c;break e}n(p,P);break}else t(p,P);P=P.sibling}h.type===Wn?(c=zn(h.props.children,p.mode,k,h.key),c.return=p,p=c):(k=oi(h.type,h.key,h.props,null,p.mode,k),k.ref=Cr(p,c,h),k.return=p,p=k)}return l(p);case Kn:e:{for(P=h.key;c!==null;){if(c.key===P)if(c.tag===4&&c.stateNode.containerInfo===h.containerInfo&&c.stateNode.implementation===h.implementation){n(p,c.sibling),c=o(c,h.children||[]),c.return=p,p=c;break e}else{n(p,c);break}else t(p,c);c=c.sibling}c=zl(h,p.mode,k),c.return=p,p=c}return l(p);case en:return P=h._init,_(p,c,P(h._payload),k)}if(Tr(h))return E(p,c,h,k);if(Sr(h))return b(p,c,h,k);Ko(p,h)}return typeof h=="string"&&h!==""||typeof h=="number"?(h=""+h,c!==null&&c.tag===6?(n(p,c.sibling),c=o(c,h),c.return=p,p=c):(n(p,c),c=Ll(h,p.mode,k),c.return=p,p=c),l(p)):n(p,c)}return _}var pr=Jc(!0),ed=Jc(!1),vi=vn(null),xi=null,er=null,Ua=null;function Va(){Ua=er=xi=null}function Ba(e){var t=vi.current;de(vi),e._currentValue=t}function ia(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function ar(e,t){xi=e,Ua=er=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(qe=!0),e.firstContext=null)}function vt(e){var t=e._currentValue;if(Ua!==e)if(e={context:e,memoizedValue:t,next:null},er===null){if(xi===null)throw Error(z(308));er=e,xi.dependencies={lanes:0,firstContext:e}}else er=er.next=e;return t}var _n=null;function Ha(e){_n===null?_n=[e]:_n.push(e)}function td(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,Ha(t)):(n.next=o.next,o.next=n),t.interleaved=n,Ht(e,r)}function Ht(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var tn=!1;function Ka(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function nd(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ut(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function dn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(Y&2)!==0){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Ht(e,n)}return o=r.interleaved,o===null?(t.next=t,Ha(r)):(t.next=o.next,o.next=t),r.interleaved=t,Ht(e,n)}function Zo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Aa(e,n)}}function Au(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var l={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?o=i=l:i=i.next=l,n=n.next}while(n!==null);i===null?o=i=t:i=i.next=t}else o=i=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function bi(e,t,n,r){var o=e.updateQueue;tn=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(s!==null){o.shared.pending=null;var u=s,d=u.next;u.next=null,l===null?i=d:l.next=d,l=u;var m=e.alternate;m!==null&&(m=m.updateQueue,s=m.lastBaseUpdate,s!==l&&(s===null?m.firstBaseUpdate=d:s.next=d,m.lastBaseUpdate=u))}if(i!==null){var y=o.baseState;l=0,m=d=u=null,s=i;do{var g=s.lane,f=s.eventTime;if((r&g)===g){m!==null&&(m=m.next={eventTime:f,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var E=e,b=s;switch(g=t,f=n,b.tag){case 1:if(E=b.payload,typeof E=="function"){y=E.call(f,y,g);break e}y=E;break e;case 3:E.flags=E.flags&-65537|128;case 0:if(E=b.payload,g=typeof E=="function"?E.call(f,y,g):E,g==null)break e;y=ve({},y,g);break e;case 2:tn=!0}}s.callback!==null&&s.lane!==0&&(e.flags|=64,g=o.effects,g===null?o.effects=[s]:g.push(s))}else f={eventTime:f,lane:g,tag:s.tag,payload:s.payload,callback:s.callback,next:null},m===null?(d=m=f,u=y):m=m.next=f,l|=g;if(s=s.next,s===null){if(s=o.shared.pending,s===null)break;g=s,s=g.next,g.next=null,o.lastBaseUpdate=g,o.shared.pending=null}}while(!0);if(m===null&&(u=y),o.baseState=u,o.firstBaseUpdate=d,o.lastBaseUpdate=m,t=o.shared.interleaved,t!==null){o=t;do l|=o.lane,o=o.next;while(o!==t)}else i===null&&(o.shared.lanes=0);Mn|=l,e.lanes=l,e.memoizedState=y}}function Pu(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Sl.transition;Sl.transition={};try{e(!1),t()}finally{ee=n,Sl.transition=r}}function xd(){return xt().memoizedState}function Ef(e,t,n){var r=mn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},bd(e))wd(t,n);else if(n=td(e,t,n,r),n!==null){var o=Ke();Ct(n,e,r,o),kd(n,t,r)}}function _f(e,t,n){var r=mn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(bd(e))wd(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var l=t.lastRenderedState,s=i(l,n);if(o.hasEagerState=!0,o.eagerState=s,Lt(s,l)){var u=t.interleaved;u===null?(o.next=o,Ha(t)):(o.next=u.next,u.next=o),t.interleaved=o;return}}catch{}finally{}n=td(e,t,o,r),n!==null&&(o=Ke(),Ct(n,e,r,o),kd(n,t,r))}}function bd(e){var t=e.alternate;return e===ye||t!==null&&t===ye}function wd(e,t){jr=ki=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function kd(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Aa(e,n)}}var Si={readContext:vt,useCallback:$e,useContext:$e,useEffect:$e,useImperativeHandle:$e,useInsertionEffect:$e,useLayoutEffect:$e,useMemo:$e,useReducer:$e,useRef:$e,useState:$e,useDebugValue:$e,useDeferredValue:$e,useTransition:$e,useMutableSource:$e,useSyncExternalStore:$e,useId:$e,unstable_isNewReconciler:!1},Cf={readContext:vt,useCallback:function(e,t){return Tt().memoizedState=[e,t===void 0?null:t],e},useContext:vt,useEffect:Mu,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ei(4194308,4,fd.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ei(4194308,4,e,t)},useInsertionEffect:function(e,t){return ei(4,2,e,t)},useMemo:function(e,t){var n=Tt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Tt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Ef.bind(null,ye,e),[r.memoizedState,e]},useRef:function(e){var t=Tt();return e={current:e},t.memoizedState=e},useState:Tu,useDebugValue:Ja,useDeferredValue:function(e){return Tt().memoizedState=e},useTransition:function(){var e=Tu(!1),t=e[0];return e=Nf.bind(null,e[1]),Tt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ye,o=Tt();if(pe){if(n===void 0)throw Error(z(407));n=n()}else{if(n=t(),Ae===null)throw Error(z(349));(Tn&30)!==0||ld(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Mu(sd.bind(null,r,i,e),[e]),r.flags|=2048,io(9,ad.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Tt(),t=Ae.identifierPrefix;if(pe){var n=jt,r=Dt;n=(r&~(1<<32-_t(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ro++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),n==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[Mt]=t,e[eo]=r,Td(e,t,!1,!1),t.stateNode=e;e:{switch(l=Ul(n,r),n){case"dialog":ce("cancel",e),ce("close",e),o=r;break;case"iframe":case"object":case"embed":ce("load",e),o=r;break;case"video":case"audio":for(o=0;ogr&&(t.flags|=128,r=!0,Lr(i,!1),t.lanes=4194304)}else{if(!r)if(e=wi(l),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Lr(i,!0),i.tail===null&&i.tailMode==="hidden"&&!l.alternate&&!pe)return Ie(t),null}else 2*we()-i.renderingStartTime>gr&&n!==1073741824&&(t.flags|=128,r=!0,Lr(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(n=i.last,n!==null?n.sibling=l:t.child=l,i.last=l)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=we(),t.sibling=null,n=he.current,ae(he,r?n&1|2:n&1),t):(Ie(t),null);case 22:case 23:return is(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(tt&1073741824)!==0&&(Ie(t),t.subtreeFlags&6&&(t.flags|=8192)):Ie(t),null;case 24:return null;case 25:return null}throw Error(z(156,t.tag))}function Of(e,t){switch(Da(t),t.tag){case 1:return Ze(t.type)&&fi(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return mr(),de(Xe),de(De),Ya(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Ga(t),null;case 13:if(de(he),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(z(340));dr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return de(he),null;case 4:return mr(),null;case 10:return Ba(t.type._context),null;case 22:case 23:return is(),null;case 24:return null;default:return null}}var Go=!1,Fe=!1,$f=typeof WeakSet=="function"?WeakSet:Set,$=null;function tr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){be(e,t,r)}else n.current=null}function fa(e,t,n){try{n()}catch(r){be(e,t,r)}}var Hu=!1;function If(e,t){if(Xl=ci,e=Dc(),Ia(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var l=0,s=-1,u=-1,d=0,m=0,y=e,g=null;t:for(;;){for(var f;y!==n||o!==0&&y.nodeType!==3||(s=l+o),y!==i||r!==0&&y.nodeType!==3||(u=l+r),y.nodeType===3&&(l+=y.nodeValue.length),(f=y.firstChild)!==null;)g=y,y=f;for(;;){if(y===e)break t;if(g===n&&++d===o&&(s=l),g===i&&++m===r&&(u=l),(f=y.nextSibling)!==null)break;y=g,g=y.parentNode}y=f}n=s===-1||u===-1?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Zl={focusedElem:e,selectionRange:n},ci=!1,$=t;$!==null;)if(t=$,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,$=e;else for(;$!==null;){t=$;try{var E=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(E!==null){var b=E.memoizedProps,_=E.memoizedState,p=t.stateNode,c=p.getSnapshotBeforeUpdate(t.elementType===t.type?b:St(t.type,b),_);p.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var h=t.stateNode.containerInfo;h.nodeType===1?h.textContent="":h.nodeType===9&&h.documentElement&&h.removeChild(h.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(z(163))}}catch(k){be(t,t.return,k)}if(e=t.sibling,e!==null){e.return=t.return,$=e;break}$=t.return}return E=Hu,Hu=!1,E}function Ur(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&fa(t,n,i)}o=o.next}while(o!==r)}}function Ii(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ga(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Od(e){var t=e.alternate;t!==null&&(e.alternate=null,Od(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Mt],delete t[eo],delete t[ta],delete t[xf],delete t[bf])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function $d(e){return e.tag===5||e.tag===3||e.tag===4}function Ku(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||$d(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ha(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=mi));else if(r!==4&&(e=e.child,e!==null))for(ha(e,t,n),e=e.sibling;e!==null;)ha(e,t,n),e=e.sibling}function ya(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(ya(e,t,n),e=e.sibling;e!==null;)ya(e,t,n),e=e.sibling}var Pe=null,Nt=!1;function Jt(e,t,n){for(n=n.child;n!==null;)Id(e,t,n),n=n.sibling}function Id(e,t,n){if(Rt&&typeof Rt.onCommitFiberUnmount=="function")try{Rt.onCommitFiberUnmount(zi,n)}catch{}switch(n.tag){case 5:Fe||tr(n,t);case 6:var r=Pe,o=Nt;Pe=null,Jt(e,t,n),Pe=r,Nt=o,Pe!==null&&(Nt?(e=Pe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Pe.removeChild(n.stateNode));break;case 18:Pe!==null&&(Nt?(e=Pe,n=n.stateNode,e.nodeType===8?bl(e.parentNode,n):e.nodeType===1&&bl(e,n),Qr(e)):bl(Pe,n.stateNode));break;case 4:r=Pe,o=Nt,Pe=n.stateNode.containerInfo,Nt=!0,Jt(e,t,n),Pe=r,Nt=o;break;case 0:case 11:case 14:case 15:if(!Fe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,l=i.destroy;i=i.tag,l!==void 0&&((i&2)!==0||(i&4)!==0)&&fa(n,t,l),o=o.next}while(o!==r)}Jt(e,t,n);break;case 1:if(!Fe&&(tr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){be(n,t,s)}Jt(e,t,n);break;case 21:Jt(e,t,n);break;case 22:n.mode&1?(Fe=(r=Fe)||n.memoizedState!==null,Jt(e,t,n),Fe=r):Jt(e,t,n);break;default:Jt(e,t,n)}}function Wu(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new $f),t.forEach(function(r){var o=Wf.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function kt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=l),r&=~i}if(r=o,r=we()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Df(r/1960))-r,10e?16:e,ln===null)var r=!1;else{if(e=ln,ln=null,_i=0,(Y&6)!==0)throw Error(z(331));var o=Y;for(Y|=4,$=e.current;$!==null;){var i=$,l=i.child;if(($.flags&16)!==0){var s=i.deletions;if(s!==null){for(var u=0;uwe()-rs?Ln(e,0):ns|=n),Je(e,t)}function Kd(e,t){t===0&&((e.mode&1)===0?t=1:(t=Ro,Ro<<=1,(Ro&130023424)===0&&(Ro=4194304)));var n=Ke();e=Ht(e,t),e!==null&&(ao(e,t,n),Je(e,n))}function Kf(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Kd(e,n)}function Wf(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(z(314))}r!==null&&r.delete(t),Kd(e,n)}var Wd;Wd=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Xe.current)qe=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return qe=!1,Mf(e,t,n);qe=(e.flags&131072)!==0}else qe=!1,pe&&(t.flags&1048576)!==0&&qc(t,yi,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;ti(e,t),e=t.pendingProps;var o=cr(t,De.current);ar(t,n),o=qa(null,t,r,e,o,n);var i=Xa();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ze(r)?(i=!0,gi(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Ka(t),o.updater=$i,t.stateNode=o,o._reactInternals=t,aa(t,r,e,n),t=ca(null,t,r,!0,i,n)):(t.tag=0,pe&&i&&Fa(t),He(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(ti(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=Yf(r),e=St(r,e),o){case 0:t=ua(null,t,r,e,n);break e;case 1:t=Uu(null,t,r,e,n);break e;case 11:t=Du(null,t,r,e,n);break e;case 14:t=ju(null,t,r,St(r.type,e),n);break e}throw Error(z(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:St(r,o),ua(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:St(r,o),Uu(e,t,r,o,n);case 3:e:{if(zd(t),e===null)throw Error(z(387));r=t.pendingProps,i=t.memoizedState,o=i.element,nd(e,t),bi(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=fr(Error(z(423)),t),t=Vu(e,t,r,n,o);break e}else if(r!==o){o=fr(Error(z(424)),t),t=Vu(e,t,r,n,o);break e}else for(nt=cn(t.stateNode.containerInfo.firstChild),rt=t,pe=!0,Et=null,n=ed(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(dr(),r===o){t=Kt(e,t,n);break e}He(e,t,r,n)}t=t.child}return t;case 5:return rd(t),e===null&&oa(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,l=o.children,Jl(r,o)?l=null:i!==null&&Jl(r,i)&&(t.flags|=32),Ld(e,t),He(e,t,l,n),t.child;case 6:return e===null&&oa(t),null;case 13:return Ad(e,t,n);case 4:return Wa(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=pr(t,null,r,n):He(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:St(r,o),Du(e,t,r,o,n);case 7:return He(e,t,t.pendingProps,n),t.child;case 8:return He(e,t,t.pendingProps.children,n),t.child;case 12:return He(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,l=o.value,ae(vi,r._currentValue),r._currentValue=l,i!==null)if(Lt(i.value,l)){if(i.children===o.children&&!Xe.current){t=Kt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var s=i.dependencies;if(s!==null){l=i.child;for(var u=s.firstContext;u!==null;){if(u.context===r){if(i.tag===1){u=Ut(-1,n&-n),u.tag=2;var d=i.updateQueue;if(d!==null){d=d.shared;var m=d.pending;m===null?u.next=u:(u.next=m.next,m.next=u),d.pending=u}}i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),ia(i.return,n,t),s.lanes|=n;break}u=u.next}}else if(i.tag===10)l=i.type===t.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error(z(341));l.lanes|=n,s=l.alternate,s!==null&&(s.lanes|=n),ia(l,n,t),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===t){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}He(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,ar(t,n),o=vt(o),r=r(o),t.flags|=1,He(e,t,r,n),t.child;case 14:return r=t.type,o=St(r,t.pendingProps),o=St(r.type,o),ju(e,t,r,o,n);case 15:return _d(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:St(r,o),ti(e,t),t.tag=1,Ze(r)?(e=!0,gi(t)):e=!1,ar(t,n),Sd(t,r,o),aa(t,r,o,n),ca(null,t,r,!0,e,n);case 19:return Pd(e,t,n);case 22:return Cd(e,t,n)}throw Error(z(156,t.tag))};function Gd(e,t){return bc(e,t)}function Gf(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ht(e,t,n,r){return new Gf(e,t,n,r)}function as(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Yf(e){if(typeof e=="function")return as(e)?1:0;if(e!=null){if(e=e.$$typeof,e===_a)return 11;if(e===Ca)return 14}return 2}function fn(e,t){var n=e.alternate;return n===null?(n=ht(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function oi(e,t,n,r,o,i){var l=2;if(r=e,typeof e=="function")as(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case Wn:return zn(n.children,o,i,t);case Ea:l=8,o|=8;break;case Pl:return e=ht(12,n,t,o|2),e.elementType=Pl,e.lanes=i,e;case Tl:return e=ht(13,n,t,o),e.elementType=Tl,e.lanes=i,e;case Ml:return e=ht(19,n,t,o),e.elementType=Ml,e.lanes=i,e;case rc:return Di(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case tc:l=10;break e;case nc:l=9;break e;case _a:l=11;break e;case Ca:l=14;break e;case en:l=16,r=null;break e}throw Error(z(130,e==null?e:typeof e,""))}return t=ht(l,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function zn(e,t,n,r){return e=ht(7,e,r,t),e.lanes=n,e}function Di(e,t,n,r){return e=ht(22,e,r,t),e.elementType=rc,e.lanes=n,e.stateNode={isHidden:!1},e}function Ll(e,t,n){return e=ht(6,e,null,t),e.lanes=n,e}function zl(e,t,n){return t=ht(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Qf(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=pl(0),this.expirationTimes=pl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=pl(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function ss(e,t,n,r,o,i,l,s,u){return e=new Qf(e,t,n,s,u),t===1?(t=1,i===!0&&(t|=8)):t=0,i=ht(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ka(i),e}function qf(e,t,n){var r=3{"use strict";function Zd(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Zd)}catch(e){console.error(e)}}Zd(),Jd.exports=Xd()});var np=$t(ps=>{"use strict";var tp=ep();ps.createRoot=tp.createRoot,ps.hydrateRoot=tp.hydrateRoot;var ph});var op=$t(Hi=>{"use strict";var tg=No(),ng=Symbol.for("react.element"),rg=Symbol.for("react.fragment"),og=Object.prototype.hasOwnProperty,ig=tg.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,lg={key:!0,ref:!0,__self:!0,__source:!0};function rp(e,t,n){var r,o={},i=null,l=null;n!==void 0&&(i=""+n),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(l=t.ref);for(r in t)og.call(t,r)&&!lg.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)o[r]===void 0&&(o[r]=t[r]);return{$$typeof:ng,type:e,key:i,ref:l,props:o,_owner:ig.current}}Hi.Fragment=rg;Hi.jsx=rp;Hi.jsxs=rp});var ms=$t((yh,ip)=>{"use strict";ip.exports=op()});var N=bo(No(),1),bp=bo(np(),1);var a=bo(ms(),1),wp={hidden:"UKRYTY",connecting:"\u0141\u0104CZENIE",connected:"ONLINE \xB7 LIVE",replaying:"ONLINE \xB7 REPLAY",verifying:"ONLINE \xB7 WERYFIKACJA",ready:"ONLINE \xB7 GOTOWY",failed:"ONLINE \xB7 B\u0141\u0104D STANU",offline:"OFFLINE \xB7 ZAPIS",unselected:"OFFLINE \xB7 BRAK CELU"},lp=.25,Fn=1,ap=4;function ag(e){let t=window.getComputedStyle(e).overflowY;return t==="auto"||t==="scroll"||t==="hidden"||t==="clip"}function kp(e){let t=e.getBoundingClientRect(),n=e.offsetHeight||e.clientHeight,r=n>0?t.height/n:1,o=t.top+e.clientTop*r;return{top:o,bottom:o+e.clientHeight*r}}function Sp(e){let t=document.querySelector(".viewer-chrome");if(t?.classList.contains("is-nvim-fit"))return null;let n=0,r=window.innerHeight;if(t){let o=t.getBoundingClientRect(),i=e.getBoundingClientRect();o.lefti.left&&o.bottom>0&&o.topFn?{top:n,bottom:r}:null}function sg(e){let t=Sp(e);if(!t)return null;let{top:n,bottom:r}=t;for(let o=e.parentElement;o&&o!==document.body&&o!==document.documentElement;o=o.parentElement){if(!ag(o))continue;let i=kp(o);n=Math.max(n,i.top),r=Math.min(r,i.bottom)}return r-n>Fn?{top:n,bottom:r}:null}function Gi(){return document.scrollingElement??document.documentElement}function ug(e){let t=[];for(let r=e.parentElement;r&&r!==document.body&&r!==document.documentElement;r=r.parentElement){let o=window.getComputedStyle(r).overflowY;(o==="auto"||o==="scroll")&&r.scrollHeight-r.clientHeight>1&&t.push(r)}let n=Gi();return t.includes(n)||t.push(n),t}function cg(e){if(e===Gi())return 1;let t=e.getBoundingClientRect(),n=e.offsetHeight||e.clientHeight,r=n>0?t.height/n:1;return Number.isFinite(r)&&r>0?r:1}function Ki(e,t){let n=e.style.scrollBehavior;e.style.scrollBehavior="auto",t.left!=null&&(e.scrollLeft=t.left),t.top!=null&&(e.scrollTop=t.top),e.style.scrollBehavior=n}function dg(e,t){let n=e.closest(".sheet-content");if(!n)return 0;let r=kp(n),o=0;if(r.bottom<=t.top?o=r.bottom-t.bottom:r.top>=t.bottom&&(o=r.top-t.top),Math.abs(o)<=Fn)return 0;let i=Gi(),l=i.scrollTop,s=Math.max(0,i.scrollHeight-i.clientHeight);return Ki(i,{top:Math.max(0,Math.min(s,l+o))}),i.scrollTop-l}function sp(e,t){let n=t;for(let r of ug(e)){if(Math.abs(n)<=Fn)break;let o=cg(r),i=Math.max(0,r.scrollHeight-r.clientHeight),l=r.scrollTop,s=Math.max(0,Math.min(i,l+n/o));Ki(r,{top:s}),n-=(r.scrollTop-l)*o}return t-n}function up(e,t){let n=e.getBoundingClientRect(),r=(n.top+n.bottom)/2,o=t.bottom-t.top,i=t.top+o*lp,l=t.bottom-o*lp;return rl?r-l:0}var Yt=({html:e,className:t})=>(0,a.jsx)("div",{className:t,dangerouslySetInnerHTML:{__html:e}});function Np(e,t){e.setAttribute("preserveAspectRatio","xMinYMin meet"),t&&(e.setAttribute("viewBox",`${t.x} ${t.y} ${t.width} ${t.height}`),e.setAttribute("width",`${t.width}px`),e.setAttribute("height",`${t.height}px`),e.dataset.tileIndex=String(t.index),e.dataset.tileRow=String(t.row),e.dataset.tileColumn=String(t.column))}function pg(e){return e.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9_.:-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,120)||"uml-element"}function gs(e){let t=e;if(typeof t.getBBox!="function")return null;try{let n=t.getBBox();return[n.x,n.y,n.width,n.height].every(Number.isFinite)?{x:n.x,y:n.y,width:n.width,height:n.height}:null}catch{return null}}function mg(e){let t=gs(e);if(!t)return null;let n=Number(e.dataset.umlLayoutOriginX),r=Number(e.dataset.umlLayoutOriginY),o=Number(e.dataset.umlLayoutDx),i=Number(e.dataset.umlLayoutDy),l=Number(e.dataset.umlLayoutSx),s=Number(e.dataset.umlLayoutSy);return[n,r,o,i,l,s].every(Number.isFinite)?{x:n+(t.x-n)*l+o,y:r+(t.y-r)*s+i,width:t.width*l,height:t.height*s}:t}function Ep(e){e.dataset.umlLayoutRemembered!=="true"&&(e.dataset.umlLayoutRemembered="true",e.dataset.umlLayoutOriginalTransform=e.getAttribute("transform")??"",e.dataset.umlLayoutOriginalVisibility=e.getAttribute("visibility")??"",e.dataset.umlLayoutOriginalStyle=e.getAttribute("style")??"",e instanceof SVGTextElement&&(e.dataset.umlLayoutOriginalText=e.textContent??"",e.dataset.umlLayoutOriginalX=e.getAttribute("x")??"",e.dataset.umlLayoutOriginalTextAnchor=e.getAttribute("text-anchor")??"",e.dataset.umlLayoutOriginalFontFamily=e.getAttribute("font-family")??"",e.dataset.umlLayoutOriginalFontSize=e.getAttribute("font-size")??"",e.dataset.umlLayoutOriginalFontWeight=e.getAttribute("font-weight")??""),e instanceof SVGRectElement&&(e.dataset.umlLayoutOriginalFill=e.getAttribute("fill")??"",e.dataset.umlLayoutOriginalStroke=e.getAttribute("stroke")??"",e.dataset.umlLayoutOriginalStrokeWidth=e.getAttribute("stroke-width")??""))}function fg(e){e.querySelectorAll(".uml-layout-hit,.uml-layout-resize,.uml-layout-generated").forEach(t=>t.remove()),e.querySelectorAll("[data-uml-layout-remembered='true']").forEach(t=>{let n=(r,o)=>{o?t.setAttribute(r,o):t.removeAttribute(r)};n("transform",t.dataset.umlLayoutOriginalTransform),n("visibility",t.dataset.umlLayoutOriginalVisibility),n("style",t.dataset.umlLayoutOriginalStyle),t instanceof SVGTextElement&&(t.textContent=t.dataset.umlLayoutOriginalText??"",n("x",t.dataset.umlLayoutOriginalX),n("text-anchor",t.dataset.umlLayoutOriginalTextAnchor),n("font-family",t.dataset.umlLayoutOriginalFontFamily),n("font-size",t.dataset.umlLayoutOriginalFontSize),n("font-weight",t.dataset.umlLayoutOriginalFontWeight)),t instanceof SVGRectElement&&(n("fill",t.dataset.umlLayoutOriginalFill),n("stroke",t.dataset.umlLayoutOriginalStroke),n("stroke-width",t.dataset.umlLayoutOriginalStrokeWidth)),delete t.dataset.umlLayoutOriginX,delete t.dataset.umlLayoutOriginY,delete t.dataset.umlLayoutDx,delete t.dataset.umlLayoutDy,delete t.dataset.umlLayoutSx,delete t.dataset.umlLayoutSy,delete t.dataset.umlLayoutId})}function gg(e,t){let n=e.querySelector(":scope > g")??e,r=Array.from(n.children).filter(s=>s instanceof SVGElement),o=r.filter(s=>s instanceof SVGRectElement).map(s=>({rect:s,box:gs(s)})).filter(s=>!!(s.box&&s.box.width>=30&&s.box.height>=14)).sort((s,u)=>s.box.width*s.box.height-u.box.width*u.box.height),i=new Map;for(let s of r){let u=gs(s);if(!u)continue;let d=u.x+u.width/2,m=u.y+u.height/2,y=o.find(({box:g})=>d>=g.x-.5&&d<=g.x+g.width+.5&&m>=g.y-.5&&m<=g.y+g.height+.5);y&&i.set(s,y.rect)}let l=new Set;return o.map(({rect:s,box:u},d)=>{let m=r.filter(c=>i.get(c)===s);m.includes(s)||m.unshift(s);let y=m.filter(c=>c instanceof SVGTextElement).sort((c,h)=>Number(c.getAttribute("y"))-Number(h.getAttribute("y"))),g=(y[0]?.textContent??s.id??`element-${d+1}`).trim(),f=/^(\d{1,3})\b/.exec(g)?.[1]?.padStart(2,"0"),E=s.id||(f?t.get(f):"")||g,b=pg(E),_=b,p=2;for(;l.has(_);)_=`${b}-${p++}`;return l.add(_),m.forEach(Ep),{id:_,box:u,rect:s,members:m,texts:y}})}function po(e){let t=e.texts[0],n=e.rect.getAttribute("style")??"",r=i=>new RegExp(`${i}\\s*:\\s*([^;]+)`,"i").exec(n)?.[1]?.trim(),o=Number(t?.getAttribute("font-size")??12);return{...e.box,z:0,scale:1,rotation:0,text:{title:(e.texts[0]?.textContent??"").trim(),description:e.texts.slice(1).map(i=>(i.textContent??"").trim()).join(` +`),lines:e.texts.map(i=>(i.textContent??"").trim()),font_family:t?.getAttribute("font-family")??"Monospace",font_size:Number.isFinite(o)?o:12,font_weight:Number(t?.getAttribute("font-weight")??400)||400,align:"left"},style:{fill:e.rect.getAttribute("fill")??r("fill")??"#edf6fa",stroke:e.rect.getAttribute("stroke")??r("stroke")??"#2c7794",stroke_width:Number(e.rect.getAttribute("stroke-width")??r("stroke-width")??1.5)}}}function hg(e,t){let n=Math.max(12,Number(t.width)||e.box.width),r=Math.max(12,Number(t.height)||e.box.height),o=Number.isFinite(Number(t.x))?Number(t.x):e.box.x,i=Number.isFinite(Number(t.y))?Number(t.y):e.box.y,l=n/Math.max(1,e.box.width),s=r/Math.max(1,e.box.height),u=o-e.box.x,d=i-e.box.y,m=`translate(${u} ${d}) translate(${e.box.x} ${e.box.y}) scale(${l} ${s}) translate(${-e.box.x} ${-e.box.y})`;e.members.forEach(f=>{Ep(f);let E=f.dataset.umlLayoutOriginalTransform??"";f.setAttribute("transform",`${m}${E?` ${E}`:""}`),f.dataset.umlLayoutOriginX=String(e.box.x),f.dataset.umlLayoutOriginY=String(e.box.y),f.dataset.umlLayoutDx=String(u),f.dataset.umlLayoutDy=String(d),f.dataset.umlLayoutSx=String(l),f.dataset.umlLayoutSy=String(s),f.dataset.umlLayoutId=e.id});let y=t.text??{},g=y.lines??[y.title??"",...y.description?y.description.split(` +`):[]];e.texts.forEach((f,E)=>{E(e.tile?.page_height??0)?"landscape":"portrait",scale:1},elements:{},relations:{}}}function hs(e){if(!e)return{};let t=e.column===1&&e.columns>1?e.page_width-e.width:e.column===e.columns?0:Math.max(0,(e.page_width-e.width)/2),n=e.row===1&&e.rows>1?e.page_height-e.height:e.row===e.rows?0:Math.max(0,(e.page_height-e.height)/2);return{"--uml-tile-page-width":`${e.page_width}px`,"--uml-tile-page-height":`${e.page_height}px`,"--uml-tile-left":`${t}px`,"--uml-tile-top":`${n}px`}}function yg({html:e}){return(0,a.jsx)(Yt,{html:e})}function vg(e){let t=e.spread_count??1;if(t<=1)return null;let n=Math.max(1,Math.min(t,e.spread_index??1)),r=Math.max(1,Math.min(t,e.spread_columns??1)),o=n-1,i=Math.floor(o/r),l=o%r;return{left:l>0,right:l+10,down:n+r<=t,index:n,count:t}}function _p({continuation:e}){if(!e)return null;let t=[e.left&&["left","\u2190","kontynuacja po lewej"],e.up&&["up","\u2191","kontynuacja powy\u017Cej"],e.down&&["down","\u2193","kontynuacja poni\u017Cej"],e.right&&["right","\u2192","kontynuacja po prawej"]].filter(Boolean);return(0,a.jsx)("span",{className:"uml-page-continuation","aria-label":`Logiczny diagram: strona ${e.index} z ${e.count}`,title:`Ten sam diagram \xB7 strona ${e.index}/${e.count}`,children:t.map(([n,r,o])=>(0,a.jsx)("i",{"data-direction":n,"aria-label":o,children:r},n))})}function cp({side:e,html:t}){return(0,a.jsx)("aside",{className:`pdf-margin ${e}`,dangerouslySetInnerHTML:{__html:t}})}function ys({header:e,left:t="",right:n="",children:r,className:o=""}){return(0,a.jsx)("article",{className:`sheet ${o}`,children:(0,a.jsxs)("div",{className:"sheet-content",children:[(0,a.jsx)(yg,{html:e}),(0,a.jsx)(cp,{side:"left",html:t}),(0,a.jsx)("section",{className:"pdf-main card-section",children:r}),(0,a.jsx)(cp,{side:"right",html:n})]})})}function xg({viewpoints:e}){let t=e.filter(i=>i.status==="enabled"&&i.target_id),[n,r]=(0,N.useState)(t[0]?.id??"");(0,N.useEffect)(()=>{if(!t.length)return;let i=0,l=()=>{window.cancelAnimationFrame(i),i=window.requestAnimationFrame(()=>{let s=document.querySelector(".viewer-chrome")?.getBoundingClientRect().bottom??0,u=t.map(m=>({viewpoint:m,element:document.getElementById(m.target_id)})).filter(m=>!!m.element);if(!u.length)return;let d=u.reduce((m,y)=>{let g=Math.abs(y.element.getBoundingClientRect().top-s-18);return g{window.cancelAnimationFrame(i),window.removeEventListener("scroll",l),window.removeEventListener("resize",l)}},[e]);let o=i=>{if(i.status!=="enabled"||!i.target_id)return;let l=document.getElementById(i.target_id);if(!l)return;let u=document.querySelector(".viewer-chrome")?.getBoundingClientRect().height??0;r(i.id),window.scrollTo({top:Math.max(0,window.scrollY+l.getBoundingClientRect().top-u-8),behavior:"smooth"})};return(0,a.jsx)("nav",{className:"viewpoint-bar","aria-label":"Perspektywy architektury A1\u2013A8",children:e.map(i=>{let l=i.status==="unavailable";return(0,a.jsxs)("button",{type:"button",className:l?"is-unavailable":"","aria-current":!l&&n===i.id?"location":void 0,disabled:l,title:l?i.reason:i.subtitle,onClick:()=>o(i),children:[(0,a.jsx)("span",{children:i.id}),(0,a.jsx)("strong",{children:i.label}),l&&(0,a.jsx)("small",{children:"N/D"})]},i.id)})})}function bg({toc:e,libraryAvailable:t,libraryOpen:n,setLibraryOpen:r,scale:o,setScale:i,nvimVisible:l,setNvimVisible:s,nvimSyncMode:u,setNvimSyncMode:d,nvimControlMode:m,setNvimControlMode:y,nvimExpanded:g,setNvimExpanded:f,nvimFit:E,setNvimFit:b,allocatorVisible:_,setAllocatorVisible:p,hasAllocatorModel:c,diagramSpread:h,setDiagramSpread:k,hasDiagramSpread:C,nvimSummary:P,progress:T,progressError:R}){return(0,a.jsx)("nav",{className:"topbar",children:(0,a.jsxs)("div",{className:"topbar-inner",children:[t&&(0,a.jsxs)("button",{type:"button",className:`card-library-toggle${n?" is-active":""}`,"aria-controls":"side-panel-left-library","aria-expanded":n,"aria-label":n?"Alt+0: zamknij serie i karty":"Alt+0: poka\u017C serie i karty",title:n?"Alt+0 \xB7 Zamknij serie i karty":"Alt+0 \xB7 Serie i karty",onClick:()=>r(!n),children:[(0,a.jsx)("span",{"aria-hidden":"true",className:"card-library-toggle-icon",children:"\u2630"}),(0,a.jsx)("kbd",{children:"A0"}),(0,a.jsx)("span",{children:"KARTY"})]}),(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:"Spis tre\u015Bci"}),(0,a.jsx)("div",{className:"toc-links",children:e.map(j=>(0,a.jsx)("a",{href:`#${j.id}`,children:j.label},j.id))})]}),(0,a.jsxs)("div",{className:"topbar-nvim-section","aria-label":"Panel Neovima",children:[(0,a.jsx)("span",{className:"nvim-toolbar-boundary","aria-hidden":"true",children:"|"}),(0,a.jsx)("span",{className:"nvim-toolbar-context",children:"NVIM"}),(0,a.jsxs)("div",{className:"nvim-toolbar-actions","aria-label":"Narz\u0119dzia okna Neovima",children:[(0,a.jsxs)("button",{className:"viewer-nvim-toggle nvim-toolbar-button","aria-label":l?"Alt+1: ukryj Neovim":"Alt+1: poka\u017C Neovim",title:l?"Alt+1 \xB7 Ukryj Neovim":"Alt+1 \xB7 Poka\u017C Neovim","aria-pressed":l,onClick:()=>s(!l),children:[(0,a.jsx)("kbd",{className:"nvim-toolbar-key",children:"A1"}),(0,a.jsx)("span",{className:"nvim-toolbar-label",children:"PANEL"})]}),(0,a.jsxs)("button",{type:"button",className:`nvim-control-indicator nvim-toolbar-button${P.syncMode?" is-active":""}${P.syncReady?" is-engaged":""}`,"aria-label":`Alt+2: synchronizacja ${u?"w\u0142\u0105czona":"wy\u0142\u0105czona"}`,title:`Alt+2 \xB7 SYNC ${u?"ON":"OFF"}`,"aria-pressed":u,onClick:()=>d(!u),children:[(0,a.jsx)("kbd",{className:"nvim-toolbar-key",children:"A2"}),(0,a.jsx)("span",{className:"nvim-toolbar-label",children:"SYNC"})]}),(0,a.jsxs)("button",{type:"button",className:`nvim-work-indicator nvim-toolbar-button${m?" is-active":""}${P.controlEnabled?" is-engaged":""}`,"aria-label":`Alt+3: sterowanie ${u?m?"w\u0142\u0105czone":"wy\u0142\u0105czone":"niedost\u0119pne"}`,title:u?`Alt+3 \xB7 Sterowanie ${m?"ON":"OFF"}`:"Alt+3 \xB7 Sterowanie wymaga SYNC ON","aria-pressed":m,disabled:!u,onClick:()=>y(!m),children:[(0,a.jsx)("kbd",{className:"nvim-toolbar-key",children:"A3"}),(0,a.jsx)("span",{className:"nvim-toolbar-label",children:"CTRL"})]}),(0,a.jsxs)("button",{type:"button",className:`nvim-height-toggle nvim-toolbar-button${g?" is-active":""}`,"aria-label":`Alt+4: ${g?"przywr\xF3\u0107 normaln\u0105 wysoko\u015B\u0107":"ustaw wysoki panel"}`,title:g?"Alt+4 \xB7 Normalna wysoko\u015B\u0107":"Alt+4 \xB7 Wysoki panel 90%","aria-pressed":g,onClick:()=>f(!g),children:[(0,a.jsx)("kbd",{className:"nvim-toolbar-key",children:"A4"}),(0,a.jsx)("span",{className:"nvim-toolbar-label",children:"HIGH"})]}),(0,a.jsxs)("button",{type:"button",className:`nvim-height-toggle nvim-toolbar-button${E?" is-active":""}`,"aria-label":`Alt+5: automatyczne dopasowanie ${E?"w\u0142\u0105czone":"wy\u0142\u0105czone"}`,title:E?"Alt+5 \xB7 Wy\u0142\u0105cz auto-fit":"Alt+5 \xB7 Poka\u017C ca\u0142y Neovim","aria-pressed":E,onClick:()=>b(!E),children:[(0,a.jsx)("kbd",{className:"nvim-toolbar-key",children:"A5"}),(0,a.jsx)("span",{className:"nvim-toolbar-label",children:"FIT"})]}),c&&(0,a.jsxs)("button",{type:"button",className:`nvim-height-toggle nvim-toolbar-button${_?" is-active":""}`,"aria-label":`Alt+6: model alokatora ${_?"przypi\u0119ty":"ukryty"}`,title:_?"Alt+6 \xB7 Ukryj model alokatora":"Alt+6 \xB7 Przypnij model alokatora","aria-pressed":_,onClick:()=>p(!_),children:[(0,a.jsx)("kbd",{className:"nvim-toolbar-key",children:"A6"}),(0,a.jsx)("span",{className:"nvim-toolbar-label",children:"MODEL"})]}),C&&(0,a.jsxs)("button",{type:"button",className:`nvim-height-toggle nvim-toolbar-button${h?" is-active":""}`,"aria-label":`Alt+7: diagram UML ${h?"jako osobne kartki A4":"jako po\u0142\u0105czony spread"}`,title:h?"Alt+7 \xB7 Osobne kartki A4":"Alt+7 \xB7 Po\u0142\u0105cz strony UML","aria-pressed":h,onClick:()=>k(!h),children:[(0,a.jsx)("kbd",{className:"nvim-toolbar-key",children:"A7"}),(0,a.jsx)("span",{className:"nvim-toolbar-label",children:"UML"})]})]}),(0,a.jsx)("span",{className:"nvim-toolbar-boundary","aria-hidden":"true",children:"|"}),l&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:`nvim-status nvim-status--${P.state}`,children:wp[P.state]}),(0,a.jsxs)("span",{className:"topbar-nvim-meta",title:P.message,children:[(0,a.jsx)("strong",{children:P.instance??"Neovim MCP"}),P.detail&&(0,a.jsx)("small",{children:P.detail})]}),(0,a.jsxs)("span",{className:"nvim-shortcut-strip","aria-label":"Skr\xF3ty panelu Neovima",children:[(0,a.jsx)("kbd",{children:"F1"})," reset \xB7 ",(0,a.jsx)("kbd",{children:"F2"})," sync \xB7 ",(0,a.jsx)("kbd",{children:"Alt+W"})," okna \xB7 ",(0,a.jsx)("kbd",{children:"F12"})," skr\xF3ty"]})]})]}),(0,a.jsx)(Gg,{progress:T,error:R}),(0,a.jsxs)("div",{className:"viewer-zoom-controls",children:[(0,a.jsxs)("output",{className:"viewer-zoom-status",children:["P\u0142\xF3tno ",Math.round(o*100),"% \xB7 Tre\u015B\u0107 100%"]}),(0,a.jsx)("button",{className:"viewer-zoom-reset",onClick:()=>i(2.18),children:"Reset zoom"})]})]})})}function dp(e,t){for(let n of e.sections)for(let r of n.assets){let o=r.interactive;if(!(o?.kind!=="uml-sequence"||!o.phases?.length)&&!(t?.task.id&&o.task?.id!==t.task.id)&&!(t?.block.id&&o.block?.id!==t.block.id))for(let i of o.phases){if(t?.phase.id&&i.id!==t.phase.id)continue;let l=t?.step.id?i.steps.find(s=>s.id===t.step.id):i.steps[0];if(l)return{task:o.task??null,block:o.block??null,phase:{id:i.id,label:i.label},step:l,focusLevel:t?.focus_level??"step",activate:!1}}}return null}function wg({visible:e,model:t}){let[n,r]=(0,N.useState)(null);if((0,N.useEffect)(()=>{let g=f=>{r(f.detail??null)};return window.addEventListener("stem:nvim-step",g),r(dp(t)),fetch("/api/navigation/current",{cache:"no-store"}).then(f=>f.ok?f.json():Promise.reject()).then(f=>{let E=dp(t,f.current??null);E&&r(E)}).catch(()=>{}),()=>window.removeEventListener("stem:nvim-step",g)},[t]),!e)return null;let o=n?.focusLevel??"card",i=n?.step.snapshot?.memory.arena,l=!!(n&&o!=="card"&&o!=="task"),s=Math.max(1,Number(i?.size_bytes??64)),u=i?.offset==null?null:Math.max(0,Math.min(s,Number(i.offset))),d=i?.bytes.trim().split(/\s+/).filter(Boolean)??[],m=Math.min(s,64),y=n?[...(n.step.snapshot?.memory.items??[]).map(g=>({name:g.name,value:g.value})),...(n.step.snapshot?.frame.fields??[]).map(g=>({name:g.name,value:g.value}))].filter((g,f,E)=>E.findIndex(b=>b.name===g.name)===f).slice(0,8):[];return(0,a.jsxs)("section",{className:"allocator-panel","aria-label":"Przypi\u0119ty model alokatora",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("span",{children:"ALLOCATOR \xB7 PINNED"}),(0,a.jsx)("strong",{children:n?`${n.phase.label} \xB7 ${String(n.step.number).padStart(2,"0")} ${n.step.label}`:"Oczekiwanie na diagram UML"}),(0,a.jsx)("small",{children:l?n.step.snapshot?.description??n.step.description:"Wybierz co najmniej BLOCK. F2 wybierze jego pierwszy krok i wykona synchronizacj\u0119."})]}),(0,a.jsxs)("div",{className:"allocator-panel-body",children:[(0,a.jsxs)("dl",{className:"allocator-metrics",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"FOCUS"}),(0,a.jsx)("dd",{children:o.toUpperCase()})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"BASE"}),(0,a.jsx)("dd",{children:i?.base??"\u2014"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"ALLOCP"}),(0,a.jsx)("dd",{children:i?.cursor??"\u2014"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"USED / FREE"}),(0,a.jsx)("dd",{children:u==null?"\u2014":`${u} / ${s-u} B`})]})]}),(0,a.jsxs)("div",{className:`allocator-arena-view${l?"":" is-inactive"}`,children:[(0,a.jsxs)("div",{className:"allocator-arena-labels",children:[(0,a.jsx)("span",{children:"allocbuf[0]"}),(0,a.jsx)("strong",{children:u==null?"allocp jeszcze nieustawiony":`offset ${u}`}),(0,a.jsxs)("span",{children:["allocbuf[",s-1,"]"]})]}),(0,a.jsxs)("div",{className:"allocator-pinned-arena",style:{"--allocator-size":m},children:[Array.from({length:m},(g,f)=>(0,a.jsx)("i",{className:u!=null&&f(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{children:g.name}),(0,a.jsx)("code",{children:g.value})]},g.name)):(0,a.jsx)("p",{children:"Brak snapshotu."})})]})]})}var Wi=()=>({text:" ",highlight:0});function pp(e=1,t=1){return{width:e,height:t,cells:Array.from({length:t},()=>Array.from({length:e},Wi)),highlights:new Map,foreground:15263976,background:1053461,cursor:{row:0,column:0}}}function kg(e,t,n){if(t<=0||n<=0)return;let r=e.cells;e.width=t,e.height=n,e.cells=Array.from({length:n},(o,i)=>Array.from({length:t},(l,s)=>r[i]?.[s]??Wi()))}function Cp(e){return`stem-card:nvim-grid:${e}`}function Sg(e,t){if(t.width<=1||t.height<=1)return;let n={schema:"stem-nvim-grid.v1",snapshot_ref:e,saved_at:new Date().toISOString(),width:t.width,height:t.height,cells:t.cells.map(r=>r.map(o=>[o.text,o.highlight])),highlights:Array.from(t.highlights.entries()),foreground:t.foreground,background:t.background,cursor:{...t.cursor}};try{localStorage.setItem(Cp(e),JSON.stringify(n))}catch{}}function Lp(e,t){try{return e?.schema!=="stem-nvim-grid.v1"||e.snapshot_ref!==t||!Number.isInteger(e.width)||!Number.isInteger(e.height)||e.width<2||e.height<2||e.width>400||e.height>200||e.cells.length!==e.height?null:{width:e.width,height:e.height,cells:e.cells.map(n=>n.map(([r,o])=>({text:typeof r=="string"?r:" ",highlight:Number.isInteger(o)?o:0}))),highlights:new Map(e.highlights),foreground:e.foreground,background:e.background,cursor:e.cursor}}catch{return null}}function Ng(e){try{return Lp(JSON.parse(localStorage.getItem(Cp(e))??"null"),e)}catch{return null}}async function mp(e){let t=e.snapshot_ref;if(!t)return null;let n=Ng(t);if(n)return n;let r=e.view?.recorded_grid_ref;if(!r||/^(?:[a-z]+:|\/\/)/i.test(r))return null;try{let o=await fetch(r,{cache:"no-store"});return o.ok?Lp(await o.json(),t):null}catch{return null}}var Eg=[1842207,12590120,3064446,16106001,1997028,9978299,702940,12631996,6184036,15545147,5759881,16311388,5349887,12607947,5231357,16184820];function go(e){let t=Number(e);if(!Number.isInteger(t)||t<0||t>255)return;if(t<16)return Eg[t];if(t<232){let r=t-16,o=[0,95,135,175,215,255],i=o[Math.floor(r/36)],l=o[Math.floor(r%36/6)],s=o[r%6];return i<<16|l<<8|s}let n=8+(t-232)*10;return n<<16|n<<8|n}function _g(e){if(!e||typeof e!="object")return null;let t=e;return Object.keys(t).length?{...t,foreground:go(t.foreground),background:go(t.background),special:go(t.special)}:null}function Cg(e){if(!e||typeof e!="object")return null;let t=e;return Object.keys(t).length?{...t}:null}function Lg(e,t){for(let n of t){if(!Array.isArray(n)||typeof n[0]!="string")continue;let r=n[0],o=n.slice(1);for(let i of o)if(Array.isArray(i)){if(r==="grid_resize"){let[l,s,u]=i.map(Number);l===1&&kg(e,s,u)}else if(r==="default_colors_set"){let l=Number(i[0]),s=Number(i[1]),u=l>=0?l:go(i[3]),d=s>=0?s:go(i[4]);typeof u=="number"&&Number.isFinite(u)&&u>=0&&(e.foreground=u),typeof d=="number"&&Number.isFinite(d)&&d>=0&&(e.background=d)}else if(r==="hl_attr_define"){let l=Number(i[0]),s=_g(i[2])??Cg(i[1]);Number.isInteger(l)&&s&&typeof s=="object"&&e.highlights.set(l,s)}else if(r==="grid_clear"&&Number(i[0])===1)e.cells=Array.from({length:e.height},()=>Array.from({length:e.width},Wi));else if(r==="grid_cursor_goto"&&Number(i[0])===1)e.cursor={row:Number(i[1]),column:Number(i[2])};else if(r==="grid_line"&&Number(i[0])===1){let l=Number(i[1]),s=Number(i[2]),u=i[3];if(!e.cells[l]||!Array.isArray(u))continue;let d=0;for(let m of u){if(!Array.isArray(m))continue;let y=typeof m[0]=="string"?m[0]:" ";Number.isInteger(m[1])&&(d=Number(m[1]));let g=Number.isInteger(m[2])?Number(m[2]):1;for(let f=0;f=0&&(e.cells[l][s]={text:y,highlight:d}),s+=1}}else if(r==="grid_scroll"&&Number(i[0])===1){let l=Number(i[1]),s=Number(i[2]),u=Number(i[3]),d=Number(i[4]),m=Number(i[5]),y=Number(i[6]),g=e.cells.map(f=>f.map(E=>({...E})));for(let f=l;f=l&&b=u&&_i.text||" ").join(""),r=[],o=0;for(;o=n&&t.cursor.rowR.column-T.column||T.row-R.row):["asm","reg","memory"].includes(C??"")&&k.sort((T,R)=>T.column-R.column||T.row-R.row);let P=k[Math.max(0,Number(d.occurrence??1)-1)];m=P?.row??-1,y=P?.column??-1,f=d.text.length}if(m<0||y<0||m>=t.height||y>=t.width)continue;let E=Math.max(0,Number(d.padding_cells??1)),b=Math.max(0,y-E)*i,_=Math.max(0,m-E)*l,p=Math.min(t.width-y+E,f+E*2)*i,c=Math.min(t.height-m+E,g+E*2)*l,h=s[u.tone??"danger"];if(o.strokeStyle=h,o.lineWidth=2,u.shape==="underline"?(o.beginPath(),o.moveTo(b,_+c-2),o.lineTo(b+p,_+c-2),o.stroke()):o.strokeRect(b+1,_+1,Math.max(1,p-2),Math.max(1,c-2)),u.label){o.font="700 10px system-ui, sans-serif";let k=o.measureText(u.label).width+8;o.fillStyle=h,o.fillRect(b+1,Math.max(0,_-15),k,14),o.fillStyle="#fff",o.fillText(u.label,b+5,Math.max(10,_-4))}}}function Tg(e){if(e.nativeEvent.isComposing||e.metaKey)return null;let n={Enter:"CR",Escape:"Esc",Backspace:"BS",Delete:"Del",Tab:"Tab",ArrowLeft:"Left",ArrowRight:"Right",ArrowUp:"Up",ArrowDown:"Down",Home:"Home",End:"End",PageUp:"PageUp",PageDown:"PageDown",Insert:"Insert"}[e.key]??(/^F\d{1,2}$/.test(e.key)?e.key:null),r=[e.ctrlKey?"C":"",e.altKey?"M":"",e.shiftKey&&n?"S":""].filter(Boolean).join("-");return n?`<${r?`${r}-`:""}${n}>`:e.key.length!==1?null:e.ctrlKey||e.altKey?`<${r}-${e.key==="<"?"lt":e.key}>`:e.key==="<"?"":e.key}function Mg({visible:e,syncMode:t,controlMode:n,expanded:r,fit:o,scale:i,onSummaryChange:l}){let s=(0,N.useRef)(null),u=(0,N.useRef)(null),d=(0,N.useRef)(null),m=(0,N.useRef)(0),y=(0,N.useRef)(0),g=(0,N.useRef)(0),f=(0,N.useRef)(pp()),E=(0,N.useRef)(null),b=(0,N.useRef)(null),_=(0,N.useRef)(null),p=(0,N.useRef)(0),c=(0,N.useRef)(null),h=(0,N.useRef)(null),[k,C]=(0,N.useState)(null),[P,T]=(0,N.useState)(!1),[R,j]=(0,N.useState)(0),[I,ke]=(0,N.useState)(!1),[re,G]=(0,N.useState)(()=>{let A=Number(localStorage.getItem("stem-card-nvim-height-vh"));return Number.isFinite(A)&&A>=25&&A<=90?A:75}),[U,Le]=(0,N.useState)({state:"hidden"}),[Ne,Q]=(0,N.useState)({state:"idle"}),et=Ne.state==="replaying"||Ne.state==="verifying",Ge=t&&U.state==="connected"&&!et,je=n&&I&&U.state==="connected"&&!et,me=()=>{s.current&&Pg(s.current,f.current,_.current===b.current?.step.snapshot_ref?b.current?.step.view?.annotations??[]:[])},Dn=()=>{m.current||(m.current=window.requestAnimationFrame(()=>{m.current=0,me()}))};if((0,N.useEffect)(()=>{let A=F=>{let B=F.detail;b.current=B,C(B),_.current=null;let te=B.step.snapshot_ref;if(U.state!=="connected"&&te&&mp(B.step).then(ie=>{!ie||b.current?.step.snapshot_ref!==te||(f.current=ie,T(!0),_.current=te,Q({state:"idle",snapshot_ref:te,message:"Pokazano ostatni zapisany, zweryfikowany ekran."}),me())}),me(),!B.activate)return;let at=B.step.mode??"RUN",zt=async()=>{if(!B.step.code_ref)return null;let ie=await fetch("/api/nvim/open",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({code_ref:B.step.code_ref,actor:document.documentElement.dataset.cardClientId??"browser"})}),q=await ie.json().catch(()=>({}));if(!ie.ok)throw new Error(q.message??q.error??`HTTP ${ie.status}`);return q};if(at==="CODE"||!te){zt().then(()=>{Q({state:"ready",phase:"code",message:B.step.code_ref?`Otwarto ${B.step.code_ref}; program nie zosta\u0142 zrestartowany.`:"Krok CODE nie ma przypisanego code_ref."})}).catch(ie=>{Q({state:"failed",phase:"code",message:ie instanceof Error?ie.message:String(ie)})});return}if(!e||U.state!=="connected"){Q({state:"failed",snapshot_ref:te,message:"Cel jest offline; pozostaje zapisany wynik tego kroku."});return}let Ee=zt(),ne=Math.max(p.current+1,Date.now());p.current=ne,c.current?.abort();let st=new AbortController;c.current=st,Q({state:"replaying",phase:"dispatch",generation:ne,snapshot_ref:te,message:"Resetuj\u0119 cel i odtwarzam wykonanie do wybranego kroku."});let Ye=0,wn=async()=>{try{let ie=await fetch("/api/checkpoint/status",{cache:"no-store",signal:st.signal});if(!ie.ok)return;let q=await ie.json(),bt=q.active?.generation===ne?q.active:null;if(!bt||p.current!==ne)return;Q({state:bt.phase==="verify"?"verifying":"replaying",phase:bt.phase,generation:ne,snapshot_ref:te,message:bt.message})}catch{}};Ye=window.setInterval(wn,120),wn(),Ee.then(()=>fetch("/api/checkpoint/activate",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({snapshot_ref:te,generation:ne}),signal:st.signal})).then(async ie=>{let q=await ie.json();if(p.current!==ne)return;if(!ie.ok||q.status!=="ready")throw new Error(q.message??`Replay zako\u0144czy\u0142 si\u0119 kodem HTTP ${ie.status}.`);let bt=d.current;if(bt?.readyState!==WebSocket.OPEN)throw new Error("Replay zako\u0144czony, ale most Neovima jest offline.");let fe=y.current;bt.send(JSON.stringify({type:"refresh"}));let Qt=Date.now()+1800;for(;y.current<=fe&&Date.now()window.setTimeout(qt,20));if(y.current<=fe)throw new Error("Neovim nie potwierdzi\u0142 pe\u0142nego redraw po replay.");if(p.current!==ne)return;_.current=te,Q({state:"ready",phase:q.phase,generation:ne,snapshot_ref:te,message:q.message??"Stan maszyny zosta\u0142 odtworzony i zweryfikowany."}),Sg(te,f.current),me(),await new Promise(qt=>window.requestAnimationFrame(()=>qt()));let jn=s.current;if(jn&&b.current?.step.snapshot_ref===te)try{fetch("/api/evidence",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({actor:document.documentElement.dataset.cardClientId??"browser",snapshot_ref:te,event_id:B.step.event_id??null,strategy_ref:B.step.strategy_ref??null,code_ref:B.step.code_ref??null,caption:`${String(B.step.number).padStart(2,"0")} ${B.step.label}`,data_url:jn.toDataURL("image/png")})}).catch(()=>{})}catch{}}).catch(ie=>{st.signal.aborted||p.current!==ne||(mp(B.step).then(q=>{!q||b.current?.step.snapshot_ref!==te||(f.current=q,T(!0),_.current=te,me())}),Q({state:"failed",generation:ne,snapshot_ref:te,message:ie instanceof Error?ie.message:String(ie)}))}).finally(()=>{window.clearInterval(Ye),c.current===st&&(c.current=null)})};return window.addEventListener("stem:nvim-step",A),()=>{window.removeEventListener("stem:nvim-step",A),c.current?.abort()}},[U.state,e]),(0,N.useEffect)(()=>{localStorage.setItem("stem-card-nvim-height-vh",re.toFixed(2))},[re]),(0,N.useEffect)(()=>{let A=window.requestAnimationFrame(me);return()=>window.cancelAnimationFrame(A)},[r,o,i]),(0,N.useEffect)(()=>{let A=()=>{let F=d.current;F?.readyState===WebSocket.OPEN&&F.send(JSON.stringify({type:"refresh"})),me()};return window.addEventListener("stem:nvim-refresh",A),()=>window.removeEventListener("stem:nvim-refresh",A)},[]),(0,N.useEffect)(()=>{let A=U.state;U.state==="connected"&&(A=Ne.state==="idle"?"connected":Ne.state),l({state:A,message:Ne.message??U.message,instance:U.target?.instance??U.target?.container_name,detail:[U.target?.profile??k?.step.view?.connection_ref,k?`${String(k.step.number).padStart(2,"0")} ${k.step.label}`:void 0,Ne.phase].filter(Boolean).join(" \xB7 "),syncMode:t,syncReady:Ge,controlMode:n,controlEnabled:je,screenCursor:{...f.current.cursor},grid:{columns:f.current.width,rows:f.current.height}})},[k,Ne,je,n,R,l,U,t,Ge]),(0,N.useEffect)(()=>()=>window.clearTimeout(g.current),[]),(0,N.useEffect)(()=>{if(!je)return;let A=F=>{let B=d.current;if(B?.readyState!==WebSocket.OPEN)return;if(F.altKey&&!F.ctrlKey&&!F.metaKey&&F.key.toLowerCase()==="w"){F.preventDefault(),F.stopImmediatePropagation(),F.repeat||B.send(JSON.stringify({type:"input",keys:""}));return}let te={ArrowLeft:"h",ArrowDown:"j",ArrowUp:"k",ArrowRight:"l"};F.altKey&&!F.ctrlKey&&!F.metaKey&&te[F.key]&&(F.preventDefault(),F.stopImmediatePropagation(),F.repeat||B.send(JSON.stringify({type:"input",keys:`${te[F.key]}`})))};return window.addEventListener("keydown",A,!0),()=>window.removeEventListener("keydown",A,!0)},[je]),(0,N.useEffect)(()=>{if(!e||!t){d.current?.close(),d.current=null,ke(!1),Le(e?{state:"offline",message:"SYNC OFF: pokazuj\u0119 zapisany ekran bez po\u0142\u0105czenia z kontenerem."}:{state:"hidden"});return}let A=!1,F=0,B=()=>{if(A)return;let te=window.location.protocol==="https:"?"wss:":"ws:",at=new WebSocket(`${te}//${window.location.host}/api/nvim-ui`);d.current=at,Le({state:"connecting"}),at.addEventListener("message",zt=>{try{let Ee=JSON.parse(String(zt.data));if(Ee.type==="status"){typeof Ee.epoch=="string"&&E.current&&E.current!==Ee.epoch&&(f.current=pp(),T(!1),_.current=null),typeof Ee.epoch=="string"&&(E.current=Ee.epoch),Le(Ee);return}Ee.type==="redraw"&&Array.isArray(Ee.events)&&(Lg(f.current,Ee.events),f.current.width>1&&f.current.height>1&&T(!0),Ee.events.some(ne=>Array.isArray(ne)&&ne[0]==="flush")&&(y.current+=1,Dn(),g.current||(g.current=window.setTimeout(()=>{g.current=0,j(ne=>ne+1)},120))))}catch{}}),at.addEventListener("close",()=>{d.current===at&&(d.current=null),A||(F=window.setTimeout(B,1200))}),at.addEventListener("error",()=>{Le(zt=>({...zt,state:"offline",message:"Most Neovima jest chwilowo niedost\u0119pny."}))})};return B(),()=>{A=!0,window.clearTimeout(F),window.cancelAnimationFrame(m.current),m.current=0,d.current?.close(),d.current=null}},[t,e]),!e)return null;let xe=A=>{let F=d.current;F?.readyState===WebSocket.OPEN&&F.send(JSON.stringify(A))},bn=A=>{let F=A.currentTarget.getBoundingClientRect();return{row:Math.max(0,Math.min(f.current.height-1,Math.floor((A.clientY-F.top)/F.height*f.current.height))),column:Math.max(0,Math.min(f.current.width-1,Math.floor((A.clientX-F.left)/F.width*f.current.width)))}},se=A=>[A.shiftKey?"S":"",A.ctrlKey?"C":"",A.altKey?"A":""].filter(Boolean).join("-");return(0,a.jsxs)("section",{className:"nvim-panel","aria-label":"Neovim po\u0142\u0105czony z kontenerem",onWheel:A=>{A.stopPropagation();let F=A.target;(!(F instanceof Element)||!F.closest(".nvim-screen-scroll"))&&A.preventDefault()},children:[(0,a.jsxs)("div",{ref:u,className:"nvim-screen-scroll",style:o?void 0:{height:`${r?90:re}vh`},"data-sync":t?"on":"off","data-control":je?"true":"false",tabIndex:0,onPointerEnter:A=>{ke(!0),A.currentTarget.focus({preventScroll:!0})},onPointerLeave:A=>{ke(!1),A.currentTarget.blur()},onMouseDown:A=>A.currentTarget.focus({preventScroll:!0}),onKeyDown:A=>{if(!je)return;let F=Tg(A);F&&(A.preventDefault(),A.stopPropagation(),xe({type:"input",keys:F}))},children:[(0,a.jsx)("div",{className:"nvim-screen-stage",style:o?void 0:{height:`${(r?90:re)/Math.max(i,.25)}vh`},children:(0,a.jsx)("div",{className:"nvim-screen-surface",children:(0,a.jsx)("div",{className:"nvim-screen-frame",children:(0,a.jsx)("div",{className:"nvim-screen-content",children:(0,a.jsx)("div",{className:"nvim-screen-grid",children:(0,a.jsx)("canvas",{ref:s,className:"nvim-screen",tabIndex:-1,"aria-label":je?"Interaktywny ekran Neovima":"Ekran Neovima",onMouseDown:A=>{if(!je||U.state!=="connected")return;A.preventDefault();let F=bn(A),B=A.button===1?"middle":A.button===2?"right":"left";xe({type:"mouse",button:B,action:"press",modifier:se(A),...F})},onMouseUp:A=>{if(!je||U.state!=="connected")return;A.preventDefault();let F=bn(A),B=A.button===1?"middle":A.button===2?"right":"left";xe({type:"mouse",button:B,action:"release",modifier:se(A),...F})},onWheel:A=>{if(!je||U.state!=="connected")return;A.preventDefault();let F=bn(A);xe({type:"mouse",button:"wheel",action:A.deltaY<0?"up":"down",modifier:se(A),...F})},onContextMenu:A=>je&&A.preventDefault()})})})})})}),!P&&(0,a.jsxs)("div",{className:"nvim-screen-empty",children:[(0,a.jsx)("strong",{children:wp[U.state]}),(0,a.jsx)("span",{children:U.message??"Oczekiwanie na ekran Neovima lub zapisany stan kroku."})]})]}),(0,a.jsx)("div",{className:"nvim-resize-handle",role:"separator","aria-label":"Zmie\u0144 wysoko\u015B\u0107 panelu Neovima","aria-orientation":"horizontal","aria-valuemin":25,"aria-valuemax":90,"aria-valuenow":Math.round(re),tabIndex:0,title:"Przeci\u0105gnij, aby zmieni\u0107 wysoko\u015B\u0107. Dwuklik: 75%.",onPointerDown:A=>{A.preventDefault(),h.current={y:A.clientY,heightVh:re},A.currentTarget.setPointerCapture(A.pointerId)},onPointerMove:A=>{let F=h.current;if(!F)return;let B=(A.clientY-F.y)/window.innerHeight*100;G(Math.max(25,Math.min(90,F.heightVh+B)))},onPointerUp:A=>{h.current=null,A.currentTarget.hasPointerCapture(A.pointerId)&&A.currentTarget.releasePointerCapture(A.pointerId)},onPointerCancel:()=>{h.current=null},onDoubleClick:()=>G(75),onKeyDown:A=>{if(A.key==="ArrowUp"||A.key==="ArrowDown"){A.preventDefault();let F=A.key==="ArrowUp"?-2:2;G(B=>Math.max(25,Math.min(90,B+F)))}else A.key==="Home"&&(A.preventDefault(),G(75))}})]})}function Rg({column:e,row:t}){return e==="chapter"||e==="task"||e==="version"?(0,a.jsx)("td",{children:(0,a.jsx)("code",{children:t[e]})}):e==="idea"?(0,a.jsx)("td",{dangerouslySetInnerHTML:{__html:t.idea_html}}):e==="status"?(0,a.jsx)("td",{children:(0,a.jsx)("span",{className:"scope-status","data-status":t.status,title:t.status,children:t.status_label})}):(0,a.jsx)("td",{children:t[e]})}function Og({front:e}){let t=e.scope_columns??["chapter","task","idea","priority"];return(0,a.jsxs)(ys,{header:e.header_html,left:e.left_margin_html,right:e.right_margin_html,className:"front-sheet",children:[(0,a.jsxs)("section",{className:"front-scope front-goal",children:[(0,a.jsx)("h2",{children:e.goal_title}),(0,a.jsx)(Yt,{html:e.goal_html})]}),(0,a.jsxs)("section",{className:"front-scope front-card-scope",children:[(0,a.jsx)("h2",{children:e.scope_title}),e.scope_html&&(0,a.jsx)(Yt,{html:e.scope_html}),(0,a.jsx)("div",{className:"scope-table-wrap",children:(0,a.jsxs)("table",{className:"scope-table scope-table--task",children:[(0,a.jsx)("thead",{children:(0,a.jsx)("tr",{children:e.scope_headers.map(n=>(0,a.jsx)("th",{children:n},n))})}),(0,a.jsx)("tbody",{children:e.scope_rows.map(n=>(0,a.jsx)("tr",{className:n.key?"scope-row--key":"",children:t.map(r=>(0,a.jsx)(Rg,{column:r,row:n},r))},`${n.chapter}-${n.task}`))})]})})]})]})}function $g({taskRef:e,step:t}){return(0,a.jsxs)("li",{id:`${e}-${t.id}`,children:[(0,a.jsx)("strong",{children:t.title}),(0,a.jsx)(Yt,{html:t.content_html})]})}function Ig({taskRef:e,block:t}){let n=t.kind==="exercise"?"\u0106wiczenie":"Block";return(0,a.jsxs)("section",{className:`task-block task-block--${t.kind}`,id:`${e}-${t.id}`,"data-stem-nav":"block",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("span",{children:n}),(0,a.jsx)("h4",{children:t.title})]}),(0,a.jsx)(Yt,{html:t.content_html}),t.steps.length>0&&(0,a.jsx)("ol",{className:"block-steps",children:t.steps.map(r=>(0,a.jsx)($g,{taskRef:e,step:r},r.id))})]})}function Fg({task:e}){return e.flow.length?(0,a.jsxs)("article",{className:"task-flow",id:e.ref,"data-stem-nav":"task",children:[(0,a.jsxs)("header",{className:"task-flow-header",children:[(0,a.jsx)("span",{children:e.ref.toUpperCase()}),(0,a.jsx)("h3",{children:e.title}),e.uuid&&(0,a.jsx)("code",{children:e.uuid})]}),e.flow.map(t=>(0,a.jsx)(Ig,{taskRef:e.ref,block:t},t.id)),(0,a.jsxs)("footer",{children:[(0,a.jsx)("strong",{children:"Task acceptance:"})," ",e.criterion]})]}):(0,a.jsxs)("article",{className:"task-legacy",id:e.ref,"data-stem-nav":"task",children:[(0,a.jsx)("strong",{children:e.ref.toUpperCase()}),(0,a.jsx)(Yt,{html:e.prompt_html??""}),(0,a.jsxs)("footer",{children:[(0,a.jsx)("strong",{children:"Task acceptance:"})," ",e.criterion]})]})}var fp={compile:"KOMPILACJA",bss:".BSS",stack:"STOS",registers:"REJESTRY",text:".TEXT"},gp=["#9bcfe2","#c4dfc0","#f4c889","#d2b6dc"];function Dg({config:e,title:t}){let n=e.arena_size??64,r=e.allocations??[5,7],o=e.symbols??[],i=`${e.storage_key??"allocator-memory-flow"}-stage`,[l,s]=(0,N.useState)(()=>Math.min(r.length,Number(localStorage.getItem(i)??0))),[u,d]=(0,N.useState)(o[0]?.id??"");(0,N.useEffect)(()=>localStorage.setItem(i,String(l)),[l,i]);let m=r.slice(0,l).reduce((_,p)=>_+p,0),y=o.find(_=>_.id===u)??o[0],g=Array.from({length:n},(_,p)=>p),f=_=>{let p=0;for(let c=0;co.some(p=>p.area===_));return(0,a.jsxs)("div",{className:"memory-react","aria-label":`Interaktywny diagram: ${t}`,children:[(0,a.jsxs)("header",{children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("small",{children:"INTERAKTYWNY MODEL PAMI\u0118CI"}),(0,a.jsx)("h3",{children:t})]}),(0,a.jsxs)("div",{className:"memory-actions",children:[(0,a.jsx)("button",{"aria-pressed":l===0,onClick:()=>s(0),children:"definicje / reset"}),r.map((_,p)=>(0,a.jsxs)("button",{"aria-pressed":l===p+1,onClick:()=>s(p+1),children:["alloc(",_,")"]},`${_}-${p}`))]})]}),(0,a.jsx)("div",{className:"memory-lanes",children:b.map(_=>(0,a.jsxs)("section",{className:`memory-lane ${_}`,children:[(0,a.jsx)("b",{children:fp[_]}),o.filter(p=>p.area===_).map(p=>(0,a.jsx)("button",{className:u===p.id?"active":"",onClick:()=>d(p.id),children:(0,a.jsx)("code",{children:p.declaration})},p.id))]},_))}),(0,a.jsxs)("div",{className:"arena-wrap",children:[(0,a.jsxs)("div",{className:"arena-label",children:[(0,a.jsxs)("code",{children:["allocbuf[",n,"]"]}),(0,a.jsxs)("span",{children:["u\u017Cyte ",m," B / wolne ",n-m," B"]})]}),(0,a.jsxs)("div",{className:"arena",style:{"--allocp":m,"--arena-size":n},children:[g.map(_=>{let p=f(_);return(0,a.jsx)("i",{style:p>=0?{background:gp[p%gp.length]}:void 0},_)}),(0,a.jsxs)("span",{className:"allocp",children:["allocp \u2191 ",m]})]})]}),(0,a.jsxs)("p",{className:"memory-stage",children:[(0,a.jsxs)("strong",{children:[l+1,"/",r.length+1]})," ",(0,a.jsx)("code",{children:E})]}),y&&(0,a.jsxs)("aside",{className:"memory-inspector",children:[(0,a.jsx)("strong",{children:y.id}),(0,a.jsx)("code",{children:y.declaration}),(0,a.jsx)("span",{children:y.description})]})]})}function jg({config:e,asset:t,progress:n,onSetStatus:r}){let o=e.stages??[],i=`${e.storage_key??t.label}-uml-stage`,l=(0,N.useRef)(null),[s,u]=(0,N.useState)(""),[d,m]=(0,N.useState)(!1),[y,g]=(0,N.useState)(!1),[f,E]=(0,N.useState)(()=>Math.max(0,Math.min(o.length-1,Number(localStorage.getItem(i)??0))));(0,N.useEffect)(()=>localStorage.setItem(i,String(f)),[f,i]),(0,N.useEffect)(()=>{let c=!0;return m(!1),fetch(t.href,{cache:"no-store"}).then(h=>{if(!h.ok)throw new Error(`HTTP ${h.status}`);return h.text()}).then(h=>{let k=new DOMParser().parseFromString(h,"image/svg+xml"),C=k.documentElement;if(C.nodeName.toLowerCase()!=="svg"||k.querySelector("parsererror"))throw new Error("Niepoprawny SVG");k.querySelectorAll("script, foreignObject").forEach(P=>P.remove()),Np(C,t.tile),c&&u(C.outerHTML)}).catch(()=>{c&&m(!0)}),()=>{c=!1}},[t.href,t.tile]),(0,N.useEffect)(()=>{let c=l.current?.querySelector("svg");if(!c)return;c.setAttribute("role","img"),c.setAttribute("aria-label",t.alt),c.querySelectorAll("[data-uml-stage]").forEach(C=>{C.classList.remove("uml-stage-region","uml-stage-region-bg","uml-stage-region-outline","uml-stage-region-active","uml-stage-region-completed"),C.removeAttribute("data-uml-stage"),C.removeAttribute("data-uml-stage-label"),C.removeAttribute("role"),C.removeAttribute("tabindex"),C.removeAttribute("aria-label")});let h=Array.from(c.querySelectorAll("text")),k=Array.from(c.querySelectorAll("rect"));o.forEach((C,P)=>{if(!C.svg_label)return;let T=h.find(G=>(G.textContent??"").trim().startsWith(C.svg_label)),R=Number(T?.getAttribute("y"));if(!T||!Number.isFinite(R))return;let j=k.map(G=>{let U=Number(G.getAttribute("y")),Le=Number(G.getAttribute("height")),Ne=Number(G.getAttribute("width")),Q=G.getAttribute("style")??"",et=Number(Q.match(/stroke-width:\s*([\d.]+)/)?.[1]??G.getAttribute("stroke-width")??0);return{rect:G,y:U,height:Le,width:Ne,strokeWidth:et,area:Ne*Le}}).filter(({y:G,height:U,width:Le,strokeWidth:Ne})=>Number.isFinite(G)&&Number.isFinite(U)&&Number.isFinite(Le)&&Ne>=2&&G<=R&&G+U>=R).sort((G,U)=>G.area-U.area),I=j[0];if(!I)return;let ke=j.filter(({y:G,height:U,width:Le})=>Math.abs(G-I.y)<.1&&Math.abs(U-I.height)<.1&&Math.abs(Le-I.width)<.1),re=!!(C.progress_id&&n?.items?.[C.progress_id]?.status==="approved");ke.forEach(({rect:G},U)=>{let Le=G.getAttribute("fill")!=="none";G.dataset.umlStage=String(P),G.dataset.umlStageLabel=C.label,G.classList.add("uml-stage-region",Le?"uml-stage-region-bg":"uml-stage-region-outline"),G.classList.toggle("uml-stage-region-active",P===f),G.classList.toggle("uml-stage-region-completed",re),U===0&&(G.setAttribute("role","button"),G.setAttribute("tabindex","0"),G.setAttribute("aria-label",`Poka\u017C etap ${C.label}`))})})},[t.alt,n,f,o,s]);let b=(c,h)=>{let k=l.current?.querySelector("svg");if(!k)return;let C=Array.from(k.querySelectorAll(".uml-stage-region-bg[data-uml-stage]")).filter(T=>{let R=T.getBoundingClientRect();return c>=R.left&&c<=R.right&&h>=R.top&&h<=R.bottom}).sort((T,R)=>{let j=T.getBoundingClientRect(),I=R.getBoundingClientRect();return j.width*j.height-I.width*I.height})[0],P=Number(C?.dataset.umlStage);Number.isInteger(P)&&E(P)},_=c=>{if(c.key!=="Enter"&&c.key!==" ")return;let h=c.target,k=Number(h.dataset?.umlStage);Number.isInteger(k)&&(c.preventDefault(),E(k))},p=o[f];return(0,a.jsxs)("div",{className:"uml-react",children:[(0,a.jsxs)("header",{children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("small",{children:"KANONICZNY DIAGRAM UML \xB7 PLANTUML"}),(0,a.jsx)("h3",{children:"Reset i dwa przydzia\u0142y liniowe"})]}),(0,a.jsx)("div",{className:"uml-actions",children:o.map((c,h)=>(0,a.jsxs)("button",{"aria-pressed":f===h,"data-completed":c.progress_id&&n?.items?.[c.progress_id]?.status==="approved"?"true":"false",onClick:()=>E(h),children:[c.progress_id&&n?.items?.[c.progress_id]?.status==="approved"&&(0,a.jsx)("span",{"aria-hidden":"true",children:"\u2713 "}),c.label]},c.id))})]}),(0,a.jsxs)("div",{ref:l,className:"uml-canvas",onClick:c=>b(c.clientX,c.clientY),onKeyDown:_,children:[s?(0,a.jsx)("div",{className:`uml-svg-host${t.tile?" is-tiled":""}`,style:hs(t.tile),dangerouslySetInnerHTML:{__html:s}}):(0,a.jsx)("img",{src:t.href,alt:t.alt}),d&&(0,a.jsx)("span",{className:"uml-inline-warning",children:"Widok statyczny \u2014 nie uda\u0142o si\u0119 wczyta\u0107 interaktywnego SVG."})]}),p&&(0,a.jsxs)("aside",{className:"uml-stage",children:[(0,a.jsx)("strong",{children:p.label}),(0,a.jsx)("span",{children:p.description}),p.code_ref&&(0,a.jsx)("code",{children:p.code_ref})]}),p?.progress_id&&(0,a.jsxs)("footer",{className:"uml-approval",children:[(0,a.jsx)("span",{children:n?.items?.[p.progress_id]?.status==="approved"?"Ten stan jest zatwierdzony i zapisany w JSON-ie zaj\u0119\u0107.":"Kursor wybiera stan; zatwierdzenie zapisuje go w JSON-ie zaj\u0119\u0107."}),(0,a.jsx)("button",{disabled:!n||y,onClick:async()=>{if(!p.progress_id||!n)return;let c=n.items?.[p.progress_id]?.status==="approved";g(!0);try{await r(p.progress_id,c?"pending":"approved")}finally{g(!1)}},children:y?"Zapisywanie\u2026":n?.items?.[p.progress_id]?.status==="approved"?"Cofnij zatwierdzenie":"Zatwierd\u017A stan"})]})]})}function Ug({config:e,asset:t,progress:n,onSetStatus:r,continuation:o}){let i=e.phases??[],l=i.flatMap(x=>x.steps.map(S=>({phase:x,step:S}))),s=`${e.storage_key??t.label}-uml-step`,u=`${e.storage_key??t.label}-navigation-level`,d=(0,N.useRef)(null),m=(0,N.useRef)(null),y=(0,N.useRef)(new Map),g=(0,N.useRef)(null),f=(0,N.useRef)(0),E=(0,N.useRef)(!1),b=(0,N.useRef)(null),_=(0,N.useRef)(!0),[p,c]=(0,N.useState)(""),[h,k]=(0,N.useState)(!1),[C,P]=(0,N.useState)(!1),[T,R]=(0,N.useState)(null),[j,I]=(0,N.useState)(null),[ke,re]=(0,N.useState)(!1),[G,U]=(0,N.useState)(""),[Le,Ne]=(0,N.useState)(!1),[Q,et]=(0,N.useState)(null),[Ge,je]=(0,N.useState)([]),[me,Dn]=(0,N.useState)(0),[xe,bn]=(0,N.useState)(()=>Math.max(0,Math.min(l.length-1,Number(localStorage.getItem(s)??0)))),[se,A]=(0,N.useState)(()=>{let x=localStorage.getItem(u);return x==="card"||x==="task"||x==="block"||x==="phase"||x==="step"||x==="snapshot"?x:"step"});(0,N.useEffect)(()=>localStorage.setItem(s,String(xe)),[xe,s]),(0,N.useEffect)(()=>localStorage.setItem(u,se),[se,u]),(0,N.useEffect)(()=>{let x=!0;return k(!1),fetch(t.href,{cache:"no-store"}).then(S=>{if(!S.ok)throw new Error(`HTTP ${S.status}`);return S.text()}).then(S=>{let M=new DOMParser().parseFromString(S,"image/svg+xml"),O=M.documentElement;if(O.nodeName.toLowerCase()!=="svg"||M.querySelector("parsererror"))throw new Error("Niepoprawny SVG");M.querySelectorAll("script, foreignObject").forEach(v=>v.remove()),Np(O,t.tile),x&&c(O.outerHTML)}).catch(()=>{x&&k(!0)}),()=>{x=!1}},[t.href,t.tile]),(0,N.useEffect)(()=>{let x=!0,S=fs(t,e);if(U("Wczytywanie uk\u0142adu\u2026"),Ne(!1),!t.source_href)return R(S),I(S),U("Brak \u017Ar\xF3d\u0142a PlantUML \u2014 zapis wy\u0142\u0105czony."),()=>{x=!1};let M=t.source_href.replace(/\.puml(?:\?.*)?$/,".layout.json");return fetch(`/api/uml-layout?source=${encodeURIComponent(t.source_href)}`,{cache:"no-store"}).then(async O=>{if(!O.ok)throw new Error(`HTTP ${O.status}`);return O.json()}).catch(async()=>{let O=await fetch(M,{cache:"no-store"});return O.ok?{layout:await O.json(),source_digest:"",stale:!1}:{layout:null,source_digest:"",stale:!1}}).then(O=>{if(!x)return;let v=O.layout??fs(t,e,O.source_digest??"");R(v),I(v),re(!1),Ne(!!O.stale),U(O.layout?"Uk\u0142ad wczytany z JSON.":"Uk\u0142ad PlantUML \u2014 brak r\u0119cznych zmian.")}).catch(O=>{x&&(R(S),I(S),U(`Nie wczytano uk\u0142adu: ${O instanceof Error?O.message:String(O)}`))}),()=>{x=!1}},[t.source_href,t.label,e.block?.id,e.task?.id]),(0,N.useEffect)(()=>{let x=m.current?.querySelector("svg");if(!x||!j)return;fg(x);let S=new Map(l.map(({step:L})=>[String(L.number).padStart(2,"0"),L.id])),M=gg(x,S),O=new Map(M.map(L=>[L.id,L]));y.current=O;let v=M.map(L=>L.id);je(L=>L.join("\0")===v.join("\0")?L:v),M.forEach(L=>{let H=j.elements[L.id];H&&hg(L,H)});let w=x.viewBox.baseVal;(j.canvas.width<=0||j.canvas.height<=0)&&I(L=>L&&{...L,canvas:{...L.canvas,width:w?.width||Number(x.getAttribute("width")?.replace("px",""))||0,height:w?.height||Number(x.getAttribute("height")?.replace("px",""))||0}})},[l,p,j]),(0,N.useEffect)(()=>{let x=m.current?.querySelector("svg");if(!x)return;let S=e.kind==="uml-class"&&x.contains(document.activeElement);x.setAttribute("role","img"),x.setAttribute("aria-label",t.alt),x.classList.toggle("uml-class-svg",e.kind==="uml-class"),x.classList.toggle("uml-class-svg-active",e.kind==="uml-class"&&se!=="card"),x.querySelectorAll(".uml-step-hit, .uml-class-focus-region").forEach(K=>K.remove()),x.querySelectorAll("[data-uml-step-element]").forEach(K=>{K.classList.remove("uml-step-element","uml-step-element-active","uml-step-element-completed","uml-step-element-tone-a","uml-step-element-tone-b"),K.removeAttribute("data-uml-step-element"),K.removeAttribute("data-uml-step-claim-area")});let M=Array.from(x.querySelectorAll("text")),O=Array.from(x.querySelectorAll("line")),v=Array.from(x.querySelectorAll("polygon"));if(e.kind==="uml-class"){let K=V=>V?mg(V):null,X=V=>{if(!V.length)return null;let oe=Math.min(...V.map(J=>J.x)),ct=Math.min(...V.map(J=>J.y)),Ue=Math.max(...V.map(J=>J.x+J.width)),ue=Math.max(...V.map(J=>J.y+J.height));return{x:oe,y:ct,width:Ue-oe,height:ue-ct}},D=Array.from(x.querySelectorAll("g > *")),Z=Array.from(x.querySelectorAll("[id]"));l.forEach(({step:V},oe)=>{let ct=V.svg_label??String(V.number).padStart(2,"0"),Ue=M.find(ge=>(ge.textContent??"").trim().startsWith(ct));if(!Ue)return;let ue=K(Ue);if(!ue)return;let J=Number(Ue.getAttribute("y")),Re=M.filter(ge=>Number.isFinite(J)&&Math.abs(Number(ge.getAttribute("y"))-J)<.8),Ve=V.svg_target?Z.find(ge=>ge.id===V.svg_target||ge.id.startsWith(`${V.svg_target}-`))??null:null,dt=K(Ve)??X(Re.map(ge=>K(ge)).filter(ge=>ge!==null))??ue,vr=Ve?.tagName.toLowerCase()==="rect",vs=Ve?[Ve,Ue]:Re;vr&&D.forEach(ge=>{let Xt=K(ge);if(!Xt||ge===Ve)return;let bs=Xt.x+Xt.width/2,ws=Xt.y+Xt.height/2;bs>=dt.x&&bs<=dt.x+dt.width&&ws>=dt.y&&ws<=dt.y+dt.height&&vs.push(ge)});let Ap=!!(V.progress_id&&n?.items?.[V.progress_id]?.status==="approved"),xs=Math.max(1,dt.width*dt.height);vs.forEach(ge=>{let Xt=Number(ge.dataset.umlStepClaimArea);Number.isFinite(Xt)&&Xt{let D=K.svg_label??String(K.number).padStart(2,"0"),Z=M.find(J=>(J.textContent??"").trim()===D),V=Number(Z?.getAttribute("y"));if(!Z||!Number.isFinite(V))return;let oe=V+5,ct=!!(K.progress_id&&n?.items?.[K.progress_id]?.status==="approved"),Ue=M.filter(J=>Math.abs(Number(J.getAttribute("y"))-V)<.8);Ue.push(...O.filter(J=>{let Re=Number(J.getAttribute("y1")),Ve=Number(J.getAttribute("y2"));return Number.isFinite(Re)&&Number.isFinite(Ve)&&Math.abs(Re-Ve)<.8&&Math.abs((Re+Ve)/2-oe)<=14})),Ue.push(...v.filter(J=>{let Re=(J.getAttribute("points")??"").trim().split(/\s+/).map(vr=>Number(vr.split(",")[1])).filter(Number.isFinite);if(!Re.length)return!1;let Ve=Math.min(...Re),dt=Math.max(...Re);return dt-Ve<=16&&Math.abs((Ve+dt)/2-oe)<=14})),Ue.forEach(J=>{J.dataset.umlStepElement=String(X),J.classList.add("uml-step-element"),J.classList.toggle("uml-step-element-active",X===xe),J.classList.toggle("uml-step-element-completed",ct)});let ue=document.createElementNS("http://www.w3.org/2000/svg","rect");ue.setAttribute("x",String(L)),ue.setAttribute("y",String(V-12)),ue.setAttribute("width",String(H)),ue.setAttribute("height","31"),ue.setAttribute("fill","transparent"),ue.setAttribute("pointer-events","all"),ue.setAttribute("role","button"),ue.setAttribute("tabindex","0"),ue.setAttribute("aria-label",`Poka\u017C krok ${String(K.number).padStart(2,"0")}: ${K.label}`),ue.dataset.umlStep=String(X),ue.classList.add("uml-step-hit"),ue.classList.toggle("uml-step-hit-active",se!=="card"&&X===xe),ue.classList.toggle("uml-step-hit-completed",ct),x.appendChild(ue)})},[t.alt,e.kind,l,se,n,xe,p,j]),(0,N.useEffect)(()=>{let x=m.current?.querySelector("svg");if(x&&(x.querySelectorAll(".uml-layout-hit,.uml-layout-resize").forEach(S=>S.remove()),x.classList.toggle("uml-layout-editing",C),!(!C||!j)))for(let S of y.current.values()){let M=j.elements[S.id]??po(S),O=document.createElementNS("http://www.w3.org/2000/svg","rect");O.setAttribute("x",String(M.x)),O.setAttribute("y",String(M.y)),O.setAttribute("width",String(Math.max(12,M.width))),O.setAttribute("height",String(Math.max(12,M.height))),O.setAttribute("tabindex","0"),O.setAttribute("role","button"),O.setAttribute("aria-label",`Edytuj element UML ${S.id}`),O.dataset.umlLayoutId=S.id,O.dataset.umlLayoutAction="move",O.classList.add("uml-layout-hit"),S.id===Q&&O.classList.add("is-selected");let v=document.createElementNS("http://www.w3.org/2000/svg","title");if(v.textContent=`${S.id} \xB7 przeci\u0105gnij, aby zmieni\u0107 po\u0142o\u017Cenie`,O.appendChild(v),x.appendChild(O),S.id===Q){let w=Math.max(8,Math.min(14,Math.min(M.width,M.height)*.1)),L=document.createElementNS("http://www.w3.org/2000/svg","rect");L.setAttribute("x",String(M.x+M.width-w/2)),L.setAttribute("y",String(M.y+M.height-w/2)),L.setAttribute("width",String(w)),L.setAttribute("height",String(w)),L.dataset.umlLayoutId=S.id,L.dataset.umlLayoutAction="resize",L.classList.add("uml-layout-resize"),x.appendChild(L)}}},[p,C,j,Q,Ge]),(0,N.useEffect)(()=>{C&&(!Q||!y.current.has(Q))&&et(Ge[0]??null)},[C,Ge,Q]),(0,N.useEffect)(()=>{if(me===0||f.current===me)return;let x=!1,S=0,M=v=>{if(x)return;let w=m.current?.querySelector(`.uml-step-hit[data-uml-step="${xe}"]`);if(!w)return;if(document.querySelector(".viewer-chrome")?.classList.contains("is-nvim-fit")){f.current=me;return}let H=Sp(w);if(!H){f.current=me;return}let K=sg(w);if(!K){let Z=dg(w,H),V=Z===0?up(w,H):0,oe=Z===0?sp(w,V):Z;if(vFn){S=window.requestAnimationFrame(()=>M(v+1));return}f.current=me;return}let X=up(w,K);if(Math.abs(X)<=Fn){f.current=me;return}let D=sp(w,X);if(vFn){S=window.requestAnimationFrame(()=>M(v+1));return}f.current=me},O=window.requestAnimationFrame(()=>M(0));return()=>{x=!0,window.cancelAnimationFrame(O),window.cancelAnimationFrame(S)}},[me,xe,p]);let F=(x,S,M=se,O=!0)=>{let v={task:e.task??null,block:e.block??null,phase:{id:x.phase.id,label:x.phase.label},step:x.step,focusLevel:M,activate:S&&document.documentElement.dataset.nvimSyncMode==="on"},w=()=>{window.dispatchEvent(new CustomEvent("stem:nvim-step",{detail:v}))};if(!O){w();return}let L=fetch("/api/navigation/current",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({task:v.task,block:v.block,phase:v.phase,step:{id:v.step.id,number:v.step.number,label:v.step.label,mode:v.step.mode??(v.step.snapshot_ref?"RUN":"CODE"),code_ref:v.step.code_ref??null,event_id:v.step.event_id??null,strategy_ref:v.step.strategy_ref??null},snapshot_ref:v.step.snapshot_ref??null,focus_level:v.focusLevel,sync_requested:!!v.activate,actor:document.documentElement.dataset.cardClientId??"browser"})});v.activate?L.then(w,w):(w(),L.catch(()=>{}))},B=(x,S=!1,M=se,O=!0)=>{let v=Math.max(0,Math.min(l.length-1,x)),w=l[v];if(w){if(A(M),v===xe){F(w,S,M,O);return}Dn(L=>L+1),E.current=S,b.current=M,_.current=O,bn(v)}},te=(x,S)=>{let M=m.current?.querySelector("svg"),O=M?.getScreenCTM();if(!M||!O)return null;let v=M.createSVGPoint();return v.x=x,v.y=S,v.matrixTransform(O.inverse())},at=x=>{if(!C||!j)return;let S=x.target?.closest(".uml-layout-hit[data-uml-layout-id],.uml-layout-resize[data-uml-layout-id]"),M=S?.dataset.umlLayoutId,O=M?y.current.get(M):null,v=te(x.clientX,x.clientY);if(!M||!O||!v)return;x.preventDefault(),x.stopPropagation();let w=j.elements[M]??po(O);g.current={id:M,action:S?.dataset.umlLayoutAction==="resize"?"resize":"move",pointerId:x.pointerId,startX:v.x,startY:v.y,initial:w},et(M),I(L=>L&&{...L,elements:{...L.elements,[M]:w}}),x.currentTarget.setPointerCapture(x.pointerId)},zt=x=>{let S=g.current;if(!S||S.pointerId!==x.pointerId)return;let M=te(x.clientX,x.clientY);if(!M)return;x.preventDefault();let O=M.x-S.startX,v=M.y-S.startY,w=S.action==="resize"?{...S.initial,width:Math.max(24,S.initial.width+O),height:Math.max(18,S.initial.height+v)}:{...S.initial,x:S.initial.x+O,y:S.initial.y+v};I(L=>L&&{...L,elements:{...L.elements,[S.id]:w}}),re(!0)},Ee=x=>{let S=g.current;!S||S.pointerId!==x.pointerId||(g.current=null,x.currentTarget.hasPointerCapture(x.pointerId)&&x.currentTarget.releasePointerCapture(x.pointerId))},ne=(x,S)=>{let M=y.current.get(x);M&&(I(O=>{if(!O)return O;let v=O.elements[x]??po(M);return{...O,elements:{...O.elements,[x]:S(v)}}}),re(!0))},st=async()=>{if(!j||!t.source_href)return;let x=Object.fromEntries(Array.from(y.current.values()).map(M=>[M.id,j.elements[M.id]??po(M)])),S={...j,elements:x};U("Zapisywanie uk\u0142adu\u2026");try{let M=await fetch("/api/uml-layout",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({source:t.source_href,layout:S,actor:document.documentElement.dataset.cardClientId??"browser"})});if(!M.ok)throw new Error((await M.json().catch(()=>null))?.message??`HTTP ${M.status}`);let O=await M.json();R(O.layout),I(O.layout),re(!1),Ne(!1),U(`Zapisano ${Object.keys(O.layout.elements).length} element\xF3w w JSON.`)}catch(M){U(`B\u0142\u0105d zapisu: ${M instanceof Error?M.message:String(M)}`)}},Ye=()=>{T&&(I(T),re(!1),U("Przywr\xF3cono ostatnio zapisany uk\u0142ad."))},wn=async()=>{if(!(!t.source_href||!window.confirm("Usun\u0105\u0107 r\u0119czny uk\u0142ad i wr\xF3ci\u0107 do geometrii PlantUML?"))){U("Resetowanie uk\u0142adu\u2026");try{let x=await fetch(`/api/uml-layout?source=${encodeURIComponent(t.source_href)}&actor=${encodeURIComponent(document.documentElement.dataset.cardClientId??"browser")}`,{method:"DELETE"});if(!x.ok)throw new Error(`HTTP ${x.status}`);let S=fs(t,e,T?.source_digest??"");R(S),I(S),re(!1),et(null),U("Przywr\xF3cono automatyczny uk\u0142ad PlantUML.")}catch(x){U(`B\u0142\u0105d resetu: ${x instanceof Error?x.message:String(x)}`)}}},ie=(x,S)=>{if(C)return;let M=Array.from(m.current?.querySelectorAll(".uml-step-hit[data-uml-step]")??[]).filter(v=>{let w=v.getBoundingClientRect();return x>=w.left&&x<=w.right&&S>=w.top&&S<=w.bottom}).sort((v,w)=>{let L=v.getBoundingClientRect(),H=w.getBoundingClientRect();return Math.abs(S-(L.top+L.bottom)/2)-Math.abs(S-(H.top+H.bottom)/2)}),O=Number(M[0]?.dataset.umlStep);Number.isInteger(O)&&B(O,!1,"step")},q=x=>{if(C||x.key!=="Enter"&&x.key!==" ")return;let S=x.target,M=Number(S.dataset?.umlStep);Number.isInteger(M)&&(x.preventDefault(),B(M,x.key==="Enter","step"))},bt=x=>{let S=l.findIndex(M=>M.phase.id===x.id);S>=0&&B(S,!1,"phase")},fe=l[xe];if((0,N.useEffect)(()=>{fe&&(F(fe,E.current,b.current??se,_.current),E.current=!1,b.current=null,_.current=!0)},[fe?.phase.id,fe?.step.id,e.block]),(0,N.useEffect)(()=>{let x=S=>{let M=S.detail;if(!M||e.task?.id&&M.task.id!==e.task.id||e.block?.id&&M.block.id!==e.block.id)return;let O=l.findIndex(v=>v.phase.id===M.phase.id&&v.step.id===M.step.id);if(O<0){A("card");return}B(O,!1,M.focus_level,!1)};return window.addEventListener("stem:navigation-command",x),()=>window.removeEventListener("stem:navigation-command",x)},[e.block?.id,e.task?.id,l,se,xe]),(0,N.useEffect)(()=>{let x=S=>{if(S.metaKey||C||S.target?.closest("input, textarea, select, [contenteditable='true']"))return;let O=d.current;if(!O)return;let v=Array.from(document.querySelectorAll("[data-stem-nav='uml-block']")),w=window.innerHeight/2;if(v.sort((D,Z)=>{let V=D.getBoundingClientRect(),oe=Z.getBoundingClientRect();return Math.abs((V.top+V.bottom)/2-w)-Math.abs((oe.top+oe.bottom)/2-w)})[0]!==O)return;if(S.key==="Enter"&&S.ctrlKey&&!S.altKey&&!S.shiftKey){if(!fe?.step.progress_id||!n)return;S.preventDefault(),S.stopPropagation();let D=n.items?.[fe.step.progress_id]?.status==="approved";r(fe.step.progress_id,D?"pending":"approved");return}if(S.key==="Enter"&&!S.altKey&&!S.shiftKey){if(!fe)return;S.preventDefault(),S.stopPropagation(),F(fe,!0,se);return}let H=["card","task","block","phase","step","snapshot"];if((S.key==="ArrowLeft"||S.key==="ArrowRight"||S.key==="Escape")&&!S.altKey&&!S.ctrlKey&&!S.shiftKey){let D=S.key==="ArrowRight"?1:-1,Z=H[Math.max(0,Math.min(H.length-1,H.indexOf(se)+D))];S.preventDefault(),S.stopPropagation(),A(Z),fe&&F(fe,!1,Z);return}if(S.key!=="ArrowUp"&&S.key!=="ArrowDown"||se==="card"&&!S.altKey&&!S.ctrlKey&&!S.shiftKey)return;let K=S.key==="ArrowUp"?-1:1,X=se;if(S.altKey&&S.shiftKey&&!S.ctrlKey)X="snapshot";else if(S.ctrlKey&&S.shiftKey&&!S.altKey)X="step";else if(S.altKey&&!S.ctrlKey&&!S.shiftKey)X="task";else if(S.ctrlKey&&!S.altKey&&!S.shiftKey)X="block";else if(S.shiftKey&&!S.altKey&&!S.ctrlKey)X="phase";else if(S.altKey||S.ctrlKey||S.shiftKey)return;S.preventDefault(),S.stopPropagation(),fetch("/api/navigation/move",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({level:X,delta:K,sync_requested:!1,actor:document.documentElement.dataset.cardClientId??"browser"})}).then(D=>D.ok?D.json():Promise.reject(new Error(`HTTP ${D.status}`))).then(D=>{D.current&&window.dispatchEvent(new CustomEvent("stem:navigation-command",{detail:D.current}))}).catch(()=>{})};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[fe,l,se,r,n,C]),!fe)return null;let{phase:Qt,step:jn}=fe,qt=l.filter(x=>x.phase.id===Qt.id),ho=e.block?.label.match(/^A[1-8]\b/)?.[0]??"UML",yo=(e.title??e.block?.label??t.caption).replace(/^A[1-8]\s*[·—:-]\s*/i,""),Un=Q?y.current.get(Q)??null:null,ut=Un?j?.elements[Un.id]??po(Un):null;return(0,a.jsxs)("div",{ref:d,className:"uml-react uml-snapshot-react","data-stem-nav":"uml-block","data-task-id":e.task?.id,"data-block-id":e.block?.id,"data-navigation-level":se,children:[(0,a.jsxs)("header",{className:"uml-snapshot-header",children:[(0,a.jsxs)("div",{className:"uml-header-first-line",children:[(0,a.jsxs)("h3",{children:[(0,a.jsx)("span",{children:ho})," \u2014 ",yo,t.tile&&(0,a.jsxs)("small",{className:"uml-tile-part",children:["cz\u0119\u015B\u0107 ",t.tile.index,"/",t.tile.count," \xB7 r",t.tile.row," c",t.tile.column]})]}),(0,a.jsxs)("div",{className:"uml-header-navigation",children:[(0,a.jsx)(_p,{continuation:o}),t.source_href&&(0,a.jsx)("button",{className:`uml-edit-toggle${C?" is-active":""}`,"aria-pressed":C,title:"R\u0119czna edycja po\u0142o\u017Cenia i parametr\xF3w blok\xF3w UML",onClick:()=>P(x=>!x),children:C?"ZAMKNIJ EDIT":"EDIT"}),(0,a.jsx)("div",{className:"uml-phase-actions","aria-label":"Fazy diagramu",children:i.map(x=>(0,a.jsx)("button",{"aria-pressed":Qt.id===x.id,onClick:()=>bt(x),children:x.label},x.id))}),(0,a.jsx)("div",{className:"uml-step-actions","aria-label":`Checkpointy fazy ${Qt.label}`,children:qt.map(x=>{let S=l.indexOf(x),M=!!(x.step.progress_id&&n?.items?.[x.step.progress_id]?.status==="approved");return(0,a.jsx)("button",{"aria-label":`Krok ${x.step.number}: ${x.step.label}`,"aria-pressed":se!=="card"&&S===xe,"data-completed":M?"true":"false","data-mode":x.step.mode??"RUN",title:`${x.step.mode??"RUN"} \xB7 ${x.step.label}`,onClick:()=>B(S),children:String(x.step.number).padStart(2,"0")},x.step.id)})})]})]}),e.block?.description&&(0,a.jsx)("p",{className:"uml-header-description",children:e.block.description})]}),(0,a.jsxs)("div",{className:"uml-snapshot-layout",children:[(0,a.jsxs)("div",{ref:m,className:`uml-canvas uml-step-canvas${C?" is-layout-editing":""}`,onClick:x=>ie(x.clientX,x.clientY),onKeyDown:q,onPointerDown:at,onPointerMove:zt,onPointerUp:Ee,onPointerCancel:Ee,children:[p?(0,a.jsx)("div",{className:`uml-svg-host${t.tile?" is-tiled":""}`,style:hs(t.tile),dangerouslySetInnerHTML:{__html:p}}):(0,a.jsx)("img",{src:t.href,alt:t.alt}),h&&(0,a.jsx)("span",{className:"uml-inline-warning",children:"Widok statyczny \u2014 wybierz krok przyciskiem nad diagramem."})]}),C&&j&&(0,a.jsxs)("aside",{className:"uml-layout-editor","aria-label":"Edytor uk\u0142adu UML",children:[(0,a.jsxs)("div",{className:"uml-layout-editor-title",children:[(0,a.jsx)("strong",{children:"UML layout"}),(0,a.jsx)("span",{children:ke?"niezapisane zmiany":"zapisany"}),Le&&(0,a.jsx)("b",{children:"\u0179r\xF3d\u0142o PlantUML zmieni\u0142o si\u0119"})]}),(0,a.jsxs)("label",{children:["Element",(0,a.jsx)("select",{value:Q??"",onChange:x=>et(x.target.value||null),children:Ge.map(x=>(0,a.jsx)("option",{value:x,children:x},x))})]}),Q&&ut&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"uml-layout-number-grid",children:["x","y","width","height"].map(x=>(0,a.jsxs)("label",{children:[x,(0,a.jsx)("input",{type:"number",step:"1",min:x==="width"||x==="height"?12:void 0,value:Math.round(ut[x]*100)/100,onChange:S=>ne(Q,M=>({...M,[x]:Number(S.target.value)}))})]},x))}),(0,a.jsxs)("label",{className:"uml-layout-editor-text",children:["Tekst bloku \u2014 jeden wiersz SVG na lini\u0119",(0,a.jsx)("textarea",{rows:Math.max(3,Math.min(10,ut.text?.lines?.length??3)),value:(ut.text?.lines??[]).join(` +`),onChange:x=>ne(Q,S=>({...S,text:{...S.text,title:x.target.value.split(` +`)[0]??"",description:x.target.value.split(` +`).slice(1).join(` +`),lines:x.target.value.split(` +`)}}))})]}),(0,a.jsxs)("div",{className:"uml-layout-style-grid",children:[(0,a.jsxs)("label",{children:["Font",(0,a.jsx)("input",{type:"number",min:"4",max:"96",step:"0.5",value:ut.text?.font_size??12,onChange:x=>ne(Q,S=>({...S,text:{...S.text,font_size:Number(x.target.value)}}))})]}),(0,a.jsxs)("label",{children:["Wyr\xF3wnanie",(0,a.jsxs)("select",{value:ut.text?.align??"left",onChange:x=>ne(Q,S=>({...S,text:{...S.text,align:x.target.value}})),children:[(0,a.jsx)("option",{value:"left",children:"left"}),(0,a.jsx)("option",{value:"center",children:"center"}),(0,a.jsx)("option",{value:"right",children:"right"})]})]}),(0,a.jsxs)("label",{children:["Wype\u0142nienie",(0,a.jsx)("input",{type:"color",value:ut.style?.fill??"#edf6fa",onChange:x=>ne(Q,S=>({...S,style:{...S.style,fill:x.target.value}}))})]}),(0,a.jsxs)("label",{children:["Obramowanie",(0,a.jsx)("input",{type:"color",value:ut.style?.stroke??"#2c7794",onChange:x=>ne(Q,S=>({...S,style:{...S.style,stroke:x.target.value}}))})]}),(0,a.jsxs)("label",{children:["Linia",(0,a.jsx)("input",{type:"number",min:"0.5",max:"12",step:"0.25",value:ut.style?.stroke_width??1.5,onChange:x=>ne(Q,S=>({...S,style:{...S.style,stroke_width:Number(x.target.value)}}))})]})]})]}),(0,a.jsxs)("div",{className:"uml-layout-editor-actions",children:[(0,a.jsx)("button",{className:"is-primary",disabled:!ke,onClick:()=>void st(),children:"Zapisz uk\u0142ad"}),(0,a.jsx)("button",{disabled:!ke,onClick:Ye,children:"Cofnij zmiany"}),(0,a.jsx)("button",{className:"is-danger",onClick:()=>void wn(),children:"Reset PlantUML"})]}),(0,a.jsx)("output",{children:G})]})]})]})}function Vg(e){return e.config.phases?.length?(0,a.jsx)(Ug,{...e}):(0,a.jsx)(jg,{...e})}function Bg({asset:e,continuation:t}){let n=e.tile;if(!n)return(0,a.jsx)("img",{src:e.href,alt:e.alt,loading:"lazy"});let r=e.diagram_block_label?.match(/^A[1-8]\b/)?.[0]??e.diagram_title?.match(/^A[1-8]\b/)?.[0]??e.caption.match(/^A[1-8]\b/)?.[0]??"UML",o=(e.diagram_title??e.caption).replace(/^A[1-8]\s*[·—:-]\s*/i,"");return(0,a.jsxs)("div",{className:"uml-react uml-snapshot-react uml-static-tile",children:[(0,a.jsxs)("header",{className:"uml-snapshot-header",children:[(0,a.jsxs)("div",{className:"uml-header-first-line",children:[(0,a.jsxs)("h3",{children:[(0,a.jsx)("span",{children:r})," \u2014 ",o,(0,a.jsxs)("small",{className:"uml-tile-part",children:["cz\u0119\u015B\u0107 ",n.index,"/",n.count," \xB7 r",n.row," c",n.column]})]}),(0,a.jsxs)("div",{className:"uml-header-navigation",children:[(0,a.jsx)(_p,{continuation:t}),(0,a.jsx)("div",{className:"uml-phase-actions","aria-label":"Fazy logicznego diagramu",children:(e.diagram_phase_labels??[]).map(i=>(0,a.jsx)("span",{children:i},i))})]})]}),e.diagram_description&&(0,a.jsx)("p",{className:"uml-header-description",children:e.diagram_description})]}),(0,a.jsx)("div",{className:"uml-snapshot-layout",children:(0,a.jsx)("div",{className:"uml-canvas uml-step-canvas",children:(0,a.jsx)("div",{className:"uml-svg-host is-tiled is-static",style:hs(n),children:(0,a.jsx)("div",{className:"uml-static-crop",style:{width:`${n.width}px`,height:`${n.height}px`},children:(0,a.jsx)("img",{src:e.href,alt:e.alt,style:{width:`${n.full_width}px`,height:`${n.full_height}px`,transform:`translate(${-(n.x-n.full_x)}px, ${-(n.y-n.full_y)}px)`}})})})})})]})}function Hg({asset:e,number:t,progress:n,onSetStatus:r,continuation:o}){let i=e.interactive?.kind,l=!!i;return(0,a.jsxs)("figure",{className:`card-asset asset-${e.kind} ${l?"asset-interactive":""}`,id:e.label.replace(":","-"),children:[i==="uml-sequence"||i==="uml-class"?(0,a.jsx)(Vg,{config:e.interactive,asset:e,progress:n,onSetStatus:r,continuation:o}):i==="allocator-memory-flow"?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(Dg,{config:e.interactive,title:e.caption}),(0,a.jsx)("img",{className:"asset-static-fallback",src:e.href,alt:e.alt})]}):e.tile?(0,a.jsx)(Bg,{asset:e,continuation:o}):(0,a.jsx)("a",{href:e.href,target:"_blank",rel:"noopener",children:(0,a.jsx)("img",{src:e.href,alt:e.alt,loading:"lazy",style:{width:`${e.width*100}%`}})}),e.source_href&&(0,a.jsx)("a",{className:"asset-source-link",href:e.source_href,target:"_blank",rel:"noopener",children:"\u0179r\xF3d\u0142o PlantUML"}),(0,a.jsxs)("figcaption",{children:["Rys. ",e.figure_number??t,". ",e.caption]})]})}function Kg({steps:e,progress:t,onCycle:n}){if(!e.length)return null;let r={pending:"\u25CB niezatwierdzony",approved:"\u25CF zatwierdzony"};return(0,a.jsx)("div",{className:"step-map",children:e.map(o=>{let i=t?.items?.[o.id]?.status??"pending";return(0,a.jsxs)("div",{className:`step-row ${i==="approved"?"lesson-progress-completed":""}`,children:[(0,a.jsx)("button",{className:"lesson-progress-control","data-status":i,onClick:()=>n(o.id,i),disabled:!t,children:r[i]}),(0,a.jsx)("span",{className:"step-title",children:o.title})]},o.id)})})}function Wg({section:e,progress:t,onCycle:n,onSetStatus:r,figureOffset:o}){let i=vg(e);return(0,a.jsxs)(ys,{header:e.header_html,left:e.left_margin_html,right:e.right_margin_html,className:`section-sheet${e.assets.length?" section-sheet--asset":""} sheet--${e.page_orientation||"portrait"}`,children:[(0,a.jsx)("div",{id:e.id,className:"section-anchor"}),e.show_heading&&(0,a.jsxs)("h2",{className:"section-heading",children:[(0,a.jsx)("span",{className:"section-index",children:e.index}),(0,a.jsx)("span",{className:"section-title",children:e.title})]}),(0,a.jsx)(Kg,{steps:e.steps,progress:t,onCycle:n}),e.content_html&&(0,a.jsx)(Yt,{html:e.content_html}),(0,a.jsx)("div",{className:"tasks",children:e.tasks.map(l=>(0,a.jsx)(Fg,{task:l},l.ref))}),e.assets.map((l,s)=>(0,a.jsx)(Hg,{asset:l,number:o+s+1,progress:t,onSetStatus:r,continuation:i},l.label)),e.tasks.map(l=>l.conclusion_html&&(0,a.jsxs)("aside",{className:"task-conclusion",children:[(0,a.jsx)("strong",{children:"WNIOSEK"}),(0,a.jsx)(Yt,{html:l.conclusion_html})]},`${l.ref}-conclusion`))]})}function Gg({progress:e,error:t}){if(!e?.summary&&!t)return null;let n=e?.summary.counts;return(0,a.jsxs)("section",{className:"lesson-progress-topbar","aria-label":"Przebieg zaj\u0119\u0107",children:[(0,a.jsx)("strong",{children:"PRZEBIEG"}),n&&(0,a.jsxs)("output",{title:"Zatwierdzone kroki",children:[n.approved,"/",e.summary.total]}),t&&(0,a.jsx)("span",{className:"lesson-progress-error",title:t,children:"!"}),(0,a.jsx)("a",{href:"/api/report/teams.md",target:"_blank",rel:"noopener",title:"Otw\xF3rz raport do Teams",children:"Teams"}),(0,a.jsx)("a",{href:"/api/report/lesson.html",target:"_blank",rel:"noopener",title:"Otw\xF3rz \u015Blad lekcji ze zrzutami",children:"\u015Alad"})]})}var In=[{id:"u01",name:"Alicja Nowak",laptop:3,connection:"online",sync:"follow",position:"A5\xB708"},{id:"u02",name:"Bartosz Kowalski",laptop:7,connection:"online",sync:"follow",position:"A5\xB708"},{id:"u03",name:"Celina Wi\u015Bniewska",laptop:11,connection:"away",sync:"paused",position:"A5\xB705"},{id:"u04",name:"Dawid W\xF3jcik",laptop:14,connection:"offline",sync:"follow",position:"\u2014"},{id:"u05",name:"Emilia Kami\u0144ska",laptop:18,connection:"online",sync:"local",position:"A3\xB702"},{id:"u06",name:"Filip Lewandowski",laptop:22,connection:"error",sync:"follow",position:"A5\xB706"},{id:"u07",name:"Gabriela Zieli\u0144ska",laptop:24,connection:"online",sync:"follow",position:"A5\xB708"}];function Yg(e){let t=new Map,n=(r,o)=>{let i=r.trim()||"task",l=t.get(i);return l||(l={id:i,label:o.trim()||i.toUpperCase(),blocks:[],exercises:[]},t.set(i,l)),l};for(let r of e.sections){for(let o of r.assets){let i=o.interactive;if(!i?.task||!i.block)continue;let l=n(i.task.id,i.task.label),s=`diagram:${i.block.id}`,u=l.blocks.find(d=>d.id===s);u||(u={id:s,label:i.block.label,kind:"diagram",phases:[],steps:[]},l.blocks.push(u));for(let d of i.phases??[]){let m=u.phases.find(y=>y.id===d.id);m||(m={...d,steps:[]},u.phases.push(m));for(let y of d.steps)m.steps.some(g=>g.id===y.id)||m.steps.push(y)}}for(let o of r.tasks){let i=n(o.ref,o.title);i.label=o.title||i.label;for(let l of o.flow){if(l.kind==="exercise"){i.exercises.some(u=>u.id===l.id)||i.exercises.push(l);continue}let s=`flow:${l.id}`;i.blocks.some(u=>u.id===s)||i.blocks.push({id:s,label:l.title,kind:"flow",phases:[],steps:l.steps.map((u,d)=>({id:u.id,number:d+1,label:u.title,description:u.title,mode:"RUN"}))})}}}return[...t.values()]}function hp({side:e,panels:t,activeId:n,pinnedId:r,onActiveChange:o,onPinnedChange:i}){let l=(0,N.useRef)(0),s=t.find(f=>f.id===n)??null,u=(0,N.useCallback)(()=>{window.clearTimeout(l.current)},[]),d=(0,N.useCallback)(()=>{u(),!r&&(l.current=window.setTimeout(()=>o(null),150))},[u,o,r]),m=(0,N.useCallback)(f=>{u(),r||o(f)},[u,o,r]),y=(0,N.useCallback)(f=>{if(u(),r===f){i(null),o(null);return}i(f),o(f)},[u,o,i,r]),g=(0,N.useCallback)(()=>{u(),i(null),o(null)},[u,o,i]);return(0,N.useEffect)(()=>()=>window.clearTimeout(l.current),[]),t.length?(0,a.jsxs)("div",{className:`side-panel-dock side-panel-dock--${e}`,"data-side":e,children:[(0,a.jsx)("nav",{className:"side-panel-rail","aria-label":`Panele ${e==="left"?"lewe":"prawe"}`,children:t.map(f=>{let E=n===f.id,b=r===f.id;return(0,a.jsx)("button",{type:"button",className:`side-panel-trigger${E?" is-open":""}${b?" is-pinned":""}`,style:{"--side-panel-accent":f.accent},"aria-controls":`side-panel-${e}-${f.id}`,"aria-expanded":E,"aria-pressed":b,"aria-label":`${f.title}: ${b?"odpnij":"przypnij"} panel`,title:`${f.title} \xB7 ${b?"Fixed":"Auto"}`,onMouseEnter:()=>m(f.id),onMouseLeave:d,onFocus:()=>m(f.id),onClick:()=>y(f.id),children:(0,a.jsx)("span",{children:f.railLabel})},f.id)})}),(0,a.jsx)("aside",{id:s?`side-panel-${e}-${s.id}`:void 0,className:`side-panel${s?" is-open":""}`,"aria-hidden":!s,"aria-label":s?.title,style:s?{"--side-panel-accent":s.accent}:void 0,onMouseEnter:u,onMouseLeave:d,onFocusCapture:u,children:s&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("header",{className:"side-panel-header",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("small",{children:e==="left"?"LEWY PANEL":"PRAWY PANEL"}),(0,a.jsx)("strong",{children:s.title})]}),(0,a.jsxs)("div",{className:"side-panel-actions",children:[(0,a.jsx)("button",{type:"button",className:r===s.id?"is-pinned":"",onClick:()=>y(s.id),title:r===s.id?"Tryb Fixed \u2014 kliknij, aby przej\u015B\u0107 do Auto":"Tryb Auto \u2014 kliknij, aby przypi\u0105\u0107",children:r===s.id?"Fixed":"Auto"}),(0,a.jsx)("button",{type:"button",onClick:g,"aria-label":`Zamknij ${s.title}`,children:"\xD7"})]})]}),(0,a.jsx)("div",{className:"side-panel-body",children:s.content})]})})]}):null}function fo({id:e,depth:t,kind:n,title:r,label:o,refValue:i,stateValue:l,stateKind:s,hasChildren:u=!1,expanded:d=!1,onToggle:m,href:y,current:g=!1,unavailable:f=!1,onNavigate:E}){let b=y?(0,a.jsx)("a",{className:"card-library-tree-link",href:y,onClick:E,"aria-current":g?"page":void 0,title:g?"Poka\u017C bie\u017C\u0105c\u0105 kart\u0119":`Otw\xF3rz: ${r}`,children:o}):(0,a.jsx)("span",{className:"card-library-tree-label",title:r,children:o});return(0,a.jsxs)("div",{className:`card-library-treegrid-row is-${n}${g?" is-current":""}${f?" is-unavailable":""}`,role:"row","aria-level":t+1,"aria-expanded":u?d:void 0,"aria-disabled":f||void 0,"data-node-id":e,style:{"--card-library-depth":t},children:[(0,a.jsxs)("span",{className:"card-library-tree-title",role:"gridcell",children:[u?(0,a.jsx)("button",{className:"card-library-tree-expander",type:"button",onClick:m,"aria-label":`${d?"Zwi\u0144":"Rozwi\u0144"}: ${r}`,children:d?"\u25BE":"\u25B8"}):(0,a.jsx)("span",{className:"card-library-tree-expander is-empty","aria-hidden":"true"}),b]}),(0,a.jsx)("span",{role:"gridcell",children:i}),(0,a.jsx)("span",{role:"gridcell",children:(0,a.jsx)("b",{className:"card-library-tree-state","data-state":s,children:l})})]})}function Qg({library:e,onNavigate:t}){if(!e)return null;let n=e.subjects.reduce((d,m)=>d+m.levels.reduce((y,g)=>y+g.series.length,0),0),r=e.subjects.reduce((d,m)=>d+m.levels.reduce((y,g)=>y+g.series.reduce((f,E)=>f+E.cards.filter(b=>b.available).length,0),0),0),o=e.subjects.reduce((d,m)=>d+m.levels.reduce((y,g)=>y+g.series.reduce((f,E)=>f+E.cards.length,0),0),0),[i,l]=(0,N.useState)(()=>{let d=new Set;return e.subjects.forEach(m=>{let y=`subject:${m.id}`;m.current&&d.add(y),m.levels.forEach(g=>{let f=`${y}:level:${g.id}`;g.current&&d.add(f),g.series.forEach(E=>{let b=`${f}:series:${E.id}`;E.current&&d.add(b),E.cards.forEach(_=>{_.current&&(_.tasks?.length??0)>0&&d.add(`${b}:card:${_.id}`)})})})}),d}),s=d=>i.has(d),u=d=>{l(m=>{let y=new Set(m);return y.has(d)?y.delete(d):y.add(d),y})};return(0,a.jsxs)("div",{className:"card-library-panel",children:[(0,a.jsxs)("div",{className:"card-library-treegrid",role:"treegrid","aria-label":"Serie, karty i taski","aria-colcount":3,children:[(0,a.jsxs)("div",{className:"card-library-treegrid-row card-library-treegrid-head",role:"row",children:[(0,a.jsx)("span",{role:"columnheader",children:"DRZEWO"}),(0,a.jsx)("span",{role:"columnheader",children:"REF"}),(0,a.jsx)("span",{role:"columnheader",children:"STATUS"})]}),e.subjects.map(d=>{let m=`subject:${d.id}`;return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(fo,{id:m,depth:0,kind:"subject",title:d.title,label:(0,a.jsx)("strong",{children:d.title}),refValue:"PRZEDMIOT",stateValue:`${d.levels.length} POZ.`,hasChildren:d.levels.length>0,expanded:s(m),onToggle:()=>u(m)}),s(m)&&d.levels.map(y=>{let g=`${m}:level:${y.id}`;return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(fo,{id:g,depth:1,kind:"level",title:y.title,label:(0,a.jsx)("strong",{children:y.title}),refValue:"ROK",stateValue:`${y.series.length} SERII`,hasChildren:y.series.length>0,expanded:s(g),onToggle:()=>u(g)}),s(g)&&y.series.map(f=>{let E=`${g}:series:${f.id}`;return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(fo,{id:E,depth:2,kind:"series",title:f.title,label:(0,a.jsx)("strong",{children:f.title}),refValue:f.role==="reference"?"REF.":"SERIA",stateValue:`${f.cards.length} KART`,hasChildren:f.cards.length>0,expanded:s(E),onToggle:()=>u(E)}),s(E)&&f.cards.map(b=>{let _=`${E}:card:${b.id}`,p=b.tasks??[],c=b.current||b.available,h=b.current?"current":b.available?"online":"plan";return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(fo,{id:_,depth:3,kind:"card",title:`${b.id} \xB7 ${b.title}`,label:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("strong",{children:b.id}),(0,a.jsx)("span",{children:b.title})]}),refValue:b.version||"\u2014",stateValue:b.current?"BIE\u017B\u0104CA":b.available?"ONLINE":"PLAN",stateKind:h,hasChildren:p.length>0,expanded:s(_),onToggle:()=>u(_),href:c?b.current?"#":b.href:void 0,current:b.current,unavailable:!c,onNavigate:t}),s(_)&&p.map(k=>{let C=b.current?`#${k.id}`:`${b.href}#${k.id}`;return(0,a.jsx)(fo,{id:`${_}:task:${k.id}`,depth:4,kind:"task",title:`${k.id.toUpperCase()} \xB7 ${k.title}`,label:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("strong",{children:k.id.toUpperCase()}),(0,a.jsx)("span",{children:k.title})]}),refValue:"TASK",stateValue:c?"GOTOWY":"PLAN",stateKind:c?"online":"plan",href:c?C:void 0,unavailable:!c,onNavigate:t},`${_}:task:${k.id}`)})]},_)})]},E)})]},g)})]},m)})]}),(0,a.jsxs)("footer",{className:"card-library-footer",children:[(0,a.jsx)("span",{children:e.workspace||"STEM"}),(0,a.jsxs)("span",{children:[n," serii"]}),(0,a.jsxs)("span",{children:[(0,a.jsx)("i",{className:"is-online"})," ",r,"/",o," online"]}),(0,a.jsx)("kbd",{children:"Esc"})]})]})}function qg({toc:e,onNavigate:t}){return(0,a.jsxs)("nav",{className:"side-toc","aria-label":"Spis tre\u015Bci karty",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("small",{children:"KARTA PRACY"}),(0,a.jsx)("h2",{children:"Spis tre\u015Bci"})]}),(0,a.jsx)("ol",{children:e.map((n,r)=>(0,a.jsx)("li",{children:(0,a.jsxs)("a",{href:`#${n.id}`,onClick:t,children:[(0,a.jsx)("span",{children:String(r+1).padStart(2,"0")}),(0,a.jsx)("strong",{children:n.label})]})},n.id))})]})}function Xg({progress:e,error:t}){let n=e?.summary?.counts;return(0,a.jsxs)("section",{className:"side-progress","aria-label":"Przebieg zaj\u0119\u0107 i raport",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("small",{children:"DOWODY I RAPORT"}),(0,a.jsx)("h2",{children:"Przebieg zaj\u0119\u0107"})]}),(0,a.jsxs)("div",{className:"side-progress-summary",children:[(0,a.jsx)("span",{children:"Zatwierdzone kroki"}),(0,a.jsx)("strong",{children:n?`${n.approved}/${e.summary.total}`:"\u2014"})]}),t&&(0,a.jsx)("p",{className:"side-progress-error",children:t}),(0,a.jsxs)("div",{className:"side-progress-links",children:[(0,a.jsx)("a",{href:"/api/report/teams.md",target:"_blank",rel:"noopener",children:"Raport do Teams"}),(0,a.jsx)("a",{href:"/api/report/lesson.html",target:"_blank",rel:"noopener",children:"\u015Alad lekcji ze zrzutami"})]})]})}var Zg={online:"ONLINE",away:"ZAJ\u0118TY",offline:"OFFLINE",error:"B\u0141\u0104D"},Jg={follow:"SYNC",paused:"PAUZA",local:"LOKAL."},yp={present:"BY\u0141",missed:"NIE BY\u0141",pending:"OCZEK."},eh={committed:"COMMIT",working:"PRACA",missing:"BRAK"};function zp(e){let t=2166136261;for(let n=0;n>>0}function vp(e,t,n){let r=zp(`${e.id}:step:${t}`),o=r%8,i=o===0?"missed":o===1?"pending":"present",l=8+n*4+r%3,s=10+Math.floor(l/60),u=l%60,d=(e.laptop*7+r)%60;return{state:i,timestamp:i==="present"?`${String(s).padStart(2,"0")}:${String(u).padStart(2,"0")}:${String(d).padStart(2,"0")}`:"\u2014"}}function xp(e,t){let n=zp(`${e.id}:exercise:${t}`),r=n%6,o=r===0?"missing":r===1?"working":"committed";return{state:o,commit:o==="committed"?n.toString(16).padStart(8,"0").slice(0,7):"\u2014"}}function Gt({id:e,depth:t,title:n,kind:r,refValue:o,session:i,evidence:l,state:s,hasChildren:u=!1,expanded:d=!1,onToggle:m}){return(0,a.jsxs)("div",{className:`classroom-treegrid-row classroom-node-row is-${r}`,role:"row","aria-level":t+1,"aria-expanded":u?d:void 0,"data-node-id":e,style:{"--classroom-depth":t},children:[(0,a.jsxs)("span",{className:"classroom-node-title",role:"gridcell",title:n,children:[u?(0,a.jsx)("button",{className:"classroom-expander",type:"button",onClick:m,"aria-label":`${d?"Zwi\u0144":"Rozwi\u0144"}: ${n}`,children:d?"\u25BE":"\u25B8"}):(0,a.jsx)("span",{className:"classroom-expander is-empty","aria-hidden":"true"}),(0,a.jsx)("strong",{children:n})]}),(0,a.jsx)("span",{role:"gridcell",children:o}),(0,a.jsx)("span",{role:"gridcell",children:i}),(0,a.jsx)("span",{role:"gridcell",children:l}),(0,a.jsx)("span",{role:"gridcell",children:s})]})}function th({model:e}){let t=Yg(e),n=In[0]?.id,r=t[0]?.id,[o,i]=(0,N.useState)(()=>new Set(["class",...n?[`student:${n}`]:[],...n&&r?[`student:${n}:task:${r}`]:[]])),l=m=>o.has(m),s=m=>{i(y=>{let g=new Set(y);return g.has(m)?g.delete(m):g.add(m),g})},u=In.filter(m=>m.connection==="online"||m.connection==="away").length,d=In.filter(m=>m.sync==="follow").length;return(0,a.jsxs)("section",{className:"classroom-panel","aria-label":"Klasa i stanowiska uczni\xF3w",children:[(0,a.jsxs)("div",{className:"classroom-treegrid",role:"treegrid","aria-label":"Uczniowie, struktura karty, obecno\u015B\u0107 i commity","aria-colcount":5,children:[(0,a.jsxs)("div",{className:"classroom-treegrid-row classroom-treegrid-head",role:"row",children:[(0,a.jsx)("span",{role:"columnheader",children:"DRZEWO"}),(0,a.jsx)("span",{role:"columnheader",children:"REF"}),(0,a.jsx)("span",{role:"columnheader",children:"SESJA"}),(0,a.jsx)("span",{role:"columnheader",children:"DOW\xD3D"}),(0,a.jsx)("span",{role:"columnheader",children:"STAN"})]}),(0,a.jsx)(Gt,{id:"class",depth:0,kind:"class",title:"2TP \xB7 grupa A",refValue:`${In.length} ucz.`,session:`${u}/${In.length}`,evidence:`${d}/${In.length} SYNC`,state:`${t.length} TASK`,hasChildren:!0,expanded:l("class"),onToggle:()=>s("class")}),l("class")&&In.map(m=>{let y=`student:${m.id}`;return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(Gt,{id:y,depth:1,kind:"student",title:m.name,refValue:`L${String(m.laptop).padStart(2,"0")}`,session:(0,a.jsx)("b",{className:"classroom-status","data-status":m.connection,children:Zg[m.connection]}),evidence:(0,a.jsx)("b",{className:"classroom-sync","data-sync":m.sync,children:Jg[m.sync]}),state:m.position,hasChildren:t.length>0,expanded:l(y),onToggle:()=>s(y)}),l(y)&&t.map(g=>{let f=`${y}:task:${g.id}`,E=g.exercises.filter(b=>xp(m,b.id).state==="committed").length;return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(Gt,{id:f,depth:2,kind:"task",title:g.label,refValue:g.id.toUpperCase(),session:`${g.blocks.length} BLOCK`,evidence:`${E}/${g.exercises.length} COMMIT`,state:"TASK",hasChildren:g.blocks.length+g.exercises.length>0,expanded:l(f),onToggle:()=>s(f)}),l(f)&&g.blocks.map(b=>{let _=`${f}:block:${b.id}`,p=b.phases.length||b.steps.length;return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(Gt,{id:_,depth:3,kind:"block",title:b.label,refValue:b.kind==="diagram"?"BLOCK":"TASK BLOCK",session:`${p} ${b.phases.length?"PHASE":"STEP"}`,evidence:"\u2014",state:b.kind==="diagram"?"UML":"FLOW",hasChildren:p>0,expanded:l(_),onToggle:()=>s(_)}),l(_)&&b.phases.map(c=>{let h=`${_}:phase:${c.id}`;return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(Gt,{id:h,depth:4,kind:"phase",title:`PHASE \xB7 ${c.label}`,refValue:`${c.steps.length} STEP`,session:"\u2014",evidence:"\u2014",state:"PHASE",hasChildren:c.steps.length>0,expanded:l(h),onToggle:()=>s(h)}),l(h)&&c.steps.map(k=>{let C=vp(m,`${b.id}:${c.id}:${k.id}`,k.number);return(0,a.jsx)(Gt,{id:`${h}:step:${k.id}`,depth:5,kind:"step",title:`STEP ${String(k.number).padStart(2,"0")} \xB7 ${k.label}`,refValue:k.mode??"CODE",session:(0,a.jsx)("b",{className:"classroom-visit","data-visit":C.state,children:yp[C.state]}),evidence:C.timestamp,state:C.state==="present"?"OK":C.state==="missed"?"BRAK":"\u2014"},`${h}:step:${k.id}`)})]},h)}),l(_)&&b.steps.map(c=>{let h=vp(m,`${b.id}:${c.id}`,c.number);return(0,a.jsx)(Gt,{id:`${_}:step:${c.id}`,depth:4,kind:"step",title:`STEP ${String(c.number).padStart(2,"0")} \xB7 ${c.label}`,refValue:c.mode??"RUN",session:(0,a.jsx)("b",{className:"classroom-visit","data-visit":h.state,children:yp[h.state]}),evidence:h.timestamp,state:h.state==="present"?"OK":h.state==="missed"?"BRAK":"\u2014"},`${_}:step:${c.id}`)})]},_)}),l(f)&&g.exercises.length>0&&(()=>{let b=`${f}:exercises`;return(0,a.jsxs)(N.default.Fragment,{children:[(0,a.jsx)(Gt,{id:b,depth:3,kind:"exercises",title:"EXERCISES",refValue:`${g.exercises.length} EX`,session:`${E}/${g.exercises.length}`,evidence:"GIT",state:E===g.exercises.length?"DONE":"TODO",hasChildren:!0,expanded:l(b),onToggle:()=>s(b)}),l(b)&&g.exercises.map(_=>{let p=xp(m,_.id);return(0,a.jsx)(Gt,{id:`${b}:${_.id}`,depth:4,kind:"exercise",title:`EXERCISE \xB7 ${_.title}`,refValue:_.id,session:(0,a.jsx)("b",{className:"classroom-commit","data-commit":p.state,children:eh[p.state]}),evidence:p.commit,state:p.state==="committed"?"DONE":p.state==="working"?"W TOKU":"TODO"},`${b}:${_.id}`)})]},b)})()]},f)})]},m.id)})]}),(0,a.jsxs)("footer",{className:"classroom-legend",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("b",{children:"BY\u0141"})," obecny przy omawianym STEP"]}),(0,a.jsxs)("span",{children:[(0,a.jsx)("b",{children:"COMMIT"})," rozwi\u0105zanie EXERCISE zapisane w Git"]})]})]})}function nh({open:e,onClose:t}){return e?(0,a.jsx)("div",{className:"shortcut-help-backdrop",role:"presentation",onMouseDown:t,children:(0,a.jsxs)("section",{className:"shortcut-help",role:"dialog","aria-modal":"true","aria-labelledby":"shortcut-help-title",onMouseDown:r=>r.stopPropagation(),children:[(0,a.jsxs)("header",{children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("small",{children:"F12 \xB7 NAWIGACJA DYDAKTYCZNA"}),(0,a.jsx)("h2",{id:"shortcut-help-title",children:"CARD \u2192 TASK \u2192 BLOCK \u2192 PHASE \u2192 STEP \u2192 SNAPSHOT"})]}),(0,a.jsx)("button",{onClick:t,"aria-label":"Zamknij skorowidz",children:"\xD7"})]}),(0,a.jsx)("dl",{children:[["Alt + \u2191 / \u2193","poprzedni / nast\u0119pny TASK"],["Ctrl + \u2191 / \u2193","poprzedni / nast\u0119pny BLOCK"],["Shift + \u2191 / \u2193","poprzednia / nast\u0119pna PHASE"],["Ctrl + Shift + \u2191 / \u2193","poprzedni / nast\u0119pny STEP"],["Alt + Shift + \u2191 / \u2193","poprzedni / nast\u0119pny unikalny SNAPSHOT"],["\u2191 / \u2193","poprzedni / nast\u0119pny element aktywnego poziomu"],["\u2192","zejd\u017A poziom ni\u017Cej"],["\u2190 / Esc","wr\xF3\u0107 poziom wy\u017Cej"],["Enter","wybierz element; przy SYNC ON odtw\xF3rz stan"],["F1","reset aktualnego celu Neovima/kontenera"],["F2","synchronizuj cel z kursorem drzewa UML"],["Ctrl + `","maksymalizuj pane, dopasuj siatk\u0119 i od\u015Bwie\u017C Neovima"],["Ctrl + Enter","zatwierd\u017A lub cofnij zatwierdzenie kroku"],["Alt + 0","wysu\u0144 lub schowaj panel serii i kart"],["Alt + 1","poka\u017C lub ukryj panel Neovima"],["Alt + 2","prze\u0142\u0105cz SYNC OFF / SYNC ON"],["Alt + 3","uzbr\xF3j lub rozbr\xF3j sterowanie Neovimem"],["Alt + 4","wysoki panel 90% / zapisana wysoko\u015B\u0107 normalna"],["Alt + 5","dopasuj ca\u0142y ekran Neovima; wy\u0142\u0105cz r\u0119czny suwak"],["Alt + 6","przypnij lub ukryj model alokatora"],["Alt + 7","po\u0142\u0105cz segmenty UML w szeroki spread / wr\xF3\u0107 do A4"],["Alt + 3, potem najed\u017A","przeka\u017C klawiatur\u0119 i mysz do aktywnej sesji"],["Alt + W","prefiks polece\u0144 okien Neovima ()"],["Alt + strza\u0142ka","przejd\u017A do s\u0105siedniego okna Neovima"],["F12","poka\u017C lub ukryj ten skorowidz"]].map(([r,o])=>(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:(0,a.jsx)("kbd",{children:r})}),(0,a.jsx)("dd",{children:o})]},r))}),(0,a.jsx)("p",{children:"Przy SYNC ON wyb\xF3r stepu odtwarza i weryfikuje przypi\u0119ty stan maszyny. SYNC OFF nie resetuje debuggera. Po najechaniu panel przekazuje do Neovima wy\u0142\u0105cznie kontrolowane zdarzenia klawiatury i myszy, wi\u0119c mo\u017Cna normalnie kontynuowa\u0107 debugowanie."})]})}):null}function rh({model:e}){let t=!!e.has_allocator_model,n=(0,N.useRef)(null),r=(0,N.useRef)(null),o=(0,N.useRef)(`browser-${globalThis.crypto?.randomUUID?.()??Math.random().toString(36).slice(2)}`),i=(0,N.useRef)(0),l=(0,N.useRef)(0),s=(0,N.useRef)(!1),u=(0,N.useRef)(!1),d=(0,N.useRef)(0),m=(0,N.useRef)(0),y=(0,N.useRef)(0),[g,f]=(0,N.useState)(2.18),[E,b]=(0,N.useState)(()=>localStorage.getItem("stem-card-nvim-visible")!=="false"),[_,p]=(0,N.useState)(()=>localStorage.getItem("stem-card-nvim-sync-mode")==="true"),[c,h]=(0,N.useState)(()=>localStorage.getItem("stem-card-nvim-sync-mode")==="true"&&localStorage.getItem("stem-card-nvim-control-mode")==="true"),[k,C]=(0,N.useState)(!1),[P,T]=(0,N.useState)(!1),[R,j]=(0,N.useState)(()=>t&&localStorage.getItem("stem-card-allocator-visible")!=="false"),[I,ke]=(0,N.useState)(()=>{let v=localStorage.getItem("stem-card-diagram-spread");return v===null?!!e.has_spread:v==="true"}),[re,G]=(0,N.useState)({state:"hidden",syncMode:!1,syncReady:!1,controlMode:!1,controlEnabled:!1}),[U,Le]=(0,N.useState)(null),[Ne,Q]=(0,N.useState)(""),[et,Ge]=(0,N.useState)(null),[je,me]=(0,N.useState)(null),[Dn,xe]=(0,N.useState)(null),[bn,se]=(0,N.useState)(null),[A,F]=(0,N.useState)(!1),[B,te]=(0,N.useState)(""),[at,zt]=(0,N.useState)(()=>window.innerWidth),Ee=et==="library",ne=!!(et||Dn),st=(0,N.useCallback)(v=>{if(v){Ge("library"),me("library");return}Ge(w=>w==="library"?null:w),me(w=>w==="library"?null:w)},[]),Ye=(0,N.useCallback)(v=>{window.clearTimeout(y.current),te(v),y.current=window.setTimeout(()=>te(""),4200)},[]),wn=(0,N.useCallback)(async v=>{Ye(`${v} \xB7 wykonywanie\u2026`);try{let L=await fetch(v==="F1"?"/api/nvim/reset":"/api/navigation/sync",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({actor:o.current})}),H=await L.json().catch(()=>({}));if(!L.ok)throw new Error(H.message??H.error??`HTTP ${L.status}`);v==="F2"&&H.current?(l.current=Math.max(l.current,Number(H.current.revision??0)),window.dispatchEvent(new CustomEvent("stem:navigation-command",{detail:H.current})),Ye(`F2 \xB7 ${String(H.current.step.number).padStart(2,"0")} ${H.current.step.label} \xB7 READY`)):Ye("F1 \xB7 reset przyj\u0119ty"),window.setTimeout(()=>window.dispatchEvent(new Event("stem:nvim-refresh")),120)}catch(w){Ye(`${v} \xB7 ${w instanceof Error?w.message:String(w)}`)}},[Ye]),ie=(0,N.useCallback)(async()=>{Ye("Ctrl+` \xB7 przeliczanie widoku\u2026");try{let v=await fetch("/api/nvim/redraw",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({actor:o.current})}),w=await v.json().catch(()=>({}));if(!v.ok)throw new Error(w.message??w.error??`HTTP ${v.status}`);let L=w.external_ui?.grid,H=L?` \xB7 ${L.width}\xD7${L.height}`:"";Ye(`Ctrl+\` \xB7 widok od\u015Bwie\u017Cony${H}`),window.dispatchEvent(new Event("stem:nvim-refresh"))}catch(v){Ye(`Ctrl+\` \xB7 ${v instanceof Error?v.message:String(v)}`)}},[Ye]),q=(0,N.useCallback)(async v=>{try{let w=await fetch("/api/viewer/state",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({actor:o.current,viewer:v})});if(!w.ok)return;let L=await w.json();i.current=Math.max(i.current,Number(L.viewer?.revision??0))}catch{}},[]),bt=v=>{let w=Math.max(.25,Math.min(3,v));f(w),q({scale:w})};(0,N.useEffect)(()=>{document.documentElement.style.setProperty("--viewer-canvas-scale",g.toFixed(3))},[g]),(0,N.useEffect)(()=>{if(!I)return;let v=r.current;if(!v)return;let w=0,L=()=>{window.cancelAnimationFrame(w),w=window.requestAnimationFrame(()=>{v.scrollLeft=Math.max(0,(v.scrollWidth-v.clientWidth)/2)})},H=window.requestAnimationFrame(L);return window.addEventListener("resize",L),()=>{window.cancelAnimationFrame(H),window.cancelAnimationFrame(w),window.removeEventListener("resize",L)}},[I,g,at]),(0,N.useEffect)(()=>{let v=()=>zt(window.innerWidth);return window.addEventListener("resize",v),()=>window.removeEventListener("resize",v)},[]),(0,N.useEffect)(()=>{document.documentElement.dataset.nvimSyncMode=_?"on":"off"},[_]),(0,N.useEffect)(()=>{document.documentElement.dataset.cardClientId=o.current},[]);let fe=v=>{b(v),v||(C(!1),T(!1)),localStorage.setItem("stem-card-nvim-visible",String(v)),q({nvim:{visible:v,...v?{}:{expanded:!1,fit:!1}}})},Qt=v=>{let w=v&&_;h(w),localStorage.setItem("stem-card-nvim-control-mode",String(w)),q({nvim:{control:w}})},jn=v=>{p(v),localStorage.setItem("stem-card-nvim-sync-mode",String(v)),v||(h(!1),localStorage.setItem("stem-card-nvim-control-mode","false")),q({nvim:{sync:v,control:v?c:!1}})},qt=v=>{v&&fe(!0),v&&T(!1),C(v),q({nvim:{visible:v||E,expanded:v,fit:!1}})},ho=v=>{v&&(fe(!0),C(!1)),T(v),q({nvim:{visible:v||E,fit:v,expanded:!1}})},yo=v=>{let w=t&&v;j(w),localStorage.setItem("stem-card-allocator-visible",String(w)),q({allocator:{visible:w}})},Un=v=>{let w=!!(e.has_spread&&v);ke(w),localStorage.setItem("stem-card-diagram-spread",String(w))};(0,N.useEffect)(()=>{let v=0,w=window.requestAnimationFrame(()=>{v=window.requestAnimationFrame(()=>{window.dispatchEvent(new Event("stem:nvim-refresh"))})});return()=>{window.cancelAnimationFrame(w),window.cancelAnimationFrame(v)}},[k,P]),(0,N.useEffect)(()=>{fetch("/api/progress").then(v=>v.ok?v.json():Promise.reject(new Error(`HTTP ${v.status}`))).then(v=>Le(v.progress)).catch(v=>Q(`Post\u0119p dzia\u0142a tylko przez serwer karty (${v.message}).`))},[]),(0,N.useEffect)(()=>{let v=!1,w=!1,L={scale:g,viewport:{width:window.innerWidth,height:window.innerHeight},nvim:{visible:E,sync:_,control:c,expanded:k,fit:P},allocator:{visible:R}},H=D=>{let Z=D.nvim.visible&&D.nvim.fit,V=D.nvim.visible&&!Z&&D.nvim.expanded;f(Math.max(.25,Math.min(3,D.scale))),b(D.nvim.visible),p(D.nvim.sync),h(D.nvim.sync&&D.nvim.control),C(V),T(Z);let oe=t&&(D.allocator?.visible??!0);j(oe),localStorage.setItem("stem-card-nvim-visible",String(D.nvim.visible)),localStorage.setItem("stem-card-nvim-sync-mode",String(D.nvim.sync)),localStorage.setItem("stem-card-nvim-control-mode",String(D.nvim.sync&&D.nvim.control)),localStorage.setItem("stem-card-allocator-visible",String(oe));let ct=++m.current;s.current=!0,window.cancelAnimationFrame(d.current),d.current=window.requestAnimationFrame(()=>{if(ct!==m.current)return;let Ue=Gi();Ki(Ue,{left:D.scroll.x,top:D.scroll.y});let ue=Array.from(document.querySelectorAll(".paper .sheet")),Re=ue[Math.max(0,Math.min(ue.length-1,D.scroll.page_index))]?.querySelector(".sheet-content");Re&&Number.isFinite(D.scroll.sheet_scroll_top)&&Ki(Re,{top:D.scroll.sheet_scroll_top??0}),d.current=window.requestAnimationFrame(()=>{ct===m.current&&(s.current=!1,u.current&&(u.current=!1,window.dispatchEvent(new Event("stem:viewer-scroll-settled"))))})})},K=async()=>{try{let D=await fetch("/api/control/state",{cache:"no-store"});if(!D.ok||v)return;let Z=await D.json(),V=Z.viewer;w||(w=!0,Number(V?.revision??0)===0&&q(L)),V&&V.revision>i.current&&(i.current=V.revision,V.actor!==o.current&&H(V));let oe=Z.navigation;oe&&oe.revision>l.current&&(l.current=oe.revision,oe.actor!==o.current&&(s.current&&(u.current=!0),window.dispatchEvent(new CustomEvent("stem:navigation-command",{detail:oe}))))}catch{}};K();let X=window.setInterval(K,300);return()=>{v=!0,window.clearInterval(X),m.current+=1,window.cancelAnimationFrame(d.current),s.current=!1,u.current=!1}},[]),(0,N.useEffect)(()=>{q({nvim:{connection:re.state,screen_cursor:re.screenCursor,grid:re.grid}})},[re.grid?.columns,re.grid?.rows,re.screenCursor?.column,re.screenCursor?.row,re.state,q]),(0,N.useEffect)(()=>{let v=0,w=null,L=Array.from(document.querySelectorAll(".paper .sheet")),H=L.map(X=>X.querySelector(".sheet-content")).filter(X=>!!X),K=X=>{if(s.current)return;let D=X?.currentTarget;D instanceof HTMLElement&&D.classList.contains("sheet-content")&&(w=D),window.clearTimeout(v),v=window.setTimeout(()=>{let Z=w?.closest(".sheet"),V=Z?L.indexOf(Z):-1,oe=V>=0?V:L.reduce((Ue,ue,J)=>{let Re=ue.getBoundingClientRect(),Ve=Math.abs((Re.top+Re.bottom)/2-window.innerHeight/2);return Ve=0?w:L[oe]?.querySelector(".sheet-content")??null;q({scroll:{x:window.scrollX,y:window.scrollY,page_index:oe,sheet_scroll_top:ct?.scrollTop??0},viewport:{width:window.innerWidth,height:window.innerHeight}}),w=null},120)};return window.addEventListener("scroll",K,{passive:!0}),window.addEventListener("resize",K),window.addEventListener("stem:viewer-scroll-settled",K),H.forEach(X=>X.addEventListener("scroll",K,{passive:!0})),K(),()=>{window.clearTimeout(v),window.removeEventListener("scroll",K),window.removeEventListener("resize",K),window.removeEventListener("stem:viewer-scroll-settled",K),H.forEach(X=>X.removeEventListener("scroll",K))}},[q]),(0,N.useEffect)(()=>{let v=w=>{if(w.repeat)return;let L=w.altKey&&!w.ctrlKey&&!w.metaKey?w.code:"";if(L==="Digit0"&&e.library){w.preventDefault(),w.stopImmediatePropagation(),F(!1),st(!Ee);return}if(L==="Digit1"){w.preventDefault(),w.stopImmediatePropagation(),fe(!E);return}if(L==="Digit2"){w.preventDefault(),w.stopImmediatePropagation(),jn(!_);return}if(L==="Digit3"){if(w.preventDefault(),w.stopImmediatePropagation(),!_)return;fe(!0),Qt(!c);return}if(L==="Digit4"){w.preventDefault(),w.stopImmediatePropagation(),qt(!k);return}if(L==="Digit5"){w.preventDefault(),w.stopImmediatePropagation(),ho(!P);return}if(L==="Digit6"&&t){w.preventDefault(),w.stopImmediatePropagation(),yo(!R);return}if(L==="Digit7"&&e.has_spread){w.preventDefault(),w.stopImmediatePropagation(),Un(!I);return}if((w.key==="F1"||w.key==="F2")&&!w.altKey&&!w.ctrlKey&&!w.metaKey&&!w.shiftKey){w.preventDefault(),w.stopImmediatePropagation(),wn(w.key);return}if(w.ctrlKey&&!w.altKey&&!w.metaKey&&!w.shiftKey&&(w.code==="Backquote"||w.key==="`")){w.preventDefault(),w.stopImmediatePropagation(),ie();return}if(w.key==="F12"){w.preventDefault(),w.stopImmediatePropagation(),st(!1),Ge(null),me(null),xe(null),se(null),F(H=>!H);return}if(w.key==="Escape"&&(ne||A)){w.preventDefault(),w.stopImmediatePropagation(),Ge(null),me(null),xe(null),se(null),F(!1);return}};return window.addEventListener("keydown",v,!0),()=>window.removeEventListener("keydown",v,!0)},[R,I,t,Ee,e.has_spread,e.library,c,k,P,_,E,wn,ie,A,ne]),(0,N.useEffect)(()=>{let v=n.current?.querySelector(".topbar");if(!v)return;let w=()=>{document.documentElement.style.setProperty("--side-panel-top",`${Math.ceil(v.getBoundingClientRect().bottom)}px`)};w();let L=new ResizeObserver(w);return L.observe(v),window.addEventListener("resize",w),()=>{L.disconnect(),window.removeEventListener("resize",w),document.documentElement.style.removeProperty("--side-panel-top")}},[]),(0,N.useEffect)(()=>()=>window.clearTimeout(y.current),[]),(0,N.useEffect)(()=>{let v=w=>{!w.altKey||w.ctrlKey||(w.preventDefault(),f(L=>{let H=Math.max(.25,Math.min(3,L*Math.exp(-Math.max(-120,Math.min(120,w.deltaY))*.001)));return q({scale:H}),H}))};return window.addEventListener("wheel",v,{passive:!1}),()=>window.removeEventListener("wheel",v)},[q]);let ut=async(v,w)=>{try{let L=await fetch(`/api/progress/${encodeURIComponent(v)}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({status:w})});if(!L.ok)throw new Error(await L.text());Le((await L.json()).progress),Q("")}catch(L){Q(`Nie zapisano post\u0119pu: ${L instanceof Error?L.message:String(L)}`)}},x=(v,w)=>{ut(v,{pending:"approved",approved:"pending"}[w])},S=0,M=e.sections.map(v=>{let w=S;return S+=v.assets.length,{section:v,figureOffset:w}}),O=[];return M.forEach(v=>{let w=v.section.spread_group??"",L=O[O.length-1];if(w&&L?.spreadGroup===w){L.pages.push(v);return}O.push({key:w||v.section.id,spreadGroup:w,spreadLabel:v.section.spread_label??"",spreadColumns:v.section.spread_columns??1,pages:[v]})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{ref:n,className:`viewer-chrome${k?" is-nvim-expanded":""}${P?" is-nvim-fit":""}`,children:[(0,a.jsx)(bg,{toc:e.toc,libraryAvailable:!!e.library,libraryOpen:Ee,setLibraryOpen:st,scale:g,setScale:bt,nvimVisible:E,setNvimVisible:fe,nvimSyncMode:_,setNvimSyncMode:jn,nvimControlMode:c,setNvimControlMode:Qt,nvimExpanded:k,setNvimExpanded:qt,nvimFit:P,setNvimFit:ho,allocatorVisible:R,setAllocatorVisible:yo,hasAllocatorModel:t,diagramSpread:I,setDiagramSpread:Un,hasDiagramSpread:!!e.has_spread,nvimSummary:re,progress:U,progressError:Ne}),e.viewpoints?.length?(0,a.jsx)(xg,{viewpoints:e.viewpoints}):null,(0,a.jsx)(wg,{visible:t&&R,model:e}),(0,a.jsx)(Mg,{visible:E,syncMode:_,controlMode:c,expanded:k,fit:P,scale:g,onSummaryChange:G}),B&&(0,a.jsx)("output",{className:"viewer-action-toast",children:B})]}),(0,a.jsxs)("main",{ref:r,className:`paper${I?" is-diagram-spread":""}`,children:[(0,a.jsx)(Og,{front:e.front}),O.map(v=>{let w=Array.from({length:Math.ceil(v.pages.length/v.spreadColumns)},(D,Z)=>v.pages.slice(Z*v.spreadColumns,(Z+1)*v.spreadColumns)),H=Math.max(1,...w.map(D=>D.reduce((Z,V)=>Z+(V.section.page_orientation==="landscape"?297:210),Math.max(0,D.length-1)*2)))*(96/25.4)*g,K=Math.min(1,Math.max(.25,(at-24)/H)),X=v.pages.map(({section:D,figureOffset:Z})=>(0,a.jsx)(Wg,{section:D,progress:U,onCycle:x,onSetStatus:ut,figureOffset:Z},D.id));return v.spreadGroup?(0,a.jsx)("section",{className:"sheet-spread","data-spread-group":v.spreadGroup,"aria-label":v.spreadLabel||"Wielostronicowy diagram UML",style:{"--spread-columns":v.spreadColumns,"--spread-fit-scale":K},children:X},v.key):X[0]}),e.dictionary&&(0,a.jsxs)(ys,{header:e.dictionary.header_html,className:"dictionary-sheet",children:[(0,a.jsx)("h2",{children:"S\u0142ownik WE/EN/EK/KW"}),(0,a.jsx)(Yt,{html:e.dictionary.content_html})]})]}),(0,a.jsx)(hp,{side:"left",panels:[...e.library?[{id:"library",railLabel:"K",title:"Serie i karty",accent:"#167ca4",content:(0,a.jsx)(Qg,{library:e.library,onNavigate:()=>st(!1)})}]:[],{id:"contents",railLabel:"S",title:"Spis tre\u015Bci",accent:"#16805d",content:(0,a.jsx)(qg,{toc:e.toc,onNavigate:()=>{Ge(null),me(null)}})}],activeId:et,pinnedId:je,onActiveChange:Ge,onPinnedChange:me}),(0,a.jsx)(hp,{side:"right",panels:[{id:"classroom",railLabel:"U",title:"Klasa i stanowiska",accent:"#267357",content:(0,a.jsx)(th,{model:e})},{id:"progress",railLabel:"R",title:"Przebieg i raport",accent:"#b45b26",content:(0,a.jsx)(Xg,{progress:U,error:Ne})}],activeId:Dn,pinnedId:bn,onActiveChange:xe,onPinnedChange:se}),(0,a.jsx)(nh,{open:A,onClose:()=>F(!1)})]})}async function oh(){let e=(0,bp.createRoot)(document.getElementById("root"));try{let t=await fetch("./card-data.json",{cache:"no-store"});if(!t.ok)throw new Error(`Nie mo\u017Cna wczyta\u0107 card-data.json: ${t.status}`);let n=await t.json();e.render((0,a.jsx)(rh,{model:n}))}catch(t){e.render((0,a.jsxs)("main",{className:"app-load-error",children:[(0,a.jsx)("h1",{children:"Nie uda\u0142o si\u0119 uruchomi\u0107 karty"}),(0,a.jsx)("pre",{children:t instanceof Error?t.message:String(t)})]}))}}oh(); +/*! Bundled license information: + +react/cjs/react.production.min.js: + (** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +scheduler/cjs/scheduler.production.min.js: + (** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-dom/cjs/react-dom.production.min.js: + (** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react/cjs/react-jsx-runtime.production.min.js: + (** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) +*/ diff --git a/web/card-data.json b/web/card-data.json new file mode 100644 index 0000000..314f001 --- /dev/null +++ b/web/card-data.json @@ -0,0 +1,4038 @@ +{ + "schema": "esc-card-react-view.v1", + "card": { + "id": "mpabi-freertos-c-01-heap4-mechanics", + "series": "freertos-c", + "series_title": "FreeRTOS C", + "number": "01", + "count": "15", + "slug": "heap4-mechanics", + "title": "heap_4: From Linear Cursor to Reusable Blocks", + "topic": "headers, address-ordered free list, first-fit, split, coalescing and heap statistics", + "project": "Freestanding C nad FreeRTOS", + "subject": "Informatyka", + "level": "Rok 2 · L01 · RV32I/Hazard3", + "revision_date": "2026-07-20T00:00:00+02:00", + "status": "Gotowa", + "version": "v00.01", + "uuid": "87e48095-7793-54e3-9230-4e61d31bd459", + "author": "M. Pabiszczak", + "year": "2026" + }, + "library": { + "schema": "stem-card-library.v2", + "workspace": "edu", + "subjects": [ + { + "id": "inf", + "title": "INF · Informatyka", + "current": true, + "levels": [ + { + "id": "year-1", + "title": "Rok 1", + "current": false, + "series": [ + { + "id": "console-bash", + "title": "Bash · Console Tools", + "current": false, + "catalog_only": true, + "role": "", + "status": "", + "cards": [ + { + "id": "L01", + "title": "BusyBox — the Swiss Army Knife", + "repo": "lab-console-busybox", + "href": "", + "available": false, + "current": false, + "number": "01", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L02", + "title": "Tmux — sessions, windows and panes", + "repo": "lab-console-tmux", + "href": "", + "available": false, + "current": false, + "number": "02", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L03", + "title": "Neovim — navigation and editing", + "repo": "lab-console-neovim", + "href": "", + "available": false, + "current": false, + "number": "03", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L04", + "title": "Git Basics I — status, add and commit", + "repo": "lab-console-git-basics-1", + "href": "", + "available": false, + "current": false, + "number": "04", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L05", + "title": "Git Basics II — log, diff and restore", + "repo": "lab-console-git-basics-2", + "href": "", + "available": false, + "current": false, + "number": "05", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L06", + "title": "Git Branching I — branch, switch and merge", + "repo": "lab-console-git-branching-1", + "href": "", + "available": false, + "current": false, + "number": "06", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L07", + "title": "Git Branching II — rebase and conflicts", + "repo": "lab-console-git-branching-2", + "href": "", + "available": false, + "current": false, + "number": "07", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L08", + "title": "Docker Fundamentals", + "repo": "lab-console-docker", + "href": "", + "available": false, + "current": false, + "number": "08", + "version": "", + "status": "planned", + "tasks": [] + } + ] + }, + { + "id": "rv32i-asm", + "title": "ASM · RV32I From Blinker to RISC-V", + "current": false, + "catalog_only": true, + "role": "", + "status": "", + "cards": [ + { + "id": "L01", + "title": "Number Systems and Storage", + "repo": "lab-rv32i-asm-number-systems", + "href": "", + "available": false, + "current": false, + "number": "01", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L02", + "title": "FPGA Bring-up and Programming", + "repo": "lab-rv32i-asm-fpga-bringup", + "href": "", + "available": false, + "current": false, + "number": "02", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L03", + "title": "Blinker and Synchronous Logic", + "repo": "lab-rv32i-asm-blinker", + "href": "", + "available": false, + "current": false, + "number": "03", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L04", + "title": "The RISC-V ISA and Instruction Decoder", + "repo": "lab-rv32i-asm-decoder", + "href": "", + "available": false, + "current": false, + "number": "04", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L05", + "title": "ALU and the Verilog Assembler", + "repo": "lab-rv32i-asm-alu", + "href": "", + "available": false, + "current": false, + "number": "05", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L06", + "title": "Control Flow — Jumps and Branches", + "repo": "lab-rv32i-asm-control-flow", + "href": "", + "available": false, + "current": false, + "number": "06", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L07", + "title": "Addresses and Memory", + "repo": "lab-rv32i-asm-addresses-memory", + "href": "", + "available": false, + "current": false, + "number": "07", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L08", + "title": "Subroutines and the RISC-V ABI", + "repo": "lab-rv32i-asm-subroutines-abi", + "href": "", + "available": false, + "current": false, + "number": "08", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "L09", + "title": "Load and Store", + "repo": "lab-rv32i-asm-load-store", + "href": "", + "available": false, + "current": false, + "number": "09", + "version": "", + "status": "planned", + "tasks": [] + } + ] + }, + { + "id": "c", + "title": "C · Freestanding RV32I and K&R", + "current": false, + "catalog_only": true, + "role": "", + "status": "", + "cards": [ + { + "id": "C01", + "title": "ASM, C and GCC", + "repo": "lab-rv32i-strlen-asm-c-gcc", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/852fa3c7-8329-583a-a244-b639d2e04495", + "available": true, + "current": false, + "number": "01", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Ręczna implementacja RV32I ASM" + }, + { + "id": "task02", + "title": "Referencyjna implementacja w C" + }, + { + "id": "task03", + "title": "ASM wyemitowany przez GCC" + } + ] + }, + { + "id": "C02", + "title": ".bss, .data and static storage", + "repo": "lab-rv32i-strlen-bss-data-stack", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/74afa921-fb51-5017-bcdb-f6e84fb444d8", + "available": true, + "current": false, + "number": "02", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Wynik strlen w .bss" + }, + { + "id": "task02", + "title": "Wynik i napis w .data" + }, + { + "id": "task03", + "title": "Nieużyta tablica lokalna" + }, + { + "id": "task04", + "title": "Użyta tablica lokalna i stack frame" + } + ] + }, + { + "id": "C03", + "title": "ABI and Stack Frame", + "repo": "lab-rv32i-strlen-abi-stack", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/72b22a0a-3297-5d75-a6ff-d1af48132d6c", + "available": true, + "current": false, + "number": "03", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Argument i wynik bez powrotu z main" + }, + { + "id": "task02", + "title": "Pełny stack frame i zachowanie ra" + } + ] + }, + { + "id": "C04", + "title": "Types, Operators and Expressions", + "repo": "lab-rv32i-c-types-operators-expressions", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/7818aa68-4983-5aca-bf7f-541cfce5c601", + "available": true, + "current": false, + "number": "04", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Nazwy i stałe symboliczne" + }, + { + "id": "task02", + "title": "Typy i zakresy" + }, + { + "id": "task03", + "title": "Stałe, długość i enum" + }, + { + "id": "task04", + "title": "Deklaracje, inicjalizacja i const" + }, + { + "id": "task05", + "title": "Arytmetyka i rok przestępny" + }, + { + "id": "task06", + "title": "Porównania i logika" + }, + { + "id": "task07", + "title": "Konwersje: atoi, lower i htoi" + }, + { + "id": "task08", + "title": "Inkrementacja i operacje na napisach" + }, + { + "id": "task09", + "title": "Operatory bitowe" + }, + { + "id": "task10", + "title": "Przypisania i bitcount" + }, + { + "id": "task11", + "title": "Operator warunkowy" + }, + { + "id": "task12", + "title": "Priorytet i kolejność obliczeń" + } + ] + }, + { + "id": "C05", + "title": "Control Flow", + "repo": "lab-rv32i-c-control-flow", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/7512361d-e5e6-5c08-ab18-8be29dacdc10", + "available": true, + "current": false, + "number": "05", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Instrukcje i bloki" + }, + { + "id": "task02", + "title": "if-else i dangling else" + }, + { + "id": "task03", + "title": "else-if i wyszukiwanie binarne" + }, + { + "id": "task04", + "title": "switch: escape i unescape" + }, + { + "id": "task05", + "title": "while, for i Shell sort" + }, + { + "id": "task06", + "title": "do-while i itoa" + }, + { + "id": "task07", + "title": "break i continue" + }, + { + "id": "task08", + "title": "goto i etykiety" + } + ] + }, + { + "id": "C06", + "title": "Functions and Program Structure", + "repo": "lab-rv32i-c-functions-program-structure", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/9667818d-b691-501d-817c-b58be4cbd594", + "available": true, + "current": false, + "number": "06", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Funkcje i strindex" + }, + { + "id": "task02", + "title": "double i atof z wykładnikiem" + }, + { + "id": "task03", + "title": "Zewnętrzny stos RPN" + }, + { + "id": "task04", + "title": "Scope i extern" + }, + { + "id": "task05", + "title": "Nagłówki i prototypy" + }, + { + "id": "task06", + "title": "Static storage" + }, + { + "id": "task07", + "title": "Zmienne register" + }, + { + "id": "task08", + "title": "Struktura blokowa" + }, + { + "id": "task09", + "title": "Inicjalizacja" + }, + { + "id": "task10", + "title": "Rekurencja i quicksort" + }, + { + "id": "task11", + "title": "Preprocesor i makra" + } + ] + }, + { + "id": "C07", + "title": "Pointers, Arrays and Linear Allocator", + "repo": "lab-rv32i-c-pointers-arrays", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/98dbe323-c624-53d6-9fe2-4ee688c44b38", + "available": true, + "current": false, + "number": "07", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "task01" + }, + { + "id": "task02", + "title": "task02" + }, + { + "id": "task03", + "title": "task03" + }, + { + "id": "task04", + "title": "K&R 5.4 -- Linear Memory Allocator" + }, + { + "id": "task05", + "title": "task05" + }, + { + "id": "task06", + "title": "task06" + }, + { + "id": "task07", + "title": "task07" + }, + { + "id": "task08", + "title": "task08" + }, + { + "id": "task09", + "title": "task09" + }, + { + "id": "task10", + "title": "task10" + }, + { + "id": "task11", + "title": "task11" + }, + { + "id": "task12", + "title": "task12" + } + ] + }, + { + "id": "C08", + "title": "Structures and Linked State", + "repo": "lab-rv32i-c-structures", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/f60fbba3-a788-5f1e-bc24-52af82f227c9", + "available": true, + "current": false, + "number": "08", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Układ BlockHeader" + }, + { + "id": "task02", + "title": "Nagłówek, payload i odzyskanie właściciela" + }, + { + "id": "task03", + "title": "Intruzywna lista wolnych bloków" + }, + { + "id": "task04", + "title": "Wyrównana arena dwóch bloków" + } + ] + }, + { + "id": "C09", + "title": "smalloc, sbrk and minimal libc", + "repo": "lab-rv32i-c-smalloc-sbrk-libc", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/8e4f8bee-41f0-523b-8ea2-8926bd3d7ab0", + "available": true, + "current": false, + "number": "09", + "version": "v00.01", + "status": "planned", + "tasks": [ + { + "id": "task01", + "title": "strlen z libc bez sterty" + }, + { + "id": "task02", + "title": "Kontrolowany brak dostawcy sbrk" + }, + { + "id": "task03", + "title": "Bounded sbrk i atomowy błąd" + }, + { + "id": "task04", + "title": "Wyrównany smalloc append-only" + }, + { + "id": "task05", + "title": "malloc/free picolibc jako czarna skrzynka" + } + ] + }, + { + "id": "C10", + "title": "RV32I Traps and Interrupt Control", + "repo": "lab-rv32i-c-interrupts", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/8fb9c110-557b-5081-8ae2-a56800f872e8", + "available": true, + "current": false, + "number": "10", + "version": "v00.01", + "status": "planned", + "tasks": [ + { + "id": "task01", + "title": "ECALL i wznowienie pod mepc+4" + }, + { + "id": "task02", + "title": "Machine software IRQ i clear źródła" + }, + { + "id": "task03", + "title": "Macierz pending, MSIE i MIE" + } + ] + }, + { + "id": "C11", + "title": "Machine Timer and Periodic Work", + "repo": "lab-rv32i-c-timer", + "href": "", + "available": false, + "current": false, + "number": "11", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "C12", + "title": "UART — polling and interrupts", + "repo": "lab-rv32i-c-uart", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/64f7c516-78b1-58ee-8619-a82d7061079f", + "available": true, + "current": false, + "number": "12", + "version": "v00.01", + "status": "planned", + "tasks": [ + { + "id": "task01", + "title": "Polling jednego bajtu" + }, + { + "id": "task02", + "title": "Odbiór R przez external IRQ 16" + }, + { + "id": "task03", + "title": "Jednokomórkowa skrzynka drop-newest" + } + ] + }, + { + "id": "C13", + "title": "GPIO, Edges and Debounce", + "repo": "lab-rv32i-c-gpio", + "href": "", + "available": false, + "current": false, + "number": "13", + "version": "", + "status": "planned", + "tasks": [] + } + ] + } + ] + }, + { + "id": "year-2", + "title": "Rok 2", + "current": true, + "series": [ + { + "id": "cpp", + "title": "C++", + "current": false, + "catalog_only": true, + "role": "", + "status": "", + "cards": [ + { + "id": "CPP01", + "title": "Translation Units, Linkage and Namespaces", + "repo": "lab-cpp-build-namespaces", + "href": "", + "available": false, + "current": false, + "number": "01", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP02", + "title": "Classes, Encapsulation and Invariants", + "repo": "lab-cpp-classes-invariants", + "href": "", + "available": false, + "current": false, + "number": "02", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP03", + "title": "Construction, Destruction and RAII", + "repo": "lab-cpp-lifetime-raii", + "href": "", + "available": false, + "current": false, + "number": "03", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP04", + "title": "References, const and Value Categories", + "repo": "lab-cpp-references-const", + "href": "", + "available": false, + "current": false, + "number": "04", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP05", + "title": "Copy, Move and the Rule of Zero/Five", + "repo": "lab-cpp-copy-move", + "href": "", + "available": false, + "current": false, + "number": "05", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP06", + "title": "Ownership and Resource Types", + "repo": "lab-cpp-ownership", + "href": "", + "available": false, + "current": false, + "number": "06", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP07", + "title": "Function and Class Templates", + "repo": "lab-cpp-templates", + "href": "", + "available": false, + "current": false, + "number": "07", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP08", + "title": "Static Polymorphism and CRTP", + "repo": "lab-cpp-static-polymorphism", + "href": "", + "available": false, + "current": false, + "number": "08", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP09", + "title": "Inheritance, Interfaces and Dynamic Dispatch", + "repo": "lab-cpp-dynamic-polymorphism", + "href": "", + "available": false, + "current": false, + "number": "09", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP10", + "title": "Operator Overloading and Strong Types", + "repo": "lab-cpp-strong-types", + "href": "", + "available": false, + "current": false, + "number": "10", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP11", + "title": "Containers, Iterators and Algorithms", + "repo": "lab-cpp-containers-iterators", + "href": "", + "available": false, + "current": false, + "number": "11", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP12", + "title": "Lambdas, Function Objects and Callables", + "repo": "lab-cpp-lambdas-callables", + "href": "", + "available": false, + "current": false, + "number": "12", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP13", + "title": "Error Models with and without Exceptions", + "repo": "lab-cpp-error-models", + "href": "", + "available": false, + "current": false, + "number": "13", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP14", + "title": "Object Layout, ABI and Binary Evidence", + "repo": "lab-cpp-abi-evidence", + "href": "", + "available": false, + "current": false, + "number": "14", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "CPP15", + "title": "Resource-type Integration Project", + "repo": "lab-cpp-resource-integration", + "href": "", + "available": false, + "current": false, + "number": "15", + "version": "", + "status": "planned", + "tasks": [] + } + ] + }, + { + "id": "freertos-c", + "title": "FreeRTOS C", + "current": true, + "catalog_only": true, + "role": "", + "status": "", + "cards": [ + { + "id": "FC01", + "title": "heap_4: From Linear Cursor to Reusable Blocks", + "repo": "lab-rv32i-freertos-heap4", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/aea09ab7-9bfd-5368-8d1b-c8724871c1a7", + "available": true, + "current": true, + "number": "01", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Predict and prove reusable heap_4 blocks" + } + ] + }, + { + "id": "FC02", + "title": "First Task, TCB and Task Stack", + "repo": "lab-rv32i-freertos-c-first-task", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/a2538a1a-3c37-4c14-a6ea-db5aba8fd038", + "available": true, + "current": false, + "number": "02", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Pierwszy task FreeRTOS — callback, context, TCB i stos" + } + ] + }, + { + "id": "FC03", + "title": "Tick, Scheduler, Priorities and Time Slicing", + "repo": "lab-rv32i-freertos-c-scheduler", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/2214a13f-34c6-40a1-a561-70a00ec98285", + "available": true, + "current": false, + "number": "03", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Kontrolowany eksperyment schedulera FreeRTOS" + } + ] + }, + { + "id": "FC04", + "title": "Delay, Blocking and Task States", + "repo": "lab-rv32i-freertos-c-delay-state", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/4a7ef04c-ab08-5783-9192-5b02a90f05f8", + "available": true, + "current": false, + "number": "04", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Delay, blokowanie, zawieszenie i self-delete" + } + ] + }, + { + "id": "FC05", + "title": "Queues and Byte-copy Semantics", + "repo": "lab-rv32i-freertos-c-queue", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/8ee8f36a-471b-51bc-97b8-e204bd541c61", + "available": true, + "current": false, + "number": "05", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Kolejka długości 1: empty, full, copy i FIFO" + } + ] + }, + { + "id": "FC06", + "title": "Software Timers and the Daemon Task", + "repo": "lab-rv32i-freertos-c-software-timers", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/ab188300-f03d-5ddb-8316-b9534876a5bc", + "available": true, + "current": false, + "number": "06", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "One-shot, auto-reload i timer daemon" + } + ] + }, + { + "id": "FC07", + "title": "Interrupt-safe API and Semaphore Handoff", + "repo": "lab-rv32i-freertos-c-isr-semaphore", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/a6da1075-8d1f-5615-b0e6-0fc33e59e1e3", + "available": true, + "current": false, + "number": "07", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "External IRQ → FromISR semaphore → high-priority task" + } + ] + }, + { + "id": "FC08", + "title": "Critical Sections, Mutexes and Priority Inheritance", + "repo": "lab-rv32i-freertos-c-resource-management", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/2392f81a-ed6c-510b-86b5-06c5e2f1c6aa", + "available": true, + "current": false, + "number": "08", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Low/Medium/High: ownership i dziedziczenie priorytetu" + } + ] + }, + { + "id": "FC09", + "title": "Event Groups and Multi-event Synchronization", + "repo": "lab-rv32i-freertos-c-event-groups", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f", + "available": true, + "current": false, + "number": "09", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "ALL-ready i trzyosobowa bariera" + } + ] + }, + { + "id": "FC10", + "title": "Direct-to-task Notifications", + "repo": "lab-rv32i-freertos-c-notifications", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3b57334e-2c35-5207-a51d-9321906db078", + "available": true, + "current": false, + "number": "10", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Count, overwrite i bit flags na jednym slocie" + } + ] + }, + { + "id": "FC11", + "title": "Static Allocation and Bounded Storage", + "repo": "lab-rv32i-freertos-c-static-allocation", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/f4d7caf3-d665-5a2d-b9eb-39a120a64ff7", + "available": true, + "current": false, + "number": "11", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Same behavior, two storage policies" + } + ] + }, + { + "id": "FC12", + "title": "Assertions, Hooks, Stack Checks and Runtime Diagnostics", + "repo": "lab-rv32i-freertos-c-diagnostics", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/c3027314-85a4-5e4a-af13-0939c7467a62", + "available": true, + "current": false, + "number": "12", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Diagnose before changing the program" + } + ] + }, + { + "id": "FC13", + "title": "UART Interrupt-to-task Pipeline", + "repo": "lab-rv32i-freertos-c-uart", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/6a838fd1-ab1b-52b6-baaf-659120a4d60a", + "available": true, + "current": false, + "number": "13", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Build and prove a bounded UART RX pipeline" + } + ] + }, + { + "id": "FC14", + "title": "GPIO, Hardware Timer and Deferred Work", + "repo": "lab-rv32i-freertos-c-gpio-timer", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/0cc561df-bf81-5bba-9df1-c872d5b42eb8", + "available": true, + "current": false, + "number": "14", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Prove one machine-timer event from ISR to daemon GPIO work" + } + ] + }, + { + "id": "FC15", + "title": "Integrated Deterministic FreeRTOS C Application", + "repo": "lab-rv32i-freertos-c-integration", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/fe92efeb-3c38-5975-86d8-ed630e1ad3bb", + "available": true, + "current": false, + "number": "15", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Prove one complete FreeRTOS C architecture" + } + ] + } + ] + }, + { + "id": "freertos-cpp", + "title": "FreeRTOS C++", + "current": false, + "catalog_only": true, + "role": "", + "status": "", + "cards": [ + { + "id": "K02", + "title": "C++ Task Wrapper, CRTP and Lifecycle", + "repo": "lab-rv32i-freertos-task-stack-vector", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/948ce9fd-3d0c-5721-a0ae-ef422008fec8", + "available": true, + "current": false, + "number": "02", + "version": "v00.04", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "C++ Task wrapper — OOP i debugowanie cyklu życia" + } + ] + }, + { + "id": "K03", + "title": "Vector V1 — Destructor, Move, Ownership and RAII", + "repo": "lab-rv32i-freertos-vector-raii", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/de1a2818-4c30-5760-8b31-255114f82e90", + "available": true, + "current": false, + "number": "03", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Vector V1 — transfer własności i powrót heapu" + } + ] + }, + { + "id": "K04", + "title": "Scheduler States, Priorities and Typed Ticks", + "repo": "lab-rv32i-freertos-scheduler-states", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/853a7dd7-b00b-4f4a-96e8-c160fc5bb04a", + "available": true, + "current": false, + "number": "04", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Osiem snapshotów decyzji schedulera" + } + ] + }, + { + "id": "K05", + "title": "C++ Heap Bridge, Heap Models and HeapStats", + "repo": "lab-rv32i-freertos-heap-models", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/c456b505-dc5c-4894-b832-bb4c5afd0feb", + "available": true, + "current": false, + "number": "05", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Fragmentacja, koalescencja i historyczny watermark" + } + ] + }, + { + "id": "K06", + "title": "MemoryResource and FreeRtosAllocator", + "repo": "lab-rv32i-freertos-allocator-resource", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/1af48a2e-8564-4e18-8115-b2c0208169d6", + "available": true, + "current": false, + "number": "06", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Dwa zasoby, jeden typed allocator" + } + ] + }, + { + "id": "K07", + "title": "TaskHandle_t, Explicit Start and Static Trampoline", + "repo": "lab-rv32i-freertos-task-wrapper", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/9bffead0-4341-4350-806d-e975b1a3a08f", + "available": true, + "current": false, + "number": "07", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Stabilny obiekt przez statyczny trampoline" + } + ] + }, + { + "id": "K08", + "title": "DynamicTask, StaticTask, Deletion and Lifetime", + "repo": "lab-rv32i-freertos-static-task", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/d9e45417-a37f-487c-813f-fc7a44d4b4f3", + "available": true, + "current": false, + "number": "08", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Dwie polityki storage i pełna oś delete" + } + ] + }, + { + "id": "K09", + "title": "Scheduler Facade and Scoped Kernel Guards", + "repo": "lab-rv32i-freertos-kernel-facade", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/6a2ab068-17e7-4bfa-b726-2df37787ed69", + "available": true, + "current": false, + "number": "09", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Fasada kernela i restore na każdej ścieżce" + } + ] + }, + { + "id": "K10", + "title": "Queue and StaticQueue", + "repo": "lab-rv32i-freertos-queue", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/66967c2d-bb34-4344-8064-f54d06cce47a", + "available": true, + "current": false, + "number": "10", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Typed byte-copy queue z dwiema politykami storage" + } + ] + }, + { + "id": "K11", + "title": "Mutex, LockGuard and Priority Inheritance", + "repo": "lab-rv32i-freertos-mutex", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/34d7ad61-6b03-4922-8e58-b8b98316e5f7", + "available": true, + "current": false, + "number": "11", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "LockGuard i zmierzone priority inheritance" + } + ] + }, + { + "id": "K12", + "title": "Semaphores and Task Notifications", + "repo": "lab-rv32i-freertos-semaphore-notify", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/fcb6107c-268f-4e86-a8cc-092e5875f6f0", + "available": true, + "current": false, + "number": "12", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Semaphore slots i jednoodbiorcza notification" + } + ] + }, + { + "id": "K13", + "title": "EventGroup and Coordinated State", + "repo": "lab-rv32i-freertos-event-group", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/5fbcd7c6-3a73-4cd2-b76c-bdb016d1daaa", + "available": true, + "current": false, + "number": "13", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Typed EventGroup i trzy źródła stanu" + } + ] + }, + { + "id": "K14", + "title": "Software Timer and the Timer Daemon Task", + "repo": "lab-rv32i-freertos-sw-timer", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/78db37df-63e5-4c5b-80ce-f73a411f0b50", + "available": true, + "current": false, + "number": "14", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "Static one-shot i periodic timer na daemon tasku" + } + ] + }, + { + "id": "K15", + "title": "Explicit FromISR, UART and GPIO Wrappers", + "repo": "lab-rv32i-freertos-isr-drivers", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/02f6cd71-5c85-4883-a237-1d4ba08d9469", + "available": true, + "current": false, + "number": "15", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "UART queue i GPIO notify z realnego IRQ" + } + ] + }, + { + "id": "K16", + "title": "Integrated Real-time Application and Evidence", + "repo": "lab-rv32i-freertos-integration", + "href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/05b4f486-a27c-455d-a315-f4e51a4c66b3", + "available": true, + "current": false, + "number": "16", + "version": "v00.01", + "status": "existing", + "tasks": [ + { + "id": "task01", + "title": "End-to-end RTOS service i evidence report" + } + ] + } + ] + }, + { + "id": "posix-threads", + "title": "POSIX Threads", + "current": false, + "catalog_only": true, + "role": "", + "status": "", + "cards": [ + { + "id": "PT01", + "title": "Process and Thread Execution Context", + "repo": "lab-posix-process-thread", + "href": "", + "available": false, + "current": false, + "number": "01", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT02", + "title": "pthread_create, pthread_join and Lifecycle", + "repo": "lab-posix-pthread-create-join", + "href": "", + "available": false, + "current": false, + "number": "02", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT03", + "title": "Arguments, Return Values and Ownership", + "repo": "lab-posix-thread-arguments", + "href": "", + "available": false, + "current": false, + "number": "03", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT04", + "title": "Data Races and the Happens-before Question", + "repo": "lab-posix-data-races", + "href": "", + "available": false, + "current": false, + "number": "04", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT05", + "title": "Mutex, Critical Section and Deadlock", + "repo": "lab-posix-mutex", + "href": "", + "available": false, + "current": false, + "number": "05", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT06", + "title": "Condition Variables and Predicates", + "repo": "lab-posix-condition-variable", + "href": "", + "available": false, + "current": false, + "number": "06", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT07", + "title": "Bounded Producer–Consumer Queue", + "repo": "lab-posix-producer-consumer", + "href": "", + "available": false, + "current": false, + "number": "07", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT08", + "title": "POSIX Semaphores", + "repo": "lab-posix-semaphore", + "href": "", + "available": false, + "current": false, + "number": "08", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT09", + "title": "Reader–Writer Lock", + "repo": "lab-posix-rwlock", + "href": "", + "available": false, + "current": false, + "number": "09", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT10", + "title": "C Atomics and Memory Ordering", + "repo": "lab-posix-atomics", + "href": "", + "available": false, + "current": false, + "number": "10", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT11", + "title": "Cancellation, Cleanup and Safe Shutdown", + "repo": "lab-posix-cancellation-cleanup", + "href": "", + "available": false, + "current": false, + "number": "11", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT12", + "title": "Thread-local Storage", + "repo": "lab-posix-thread-local", + "href": "", + "available": false, + "current": false, + "number": "12", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT13", + "title": "Scheduling Policy, Priority and Affinity", + "repo": "lab-posix-scheduling", + "href": "", + "available": false, + "current": false, + "number": "13", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT14", + "title": "GDB, Sanitizers and Race Evidence", + "repo": "lab-posix-thread-debugging", + "href": "", + "available": false, + "current": false, + "number": "14", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "PT15", + "title": "POSIX Threads vs FreeRTOS Integration", + "repo": "lab-posix-freertos-comparison", + "href": "", + "available": false, + "current": false, + "number": "15", + "version": "", + "status": "planned", + "tasks": [] + } + ] + }, + { + "id": "oop", + "title": "OOP and Design Patterns", + "current": false, + "catalog_only": true, + "role": "reference", + "status": "", + "cards": [ + { + "id": "OOP01", + "title": "Strategy — Replaceable Behaviour", + "repo": "lab-cpp-oop-strategy", + "href": "", + "available": false, + "current": false, + "number": "01", + "version": "", + "status": "design", + "tasks": [] + }, + { + "id": "OOP02", + "title": "Adapter — Stable Boundary", + "repo": "lab-cpp-oop-adapter", + "href": "", + "available": false, + "current": false, + "number": "02", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP03", + "title": "Template Method — Fixed Skeleton", + "repo": "lab-cpp-oop-template-method", + "href": "", + "available": false, + "current": false, + "number": "03", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP04", + "title": "Static vs Dynamic Dispatch", + "repo": "lab-cpp-oop-dispatch", + "href": "", + "available": false, + "current": false, + "number": "04", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP05", + "title": "RAII and Ownership", + "repo": "lab-cpp-oop-raii", + "href": "", + "available": false, + "current": false, + "number": "05", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP06", + "title": "State — Explicit Behaviour", + "repo": "lab-cpp-oop-state", + "href": "", + "available": false, + "current": false, + "number": "06", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP07", + "title": "Facade — Subsystem Boundary", + "repo": "lab-cpp-oop-facade", + "href": "", + "available": false, + "current": false, + "number": "07", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP08", + "title": "Command — Request as Object", + "repo": "lab-cpp-oop-command", + "href": "", + "available": false, + "current": false, + "number": "08", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP09", + "title": "Observer — Subscription and Telemetry", + "repo": "lab-cpp-oop-observer", + "href": "", + "available": false, + "current": false, + "number": "09", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP10", + "title": "Factory Method — Resource Policy", + "repo": "lab-cpp-oop-factory-method", + "href": "", + "available": false, + "current": false, + "number": "10", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP11", + "title": "Builder — Valid Configuration", + "repo": "lab-cpp-oop-builder", + "href": "", + "available": false, + "current": false, + "number": "11", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP12", + "title": "Decorator — Measurement and Diagnostics", + "repo": "lab-cpp-oop-decorator", + "href": "", + "available": false, + "current": false, + "number": "12", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP13", + "title": "Composite — Component Tree", + "repo": "lab-cpp-oop-composite", + "href": "", + "available": false, + "current": false, + "number": "13", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP14", + "title": "Chain of Responsibility", + "repo": "lab-cpp-oop-chain", + "href": "", + "available": false, + "current": false, + "number": "14", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP15", + "title": "Pattern-language Integration", + "repo": "lab-cpp-oop-integration", + "href": "", + "available": false, + "current": false, + "number": "15", + "version": "", + "status": "planned", + "tasks": [] + } + ] + } + ] + }, + { + "id": "year-3", + "title": "Rok 3 · plan", + "current": false, + "series": [ + { + "id": "modern-cpp-stl", + "title": "Modern C++ / STL", + "current": false, + "catalog_only": true, + "role": "", + "status": "scope-reserved", + "cards": [] + }, + { + "id": "std-threads", + "title": "std::thread / std::jthread", + "current": false, + "catalog_only": true, + "role": "", + "status": "scope-reserved", + "cards": [] + }, + { + "id": "boost-asio", + "title": "Boost.Asio", + "current": false, + "catalog_only": true, + "role": "", + "status": "scope-reserved", + "cards": [] + }, + { + "id": "oop", + "title": "OOP and Design Patterns", + "current": false, + "catalog_only": true, + "role": "reference", + "status": "", + "cards": [ + { + "id": "OOP01", + "title": "Strategy — Replaceable Behaviour", + "repo": "lab-cpp-oop-strategy", + "href": "", + "available": false, + "current": false, + "number": "01", + "version": "", + "status": "design", + "tasks": [] + }, + { + "id": "OOP02", + "title": "Adapter — Stable Boundary", + "repo": "lab-cpp-oop-adapter", + "href": "", + "available": false, + "current": false, + "number": "02", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP03", + "title": "Template Method — Fixed Skeleton", + "repo": "lab-cpp-oop-template-method", + "href": "", + "available": false, + "current": false, + "number": "03", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP04", + "title": "Static vs Dynamic Dispatch", + "repo": "lab-cpp-oop-dispatch", + "href": "", + "available": false, + "current": false, + "number": "04", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP05", + "title": "RAII and Ownership", + "repo": "lab-cpp-oop-raii", + "href": "", + "available": false, + "current": false, + "number": "05", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP06", + "title": "State — Explicit Behaviour", + "repo": "lab-cpp-oop-state", + "href": "", + "available": false, + "current": false, + "number": "06", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP07", + "title": "Facade — Subsystem Boundary", + "repo": "lab-cpp-oop-facade", + "href": "", + "available": false, + "current": false, + "number": "07", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP08", + "title": "Command — Request as Object", + "repo": "lab-cpp-oop-command", + "href": "", + "available": false, + "current": false, + "number": "08", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP09", + "title": "Observer — Subscription and Telemetry", + "repo": "lab-cpp-oop-observer", + "href": "", + "available": false, + "current": false, + "number": "09", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP10", + "title": "Factory Method — Resource Policy", + "repo": "lab-cpp-oop-factory-method", + "href": "", + "available": false, + "current": false, + "number": "10", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP11", + "title": "Builder — Valid Configuration", + "repo": "lab-cpp-oop-builder", + "href": "", + "available": false, + "current": false, + "number": "11", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP12", + "title": "Decorator — Measurement and Diagnostics", + "repo": "lab-cpp-oop-decorator", + "href": "", + "available": false, + "current": false, + "number": "12", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP13", + "title": "Composite — Component Tree", + "repo": "lab-cpp-oop-composite", + "href": "", + "available": false, + "current": false, + "number": "13", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP14", + "title": "Chain of Responsibility", + "repo": "lab-cpp-oop-chain", + "href": "", + "available": false, + "current": false, + "number": "14", + "version": "", + "status": "planned", + "tasks": [] + }, + { + "id": "OOP15", + "title": "Pattern-language Integration", + "repo": "lab-cpp-oop-integration", + "href": "", + "available": false, + "current": false, + "number": "15", + "version": "", + "status": "planned", + "tasks": [] + } + ] + } + ] + }, + { + "id": "year-4", + "title": "Rok 4 · plan", + "current": false, + "series": [ + { + "id": "transformers-gpu", + "title": "Transformers on GPU", + "current": false, + "catalog_only": true, + "role": "", + "status": "scope-reserved", + "cards": [] + } + ] + } + ] + }, + { + "id": "fiz", + "title": "FIZ · Fizyka", + "current": false, + "levels": [ + { + "id": "all", + "title": "Katalog", + "current": false, + "series": [ + { + "id": "fiz", + "title": "Fizyka", + "current": false, + "catalog_only": false, + "role": "", + "status": "", + "cards": [ + { + "id": "ruch-1d", + "title": "Ruch 1D", + "repo": "ruch-1d", + "href": "", + "available": false, + "current": false, + "number": "", + "version": "", + "status": "", + "tasks": [] + }, + { + "id": "ruch-2d", + "title": "Ruch 2D", + "repo": "ruch-2d", + "href": "", + "available": false, + "current": false, + "number": "", + "version": "", + "status": "", + "tasks": [] + }, + { + "id": "ruch-po-okregu", + "title": "Ruch po okręgu", + "repo": "ruch-po-okregu", + "href": "", + "available": false, + "current": false, + "number": "", + "version": "", + "status": "", + "tasks": [] + } + ] + } + ] + } + ] + } + ] + }, + "total_pages": 7, + "front": { + "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEheap_4: From Linear Cursor to Reusable Blocks
VER.v00.01
DATETIME2026-07-20T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD01/15
SHEET1/7
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUID87e48095-7793-54e3-9230-4e61d31bd459CARD UUIDaea09ab7-9bfd-5368-8d1b-c8724871c1a7AUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", + "left_margin_html": "
TECH
", + "right_margin_html": "
OG
", + "goal_title": "Cel karty", + "goal_html": "

Uczeń przechodzi od liniowego kursora z K&R 5.4 do wielokrotnego użycia tej samej areny: rozpoznaje nagłówek bloku, first-fit, split oraz dwustronne scalanie wolnych bloków w heap_4.

", + "scope_title": "Zakres karty", + "scope_html": "

Dwa małe modele C przygotowują przewidywanie. Główny replay uruchamia prawdziwe FreeRTOS-Kernel V11.3.0 heap_4 na RV32I/Hazard3 i dowodzi fragmentacji, pełnego scalenia, minimum-ever oraz kontrolowanego OOM.

", + "scope_columns": [ + "chapter", + "task", + "idea", + "priority", + "status", + "version" + ], + "scope_headers": [ + "Lekcja", + "Task", + "Najważniejsza idea", + "Priorytet", + "Status", + "Version" + ], + "scope_rows": [ + { + "chapter": "FC01", + "task": "Task01", + "idea_html": "

headers, address-ordered free list, first-fit, split, coalescing and heap statistics

", + "priority": "główny", + "status": "ready", + "status_label": "opracowane", + "version": "v00.01", + "key": true + } + ] + }, + "sections": [ + { + "id": "section-1-content", + "index": 1, + "title": "A1 — Od liniowego kursora do odzyskiwalnej areny", + "show_heading": false, + "toc_entry": true, + "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEheap_4: From Linear Cursor to Reusable Blocks
VER.v00.01
DATETIME2026-07-20T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD01/15
SHEET2/7
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUID87e48095-7793-54e3-9230-4e61d31bd459CARD UUIDaea09ab7-9bfd-5368-8d1b-c8724871c1a7AUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", + "left_margin_html": "
TECH
-
", + "right_margin_html": "
OG
-
", + "content_html": "", + "tasks": [], + "assets": [ + { + "label": "fig:a1-context", + "logical_label": "fig:a1-context", + "figure_number": 1, + "caption": "A1 CONTEXT — od żądania aplikacji do rzeczywistych bajtów ucHeap. — część 1/1 (r1 c1)", + "alt": "A1 · granice odpowiedzialności heap_4", + "href": "figures/a1-context.svg", + "source_href": "figures/a1-context.puml", + "width": 1.0, + "kind": "diagram", + "interactive": { + "kind": "uml-class", + "storage_key": "fc01-a1-context-tile-1", + "title": "A1 · granice odpowiedzialności heap_4", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a1", + "label": "A1 CONTEXT", + "description": "Aplikacja korzysta z publicznego API, heap_4 zarządza jedną areną, a Hazard3 pokazuje jej rzeczywisty stan." + }, + "phases": [ + { + "id": "boundary", + "label": "APPLICATION / API / ALLOCATOR / TARGET", + "steps": [ + { + "id": "application", + "number": 1, + "label": "aplikacja żąda i zwalnia bajty", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Aplikacja zna wyłącznie publiczne API i wskaźniki payloadu.", + "evidence": "trzy żądania 24, 40 i 16 bajtów", + "strategy": { + "id": "task01/a1/boundary/application", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "api", + "number": 2, + "label": "FreeRTOS wystawia malloc, free i statystyki", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:90", + "description": "API oddziela eksperyment od prywatnej listy bloków.", + "evidence": "pvPortMalloc, vPortFree, vPortGetHeapStats", + "strategy": { + "id": "task01/a1/boundary/api", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "allocator", + "number": 3, + "label": "heap_4 zarządza blokami i kolejnością adresów", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Prywatny mechanizm wybiera, dzieli i scala wolne bloki.", + "evidence": "reset i inicjalizacja listy", + "strategy": { + "id": "task01/a1/boundary/allocator", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "arena", + "number": 4, + "label": "ucHeap jest jedną ograniczoną areną", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:11", + "description": "Metadane i payload znajdują się w tej samej statycznej tablicy.", + "evidence": "4096 bajtów, wyrównanie portu", + "strategy": { + "id": "task01/a1/boundary/arena", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "target", + "number": 5, + "label": "Hazard3 ujawnia adresy i bajty", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "05", + "code_ref": "tests/check_task03_elf.sh:8", + "description": "ELF łączy kod, symbole i pamięć obserwowaną przez GDB.", + "evidence": "ucHeap i checkpointy w symbolach ELF", + "strategy": { + "id": "task01/a1/boundary/target", + "kind": "code", + "action": "open", + "expected_observations": [ + "upstream heap_4 symbols are linked", + "checkpoint and ucHeap symbols remain observable" + ], + "assertions": [ + "pvPortMalloc and vPortFree are present", + "prvInsertBlockIntoFreeList is present" + ], + "evidence_fields": [ + "source blob", + "ELF SHA256", + "image SHA256", + "symbol" + ], + "prerequisites": [ + "built ELF" + ], + "layout": [ + "symbols", + "sections", + "artifact hashes" + ], + "commands": [ + "tests/check_task03_elf.sh build/task03_freertos_heap4/prog.elf" + ], + "template_id": "code.identity" + } + } + ] + } + ] + }, + "tile": { + "index": 1, + "count": 1, + "row": 1, + "column": 1, + "rows": 1, + "columns": 1, + "x": 0.0, + "y": 0.0, + "width": 311.0, + "height": 600.0, + "full_x": 0.0, + "full_y": 0.0, + "full_width": 311.0, + "full_height": 600.0, + "page_width": 660.0, + "page_height": 760.0, + "overview": true, + "step_ids": [ + "allocator", + "api", + "application", + "arena", + "target" + ] + }, + "diagram_title": "A1 · granice odpowiedzialności heap_4", + "diagram_block_label": "A1 CONTEXT", + "diagram_description": "Aplikacja korzysta z publicznego API, heap_4 zarządza jedną areną, a Hazard3 pokazuje jej rzeczywisty stan.", + "diagram_phase_labels": [ + "APPLICATION / API / ALLOCATOR / TARGET" + ] + } + ], + "steps": [], + "spread_group": "", + "spread_label": "A1 CONTEXT — od żądania aplikacji do rzeczywistych bajtów ucHeap.", + "spread_columns": 1, + "spread_index": 1, + "spread_count": 1, + "page_orientation": "portrait" + }, + { + "id": "section-2-content", + "index": 2, + "title": "A2 — Nagłówek, payload i lista wolnych bloków", + "show_heading": false, + "toc_entry": true, + "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEheap_4: From Linear Cursor to Reusable Blocks
VER.v00.01
DATETIME2026-07-20T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD01/15
SHEET3/7
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUID87e48095-7793-54e3-9230-4e61d31bd459CARD UUIDaea09ab7-9bfd-5368-8d1b-c8724871c1a7AUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", + "left_margin_html": "
TECH
-
", + "right_margin_html": "
OG
-
", + "content_html": "", + "tasks": [], + "assets": [ + { + "label": "fig:a2-structure", + "logical_label": "fig:a2-structure", + "figure_number": 2, + "caption": "A2 STRUCTURE — metadane wewnątrz areny i adresowo uporządkowana lista. — część 1/1 (r1 c1)", + "alt": "A2 · struktura bloku i listy", + "href": "figures/a2-structure.svg", + "source_href": "figures/a2-structure.puml", + "width": 1.0, + "kind": "diagram", + "interactive": { + "kind": "uml-class", + "storage_key": "fc01-a2-structure-tile-1", + "title": "A2 · struktura bloku i listy", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a2", + "label": "A2 STRUCTURE", + "description": "Każdy blok ma nagłówek, a tylko wolne bloki wykorzystują wskaźnik next do budowy listy uporządkowanej adresami." + }, + "phases": [ + { + "id": "blocks", + "label": "HEADER / PAYLOAD / FREE LIST", + "steps": [ + { + "id": "header", + "number": 1, + "label": "nagłówek przechowuje next i size", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "01", + "code_ref": "src/tasks/heap4_model.h:11", + "description": "ModelBlock pokazuje minimalny kontrakt metadanych heap_4.", + "evidence": "dwa słowa metadanych", + "strategy": { + "id": "task01/a2/blocks/header", + "kind": "code", + "action": "open", + "expected_observations": [ + "requested size includes header and alignment", + "free list is ordered by block address" + ], + "assertions": [ + "payload begins after the header", + "split preserves the total arena size" + ], + "evidence_fields": [ + "code_ref", + "header bytes", + "wanted bytes", + "block address" + ], + "prerequisites": [ + "K&R 5.4 linear allocator complete" + ], + "layout": [ + "header", + "payload", + "remainder", + "address-ordered list" + ], + "commands": [ + "rg -n 'ModelBlock|align_up|insert_and_coalesce' src/tasks" + ], + "template_id": "code.model" + } + }, + { + "id": "alignment", + "number": 2, + "label": "żądanie obejmuje nagłówek i wyrównanie", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "02", + "code_ref": "src/tasks/task01_first_fit_split.c:3", + "description": "13 bajtów payloadu zajmuje 32 bajty całego bloku.", + "evidence": "header=16, wanted=32", + "strategy": { + "id": "task01/a2/blocks/alignment", + "kind": "code", + "action": "open", + "expected_observations": [ + "requested size includes header and alignment", + "free list is ordered by block address" + ], + "assertions": [ + "payload begins after the header", + "split preserves the total arena size" + ], + "evidence_fields": [ + "code_ref", + "header bytes", + "wanted bytes", + "block address" + ], + "prerequisites": [ + "K&R 5.4 linear allocator complete" + ], + "layout": [ + "header", + "payload", + "remainder", + "address-ordered list" + ], + "commands": [ + "rg -n 'ModelBlock|align_up|insert_and_coalesce' src/tasks" + ], + "template_id": "code.model" + } + }, + { + "id": "split", + "number": 3, + "label": "split pozostawia osobny wolny blok", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "03", + "code_ref": "src/tasks/task01_first_fit_split.c:43", + "description": "Reszta zachowuje własny nagłówek i trafia na listę wolnych.", + "evidence": "32 + 224 = 256", + "strategy": { + "id": "task01/a2/blocks/split", + "kind": "code", + "action": "open", + "expected_observations": [ + "requested size includes header and alignment", + "free list is ordered by block address" + ], + "assertions": [ + "payload begins after the header", + "split preserves the total arena size" + ], + "evidence_fields": [ + "code_ref", + "header bytes", + "wanted bytes", + "block address" + ], + "prerequisites": [ + "K&R 5.4 linear allocator complete" + ], + "layout": [ + "header", + "payload", + "remainder", + "address-ordered list" + ], + "commands": [ + "rg -n 'ModelBlock|align_up|insert_and_coalesce' src/tasks" + ], + "template_id": "code.model" + } + }, + { + "id": "address-order", + "number": 4, + "label": "lista jest uporządkowana rosnącymi adresami", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "04", + "code_ref": "src/tasks/task02_address_order_coalesce.c:29", + "description": "Pozycja w liście ujawnia bezpośredniego poprzednika i następnika.", + "evidence": "previous < block < current", + "strategy": { + "id": "task01/a2/blocks/address-order", + "kind": "code", + "action": "open", + "expected_observations": [ + "requested size includes header and alignment", + "free list is ordered by block address" + ], + "assertions": [ + "payload begins after the header", + "split preserves the total arena size" + ], + "evidence_fields": [ + "code_ref", + "header bytes", + "wanted bytes", + "block address" + ], + "prerequisites": [ + "K&R 5.4 linear allocator complete" + ], + "layout": [ + "header", + "payload", + "remainder", + "address-ordered list" + ], + "commands": [ + "rg -n 'ModelBlock|align_up|insert_and_coalesce' src/tasks" + ], + "template_id": "code.model" + } + }, + { + "id": "right-join", + "number": 5, + "label": "blok scala się z prawym sąsiadem", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "05", + "code_ref": "src/tasks/task02_address_order_coalesce.c:40", + "description": "Koniec zwalnianego bloku równy adresowi current oznacza ciągłość.", + "evidence": "block + size == current", + "strategy": { + "id": "task01/a2/blocks/right-join", + "kind": "code", + "action": "open", + "expected_observations": [ + "requested size includes header and alignment", + "free list is ordered by block address" + ], + "assertions": [ + "payload begins after the header", + "split preserves the total arena size" + ], + "evidence_fields": [ + "code_ref", + "header bytes", + "wanted bytes", + "block address" + ], + "prerequisites": [ + "K&R 5.4 linear allocator complete" + ], + "layout": [ + "header", + "payload", + "remainder", + "address-ordered list" + ], + "commands": [ + "rg -n 'ModelBlock|align_up|insert_and_coalesce' src/tasks" + ], + "template_id": "code.model" + } + }, + { + "id": "left-join", + "number": 6, + "label": "wynik scala się z lewym sąsiadem", + "mode": "CODE", + "strategy_ref": "code.model", + "svg_label": "06", + "code_ref": "src/tasks/task02_address_order_coalesce.c:48", + "description": "Drugi test domyka dwustronne scalanie w jeden blok.", + "evidence": "previous + size == block", + "strategy": { + "id": "task01/a2/blocks/left-join", + "kind": "code", + "action": "open", + "expected_observations": [ + "requested size includes header and alignment", + "free list is ordered by block address" + ], + "assertions": [ + "payload begins after the header", + "split preserves the total arena size" + ], + "evidence_fields": [ + "code_ref", + "header bytes", + "wanted bytes", + "block address" + ], + "prerequisites": [ + "K&R 5.4 linear allocator complete" + ], + "layout": [ + "header", + "payload", + "remainder", + "address-ordered list" + ], + "commands": [ + "rg -n 'ModelBlock|align_up|insert_and_coalesce' src/tasks" + ], + "template_id": "code.model" + } + } + ] + } + ] + }, + "tile": { + "index": 1, + "count": 1, + "row": 1, + "column": 1, + "rows": 1, + "columns": 1, + "x": 0.0, + "y": 0.0, + "width": 295.0, + "height": 620.0, + "full_x": 0.0, + "full_y": 0.0, + "full_width": 295.0, + "full_height": 620.0, + "page_width": 660.0, + "page_height": 760.0, + "overview": true, + "step_ids": [ + "address-order", + "alignment", + "header", + "left-join", + "right-join", + "split" + ] + }, + "diagram_title": "A2 · struktura bloku i listy", + "diagram_block_label": "A2 STRUCTURE", + "diagram_description": "Każdy blok ma nagłówek, a tylko wolne bloki wykorzystują wskaźnik next do budowy listy uporządkowanej adresami.", + "diagram_phase_labels": [ + "HEADER / PAYLOAD / FREE LIST" + ] + } + ], + "steps": [], + "spread_group": "", + "spread_label": "A2 STRUCTURE — metadane wewnątrz areny i adresowo uporządkowana lista.", + "spread_columns": 1, + "spread_index": 1, + "spread_count": 1, + "page_orientation": "portrait" + }, + { + "id": "section-3-content", + "index": 3, + "title": "A5 — First-fit, fragmentacja i pełne scalenie", + "show_heading": false, + "toc_entry": true, + "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEheap_4: From Linear Cursor to Reusable Blocks
VER.v00.01
DATETIME2026-07-20T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD01/15
SHEET4/7
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUID87e48095-7793-54e3-9230-4e61d31bd459CARD UUIDaea09ab7-9bfd-5368-8d1b-c8724871c1a7AUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", + "left_margin_html": "
TECH
-
", + "right_margin_html": "
OG
-
", + "content_html": "", + "tasks": [], + "assets": [ + { + "label": "fig:a5-flow", + "logical_label": "fig:a5-flow", + "figure_number": 3, + "caption": "A5 FLOW — inicjalizacja, A/B/C, fragmentacja, dwustronne scalenie i OOM. — część 1/1 (r1 c1)", + "alt": "A5 · pełny przebieg heap_4", + "href": "figures/a5-flow.svg", + "source_href": "figures/a5-flow.puml", + "width": 1.0, + "kind": "diagram", + "interactive": { + "kind": "uml-sequence", + "storage_key": "fc01-a5-flow-tile-1", + "title": "A5 · pełny przebieg heap_4", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a5", + "label": "A5 FLOW", + "description": "Jeden przebieg A/B/C przechodzi od pustej areny przez trzy przydziały i dwa wolne obszary do ponownie scalonego bloku." + }, + "phases": [ + { + "id": "replay", + "label": "ALLOCATE / FRAGMENT / COALESCE", + "steps": [ + { + "id": "reset", + "number": 1, + "label": "reset i inicjalizacja areny", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Pierwsze małe żądanie inicjalizuje sentinele i listę.", + "evidence": "initial free = 4080", + "strategy": { + "id": "task01/a5/replay/reset", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "alloc-a", + "number": 2, + "label": "first-fit przydziela A", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Pierwszy wystarczający blok zostaje rozdzielony.", + "evidence": "A payload = 24", + "strategy": { + "id": "task01/a5/replay/alloc-a", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "alloc-bc", + "number": 3, + "label": "kolejne split tworzą B i C", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:79", + "description": "B i C zajmują kolejne fragmenty tego samego wolnego bloku.", + "evidence": "after allocations = 3952", + "strategy": { + "id": "task01/a5/replay/alloc-bc", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "free-ac", + "number": 4, + "label": "zwolnij A i C, pozostaw B", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:88", + "description": "C scala się z prawą resztą, ale B oddziela ją od A.", + "evidence": "dwa wolne bloki", + "strategy": { + "id": "task01/a5/replay/free-ac", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "fragmented", + "number": 5, + "label": "checkpoint fragmentacji", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:91", + "snapshot_ref": "task01.fragmented", + "description": "GDB zatrzymuje program przy dwóch wolnych blokach.", + "evidence": "xNumberOfFreeBlocks = 2", + "strategy": { + "id": "task01/a5/replay/fragmented", + "kind": "run", + "action": "replay", + "expected_observations": [ + "A and C are free while B remains allocated", + "the free list contains two blocks" + ], + "assertions": [ + "xNumberOfFreeBlocks equals 2", + "current free bytes exceed the largest free block" + ], + "evidence_fields": [ + "free blocks", + "largest block", + "free bytes", + "heap bytes" + ], + "prerequisites": [ + "clean Hazard3 RAM", + "task03 image loaded" + ], + "layout": [ + "source", + "free-list stats", + "ucHeap memory", + "registers" + ], + "commands": [ + "break heap4_fragmented_checkpoint", + "print g_fragmented_stats", + "x/64bx ucHeap" + ], + "template_id": "run.fragmented" + } + }, + { + "id": "free-b", + "number": 6, + "label": "zwolnij B między dwoma sąsiadami", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "06", + "code_ref": "src/tasks/task03_freertos_heap4.c:93", + "description": "Wstawienie adresowe umożliwia dwa testy ciągłości.", + "evidence": "A + B + C + reszta są ciągłe", + "strategy": { + "id": "task01/a5/replay/free-b", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "coalesced", + "number": 7, + "label": "arena wraca do jednego bloku", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "07", + "code_ref": "src/tasks/task03_freertos_heap4.c:96", + "snapshot_ref": "task01.coalesced", + "description": "Finalne statystyki dowodzą pełnego odzyskania areny.", + "evidence": "final free = initial free; blocks = 1", + "strategy": { + "id": "task01/a5/replay/coalesced", + "kind": "run", + "action": "replay", + "expected_observations": [ + "freeing B joins both neighbours", + "the arena returns to one reusable block" + ], + "assertions": [ + "final free equals initial free", + "minimum-ever does not rise after free", + "oversized allocation returns NULL and calls the hook once" + ], + "evidence_fields": [ + "final free", + "largest block", + "minimum-ever", + "OOM hook", + "PASS" + ], + "prerequisites": [ + "fragmented checkpoint reached" + ], + "layout": [ + "final stats", + "minimum-ever", + "OOM hook", + "PASS" + ], + "commands": [ + "break task03_debug_checkpoint", + "print g_final_stats", + "print g_task03_pass" + ], + "template_id": "run.coalesced" + } + }, + { + "id": "oom", + "number": 8, + "label": "zbyt duże żądanie kończy się NULL", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "08", + "code_ref": "src/tasks/task03_freertos_heap4.c:98", + "description": "Kontrolowany OOM nie narusza listy i wywołuje hook dokładnie raz.", + "evidence": "NULL, hooks=1, asserts=0", + "strategy": { + "id": "task01/a5/replay/oom", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + } + ] + } + ] + }, + "tile": { + "index": 1, + "count": 1, + "row": 1, + "column": 1, + "rows": 1, + "columns": 1, + "x": 0.0, + "y": 0.0, + "width": 811.0, + "height": 263.0, + "full_x": 0.0, + "full_y": 0.0, + "full_width": 811.0, + "full_height": 263.0, + "page_width": 940.0, + "page_height": 560.0, + "overview": true, + "step_ids": [ + "alloc-a", + "alloc-bc", + "coalesced", + "fragmented", + "free-ac", + "free-b", + "oom", + "reset" + ] + }, + "diagram_title": "A5 · pełny przebieg heap_4", + "diagram_block_label": "A5 FLOW", + "diagram_description": "Jeden przebieg A/B/C przechodzi od pustej areny przez trzy przydziały i dwa wolne obszary do ponownie scalonego bloku.", + "diagram_phase_labels": [ + "ALLOCATE / FRAGMENT / COALESCE" + ] + } + ], + "steps": [], + "spread_group": "", + "spread_label": "A5 FLOW — inicjalizacja, A/B/C, fragmentacja, dwustronne scalenie i OOM.", + "spread_columns": 1, + "spread_index": 1, + "spread_count": 1, + "page_orientation": "landscape" + }, + { + "id": "section-4-content", + "index": 4, + "title": "A6 — Stan bloku a stan statystyk", + "show_heading": false, + "toc_entry": true, + "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEheap_4: From Linear Cursor to Reusable Blocks
VER.v00.01
DATETIME2026-07-20T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD01/15
SHEET5/7
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUID87e48095-7793-54e3-9230-4e61d31bd459CARD UUIDaea09ab7-9bfd-5368-8d1b-c8724871c1a7AUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", + "left_margin_html": "
TECH
-
", + "right_margin_html": "
OG
-
", + "content_html": "", + "tasks": [], + "assets": [ + { + "label": "fig:a6-state", + "logical_label": "fig:a6-state", + "figure_number": 4, + "caption": "A6 STATE — wolny, przydzielony, rozdzielony, scalony oraz minimum-ever. — część 1/1 (r1 c1)", + "alt": "A6 · stany bloków i liczników", + "href": "figures/a6-state.svg", + "source_href": "figures/a6-state.puml", + "width": 1.0, + "kind": "diagram", + "interactive": { + "kind": "uml-class", + "storage_key": "fc01-a6-state-tile-1", + "title": "A6 · stany bloków i liczników", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a6", + "label": "A6 STATE", + "description": "Bieżąca liczba wolnych bajtów może rosnąć po free, ale minimum-ever pozostaje historycznym minimum." + }, + "phases": [ + { + "id": "state", + "label": "BLOCK STATE / HEAP STATS", + "steps": [ + { + "id": "free", + "number": 1, + "label": "wolny blok należy do listy", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:70", + "description": "Stan początkowy zawiera jeden największy wolny blok.", + "evidence": "initial free = largest free", + "strategy": { + "id": "task01/a6/state/free", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "allocated", + "number": 2, + "label": "przydzielony blok znika z listy wolnych", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "02", + "code_ref": "src/tasks/task03_freertos_heap4.c:78", + "description": "Payload jest wyrównany, a bieżąca wolna pamięć maleje.", + "evidence": "all payload pointers aligned", + "strategy": { + "id": "task01/a6/state/allocated", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "fragmented-state", + "number": 3, + "label": "dwa wolne bloki nie są jednym dużym blokiem", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:90", + "snapshot_ref": "task01.fragmented", + "description": "Suma wolnego miejsca nie gwarantuje jednego dużego przydziału.", + "evidence": "free blocks = 2", + "strategy": { + "id": "task01/a6/state/fragmented-state", + "kind": "run", + "action": "replay", + "expected_observations": [ + "A and C are free while B remains allocated", + "the free list contains two blocks" + ], + "assertions": [ + "xNumberOfFreeBlocks equals 2", + "current free bytes exceed the largest free block" + ], + "evidence_fields": [ + "free blocks", + "largest block", + "free bytes", + "heap bytes" + ], + "prerequisites": [ + "clean Hazard3 RAM", + "task03 image loaded" + ], + "layout": [ + "source", + "free-list stats", + "ucHeap memory", + "registers" + ], + "commands": [ + "break heap4_fragmented_checkpoint", + "print g_fragmented_stats", + "x/64bx ucHeap" + ], + "template_id": "run.fragmented" + } + }, + { + "id": "coalesced-state", + "number": 4, + "label": "scalenie przywraca jeden największy blok", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:94", + "snapshot_ref": "task01.coalesced", + "description": "Current free i largest wracają do wartości początkowej.", + "evidence": "free blocks = 1", + "strategy": { + "id": "task01/a6/state/coalesced-state", + "kind": "run", + "action": "replay", + "expected_observations": [ + "freeing B joins both neighbours", + "the arena returns to one reusable block" + ], + "assertions": [ + "final free equals initial free", + "minimum-ever does not rise after free", + "oversized allocation returns NULL and calls the hook once" + ], + "evidence_fields": [ + "final free", + "largest block", + "minimum-ever", + "OOM hook", + "PASS" + ], + "prerequisites": [ + "fragmented checkpoint reached" + ], + "layout": [ + "final stats", + "minimum-ever", + "OOM hook", + "PASS" + ], + "commands": [ + "break task03_debug_checkpoint", + "print g_final_stats", + "print g_task03_pass" + ], + "template_id": "run.coalesced" + } + }, + { + "id": "minimum-ever", + "number": 5, + "label": "minimum-ever zachowuje najniższy poziom", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:95", + "description": "Historyczne minimum nie zwiększa się po odzyskaniu pamięci.", + "evidence": "minimum-ever <= after allocations", + "strategy": { + "id": "task01/a6/state/minimum-ever", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + } + ] + } + ] + }, + "tile": { + "index": 1, + "count": 1, + "row": 1, + "column": 1, + "rows": 1, + "columns": 1, + "x": 0.0, + "y": 0.0, + "width": 346.0, + "height": 600.0, + "full_x": 0.0, + "full_y": 0.0, + "full_width": 346.0, + "full_height": 600.0, + "page_width": 660.0, + "page_height": 760.0, + "overview": true, + "step_ids": [ + "allocated", + "coalesced-state", + "fragmented-state", + "free", + "minimum-ever" + ] + }, + "diagram_title": "A6 · stany bloków i liczników", + "diagram_block_label": "A6 STATE", + "diagram_description": "Bieżąca liczba wolnych bajtów może rosnąć po free, ale minimum-ever pozostaje historycznym minimum.", + "diagram_phase_labels": [ + "BLOCK STATE / HEAP STATS" + ] + } + ], + "steps": [], + "spread_group": "", + "spread_label": "A6 STATE — wolny, przydzielony, rozdzielony, scalony oraz minimum-ever.", + "spread_columns": 1, + "spread_index": 1, + "spread_count": 1, + "page_orientation": "portrait" + }, + { + "id": "section-5-content", + "index": 5, + "title": "A7 — Dowód w Hazard3 i ELF", + "show_heading": false, + "toc_entry": true, + "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEheap_4: From Linear Cursor to Reusable Blocks
VER.v00.01
DATETIME2026-07-20T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD01/15
SHEET6/7
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUID87e48095-7793-54e3-9230-4e61d31bd459CARD UUIDaea09ab7-9bfd-5368-8d1b-c8724871c1a7AUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", + "left_margin_html": "
TECH
-
", + "right_margin_html": "
OG
-
", + "content_html": "", + "tasks": [], + "assets": [ + { + "label": "fig:a7-runtime", + "logical_label": "fig:a7-runtime", + "figure_number": 5, + "caption": "A7 RUNTIME — kod, ELF, checkpoint, pamięć i statystyki jednego przebiegu. — część 1/1 (r1 c1)", + "alt": "A7 · dowód runtime heap_4", + "href": "figures/a7-runtime.svg", + "source_href": "figures/a7-runtime.puml", + "width": 1.0, + "kind": "diagram", + "interactive": { + "kind": "uml-class", + "storage_key": "fc01-a7-runtime-tile-1", + "title": "A7 · dowód runtime heap_4", + "task": { + "id": "task01", + "label": "Task01 · mechanika heap_4" + }, + "block": { + "id": "a7", + "label": "A7 RUNTIME", + "description": "Ten sam artefakt łączy źródło, symbole ELF, dwa checkpointy, pamięć ucHeap i końcowe asercje." + }, + "phases": [ + { + "id": "evidence", + "label": "ARTIFACT / CHECKPOINT / MEMORY / ASSERTION", + "steps": [ + { + "id": "source", + "number": 1, + "label": "źródło wskazuje eksperyment A/B/C", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "01", + "code_ref": "src/tasks/task03_freertos_heap4.c:62", + "description": "Blob źródła jest częścią tożsamości karty.", + "evidence": "source git blob", + "strategy": { + "id": "task01/a7/evidence/source", + "kind": "code", + "action": "open", + "expected_observations": [ + "upstream heap_4 symbols are linked", + "checkpoint and ucHeap symbols remain observable" + ], + "assertions": [ + "pvPortMalloc and vPortFree are present", + "prvInsertBlockIntoFreeList is present" + ], + "evidence_fields": [ + "source blob", + "ELF SHA256", + "image SHA256", + "symbol" + ], + "prerequisites": [ + "built ELF" + ], + "layout": [ + "symbols", + "sections", + "artifact hashes" + ], + "commands": [ + "tests/check_task03_elf.sh build/task03_freertos_heap4/prog.elf" + ], + "template_id": "code.identity" + } + }, + { + "id": "elf", + "number": 2, + "label": "ELF zawiera prawdziwe symbole heap_4", + "mode": "CODE", + "strategy_ref": "code.identity", + "svg_label": "02", + "code_ref": "tests/check_task03_elf.sh:8", + "description": "Test ABI odrzuca atrapę bez pvPortMalloc, vPortFree i ucHeap.", + "evidence": "upstream symbols present", + "strategy": { + "id": "task01/a7/evidence/elf", + "kind": "code", + "action": "open", + "expected_observations": [ + "upstream heap_4 symbols are linked", + "checkpoint and ucHeap symbols remain observable" + ], + "assertions": [ + "pvPortMalloc and vPortFree are present", + "prvInsertBlockIntoFreeList is present" + ], + "evidence_fields": [ + "source blob", + "ELF SHA256", + "image SHA256", + "symbol" + ], + "prerequisites": [ + "built ELF" + ], + "layout": [ + "symbols", + "sections", + "artifact hashes" + ], + "commands": [ + "tests/check_task03_elf.sh build/task03_freertos_heap4/prog.elf" + ], + "template_id": "code.identity" + } + }, + { + "id": "fragmented-runtime", + "number": 3, + "label": "checkpoint pokazuje dwa wolne bloki", + "mode": "RUN", + "event_id": "E01", + "strategy_ref": "run.fragmented", + "svg_label": "03", + "code_ref": "src/tasks/task03_freertos_heap4.c:91", + "snapshot_ref": "task01.fragmented", + "description": "Neovim, GDB i pamięć zatrzymują się na tym samym stanie.", + "evidence": "blocks=2 and aligned=1", + "strategy": { + "id": "task01/a7/evidence/fragmented-runtime", + "kind": "run", + "action": "replay", + "expected_observations": [ + "A and C are free while B remains allocated", + "the free list contains two blocks" + ], + "assertions": [ + "xNumberOfFreeBlocks equals 2", + "current free bytes exceed the largest free block" + ], + "evidence_fields": [ + "free blocks", + "largest block", + "free bytes", + "heap bytes" + ], + "prerequisites": [ + "clean Hazard3 RAM", + "task03 image loaded" + ], + "layout": [ + "source", + "free-list stats", + "ucHeap memory", + "registers" + ], + "commands": [ + "break heap4_fragmented_checkpoint", + "print g_fragmented_stats", + "x/64bx ucHeap" + ], + "template_id": "run.fragmented" + } + }, + { + "id": "memory", + "number": 4, + "label": "ucHeap ujawnia nagłówki i payload", + "mode": "CODE", + "strategy_ref": "code.heap4", + "svg_label": "04", + "code_ref": "src/tasks/task03_freertos_heap4.c:11", + "description": "Widok bajtów łączy diagram z realnym układem areny.", + "evidence": "aligned arena and in-band metadata", + "strategy": { + "id": "task01/a7/evidence/memory", + "kind": "code", + "action": "open", + "expected_observations": [ + "heap_4 keeps metadata inside the arena", + "free blocks form one address-ordered intrusive list" + ], + "assertions": [ + "allocated bit is stored in the size field", + "xStart and pxEnd are sentinels" + ], + "evidence_fields": [ + "symbol", + "list link", + "block size", + "arena address" + ], + "prerequisites": [ + "FreeRTOS-Kernel V11.3.0 available" + ], + "layout": [ + "ucHeap", + "BlockLink_t", + "xStart", + "pxEnd" + ], + "commands": [ + "rg -n 'BlockLink_t|prvInsertBlockIntoFreeList|pvPortMalloc|vPortFree' vendor/FreeRTOS-Kernel/portable/MemMang/heap_4.c" + ], + "template_id": "code.heap4" + } + }, + { + "id": "final-runtime", + "number": 5, + "label": "checkpoint końcowy dowodzi odzyskania", + "mode": "RUN", + "event_id": "E02", + "strategy_ref": "run.coalesced", + "svg_label": "05", + "code_ref": "src/tasks/task03_freertos_heap4.c:111", + "snapshot_ref": "task01.coalesced", + "description": "Jedna ramka łączy stats, OOM, hook i PASS.", + "evidence": "final=initial, blocks=1, pass=1", + "strategy": { + "id": "task01/a7/evidence/final-runtime", + "kind": "run", + "action": "replay", + "expected_observations": [ + "freeing B joins both neighbours", + "the arena returns to one reusable block" + ], + "assertions": [ + "final free equals initial free", + "minimum-ever does not rise after free", + "oversized allocation returns NULL and calls the hook once" + ], + "evidence_fields": [ + "final free", + "largest block", + "minimum-ever", + "OOM hook", + "PASS" + ], + "prerequisites": [ + "fragmented checkpoint reached" + ], + "layout": [ + "final stats", + "minimum-ever", + "OOM hook", + "PASS" + ], + "commands": [ + "break task03_debug_checkpoint", + "print g_final_stats", + "print g_task03_pass" + ], + "template_id": "run.coalesced" + } + } + ] + } + ] + }, + "tile": { + "index": 1, + "count": 1, + "row": 1, + "column": 1, + "rows": 1, + "columns": 1, + "x": 0.0, + "y": 0.0, + "width": 814.0, + "height": 82.0, + "full_x": 0.0, + "full_y": 0.0, + "full_width": 814.0, + "full_height": 82.0, + "page_width": 940.0, + "page_height": 560.0, + "overview": true, + "step_ids": [ + "elf", + "final-runtime", + "fragmented-runtime", + "memory", + "source" + ] + }, + "diagram_title": "A7 · dowód runtime heap_4", + "diagram_block_label": "A7 RUNTIME", + "diagram_description": "Ten sam artefakt łączy źródło, symbole ELF, dwa checkpointy, pamięć ucHeap i końcowe asercje.", + "diagram_phase_labels": [ + "ARTIFACT / CHECKPOINT / MEMORY / ASSERTION" + ] + } + ], + "steps": [], + "spread_group": "", + "spread_label": "A7 RUNTIME — kod, ELF, checkpoint, pamięć i statystyki jednego przebiegu.", + "spread_columns": 1, + "spread_index": 1, + "spread_count": 1, + "page_orientation": "landscape" + }, + { + "id": "section-6-task01", + "index": 6, + "title": "Task01 — mechanika heap_4", + "show_heading": true, + "toc_entry": true, + "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEheap_4: From Linear Cursor to Reusable Blocks
VER.v00.01
DATETIME2026-07-20T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD01/15
SHEET7/7
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUID87e48095-7793-54e3-9230-4e61d31bd459CARD UUIDaea09ab7-9bfd-5368-8d1b-c8724871c1a7AUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", + "left_margin_html": "
TECH
-
", + "right_margin_html": "
OG
-
", + "content_html": "", + "tasks": [ + { + "ref": "task01", + "title": "Predict and prove reusable heap_4 blocks", + "uuid": "aea09ab7-9bfd-5368-8d1b-c8724871c1a7", + "criterion": "Model 13 -> 32 bajty; poprawna predykcja dwóch wolnych bloków po free(A,C) i jednego po free(B); final free = initial free; minimum-ever nie rośnie; OOM zwraca NULL; PASS=1.", + "conclusion_html": "

heap_4 odzyskuje pamięć dzięki metadanym w arenie, adresowo uporządkowanej liście i scalaniu sąsiadów. Suma wolnych bajtów nie zastępuje informacji o największym bloku, a minimum-ever jest historią, nie bieżącym stanem.

", + "prompt_html": "

Przewidź układ bloków po alloc A/B/C, następnie po free(A,C) i free(B). Odtwórz oba checkpointy i udowodnij, że arena została scalona bez utraty minimum-ever.

", + "flow": [ + { + "id": "predict", + "kind": "block", + "title": "A — przewidywanie", + "content_html": "

Przejdź przez model nagłówka, split i porządek adresowy przed uruchomieniem prawdziwego heap_4.

", + "steps": [ + { + "id": "size", + "title": "Policz rozmiar bloku.", + "content_html": "

Dodaj nagłówek do 13 bajtów i wyrównaj wynik do ośmiu.

" + }, + { + "id": "list", + "title": "Narysuj listę po free(A,C).", + "content_html": "

Zaznacz, dlaczego przydzielony B rozdziela dwa wolne obszary.

" + } + ] + }, + { + "id": "replay", + "kind": "block", + "title": "B — replay Hazard3", + "content_html": "

Powiąż diagram z dwoma deterministycznymi checkpointami.

", + "steps": [ + { + "id": "fragmented", + "title": "Sprawdź E01.", + "content_html": "

Porównaj liczbę wolnych bloków, największy blok i bieżące wolne bajty.

" + }, + { + "id": "coalesced", + "title": "Sprawdź E02.", + "content_html": "

Udowodnij pełne scalenie, zachowanie minimum-ever i kontrolowany OOM.

" + } + ] + }, + { + "id": "fragmentation", + "kind": "exercise", + "title": "Ćwiczenie — ta sama suma, inna użyteczność", + "content_html": "", + "steps": [] + } + ] + } + ], + "assets": [], + "steps": [], + "spread_group": "", + "spread_label": "", + "spread_columns": 1, + "spread_index": 1, + "spread_count": 1, + "page_orientation": "portrait" + } + ], + "viewpoints": [ + { + "id": "A1", + "label": "CONTEXT", + "subtitle": "from cursor to reusable heap", + "status": "enabled", + "target_label": "fig:a1-context", + "target_id": "fig-a1-context" + }, + { + "id": "A2", + "label": "STRUCTURE", + "subtitle": "headers and address order", + "status": "enabled", + "target_label": "fig:a2-structure", + "target_id": "fig-a2-structure" + }, + { + "id": "A3", + "label": "DISPATCH", + "subtitle": "not used by the allocator", + "status": "unavailable", + "reason": "heap_4 is called directly through pvPortMalloc and vPortFree; there is no callback or dispatch mechanism to explain.", + "target_id": "" + }, + { + "id": "A4", + "label": "APPLICATION", + "subtitle": "experiment is already explicit", + "status": "unavailable", + "reason": "The concrete A/B/C allocation experiment is completely represented by A5 and its two runtime checkpoints.", + "target_id": "" + }, + { + "id": "A5", + "label": "FLOW", + "subtitle": "allocate, fragment, coalesce", + "status": "enabled", + "target_label": "fig:a5-flow", + "target_id": "fig-a5-flow" + }, + { + "id": "A6", + "label": "STATE", + "subtitle": "block list and statistics", + "status": "enabled", + "target_label": "fig:a6-state", + "target_id": "fig-a6-state" + }, + { + "id": "A7", + "label": "RUNTIME", + "subtitle": "Hazard3 evidence", + "status": "enabled", + "target_label": "fig:a7-runtime", + "target_id": "fig-a7-runtime" + }, + { + "id": "A8", + "label": "PATTERNS", + "subtitle": "mechanism, not a separate page", + "status": "unavailable", + "reason": "First-fit and the intrusive address-ordered free list are already proved in A2 and A5; a separate pattern page would duplicate them.", + "target_id": "" + } + ], + "has_spread": false, + "has_allocator_model": false, + "dictionary": null, + "toc": [ + { + "id": "section-1-content", + "label": "1. A1 — Od liniowego kursora do odzyskiwalnej areny" + }, + { + "id": "section-2-content", + "label": "2. A2 — Nagłówek, payload i lista wolnych bloków" + }, + { + "id": "section-3-content", + "label": "3. A5 — First-fit, fragmentacja i pełne scalenie" + }, + { + "id": "section-4-content", + "label": "4. A6 — Stan bloku a stan statystyk" + }, + { + "id": "section-5-content", + "label": "5. A7 — Dowód w Hazard3 i ELF" + }, + { + "id": "section-6-task01", + "label": "6. Task01 — mechanika heap_4" + } + ] +} diff --git a/web/figures/a1-context.puml b/web/figures/a1-context.puml new file mode 100644 index 0000000..db581cb --- /dev/null +++ b/web/figures/a1-context.puml @@ -0,0 +1,31 @@ +@startuml +scale 600 height +top to bottom direction +skinparam backgroundColor transparent +skinparam shadowing false +skinparam defaultFontName Monospace +skinparam defaultFontSize 10 +skinparam rectangleBorderColor #2c7794 +skinparam rectangleBackgroundColor #edf6fa +skinparam ArrowColor #8095a1 +title A1 CONTEXT — from linear cursor to reusable heap + +rectangle "<>\n01 A / B / C experiment\nrequests payload bytes" as APP +rectangle "<>\n02 pvPortMalloc / vPortFree\nheap statistics" as API +rectangle "<>\n03 heap_4\nfirst-fit · split · coalesce" as H4 +rectangle "<>\n04 ucHeap[4096]\nheaders + payload" as ARENA +rectangle "<>\n05 Hazard3 / RV32I\nGDB · registers · memory" as TARGET + +APP -down-> API : request / release +API -down-> H4 : direct C call +H4 -down-> ARENA : manages +ARENA -down-> TARGET : stored in RAM + +note right of H4 +heap_1: allocate only +heap_2: free, no coalesce +heap_3: libc wrapper +heap_4: free + coalesce +heap_5: multiple regions +end note +@enduml diff --git a/web/figures/a1-context.svg b/web/figures/a1-context.svg new file mode 100644 index 0000000..eb1ad43 --- /dev/null +++ b/web/figures/a1-context.svg @@ -0,0 +1,52 @@ +A1 CONTEXT — from linear cursor to reusable heap«application»01 A / B / C experimentrequests payload bytes«public API»02 pvPortMalloc / vPortFreeheap statistics«allocator»03 heap_4first-fit · split · coalesce«arena»04 ucHeap[4096]headers + payload«target»05 Hazard3 / RV32IGDB · registers · memoryheap_1: allocate onlyheap_2: free, no coalesceheap_3: libc wrapperheap_4: free + coalesceheap_5: multiple regionsrequest / releasedirect C callmanagesstored in RAM \ No newline at end of file diff --git a/web/figures/a2-structure.puml b/web/figures/a2-structure.puml new file mode 100644 index 0000000..262ad72 --- /dev/null +++ b/web/figures/a2-structure.puml @@ -0,0 +1,48 @@ +@startuml +scale 620 height +top to bottom direction +skinparam backgroundColor transparent +skinparam shadowing false +skinparam defaultFontName Monospace +skinparam defaultFontSize 10 +skinparam classBorderColor #2c7794 +skinparam classBackgroundColor #edf6fa +skinparam ArrowColor #8095a1 +title A2 STRUCTURE — in-band metadata and address order + +class "01 Block header" as HEADER { + next : BlockLink_t* + size : size_t +} +class "Allocated block" as ALLOC { + 02 header + 13 byte request + aligned total = 32 bytes + payload begins after header +} +class "03 Free remainder" as REM { + own header + size = 224 bytes +} + +HEADER *-- ALLOC : precedes payload +ALLOC -down-> REM : split preserves 256 + +class "04 Address-ordered free list" as LIST { + previous < inserted < current +} +class "05 Right neighbour" as RIGHT { + block + block.size == current +} +class "06 Left neighbour" as LEFT { + previous + previous.size == block +} + +REM -down-> LIST : insert by address +LIST -down-> RIGHT : join first +RIGHT -down-> LEFT : then join left + +note right of LIST +Ordering makes both physical +neighbours locally visible. +end note +@enduml diff --git a/web/figures/a2-structure.svg b/web/figures/a2-structure.svg new file mode 100644 index 0000000..cc49cc7 --- /dev/null +++ b/web/figures/a2-structure.svg @@ -0,0 +1,71 @@ +A2 STRUCTURE — in-band metadata and address order01 Block headernext : BlockLink_t*size : size_tAllocated block02 header + 13 byte requestaligned total = 32 bytespayload begins after header03 Free remainderown headersize = 224 bytes04 Address-ordered free listprevious < inserted < current05 Right neighbourblock + block.size == current06 Left neighbourprevious + previous.size == blockOrdering makes both physicalneighbours locally visible.precedes payloadsplit preserves 256insert by addressjoin firstthen join left \ No newline at end of file diff --git a/web/figures/a5-flow.puml b/web/figures/a5-flow.puml new file mode 100644 index 0000000..5482c8a --- /dev/null +++ b/web/figures/a5-flow.puml @@ -0,0 +1,29 @@ +@startuml +scale 820 width +top to bottom direction +skinparam backgroundColor transparent +skinparam shadowing false +skinparam defaultFontName Monospace +skinparam defaultFontSize 9 +skinparam rectangleBorderColor #2c7794 +skinparam rectangleBackgroundColor #edf6fa +skinparam ArrowColor #8095a1 +title A5 FLOW — allocate, fragment, coalesce, verify + +rectangle "01 RESET\ninitial free = 4080" as S1 +rectangle "02 ALLOC A\n24 byte payload\nfirst-fit + split" as S2 +rectangle "03 ALLOC B / C\n40 + 16 byte payload\nafter = 3952" as S3 +rectangle "04 FREE A / C\nB remains allocated" as S4 +rectangle "05 E01 FRAGMENTED\n2 free blocks\ncurrent > largest" as S5 +rectangle "06 FREE B\ninsert by address\njoin right + left" as S6 +rectangle "07 E02 COALESCED\n1 free block\nfinal = initial" as S7 +rectangle "08 OOM CHECK\nNULL · hook=1\nasserts=0 · PASS=1" as S8 + +S1 -right-> S2 : pvPortMalloc +S2 -right-> S3 : split remainder +S3 -right-> S4 : vPortFree +S4 -down-> S5 : heap stats +S5 -left-> S6 : continue +S6 -left-> S7 : coalesce +S7 -left-> S8 : oversized request +@enduml diff --git a/web/figures/a5-flow.svg b/web/figures/a5-flow.svg new file mode 100644 index 0000000..fc2db0e --- /dev/null +++ b/web/figures/a5-flow.svg @@ -0,0 +1,56 @@ +A5 FLOW — allocate, fragment, coalesce, verify01 RESETinitial free = 408002 ALLOC A24 byte payloadfirst-fit + split03 ALLOC B / C40 + 16 byte payloadafter = 395204 FREE A / CB remains allocated05 E01 FRAGMENTED2 free blockscurrent > largest06 FREE Binsert by addressjoin right + left07 E02 COALESCED1 free blockfinal = initial08 OOM CHECKNULL · hook=1asserts=0 · PASS=1pvPortMallocsplit remaindervPortFreeheap statscontinuecoalesceoversized request \ No newline at end of file diff --git a/web/figures/a6-state.puml b/web/figures/a6-state.puml new file mode 100644 index 0000000..1be3bef --- /dev/null +++ b/web/figures/a6-state.puml @@ -0,0 +1,29 @@ +@startuml +scale 600 height +top to bottom direction +skinparam backgroundColor transparent +skinparam shadowing false +skinparam defaultFontName Monospace +skinparam defaultFontSize 10 +skinparam stateBorderColor #2c7794 +skinparam stateBackgroundColor #edf6fa +skinparam ArrowColor #8095a1 +title A6 STATE — block state and heap statistics + +[*] --> Free : 01 one list node +Free --> Allocated : 02 first-fit + split\ncurrent free decreases +Allocated --> Fragmented : free A and C +Fragmented : 03 two free blocks +Fragmented : sum free > largest block +Fragmented --> Coalesced : free B\naddress-order joins neighbours +Coalesced : 04 one free block +Coalesced : current free = initial free +Coalesced --> OOMChecked : request > arena +OOMChecked : NULL + hook once +OOMChecked --> [*] + +state "05 minimum-ever" as MIN +Allocated -right-> MIN : records low watermark +Fragmented -right-> MIN : does not rise +Coalesced -right-> MIN : history remains +@enduml diff --git a/web/figures/a6-state.svg b/web/figures/a6-state.svg new file mode 100644 index 0000000..12a9095 --- /dev/null +++ b/web/figures/a6-state.svg @@ -0,0 +1,50 @@ +A6 STATE — block state and heap statisticsFreeAllocatedFragmented03 two free blockssum free > largest blockCoalesced04 one free blockcurrent free = initial freeOOMCheckedNULL + hook once05 minimum-ever01 one list node02 first-fit + splitcurrent free decreasesfree A and Cfree Baddress-order joins neighboursrequest > arenarecords low watermarkdoes not risehistory remains \ No newline at end of file diff --git a/web/figures/a7-runtime.puml b/web/figures/a7-runtime.puml new file mode 100644 index 0000000..1288ab3 --- /dev/null +++ b/web/figures/a7-runtime.puml @@ -0,0 +1,23 @@ +@startuml +scale 820 width +left to right direction +skinparam backgroundColor transparent +skinparam shadowing false +skinparam defaultFontName Monospace +skinparam defaultFontSize 9 +skinparam rectangleBorderColor #2c7794 +skinparam rectangleBackgroundColor #edf6fa +skinparam ArrowColor #8095a1 +title A7 RUNTIME — one artifact, two checkpoints, one proof + +rectangle "<>\n01 task03 C\nA/B/C experiment" as SRC +rectangle "<>\n02 ELF + image\nheap_4 symbols" as ELF +rectangle "<>\n03 fragmented\nblocks=2 · aligned=1" as E1 +rectangle "<>\n04 ucHeap[4096]\nheaders + payload" as MEM +rectangle "<>\n05 coalesced\nfinal=initial · blocks=1\nOOM=1 · PASS=1" as E2 + +SRC --> ELF : compile + link +ELF --> E1 : reset / load / replay +E1 --> MEM : inspect bytes +MEM --> E2 : continue +@enduml diff --git a/web/figures/a7-runtime.svg b/web/figures/a7-runtime.svg new file mode 100644 index 0000000..62a80d5 --- /dev/null +++ b/web/figures/a7-runtime.svg @@ -0,0 +1,44 @@ +A7 RUNTIME — one artifact, two checkpoints, one proof«source»01 task03 CA/B/C experiment«artifact»02 ELF + imageheap_4 symbols«checkpoint E01»03 fragmentedblocks=2 · aligned=1«memory»04 ucHeap[4096]headers + payload«checkpoint E02»05 coalescedfinal=initial · blocks=1OOM=1 · PASS=1compile + linkreset / load / replayinspect bytescontinue \ No newline at end of file diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..8f9f9f5 --- /dev/null +++ b/web/index.html @@ -0,0 +1,15 @@ + + + + + + + Karta pracy + + + + +
+ + + diff --git a/web/style.css b/web/style.css new file mode 100644 index 0000000..90c7ddd --- /dev/null +++ b/web/style.css @@ -0,0 +1,39 @@ + +:root{--ink:#111;--muted:#666;--line:#b9b9b9;--line-soft:#dddddd;--paper:#fff;--desk:#eeeeee;--og:#008000;--tech:#d36b00;--kw:#0018c8;--we:#e00000;--viewer-canvas-scale:1;--viewer-content-scale:1} +*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:var(--desk);color:var(--ink);font-family:"Latin Modern Roman","LM Roman 12",Georgia,"Times New Roman",serif;line-height:1.25} +.topbar{position:sticky;top:0;z-index:20;background:rgba(245,245,245,.94);border-bottom:1px solid #d0d0d0;padding:3px 0;font-family:system-ui,-apple-system,Segoe UI,sans-serif} +.topbar-inner{width:calc(100% - 8px);max-width:none;margin:0 4px;display:flex;align-items:center;justify-content:space-between;gap:6px}.topbar details{min-width:0;flex:1}.topbar summary{cursor:pointer;font-size:16px;line-height:1.35;font-weight:650}.toc-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}.toc-links a{font-size:16px;color:#333;text-decoration:none;border:1px solid #ccc;background:white;border-radius:3px;padding:2px 5px}.viewer-zoom-controls{display:flex;align-items:center;gap:7px;flex:none}.viewer-zoom-status{font:600 16px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;color:#444;white-space:nowrap}.viewer-zoom-reset{border:1px solid #bbb;border-radius:3px;background:#fff;color:#333;padding:1px 6px;font:600 16px/1.35 system-ui,-apple-system,Segoe UI,sans-serif;cursor:pointer}.viewer-zoom-reset:hover{background:#eee}.viewer-zoom-reset:focus-visible{outline:2px solid #555;outline-offset:1px} +.paper{padding:18px 12px 44px;overflow-x:auto}.sheet{position:relative;width:210mm;min-height:297mm;margin:0 auto 18px;background:var(--paper);box-shadow:0 2px 12px rgba(0,0,0,.13);display:block;padding:0;overflow:visible;zoom:var(--viewer-canvas-scale)}.sheet-content{position:relative;width:100%;min-height:297mm;padding:13mm 21.5mm 15mm;transform:scale(var(--sheet-effective-scale,1));transform-origin:top left}.resource-header-enabled .sheet-content{padding-top:5mm}.sheet-content>.page-resource-header{margin-bottom:3mm} +@media(max-width:900px){.sheet{height:auto}}@media print{.sheet{height:auto}} +.pdf-main{min-width:0;width:100%}.running-header{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;border-bottom:1px solid #111;padding-bottom:3px;margin-bottom:26px;font-size:15px}.running-header span{white-space:nowrap} +.hero h1{font-size:24px;line-height:1.15;margin:0 0 4px;border-bottom:1px solid #111;padding-bottom:4px}.hero .byline{float:right;margin-top:-31px;font-size:15px} +.meta{clear:both;display:grid;grid-template-columns:148px minmax(0,1fr);gap:4px 18px;padding:34px 0 24px;border-bottom:1px solid #111;font-size:17px}.meta dt{color:#333}.meta dd{margin:0;font-family:"Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace} +.front-scope{padding:0 0 3mm;border-bottom:1px solid var(--line-soft)}.front-scope h2{font-size:24px;line-height:1.15;margin:0 0 3mm}.front-scope p{font-size:16px} +.scope-table-wrap{margin:3mm 0;overflow:hidden}.scope-table{width:100%;border-collapse:collapse;font-family:"Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px;line-height:1.22}.scope-table th,.scope-table td{border:0;border-bottom:1px solid #888;padding:4px 7px;text-align:left;vertical-align:top}.scope-table th{border-bottom:2px solid #555;background:#f3f3f3;font-weight:700}.scope-table th:first-child,.scope-table td:first-child{width:7%}.scope-table--task th:nth-child(2),.scope-table--task td:nth-child(2){width:11%}.scope-table--task th:nth-child(4),.scope-table--task td:nth-child(4){width:19%}.scope-table--task th:nth-child(5),.scope-table--task td:nth-child(5){width:14%}.scope-table--task th:nth-child(6),.scope-table--task td:nth-child(6){width:10%}.scope-table tr.scope-row--key td{font-weight:700;background:#f4f4f4;border-top:2px solid #111;border-bottom:2px solid #111}.scope-table tr.scope-row--key td:first-child{border-left:2px solid #111}.scope-table tr.scope-row--key td:last-child{border-right:2px solid #111}.scope-table td p{font:inherit;margin:0}.scope-table code{font-size:inherit}.scope-status{display:inline-block;white-space:nowrap;border:1px solid #aaa;border-radius:2px;padding:1px 4px;font-weight:600;background:#f5f5f5}.scope-status[data-status="in-progress"]{border-color:#307da1;background:#eaf5fa;color:#174f69}.scope-status[data-status="ready"]{border-color:#4c7d56;background:#edf6ee;color:#295b33}.scope-status[data-status="draft"],.scope-status[data-status="review"]{border-color:#9a7932;background:#faf4e5;color:#694f16}.scope-status[data-status="blocked"]{border-color:#9c4b4b;background:#faeded;color:#712f2f} +.card-section h2{font-size:24px;line-height:1.15;margin:0 0 4mm}.section-heading{display:flex;align-items:flex-start;gap:0}.section-heading .section-index{font-family:"Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace;font-size:23px;margin-right:12mm;font-weight:400}.section-heading .section-title{min-width:0}.task-identity{margin-left:auto;padding-left:22px;text-align:right;font-family:"Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px;line-height:1.25;color:#555;white-space:nowrap}.task-identity strong,.task-identity-name,.task-identity code{display:block}.task-identity strong{font-size:12px;color:#111}.task-identity-name{max-width:240px;overflow:hidden;text-overflow:ellipsis}.task-identity code{font-size:9px;color:#777} +p{font-size:16px;margin:0 0 3mm}.pdf-main ul{font-size:16px;margin:2mm 0 3mm 7mm;padding:0}.pdf-main li{margin:1.2mm 0} +.pdf-margin{position:absolute;top:34mm;width:18mm;font-family:"Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace;font-size:5px;line-height:1.12;color:#333;max-height:245mm;overflow:hidden}.pdf-margin.left{left:2mm;text-align:left}.pdf-margin.right{right:2mm;text-align:left} +.margin-title{font-weight:700;color:#666;margin-bottom:3px;letter-spacing:.02em}.margin-list{display:flex;flex-direction:column;align-items:flex-start}.margin-tag{display:block;margin:0 0 1px;padding:0;border:0;background:transparent;font:inherit;line-height:inherit;text-align:left;cursor:pointer;margin-left:var(--indent)}.margin-tag.we{color:var(--we)}.margin-tag.og,.margin-tag.tech{color:var(--og)}.margin-tag.kw{color:var(--kw)}.margin-tag .local{color:#777}.margin-tag:hover{text-decoration:underline}.margin-empty{color:#aaa} +.step-map{font-family:"Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px;line-height:1.3;color:#5c5c5c;background:transparent;border:0;border-top:1px solid #cfcfcf;border-bottom:1px solid #e0e0e0;border-radius:0;padding:8px 0;margin:0 0 16px}.step-map summary{cursor:pointer;font-weight:400;color:#555} +.tree-legend{display:flex;flex-wrap:wrap;gap:4px;margin:7px 0}.steps{display:grid;gap:6px}.step-row{border-top:1px dashed #c9c9c9;padding-top:6px}.step-row:first-child{border-top:0}.step-title span{font-weight:700;margin-right:7px}.step-trees{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.step-refs{display:flex;flex-wrap:wrap;gap:6px;margin-top:3px}.step-refs a{font-size:10px;color:#666} +.tree-token{font:10px/1 "Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace;border:1px solid #c8c8c8;background:#fff;border-radius:3px;padding:3px 5px;cursor:pointer}.tree-token.active{background:#111;color:white;border-color:#111} +.equation{display:grid;grid-template-columns:1fr auto;align-items:center;gap:14px;margin:18px 0;padding:4px 0;background:transparent;border:0}.equation .display{font-size:17px}.equation-number{font-family:"Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace;font-size:15px} +figure{margin:24px 0;text-align:center}figure img{max-width:100%;display:block;margin:0 auto;border:0;border-radius:0}figcaption{font-size:14px;color:#444;margin-top:8px;text-align:left}.card-asset.asset-screenshot img{border:1px solid #aaa}.card-asset a{display:block;cursor:zoom-in} +.table-wrap{overflow:auto;margin:14px 0}table{border-collapse:collapse;width:100%;font-size:16px}th,td{border:1px solid #111;padding:5px 8px;text-align:left;vertical-align:top}th{font-weight:400;background:white} +.empty-check{display:inline-block;width:1em;height:1em;border:1px solid #111;vertical-align:-.12em}.answer-line,.dotfill{display:block;border-bottom:1px dotted #111;height:1.45em;min-width:10em}.write-row{display:block;min-height:2.8em} +code{font-family:"Latin Modern Mono",ui-monospace,SFMono-Regular,Consolas,monospace}.tasks{font-size:16px}.task-legacy{margin:2.5mm 0}.task-legacy>strong{display:block;font:700 10px/1.2 "Latin Modern Mono",ui-monospace,monospace;color:#555}.task-flow{border:1px solid #222;margin:1mm 0 2mm;background:#fff}.task-flow-header{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:6px;padding:5px 7px;background:#eaeaea;border-bottom:1px solid #222}.task-flow-header span{font:700 10px/1.2 "Latin Modern Mono",ui-monospace,monospace;color:#222}.task-flow-header h3{font-size:18px;margin:0}.task-flow-header code{font-size:8px;color:#555}.task-block{margin:6px 7px;padding:5px 6px;border:1px solid #777;background:#fff}.task-block header,.task-exercise header{display:flex;align-items:baseline;gap:5px;margin-bottom:3px}.task-block header span,.task-exercise header span{font:700 9px/1.2 "Latin Modern Mono",ui-monospace,monospace;text-transform:uppercase;color:#555}.task-block h4,.task-exercise h4{font-size:16px;margin:0}.block-steps{margin:4px 0 0 16px!important;padding:0;display:grid;gap:3px}.block-steps li{margin:0;border:1px solid #b9b9b9;padding:4px 5px;background:#fff}.block-steps li::marker{font-family:"Latin Modern Mono",ui-monospace,monospace;font-weight:700}.block-steps li p:last-child{margin-bottom:0}.task-exercise{margin:6px 7px;border:1px solid #777;border-left:1px solid #222;padding:5px 6px;background:#fafafa}.task-exercise header{flex-wrap:wrap}.exercise-based-on{margin-left:auto;font-size:8px;color:#777}.exercise-evidence{border-top:1px dashed #bbb;margin-top:5px;padding-top:4px}.exercise-evidence>strong{font-size:11px;text-transform:uppercase}.exercise-criterion{font-size:13px;margin:4px 0 0}.task-flow>footer{padding:5px 7px;border-top:1px solid #222;font-size:12px;background:#f6f6f6}.task-conclusion{margin:8px 0;padding:7px 9px;border:1px solid #315f78;background:#f3f9fc}.task-conclusion>strong{display:block;margin-bottom:3px;font:700 10px/1.2 "Latin Modern Mono",ui-monospace,monospace;color:#315f78}.task-conclusion p{margin:0}.we-block{border-top:1px solid #ddd;padding:8px 0}.we-block summary{cursor:pointer}.dictionary-sheet .pdf-margin{display:none} +.inspector{position:fixed;right:14px;bottom:14px;width:min(360px,calc(100vw - 28px));max-height:46vh;overflow:auto;background:white;border:1px solid #cfcfcf;box-shadow:0 4px 18px rgba(0,0,0,.18);border-radius:6px;padding:12px;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:13px;z-index:30}.inspector h2{font-size:14px;margin:0 0 8px}.inspector .empty{color:#777}.tree-card h3{font-size:15px;margin:6px 0}.tree-card code{display:inline-block;margin:4px 0}.tree-card .line{font-weight:700}.tree-card .line.OG{color:var(--og)}.tree-card .line.TECH{color:var(--tech)}.kw-list{padding-left:18px}.kw-list code{color:var(--kw)} +@media(max-width:900px){.sheet{display:block;min-height:0}.sheet-content{min-height:0;padding:26px 18px}.pdf-margin{position:static;max-height:none;overflow:visible;margin:10px 0;padding:8px;border:1px solid #ddd}.pdf-margin.left{border-left:3px solid var(--tech)}.pdf-margin.right{border-left:3px solid var(--og)}.hero .byline{float:none;margin:0 0 14px}.meta{grid-template-columns:1fr}.section-heading{flex-wrap:wrap}.task-identity{width:100%;padding:6px 0 0}.inspector{position:static;width:auto;max-height:none;margin:0 12px 18px}.topbar{position:sticky;top:0}.viewer-zoom-status{font-size:16px}} +@media print{html,body{background:white}.topbar,.inspector{display:none}.paper{padding:0}.sheet{position:relative;display:block;width:auto;min-height:0;margin:0;box-shadow:none;break-after:page;padding:0;overflow:visible;zoom:1!important}.sheet-content{position:relative;width:auto;min-height:0;padding:0;transform:none!important}.sheet:last-child{break-after:auto}.resource-header-enabled .sheet-content{padding:0}.sheet-content>.page-resource-header,.sheet-content>.page-resource-footer{display:none!important}.pdf-margin{position:absolute;top:0;width:18mm;max-height:none;overflow:hidden;margin:0;padding:0;border:0}.pdf-margin.left{left:-19.5mm}.pdf-margin.right{right:-19.5mm}.task-block,.task-exercise,.block-steps li,figure{break-inside:avoid}} + +.page-resource-header{width:100%;height:24mm;min-height:24mm;max-height:24mm;background:#fff;color:#111;overflow:hidden;font-family:ui-monospace,SFMono-Regular,"Latin Modern Mono",Consolas,monospace;line-height:1.08} +.resource-header-table{width:100%;height:100%;border-collapse:collapse;table-layout:fixed;border:1px solid #111}.resource-header-table>tbody>tr{height:100%}.resource-header-center{height:100%;padding:0;vertical-align:middle;overflow:hidden}.resource-header-grid{display:grid;grid-template-rows:3fr 3fr 3fr 2fr 2fr;width:100%;height:100%}.resource-header-row{display:grid;min-width:0;min-height:0}.resource-header-field{display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;gap:.08mm;min-width:0;padding:.28mm .55mm;border-right:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden;white-space:nowrap}.resource-header-row .resource-header-field:last-child{border-right:0}.resource-header-row:last-child .resource-header-field{border-bottom:0}.resource-header-field a{display:flex;flex-direction:column;align-items:flex-start;gap:.08mm;min-width:0;color:#111;text-decoration:none}.resource-label{align-self:flex-start;font:800 3.2pt/1 ui-monospace,SFMono-Regular,"Latin Modern Mono",Consolas,monospace;text-transform:uppercase;flex:none}.resource-value{align-self:flex-end;max-width:100%;text-align:right;font:700 6.4pt/1 ui-monospace,SFMono-Regular,"Latin Modern Mono",Consolas,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resource-header-field--title .resource-value{font-size:7.7pt;font-weight:800}.resource-header-field--emphasis .resource-value{font-size:6.6pt;font-weight:800}.resource-header-field--compact{gap:.05mm;padding:.2mm .2mm}.resource-header-field--compact .resource-label{font-size:2.85pt}.resource-header-field--compact .resource-value{font-size:4.45pt}.resource-header-field--identity{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:.15mm;padding:.12mm .45mm;font:700 3.55pt/1.1 ui-monospace,SFMono-Regular,"Latin Modern Mono",Consolas,monospace}.resource-header-field--identity>span{display:flex;align-items:baseline;gap:.3mm;min-width:0}.resource-header-field--identity b{font-weight:800;flex:none}.resource-header-field--identity .resource-identity-value{margin-left:auto;text-align:right}.resource-header-field--identity .resource-author{margin-left:auto;text-align:right}.resource-header-field--url-row{display:flex;align-items:stretch;justify-content:center;padding:.2mm .55mm}.resource-header-field--url-row a{display:block;overflow:hidden;text-overflow:clip;font:700 4.9pt/1.05 ui-monospace,SFMono-Regular,"Latin Modern Mono",Consolas,monospace}.resource-header-field--url-row b{font-weight:800} +.resource-qr-cell{height:100%;padding:0;vertical-align:middle;overflow:hidden}.resource-qr-cell--left{border-right:1px solid #777}.resource-qr-cell--right{border-left:1px solid #777}.resource-qr{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:.4mm;color:#333;text-decoration:none}.resource-qr .title-qr{display:block;width:22mm;height:22mm;max-width:22mm;max-height:22mm;flex:none}.resource-qr-empty{text-align:center}.resource-qr-empty span,.resource-qr-empty strong{display:block;font:600 5pt/1.15 ui-monospace,SFMono-Regular,Consolas,monospace} + +@page{ + size:A4; + margin:29mm 21.5mm 5mm; + @top-left{content:"";width:24mm;height:24mm;box-sizing:border-box;padding:0;border:1px solid #111;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:22mm 22mm;vertical-align:middle;text-align:center;font:0/0 sans-serif;color:transparent;background-image:url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0idGl0bGUtcXIiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iS29kIFFSOiBodHRwczovL3pzbC1naXRlYS5tcGFiaS5wbC9lZHUtZnJlZXJ0b3MtYy9sYWItcnYzMmktZnJlZXJ0b3MtaGVhcDQiIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB4bWxuczp4bGluaz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycgd2lkdGg9Jzg1LjAzOTE5NnB0JyBoZWlnaHQ9Jzg1LjAzOTE5NnB0JyB2aWV3Qm94PSctNzIuMDAwMDA0IC03Mi4wMDAwMDQgODUuMDM5MTk2IDg1LjAzOTE5Nic+CjxnIGlkPSdwYWdlMSc+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjkuNDIzMDU5JyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY2Ljg0NjExNCcgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU5LjExNTI3OCcgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01Ni41MzgzMzInIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTEuMzg0NDQyJyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ4LjgwNzQ5NicgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00Ni4yMzA1NTEnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDMuNjUzNjA1JyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM4LjQ5OTcxNScgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yOC4xOTE5MzMnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjUuNjE0OTg4JyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE3Ljg4NDE1MicgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xNS4zMDcyMDcnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNC45OTk0MjUnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMi40MjI0OCcgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy4xNTQ0NjUnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScyLjczMTQxMScgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzUuMzA4MzU2JyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNy44ODUzMDEnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScxMC40NjIyNDcnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctNjkuNDIzMDU5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTY5LjQyMzA1OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00My42NTM2MDUnIHk9Jy02OS40MjMwNTknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDEuMDc2NjYnIHk9Jy02OS40MjMwNTknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzUuOTIyNzY5JyB5PSctNjkuNDIzMDU5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMwLjc2ODg3OScgeT0nLTY5LjQyMzA1OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yNS42MTQ5ODgnIHk9Jy02OS40MjMwNTknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PSctNjkuNDIzMDU5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIwLjQ2MTA5NycgeT0nLTY5LjQyMzA1OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xNS4zMDcyMDcnIHk9Jy02OS40MjMwNTknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNC45OTk0MjUnIHk9Jy02OS40MjMwNTknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScxMC40NjIyNDcnIHk9Jy02OS40MjMwNTknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctNjYuODQ2MTE0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY2Ljg0NjExNCcgeT0nLTY2Ljg0NjExNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy02Ni44NDYxMTQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PSctNjYuODQ2MTE0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTY2Ljg0NjExNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy02Ni44NDYxMTQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDMuNjUzNjA1JyB5PSctNjYuODQ2MTE0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM4LjQ5OTcxNScgeT0nLTY2Ljg0NjExNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zNS45MjI3NjknIHk9Jy02Ni44NDYxMTQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PSctNjYuODQ2MTE0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIwLjQ2MTA5NycgeT0nLTY2Ljg0NjExNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xNy44ODQxNTInIHk9Jy02Ni44NDYxMTQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTIuNzMwMjYxJyB5PSctNjYuODQ2MTE0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQuOTk5NDI1JyB5PSctNjYuODQ2MTE0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLjE1NDQ2NScgeT0nLTY2Ljg0NjExNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzIuNzMxNDExJyB5PSctNjYuODQ2MTE0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNS4zMDgzNTYnIHk9Jy02Ni44NDYxMTQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScxMC40NjIyNDcnIHk9Jy02Ni44NDYxMTQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctNjQuMjY5MTY4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY2Ljg0NjExNCcgeT0nLTY0LjI2OTE2OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy02NC4yNjkxNjgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PSctNjQuMjY5MTY4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTY0LjI2OTE2OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00Ni4yMzA1NTEnIHk9Jy02NC4yNjkxNjgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDMuNjUzNjA1JyB5PSctNjQuMjY5MTY4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM4LjQ5OTcxNScgeT0nLTY0LjI2OTE2OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zNS45MjI3NjknIHk9Jy02NC4yNjkxNjgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzMuMzQ1ODI0JyB5PSctNjQuMjY5MTY4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMwLjc2ODg3OScgeT0nLTY0LjI2OTE2OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yOC4xOTE5MzMnIHk9Jy02NC4yNjkxNjgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PSctNjQuMjY5MTY4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIwLjQ2MTA5NycgeT0nLTY0LjI2OTE2OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xNy44ODQxNTInIHk9Jy02NC4yNjkxNjgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTIuNzMwMjYxJyB5PSctNjQuMjY5MTY4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTEwLjE1MzMxNicgeT0nLTY0LjI2OTE2OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00Ljk5OTQyNScgeT0nLTY0LjI2OTE2OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy4xNTQ0NjUnIHk9Jy02NC4yNjkxNjgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScyLjczMTQxMScgeT0nLTY0LjI2OTE2OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzUuMzA4MzU2JyB5PSctNjQuMjY5MTY4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMTAuNDYyMjQ3JyB5PSctNjQuMjY5MTY4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTYxLjY5MjIyMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02Ni44NDYxMTQnIHk9Jy02MS42OTIyMjMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjQuMjY5MTY4JyB5PSctNjEuNjkyMjIzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTYxLjY5MjIyMycgeT0nLTYxLjY5MjIyMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01Ni41MzgzMzInIHk9Jy02MS42OTIyMjMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDYuMjMwNTUxJyB5PSctNjEuNjkyMjIzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQzLjY1MzYwNScgeT0nLTYxLjY5MjIyMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00MS4wNzY2NicgeT0nLTYxLjY5MjIyMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zOC40OTk3MTUnIHk9Jy02MS42OTIyMjMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzUuOTIyNzY5JyB5PSctNjEuNjkyMjIzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMwLjc2ODg3OScgeT0nLTYxLjY5MjIyMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yOC4xOTE5MzMnIHk9Jy02MS42OTIyMjMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjUuNjE0OTg4JyB5PSctNjEuNjkyMjIzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIzLjAzODA0MycgeT0nLTYxLjY5MjIyMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xNy44ODQxNTInIHk9Jy02MS42OTIyMjMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctNjEuNjkyMjIzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQuOTk5NDI1JyB5PSctNjEuNjkyMjIzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLjE1NDQ2NScgeT0nLTYxLjY5MjIyMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzIuNzMxNDExJyB5PSctNjEuNjkyMjIzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNS4zMDgzNTYnIHk9Jy02MS42OTIyMjMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScxMC40NjIyNDcnIHk9Jy02MS42OTIyMjMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctNTkuMTE1Mjc4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTU5LjExNTI3OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy01OS4xMTUyNzgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDMuNjUzNjA1JyB5PSctNTkuMTE1Mjc4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM1LjkyMjc2OScgeT0nLTU5LjExNTI3OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMC43Njg4NzknIHk9Jy01OS4xMTUyNzgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjUuNjE0OTg4JyB5PSctNTkuMTE1Mjc4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIwLjQ2MTA5NycgeT0nLTU5LjExNTI3OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9Jy01OS4xMTUyNzgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctNTkuMTE1Mjc4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQuOTk5NDI1JyB5PSctNTkuMTE1Mjc4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMTAuNDYyMjQ3JyB5PSctNTkuMTE1Mjc4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTU2LjUzODMzMicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02OS40MjMwNTknIHk9Jy01Ni41MzgzMzInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjYuODQ2MTE0JyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY0LjI2OTE2OCcgeT0nLTU2LjUzODMzMicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02MS42OTIyMjMnIHk9Jy01Ni41MzgzMzInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTkuMTE1Mjc4JyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTU2LjUzODMzMicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01MS4zODQ0NDInIHk9Jy01Ni41MzgzMzInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDYuMjMwNTUxJyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQxLjA3NjY2JyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM1LjkyMjc2OScgeT0nLTU2LjUzODMzMicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMC43Njg4NzknIHk9Jy01Ni41MzgzMzInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjUuNjE0OTg4JyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIwLjQ2MTA5NycgeT0nLTU2LjUzODMzMicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xNS4zMDcyMDcnIHk9Jy01Ni41MzgzMzInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQuOTk5NDI1JyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIuNDIyNDgnIHk9Jy01Ni41MzgzMzInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScuMTU0NDY1JyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMi43MzE0MTEnIHk9Jy01Ni41MzgzMzInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSc1LjMwODM1NicgeT0nLTU2LjUzODMzMicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzcuODg1MzAxJyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMTAuNDYyMjQ3JyB5PSctNTYuNTM4MzMyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTUxLjM4NDQ0MicgeT0nLTUzLjk2MTM4NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy01My45NjEzODcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDEuMDc2NjYnIHk9Jy01My45NjEzODcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzguNDk5NzE1JyB5PSctNTMuOTYxMzg3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMwLjc2ODg3OScgeT0nLTUzLjk2MTM4NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yNS42MTQ5ODgnIHk9Jy01My45NjEzODcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctNTEuMzg0NDQyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY5LjQyMzA1OScgeT0nLTUxLjM4NDQ0MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy01MS4zODQ0NDInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PSctNTEuMzg0NDQyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTUxLjM4NDQ0MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy01MS4zODQ0NDInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDEuMDc2NjYnIHk9Jy01MS4zODQ0NDInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzUuOTIyNzY5JyB5PSctNTEuMzg0NDQyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMzLjM0NTgyNCcgeT0nLTUxLjM4NDQ0MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yOC4xOTE5MzMnIHk9Jy01MS4zODQ0NDInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjUuNjE0OTg4JyB5PSctNTEuMzg0NDQyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTEyLjczMDI2MScgeT0nLTUxLjM4NDQ0MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMC4xNTMzMTYnIHk9Jy01MS4zODQ0NDInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNC45OTk0MjUnIHk9Jy01MS4zODQ0NDInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScxMC40NjIyNDcnIHk9Jy01MS4zODQ0NDInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctNDguODA3NDk2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY5LjQyMzA1OScgeT0nLTQ4LjgwNzQ5NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy00OC44MDc0OTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTEuMzg0NDQyJyB5PSctNDguODA3NDk2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ2LjIzMDU1MScgeT0nLTQ4LjgwNzQ5NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zOC40OTk3MTUnIHk9Jy00OC44MDc0OTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzUuOTIyNzY5JyB5PSctNDguODA3NDk2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMzLjM0NTgyNCcgeT0nLTQ4LjgwNzQ5NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yOC4xOTE5MzMnIHk9Jy00OC44MDc0OTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjUuNjE0OTg4JyB5PSctNDguODA3NDk2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIzLjAzODA0MycgeT0nLTQ4LjgwNzQ5NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMC40NjEwOTcnIHk9Jy00OC44MDc0OTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTIuNzMwMjYxJyB5PSctNDguODA3NDk2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIuNDIyNDgnIHk9Jy00OC44MDc0OTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScuMTU0NDY1JyB5PSctNDguODA3NDk2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNS4zMDgzNTYnIHk9Jy00OC44MDc0OTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSc3Ljg4NTMwMScgeT0nLTQ4LjgwNzQ5NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy00Ni4yMzA1NTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjkuNDIzMDU5JyB5PSctNDYuMjMwNTUxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY2Ljg0NjExNCcgeT0nLTQ2LjIzMDU1MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy00Ni4yMzA1NTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTYuNTM4MzMyJyB5PSctNDYuMjMwNTUxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ4LjgwNzQ5NicgeT0nLTQ2LjIzMDU1MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00MS4wNzY2NicgeT0nLTQ2LjIzMDU1MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zNS45MjI3NjknIHk9Jy00Ni4yMzA1NTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzMuMzQ1ODI0JyB5PSctNDYuMjMwNTUxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTI4LjE5MTkzMycgeT0nLTQ2LjIzMDU1MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xNy44ODQxNTInIHk9Jy00Ni4yMzA1NTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTUuMzA3MjA3JyB5PSctNDYuMjMwNTUxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTEyLjczMDI2MScgeT0nLTQ2LjIzMDU1MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMC4xNTMzMTYnIHk9Jy00Ni4yMzA1NTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNy41NzYzNzEnIHk9Jy00Ni4yMzA1NTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNC45OTk0MjUnIHk9Jy00Ni4yMzA1NTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMi40MjI0OCcgeT0nLTQ2LjIzMDU1MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzcuODg1MzAxJyB5PSctNDYuMjMwNTUxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMTAuNDYyMjQ3JyB5PSctNDYuMjMwNTUxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMzLjM0NTgyNCcgeT0nLTQzLjY1MzYwNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMC43Njg4NzknIHk9Jy00My42NTM2MDUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjguMTkxOTMzJyB5PSctNDMuNjUzNjA1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIzLjAzODA0MycgeT0nLTQzLjY1MzYwNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9Jy00My42NTM2MDUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctNDMuNjUzNjA1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcuNTc2MzcxJyB5PSctNDMuNjUzNjA1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIuNDIyNDgnIHk9Jy00My42NTM2MDUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScuMTU0NDY1JyB5PSctNDMuNjUzNjA1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMi43MzE0MTEnIHk9Jy00My42NTM2MDUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSc1LjMwODM1NicgeT0nLTQzLjY1MzYwNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02MS42OTIyMjMnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01OS4xMTUyNzgnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01Ni41MzgzMzInIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01My45NjEzODcnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00Ni4yMzA1NTEnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMy4zNDU4MjQnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMy4wMzgwNDMnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMC40NjEwOTcnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xNS4zMDcyMDcnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00Ljk5OTQyNScgeT0nLTQxLjA3NjY2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNy44ODUzMDEnIHk9Jy00MS4wNzY2NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzEwLjQ2MjI0NycgeT0nLTQxLjA3NjY2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY5LjQyMzA1OScgeT0nLTM4LjQ5OTcxNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02Ni44NDYxMTQnIHk9Jy0zOC40OTk3MTUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PSctMzguNDk5NzE1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU5LjExNTI3OCcgeT0nLTM4LjQ5OTcxNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00Ni4yMzA1NTEnIHk9Jy0zOC40OTk3MTUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDEuMDc2NjYnIHk9Jy0zOC40OTk3MTUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzguNDk5NzE1JyB5PSctMzguNDk5NzE1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM1LjkyMjc2OScgeT0nLTM4LjQ5OTcxNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMy4zNDU4MjQnIHk9Jy0zOC40OTk3MTUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzAuNzY4ODc5JyB5PSctMzguNDk5NzE1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE3Ljg4NDE1MicgeT0nLTM4LjQ5OTcxNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9Jy0zOC40OTk3MTUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNy41NzYzNzEnIHk9Jy0zOC40OTk3MTUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMi40MjI0OCcgeT0nLTM4LjQ5OTcxNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy0zNS45MjI3NjknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjkuNDIzMDU5JyB5PSctMzUuOTIyNzY5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY0LjI2OTE2OCcgeT0nLTM1LjkyMjc2OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01OS4xMTUyNzgnIHk9Jy0zNS45MjI3NjknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTYuNTM4MzMyJyB5PSctMzUuOTIyNzY5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTUxLjM4NDQ0MicgeT0nLTM1LjkyMjc2OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy0zNS45MjI3NjknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzguNDk5NzE1JyB5PSctMzUuOTIyNzY5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM1LjkyMjc2OScgeT0nLTM1LjkyMjc2OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMy4zNDU4MjQnIHk9Jy0zNS45MjI3NjknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjguMTkxOTMzJyB5PSctMzUuOTIyNzY5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTI1LjYxNDk4OCcgeT0nLTM1LjkyMjc2OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMy4wMzgwNDMnIHk9Jy0zNS45MjI3NjknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjAuNDYxMDk3JyB5PSctMzUuOTIyNzY5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE3Ljg4NDE1MicgeT0nLTM1LjkyMjc2OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMC4xNTMzMTYnIHk9Jy0zNS45MjI3NjknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNy41NzYzNzEnIHk9Jy0zNS45MjI3NjknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScuMTU0NDY1JyB5PSctMzUuOTIyNzY5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY2Ljg0NjExNCcgeT0nLTMzLjM0NTgyNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy0zMy4zNDU4MjQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PSctMzMuMzQ1ODI0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTUxLjM4NDQ0MicgeT0nLTMzLjM0NTgyNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy0zMy4zNDU4MjQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDYuMjMwNTUxJyB5PSctMzMuMzQ1ODI0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQxLjA3NjY2JyB5PSctMzMuMzQ1ODI0JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTI1LjYxNDk4OCcgeT0nLTMzLjM0NTgyNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9Jy0zMy4zNDU4MjQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNy41NzYzNzEnIHk9Jy0zMy4zNDU4MjQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNC45OTk0MjUnIHk9Jy0zMy4zNDU4MjQnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSc1LjMwODM1NicgeT0nLTMzLjM0NTgyNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzEwLjQ2MjI0NycgeT0nLTMzLjM0NTgyNCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02MS42OTIyMjMnIHk9Jy0zMC43Njg4NzknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTkuMTE1Mjc4JyB5PSctMzAuNzY4ODc5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTMwLjc2ODg3OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01My45NjEzODcnIHk9Jy0zMC43Njg4NzknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTEuMzg0NDQyJyB5PSctMzAuNzY4ODc5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ2LjIzMDU1MScgeT0nLTMwLjc2ODg3OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00My42NTM2MDUnIHk9Jy0zMC43Njg4NzknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDEuMDc2NjYnIHk9Jy0zMC43Njg4NzknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzguNDk5NzE1JyB5PSctMzAuNzY4ODc5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMzLjM0NTgyNCcgeT0nLTMwLjc2ODg3OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMy4wMzgwNDMnIHk9Jy0zMC43Njg4NzknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjAuNDYxMDk3JyB5PSctMzAuNzY4ODc5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE1LjMwNzIwNycgeT0nLTMwLjc2ODg3OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMC4xNTMzMTYnIHk9Jy0zMC43Njg4NzknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNC45OTk0MjUnIHk9Jy0zMC43Njg4NzknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMi40MjI0OCcgeT0nLTMwLjc2ODg3OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy4xNTQ0NjUnIHk9Jy0zMC43Njg4NzknIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScyLjczMTQxMScgeT0nLTMwLjc2ODg3OScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzcuODg1MzAxJyB5PSctMzAuNzY4ODc5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMTAuNDYyMjQ3JyB5PSctMzAuNzY4ODc5JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTI4LjE5MTkzMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02OS40MjMwNTknIHk9Jy0yOC4xOTE5MzMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjYuODQ2MTE0JyB5PSctMjguMTkxOTMzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTYxLjY5MjIyMycgeT0nLTI4LjE5MTkzMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01MS4zODQ0NDInIHk9Jy0yOC4xOTE5MzMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDMuNjUzNjA1JyB5PSctMjguMTkxOTMzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMzLjM0NTgyNCcgeT0nLTI4LjE5MTkzMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yOC4xOTE5MzMnIHk9Jy0yOC4xOTE5MzMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PSctMjguMTkxOTMzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE1LjMwNzIwNycgeT0nLTI4LjE5MTkzMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMC4xNTMzMTYnIHk9Jy0yOC4xOTE5MzMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNC45OTk0MjUnIHk9Jy0yOC4xOTE5MzMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMi40MjI0OCcgeT0nLTI4LjE5MTkzMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy4xNTQ0NjUnIHk9Jy0yOC4xOTE5MzMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSc3Ljg4NTMwMScgeT0nLTI4LjE5MTkzMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzEwLjQ2MjI0NycgeT0nLTI4LjE5MTkzMycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy0yNS42MTQ5ODgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjkuNDIzMDU5JyB5PSctMjUuNjE0OTg4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY0LjI2OTE2OCcgeT0nLTI1LjYxNDk4OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01OS4xMTUyNzgnIHk9Jy0yNS42MTQ5ODgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTYuNTM4MzMyJyB5PSctMjUuNjE0OTg4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTUxLjM4NDQ0MicgeT0nLTI1LjYxNDk4OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00MS4wNzY2NicgeT0nLTI1LjYxNDk4OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zOC40OTk3MTUnIHk9Jy0yNS42MTQ5ODgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzUuOTIyNzY5JyB5PSctMjUuNjE0OTg4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMzLjM0NTgyNCcgeT0nLTI1LjYxNDk4OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMy4wMzgwNDMnIHk9Jy0yNS42MTQ5ODgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTIuNzMwMjYxJyB5PSctMjUuNjE0OTg4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMTAuNDYyMjQ3JyB5PSctMjUuNjE0OTg4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTIzLjAzODA0MycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02OS40MjMwNTknIHk9Jy0yMy4wMzgwNDMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjYuODQ2MTE0JyB5PSctMjMuMDM4MDQzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY0LjI2OTE2OCcgeT0nLTIzLjAzODA0MycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01OS4xMTUyNzgnIHk9Jy0yMy4wMzgwNDMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDguODA3NDk2JyB5PSctMjMuMDM4MDQzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ2LjIzMDU1MScgeT0nLTIzLjAzODA0MycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00My42NTM2MDUnIHk9Jy0yMy4wMzgwNDMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzguNDk5NzE1JyB5PSctMjMuMDM4MDQzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMwLjc2ODg3OScgeT0nLTIzLjAzODA0MycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yNS42MTQ5ODgnIHk9Jy0yMy4wMzgwNDMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjAuNDYxMDk3JyB5PSctMjMuMDM4MDQzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTEwLjE1MzMxNicgeT0nLTIzLjAzODA0MycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03LjU3NjM3MScgeT0nLTIzLjAzODA0MycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yLjQyMjQ4JyB5PSctMjMuMDM4MDQzJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNS4zMDgzNTYnIHk9Jy0yMy4wMzgwNDMnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSc3Ljg4NTMwMScgeT0nLTIzLjAzODA0MycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzEwLjQ2MjI0NycgeT0nLTIzLjAzODA0MycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02MS42OTIyMjMnIHk9Jy0yMC40NjEwOTcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTkuMTE1Mjc4JyB5PSctMjAuNDYxMDk3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTIwLjQ2MTA5NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy0yMC40NjEwOTcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDMuNjUzNjA1JyB5PSctMjAuNDYxMDk3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM1LjkyMjc2OScgeT0nLTIwLjQ2MTA5NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMy4zNDU4MjQnIHk9Jy0yMC40NjEwOTcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzAuNzY4ODc5JyB5PSctMjAuNDYxMDk3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTI4LjE5MTkzMycgeT0nLTIwLjQ2MTA5NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yNS42MTQ5ODgnIHk9Jy0yMC40NjEwOTcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PSctMjAuNDYxMDk3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIwLjQ2MTA5NycgeT0nLTIwLjQ2MTA5NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9Jy0yMC40NjEwOTcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctMjAuNDYxMDk3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIuNDIyNDgnIHk9Jy0yMC40NjEwOTcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctMTcuODg0MTUyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY5LjQyMzA1OScgeT0nLTE3Ljg4NDE1MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy0xNy44ODQxNTInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PSctMTcuODg0MTUyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU5LjExNTI3OCcgeT0nLTE3Ljg4NDE1MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01MS4zODQ0NDInIHk9Jy0xNy44ODQxNTInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDguODA3NDk2JyB5PSctMTcuODg0MTUyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ2LjIzMDU1MScgeT0nLTE3Ljg4NDE1MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00MS4wNzY2NicgeT0nLTE3Ljg4NDE1MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMy4zNDU4MjQnIHk9Jy0xNy44ODQxNTInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PSctMTcuODg0MTUyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTEyLjczMDI2MScgeT0nLTE3Ljg4NDE1MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yLjQyMjQ4JyB5PSctMTcuODg0MTUyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLjE1NDQ2NScgeT0nLTE3Ljg4NDE1MicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzIuNzMxNDExJyB5PSctMTcuODg0MTUyJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNy44ODUzMDEnIHk9Jy0xNy44ODQxNTInIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctMTUuMzA3MjA3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY2Ljg0NjExNCcgeT0nLTE1LjMwNzIwNycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9Jy0xNS4zMDcyMDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTYuNTM4MzMyJyB5PSctMTUuMzA3MjA3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTUzLjk2MTM4NycgeT0nLTE1LjMwNzIwNycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00My42NTM2MDUnIHk9Jy0xNS4zMDcyMDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzUuOTIyNzY5JyB5PSctMTUuMzA3MjA3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTMzLjM0NTgyNCcgeT0nLTE1LjMwNzIwNycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yNS42MTQ5ODgnIHk9Jy0xNS4zMDcyMDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTIuNzMwMjYxJyB5PSctMTUuMzA3MjA3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTEwLjE1MzMxNicgeT0nLTE1LjMwNzIwNycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03LjU3NjM3MScgeT0nLTE1LjMwNzIwNycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzcuODg1MzAxJyB5PSctMTUuMzA3MjA3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMTAuNDYyMjQ3JyB5PSctMTUuMzA3MjA3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTEyLjczMDI2MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01My45NjEzODcnIHk9Jy0xMi43MzAyNjEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTEuMzg0NDQyJyB5PSctMTIuNzMwMjYxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQzLjY1MzYwNScgeT0nLTEyLjczMDI2MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00MS4wNzY2NicgeT0nLTEyLjczMDI2MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMy4zNDU4MjQnIHk9Jy0xMi43MzAyNjEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzAuNzY4ODc5JyB5PSctMTIuNzMwMjYxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTI4LjE5MTkzMycgeT0nLTEyLjczMDI2MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMy4wMzgwNDMnIHk9Jy0xMi43MzAyNjEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjAuNDYxMDk3JyB5PSctMTIuNzMwMjYxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE1LjMwNzIwNycgeT0nLTEyLjczMDI2MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMC4xNTMzMTYnIHk9Jy0xMi43MzAyNjEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNy41NzYzNzEnIHk9Jy0xMi43MzAyNjEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMi40MjI0OCcgeT0nLTEyLjczMDI2MScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzUuMzA4MzU2JyB5PSctMTIuNzMwMjYxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTEwLjE1MzMxNicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02OS40MjMwNTknIHk9Jy0xMC4xNTMzMTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjYuODQ2MTE0JyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY0LjI2OTE2OCcgeT0nLTEwLjE1MzMxNicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01OS4xMTUyNzgnIHk9Jy0xMC4xNTMzMTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTYuNTM4MzMyJyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTUxLjM4NDQ0MicgeT0nLTEwLjE1MzMxNicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00OC44MDc0OTYnIHk9Jy0xMC4xNTMzMTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDMuNjUzNjA1JyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQxLjA3NjY2JyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM1LjkyMjc2OScgeT0nLTEwLjE1MzMxNicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMy4zNDU4MjQnIHk9Jy0xMC4xNTMzMTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjUuNjE0OTg4JyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIwLjQ2MTA5NycgeT0nLTEwLjE1MzMxNicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9Jy0xMC4xNTMzMTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcuNTc2MzcxJyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQuOTk5NDI1JyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIuNDIyNDgnIHk9Jy0xMC4xNTMzMTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScuMTU0NDY1JyB5PSctMTAuMTUzMzE2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNy44ODUzMDEnIHk9Jy0xMC4xNTMzMTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTEuMzg0NDQyJyB5PSctNy41NzYzNzEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDguODA3NDk2JyB5PSctNy41NzYzNzEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzguNDk5NzE1JyB5PSctNy41NzYzNzEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzMuMzQ1ODI0JyB5PSctNy41NzYzNzEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzAuNzY4ODc5JyB5PSctNy41NzYzNzEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctNy41NzYzNzEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScuMTU0NDY1JyB5PSctNy41NzYzNzEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSc3Ljg4NTMwMScgeT0nLTcuNTc2MzcxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY5LjQyMzA1OScgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY2Ljg0NjExNCcgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY0LjI2OTE2OCcgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTYxLjY5MjIyMycgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU5LjExNTI3OCcgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ4LjgwNzQ5NicgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQzLjY1MzYwNScgeT0nLTQuOTk5NDI1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQxLjA3NjY2JyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzguNDk5NzE1JyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzUuOTIyNzY5JyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzMuMzQ1ODI0JyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzAuNzY4ODc5JyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjguMTkxOTMzJyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjUuNjE0OTg4JyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTcuODg0MTUyJyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTIuNzMwMjYxJyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctNC45OTk0MjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNC45OTk0MjUnIHk9Jy00Ljk5OTQyNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy4xNTQ0NjUnIHk9Jy00Ljk5OTQyNScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy0yLjQyMjQ4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTU2LjUzODMzMicgeT0nLTIuNDIyNDgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDYuMjMwNTUxJyB5PSctMi40MjI0OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00My42NTM2MDUnIHk9Jy0yLjQyMjQ4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM1LjkyMjc2OScgeT0nLTIuNDIyNDgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzMuMzQ1ODI0JyB5PSctMi40MjI0OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yNS42MTQ5ODgnIHk9Jy0yLjQyMjQ4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTEyLjczMDI2MScgeT0nLTIuNDIyNDgnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PSctMi40MjI0OCcgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy4xNTQ0NjUnIHk9Jy0yLjQyMjQ4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMi43MzE0MTEnIHk9Jy0yLjQyMjQ4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nNS4zMDgzNTYnIHk9Jy0yLjQyMjQ4JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLjE1NDQ2NScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02Ni44NDYxMTQnIHk9Jy4xNTQ0NjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjQuMjY5MTY4JyB5PScuMTU0NDY1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTYxLjY5MjIyMycgeT0nLjE1NDQ2NScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01Ni41MzgzMzInIHk9Jy4xNTQ0NjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTEuMzg0NDQyJyB5PScuMTU0NDY1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ2LjIzMDU1MScgeT0nLjE1NDQ2NScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zNS45MjI3NjknIHk9Jy4xNTQ0NjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzMuMzQ1ODI0JyB5PScuMTU0NDY1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE1LjMwNzIwNycgeT0nLjE1NDQ2NScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9Jy4xNTQ0NjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PScuMTU0NDY1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcuNTc2MzcxJyB5PScuMTU0NDY1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQuOTk5NDI1JyB5PScuMTU0NDY1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIuNDIyNDgnIHk9Jy4xNTQ0NjUnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScuMTU0NDY1JyB5PScuMTU0NDY1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nMTAuNDYyMjQ3JyB5PScuMTU0NDY1JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjYuODQ2MTE0JyB5PScyLjczMTQxMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02NC4yNjkxNjgnIHk9JzIuNzMxNDExJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTYxLjY5MjIyMycgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTYuNTM4MzMyJyB5PScyLjczMTQxMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01MS4zODQ0NDInIHk9JzIuNzMxNDExJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ4LjgwNzQ5NicgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDMuNjUzNjA1JyB5PScyLjczMTQxMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy00MS4wNzY2NicgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzguNDk5NzE1JyB5PScyLjczMTQxMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMy4zNDU4MjQnIHk9JzIuNzMxNDExJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTI1LjYxNDk4OCcgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PScyLjczMTQxMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMC40NjEwOTcnIHk9JzIuNzMxNDExJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE1LjMwNzIwNycgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTAuMTUzMzE2JyB5PScyLjczMTQxMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03LjU3NjM3MScgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScyLjczMTQxMScgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSc1LjMwODM1NicgeT0nMi43MzE0MTEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSc1LjMwODM1NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy02Ni44NDYxMTQnIHk9JzUuMzA4MzU2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTY0LjI2OTE2OCcgeT0nNS4zMDgzNTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PSc1LjMwODM1NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01Ni41MzgzMzInIHk9JzUuMzA4MzU2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQzLjY1MzYwNScgeT0nNS4zMDgzNTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzMuMzQ1ODI0JyB5PSc1LjMwODM1NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yOC4xOTE5MzMnIHk9JzUuMzA4MzU2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTI1LjYxNDk4OCcgeT0nNS4zMDgzNTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMjMuMDM4MDQzJyB5PSc1LjMwODM1NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMC40NjEwOTcnIHk9JzUuMzA4MzU2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE3Ljg4NDE1MicgeT0nNS4zMDgzNTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMTIuNzMwMjYxJyB5PSc1LjMwODM1NicgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMC4xNTMzMTYnIHk9JzUuMzA4MzU2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTIuNDIyNDgnIHk9JzUuMzA4MzU2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLjE1NDQ2NScgeT0nNS4zMDgzNTYnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PScxMC40NjIyNDcnIHk9JzUuMzA4MzU2JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nNy44ODUzMDEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTYuNTM4MzMyJyB5PSc3Ljg4NTMwMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy01MS4zODQ0NDInIHk9JzcuODg1MzAxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQ2LjIzMDU1MScgeT0nNy44ODUzMDEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDEuMDc2NjYnIHk9JzcuODg1MzAxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTM1LjkyMjc2OScgeT0nNy44ODUzMDEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctMzAuNzY4ODc5JyB5PSc3Ljg4NTMwMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMC40NjEwOTcnIHk9JzcuODg1MzAxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTE1LjMwNzIwNycgeT0nNy44ODUzMDEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNy41NzYzNzEnIHk9JzcuODg1MzAxJyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPHJlY3QgeD0nLTQuOTk5NDI1JyB5PSc3Ljg4NTMwMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzIuNzMxNDExJyB5PSc3Ljg4NTMwMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzUuMzA4MzU2JyB5PSc3Ljg4NTMwMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzcuODg1MzAxJyB5PSc3Ljg4NTMwMScgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9JzEwLjQ2MjI0NycgeT0nNy44ODUzMDEnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjkuNDIzMDU5JyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjYuODQ2MTE0JyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjQuMjY5MTY4JyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNjEuNjkyMjIzJyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTkuMTE1Mjc4JyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTYuNTM4MzMyJyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNTEuMzg0NDQyJyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDguODA3NDk2JyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDYuMjMwNTUxJyB5PScxMC40NjIyNDcnIGhlaWdodD0nMi41NzY5NDUnIHdpZHRoPScyLjU3Njk0NScvPgo8cmVjdCB4PSctNDEuMDc2NjYnIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zOC40OTk3MTUnIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zNS45MjI3NjknIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0zMC43Njg4NzknIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yOC4xOTE5MzMnIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yNS42MTQ5ODgnIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMy4wMzgwNDMnIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0yMC40NjEwOTcnIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMi43MzAyNjEnIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy0xMC4xNTMzMTYnIHk9JzEwLjQ2MjI0NycgaGVpZ2h0PScyLjU3Njk0NScgd2lkdGg9JzIuNTc2OTQ1Jy8+CjxyZWN0IHg9Jy03LjU3NjM3MScgeT0nMTAuNDYyMjQ3JyBoZWlnaHQ9JzIuNTc2OTQ1JyB3aWR0aD0nMi41NzY5NDUnLz4KPC9nPgo8L3N2Zz4=")} + @top-center{content:" TITLE VER. DATETIME \A \A heap_4: From Linear Cursor to Reusable Blocks v00.01 2026-07-20T00:00:00+02:00 \A PROJECT SERIES CARD SHEET \A \A Freestanding C nad FreeRTOS FreeRTOS C 01/15 " counter(page) "/" counter(pages) " \A SUBJ. PROG. CORE SCOPE LEVEL POS. GITEA UUID 87e48095-7793-54e3-9230-4e61d31bd459\A CARD UUID aea09ab7-9bfd-5368-8d1b-c8724871c1a7 AUTHOR M. Pabiszczak\A Inf. — — — — — \A \A GITEA https://zsl-gitea.mpabi.pl/edu-freertos-c/lab-rv32i-freertos-heap4 \A \A HTML https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/aea09ab7-9bfd-5368-8d1b-c8724871c1a7 ";width:119mm;height:24mm;box-sizing:border-box;padding:.2mm .7mm 0;border-block:1px solid #111;background-color:#fff;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMTkgMjQiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxyZWN0IHdpZHRoPSIxMTkiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+PHBhdGggZD0iTTAgNS41Mzg0NkgxMTkgTTAgMTEuMDc2OUgxMTkgTTAgMTYuNjE1NEgxMTkgTTAgMjAuMzA3N0gxMTkgTTU5LjUgMFY1LjUzODQ2IE03Ny41IDBWNS41Mzg0NiBNNTkuNSA1LjUzODQ2VjExLjA3NjkgTTg5LjUgNS41Mzg0NlYxMS4wNzY5IE0xMDYuNSA1LjUzODQ2VjExLjA3NjkgTTcgMTEuMDc2OVYxNi42MTU0IE0xMyAxMS4wNzY5VjE2LjYxNTQgTTMwLjUgMTEuMDc2OVYxNi42MTU0IE00MS41IDExLjA3NjlWMTYuNjE1NCBNNTAuNSAxMS4wNzY5VjE2LjYxNTQgTTU5LjUgMTEuMDc2OVYxNi42MTU0IiBmaWxsPSJub25lIiBzdHJva2U9IiM4ODgiIHN0cm9rZS13aWR0aD0iMC4xNCIvPjwvc3ZnPg==");background-repeat:no-repeat;background-position:center;background-size:100% 100%;white-space:pre;vertical-align:top;text-align:left;font:700 5.2px/1.81538mm ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:-.02px;color:#111;overflow:hidden} + @top-right{content:"";width:24mm;height:24mm;box-sizing:border-box;padding:0;border:1px solid #111;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:22mm 22mm;vertical-align:middle;text-align:center;font:0/0 sans-serif;color:transparent;background-image:url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0idGl0bGUtcXIiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iS29kIFFSOiBodHRwczovL2RjZTdmYjlkLTdiMmYtNWQ0OS05NmEyLTNhMzBkMzA3MGI4NC5tcGFiaS5wbC9hZWEwOWFiNy05YmZkLTUzNjgtOGQxYi1jODcyNDg3MWMxYTciIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB4bWxuczp4bGluaz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycgd2lkdGg9Jzg1LjAzOTIyN3B0JyBoZWlnaHQ9Jzg1LjAzOTIyN3B0JyB2aWV3Qm94PSctNzIuMDAwMDA0IC03Mi4wMDAwMDQgODUuMDM5MjI3IDg1LjAzOTIyNyc+CjxnIGlkPSdwYWdlMSc+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY3LjQwMzI4OScgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02NS4xMDQ5MzInIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjIuODA2NTc0JyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYwLjUwODIxNycgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01OC4yMDk4NTknIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ0LjQxOTcxNScgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNS4yMjYyODUnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjguMzMxMjEyJyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE5LjEzNzc4MicgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNi44Mzk0MjUnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMy4wNDkyOCcgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0uNzUwOTIyJyB5PSctNzIuMDAwMDA0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMS41NDc0MzUnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzYuMTQ0MTUnIHk9Jy03Mi4wMDAwMDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc4LjQ0MjUwNycgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEwLjc0MDg2NScgeT0nLTcyLjAwMDAwNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy02OS43MDE2NDcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTguMjA5ODU5JyB5PSctNjkuNzAxNjQ3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUzLjYxMzE0NCcgeT0nLTY5LjcwMTY0NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00OS4wMTY0MjknIHk9Jy02OS43MDE2NDcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDIuMTIxMzU3JyB5PSctNjkuNzAxNjQ3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM3LjUyNDY0MicgeT0nLTY5LjcwMTY0NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNS4yMjYyODUnIHk9Jy02OS43MDE2NDcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjYuMDMyODU1JyB5PSctNjkuNzAxNjQ3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIxLjQzNjE0JyB5PSctNjkuNzAxNjQ3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE0LjU0MTA2NycgeT0nLTY5LjcwMTY0NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy05Ljk0NDM1MicgeT0nLTY5LjcwMTY0NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03LjY0NTk5NScgeT0nLTY5LjcwMTY0NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctNjkuNzAxNjQ3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctNjkuNzAxNjQ3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTY3LjQwMzI4OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Ny40MDMyODknIHk9Jy02Ny40MDMyODknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSctNjcuNDAzMjg5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYyLjgwNjU3NCcgeT0nLTY3LjQwMzI4OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01OC4yMDk4NTknIHk9Jy02Ny40MDMyODknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDQuNDE5NzE1JyB5PSctNjcuNDAzMjg5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nLTY3LjQwMzI4OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNy41MjQ2NDInIHk9Jy02Ny40MDMyODknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjYuMDMyODU1JyB5PSctNjcuNDAzMjg5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIzLjczNDQ5NycgeT0nLTY3LjQwMzI4OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNi44Mzk0MjUnIHk9Jy02Ny40MDMyODknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy02Ny40MDMyODknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctOS45NDQzNTInIHk9Jy02Ny40MDMyODknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNy42NDU5OTUnIHk9Jy02Ny40MDMyODknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMy4wNDkyOCcgeT0nLTY3LjQwMzI4OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEuNTQ3NDM1JyB5PSctNjcuNDAzMjg5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMy44NDU3OTMnIHk9Jy02Ny40MDMyODknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctNjcuNDAzMjg5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctNjcuNDAzMjg5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTY1LjEwNDkzMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Ny40MDMyODknIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSctNjUuMTA0OTMyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYyLjgwNjU3NCcgeT0nLTY1LjEwNDkzMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01OC4yMDk4NTknIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctNjUuMTA0OTMyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUxLjMxNDc4NycgeT0nLTY1LjEwNDkzMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00OS4wMTY0MjknIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDQuNDE5NzE1JyB5PSctNjUuMTA0OTMyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQyLjEyMTM1NycgeT0nLTY1LjEwNDkzMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNy41MjQ2NDInIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzUuMjI2Mjg1JyB5PSctNjUuMTA0OTMyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMyLjkyNzkyNycgeT0nLTY1LjEwNDkzMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMC42Mjk1NycgeT0nLTY1LjEwNDkzMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yOC4zMzEyMTInIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjEuNDM2MTQnIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTkuMTM3NzgyJyB5PSctNjUuMTA0OTMyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nLTY1LjEwNDkzMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNC41NDEwNjcnIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMy4wNDkyOCcgeT0nLTY1LjEwNDkzMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEuNTQ3NDM1JyB5PSctNjUuMTA0OTMyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMy44NDU3OTMnIHk9Jy02NS4xMDQ5MzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctNjUuMTA0OTMyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctNjUuMTA0OTMyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTYyLjgwNjU3NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Ny40MDMyODknIHk9Jy02Mi44MDY1NzQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSctNjIuODA2NTc0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYyLjgwNjU3NCcgeT0nLTYyLjgwNjU3NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01OC4yMDk4NTknIHk9Jy02Mi44MDY1NzQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctNjIuODA2NTc0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nLTYyLjgwNjU3NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yOC4zMzEyMTInIHk9Jy02Mi44MDY1NzQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctNjIuODA2NTc0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIxLjQzNjE0JyB5PSctNjIuODA2NTc0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE5LjEzNzc4MicgeT0nLTYyLjgwNjU3NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctNjIuODA2NTc0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMS41NDc0MzUnIHk9Jy02Mi44MDY1NzQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTYyLjgwNjU3NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzYuMTQ0MTUnIHk9Jy02Mi44MDY1NzQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxMC43NDA4NjUnIHk9Jy02Mi44MDY1NzQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctNjAuNTA4MjE3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLTYwLjUwODIxNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01My42MTMxNDQnIHk9Jy02MC41MDgyMTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctNjAuNTA4MjE3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ2LjcxODA3MicgeT0nLTYwLjUwODIxNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00NC40MTk3MTUnIHk9Jy02MC41MDgyMTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzcuNTI0NjQyJyB5PSctNjAuNTA4MjE3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM1LjIyNjI4NScgeT0nLTYwLjUwODIxNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMi45Mjc5MjcnIHk9Jy02MC41MDgyMTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzAuNjI5NTcnIHk9Jy02MC41MDgyMTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctNjAuNTA4MjE3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nLTYwLjUwODIxNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy05Ljk0NDM1MicgeT0nLTYwLjUwODIxNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctNjAuNTA4MjE3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctNjAuNTA4MjE3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02OS43MDE2NDcnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjcuNDAzMjg5JyB5PSctNTguMjA5ODU5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY1LjEwNDkzMicgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Mi44MDY1NzQnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjAuNTA4MjE3JyB5PSctNTguMjA5ODU5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01My42MTMxNDQnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PSctNTguMjA5ODU5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ0LjQxOTcxNScgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zOS44MjMnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzUuMjI2Mjg1JyB5PSctNTguMjA5ODU5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMwLjYyOTU3JyB5PSctNTguMjA5ODU5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI2LjAzMjg1NScgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMS40MzYxNCcgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNi44Mzk0MjUnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNy42NDU5OTUnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMy4wNDkyOCcgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0uNzUwOTIyJyB5PSctNTguMjA5ODU5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMS41NDc0MzUnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzYuMTQ0MTUnIHk9Jy01OC4yMDk4NTknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc4LjQ0MjUwNycgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEwLjc0MDg2NScgeT0nLTU4LjIwOTg1OScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01MS4zMTQ3ODcnIHk9Jy01NS45MTE1MDInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PSctNTUuOTExNTAyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ2LjcxODA3MicgeT0nLTU1LjkxMTUwMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zOS44MjMnIHk9Jy01NS45MTE1MDInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzUuMjI2Mjg1JyB5PSctNTUuOTExNTAyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI2LjAzMjg1NScgeT0nLTU1LjkxMTUwMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMy43MzQ0OTcnIHk9Jy01NS45MTE1MDInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTkuMTM3NzgyJyB5PSctNTUuOTExNTAyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nLTU1LjkxMTUwMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xMi4yNDI3MScgeT0nLTU1LjkxMTUwMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy01My42MTMxNDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY3LjQwMzI4OScgeT0nLTUzLjYxMzE0NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02NS4xMDQ5MzInIHk9Jy01My42MTMxNDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjIuODA2NTc0JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLTUzLjYxMzE0NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01NS45MTE1MDInIHk9Jy01My42MTMxNDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUxLjMxNDc4NycgeT0nLTUzLjYxMzE0NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00Ni43MTgwNzInIHk9Jy01My42MTMxNDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDIuMTIxMzU3JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nLTUzLjYxMzE0NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNy41MjQ2NDInIHk9Jy01My42MTMxNDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzUuMjI2Mjg1JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMyLjkyNzkyNycgeT0nLTUzLjYxMzE0NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMC42Mjk1NycgeT0nLTUzLjYxMzE0NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMS40MzYxNCcgeT0nLTUzLjYxMzE0NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNi44Mzk0MjUnIHk9Jy01My42MTMxNDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTQuNTQxMDY3JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTkuOTQ0MzUyJyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcuNjQ1OTk1JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUuMzQ3NjM3JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLS43NTA5MjInIHk9Jy01My42MTMxNDQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTUzLjYxMzE0NCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzguNDQyNTA3JyB5PSctNTMuNjEzMTQ0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY5LjcwMTY0NycgeT0nLTUxLjMxNDc4NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Ny40MDMyODknIHk9Jy01MS4zMTQ3ODcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSctNTEuMzE0Nzg3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU1LjkxMTUwMicgeT0nLTUxLjMxNDc4NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00OS4wMTY0MjknIHk9Jy01MS4zMTQ3ODcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDQuNDE5NzE1JyB5PSctNTEuMzE0Nzg3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI4LjMzMTIxMicgeT0nLTUxLjMxNDc4NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yNi4wMzI4NTUnIHk9Jy01MS4zMTQ3ODcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTkuMTM3NzgyJyB5PSctNTEuMzE0Nzg3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTEyLjI0MjcxJyB5PSctNTEuMzE0Nzg3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLS43NTA5MjInIHk9Jy01MS4zMTQ3ODcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTUxLjMxNDc4NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzYuMTQ0MTUnIHk9Jy01MS4zMTQ3ODcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc4LjQ0MjUwNycgeT0nLTUxLjMxNDc4NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy00OS4wMTY0MjknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctNDkuMDE2NDI5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY1LjEwNDkzMicgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Mi44MDY1NzQnIHk9Jy00OS4wMTY0MjknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjAuNTA4MjE3JyB5PSctNDkuMDE2NDI5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01NS45MTE1MDInIHk9Jy00OS4wMTY0MjknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PSctNDkuMDE2NDI5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM3LjUyNDY0MicgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMi45Mjc5MjcnIHk9Jy00OS4wMTY0MjknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctNDkuMDE2NDI5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIxLjQzNjE0JyB5PSctNDkuMDE2NDI5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE0LjU0MTA2NycgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy05Ljk0NDM1MicgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03LjY0NTk5NScgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctNDkuMDE2NDI5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLS43NTA5MjInIHk9Jy00OS4wMTY0MjknIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxLjU0NzQzNScgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzMuODQ1NzkzJyB5PSctNDkuMDE2NDI5JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nNi4xNDQxNScgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEwLjc0MDg2NScgeT0nLTQ5LjAxNjQyOScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy00Ni43MTgwNzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjcuNDAzMjg5JyB5PSctNDYuNzE4MDcyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYyLjgwNjU3NCcgeT0nLTQ2LjcxODA3MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01My42MTMxNDQnIHk9Jy00Ni43MTgwNzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDQuNDE5NzE1JyB5PSctNDYuNzE4MDcyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nLTQ2LjcxODA3MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNy41MjQ2NDInIHk9Jy00Ni43MTgwNzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzAuNjI5NTcnIHk9Jy00Ni43MTgwNzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjguMzMxMjEyJyB5PSctNDYuNzE4MDcyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI2LjAzMjg1NScgeT0nLTQ2LjcxODA3MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMy43MzQ0OTcnIHk9Jy00Ni43MTgwNzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTYuODM5NDI1JyB5PSctNDYuNzE4MDcyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTEyLjI0MjcxJyB5PSctNDYuNzE4MDcyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTkuOTQ0MzUyJyB5PSctNDYuNzE4MDcyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLS43NTA5MjInIHk9Jy00Ni43MTgwNzInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTQ2LjcxODA3MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzguNDQyNTA3JyB5PSctNDYuNzE4MDcyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY3LjQwMzI4OScgeT0nLTQ0LjQxOTcxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02NS4xMDQ5MzInIHk9Jy00NC40MTk3MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTguMjA5ODU5JyB5PSctNDQuNDE5NzE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUxLjMxNDc4NycgeT0nLTQ0LjQxOTcxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00NC40MTk3MTUnIHk9Jy00NC40MTk3MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDIuMTIxMzU3JyB5PSctNDQuNDE5NzE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM1LjIyNjI4NScgeT0nLTQ0LjQxOTcxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMi45Mjc5MjcnIHk9Jy00NC40MTk3MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzAuNjI5NTcnIHk9Jy00NC40MTk3MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTYuODM5NDI1JyB5PSctNDQuNDE5NzE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE0LjU0MTA2NycgeT0nLTQ0LjQxOTcxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy05Ljk0NDM1MicgeT0nLTQ0LjQxOTcxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctNDQuNDE5NzE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLS43NTA5MjInIHk9Jy00NC40MTk3MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxLjU0NzQzNScgeT0nLTQ0LjQxOTcxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzMuODQ1NzkzJyB5PSctNDQuNDE5NzE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nNi4xNDQxNScgeT0nLTQ0LjQxOTcxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEwLjc0MDg2NScgeT0nLTQ0LjQxOTcxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy00Mi4xMjEzNTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSctNDIuMTIxMzU3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYwLjUwODIxNycgeT0nLTQyLjEyMTM1NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01NS45MTE1MDInIHk9Jy00Mi4xMjEzNTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctNDIuMTIxMzU3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nLTQyLjEyMTM1NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMi45Mjc5MjcnIHk9Jy00Mi4xMjEzNTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjguMzMxMjEyJyB5PSctNDIuMTIxMzU3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI2LjAzMjg1NScgeT0nLTQyLjEyMTM1NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9Jy00Mi4xMjEzNTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy00Mi4xMjEzNTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNy42NDU5OTUnIHk9Jy00Mi4xMjEzNTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNS4zNDc2MzcnIHk9Jy00Mi4xMjEzNTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctNDIuMTIxMzU3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nOC40NDI1MDcnIHk9Jy00Mi4xMjEzNTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSctMzkuODIzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLTM5LjgyMycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01NS45MTE1MDInIHk9Jy0zOS44MjMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctMzkuODIzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ5LjAxNjQyOScgeT0nLTM5LjgyMycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00Ni43MTgwNzInIHk9Jy0zOS44MjMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDQuNDE5NzE1JyB5PSctMzkuODIzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQyLjEyMTM1NycgeT0nLTM5LjgyMycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zOS44MjMnIHk9Jy0zOS44MjMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzcuNTI0NjQyJyB5PSctMzkuODIzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMwLjYyOTU3JyB5PSctMzkuODIzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIxLjQzNjE0JyB5PSctMzkuODIzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nLTM5LjgyMycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy05Ljk0NDM1MicgeT0nLTM5LjgyMycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctMzkuODIzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLS43NTA5MjInIHk9Jy0zOS44MjMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctMzkuODIzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nOC40NDI1MDcnIHk9Jy0zOS44MjMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxMC43NDA4NjUnIHk9Jy0zOS44MjMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSctMzcuNTI0NjQyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYyLjgwNjU3NCcgeT0nLTM3LjUyNDY0MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01NS45MTE1MDInIHk9Jy0zNy41MjQ2NDInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctMzcuNTI0NjQyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ2LjcxODA3MicgeT0nLTM3LjUyNDY0MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zOS44MjMnIHk9Jy0zNy41MjQ2NDInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzcuNTI0NjQyJyB5PSctMzcuNTI0NjQyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM1LjIyNjI4NScgeT0nLTM3LjUyNDY0MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMC42Mjk1NycgeT0nLTM3LjUyNDY0MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yOC4zMzEyMTInIHk9Jy0zNy41MjQ2NDInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctMzcuNTI0NjQyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIxLjQzNjE0JyB5PSctMzcuNTI0NjQyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nLTM3LjUyNDY0MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03LjY0NTk5NScgeT0nLTM3LjUyNDY0MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0uNzUwOTIyJyB5PSctMzcuNTI0NjQyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMS41NDc0MzUnIHk9Jy0zNy41MjQ2NDInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTM3LjUyNDY0MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEwLjc0MDg2NScgeT0nLTM3LjUyNDY0MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy0zNS4yMjYyODUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYyLjgwNjU3NCcgeT0nLTM1LjIyNjI4NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01OC4yMDk4NTknIHk9Jy0zNS4yMjYyODUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUxLjMxNDc4NycgeT0nLTM1LjIyNjI4NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00Ni43MTgwNzInIHk9Jy0zNS4yMjYyODUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzcuNTI0NjQyJyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM1LjIyNjI4NScgeT0nLTM1LjIyNjI4NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMi45Mjc5MjcnIHk9Jy0zNS4yMjYyODUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzAuNjI5NTcnIHk9Jy0zNS4yMjYyODUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjEuNDM2MTQnIHk9Jy0zNS4yMjYyODUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTQuNTQxMDY3JyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTEyLjI0MjcxJyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTkuOTQ0MzUyJyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcuNjQ1OTk1JyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUuMzQ3NjM3JyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMuMDQ5MjgnIHk9Jy0zNS4yMjYyODUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxLjU0NzQzNScgeT0nLTM1LjIyNjI4NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzMuODQ1NzkzJyB5PSctMzUuMjI2Mjg1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nNi4xNDQxNScgeT0nLTM1LjIyNjI4NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEwLjc0MDg2NScgeT0nLTM1LjIyNjI4NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy0zMi45Mjc5MjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctMzIuOTI3OTI3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY3LjQwMzI4OScgeT0nLTMyLjkyNzkyNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02MC41MDgyMTcnIHk9Jy0zMi45Mjc5MjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctMzIuOTI3OTI3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUxLjMxNDc4NycgeT0nLTMyLjkyNzkyNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00NC40MTk3MTUnIHk9Jy0zMi45Mjc5MjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDIuMTIxMzU3JyB5PSctMzIuOTI3OTI3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMyLjkyNzkyNycgeT0nLTMyLjkyNzkyNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMC42Mjk1NycgeT0nLTMyLjkyNzkyNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yOC4zMzEyMTInIHk9Jy0zMi45Mjc5MjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjYuMDMyODU1JyB5PSctMzIuOTI3OTI3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIzLjczNDQ5NycgeT0nLTMyLjkyNzkyNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9Jy0zMi45Mjc5MjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctMzIuOTI3OTI3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nOC40NDI1MDcnIHk9Jy0zMi45Mjc5MjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjcuNDAzMjg5JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjAuNTA4MjE3JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTguMjA5ODU5JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTUuOTExNTAyJyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDIuMTIxMzU3JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzkuODIzJyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzcuNTI0NjQyJyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjYuMDMyODU1JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy0zMC42Mjk1NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy05Ljk0NDM1MicgeT0nLTMwLjYyOTU3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcuNjQ1OTk1JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNS4zNDc2MzcnIHk9Jy0zMC42Mjk1NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc4LjQ0MjUwNycgeT0nLTMwLjYyOTU3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctMzAuNjI5NTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctMjguMzMxMjEyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYyLjgwNjU3NCcgeT0nLTI4LjMzMTIxMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01My42MTMxNDQnIHk9Jy0yOC4zMzEyMTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PSctMjguMzMxMjEyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ0LjQxOTcxNScgeT0nLTI4LjMzMTIxMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00Mi4xMjEzNTcnIHk9Jy0yOC4zMzEyMTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctMjguMzMxMjEyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIxLjQzNjE0JyB5PSctMjguMzMxMjEyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTkuOTQ0MzUyJyB5PSctMjguMzMxMjEyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLS43NTA5MjInIHk9Jy0yOC4zMzEyMTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxMC43NDA4NjUnIHk9Jy0yOC4zMzEyMTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctMjYuMDMyODU1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY1LjEwNDkzMicgeT0nLTI2LjAzMjg1NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02MC41MDgyMTcnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTguMjA5ODU5JyB5PSctMjYuMDMyODU1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ5LjAxNjQyOScgeT0nLTI2LjAzMjg1NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00NC40MTk3MTUnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzkuODIzJyB5PSctMjYuMDMyODU1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM3LjUyNDY0MicgeT0nLTI2LjAzMjg1NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNS4yMjYyODUnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzIuOTI3OTI3JyB5PSctMjYuMDMyODU1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMwLjYyOTU3JyB5PSctMjYuMDMyODU1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI4LjMzMTIxMicgeT0nLTI2LjAzMjg1NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yNi4wMzI4NTUnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjEuNDM2MTQnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTkuMTM3NzgyJyB5PSctMjYuMDMyODU1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nLTI2LjAzMjg1NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNC41NDEwNjcnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNy42NDU5OTUnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMy4wNDkyOCcgeT0nLTI2LjAzMjg1NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEuNTQ3NDM1JyB5PSctMjYuMDMyODU1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMy44NDU3OTMnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctMjYuMDMyODU1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nOC40NDI1MDcnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxMC43NDA4NjUnIHk9Jy0yNi4wMzI4NTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctMjMuNzM0NDk3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYwLjUwODIxNycgeT0nLTIzLjczNDQ5NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01My42MTMxNDQnIHk9Jy0yMy43MzQ0OTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctMjMuNzM0NDk3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ5LjAxNjQyOScgeT0nLTIzLjczNDQ5NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMi45Mjc5MjcnIHk9Jy0yMy43MzQ0OTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjguMzMxMjEyJyB5PSctMjMuNzM0NDk3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIzLjczNDQ5NycgeT0nLTIzLjczNDQ5NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9Jy0yMy43MzQ0OTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy0yMy43MzQ0OTcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctLjc1MDkyMicgeT0nLTIzLjczNDQ5NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzguNDQyNTA3JyB5PSctMjMuNzM0NDk3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY5LjcwMTY0NycgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ2LjcxODA3MicgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ0LjQxOTcxNScgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM3LjUyNDY0MicgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM1LjIyNjI4NScgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMwLjYyOTU3JyB5PSctMjEuNDM2MTQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjYuMDMyODU1JyB5PSctMjEuNDM2MTQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctMjEuNDM2MTQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjEuNDM2MTQnIHk9Jy0yMS40MzYxNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNi44Mzk0MjUnIHk9Jy0yMS40MzYxNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNC41NDEwNjcnIHk9Jy0yMS40MzYxNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy05Ljk0NDM1MicgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcuNjQ1OTk1JyB5PSctMjEuNDM2MTQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNS4zNDc2MzcnIHk9Jy0yMS40MzYxNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0uNzUwOTIyJyB5PSctMjEuNDM2MTQnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nOC40NDI1MDcnIHk9Jy0yMS40MzYxNCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEwLjc0MDg2NScgeT0nLTIxLjQzNjE0JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTE5LjEzNzc4MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02OS43MDE2NDcnIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjcuNDAzMjg5JyB5PSctMTkuMTM3NzgyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYwLjUwODIxNycgeT0nLTE5LjEzNzc4MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01My42MTMxNDQnIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDYuNzE4MDcyJyB5PSctMTkuMTM3NzgyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nLTE5LjEzNzc4MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNS4yMjYyODUnIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzAuNjI5NTcnIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjYuMDMyODU1JyB5PSctMTkuMTM3NzgyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIzLjczNDQ5NycgeT0nLTE5LjEzNzc4MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMS40MzYxNCcgeT0nLTE5LjEzNzc4MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctOS45NDQzNTInIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNy42NDU5OTUnIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNS4zNDc2MzcnIHk9Jy0xOS4xMzc3ODInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMy4wNDkyOCcgeT0nLTE5LjEzNzc4MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEuNTQ3NDM1JyB5PSctMTkuMTM3NzgyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctMTkuMTM3NzgyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY3LjQwMzI4OScgeT0nLTE2LjgzOTQyNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02NS4xMDQ5MzInIHk9Jy0xNi44Mzk0MjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTguMjA5ODU5JyB5PSctMTYuODM5NDI1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU1LjkxMTUwMicgeT0nLTE2LjgzOTQyNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00OS4wMTY0MjknIHk9Jy0xNi44Mzk0MjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDYuNzE4MDcyJyB5PSctMTYuODM5NDI1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM3LjUyNDY0MicgeT0nLTE2LjgzOTQyNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNS4yMjYyODUnIHk9Jy0xNi44Mzk0MjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzIuOTI3OTI3JyB5PSctMTYuODM5NDI1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI4LjMzMTIxMicgeT0nLTE2LjgzOTQyNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMS40MzYxNCcgeT0nLTE2LjgzOTQyNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9Jy0xNi44Mzk0MjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTYuODM5NDI1JyB5PSctMTYuODM5NDI1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE0LjU0MTA2NycgeT0nLTE2LjgzOTQyNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctMTYuODM5NDI1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLS43NTA5MjInIHk9Jy0xNi44Mzk0MjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxLjU0NzQzNScgeT0nLTE2LjgzOTQyNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzMuODQ1NzkzJyB5PSctMTYuODM5NDI1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nNi4xNDQxNScgeT0nLTE2LjgzOTQyNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzguNDQyNTA3JyB5PSctMTYuODM5NDI1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctMTYuODM5NDI1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTE0LjU0MTA2NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02NS4xMDQ5MzInIHk9Jy0xNC41NDEwNjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTUuOTExNTAyJyB5PSctMTQuNTQxMDY3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUxLjMxNDc4NycgeT0nLTE0LjU0MTA2NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00NC40MTk3MTUnIHk9Jy0xNC41NDEwNjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDIuMTIxMzU3JyB5PSctMTQuNTQxMDY3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nLTE0LjU0MTA2NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMC42Mjk1NycgeT0nLTE0LjU0MTA2NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yOC4zMzEyMTInIHk9Jy0xNC41NDEwNjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctMTQuNTQxMDY3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE5LjEzNzc4MicgeT0nLTE0LjU0MTA2NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNi44Mzk0MjUnIHk9Jy0xNC41NDEwNjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9Jy0xNC41NDEwNjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNS4zNDc2MzcnIHk9Jy0xNC41NDEwNjcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSczLjg0NTc5MycgeT0nLTE0LjU0MTA2NycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzguNDQyNTA3JyB5PSctMTQuNTQxMDY3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY3LjQwMzI4OScgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUzLjYxMzE0NCcgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQyLjEyMTM1NycgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM3LjUyNDY0MicgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI2LjAzMjg1NScgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIzLjczNDQ5NycgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTkuOTQ0MzUyJyB5PSctMTIuMjQyNzEnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNy42NDU5OTUnIHk9Jy0xMi4yNDI3MScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01LjM0NzYzNycgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMuMDQ5MjgnIHk9Jy0xMi4yNDI3MScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEuNTQ3NDM1JyB5PSctMTIuMjQyNzEnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctMTIuMjQyNzEnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc4LjQ0MjUwNycgeT0nLTEyLjI0MjcxJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctMTIuMjQyNzEnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PSctOS45NDQzNTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctOS45NDQzNTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctOS45NDQzNTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDQuNDE5NzE1JyB5PSctOS45NDQzNTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDIuMTIxMzU3JyB5PSctOS45NDQzNTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzcuNTI0NjQyJyB5PSctOS45NDQzNTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzAuNjI5NTcnIHk9Jy05Ljk0NDM1MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yOC4zMzEyMTInIHk9Jy05Ljk0NDM1MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yNi4wMzI4NTUnIHk9Jy05Ljk0NDM1MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMy43MzQ0OTcnIHk9Jy05Ljk0NDM1MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMS40MzYxNCcgeT0nLTkuOTQ0MzUyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTkuOTQ0MzUyJyB5PSctOS45NDQzNTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNS4zNDc2MzcnIHk9Jy05Ljk0NDM1MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctOS45NDQzNTInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxMC43NDA4NjUnIHk9Jy05Ljk0NDM1MicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02NS4xMDQ5MzInIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Mi44MDY1NzQnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01OC4yMDk4NTknIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01NS45MTE1MDInIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01My42MTMxNDQnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01MS4zMTQ3ODcnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00OS4wMTY0MjknIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00NC40MTk3MTUnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zOS44MjMnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNS4yMjYyODUnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMi45Mjc5MjcnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMC42Mjk1NycgeT0nLTcuNjQ1OTk1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTI2LjAzMjg1NScgeT0nLTcuNjQ1OTk1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE0LjU0MTA2NycgeT0nLTcuNjQ1OTk1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcuNjQ1OTk1JyB5PSctNy42NDU5OTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNS4zNDc2MzcnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSctNy42NDU5OTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctLjc1MDkyMicgeT0nLTcuNjQ1OTk1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMS41NDc0MzUnIHk9Jy03LjY0NTk5NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzMuODQ1NzkzJyB5PSctNy42NDU5OTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PSctNy42NDU5OTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctNS4zNDc2MzcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctNS4zNDc2MzcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PSctNS4zNDc2MzcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjguMzMxMjEyJyB5PSctNS4zNDc2MzcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSctNS4zNDc2MzcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjEuNDM2MTQnIHk9Jy01LjM0NzYzNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9Jy01LjM0NzYzNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xNi44Mzk0MjUnIHk9Jy01LjM0NzYzNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xMi4yNDI3MScgeT0nLTUuMzQ3NjM3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcuNjQ1OTk1JyB5PSctNS4zNDc2MzcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxLjU0NzQzNScgeT0nLTUuMzQ3NjM3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nLTMuMDQ5MjgnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PSctMy4wNDkyOCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Ny40MDMyODknIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY1LjEwNDkzMicgeT0nLTMuMDQ5MjgnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjIuODA2NTc0JyB5PSctMy4wNDkyOCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02MC41MDgyMTcnIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLTMuMDQ5MjgnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSctMy4wNDkyOCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00Ni43MTgwNzInIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ0LjQxOTcxNScgeT0nLTMuMDQ5MjgnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzcuNTI0NjQyJyB5PSctMy4wNDkyOCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNS4yMjYyODUnIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMwLjYyOTU3JyB5PSctMy4wNDkyOCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMy43MzQ0OTcnIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nLTMuMDQ5MjgnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTQuNTQxMDY3JyB5PSctMy4wNDkyOCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xMi4yNDI3MScgeT0nLTMuMDQ5MjgnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNy42NDU5OTUnIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMuMDQ5MjgnIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMS41NDc0MzUnIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nOC40NDI1MDcnIHk9Jy0zLjA0OTI4JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSctMy4wNDkyOCcgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9Jy0uNzUwOTIyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nLS43NTA5MjInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTEuMzE0Nzg3JyB5PSctLjc1MDkyMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00OS4wMTY0MjknIHk9Jy0uNzUwOTIyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ2LjcxODA3MicgeT0nLS43NTA5MjInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzkuODIzJyB5PSctLjc1MDkyMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yOC4zMzEyMTInIHk9Jy0uNzUwOTIyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIzLjczNDQ5NycgeT0nLS43NTA5MjInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTYuODM5NDI1JyB5PSctLjc1MDkyMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xMi4yNDI3MScgeT0nLS43NTA5MjInIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctOS45NDQzNTInIHk9Jy0uNzUwOTIyJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcuNjQ1OTk1JyB5PSctLjc1MDkyMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEuNTQ3NDM1JyB5PSctLjc1MDkyMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzMuODQ1NzkzJyB5PSctLjc1MDkyMicgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9JzEuNTQ3NDM1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY3LjQwMzI4OScgeT0nMS41NDc0MzUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PScxLjU0NzQzNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Mi44MDY1NzQnIHk9JzEuNTQ3NDM1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nMS41NDc0MzUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PScxLjU0NzQzNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00Ni43MTgwNzInIHk9JzEuNTQ3NDM1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM3LjUyNDY0MicgeT0nMS41NDc0MzUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzIuOTI3OTI3JyB5PScxLjU0NzQzNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9JzEuNTQ3NDM1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE0LjU0MTA2NycgeT0nMS41NDc0MzUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctOS45NDQzNTInIHk9JzEuNTQ3NDM1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcuNjQ1OTk1JyB5PScxLjU0NzQzNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01LjM0NzYzNycgeT0nMS41NDc0MzUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMy4wNDkyOCcgeT0nMS41NDc0MzUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctLjc1MDkyMicgeT0nMS41NDc0MzUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxLjU0NzQzNScgeT0nMS41NDc0MzUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc2LjE0NDE1JyB5PScxLjU0NzQzNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy03Mi4wMDAwMDQnIHk9JzMuODQ1NzkzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTY3LjQwMzI4OScgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSczLjg0NTc5MycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Mi44MDY1NzQnIHk9JzMuODQ1NzkzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTU4LjIwOTg1OScgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSczLjg0NTc5MycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01MS4zMTQ3ODcnIHk9JzMuODQ1NzkzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQ5LjAxNjQyOScgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDQuNDE5NzE1JyB5PSczLjg0NTc5MycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00Mi4xMjEzNTcnIHk9JzMuODQ1NzkzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzUuMjI2Mjg1JyB5PSczLjg0NTc5MycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMC42Mjk1NycgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjguMzMxMjEyJyB5PSczLjg0NTc5MycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yNi4wMzI4NTUnIHk9JzMuODQ1NzkzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIxLjQzNjE0JyB5PSczLjg0NTc5MycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9JzMuODQ1NzkzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMTIuMjQyNzEnIHk9JzMuODQ1NzkzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTkuOTQ0MzUyJyB5PSczLjg0NTc5MycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01LjM0NzYzNycgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMy4wNDkyOCcgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxLjU0NzQzNScgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSc4LjQ0MjUwNycgeT0nMy44NDU3OTMnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxMC43NDA4NjUnIHk9JzMuODQ1NzkzJyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nNi4xNDQxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy02Ny40MDMyODknIHk9JzYuMTQ0MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PSc2LjE0NDE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTYyLjgwNjU3NCcgeT0nNi4xNDQxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01OC4yMDk4NTknIHk9JzYuMTQ0MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PSc2LjE0NDE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUxLjMxNDc4NycgeT0nNi4xNDQxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00OS4wMTY0MjknIHk9JzYuMTQ0MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDIuMTIxMzU3JyB5PSc2LjE0NDE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTM5LjgyMycgeT0nNi4xNDQxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNy41MjQ2NDInIHk9JzYuMTQ0MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzUuMjI2Mjg1JyB5PSc2LjE0NDE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMyLjkyNzkyNycgeT0nNi4xNDQxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zMC42Mjk1NycgeT0nNi4xNDQxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yNi4wMzI4NTUnIHk9JzYuMTQ0MTUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMjMuNzM0NDk3JyB5PSc2LjE0NDE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nNi4xNDQxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0uNzUwOTIyJyB5PSc2LjE0NDE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nNi4xNDQxNScgeT0nNi4xNDQxNScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzguNDQyNTA3JyB5PSc2LjE0NDE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMTAuNzQwODY1JyB5PSc2LjE0NDE1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTcyLjAwMDAwNCcgeT0nOC40NDI1MDcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTguMjA5ODU5JyB5PSc4LjQ0MjUwNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy01My42MTMxNDQnIHk9JzguNDQyNTA3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUxLjMxNDc4NycgeT0nOC40NDI1MDcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PSc4LjQ0MjUwNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy00NC40MTk3MTUnIHk9JzguNDQyNTA3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTQyLjEyMTM1NycgeT0nOC40NDI1MDcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzcuNTI0NjQyJyB5PSc4LjQ0MjUwNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zNS4yMjYyODUnIHk9JzguNDQyNTA3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTMwLjYyOTU3JyB5PSc4LjQ0MjUwNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMy43MzQ0OTcnIHk9JzguNDQyNTA3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTIxLjQzNjE0JyB5PSc4LjQ0MjUwNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0xOS4xMzc3ODInIHk9JzguNDQyNTA3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nOC40NDI1MDcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNy42NDU5OTUnIHk9JzguNDQyNTA3JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTUuMzQ3NjM3JyB5PSc4LjQ0MjUwNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PSc4LjQ0MjUwNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEuNTQ3NDM1JyB5PSc4LjQ0MjUwNycgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzEwLjc0MDg2NScgeT0nOC40NDI1MDcnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNzIuMDAwMDA0JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjkuNzAxNjQ3JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjcuNDAzMjg5JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjUuMTA0OTMyJyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjIuODA2NTc0JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNjAuNTA4MjE3JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTguMjA5ODU5JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNTMuNjEzMTQ0JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDkuMDE2NDI5JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctNDQuNDE5NzE1JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzkuODIzJyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzIuOTI3OTI3JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctMzAuNjI5NTcnIHk9JzEwLjc0MDg2NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0yMS40MzYxNCcgeT0nMTAuNzQwODY1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE2LjgzOTQyNScgeT0nMTAuNzQwODY1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTE0LjU0MTA2NycgeT0nMTAuNzQwODY1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nLTEyLjI0MjcxJyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctOS45NDQzNTInIHk9JzEwLjc0MDg2NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9Jy0zLjA0OTI4JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PSctLjc1MDkyMicgeT0nMTAuNzQwODY1JyBoZWlnaHQ9JzIuMjk4MzU3JyB3aWR0aD0nMi4yOTgzNTcnLz4KPHJlY3QgeD0nMy44NDU3OTMnIHk9JzEwLjc0MDg2NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzYuMTQ0MTUnIHk9JzEwLjc0MDg2NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjxyZWN0IHg9JzguNDQyNTA3JyB5PScxMC43NDA4NjUnIGhlaWdodD0nMi4yOTgzNTcnIHdpZHRoPScyLjI5ODM1NycvPgo8cmVjdCB4PScxMC43NDA4NjUnIHk9JzEwLjc0MDg2NScgaGVpZ2h0PScyLjI5ODM1Nycgd2lkdGg9JzIuMjk4MzU3Jy8+CjwvZz4KPC9zdmc+")} +}

91f$2Zp>W)yfQ=TPANZ=8FpyG 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