From b06ab3bea8f97eef3715fb6a35d31597393c820a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20R=C3=A5gstad?= Date: Sun, 25 Oct 2026 13:31:33 +0000 Subject: [PATCH] feat(save): persist adventure state and demonstrate the complete fixture --- .github/workflows/ci.yml | 1 + .gitignore | 1 + Cargo.lock | 82 ++++++++++- Cargo.toml | 2 + README.md | 18 ++- assets/last-light/walkthrough.txt | 22 +++ docs/images/dialogue-restored.png | Bin 0 -> 99519 bytes docs/images/ending-restored.png | Bin 0 -> 105759 bytes docs/save-format.md | 52 +++++++ docs/walkthrough-transcript.txt | 171 +++++++++++++++++++++++ docs/walkthrough.md | 60 +++++++++ examples/console.rs | 179 ++++++++++++++++++++++++ examples/last_light.rs | 35 ++++- src/lib.rs | 1 + src/save.rs | 217 ++++++++++++++++++++++++++++++ tests/save_load.rs | 199 +++++++++++++++++++++++++++ 16 files changed, 1036 insertions(+), 4 deletions(-) create mode 100644 assets/last-light/walkthrough.txt create mode 100644 docs/images/dialogue-restored.png create mode 100644 docs/images/ending-restored.png create mode 100644 docs/save-format.md create mode 100644 docs/walkthrough-transcript.txt create mode 100644 docs/walkthrough.md create mode 100644 examples/console.rs create mode 100644 src/save.rs create mode 100644 tests/save_load.rs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68cbefc..4aacd7e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,4 +11,5 @@ jobs: - uses: Swatinem/rust-cache@v2 - run: cargo fmt --all -- --check - run: cargo test --locked + - run: cargo run --locked --example console -- --walkthrough - run: cargo clippy --locked --all-targets --all-features -- -D warnings diff --git a/.gitignore b/.gitignore index ea8c4bf..1a489bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +*.save.json diff --git a/Cargo.lock b/Cargo.lock index d881d0c..ed6525b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1623,7 +1623,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures", + "cpufeatures 0.3.1", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", ] [[package]] @@ -1869,6 +1878,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + [[package]] name = "cpufeatures" version = "0.3.1" @@ -1923,6 +1941,16 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "ctrlc" version = "3.5.2" @@ -1963,6 +1991,16 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -2303,6 +2341,16 @@ dependencies = [ "slab", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "gethostname" version = "1.1.0" @@ -3445,6 +3493,8 @@ dependencies = [ "serde", "serde_json", "serde_path_to_error", + "sha2", + "tempfile", ] [[package]] @@ -4023,6 +4073,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -4210,6 +4271,19 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom", + "once_cell", + "rustix 1.1.5", + "windows-sys 0.61.2", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -4426,6 +4500,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + [[package]] name = "typewit" version = "1.15.2" diff --git a/Cargo.toml b/Cargo.toml index 020d94b..1085e9a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,8 @@ schemars = "1" serde = { version = "1", features = ["derive"] } serde_json = "1" serde_path_to_error = "0.1" +sha2 = "0.10" +tempfile = "3" [features] default = [] diff --git a/README.md b/README.md index 56f359d..659655a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A minimal data-driven point-and-click adventure runtime. **The Last Light** is an original, hand-authored three-room fixture with pickups, inventory-gated actions, -branching dialogue, room transitions and a reachable ending. +branching dialogue, room transitions, versioned save/load and a reachable ending. ## Play @@ -13,17 +13,31 @@ API and platform setup. The old Bevy 0.6 scaffold has been updated. ```sh cargo run --locked --features desktop --example last_light # Optional path to another v1 scene: -cargo run --locked --features desktop --example last_light -- path/to/game.json +cargo run --locked --features desktop --example last_light -- path/to/game.json path/to/slot.json ``` Click the labeled rectangles, or press their numbers (1–9). Items are used automatically by matching hotspots. Dialogue is modal. **N** starts a new game. +**F5** saves; **F9** loads (also available as buttons). The desktop player uses native Bevy UI; on Linux it needs X11 and a Vulkan-capable driver (Mesa software rendering also works). Audio, gamepads and 3D are disabled. +For a terminal player or a complete self-checking demonstration (no GPU): + +```sh +cargo run --locked --example console +cargo run --locked --example console -- --walkthrough +``` + +Follow the [playable walkthrough](docs/walkthrough.md). The automated run saves +and restores an active conversation, a repaired lantern and the ending, using an +isolated temporary slot. Normal play saves to `last_light.save.json` in the +current directory. Failed loads preserve the running game. + ## Editor integration - [Versioned scene contract](docs/scene-format.md) +- [Save format and compatibility](docs/save-format.md) - [Generated JSON Schema](docs/scene-v1.schema.json) - [Fixture source](assets/last-light/game.json) and [asset license](assets/last-light/LICENSE.md) diff --git a/assets/last-light/walkthrough.txt b/assets/last-light/walkthrough.txt new file mode 100644 index 0000000..f2fa1b3 --- /dev/null +++ b/assets/last-light/walkthrough.txt @@ -0,0 +1,22 @@ +# These are also playable commands for the interactive console. +click crate +click workshop +click keeper +choose help +# Save mid-conversation while carrying the fuse, then replace the running game. +save +new +load +choose accept +click stairs +click panel +# Save after consuming an item; used hotspots and dialogue history must persist. +save +new +load +click beacon +# Endings must also survive a fresh instance. +save +new +load +quit diff --git a/docs/images/dialogue-restored.png b/docs/images/dialogue-restored.png new file mode 100644 index 0000000000000000000000000000000000000000..5de9f527581d51f9f83759c6ee4aedb8fafbc79a GIT binary patch literal 99519 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%0A?%|G(7 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

A#gLaULU6B44$aN8RaxVqDK$in= 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 HgX<7tGufeKQUPY-h!1Ve#&BJr(R*ha4(JLg0 z9awk0&`|flnLYVz;50z8HA+G(D(~O7rKQc1mRjby{GhJ8O83Vt_Zeg-B&)5Pb}+7P zrby5vRJ0AVkMTd@2O+ZcgGsUXoK1v>y6}j4?#-5rLX!}yj z2|>4*dM>$E`N+C*^;xj!zb09C2&}BRTBsky;%l>pi-3rt8_EEqRnkBVge`u*{`Y}9 zu-Uc(+f|#^V(`6pi<+3IGHIVV(K*BBbo=#wS{L#5jrYKm)gAU2{|P%7>1_ha># zqiswa!(qDdQlfqR3v?7$pt-5qMM*_3j#s!|F0>T3Yf>!~>l;=cRt0%DHBH#n@Gc9} z8gx&IF|$-8{Oz{m<#uGoxVGK%lx^ZTYI5>znTxoo(DN^lTUauq7yUfF_;ZaunyY(m zdXHB0Ga%lRF+PlS{E!Y#;UCzs!SUHr+F$xUM;X$d#ezhG!OJJAR0|u$2d-YFE^LnY z_JPEv4#Qh`SBdPi=EFUG+5;_|nCNC>sg^9oYSyt+`M$sNy)6XMOV$)UF$1;7KQ2}# zMXUb=sgOcAoqPkGISc2oTNPY~ix!GlgNz-mrv&s31rjo^fY9T5b2p9c8SHp0)=Lrz2mT z=bVuZJtRW5wGL0AVAPem%2v1P)?U{oB~milG#3@%nGW}R3%B0CT-Q6bzAefb;y2X0 zHycofQ!M!P^C8A-wN85Rv^>Mn61OqL%>CkY@w-*|U{HNMY%L;I75$!6{Fj-$Sio@U zA_=Udied5ewNm?w5GeiOLQFPOXV_ zn#Um(xma$D$%)`Teg6C_T)}L2TU*jRA4(qfotE}CoKcd8S?YG;h|pUJ|eKwc6)1=j#LgOnLZVAo2Eh#L+kw)?33d!3#m(gCKacVyk|NAfF+ z+7dVxvrAKJM)3^IO%k-p(bREvl`p6kRtUo47^sWe`AH{Ml`DI^QY;dO zbh{<8WwNa1xkhpgPDUK=qO@XJ{D3T(mFqk<+pyiFN5+|@8P9%$vzczVl5NaZK94=Aqtjm>HM(Xcs$2T zqbFgzafJ_jR~wJB-SV7C*I;{PF}=o&$=ZbcB$8jtgTHuqr7G4o5Z^TdH9qVVOobU$ z9ELv~+`%D^(a_;p$Zg>?U~%NwFw;qaec})r_To{9#8l%IYW+02k*@?=4cbv=Cte!Q z2I3v;_*HYwiM&ODP}9|oV#m!V0qSrT8C$p{ULI@TBrR+izz{9QTG~=i3JuU>V_#Ncwr{ZaYMH?eXIu;Gp_ckT$5i=C zp#I7aNcQ8AFf$%{1+d-e;0^l)2zA@`@o3OtuKKv6^mOmg)#!xg$ZX3KQoq*v)uhnwdN6@ZLa6Gv;CPfk;7VeWCki_?A;JVtKZxG zoBd+)AUS#PlgY8Nj2_28A# zGhJL6sCMw}2Nyso$sznh_WtBrDXmHqL(m|nqM(aIR{Y&&yMW*Cz9P?F?x@abt<=f2Ul1S zMm>>(6~$Rpqi8-U(cIuVKa;#7Z%TKLDk?=@?C+Q~V5xe1l|9JsZ9se+G(3l^%lvJP zen3)*N2BS4O#F>C5xZJ3pRApbfyUDzP!M!gHgkac54 ztg`}(kD8`rQSB?l7~+vR_s5dongcWrcwz6u^iVpG$oknOEs0QsaULg&9t75-YRr6w zbVA?(P0LeF56Fw(ACzOYw5J&HB^CI_tL$>qGrz_{cR|u3X0%XNAT<=?8;I5>(gP%#46^ywRQo``?XSQd!ROCGtYV0CLSf_dnzO!H-?$X#v9qh4(|-+iMlA-&=;{Pz zoRc5!tV{gq_KjcvjGNZ&C||xhOZVw+l}g;<55&5leVqj5Dyxto0+#>IV6TZVb*+=| z`G!X)y|RXAS}C}_l)(5bQr{F9H9?`ujH&f1i(NQ@-`-7y3EF`eJVCtV9#jYQqixm{ z)IvTLFH<+T>w?#!uY$Y?RHe-v8!xF6Zm%7Wh5k($B}IGN2O2ox>|kv|JM}t{`_$TN zY&X(u^akjEy8ORx`p0oEqZ2h8dS90b#TSvcSs{_Lp%@Il1R`?<^PVw{0d+tsk7wE{ zHIZJSLVkR2DAv0U-&b!m<2VrQ&6dm{%jl8i%t4c_#cqU?Lx!rnQFQHkf^arME12p1$p_SDghtu1q zEi>_$Xeh|<{OfX04=X2Qr($I*@i^QLi=~40|e~Ezl-mh04TG67X!5YAXxwN7KTm$_wU=@kzjuVBL2NP z8u5Se>$;%u1cOJYG8wL2_x^Oe|JR|3^y|+4Bu43*RPN4cVZko${}{{leN*tQ=VOf# zBS!&L=eO#)2AnzkqDQ_q0)TWC6ej9EhP$~sW21d8p(+v9m*QhW^jZr+r~u)G8%U*= z%8anwv8u~Qn(=lYAjlMTDxEu}m6OS}nx6XvKLlk+juUwK8&?T?C@6r5i0EuyV2Zv) z`{6kXM&)Dg~Qg1BnK7)$N}m<4ahs^W<^)dKD4%CJzaCu1DM?RFh`%BLjT` zs98!9E-k`_mGQHd^Ms{qF(6pK+NikaJi0x?Yljw@JDs+6_H9M~Kt#UaUH`iHVMho5E);FEVfU-L)$P#R(4ggK zsLpCohMXKiH4i>)Tp4K9?pX0CiRX~jWMFYz>2UcvtmC&@Dt?#2WeE$E0o23#8I_@Y z=zNCx4^-BmAyFHYvNxv))9K8Plzji}(0C(C ztwvBJ;8hhNLf*>F0}a&Y&8n~-mi&saS;51~nzR~WP_vS-6-U{K5|5`($8RKKK?Lwo z#C+-wg9$zW->R0R@WRKg%QMXNBmSQGl2IC%`>dOa(foS7*fqK0PUba=_2jxNDcs5l zm9x5*f_L5ujZI`MTVR1zUe9y zu=cznNcnTIS|Aztowa>wYZo!0O5z%k*{bd72xA*<1iRqThyK^mOw@UN_N!kcXsMow&d0I`p+;R2r4SE; zY~#;C%xJl#vSerzhEVPRG7yc~odkbS=%A&itpWi6qv?0KESj#ypcY?k4hnnmG}fBD z7v+@fqxdxg*mTKKtEuXP?RP{doybu8t*|vUJvV(gEc6k`xX#ZzQt2#RVABR361Y zT2V9=Xk@Bb%EGs8q_7Vo`zR*1M9)=iOE*Du0>ImzoqFl*DQ4vA=>#sF<@7ck?2ueP zx^+a!mOkXex zZi0+dgA6?nwuYWw4UITg?A`&{WO?JaDu37}t^Vjo;#U_vmI$HRrDKa#=S?X{2#TA# zw1sgDU<|9C@7n##e6V3OJox#f;rQSyXPv@u_&;tTA8E=y@u{8C>;HVHwU_v@KDFIo z7nvJtlt60?2$KJpvwNW1SDwoHD6xc%o;s?aT=MF!wzF<35`w&~R*nx1>>w|_X{kBY z%KPTBczXuz9cQ;&J?>a6xi`N)BqR+`i9KA=sG*Re!L!jf+ctcF0^&qnIPuG95P@WR zm$*e)@*mN{*$N?|HDx-65J2vtO%)dvIb@hDDLTAEU8ppvgrm6AgY|Ea#io)L^kOdzcS0&0Fq=+4ezzt7<$Ewhgr(fBJg;l@l32hjYe=q3feK zYE*?iZ-KiV^o41&6+va-4@7W}f_8~+TL&%>&n+ceR~5#x>eF0TskuDKq&?|mEH7!^ zwkzUt6npW#DWN#RGy%xsSbPWlBUudMvjVjUZh~0@&$dO_q5);hJ0TPpTzV&(7$H*i zQj}mQAPclgwXL}7R@;qRH)oa~4X=}C5>HgouA(<(@Ic$P6B_!RdPB(17kUEx&{s+> z{45qt#>6AozK`ABO~QtKkSKL3#!K!BtIp}@p#duhJ6Yy;v z`?4U}Pae%ojTPcyisWB3gCJJVGY8+JubyTU2-B)VzY7qR*&WdvPmlU5z4I69sM1cntA z#>~qCE86oM+N{h9>QD)O*`p#6}-sl zau*X7a?0Yh@V0}#G0HYFCJFiti|V)@UQhJRy(-w8l8Vk}w`$scdjF0W3kER5B=wh^ z!eNlxGpOPDwS*jT(hq|A2xYi3<*+=i`q4I<s6-R}gP)+SwWLY8^&McftnI{05 zt0qHR4gXQE$_!^Kiy|&j27mJb(LudeOk1rk_Q61Qbf~~-v5QS#P8?;wBShz^-EmXi z!Dh(W?`wyxN&aQ^mGooxP#hJRrSw9)B{nQQYD2s5g$OackNv!=MIHWu(F&!=O%t_t zwQm?0&yiTWJlKlVB6~Po_>n&;48O$n&9a=FkJeujWkmU!i=M9?hiMoWLriX7c(0DC zdWK*x%MEiYO{gwe(1T{7Jt_xoV(e44`8R|p(!D73WXaKiPOG{zfpxk~MP@1G$=6nf z?m2kxd}zN9o+C$^5x{3wSzdD0%X=zn;Qc#jhOp;ux5Y}g&}d=4U$ffO4UmG)HC^AT zgWT*bHJ!#{771*e3Puqezxp$9`-u@deGpV*I|w&f_A_fR#q75uDi;wHP`rprtiRLN zil%I_Z8UqetEl;4+@Rh1FVmPOT_5#-5Kopl>5podh4Q0J5-CIn;}`g@)_I>2W{qPd zIJa+~RFi73JUj z+G)XsAQlq6a55x^MigpOcV+i0S6gOC1jThLZ?vxr1c&)@O-T~JC-rt;7r;gZ*jo&@ zs)~($XBs^U2vBy-qx38Y6SiMZ>CRN(@I=xM7lpkuQn8NH;2!;*KLC|nZ7HH85#sUu zY}De}Ohn^04<@E3D_sV`P^Ihxa>1HuEgoJ!{6!n}QJtIsy>fQ%O3>-0dmRp3Ux-q! z2)0xL9k;u5^;5LEg#XILFx{BS3ebJH53aXpHvw$$&*l&LcJH9(&b#Wb- z_e@2iz!M$+H#S9LeDZHU9(KfO=cxXrfQJhA7{LE)GT7zMg8Da;bkh4KKLi!m&C^~# zoS@NH=W4MxgysXuKk%TDJG+xGXO3h-=U5u(`E@V{&O_VBG;`F%Ho7ELx!J~s_S>Y_ zCrE^p?dPS5f?_o@&mnjHf0^j2N*DiB1;0<(mZgd6>yJHwb|oI)ohFz`G?KCL4=Qy; zzEy|Y`EYNm-ysNdNL~y-8Ej;4?J*--o_f>swh(h)>Zu{lv(YhKgJ9y)GLc26+jC9Z z*Av%9t%G}E7}J=3jhJwEoN_trh9L+4Poq$mE<5Gk0}xrw^%p3oE_-WRDH<>tgt3kL zmA-QNlB;enPrYBi22dp&+Q3fmX(2vEn(98z&vr+sTh~7p)L)0=hxPr^)17}ob{si; zTXGJU&FvS34uW>OD~{{_n`=+_ADraZz@bW`wZMyu#EO>C(pTuV_{>j+|Im%)^Y6Mp z7}qM-X}`Qmio?hqB3IlC^h8N>yYcOKY(W%wI;%m`|B|k@^C5oBe-_=z? zJQC2PvByXrO$=VYFZfyp=eI84H7tC{?llDGN(qJ1A`F@;U2~nA4NqXB9sczJIByQY z-alF_(M0)IQ6Ln|Y=2k?VDfk77T)di%3VAr!JzE_+AOsi$$x$59rJd)l2d@yv})t( zBO?$uTP0b@5g)I@#@4{qft94H@4P;$naovimg64Bx06uDfKd?sA zF>#Lvb}CO$TC~e~-L9__S1D<5w@Fd9QloUkLy;C;sa~ef<{LoQzqd%Ivlg@rWee?3`-%R0r{7)~jXpd#-N-9FITNNZe+=JaaqQ4+ zJAx=GV1hE(9VaA0-xe!WNT88&xtqA^+Vm zTq4}f_0*9?BX$l}oJR@~Z4TKRj4Lb|Li`U{ohD2(xH_7mW4DGW&L_WcpmMN&e~gP! zIX?p1h0vhzjxZGy`vdPz;0|AU)f!S^mGC=~Yk(P78i%LXehr5;$M&zqI)t70JcF(T>yqj6f(W zvE@!mks?Q@j3BCaJMG;UL8_0sxH7fm)1HL@$m$Kwn>l$A7II*-`HQwh>yXEV1P#FG z)Jb;cwLSD+`$#C9NZve1eN|1h-W+^o5i4**Sg=U%GGneuc0x;Pvg%6i;P*Z)3m$+O zf|iC|HK@9E>i1|`TYx(G^g)_XU}j`wRffC>WWCUK=BDb?_u~0o(6u)p#(Ul81qT%s zqzKZj^4MyiWnaAz4sk2J$c2N2duR>~K**;#*?xE#7&9CqbIM$*G+wWf8^hyov|WlE z?B4u&J&mnq%e7QhU#@bqPdoB=`XOE?jHa-2f1;)!ADow>P>yHY-cIW63y{dSdF3Yr z7KI-N5bjs{cjtju8K#TO9$HWkssVNC>S4(B4 z)gyZ{`1jYbT;TV~nraWz+nTAG>AjhK0K{RA0o#MTDu38px$9_&ZvR#bt$6QP(w-kL zc&VBk);yI4TiFUPx!C-yBvhSuW4q_gb>He10YAz7cMDE|b44@z)-F5;nYsC%c+4ra zJA)4wJx>uh@ow9hSKp;^KaydDIUv%`S@FcGP2=v6xj!8&dT)|3Y$ue|!sZVB&YSM@ zs#m7NJa0nh_~KWXESrlPUXU@S&Nz<;wcofuQAn7{h<*w2=eS7Cwag5O_=E(At;EfqP*7X;@fuGPXY45dT-p?x+(&`yN!b(S?xnr z-f@Q5qp7V1Cy4?sc@Ta9;~p2G8X)hjKuE$Ex2CXPvV{uNn81SLb@u`qR8FqYs!B}$a2 z$ag*)2QW#Ol2^lc>%K2l@x5koi(Z$%`;cY|uB{MIXYkGhiKe9QsuGj(*X>ZdHYo!-AoglMheib9&Z?hAp zs5@XkBd^QoyL)0Ad;^b)avsw_`{K>pAC6x%d*Ep=p;ym!G9|1ObR!jhykaAR6}GxD z_?xDv$humyqPGG&tQgs(M70DPzEP3m`>cgh5i21x2M0-}WVX|qFsgBB(h&$~&Z$lW z!*|_o17gZMCt2Fd&WMDQ6@@$U)A`%gIg?Kd@tDvXj}Nyi#>F#}1R)r%W|F;=76hC^LtOlYboL zdnMx!{&IqWN2gYl&X^t9$BmLM)9P#fjR#^lvZ zbYn8SJLZM-iF^P7rZsG_&DiIHVc|G(<;Ugg&}2H)&Qj2vNLZj`e#R)nXqmZvy=lp) zjVmW02%3C==#m+SzIzx~ib5i-Es? zw08tjF19?xrNvw3xy?-1Vs)9x!ch|K8wfgb@{n@{t=g=&@9h_lig{kQnncQZ8+AF= z^eO603zDNlzIZp{&xOWedpH{dKxcpE>-59Xk~7a;fzFcWy>jOE!gjA2VN|YiagPvW zBmQl>u=!WxI+x(w@^)&@36473?s-L~2+^C%_^M=SMpO+uKh(~^l^@mj$>$5nl`xJJ zD3UVq605DeMjrkb<>?Apg=TZx`eZ@37-0d}HHawqT#kCr=EpKE3j$nAO1pDaM&qCr z@F+~`Loo7ngFvZ?sBsgx^?zpp z0u@Ce-&#h?vXUV-Ru&KTJN^41Szsr;yk7Ae@C!$D z2Zz>Po9=?$`paS8R^R)10at33UmN~UqCs$A*f=+LTeDZg!tB|K>af>^!0G=~RS4;IKBLITWFKIy$(52TqJ{($r<`r?BS=&^j-gI7;T zQ)C6{$98llKe)|5#H0|@b#hX?`V^%^9lt;LZSV7>irUv z{pyWDHfmz2V!hRL97_?11uS7&l#Gg!#Ib35OIU}=+7hElP}FGTvRwZ~mQQ4U864i* zdGI|w!v1c&kv$vHBOfSbGqm33Pp=m9IhMAo9x%j^iQc0hkMB8#isXE;Ew#0h6>#<$ zI3>fr8ulE4`84CYb_^ebMnZV1$e$^dtI!1|Iet4d|M4jcpX>9A1H~6 z1;B-^1~_q#ZrFW{D5$T$t-d@28-YNIXTA7-pt7t%SF_cu%W1C%hoF_$n33;pUus;( z9dq}%sZ?+Nxo+>gjVSi@#k4{$mG`l^#N@Y*$6>e3sY(qcDjtW4xQJV{-?-t#!I<7l z`R38qCoDwU+TfwwCpmlpUUu%4Q5o~K{@7jbCwhK>1WUOn|BYD@62Rz z+)PWs;7N>EQ+}&;cp*wfSz}a#3plm3tS8i}xmk#q+l`;)DXco$J`AOc)T82l-S;hT zaaYORy!x=ruUB>A;vh~Dmlo$%JDe~^f+IU`bo`UO?$vkQHsFlIrD}Qmod85885-iC zQS7MKneY23g8Ig=x@AKsRdyxTTrd>&4r1oSFO zu)tm%D{f=!gvm_s5>?=>>N)ske)V?xji1AQ5r#`taE;SLb@lcZa{RCM2q?&%=bhZ}vA*yigSH%Y0% zOsp|)_^$hu+e-5K%R&J)eL2d-qb7)%1NznA8=1IioEY?DM@`Pub5%;}P=ft? z^zAvV&|~(WRirj44qFqn%Zo~jjhS%(VtWjGPC77AEPaBIuyJN@=+e?w+R9y#r}m6F zyRxFH>;8$7lq7R}%f+*P99ic2Xy#>igku}*~qE4+gR)8 ztS??|;J`wSS>0u(460K`2prLm88U(tbaRvMXom-PS!LE4As+#7(~i74kPhoBRtC-f z8WDixJdOmf?(ou0-v?t%5@-OK{wJHS&Ds6Z#g85ygMWprB;PE{I9i$`yO5=}qCoEf z7Djz~0N9S7d#$>OzN+an7-g(DdaZ9VzVSWb7A@4tz~bsC#ePxBYk-@eqv)}!$LCC} zKWrE+9K(k8kZRX>l~opbmmrxvS){N3T`k{tH?#@tLXrNu8%(Su+l5-s)q)r9TrLut z^9NJH({;*>QIoF$FsL{)l(a498Ns0?zRR1HJhJISE44>%1KnNTx!}AyrD*UycmWng z(Iwkk1AIpEM5g#wRhkV}%N@H>Ws89-V=7AhD9POB%94u5TZEAiif!T14UV1WqrI1eDJf%=tcEB@!+@ zWb#a(m2`J%x^*V7)+e#9ZHlK>n|#%%$#Kn4vqjCK$2xlKa4FMiXsawm0l+XvHofWn z$3I(XWM{>%gXhE*0gd8dUzsG%ZtRZN4XZW|2dwOo?2^g=gyE2mw zmQ>~IWVfRhpJ-n)%^GvrP1g({xnh+PWv%im_ZIAi35rfOt`|BXJ4o*10;qvE{Y`UZ9xGa5{ zL+Z(;(iFkjt&^l|2qwYeda`TEvQv?J0``QvuD{f zLXOXl2!z8Lwg_pc>w+6#cW;?Ag9O-97e^;+UB6f;_Qp$)y?F6Hcripseu@p506C@u z^X|vBS(U%1h5HSd!9k?-U<)pvVs96_FrC+TTSQbv=cuDq2ICzx010sFVF;6>AG3=M zXrhPCDCAhN$MqPn*B6(shK`!lXue&@Lbr^b0&u#_e+j>9!BMEutZ6DEX5jP3Yxf$; z@l?JCQEGT-p@HOUPcysq{dqkfaI8%ecPbORiepq2@6GAGr^1bp1niO|R*Yj6df?h~ z6qDjr2|3f+&%Sx=bg;!HHqctL;{kypq=A9ZBEb*FJ8Dj)H#ZkfkrDR5;Lgw8dR^{D zguhf-+Z@!56l;PcNsPp*^vX*-pV4)6US|6XF+cm%>^=@qe7Ib|=(V#k)g&^){I6nWk!@L;%?-_t#VQiA`xsbY9 zmLuRTEbM5gR3d5ljE(hA#$z)8H49~3w|MNr11wm%xVH%9&N|05*54A!IX^#+$T@{i z%Tvt;M`iGO-)`oo<>dT?1sapX@%IFa!lnRGOzKlydXuR(%-IS`I}oMt_`)z1Nb`~3rs&Tnj( z!OB)mGT#6kht&W0y-EzonQFapS;8eqgXLdycyc@Tu1-i(FaX8YVaza;5@~t`JanUv z6OWZ3e%zPwA;vQEXuY~&u8_VV{f>=NG?SV>lbX08a_;mogPZ;&qqWGSOg&7@eX)G` zVOop!S09#I?nywhu>lS&U{{#C@>1i`=-oULA}-+t>Efblp=^t z1TtoPj~T}aTtKK&SFw=Ma376W6LKBdXSJ~C=#7J$({?SBEd)=LwFKW&SU=T3_AQ~? ztQjMK7%g;MpvG)1ZHPNPV|?q<4IhxVtkp)r1NNPkg4WydIW4lgoF3>2$NB3z#|Oeh zb18bif{*s+=Uj`rIhzJYPCArenMY3}abuN}rr&9J#%wRwfg$JL7=mSp-z&x%kdXj8rRVFq#)Xi`3R04ett(R^`lEfziqcY@^KG7V z*L;qTCoXUR^u4?9{pko}$9eLsfiu8)jN(7JFgKTBPvZHO9Y6%FIeG3XyEs5ySuhRJab9f1S2%BSHO!PQ@w|Wnb#?iFXoA=aJw0mn=jKK+&|lT zKBPcz3}vuY*HLHkl~>!jy70ci#d(t_NL4t)2<@!1^IE!@nadw9`JseN9WHP0Ws;b%>F9rV+eF(sj^FF_w;-|JpuL=>OI706K z%fy(nth>E=0_xYj)pzSY?EDPOR|YnFFWQ6DsqKFfh71)c!wGP)(5bKxQ;=X|#96iI zB=eh_3r_b#S)Nb|l2kZc(=*?^s|qR`y`~yB6cn;aAu@%s)#p0b@XT`QZYqiVN{RXu} zm0}gR{<>u4QYWgVv>a{!Iz@!%vgHg1c2mt2XdkuF5+NUx_A!XKD}6V&L&?0odD9uo zcoSW2lM?VEGl#mmzZ4~vXz+2~MljO_w-7(&5@+^NR$_TL(uZqY3G(&K<=!$@uNRTq z4nQqHMZAs*y{v+1*aN5HJ_9~a{=H&_F&vFP@BuErv_D>3SEarOcvth&gH`{@u2(T( zC-%R`rhUBGEs=wV<^}ie0J~#m#`cWYYefPy!-=0nd0)eGOpy5>wJH>p*|i`wLs_+Y z847?N%Idy3=n`l#-W7*X*G|?Ifaaa)W1u@AHB(}VtEsu8Zu4#xyIKIDTc}f05UBKx zAwb+%>t>qR|5CHlFpja6YsO0RH(VxY=1w1!sp5r7Z&s%KwQDo4Qz@wFX2e#lY}sKy zqeK0#xrFY}&;xI?+5%BtMiLSd2l@gK19;IxMaa=VB5_BJpq)4IG6a7q!~o|jb{A#Vk9;igCA1Xw?_Ee|Sk zZD!O&*jAME&jtO%cfkGy@K`rQxb@WBf{0_p{3X9mn?~)~)LNr#c#aD>PRPwFz(_o; zSFeBbGc`)Ea5mGP3dkkXddWlA+4QQ$ta4DUzaTc$6me-7@0!8->6&T?ta!Hlb*vrZ z)lcaTbebv!;DfUlO0-iAm`o5DU?$g}c7-1D}-zDaGV`#8gi8+)K^vzd3oz z$cHEB+dyt+;5#0s9IZ<&(1&6$Z1BkZ1rS zV`tlK$!dh^6T!$-K>H~jw}feR!A@;D{q$Y0Mgx`1LM1mIVV8$hsjXzAcy5DFQbcf77sn5Gjj@ko?!gxIZwF!&=TIud;05X4dHX_Kt&*WA}|7CH+OCodqXTX19tO zh*kngkDJqjrro7J=Emib=;EWI8H$(Ym5(-V)NV!^nac`%$)Ze^Br)D?NMPHSVYm%= zb*`o_dDb47Ct>O?q=11CR8863Le3``Ia>M+{<7R?cxmnwp>AruecW9 z2=DkhJ!t%HcVm9=aRKtPrGHZ;bFMOoQ!C~ePG`SkWsQ8tjmY06h25MArM{}RbxQ;y zknhhXfK8A@>w8;<2qA7gaz@JuOL|vZSRTljN~_{Mu)eDyK!W@|SO^El$Xda(rcB-7 zB8zn`S62L$?y^lbHg$-w7N?aqriK?#;L1z+`T zt0T?5B$Cr=7Z~t7wd-hRe@U$6Mv3EPmEHVgf({?h@6ywC1>VG9S*)sky8O0t5Y04n zN`QyJHG_&J=3V&_5Hzej=3cEljw&vxzUX~-(a3-5!;F>sg@WES>p)BK$3~_dcEUuTpaiqv zTEa%fM5~(U5K_dWEq}}W9y4DV0ZZCuqHVQHJZcY2~=A-YmG%=gpdeSi?+9eDG=BC<*9P39Ya zEW*ClnoKoM|>b9-WX*2!XOXt03Ru8o@zud<}8SfPY_rhCWYFPWpT z-&glbI7Q~fVr1q!A$YDcMa?OQ023U3{MK1w29*;=bstnq?$WH44@yA_-P!hvBuU)1 z0pmknUtM&@QOefbN_9I6!1{QpBWG(G$082PLtva3HPTPU+ap%*aSui8trKt_9leB+A`Mp10}!+=ve)s57w5EW1cIV1XQM?d}Ip8fK~4zxyagQs3-F z8ReXaGKh_*hi~Y9Iyo$^t$6gS8Q|)U^&Q41?^aOUXOwDf>;Lm3& zI_{<-(U+Y>X8thr!_g}B6OXu?;&iQ(NJfq%uZA}VvDawM3qL9*K;*s}Odf#)ezcT_ zg#q;5Ju(HB6 z7F9d={WnP{avB>@`Tm7$Lk0K;Z4N+$W>@P<97=<|ZF`yn zU1HH7dr!RVFD!{*B6Cc6ghBBW5%V3FGGW-|&04|o(C?KEU3}O@lLqhv(WUF~%*||( zqsf8-Qe`u^7EE`)WtPloTDwrZ*z~%ejb0LBlHJ-Fel~xz`nc*AIelu!`DYHU|9E*UCWIq~0rX`Y3TG zH3xY|{AATnNfHRZ3)r~N9A;KLjKz0)if`4drFwa(4FNbi<1mdkK(ih(8HL|?Rt!SP z?AN*_(NUcfpVNZ!r!NFaZ)X}U>!A_wf7VOTzfGoJ)Qm`DwP;(9mG&pi|Emu&9Dup? z)(Z!*iu+7d#K@lpabUP{;D zP+3m6w87D&{5g(oP1jrAYBL{83P_r@L@2JSqrtnDltCZ^qQ#*}l04+rhNdR(T0fPY zmO0P5dcC0x$k0?ZYnZxKK$cf z>GND%l9=(k{Qy@J4?Z5z!@d^ga1w1%csoQM?xH(SE!Ms$;2Tql6xlyXusq|0f6QW#VcnZf?l2z0{V8mP?V!;?kGks^}7!=uWE<3)ar7CI$w%Md71 zYB7bSyuRsq-<==d`<}#KwAgBDN2Qo{xoko!Vdh}$!*Fn)RG{{uWsR^Q zKPm+$prcfm=Pc~U@}fW>cqo|OY%|VOz*=_X4g$+rO?|(!=3hYlNhtnzE^irlF{t$dL)j^!1r8DmMIu#|x&hj1jV*Ac6OOLZr8dMjxeb zn_Wh9G7Mn;u9!C=zK?zyN8>R6?;E1yE2XiQDqfF zK2wVI*4##jL^uYnZxZNzl`iKLIKce#867*oG! z_||%yWIuLOAgZ$e%V(Rtd*N<+y~vReQqgQP@M z?i>B@R_$z_tuHA5-K*WaMYuqM|1U3ocLV*uWe0btkf8x}*6DpmLuLlQ`8|jwMYQGv zi_23YUx(dot%7O|sGxlD)b1OU@VunVPxZ(9v<;}Zah*XXEh}~6cO)}X(Pu*nVknaM z%vAaLDn9r7DbG`yr9r`_Q4jb2^W5!V>Y{%C;Lbw@MGRS1yVVXBU~Q;1n5Gmqyb2oil+74<wGg&B3&}( zpS^T7`OCdTVN{Erk4&F^t_QzcTmO`6e|T9x54PhumHEqx4ufeXM~5&3gb~6@;Mdne z(V&Majc_UV{1X~)j)vl*(pAqtoIn8d102lbZTA(o8|l^H#k3W>C0Iz}desQlt4^rx zp6xl4lw{@WOpk`o&T$a%d;ILte|U7$)ygQdJ~1yGQ&XND&fD}VtTZnnRr@Vy(TYDa z#js{ESz0tz+kTuyb-lFFjrz?^GibH@K?~~VL#8)mb99+)ylcP z@Z-svr&FITk0)zsj6@&k1wA)c=!4|!3ETw4>l#>!}=7NIyjgvQ@#TT2tYsUw$um74?1o^5nz6MBA83EULt;Fz!U^5yz}C&fV4MpWSyJ!JN(Hh4X=B=9<~nSz<@R5(m@C%)@wxW{R4kQ{LC^HxHGyTf(6QPx7s~`qjqUu!(3tJvCeHm#6xrg4>p7wb0Y7 zjG|#@E!2u-54YbF+l7h0+oB-%!3OaT`vvNn zMM!|F>8tC>%173pnGLKIG~{)*KPsa3ehJjuET^t*iGjD-33diK2TNVQ#=Bgmsk-Jv zk%2$8Wjf?^9leDTTz-t}s$4#yN!b1V*mE$1h*n<(S3omaXN`x5?<^JtJt0uO23yj= zC6Hu#maRx7P^RvCDAc7gByKci7-s5wF{Fi$QUU@w&)TMP`)J69Ab4GG;JiFigg|?> zbtR`Hw3r{Y6FkW|@9leI2Lc@?$8fsl`l+Tb7#(IB^H!75R*jLT*7I1|ssNSg-253D`d6JX^c zVUVQygZ2(OU()+_C4Y4JmOysgfv}m}5j(gC(yu5a`UKAx+Ha+GGbzz~+k$e_**T_a zU{_B2ar?(`v8HF2-*_F*F+Kfd&0e*S zdR2R4&PKri0Xy;OxQbeT|H*>){!kMCVcMUIz_>y=oUOB?zHbxAqK3xCCy4}4EnMPR zN8vlBRu~8jcU$FJSD%2|`Z|Hj?P|pT!`)j(RT;hQz7L{=A}AmoqI612D+mZu(v5U? zH;RZzi-_bB=~y7$or~^Xba!{0iU0SEz280d{&c?VamMhA4s|V_nDf5x>$-lE&lrgq z6Do6`yq2vB(<^zwKx;NEPYHZqJ^6IK+NWouN93}rHKQ@i3B1v-Gf?YSAEQc!6JbD} zIAk|786qk}rBjDrbz;Vr>fGD1>X$K7oxJruQljR3hdb|QBm&?Jy z1l_QnxxYO+?ZQrri{i;a+~XV5;3O5#-a&q{wt=T5@pUS zAB}IW@(kgehI-y*mA2AePRjHFqItQw-b>x`tcySH)VHcoo@~UwqKZP9&7wI-(&WH_ zfZEudJyXUfsU1Suzmlwhw_y03kL;&hMsKC^U-yezxM$^XU0*j(X%_m#*dlvYQF{2h zkZ_GN_7b<+dt?h(AS&t7RfQy=p-+@t(`31Z1w@!VSptt_<^G@i)E9u2t zbHhYev8ZuvMa>HD(S|2=JC#?#lQ+{o79)pylHstQU&VoWQ2Bn^pX}q&VN%!acY`Ed zyftd+J6f_&Uzw=tifaGJ$msg;B7xs=?<(9k)6xPR!eRHFFK=)(k=s2wrhXJuQu1)p zh2nHSBh+>7k9T6co6p|6e7%YwJin*W1coIn9+b29>s#>@6%-f)3nSC@s;aY-_s6Zu=Df*P zUGIaa1HQDLyKI7do~=I$l9Ch?dlZzl<=uOL{TjPId5OcgE`ok@|VH)J1$bO)yqj z@V75+FaoS!RoF>u9x$-PPe&+_t>}=%W?9;l4S&&jlj8e1WiSO*l*?D_7 z<=n~|W9n6`nF7zt8r^s}Jxw8ob`(&Dx*BLAOU9pRYZ-sJS;5R0y}q#!`|A-ofmgZ! zij$aFuw$2on|efD{-}zjB$kZZ`JTI%a9L(%wN5f_(B0RseZ0RfR1&{(O)L@kI$Ozwy6%uA!k=40b_s~zfuHZ%sgF|rx@b0Zd~$y{HYC`d{c$oC z@K0BnZGSI=W;f5?F_zHMFpPA|{z_CD8(=I`XC^G%Pw00PRjx0RX9>Z=F*mbfWzE_> zcA@+g*ERPS<8I?mqHWNfSV#yv89IiITzPU3uXnRxMot>MT zCokfx-~PMyjbdjPiMu&zhInd-}&g4 zkrYe8>0tLRN02xF<%@bc>UQ6~Mq>UN{kCf*-f}fuf$eB$c4Gr12T4ie-$^r}qIv;u zKx>$cGujDfdWiPn#H~T^q;ZgB=Q`33h!h_um5ZXE2$Ne#u z{7L9UydGZ_;S8({Cws?-`%W+pb7fxC)jYPpNQQ!(iLqecvI5EFFyF&DjXU6JFBi=j zm6ZGfJhK6c!-?A5+?~J?qL`MKoA>+?2H4KPJD|>NV(jc~Vl#f_pj2yo!r^CQZh3PY zSVCGx?qfCg15{Ctc$f*DZDAz9l&7UM`gbm0ML8B5%KA0;IMA(Jo@tMr3~N4XMGZ zw->hT*R@$8<^%z8T0GMgg6rK*m}j_A2RsSNp8!t+4LRQCq9p$0VGq4&Q%87Ss8Y(aPpeLv z-eL#9mvB{b@DfUG{-Qj}?R-#O*)#UQmRXO>)C#OH-6mQUCW9*B_nkr9w0?Bdak-hw zSI{1wfr-CKJ0`*yh) zE4Z*T*HAI=Dwd(G{hc?->N<^K;>=W-qz=Bh=N_ z^q;W@Nw#Jx*RJCW;UXMuO=8R1*Gu7~(CqFpEI`z!_3WM6!vu1{r!8%hDb;^GkgbVz zm$i=9A@Ah{j}_F-K1eHCx!ze7m~K_98f`s43B`Hv(8|hUyxh1K?DKq%^AUk7@(-~0 z9rIKyuyRIsbZUIqU`-eg_t#=@d7TI7gPK`N^geO=)%Hi<9G*?}NbcFi2v(Z?RA`?p zU8qmDzIew-S~ZA!PTl72(NV~{RCj!A+VbR~7q)-*AEx0LfxRyew@rDpTy_NZ=e6`` zCD4Tn?OId!o`Zd8iq8+^He&g1&b|Zg_b^WyhzP57(3G|Myl1~5D=3&y1_u*+)y>9e=&)SVODj(1)7)oG++NMW^ zO{nZw?+OKHbkDDzfCzgK%v7$5`mZShIZ-AK6G&5uvYc#q}!UU1yRW;9MNqEN3UHoNd!FLG@x? zIN1Bd+=9+SyB|eS*!ZaKqpl{YsHmvT^jW>oDAr7DntK}gHik`~12eEGI}ctqvDtGf zmcjdi$muP+X|1-^9)u2^7BI^Ch2Za~>>>h-1P{*ve!hL8V~ScU-F zJvjLDKI`bAtj)8J2Yn>)p0>%Rv#7Md&o^BQIH5#w>)WjM*Xd}`(ZlW@$|+CfQDR36 z^GLN(F0(`0XlcWOiLcE}wg__zo6s;Uaz3m2V-aK1UY!Zo7c5nO*Tal973CszZFdij zJkA1WfN4??ROvxVvA_(-%ezw%a)ibva$?rD0@{{=mAWZXhiI6d;vhXbR3h;JqUOlD zu-6E zTyJ^Ab6Yi4mC-~Y*ENZl2PP-1gwXE7y7j`B6U^Nc7e_o045>St!*R{t)9X?1W--YX zxPM=oR1<7F37nrVT~%CUnF$KjyUxFS+N?H!P7MzlVh3B#FWjq;6(LJ2F+Jfh7f+6W zxgAoi47ri=>}*|^v=549E1H8ONCNVsbm;3WcBfot*BGMERy?|1)K?}p?hZbC;8{Vw z`7~x%7bb>}|AVKrTst~Zo{_H1Zl-~Y|F+uIRdGBsrHu5`)6j{r7bb;3|4zi|@WH_# zB>wHAS(dfsa7~>YTQi#|rcLa&op@|!ZwC}uZ-Dpx`p+Zz>=G0Yar~}>4Gq2!PMdU1c3v(mapHi$OSCg zK{d~qZK0ZXW(mSH$nokGjuBF;Nq2>;YBITKwUNX9smh^Nn<7Ry@Ov8ohocn%9^`Ym zUX$4#!Ba6mw#R9`^$qmDbH2R;$XJOKmi$}>xCJBJV#4)sYN@l)TAS6Q`1Waau!1d8 z^!{p!CfrkC0O=niuGoYcEa(G|mK6_asKnMDk3`)Ok3_OUyHVk=1q)+M4{TuU@fA$3 zvVC;2s341mld0FFjHXpmkC#=AUU?(GVqdQZ&A(y6{wwt#-TWQ0#2NfVxgt%tCVacn z(p>qQuC19_Ihm*ioF{5r=INtUT;6h83D>Csf#^dIF)_p7qN>B@@hQ0giBe5?H;coH z8hB_5G!fL_{dxlg9=~!m;n4yz1Lrq~J>9kPQb9hek#~vwPoa7vj;eP^j{|ta+0Kn= zlDgfngP!e)Z5 z$98#4gR>R=-f2&wP*yyOQ@F`yk^qBluW|S?GaRc zJVMv=*X_10B7G%57G`;4#ll;yJr#PEQE7JhbFw__h#r`hi^k2lvftJ-<=CJ>jM381 zB4ubD!^_wY;AQMZ<5mUgAZ-8kx2dYnl8R*-Ze(44OtsG0`6P@&AW=yF%?u<0+d%8n zxy#B}vOE>Axn~$CM<((ot3ozUVVIktQY}@L*54<^7wuO!0Wg(svwqpcHC@PfpM~aM z0Bn9?(VIutTu{A1Nu(5YkosNmVdxc@w&8;ZEvjth?8Og|U;ld7z3RIJ)xA^XNX@`F zemI2)a+(1~0?(@~#q?nJ?{7vQE4oqdoVhWuXJm!fUL}H?U9*HcNZbV?7&fkUW6T8+ z3+r|A)iua8Mf=zKS&kibY2k7>_jhX^BofxV0XG^TA-FZk14LPw^3Q#SRiW8}HPsv) z)9SM$opwWa&x)!FOmH8KO_pM1(j5sM1~~RB-B;JwD?v7nB-BGt$gp<~3wpHwOEVE+ z1%8q@RmeHJmt7{oqG|g5S-1re4ZlI4;@MtD(=0(z%bEP8&GoLgv*ideCdbUL1XPV7a|)}%APv(mlfU{hB}Eh+~~&Ae>f|2FXx{8as>HWXxp+$M zK(MA=yO=w#czvffohmY~eTE5QSP7BzGE7eAaHVJVRi%4`_&;Ox^7l^6S}U8(IQTZP zX`>npt_?#p;-YL?>UX3R#TL!zf~SvJT=v%l=?1+no!<@X3`o?w?@0a+WTd?%72UXUuOUfpIL z_uXwS%J*F!kV5XuR;Ly>>d=~S5Zij6`XA_V8lY4G>-2Nq9v!`Zo7uA%rYYljkY9>; z1#2DA24k7+@TU%A|Ma%o68k2 zp%`xC`OI2|J>R@j%20{!9)`==0~OxxFK7hP2Yvo>H}CRTgg^1R!Wf2HFVLApB4A+$wr?Gs=Mad3+mCfk*_;&U zh!{GnaV(QXMLnWC+CK;f&F6QyjL{+P>fP4;c#|#$PA1#Na{b5p4f4XreE_x6$z<`f z#@CqjFBq8@q@barop$}=H`%Qh?(T*smfiE~`{2tO_>iIyOx8iu(DvnmMfXKwlm5Na z3$QoZ%Ad46Fp-Jna#+hzo6Z3tE>cR;NFvIkkq!BcLyw$c7s0K~UdyVZDS1Mgk&+}E zLm2|c!}f+MUJqQ1M~?||M@a|dl29Rkgre?yJObR^gEGn=KUC4sFFL7hpos5eoxk5> z(RThQKm~$O*M~j?^#GVogY>1#Hs1jIo<>Gz%jV;z^BeC9Gvr_M6InJwUKQ2%Lif>V znQ(TrKW%n}krS)fxu6&>M<8ru z$!G!Qmwn-{o~}OpA~Lcw=DT?bIt-B40TZBdqrFXg!!M_9p6%2&U@`=5>TtKvOcc-0 zD77Dt2#ErCVPd>`3sMS- zZ%u;X2hlg9mU)+nHRs3sB5Kk=^&sp@%vQ)Q+pakCj|LwBt}=D2BwX)6Tudog`I$lA zTHRH}QB|}S^mJ>n!rhTpKItU~eP6hA8c0r=7gvJlxN{x3ZeEAInwqhNLvsiN$nuNc z2UJ_qz441)FoaG%5DdB(kmiqm9Ls5GAgvgp(0+1olnu8Obhtc>CRG)4bQgENsm1h1 zOU=DGy0LP(*eedvyII{9bhR&doL_g?Jb#Zu|eQgmfh__owdVX`}shcHt(orsQ?Vj%>y%qm7`rA0ON$$q;`}{M_ zlu06?LtF8uCn7hG2}wcxb|$6D7oKCexcBn$T!ZH^x%XV?QrV4a&xY=YjqBQamyBi` zYVgBDzAzB{c}8_(985z!HpACq# z!mgt^(opiD?&;#BNiYk$u*GS_HQ2m4z!UjBUJomgH3jI2wl^oibd;X-{EWrEb#ICg z+V537&%0XoJNThf=Wg2j0h1pbMT3IwmrUk4!7eMzK_V?)&^{HG9|H?F zReGnTQSm@z=CXF}1E|PP3&hZI-u9D*I8+o05LacPq7Qz-+9oBzeVZKN%<{>q9QR_R>J9-iZ7L!6dF8B$J?5Sp}Tif!EFh_~kkS}G{5WFyZyJb{3;iS)q4JWqffbAKxS$lnLPyaxcH=Z%> zURpw97<7&n6Fjx8&1$pm->cRl5eN`&U?z0g+WHfwn(Mh8D^6}%Wph~;Tkvc3Z%?-X zEh96B;Fv7+XB+fBO0RRyM7f<&I$;L(2_ue}Xti5_)JxBT)3ztRJxRjCwER<`(d=Ib z^7>@8^~~|Mtb%v`#MrV9-KijJtPD2h@k*fvh`b$zc9TE19F*6=$2>h)mO0)7T$2{? z#^sD$a(gU3eHLj}ItI;7Fp13VV0z^L>5mt_JPl+M_U5FoH|+`8Lt_4}J2S6Q%u3?Y zf8$pd9v&VjkR_uDe9%xCS_M~~9DDDNH~-AqMaxKGZAFlagDp`yqD&F*aQ zz2KIjbw>4DZC8kV`!t4$AH6TfXEJwq{ru#ejLcV_*e;+T17S$J#7187)Ax>6Z}fpw z+%lA_?}`^Rh{py2C$iNQle~LCpJ%H* zo;&CjB*R}N#9hoECB1+D-3g_1-SeH|y6t<%;dTE;!=z`6@iR0A{kzFm&l~-LouCI9 z*cMJc(yeVh;o|o?Bbr4UvRO#l$g#l>N6J>PST|)oT&WL)Yc>X zfi4)>j*@f0wjLq17?r^WKyIxAuY?v~lQzz+&?IsAj1@Da2niW+kqny@F+{IdUw#LC z2;qdJqo;`sq9>826tS&F?4UyD(|ZsIvQ@Ig0#BbY|4l7kKdjjNLO?@+aZczF(e_`* zO*pk(F)gnHzTmBmRE`RSW<1?ajeFS=gsguITV-cimI{#7q^tjPLOrUi^*nnt_gnZq zxPrJw68?IK31Hd+7PjUP5*+t@{Ue^q;RzBrr4qT_ISy!}rXZ?kCzm zpJvVG$Gkk-Agm*$EUpWj^u(G7)6G^=C0o20al?XNX-g`1@4Tj8j8RjzopB^1MS&C$ zsgHcae|!e40yyX8f=ZKZ_2pRVUX!!tRo<0(&5IQS6wj_*VMZ`&;WZGtwR)|xmbVR# zv3PF{R=Jn|Pu`Dv_s$KDTz?4|4l%JY7ff#T*6qLUT-&^$UqN@x`!0o~aCgvX>UUHR zzr7Td4?Hde`wUP7UiJylu&4XZd`@2;0g>S_=MgcW5?#ew=kkNk!a%A38)4nyp%`dZ zqorDu8O2lj31XBl!T29t9*`dtW%{yV!UR>Ai45{d6}t!d8v?z9mt)nKQM4f#4={}i zh~5B;@1~2SZo|^+fwc=&JdB9g=$J=@OKS|AL|7R;+Fmycl`_!tc z&vGfmA+124d>HSNuUmI=+U@%f;v^R2m#ftZ3M3Uaa}~NNK{afoNHI-U^b=Z)t28OO6vy>ZVG0$sr1Nv&;Da zPOoYqP_M>Udyh_o{dzSfOh}~GZvT+M@Y1`62&=NeEH^h7S!n3nR=yaRjt%2+cY5RY zBCwl7i}~mXv?z%_HwV#3zWmD&Yf+TmGk0Vh8_Mqz_*Eobj7~d4)qn#1Vz;G8aB%2v zg?1Gc=lq%@sn#^ymF%I^uW9nEUqi7Ci!?wlJr-2tYctkgQ2M~#w2X(l?0UsNUrvvH zQ~h+!vsW(eg+W`MmunBL0o z&zN6O-OBG7u-X?Zk;ZO1w*fE(LJte9!(4>ejQ0T_L9jbJQ-1EBxK~f#NPa10Qf?by zgCLMQk^ao>9LiIb*r`9t%VVnB1x9=hHW%Qg1{3yRVejX_Ety%fo<<=oLS2xpx70ka#m4JU&T4Gu1;QBkr~$M^mFX%M@-wA>*AOUz;?(kPi-_Ry?gIW13r>? zAqTwzDrycJYfvb*t%XfD8}qPPv2GFve`2Xm=k<1i+S}hT(rKWm?J{|HzIG5GZd~Es zV#%vJ?Q)(vckMF`x*;wS?hQqh@Xo!x;|OVF>89WvDEWGOhWSQb#!1~!=^fZ>V7AdrODXwIKoX?j6tv^d#}GcZTc1xLp3q<$xXbc6<>L?KwZxl9$6VHd9nu z`<@nWFmuR|t_R>u2nk|t{(9s%uIQMCH2o>ikO3@?sMp~bI6tLY_-m46o~bF1Y>s)7 z{afU0ax*-BN8$ZJ7%AFIorMJIIkOV~!i~K?dDs5GYGISdQbBmZ0polDIU_a`_Opki zY=VN`>%Tyy4-~EZOUE+K(1s6!&dZIKJIs{dLGi1Lc}d;w3djqnN>N~J5c&9Zz|s-aN5|JQ zsPxmB;ijZagelK#){)4HKqqTNfcM66fr2smI}zp59Mx?v>Av)(jWTgzVJlKc0R;lm zp;XHI6H37Xw>4js*%H&0y3@_)!2ja4a^rLBk$TFXs5;YEyIdj~J46$#z@H)I^y1JlALbUV4bS94Mxk*@JIwKLyxIyvi%p9>@ zbIB+&v`rQz*~1g0s>XGlDrfrwdMNd2QNH$Lxih0XV<){pdo5;w*$R-GCcCY(lo^BGa>dD5gknQjXer$$ zh6S;JOZz+&jPLVr$M?fvlJ#$VkNX%J!&?6}cSVsT!ouY_L9y)@nNeK?jQ;c{cw4Y7pO;NB~KXot}FXvz?0sxjs{dPoQQsQ5e&<@QZ~9 z2*L+<{D6ytZ_w*}i&9>MeMXkr?z(B=|D^AfaN3(|lqjZ!eZxrPbQE<`HakZg1ct*H za%^h-pTzx>d0Yu-p@??s6$cR!Hj-$~nZ89@+^&R|cOfp#M4+p-{fc1CR3_n#>>F)U zqMu!J^6+n1UD!gH6ot@6iDp&ms}xqML?gR?p+5a@ddQ$3;l10v&lwJ~X#kp7INrI^ z9gB;*32@51hU;V1p9V%}t`8MoFUgj{Gjl;t6N-fsD`coGqr3`gHyWEijr05GUpB-) z-*{bhj746-d`%+r%S^#5Z=#yiZ3ABUZMhetVBxGbI_(1#rGzLgWmVm!HLBn+tgQq; zxeN`sDqMB6MJ|^ozFG%Jyi!nRuE0>i6mh`l2)7F}J4rVe<8Y@ET7>VVOwWz*nSM_f z=KIKG(5n#(SiBWi>F(h6g^&NmfgHYN*Il|Cb!8bw;ijOc)8bH!-Lgc$4B_(Hlqoro zoyh4~;d(~ER}FYJZ>042&eK6YBh!$jj=8NJgES>DUb z_!%&n1GWO7&^qjYj>Pr@+q-|@Ag`5($DnnZ!T)a1EP(rJ@PEwG5&yBB9yG+u1CFt? zoMC}FFzU$~O12$MSD10df+;emwhODhOV!AbE_PPgrqpC1U1(EkcRZiVNXXu6lv+^J zIiU4HcC)7esBLV2SBDS_=-mnYtboL|nc3h<tizS!r!YX3Nmt?2+Wo|FVZM4&j()B$o zbro11nYh0!&Ey|A#Rzj*{(19ky{GhAm_tO5twhyRP$;D~IV-PrZR(b*Sh;Ow>H0F^ zhP$jCB+SCwz{Udky`grIOCS8t*!U*I$|Vp9l2c?RMdHZ=e^-@*)Z0Jwf!!j~%^egF z%RIJhC%+**+t|OQS&6;+cH=V95*Y*2UN0SFWxb8wwEv~L8nG3)1Lcd90qSvaaYv$~ z^xMw~!cy<=1uQL7Gs23L(A zw@O!_@0nk({XdPwkxp7A5|$jX;-Wr)Rivp3o@~JI8L~J6Gs-iX5`T1R*9^u`2|Va+ zbECko0_^`jwVuMfEuQmQ6c-GhLr>Xm_J>Rg=6rx24~`!K zJvlzd_~fAX-X~%u+EDHD^$ZB`2|M+R?s_GKm!SiMY>UVI`+> zx@g!0I37U(^lmHWbZ~SBU{Y<_TnVCpcMljMT+@L|iLHKy4$Mie;@C*yG*fXO`^(*I z^}=W1Q+J>PlW@>ue|-D&>*q^Yty@ZY>U<}R$7S;dkh^AXdLMw7ce-M_+lYgX_6^XK zSSH!z1NM3fGg`w)rY1&o)kZO(IsMmUJe<7w?G-Nl)l%;WdP~)9I z8Gh5pyQH*4ZFGpPS+WLDQ}qD^tlH0_#1a^PpL=@zO9eK~$5;V?Tw|0jD~~2f-b{GOp)!9QjyG zsY1I{G0W$4&DA!pU}*6xu~KV!1ttT&w6;~V>5ho+{$T)cL+eC0{f`;yqyJ<^7KfBj z4ttqKMM}+7?IL{NM!?1m%&jeF3N|7fC+h-!?rqi@}OQr7y z3xAq0-+a=93jtVE7&5R*Pp?hRq#sZPgYXGRfR^x{UKzkM1xQT@Rco$h*pj?9lYz74 z`U$iK6KQ z5yn`qOueqb@ZR9?(5@bq1dbh=T+Z92j>-w=v8UD-Fg&pK^|4>x-2qDr1a+xS&K>5S zw-Tfv-lQoOG~WKj&wVxG+t$PuRw`f<4pQfGoG4HIY?jhbjlU1Pd1hRi#wskTM7MwO zQDvFOy2^A}3Oo(K1>M~{KHa&xbLoBRW#i~L2?iKGdUYukvH{Nj5EY-dlc$Bz{&PrV zvToXF=*RyYpP0$p^#8A;BT*{oT-NdM!f9?NCrB-BK8>oJ=?5jA`5sex@LZ4UoHB$fW{HFQi&*B3@IMs_PS&JVjOeXcHUezNdIM_#S; zESLmu#f0m&voL!uY&>+7pk_@Hi0oZ@sg%^qsD54-%{z5)A+OlJC~oWHI=t^n0pr&n z@=N$MKy!13s4!~n`wTF5p6+k0L9X2yS!pf#S$p~U0WId~R2UqevHO?gjN_WRiultLb zUQO*+8CsUBnT`)Qb6xhRXh-h=MKbLPx7KmO80!OTg8 zvL0{8;|nAaWW8_^y~(6Gpu4JAs@Id`*dw`J9+0jc@1d(Rw)lJ6=^4t069Z@Q zE@Z;)RC;OLeObI+$;aV~RjB(R}kMy@iu=5__&5(&b^9oc8N)-F|Lq^=EJ{T89y z86}hS_ye;(m^Px@4TBZNCEbdTeWwp2B~sjP3PJ|fCDd>Z*U?2z%d2YkE}OJm$Ylj$ z;`N5HpdIGKg`EX=t}9V@XKxD!tdDk0-7`A163mNXl+&OiD7~0PB+O@Lrys{tI3W`H zN#NTnENxY9n+!Orh0^qOZOGrXK9mE);OZY*+M{D}ak!k`Q?p&4vQcs95rfKqQ%N-$db z5|5Xs%=;1v>*);`?(V@c30{hsIbMkwfnHTfyQZLqlE;yeQ~YqDWvVM@WT$<@JYTdn zbaUa7__bFq=mDuv@lI(?Td!#hS4mF(B#+OG`}}U!yKUSCrQr0X#TW`9=Ym=d6eu1i zktxf<%Wat`W!!64y|rR$pEQ~Zijbl%c>98j6(e8Zc3Jj@6W;4o`bN;v;A(WR!;UxkJ-}BN8u)MPJi$9M;~2t(?XtYseB6+YvG^wARhp} zlFTC1W(5JxM|~!W>Q$5KyD74v=&cjeZ4<-9b^99z z$BlUWB?d=SC=j*Fq_c$EvS>VC35hLfS+$ev6QUWfz?WR{jP(G z+3y&njjdW{Z_E%f(|QQO?d%|%Fln@udGI`ItcUxk5FD{T9aAU5;b^3& z-CPvj9Vckg_f5owqKA1ch|{3YoFHe|phR|+@@TP1>8_xSxp;S#-X$7@z>JjIdprw0 zi;PfG@OU6V_;(fcyqWx^ORG_db7Em~fyyTB?%wx8b*CuA9moh5aekso5dRS4E=d3u zWX0pSUCfRnO9~%e4^IbZw;2t!jg3k{qxlTN-dj%ze7`18en&9&0i?`GL*2J>*xCy^ zxz|!lN;~;>v>>jOFnvl44RQ1IddxYlh%!c3ZdL?zCf$Qh*H<3;lGj{k&d<1}GpJ0w z7rT%l;vs>r(8-v($oS$Fyp_2mnf;dNJeN1MY2b zck2vMs2Z@B42#Q;XUYg(ifgIkL9PEme;%Uj<0s%RO`GjBQY0StFhjWljAMSqzw)#S zk!enb{JQ7*NUfc%m!FSkCu*FV)EKrs&=ur4TcugLsEY3K4#Q6FA!Wuo{E*P4R#RJX zg_5N?gt&VADkHH+&{??GqDdKz3)$8R~b zN2{s3Pzxz#jr7Fx?2ouyABv@rV_)EqVo!6WshR>L$}_6)ZUdf@VibVZeI6y%Q-Y6+ zNroK-qM{x(a|SMtVQr7^yOEwGZMt}Oukstev-C6<53L%Kh4*jCRtXk18WiBisN`Q+ z)^*#cW#?l7TT!HMjR78H_OMls#(cc^z)nhB2wGGbnpu4Xx46pIp&O-qDNt#_byd~{+n*~3=c4oZ`o{8o=u69frqO)ARoeJEz;e31Lj+Zue*B(Wp26u1c&;tpfEDBklNJZ*e2Ar!wNbPB-XddZyL*OSx2n2{hj8`zUsn+49=IQ5X$ zC@vg48xEE+!CiA`H-7P}BbzjbWQns?%SOM~ir?7IqA^H`u%y+-T31<@Q|4#82`4<% z1?pSJvLbjsA+M=0*f{qBVf0-w1r@47z8@X)*jDTZYnmXxH)o{&ur4(WLut_IV zc0^f@BJMNOu(g}vO2AdI^FtWbmYM(&**SZ1&dltmYY{O~*T|Onc!N(;7DItH!2!X9 zgsZm77itcvtbP#Nha#A`RZ2qb-%~jR+|L)rNJby{!rb(Q85K(Swm8uK_d0c5rdwoN zk|3u>-2B1*Z%<6AMAX#>4@*_kS|nv$2^H>~H9Mq{LzmRb*il|t^U|i@kl05K2OIJE zgZ9gIem!PI<783|%%`RhGLi{;iPw_$U4QAlxNc{3{7{H83QU~O?fu>)rb^`0NN?c& zwAi+H^Pn-oK^uI**_h{<_7MhEjjV;T?gFl$0TjuNPK<6Oqb= z?-`PGAHRE2sWklaqKd!&;S?pxq4VRQHxz-xyi>+9rCt!^2T8qot&9#SlZff-Y=kP} zV%#N&Vs}-(52@#lH11cTAl|FySf7P&Bs@MF43`PNkCX6&gxkBZ?{fZI^?dfPT`1X4 zOI>lzA}>!!RoD5QXha}5atX5I%dMRg)<`>&WW(={%O&G~+HX}*T+DDL7*?y4zrN+> zF!Gio=yKr;DpJOG+2FmjS9y30IFS$#)>M!YL(T3=Uxs;#n1sskZ1sb*qq}z$vhYp2HFHbX(~o&VQJ}Zf ze;lcxp%VIyMOG}zo7FQuGMeKKTPES=cF;8s=;is~n-?-3CQpZ)LaGu7k!@9tCtnsHm422#a!G-Rls>Hr5@Z!1 zwTB&OdT61(EC6XxUQtWy(d{!BzClI;0yt;qVFAkK5kC`YKx$TDYi1+hu@6a(Ej?2k8&`6-0=GP2zq<>)aN5L)mLx&cV}n1 zErmg!hA^gMMUTqR@wqJow0Ec)|L|Y!Z?UYb!y&svS-q6;>!q;ejJ6BAlZ))VSx5ha8=Y=`^R>PDu#+t1vB+ErGn`=xpuha|1B)xH~gcBvh zl|T%XdK3W7r0h_lC_DelZ_ENShetDPD()SGI;9o1`#vL9_GHmn+ zsXq5@dd67j?hCE_%|E&}jCq`&-8kN8?<2g9^69wl4@OgLG`XLDz?t}~?i1DMz@_Ei zf8hTRbroIKRk!HVzZncE>uSbH*=G-SE)T7hAR$hs5Qb#cEI*DHpIAOb#p5q`{PY#% znz!@Qw$|`D{h}jI_tB7B*{C*KciimcL)cXz?)N*-Rh* zwtjfmJIcevl7f5cEz0L?{Zqv>Ul6ID{Va=d`m_fWJhBW@Z5NrAT73&TJrn_AC{tZ&Y5WRc$$y^Xje+t2~s{wCM#7vSxLw* z<6-Jj=3r<4N=*9<<&_BKH&_Vv=gz1p=TaUWoska_81z?-8mL$F>d`lH05=RiDp|lp zPVl*K1SW*ffdWyG)W;j#)-!bi_D4VP0}D&88u<(;0{Zwqq0!rN1h{bsA~Uy0EEA`+ z^RFb?I3h8Uo~_ey<_R{a3|eSLsdqI-gEwI+ArMzB?Nt@;%<=arB7BWxCSCKsEa}YGB{{*wwRh zNlMm@?gy&v5|qQe`v-;&crj9cBCa35(xc}*d}ti(K13T(k-fBj8vW*}TkzVnfk)f- zOAF-41AglaOfC}Vu3>h&ZtB8jCFooC#|+u||u3;8CA z7BcYc+8L6`#?qRlZwMPTUfy0E^ue0M0MumNKXfK@_3VAOvrM1{LI3%JRG+o|{t>ak zAO2sC6|VpPJUUI@F#Jv>ExNyCQ2qHDh4k*f0kAW*XM~UMgyWLpjC&Rt^TQ!x;^2QM zLf4KM$0<<8Cc@x6fjve!mfYlBif}~VjO&W%vpbP~D&O(|i~8SP*5{9c7f-)>hD+@w zoyrE#n@bE97c;svKe0SseE4@TbFzR;a)EI5AH><&Nt-eI^=2}=HrDTc)c^V)j(&ef zGYk=lmjDOesr(UG>y9ma>iVU7Zp^tb+WA zl0Ye1+*fI31S3Qv6l&U;WiFdMGH*1wJ`+;56WF!Cxs!QR`klY&CufIPnu+Nh;;0ww zNqmAoS6I^f>EA@P=+2n%>tt#;D&}wr*lcMN9O?IvJ^g;4p3Xsq&Gv@?VXL&1Bl`aL zPke#|2qXI++(g&>Sz}7zWDi`FQo)_2=gH)~s&Kx%cJop`-tqH<4A>7J`geQh%Pv+_ zC(r+*stoyy3a$b=uaT3F3Ncwgi3dR_fT*H*_Tl+!+~H}lDp6{`n=-yFBbM=KDnPjg zF`dn!(Ei4is>JuM8sl%lqQZjVSqOaIbRrAp-Ukwv<8_ngA0Yz@ZkiCo(g~dCQa;zh z50I&Y9#yEQ)rIfzHvfxnOuo>mtH}uRJF>hgke>SGT~~$x#mutNW5&^Gou&0U-K%vQ zg(*x{%)8GXJ>TB0L{#=%UXMMx6A*FN>_K&}9%8fI({{Sc=cGISMA;;IgmD&k+kqfZ z{0GlkxQa$=M5K5_Zh*Z(z~@Mn^ogI-wpzbd<$SrM2o_uWiE>M}(1hbLj%N9#h`Iha z>J>Cdzg7v>Wli^_|K)&!LaqwE-8cN|&c!74WN7XEQMqg~MDqI4-PaNEGF=&0=YQ|C z)yp+2d|i9OQt9gIIxd{O{akN6#mkpZm@0x`w!?gb`^w{wQb$JjSNydQR1_zNEcS|G z#4#^r)Sf*gaj~C}DuWqb&;FF*>%r2CRX4GWf|TBG*&WvR z@AYAPdW!LB%1E2`@iwC9%KAkVKPtoGETq;NO#2{OC2!h6w~RhPXCyPnh8)A!9_uo# zIrl|g#wUdF92vpu*;n(wYW^SM-YO`Lwrv+}0>MIn1lJhuZi5F21PQ?w z*;8lRkWHNX1)1KFh{`0+356O3UTyzoB^sn;xH`h8Crwu2lwMo!VlbOH96I=1++3Be z%~>-l634d3SfvhRlr2Un{z}Cpv;N7XaqFCww4kW1!aDnYW#l0>k<_6liGK_lIhd`t zDcwLpj+$YmOyw;Go)P8-h1n6u5bSr5bel6qPeXnbGUF1`zDk70xWa;q>Ytf0iy~9@ zg29O%^TnQn&+7}tA?r(=iWIA(0VU=&DrF%)ebpxUe2LAUDL*w4tH=&Hsc?3xEfxr* z%zIS~Xz#DX0ePRu>S(CUozTcbs<8@!1YxOKm0xA;U&5a4%;TbF zyaFErp`QFgiA&XjXL-ctOaO$fu3-w+a=#TMMr6%zp0UvTEo!6tE?{cHV8$_*Gpldq zSn%oo8F#YH?19yC$|%|PKCYPU`{sK7@PjWHmSvD>%F69xc=!M=B@-U4<;0!APiSk; z8_GzsL&>qS-yNk~J34LDgfZ9_8&5$b3DQs(zRm3U&3cFmdpJC47)lH!c>22GGpryiaqwWgRxHnwC0AZjgz5PR<%^{D7)tkNg zo|L&mdPCQL$XJ?MVKylTMpDwE7UKUvBMomt2;sO|C3MN4rJM^u8sV%HP7jh~V5f*D zbg@4em3X)<2Nn3$k=PpxkSIov#$tjo@Pja4orl`zfW0wiLKshBg6yOde%j28L-F7> zHo;M{u1$QU#^Fx;5i!L}MvDpdtIVzKdHke4qJQ*Pedkdn-1{RS_!0W4@hy=QnZJ%Z z2ReYRF#!GkZfy*JUt8<)cIUYoCR;^&gBTGGCm5eLMp#7loNaAv;Cp|EimcQI_qh!) zl0aSjolT937+zPZd|25e$!^m$Y>9AtSnG9Xyd5IC!rX7YF&i(up$euri=bM3ErRwf zjU^G)(M-;yUQozu;rq>VBne+udyo|n)iO>z`}Zr8=HNmN@cw95ZKUfx>45LaTZjl) zy=t)xW|~Ot%wCuIy0zCk_DOcJ{F#N=dJY4oBK;ke*5d({L?9$U0*a&SKPzmLAR>(U z6klnY6X|NtVx`lhuljy!$?WTXu`s$cgW(8r(eKAGH{U|a&x;4D{aEy=9)^VBvq3x0 z(2H9-zbu&&sOPruE>Yr)WP03Uee{(KyBt?w2T~YDpV#d?eB)xIbI{85nTf@< zbzJ2Bq29`Re!$iuML=L7T0BpO{AGg-j;Uu$^DBFb?c8GpDknkmkiYWaRq_~q#cb8T zh0;^ATBIEw@S{6p6;uKlk-YH}$DCc2w6jf%MZy<=cL2WDYevUPqgPx#x+^SjB;EyP zoN-Q?!Dg`@6a;VLQFp$=EoxK9YVIs2{<4o73o|r5=Vk|D*pi>yM-9KJH|9pnZTyPB_-97MNNhV7oR(-UP(KdJnkxQI`Cm2q!N%t-Z*gU2-UbM|jMV)TRsEb@LlHOxmBXa3cAjzlS5Esm_ z|HC>>L6Fj#E+^y3-0#=2udCpb5E|j7^fF}+?kB4|nQtFIjLZuE^&SGsdOD8@wK%jX zU*MKBUi?THX85WiaRbtv*yg{&`SV6>cFA`9I_OUD!@t&84K(!ox%~*lYL0#l4dXvh zHyi{0_lq=eENgy#6@tp>Awn9zM~VN)#XDr7kJN${(f|B8%^)m0M)r7*GcW$?h`%&n zBx`!{)qk`T*|zZa;6%q0dzNioX9oYj=Kn1+3+jK2D0sJWf^ckqodS4;KKqYV62jES z{_iLJc$?+@%=oXZ0xyE+|NXab|4?Q8>n*_-#NhtpS^j^0^c+b_ZGK5ts9;hpymVWS z3fh3~bDyBS9m>La`bNft{`=pnoKKgU;f*9hEBL?{U^#W-kh7+ysr81fxr_2#ZZ%8Fbrk%!9<_J;PAO_a%|bg5FGu{_pQUpH6aUypeIU zM%@nf!;NB57tEoA-1R>2^v4PJGqJ<{W3V9esRV){1T*`UiLXe}+&{5>9`Tmw^d(-H z{?5S~ny6*u`BYaf?RCjyTtNG7YptvMklFh!<@?%RwSuP6s@+gMlqM-$$(*MbqUM~M z{9OLbCT-a|x(r9f8PcfP;Nv@PCNkPbPcQxyMZ!(}c^V{$cQ^3m%sziN;C##TJa%)v zqdU%j)G&axe&DmL+6`UkaK|_ODrc=T!IIN^-t)i`EaEI?@4>el!tWE8WdP((#ka`@DItiNj?kqin=GWLo<@!-gcMEBeX+`oAsjPq>GPMQSDhDqbU<|(*vw*& z@=)v3|HXu+VlVZlT@?)teub$l=sOw(N!CyzY6PRBXGrK+>y?LJD?4pv#jZ_`;QLP?=O6ZyNEswZQrRc9&T6-eOG_? zb%3YeM};l?)rK&q`fsga!jft%EhNHdbYNu3DE7n}@nv*~wI5*gD!bh^6=5fIqFi{K zlY474x2bTsfxf@4wC_%tZYo)UpPp|c+5r4WBdred&pQ6Z;?-9&N}9y?{JXzn007&hPuUKl+J>j zAsoQ{LLFa9ow$3W5(Mr@CmEtLtv0Or27^k-gxwCtd|osZ&bf(}Ppo<5U?WzKZkyB0 z72^CiHkn`e&iJaw6~jJ}oO-VqcJ~W}h$qgkfW*$|9(p2z?n#XX^0BcNi9fAB1n{I(GOQg_u@(66vMx4 zd&Y63=Vel;jlxeKXt`hiYbtu41u4@A*kSt87((Y(5vCN?0U!{&i?ZqY=F=a%d$XK> z{1roi2n9oH=VQj5_g?{YN`^3bl+}= zW>%>cVFS*+C~gd35NUh+6MMobk_Oh6_}Z5Fxs?bcU-9d=g73w~2-XSlHMW@Ap5bgj z*-wSSv4+F5p}s}2g1SkyWrODc;>+_gN_T`0(lxO^&bB_gokwQ$Hv zgSF@sXq1ou(hrGFAR`A_Fd@%QqLk(L3=l`r8HVmS!A86|o82!A`&>_TfYi2x5Bn-z zxp1(xB&F9Z$DF!m%)D3lz=XXTgiXQHr&}Kp$XHeRi3PIQD?_Df zGu@r(LLE=(66s==cr#DM7DVa}*2WRTz84&~U{gV~4iI!}gcm0@TMkBqI=e4T5OOiY z-wz58ToTtatD?)BgN5QQ=Um9YiJl{GuR<)yPFW!0!rfu>F0wIlQlE7#jHl#?n- zUvpxB%6rJOBKP`EZkG$W~3QZDgY?Y{K2U?IIiXL?yE)Q)t1^{RkqJ0v;OV+e^jpBSr!%k+KJ;3+e zE}MA=AE>%kb#sV`1xevu&DoSfp!?oKiQIFmDB|N^n zmCPGT;@{pgnX=6I=0M~TDJG&6Qyr@l*(QhC7$2~|PzAx{!{!Rj>F{1(Q&uQ-%X1;p zAyRCt(D5JwFdmlXj*D-(vs~GEi2G}pZe*g>W+iFZFHpo@SmS%^wPi<8RWsW@^zIh5 ztq2+XWKX=` zE-#qGnPn)M0OOsCs~tooDzkF2I(c)Ro@^bs@Gd`&3L(2eWVyDUX|f9N@_HH#dcR(~ zn`<_>)RC)aeyW(%i?Z-uclp843azcv(;jD~rynX2T>4pmkw}0Ey(%z-br(LG^J@2x zd`_+pj`ABqzrnT?vUnVH3AsVODfrvmZw9#Qn?%eEh9Q}PZegnk)Tm(a?yZ9_*4on< zM8$X~hV%@uMsudq80bXG+cMd$ZgHCM{>NK=B;j?<%`89%IzGbd_W0?iwSH0fiUPR! z;W*iq|DGTOzT{iB0%}w%bG=;x(j6dENui@iv z_TIR%A6_;$&?aT(-H(}{gGte5@zhp`&qMBnN_^LsX8>B;^!Kf{N;E9N<#x*^_d2PR z{wCXZ5^~auQ!tlYzD?Zmz+`(HG`rYQ(nK*bKegy{DM)|mQu2?c?^xukt5M6)Y1!SZZLK)8NGRs;IQ=SO>^-Uvf{CSDH9yp)*Ft=Ryms=Z zSy4^RiLNdS;WA`%NRzaAzI#2~t;@X<(qItJo1EsXd8lxCimdeGldT4#P*#x-{ z$uXJ@=dJtW8A1F&zQ=`mlls`s1A(V5St&#kfP!2kKGy=ln=;L9TS2D&aQs@!mC5FT zi$4Mc1sSV6OZVDuY%C~PE{Cg$<2+57giXigEhN7VbP^zJy(iCJ`2O~+z&|mlEGwN&(=9Es$FlzocO>e6 zVng?B*Aij-ON!a#ul&kiOncY;dW!MrQvFwJK%JkV`1)&orLVJt_{7=DwTw1wxTATa zsv672sQlC`5x#hED?~I-<&O=pVZkASlw?7_hd7cX9kgxj%aagf@?_1TvRyAR>LnedBGu!oNn zmA5&Z0=0food?!8dO^NFsDqe6tY{E7Ow9jz%f-Q6^>7pCgHq#l`dbNG4d)S~<7UA~ z1sw?keP?Y?)lTg*4$Ab!6!)uOw$`hIB$Mbh2JAQxPP9Ke6QpPs_gnlEVzZ&jA1l8! zHMP5XM7LEQLkOSR*37r4rUvnkNP}Am&~j?vq1_rz`wH^5aUR zj$7J8Uw_De&axhKmfvuP6|2>oa1eajX3z$-gs`h32OA2J-1X9eP8g4JV`L2q4a94h ziz6R~r3_>6QYAVOh^2aJsRp?tMGh$pHM@mxs;)(p;o#0-Du{WJS7Ps@ZQ3qpSgi%r(ybM ze=ALHpgLisQ~yNaGC^vIl@zJ*von%DI#zDI8=9{1TGSw3*XtCo`$!spx%FALEFpAy z8O8$>zI1TndMLLhzMtMtH^iP8L3uDgoBj^BG`(m#U4C9J_X_|SKJiLn+jp@NB}2jc z9O?Zayx?yubJ$AbVitYpsNt=!+-*uCmhwRQ&0(A#?KZh}{XujdYpGidBPXdEyH&@- ztb9X5tTL}e0zbKC9w+b3z!Nn)BIuCar?FjJSY)8a3lsfwSDb3U|-Ad{)TUtCfJg2T+XmVM?q5&%bZjwweji3Yf`XXiB^@*~R#6RVY)Gi{ACq2N_E8=962 zmpazL(@Iaop><-hash&!<&?SQ!qV$OWOwztRxE@EehF^PUfMm$*eeP8?7P{uMku5&l)^??94M7PQk|_ zI0L^_EZt6tsJUtZhXJE66f1!uKeo0Ub9w-9Gx1kp<8=3|5XH)j%>Lra5o(5oWD-5d zSZei01iyWVjlx6Zc(1+>nR>f~Xy9loPF6CDJ#+N^>gsz2hP4&ur7C~TGvmdbhSG~Y zA-nQ*q*VWM#+HqdT;jllT?FTu)h~{l{!mYYDn7tBlJKHlDsWaHC0FTr|A(zkzPtpLsZ z{he7>yh72+bjqjJF-9v3c^ep8gOPZ%>M}BXUYj0rP|UIWuf32Lz5KJj!D;_7rEnvZS$yCIGL~Xmgl$J`!}U^PCQNCXm*fV!2e zcibM+%Gb2_^msneJHDNO<_hi|p2mc};($JDD|};dab}Hz@$%+oQrw*J>Sbl;KI#6w z?4t)mBNN?31PI6eX|Tx>HGU}6=F1H2HI}ty+0mWM+Y+jkcol_X275%e+;TqG{l0ULp*Eev+nFG($KK|`lqBWOU%9m1UnA9_1nomjHZF=o?+`V}b1Rh_0*ooh_ ztk!S8uvrxXm^^GB8YV-;5>~P($0VXs*gx0|@}1+@&VuKKxAb^~Yd`>u+0v@d^K4#? zHQa5jCDptl&HR{ud$oOtm}S!)HCt&!=IT~I7uR~W>i+>c%mwK?{>DE%+WxpQI&S6O za9dJPj<0TgZscSCGVG@E?ELbpW8i)cq9JOA?B~5u?B{Q_^`2ejyg?)UaC@bhdPvP1 z;;l7hP121J{{8D`Pe%o>rq#Vv8v(5WblYFd$Y=mZ+Nc*q|94ocXe8}xUj+aBi;YL( z^*`dPH=hp5TQyCwn_cL~fJH@Bx zU#?am<)KN97!&#F?c}j81}Wp(SfjxM(Xp;3jU0s}4jY1)8;k|zOkM-?!8kHbIzfl9 zU3w5O62*?RrkT_!z-818u*vdFbE7 zy*X%%Fuy@&zn-u^yrN$-`K5hVBHl7xk!fv>);(X%0MC9E<_a9(T`X~FXJ0t~zeLI(y0%bZz~Y-h?6r`R ze)^1?Xfw(4nO4+|Mrr61%)3*)$;J0_{56|qSl4UJNXEj?4Ok)j=KV~S6tVp^rz;lnHwfX1#C`qhkxI>5m5$9 zenLRHTPPA*BW-n>l8-2^fh|rJr&Mj2D0FnHx4P)&+Ot1C2K6fmZc|sz4EY)h7uBPNBr)|`pevJMdyu|h2 z?$IC_w)LUDF2(tj%yg30Xp9!F|7aMERWoYF`AMnh*YIJ^5iFG%FaRrpcu($kfcW~{~SiwL?zh*^{f83-!8 zZHub)cpTvxZ7|U5tb2LT{UY}>`Fld4i_60Bv`=2!{T4M5SC1EQQZyhBlEdRcuP|I| z^Z8d6f7yrXuXVd2@!+yWD8+f-<&*pVCKT4RNPu?tQMNfv?hETcxxWzQNraXcFU|YF z{>`1LyStt^EskRW+ZyW|Z1m_&yf@!?xS-B128U4rnnb))OhIob2#|%0Y%T9({A`gF zD*m=C&bIfC@$Xj*%+s{ZiN>hx#EojxBg9QyF4H!!xNphl(G6z!8;n*J@(ND^wgRe;X0dJ$JVXu=%1Bc5&sBCVs)K-4<`T}vb__(dOZCAiis#$eZt2u<% z{#T_i-76F@@$9ED`y1=)cBmyM_nE0%^jh2hbgP4azLE_;6wWivrx%~%v@;vC65sDx zT1d36yE#>~OsSc%9M!?ngR@V!B)VOZPSfp!hg~#9tnvgYU*gi_;{N9D+{jFlmKvu! zYCvzrr2fIq0S#42Ao7cyBRR`?FVhp1PBPB~{RK_5q+|hr!}R;V?eE-M+x1_H=M)3! zd^v^cx2@@=EM^z#$6jtXQs1T8Bp@fn3hyiEQy^xxUafbNPAxUC{jD|pH$zyxQF=gHzxB;GNT>JUxAAWeZo4Hm!kauls2 z*WbTK{PCX#(j%AZEe(uz!La4*U4i+y?S4^=*%L%HOuh$Y%@vlx`pBENW zRPpXn$9Lnqd1s$10$--5AZ!Gk_!6kH>4Qf~yZkqv!$`}=^^tlOiw7gx)w&uG73ALIoG#oSt3}Pk9(yL+mF6O;}cWqiL<2z3c zHP<1t^asaUMce7c zSTv}O-*@2rE81b|*YZF=9{FGbk7n_d(j-UtiM7^KRaSMgU3*GCn17>UoFV}^JtweX zh&>N%%#Rfc^|xB|xY0M=LPnBlQTi*mQP0Pren@a_7rm!GS>20)|F7|t^hT1oP`+3Q4tg$Rg&;0vE?(qaW+p|Uf zzfZ9-JgJf(uw~JWN~z%eCspX*_O9B$10Mf(TB-jByR?Kf&k$~D)%n?NdqH}a^0zRJ zb~k}TPSv8{QvZG#4)KU1bUcTrIO8cK2WEt7=&3`6#|QU%;Y5eqP5MgDQpF(YS~Yy+ zc#{Gf4NVKgph-o3c70`yZX3NlT@|iF$%_knvyU6-+tifV_cDM*EyKd7w&gOny7R0B+Jvsi{z3t0X*vvd+`RnTCF+AvfU!HjY(Jj#bBdN-PBS3YW)Z z@81n~PDZ{(<_HNgouFUaqKcLP3D%cpEB94$hxFmRtvYXBd!w5aVf+bOXzTt|5ukui2XvE!?hjOmVZBV1>+f!7K~fJ1l1wUf0g=Ywq)grV{u9t9u>3fu z`Yu&~wOvR@Tuwp$^F5xxaW9P-al>%_EB+Tz6wYp3FP`(FF~y3hPmkDgZEC1_=15vK zIEhU(D4q`*_NRT!^PF+o3ce^x#cFjP`n$sGGWfZMoEO)_(f!W=H8W|6j1G3R>v}nYlXWOEFD*a!q5La~kHb9c~QHymp*DB6ZFqUe~u-&O1u!%~kvy zEH_`7Da6u0ha!S&8eTX0Jpn}MFn$8s+%R<(qp0XCJ_${jhQ>6q*#sEyZj~jPB;K|j z_cB2ktT%t;YaR_HJCQ!RUYh`zc8T&?@Y};FD|dP8s_1RF*u=tU%Yt2%A&}^-Y%q&OqC=o=8X~a zX<4ebOLTY{!a8;W1vx@Y%GH?L4i3rejHIk>%jPStH*nx)k;_#=QOb2*N4A-g+dPX8 z^b0zDb;Z)VZsiW)`ZSwzlY#eCGk1kOqs<1QurXq68<93c$m7LJ=$xl;JZWQ~8KHDO6ER(cIIxW#;H z&hl*4WWW*ey}5O1j3hH*QMU$yK4D@JY#i-*dsQA@8&o)|e$8m56pbJygFJzy_Sk-cuK3+jRXKG3RZ29;yqheCnKE_c7NzLhI%*21A^*rmYF|ip{3B) z_|2FO?H!<>b;|wHwmr6MUu>Ci9Ue2RS!;ZDU~=kC8czm}f{F+~`pz&JQP%4ZpYoYJ z_km9CU6^x3%Vf<;boWQE9jo&C3}wiJ?~GZp-o=~v7(&7CeC$pPr3QT3KV`kTa(wLu zkq`-7uAp3!Gky7iu2ydI834j_i4{VbK(p`>DvK{!%4u5VN(`N)Lj=IZ^1qwEG}XEJ zmo$t8{s^uhi32HBpDwwoRKuYLoyQ&@EqCzrikM0ki2U`XZQXVTz}!Dh!X(kB#F?C^ zb#LVigX)ye(q;7)jqbt;zFTAX9IRDtO&Hz&mby>32HAO`Oj`>>S==ub1Y_nX*>7O) zt5K^;@6RgSetzRJg4|(VzJgy;7C)4lxUxpJTyd;#`Y3oEs!XcMM*a>JYJ=#52z>WU zL-KM47ceR0hx{s(TNjwE8PKvIcpo;_H+dL%flem0PJA@ijP&hj49OK}YQS*pVuRbn zCp5cnpfaW|z0$(_TM*7_L^l2f=p%lb^&Jf^ft22wOw4Q} z$!||8Rq<*LKIdB;x;S@VP-FG@A-LAoI7J-x2Z?2k?p9g2MLg9(9Nd3T-??qoHFAM{ z9b8$|Wk(h~0Gaq{{*K%nS3YOT^I|aW!**Y$dy3}cy+=4|W6pVA${@oKI7oYFs(!Xx zv@kX{7k4+r9}=5F^ycCu>A5Y$L|DpLNYz4IhaO0w`OT+zA^_a%_}%Ni_W>Igjp!+J z_7@8YFN&*5VE59!AT?oghFT71{io-&TTpb-U37?SY_q7=ZPc3sxxfAY>XYlJC&xkiFP}+}twspxs z`JEu7PZa}w3FxS|IoO#cDPHv+lI3p)*PG)e_c9Sm(}a-%?;jSnhNUt_jl%{HwH})8 zg%!_Je9PEBM`yoYeaP-&<<7yO=gTU{tRc)%GV^Q}3j>?gopHm`7pJz>DsqVtJ#0ptPJ}h`|78Tgl$H*DtKSYz(h; zyl%buGX}zRB#N+6^Sd*7x8Pj=j>O+;5FBL%XLXuD$t}sZdbB+MUMcDT0vvqdXW;c7 z)RpXdHlK(7zNEFb@yj1ZhGPC0TZX&>kQ#o@c3`%hpJifse$m7nX>$K%;`R%HS$k|i zW>ZnZ*C@^1m^)hH`r5`Xx*jNVv}`(b$l1s;3QwVh_f9E@i)dZES~Zg$GpRDLqcl{u ztT`;mC~3|p@vt67V*N}Jfq@r-pd0D!*1x2)H%<`XIBC2mm)iP;6ld#r@8E4TvRA98 zki=y4@q_;Ty}PHX$Zr9l4$_O{!$A@KT`xh?%6xzCaGC&aMZ|J5XrZs2&z@!y(I-eI zt9(|9Kl$A&6nr!uQMvbU%iWqC>lJ^2f*~UY-P8S|@8a2O?TKZ2s}A+|NA0e@o;D?- z*t(fyr|+M>b0e)oGe!tsZ$0EnP*iAkeH5XUK=(MEz&!?So%-{#sEx;qOxSJ~sj9g` zeVr&6@1;BMBh4=p%!-17Qo@DD87Wyzjtt7Qq>DLRdjDpbM3io2!V-fmM{=(&^CaQ7 zR<##^oKDO8cdc4E+|Ifg$%CVz!tc^6Jty7yBUtJAt8|U_exq9y$~BlxQvrb|U+cK2 zRit|S)`GE&&S}&d;8x;Epa(F;g>tF^MRz9P!nPDOlu3Imv`6x!b)0JQBNlLoAI! zx+ER;Cx#=Ync?v(=&$j33UzLIh3UMpKm=Y4W#}(Ab#6YIcN7z|qiOv*SO`PfBfD%# zv*x4&-NoAbh$OGpC}WWm(RhR~(ZKlw<1WRXcngBF2eo1XWK5K~9FvV?bx117CaT-+ z@*6dN=9>5H9|ZE6%AbUH zbNt!Q1jMR=AjBEZ<*X_$sO}XB=>rBUqBS;)5~a5G8gdV*>v?hcKGZ7YOleXzV}F_A ztoD0x3pRyQ(_0c^)!jGjEp0kgdTa?487w1n-(`*Lyv$ur4@v&rs`XJ0+ehf!DIN?B zL%ItlFDq4~{F;3Sby*TaOGpi5(-8rURBS+-C0Tyx<%RRnBtD^f1DhI&kC4;XKVoh> z`%_eabw&J19WemTjZhbn)-`-4gt*1PD56zarV8(K<@2k3j0$p;7ZCfdHH+6UqH+)r$0kA#udb(u?<<)#8ze`?|;o7(0ul`nDDuQA+kPO?qE9K>6Up6$@7^lAFWZEol$9`WhV`YG4zSLvO) zW5&Lcd`x+S$%6>qZ@o$_w4Szu;Y}P|)j6kV@k4W)IwXM+{DHg|rX|jMup{O9CD%t! zEkA^$Fv5MAtJ6DBGjslGZxCyo9C2jqY-IgO6-M=bxv_H+oJu@re zhsKlIn?Zz@8%K%*Sl62eXM!-ldeb?iw}v62d7NMjr%w4(uHF(ft>_^VdE-T7`JDIx zj@_gCVPO1q3)PhWkT*^w5k=UfZ2k1pZ9;LeX#elLfurxUomFjoM0`X*EPB?wM&mSp z%aG5amc;i*`^;;2G=M6jq~UJm%+09B7tyscA+#p^XgzN@Z#zbb%?Y-BY5?L>)mEu& z4F@_o*{~%J;7q=}4^M0Uvb0k0lefk37gQx3ulAxK-Sc`|LPs-tz2nCN9|_3;=wisv za}jS`-79TcEkXnNV|$F*Y-XhJD7ljdP0e@9REinGZIS9@+A}~fj>+yC3*t_o&Ac2x zY>O5>dve#S6%zm-@t}1J+v76T;~I88u38Q!-y?o=U)O(_W66MyQKE@SxWhifZs04H z76S2BD;zhywC7puZI>ZiF{!$nx?(UAcdJkBGG?9hQ@m0CnuW+% zS*T?&q19lHBp>j^eEnP9{To=tUvT^a@DUd;X>%mQy@f6KEn~1cRWj|caU_d=-B|g9 zK@)}x?64)}X=u#tTZn-Y?ahwN#@fa z*>rr3=uB&PP|i3;c6y9hi4Sw$zgsr1vA2K8tHDrOPzz&r zTgxfOqwsePM&Jd0Tj1~Pf^j)MqF9z{7Auyzx)zee>5%`a;&ql`v&<#m6U zf6nHuNsi`==x0`?8?^XVn<-Z9L~S9^fbAHiJ^cL~|G;!`FO5^~8k>I~}67 zp{v@~N+}AQabuC`Za2|Gs$)3{kbSOt<_a?40cLp8@Q1TAidyD%cMg#rgZsjNbUd$) zFR6)^WFGG}-J*3Z^Ge~smVBWQ+=cZX&wZh3vVv)Ge8BmSM64*?X9;W_P`R^#W(jau zlkXgg6k$hwkrsUcf{kX_Wt^dQmGvXK%WlYmZDqC*@ihu2w0 z&-J4v038U0voA*f-=Q%e#9Mg|+!;93F#vf`yDf z3#Wg#eJ7lpoi80TCa_OZq04yXTcHIe?Z#C+r0HgqI0Rw2X(2+UGCDb8g`l%IHzJoJ z+NND&itY&*NKO=#ivb}v(=@HI%oL`(31gKPr^c2HSd!r%c#WjPQS7U)ZDJN$&2y7O ze7a4G3(P?I0Fi{BS#{Kdytauv`~#{q*0p&2&7P58+TgukkSo^6?u)xb?CmM$Pw)Vk zFP=wdK0_fsw~6s}p(;@+)-o%DVHz+KR8orR;^$)8APpa|mxlZ?)5QCnC;I%(#g-ei z2E7X=>!a~6z>E(v;kVA?IiE}ui~Qju?4ytS5BO#d;4%WD^eTtfExfXfs zp6!-NX=bA4j~dh+N+5=qbZ`+vk$)Il?q-Z4Q$#acZTWu7I}0G?WUp)+o*$f^x9Ewf zqehX#_kV?urmT|YVxv*{3Pc7uJGBSVlp;#C?oK>jSVVtetF3}S`p9)xKlJB$KFp6s z9@8^)$y+kU1|opPo&DoPqjEI@d&2N_;ERGg=$u~X^n&Nh2 z7D8#%dNlYiW>w7|@V~a($8R0K%8kWvapDEE3N)SdBE`dltB9YXVgeEFWjE0|Ql3s8 z?P@sD{oI$pQk?V2(rqHQsFhc%lku4$xj)#ytWUkzG@5R{$?len0)f@1NE2*Iw5x{m z#nV7G<%@P!RJTNn_nJp*afGgZpffty=gto zp4H76H=(IkGGaOsaC;Ge(`Xn*1A_zh=3-$mLXKn*2dSaK%`K)NjUU8OU$0QbPM(~e zFnlozylrh-JqZdGwWDn0pG#KsJ?}i))LbX=Bu&AbliN@qM{x7tQoEbF!K_=~ArTl|Uy;hpC%W!t_+65u!>abvp367$ecQ2j)oSHwEz>nS%iqCFcVVTR z;MAB!j!~TxoOidD8}rQo7)j$T*b*BX+{}o?_;xMN@-=`2KKdmY3JQsWmYhp_!^eEP z?(2bcY~mHgWwwT2Md0nhFMk5Ul1D%e~>Lr94 zZq%2NTkSlMAP8B{AOOZybclx)w6%))vo>TPXQFI6z6B+g9{$C})#L>GHPvM8#U6f( zm`Ru+C~|B`GjzG_+Iu@nHIA2;h3qw?C?JF8uj=_4L%WE*_~yJh9ydeTFelrp+RN+T z`DSxYY_OC1vC&*pUv^Yr4Aty@5`sr59f*8c8TPm|JL$$>x*^zi+wrcmFrrUd08jiY zOAc5AY^6-^m&<2+-W>~;1PGFvMwhZ`-VCxN(XmoOx%v*RpDAAzHoD%4Xc&q=87u~{ z1e=)%9BbBFCnbl#M@vi_+tXWoLq%EU2<e2sn)bb#|$$mB_RWxtr9%Ehp+xiB5>Ho*l;-B<^eu=x8f^0le zRhEuRaEvVx!u+6=CrP8tYK*`G`E&eB?%&Cf`f3XC+h&k>1Qb)?i~Mwz#dYNJRnE(A z@4A-PmvGLR(1IlkBU0#_j?mMcchZs?dVEaqEWafQ+zw~yynEDguQj+nJ>Nllul(OO zGv|0k_RRfJB3M5V#1t`d8eY{isyX1UH@Sxc3s-j=H-(m8<;G*&xfI*BbJJ*VLpFZM zM>;|<=<&>hgYm;1Yk9cm+k}wR$l)z)lrnf`k1r* zX3E$BDI$#nUmBbz_T)bTr(p+sjXb^`=w=Denok|q(i9$3-CJIh{PYO=M1_lD9*wr} zUV}lM47*H4if~W!Y#WS9KJnG-&V}}tbiNWWa=r)SAZbNW@Xztm#D+dmmd$Lio>J*n5x6KbJ_&#`3= z*0js&9uy-zA_4`;yT$V|g2)k8x4y9={@JjrNR4BDd@+$MzoBQ#qA~n{$5AyP7@THU zsI=$s5n677fh!@6erOKI55BjRlx{9{BfC|a22Z{6s_NG%MHYwkmX3zQ2`AT3<#U&X zhaVMhIF5ShiVQ{qCtpy~Cvi?r&bI4wXi?EUS=|3(b%_POB-M=8Otz-G?JN)TDQGBF zuZ?oT2@dG-!B(QWP~^S_jc79|Doq~>*t<@b+X2?j<8G$aahX(atgeqpH@|o0@!wwp zfOX=<^plO3hE$#R@ZsU%yc?6jbvvtcst0hgJe^)nvN`_rSXrv&aHcQ?j#v^?ya1Is z5eZK=72Aw4+PJEr>LSI$O$J+m9louc{>@A;nP^UIch2Owk*r~P0yx9pa=II*bLD8g z-bfSc4_)V>Iv^xezb2KMt-EFe4xTnitYoKy3mQn=BKX{&SRjdHl&#K-mB;XHScOKz zNs%iXRMWc`Ml7}#;znbEChH$bRVx2<4)$_P@9tJ|zwv6F*Ds$7sVn7m^U`;I8vz|P zwtp_VNmTo$k8pFMwU!VyL!4%0xKop&-DY5VeD)(lf$1TMrw5~-^HtZUH?r{s4O=AQ zEF}q>W@x!$H$@2osIN1Tt5+ZY|UUr zSAV?wR7iZ4MnrnhzioryZs{FiCg)(6XG)jn`RM!e=J#8l_Jl-rSKhoe4*KR+TZS|Z zeuK%e*^l#9;VAPHIeolPkz*e-aI z3}V9ou(i+5eJCMAU0U?w#nt(RH9-R}|HOH|xbo=k#RThin3%kGD_(RvenUsqOq=RB z7J~aydsbdRP#RoDUTtf3QA1Uef7@x@PT6ks`lRV0SiC?_XNvr?vU+68!OBS024Q(m zMOI5yS>`xfbR&A6i+a-(GrmoxD`Z@@4C6}s_K?`Ff4dh@4BqM~^J;H^e6ku3A>q9F zy~|3PYBZLfYb?xUmm8#x8f{;adspevrOR@7m>sL=K>3xm2P#IV%EY&6ZfPSu-^Zh=W2-<5MQcWAdqyF+Oy%sn8R~bQONiFvBQDce&qEge z#)!Q42L@-CuWPX;GqhXPhK~GWDW`KC#LcZ?j*ueFMc>6;%2`K3RQg+VR);1-e6Zg` ztD2%XXr*G6rXY|RJuW51X^rJkr^U-#;<(xXI}L@vRD~4BlARuS<3th6S9=(Ms6llW zYKE%)dwv=&vXRE7f|iUb#MC~yQPWE@2{<5CMvrCZ!)$g&T@-ZvqLA%>@paZwQAXju z9#BD~RJs+A4(SF9ke2T5?ru?#Zjc5MkuK@(F3F)`=*}UAfxA8Dth>%S>z=z7f4Nj< z=KE%Ud%y4VdtL$_IT2FiY!n&E8W$@^Lv?deO97IXsdS!!NFrXd2wd*BPx*rYuC|9O zr7|%#H?~0c45M&Qdw^8v&Pt%6e(k{`WutvyYqZcKgKDi3HEB8m7_l9tTqD@ZPHvy` z2Txc$40>BDry0Efy=_{29Z+hw@w-OQL9n%@UiW3P?z1aFr>ne$yQsWG_mO60lZDs@+(O zoz3#2nvow3SyHuQw?VitC7L~wUxFfm3H>%{PWLi2CgajlDWlHu?PyTC_ zyXEQg(t2|}8Xs+;}0YGvlPE4WxC%tV*-R|^%4wjFSI7hLXHw~7%qV-#>-mF6L59T+6^ z!VKd~k(G`N?ELHI%8Y?Z^u(iu&5fM55s+iklscO878M$K&&P=e#@=>pISP0MRg~#J zg1BPadNl`*ZsF)k=5yK1J5$#dueR;%jUw%;<3O#bgwNH5amp$qoGWs$`8+)d^~%(l z6EdWYu!pQvk-U4kJOy2Cua=?GX`HN)H+2<(s7zObTxPkC;@>p(`-AZdiY@0bzgd^; z`XVX_PS(duxRZ8;$@EYGOlHv9?NG>%xAxsVk++j8I@;KXQu}>#`3N|qs!Yv1jh)T2NMaV+RD18=Sx-9@uTv&uUHVtckTqX8CG@ zT?O~fx+V@^%I$)oYDAX-)ah9F4-Xy$1iNkA`^`EFiui*$PqBt5;hPGW7^j+uNg=JE z>$Za1^p3(jXS$y5FB0MpAEDpe9u-9jMVTP;3U4UD@W!)f1mJTS!UPjD5sOJQ)fCd+ zFU>ESy1MF)0myRLbW2^!PTol?oYWY^JvRS}x@%@;f(IPwn)PwAjKF9Km?tv5-kC)teOl!>R zN+2CHF|R%j1`B|JlVIi^8ib0Sh%|C~V%}VP-s+WYE3?Gk%i?OulBt~oljpGkxDd)x z92?%M+S+@GkxEtu_k_VO?=r_tcGWG*s(-bc?5JBWJbqU)WxL>QwGF`{Mk9H%8^MhSM^P7YTpp#AA{PQmCy(B`AJzYSQb118K3|nu z{0Rb|)AECCz+PoN_`Qqu+{d_-g+0|G}h~96tI27O)akPMob;h*o(1;Ff zu?sg>IETBmJ2q7}?_Cv~c`G}kEvE|JOpw_Sp843Fh>70VI>aYV1*8W z`}>nz_dRHAy-JSnkcZ}{UW}2wPxin2`+y_%twg-%-TSf&eH&ZsOP4zL@yQqd3ONCi zTK!RnOUgT*2<6JO26Q_qA3|h&GG*n(`clo&dQPztj`jneEh_+g!&yMwTh7{u<6l8@p*Go^uP(38?fxX$c}HqGHeo2z zTdB~0#-AC~IhW4sRv_%LF$%fk!G5u~Ei{22Xgw}syE$S5-=XN|PHhk-AZzHWf8@=> zcg)#Kq9d^=bv&(%&g;7@AY&F6Aqr+bb*p0~jnhWAx|?$0m>9=#-@ZN!+;a*3l@!IL zNfc#@U&F)$dcN28-b!fB9EE!TMUuE;`Ix$Lu*!me{JKqr)K>TX;A(=i<#i%cv*jP} z`I~X)8jKe<|HV^@&#BRO3nPyQGMDbk{Gb$ghg1|KU0aTmR=R$U-7~EeR=f4Z+N(_` z?cf@@xW%2-*~I<4xltkD!A`sU6|s8}te6pg1*x^fcox_~2_$l9-9H1Am{cFVQuU7d z6@8EmSz%ZesW;Q}_*ND(TBTLOdZ6o#n{O)=%Qc4-erQ!RD8=eaWLR7QOp0sPuF#Bac=_ ze6Ej=OE6YTwjaFnuO5K6lBmU6$>a-J_@g^4QfB)RIvCBJ{_))o=h|l8>Hwo2P+1$Ol z+e(}BnxtyFjmZy@d2ej39?eNTnKf(%6;y#hG9>C6_R$r;pX=2zis(3Tw)WhX}Eo}z-kZ>GO6W~sexz#c0l&Qx8K zQ{bxtb0bJp5n$Z!qHgc{H2UXd?&y_AJ?a}%xlV&~;a3ZYoscBPeN+CZ6j?LDpu^pt zb@tab=ID*sjq*u6?vcFtS{a$0Mis?jfNdDjqOi(5a)RRl3es3)tM)IM;A}>I_BF$ zrHa>Mqw#l0IN<7X7jxw8!9qlg<{~)k_DB~qx>pnYWqNcWW~nt|wr7}hJ>q?|9lc9e zQBAXwXF1|{R88)pQ84^~c7vbekG+LLn=@#syX>#=j?S&HYu9u<>iTHj`GEc)n8acA z%JSjM+GP3UP=HOg-niP2bY~7*n{}7y^Wb*A{ujGd3T3!P%%HScRZsKO;2fZCZP6lD z5+y-16!JQS)dg*FVt6M-@-TL=E6Y|yw2+0n+V!%C8^M^8iq+jQ4peaf ztspc1+a9$qYkNi{A9Q95O{=y>Qa?QXpss#Yk#OD~$d5xV1#=Prl`a^InqZ_EW_B`r z>N65T{!e-Fbdk~FlY18g*cs-hO#XMaMV7@y7p1 z@<{)D)ZM?qDy~7bAxLr}iS0Y32-}B}>0jm>{Req!P7ySUhk|hcmLVF+5VVzU>Ngo+ zXP7U)$Ua%Sgk{2@9I*w;^xaGTM?dsT^>6C}K(_q!$soa##;aKex}foyGQrr?`pcCz zW*`(-E#s@J7ZhaL7i#dTITT)4DnbdsZJ8S|;sBYN_d&OS+|+g>7xwmBk@PlH9Sl|0 ze23z%uq}4E}gL&g%llzVgeK404fCx9) zL345~X)vT=(3FqRXs7P`8$r#1vX zb79$%tI$HcuCE5b>dUWGtSVHiu1>f7IjBl3a@g9>ZFS42UuL$_qA(MBAD4?J(9HPSysu*RR&&BMWy5I}E!R@r zX@K2Z$-E~7MDn2BQis1|>OWpbE;2!`w&>GP4CH;r&Y~CJKmB0lw%RJTc!REEjluEq zNxf`7AGw(8-Aps%fwXNz>)=8`1r}QKu{%vO)^K;kRZL#%VE5y)@YpmC#?(<5*cO6u zWc2y}s(OsiM9<74j?^s+Nqadd`yQ0}Jc8VfRHCboR3fEY3DJVs@EvNwWS`E`1PsF^ z+y$ImgH# zg~@GDT*}j$WvPugw?PYH3ftEGulm%Y!NeU`8a%6hSJGSFm|e#WMFM#6_F2Esz{^!tumx zS~u%Z@BNOb4 zaz{QD2N~=&$h+K>B0b`R{#R0!O_hiCWj=o0r;qmZTBhmr?S#)adYH4m>HW58IrbOR zaYeH8lHaa*(O})}9R7v~PQI6a$`3i$*I11}f*vOy?Q&13a7A5ZQ90(=yH8}bJ0z^pA8z24`A{O2LRe7xwrOkrdR?Kar z#zajvphHhO_gVhma3#)g!JF!T{WZVE%T2LqnO8r)AGc+}vnZUCG-V|~&unwCSI8UD z`MHUeFudL3vzS78NRSFOtwYnFAMg)1kF?FI*b^AnIrZ6Rj^C8U*Au*7eg&FS3K_%I z7hS)9TU**5IXT90k+_5gOw5+t;Bj>rjA48p+c|IcEu7YiJaEys_E^cO|J|g;CgGtQ zK_1`V#vxnASL1pyN9mH@S0e0qg0ja70GE+W=Buk(8i)g3>wsSB-BrUYEVRYt`A2MM zV>Rv~JX+1HHh`V|4@^^>&xd>C}Xb%@uj>bn3hNTs#RG*5cqh zsV;Mm6vix(meZDu4k?PyP}%o!bXe$n!JZRfUZVjj$frzc_Eq*Y58ocTxT`=)%E`7z zxv##r{3!(yMce~pX_{kgM~l!8fO*Q2c4qQlk(sl4Rp#;cVGRl=$B+qUmZ;d+omEZT zfS;U#eU=KfQ^VD;q4gFWa66nh2hFDr@d*Zm>)ESVqw95StL%7rA+XS3W4xz5)1~kc zN_$))^!kWVquC_5%F63;Dzaz4L|IspJcXd_kyV|#_ri9qEyL89gk?Gmt zxCl}}28zg18*Xecote@Skyf#vvSVcIX$P%JN{b8c`mQ;>Uv8~K7k-@1eI5{VrX-;Z zu_RlRDw(Ri#QD(16ggs31Hev{ENk|anhVR|bk6tQ>PH5T0JsK$5C_BjPdyrJDMYj~ z^r)W$fCf4DCiFju!=ef*4E{~aQTTGQA)Y+ zdan@;;a`0OGvsrhfl25_)z5QVndK>{?8r*?XH#TgH?Bn&2Na8$ha-ojQMrqTuD;GO zSs@v+M)ve(TozvO-JMgQvgYP`S@Xx8Wc+7zU&f#fufF?XTq}NV|IdkKd5jiuuoh_L zQ+?~-J`c}aQz09hZ5{7&M0r_2yCy;m(_ht zIJMDwU*H|{8>9uTsQGQ|Vbc{&4UlpkYbvV3uBLGS6d4;M1{xtYZzC7vsh^*crOnGo zK>a&6w|DkQ;*EE>=YU2`j6R?FgARZMA?bt66gnZJu%{2rDzv6Z7srToizeb}J-b-~ za`RLQ!v^NNTkzF}uQ#haebA7C%$_uypCb(u7N8F}15TtCW3zEZBa`m)7IsK2=2L`r#WPRN_H z3e%lpxcJVvcO76*Xt|-Ch8!u$Uh=JosTz=^U7i`70*}!(T75x(D`jUy=%4)~0ROpe z86lf6!nb7O=Jl_`T~;oK7@$2=kbonxx`8u&wh)myip<7O0vv2QFOvlZOmi}E2qH6Z zoJf*8OMe$iBKcy3=F@rZ-(j>+fHa$nsxrDbAY(ADo5Zfhh@;v~Xj z#-^btV40zdpojP&`06e_y~RKpKk@~Z#KbgBiu%t-rJUb3Rf(dax{Y?!_g2_*>q?s& z8%O)wMf;Ym+p(~tOa*2`VYxxCj11lF^|d8OkHy;V1O-(a_*xbz5}oXnbSyk#qO0QH zF%imV;luVecAZ|h{(-%Y`1dI%>0L}5-3c=eSv%=y#I)w;24w{4)R-(yLiD5Uc@L?s zWheQ@#~R=JnlJm_-@2&Tv?ZK8yAwTh@-9dV?+hv;0)VQ>^@u|4whnDi2%td0{LFWb z8?lpTUsZ=EV4ssm(u8XQAETj7XBF3Kv

InQ1j4|YPqziK$p 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 Hli&XURwLtP literal 0 HcmV?d00001 diff --git a/docs/save-format.md b/docs/save-format.md new file mode 100644 index 0000000..781e222 --- /dev/null +++ b/docs/save-format.md @@ -0,0 +1,52 @@ +# Save format v1 + +`Game::save_json` / `load_json` handle UTF-8 JSON; `save_file` / `load_file` add +filesystem persistence. The desktop and terminal players share these APIs. + +The envelope has required fields `save_version` (1), `game_id`, +`scene_fingerprint` and `state`. The fingerprint is lowercase SHA-256 of the typed +scene serialized by `serde_json::to_vec`: fixed struct field order, expanded +optional defaults, array order preserved. Source whitespace and object key order +do not matter. Any content change, including text, intentionally invalidates old +saves. No migrations are implemented. A future serializer/format change that +alters canonicalization must also change the save version. + +`state` contains: + +| Field | Representation | +| --- | --- | +| `room` | Current room ID | +| `inventory` | Sorted set of item IDs | +| `flags` | Sorted set of true flag IDs; absent means false | +| `used_hotspots` | Sorted set of `{room, hotspot}` for successful one-shot actions | +| `dialogue` | `{dialogue, node}` for the active conversation, or null | +| `visited_nodes` | Sorted set of `{dialogue, node}` | +| `chosen_choices` | Sorted set of `{dialogue, node, choice}` | +| `ending` | Ending ID, or null | + +Loading checks version, game identity, fingerprint, all state references, +one-shot hotspot markers, dialogue/choice history consistency, and terminal +state consistency. The active dialogue/ending must be exposed by the current +room. Unknown fields are rejected. Loading is transactional: the running state +is replaced only after every check succeeds. Error messages include the save +path (file API) and offending JSON field. Saves are local state snapshots, not +signed proofs of play; validation does not prove that arbitrary edited states +are reachable or enforce every game-specific puzzle invariant. + +Saving writes and syncs a temporary file beside the destination, then atomically +replaces the slot using `tempfile::persist`. Failed serialization, write, or +replacement leaves an existing slot intact. Parent directories must already +exist. Temp files are cleaned up on error. Concurrent writers use independent +temporary files; the last successful replacement wins. Directory metadata is not +synced, so power-loss durability depends on the platform/filesystem. + +The desktop player uses `.save.json` in its current directory by default; +its optional second positional argument chooses a different slot. F5/button +saves, F9/button loads, N/button starts a new game without deleting the slot. +Saving/loading is allowed during dialogue and after the ending. Missing, +corrupt, mismatched and inaccessible saves are shown as errors without resetting +the current game. The terminal fixture uses `last_light.save.json`. + +The status line, hover state, window configuration and UI entities are transient; +loading rebuilds the interface from the restored state. Item selection is not +needed: inventory-gated hotspots use matching items automatically. diff --git a/docs/walkthrough-transcript.txt b/docs/walkthrough-transcript.txt new file mode 100644 index 0000000..6a2e45c --- /dev/null +++ b/docs/walkthrough-transcript.txt @@ -0,0 +1,171 @@ +THE LAST LIGHT / PACE +Commands: number, click ID, choose ID, look, save, load, new, quit + +01 / The Quay +Night is falling. A boat waits beyond the reef, but the lighthouse is dark. Search the supply crate, then find the keeper. +Inventory: (empty) + 1. Search supply crate [click crate] + 2. Enter workshop [click workshop] + +> click crate +Under a folded oilskin, you find a spare fuse. + +01 / The Quay +Night is falling. A boat waits beyond the reef, but the lighthouse is dark. Search the supply crate, then find the keeper. +Inventory: Spare fuse + 1. Enter workshop [click workshop] + +> click workshop +Warm lamplight spills from the workshop. + +02 / The Workshop +The keeper studies a chart of the reef. Above the workbench, a locked stairway leads to the lantern. +Inventory: Spare fuse + 1. Return to quay [click quay] + 2. Talk to the keeper [click keeper] + 3. Unlock lantern stairs [click stairs] + +> click keeper +The keeper looks up from the chart. + +02 / The Workshop +The keeper studies a chart of the reef. Above the workbench, a locked stairway leads to the lantern. +Inventory: Spare fuse +The keeper: A boat is waiting offshore. Will you help me bring her home? + 1. Tell me how to fix the light. [choose help] + 2. I'll be back. [choose leave] + +> choose help +Tell me how to fix the light. + +02 / The Workshop +The keeper studies a chart of the reef. Above the workbench, a locked stairway leads to the lantern. +Inventory: Spare fuse +The keeper: Take my key. Find the spare fuse in the quay's supply crate and fit it in the lantern panel. Then light the beacon. + 1. Take the key. I'll get the light working. [choose accept] + 2. I need a moment. [choose leave] + +> save +Saved checkpoint. + +02 / The Workshop +The keeper studies a chart of the reef. Above the workbench, a locked stairway leads to the lantern. +Inventory: Spare fuse +The keeper: Take my key. Find the spare fuse in the quay's supply crate and fit it in the lantern panel. Then light the beacon. + 1. Take the key. I'll get the light working. [choose accept] + 2. I need a moment. [choose leave] + +> new +Started a new game. + +01 / The Quay +Night is falling. A boat waits beyond the reef, but the lighthouse is dark. Search the supply crate, then find the keeper. +Inventory: (empty) + 1. Search supply crate [click crate] + 2. Enter workshop [click workshop] + +> load +Loaded checkpoint. +Verified: room, inventory, flags, dialogue, history and ending match checkpoint. + +02 / The Workshop +The keeper studies a chart of the reef. Above the workbench, a locked stairway leads to the lantern. +Inventory: Spare fuse +The keeper: Take my key. Find the spare fuse in the quay's supply crate and fit it in the lantern panel. Then light the beacon. + 1. Take the key. I'll get the light working. [choose accept] + 2. I need a moment. [choose leave] + +> choose accept +Take the key. I'll get the light working. + +02 / The Workshop +The keeper studies a chart of the reef. Above the workbench, a locked stairway leads to the lantern. +Inventory: Spare fuse, Brass key + 1. Return to quay [click quay] + 2. Talk to the keeper [click keeper] + 3. Unlock lantern stairs [click stairs] + +> click stairs +The brass key turns. You climb to the lantern. + +03 / The Lantern +The great lens is still. Fit the spare fuse into the dark control panel, then send a signal across the water. +Inventory: Spare fuse, Brass key + 1. Down to workshop [click workshop] + 2. Fit spare fuse [click panel] + 3. Light the beacon [click beacon] + +> click panel +The fuse clicks into place. The lens begins to turn. + +03 / The Lantern +The great lens is still. Fit the spare fuse into the dark control panel, then send a signal across the water. +Inventory: Brass key + 1. Down to workshop [click workshop] + 2. Light the beacon [click beacon] + +> save +Saved checkpoint. + +03 / The Lantern +The great lens is still. Fit the spare fuse into the dark control panel, then send a signal across the water. +Inventory: Brass key + 1. Down to workshop [click workshop] + 2. Light the beacon [click beacon] + +> new +Started a new game. + +01 / The Quay +Night is falling. A boat waits beyond the reef, but the lighthouse is dark. Search the supply crate, then find the keeper. +Inventory: (empty) + 1. Search supply crate [click crate] + 2. Enter workshop [click workshop] + +> load +Loaded checkpoint. +Verified: room, inventory, flags, dialogue, history and ending match checkpoint. + +03 / The Lantern +The great lens is still. Fit the spare fuse into the dark control panel, then send a signal across the water. +Inventory: Brass key + 1. Down to workshop [click workshop] + 2. Light the beacon [click beacon] + +> click beacon +A ribbon of light sweeps the reef. + +03 / The Lantern +The great lens is still. Fit the spare fuse into the dark control panel, then send a signal across the water. +Inventory: Brass key +The boat answers with two soft bells. Guided by your light, she slips safely into harbor. The keeper waves from the quay. You brought them home. / THE END + +> save +Saved checkpoint. + +03 / The Lantern +The great lens is still. Fit the spare fuse into the dark control panel, then send a signal across the water. +Inventory: Brass key +The boat answers with two soft bells. Guided by your light, she slips safely into harbor. The keeper waves from the quay. You brought them home. / THE END + +> new +Started a new game. + +01 / The Quay +Night is falling. A boat waits beyond the reef, but the lighthouse is dark. Search the supply crate, then find the keeper. +Inventory: (empty) + 1. Search supply crate [click crate] + 2. Enter workshop [click workshop] + +> load +Loaded checkpoint. +Verified: room, inventory, flags, dialogue, history and ending match checkpoint. + +03 / The Lantern +The great lens is still. Fit the spare fuse into the dark control panel, then send a signal across the water. +Inventory: Brass key +The boat answers with two soft bells. Guided by your light, she slips safely into harbor. The keeper waves from the quay. You brought them home. / THE END + +> quit + +WALKTHROUGH PASS: safe_harbor reached and restored from disk. diff --git a/docs/walkthrough.md b/docs/walkthrough.md new file mode 100644 index 0000000..4db0501 --- /dev/null +++ b/docs/walkthrough.md @@ -0,0 +1,60 @@ +# Play The Last Light + +Run `cargo run --locked --features desktop --example last_light` for the native +Bevy game, or `cargo run --locked --example console` for the terminal version. +The same state machine powers both. Assets and dialogue are original; see the +[license](../assets/last-light/LICENSE.md). + +Click the labeled hotspots/choices, or use their displayed numbers. Numbering +changes when a one-shot hotspot disappears. All inventory use is automatic. + +| Step | Action | Expected result | +| --- | --- | --- | +| 1 | On the quay, Search supply crate | Spare fuse in inventory; crate disappears | +| 2 | Enter workshop | Room changes to workshop | +| 3 | Try Unlock lantern stairs (optional) | Keeper's key is required; no state change | +| 4 | Talk to the keeper | Greeting dialogue opens | +| 5 | Tell me how to fix the light | Instructions node opens | +| 6 | Save (F5), New (N), Load (F9) | Workshop, fuse and active instructions restored | +| 7 | Take the key. I'll get the light working | Key gained; dialogue closes; instructions remembered | +| 8 | Unlock lantern stairs | Room changes to lantern | +| 9 | Try Light the beacon (optional) | Repair is required; no state change | +| 10 | Fit spare fuse | Fuse consumed; repair flag set; panel disappears | +| 11 | Save, New, Load | Lantern, key, repair and dialogue history restored | +| 12 | Light the beacon | Boat reaches safe harbor; THE END | +| 13 | Save, New, Load | Ending restored; further gameplay remains disabled | + +You can visit the keeper before collecting the fuse, leave conversations and +return, and travel back to the quay. There is no timer or irreversible failure +in this fixture. On later conversations, the key-taking choice stays exhausted. + +## Reproducible demonstration + +```sh +cargo run --locked --example console -- --walkthrough +``` + +This replays [the playable commands](../assets/last-light/walkthrough.txt), writes +real temporary save files, starts fresh games at three checkpoints, compares the +entire restored state, and asserts the ending. It exits unsuccessfully on any +failed action or state mismatch. The temporary slot never replaces a player's +save. [The captured transcript](walkthrough-transcript.txt) shows a complete run. + +## Verification + +`cargo test --locked` covers invalid scenes, state transitions, blocked and +one-shot actions, dialogue modality/history, pointer hit bounds, Bevy message +ordering, each walkthrough step through a fresh save/load, corrupt/incompatible +saves, file replacement and I/O failure. CI also runs the scripted demonstration +and Clippy on all targets/features, including the desktop player. + +The native player was also exercised under Xvfb and Mesa software Vulkan on Linux: +mouse pickup and dialogue choice; keyboard navigation; locked stairs and an +unpowered beacon; F5/F9 and mouse Save/New/Load controls; restored dialogue, +consumed fuse and terminal ending. The 960×760 minimum window was checked for +readable controls. This is a manual native smoke check, separate from CI's +headless tests. Rust 1.99.1 and the locked Bevy 0.20.0 dependency were used. + +![Active dialogue restored with the fuse still in inventory](images/dialogue-restored.png) + +![Ending restored at the minimum supported window size](images/ending-restored.png) diff --git a/examples/console.rs b/examples/console.rs new file mode 100644 index 0000000..5ad801f --- /dev/null +++ b/examples/console.rs @@ -0,0 +1,179 @@ +//! Terminal player and reproducible, self-checking walkthrough of the fixture. +use pace_core::{runtime::*, scene::Scene}; +use std::{ + io::{self, BufRead, Write}, + path::Path, +}; + +type Result = std::result::Result>; + +fn new_game() -> Game { + Game::new( + Scene::from_json(include_str!("../assets/last-light/game.json")) + .expect("validated fixture"), + ) +} + +fn show(game: &Game) { + println!("\n{}\n{}", game.room().name, game.room().description); + let inventory: Vec<_> = game + .scene() + .items + .iter() + .filter(|i| game.state().inventory.contains(&i.id)) + .map(|i| i.name.as_str()) + .collect(); + println!( + "Inventory: {}", + if inventory.is_empty() { + "(empty)".into() + } else { + inventory.join(", ") + } + ); + if let Some(ending) = &game.state().ending { + println!( + "{}", + game.scene() + .endings + .iter() + .find(|e| &e.id == ending) + .unwrap() + .text + ); + } else if let Some(node) = game.active_node() { + println!("{}: {}", node.speaker, node.text); + for (i, c) in game.available_choices().iter().enumerate() { + println!(" {}. {} [choose {}]", i + 1, c.text, c.id); + } + } else { + for (i, h) in game.visible_hotspots().iter().enumerate() { + println!(" {}. {} [click {}]", i + 1, h.label, h.id); + } + } +} + +fn execute(game: &mut Game, line: &str, slot: &Path) -> Result { + let words: Vec<_> = line.split_whitespace().collect(); + match words.as_slice() { + ["click", id] => Ok(game.apply(AdventureCommand::Interact { + hotspot: (*id).into(), + })?), + ["choose", id] => Ok(game.apply(AdventureCommand::Choose { + choice: (*id).into(), + })?), + ["save"] => { + game.save_file(slot)?; + Ok("Saved checkpoint.".into()) + } + ["load"] => { + game.load_file(slot)?; + Ok("Loaded checkpoint.".into()) + } + ["new"] => { + *game = new_game(); + Ok("Started a new game.".into()) + } + ["look"] => Ok(String::new()), + [number] if number.parse::().is_ok() => { + let i = number + .parse::()? + .checked_sub(1) + .ok_or("Numbers start at 1")?; + let command = if game.state().dialogue.is_some() { + AdventureCommand::Choose { + choice: game + .available_choices() + .get(i) + .ok_or("No choice at that number")? + .id + .clone(), + } + } else { + AdventureCommand::Interact { + hotspot: game + .visible_hotspots() + .get(i) + .ok_or("No hotspot at that number")? + .id + .clone(), + } + }; + Ok(game.apply(command)?) + } + _ => Err("Use a number, click ID, choose ID, look, save, load, new, or quit".into()), + } +} + +fn play(reader: impl BufRead, game: &mut Game, slot: &Path, walkthrough: bool) -> Result<()> { + let mut checkpoint = None; + show(game); + for line in reader.lines() { + let line = line?; + let line = line.trim(); + if line.is_empty() || line.starts_with('#') { + continue; + } + println!("\n> {line}"); + if line == "quit" { + break; + } + match execute(game, line, slot) { + Ok(text) => println!("{text}"), + Err(e) if walkthrough => { + return Err(format!("walkthrough command '{line}' failed: {e}").into()) + } + Err(e) => eprintln!("{e}"), + } + if walkthrough { + if line == "save" { + checkpoint = Some(game.state().clone()); + } + if line == "load" { + assert_eq!( + Some(game.state()), + checkpoint.as_ref(), + "complete saved state must survive a fresh game" + ); + println!("Verified: room, inventory, flags, dialogue, history and ending match checkpoint."); + } + } + show(game); + io::stdout().flush()?; + } + if walkthrough { + assert_eq!(game.state().ending.as_deref(), Some("safe_harbor")); + assert_eq!(game.state().room, "lantern"); + assert!(game.state().inventory.contains("key")); + assert!(!game.state().inventory.contains("fuse")); + println!("\nWALKTHROUGH PASS: safe_harbor reached and restored from disk."); + } + Ok(()) +} + +fn main() -> Result<()> { + let args: Vec<_> = std::env::args().skip(1).collect(); + println!( + "THE LAST LIGHT / PACE\nCommands: number, click ID, choose ID, look, save, load, new, quit" + ); + let mut game = new_game(); + if args.as_slice() == ["--walkthrough"] { + // Never overwrite a player's slot during the automated demonstration. + let dir = tempfile::tempdir()?; + play( + io::Cursor::new(include_str!("../assets/last-light/walkthrough.txt")), + &mut game, + &dir.path().join("demo.json"), + true, + ) + } else if args.is_empty() { + play( + io::stdin().lock(), + &mut game, + Path::new("last_light.save.json"), + false, + ) + } else { + Err("Usage: cargo run --example console -- [--walkthrough]".into()) + } +} diff --git a/examples/last_light.rs b/examples/last_light.rs index 240cc94..3aa7e9b 100644 --- a/examples/last_light.rs +++ b/examples/last_light.rs @@ -15,10 +15,14 @@ const PANEL: Color = Color::srgb(0.1, 0.15, 0.18); struct Screen; #[derive(Resource)] struct Status(String); +#[derive(Resource)] +struct SavePath(std::path::PathBuf); #[derive(Message, Clone)] enum PlayerInput { Act(AdventureCommand), Restart, + Save, + Load, } fn main() -> Result<(), Box> { @@ -28,6 +32,9 @@ fn main() -> Result<(), Box> { }; let game = Game::new(Scene::from_json(&json)?); let title = game.scene().title.clone(); + let save_path = std::env::args() + .nth(2) + .unwrap_or_else(|| format!("{}.save.json", game.scene().game_id)); App::new() .add_plugins(DefaultPlugins.set(WindowPlugin { primary_window: Some(Window { @@ -44,6 +51,7 @@ fn main() -> Result<(), Box> { })) .insert_resource(ClearColor(INK)) .insert_resource(game) + .insert_resource(SavePath(save_path.into())) .insert_resource(Status( "Click a labeled hotspot, or press its number. Bring the boat home.".into(), )) @@ -67,6 +75,14 @@ fn keyboard( game: Res, mut input: MessageWriter, ) { + if keys.just_pressed(KeyCode::F5) { + input.write(PlayerInput::Save); + return; + } + if keys.just_pressed(KeyCode::F9) { + input.write(PlayerInput::Load); + return; + } if keys.just_pressed(KeyCode::KeyN) { input.write(PlayerInput::Restart); return; @@ -110,6 +126,7 @@ fn player_input( mut actions: MessageWriter, mut game: ResMut, mut status: ResMut, + path: Res, ) { // At most one UI action per frame, avoiding stale double-click/keyboard actions. if let Some(input) = input.read().next() { @@ -121,6 +138,18 @@ fn player_input( *game = Game::new(game.scene().clone().validate().expect("already validated")); status.0 = "A new evening on the quay. Find a way to light the beacon.".into(); } + PlayerInput::Save => { + status.0 = match game.save_file(&path.0) { + Ok(()) => format!("Saved to {}", path.0.display()), + Err(e) => format!("Save failed: {e}"), + }; + } + PlayerInput::Load => { + status.0 = match game.load_file(&path.0) { + Ok(()) => format!("Loaded {}", path.0.display()), + Err(e) => format!("Load failed: {e}"), + }; + } } } input.clear(); @@ -205,7 +234,11 @@ fn redraw( p.spawn(label("PACE / A THREE-ROOM ADVENTURE", 13.0, GOLD)); p.spawn(label(&game.scene().title, 32.0, PAPER)); }); - button(header, "New game [N]", PlayerInput::Restart, button_node()); + header.spawn(Node { column_gap: px(8), ..default() }).with_children(|p| { + button(p, "Save [F5]", PlayerInput::Save, button_node()); + button(p, "Load [F9]", PlayerInput::Load, button_node()); + button(p, "New [N]", PlayerInput::Restart, button_node()); + }); }); root.spawn(label(&room.name, 24.0, GOLD)); root.spawn((label(&room.description, 17.0, PAPER), Node { min_height: px(48), ..default() })); diff --git a/src/lib.rs b/src/lib.rs index 92772a0..40e4e48 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ pub mod build; pub mod debug; pub mod runtime; +pub mod save; pub mod scene; diff --git a/src/save.rs b/src/save.rs new file mode 100644 index 0000000..3e35341 --- /dev/null +++ b/src/save.rs @@ -0,0 +1,217 @@ +//! Versioned saves, validated before replacing live state; atomic file replacement. +use crate::{runtime::*, scene::*}; +use serde::{Deserialize, Serialize}; +use sha2::{Digest, Sha256}; +use std::{fmt, io::Write, path::Path}; + +pub const SAVE_VERSION: u32 = 1; + +#[derive(Deserialize, Serialize)] +#[serde(deny_unknown_fields)] +struct Save { + save_version: u32, + game_id: String, + scene_fingerprint: String, + state: GameState, +} + +#[derive(Debug)] +pub struct SaveError(pub String); +impl fmt::Display for SaveError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(&self.0) + } +} +impl std::error::Error for SaveError {} + +fn fingerprint(scene: &Scene) -> String { + // Typed serialization fixes field order and expands defaults. Whitespace and + // object-key order in the source file do not invalidate an otherwise identical scene. + let bytes = serde_json::to_vec(scene).expect("validated scene is serializable"); + format!("{:x}", Sha256::digest(bytes)) +} + +impl Game { + pub fn save_json(&self) -> Result { + serde_json::to_string_pretty(&Save { + save_version: SAVE_VERSION, + game_id: self.scene().game_id.clone(), + scene_fingerprint: fingerprint(self.scene()), + state: self.state.clone(), + }) + .map_err(|e| SaveError(format!("could not serialize save: {e}"))) + } + + /// Failure leaves the live game untouched, including an active conversation. + pub fn load_json(&mut self, json: &str) -> Result<(), SaveError> { + let header: serde_json::Value = serde_json::from_str(json) + .map_err(|e| SaveError(format!("$: invalid save JSON: {e}")))?; + if let Some(version) = header.get("save_version").and_then(|v| v.as_u64()) { + if version != u64::from(SAVE_VERSION) { + return Err(SaveError(format!( + "$.save_version: unsupported save version {version}; expected {SAVE_VERSION}" + ))); + } + } + let mut de = serde_json::Deserializer::from_str(json); + let save: Save = serde_path_to_error::deserialize(&mut de) + .map_err(|e| SaveError(format!("$.{}: {}", e.path(), e.inner())))?; + if save.game_id != self.scene().game_id { + return Err(SaveError(format!( + "$.game_id: save belongs to '{}', expected '{}'", + save.game_id, + self.scene().game_id + ))); + } + if save.scene_fingerprint != fingerprint(self.scene()) { + return Err(SaveError("$.scene_fingerprint: scene content has changed; this save is incompatible (no v1 migration)".into())); + } + validate_state(self.scene(), &save.state)?; + self.state = save.state; + Ok(()) + } + + /// Writes/syncs a temporary file in the destination directory, then atomically + /// replaces the slot. Serialization/write/rename failures preserve the old file. + pub fn save_file(&self, path: impl AsRef) -> Result<(), SaveError> { + let path = path.as_ref(); + let json = self.save_json()?; + let io_error = |e: std::io::Error| SaveError(format!("{}: {e}", path.display())); + let parent = path + .parent() + .filter(|p| !p.as_os_str().is_empty()) + .unwrap_or(Path::new(".")); + let mut temp = tempfile::NamedTempFile::new_in(parent).map_err(io_error)?; + temp.write_all(json.as_bytes()).map_err(io_error)?; + temp.as_file().sync_all().map_err(io_error)?; + temp.persist(path).map_err(|e| io_error(e.error))?; + Ok(()) + } + + pub fn load_file(&mut self, path: impl AsRef) -> Result<(), SaveError> { + let path = path.as_ref(); + let json = std::fs::read_to_string(path) + .map_err(|e| SaveError(format!("{}: {e}", path.display())))?; + self.load_json(&json) + .map_err(|e| SaveError(format!("{}: {e}", path.display()))) + } +} + +fn validate_state(scene: &Scene, state: &GameState) -> Result<(), SaveError> { + let mut errors = Vec::new(); + let mut check = |valid: bool, path: &str, message: String| { + if !valid { + errors.push(Diagnostic { + path: format!("$.state.{path}"), + message, + }); + } + }; + check( + scene.rooms.iter().any(|r| r.id == state.room), + "room", + format!("unknown room '{}'", state.room), + ); + for (i, item) in state.inventory.iter().enumerate() { + check( + scene.items.iter().any(|x| &x.id == item), + &format!("inventory[{i}]"), + format!("unknown item '{item}'"), + ); + } + for (i, flag) in state.flags.iter().enumerate() { + check( + scene.flags.contains(flag), + &format!("flags[{i}]"), + format!("unknown flag '{flag}'"), + ); + } + for (i, h) in state.used_hotspots.iter().enumerate() { + let hotspot = scene + .rooms + .iter() + .find(|r| r.id == h.room) + .and_then(|r| r.hotspots.iter().find(|x| x.id == h.hotspot)); + check( + hotspot.is_some_and(|h| h.once), + &format!("used_hotspots[{i}]"), + format!( + "expected existing one-shot hotspot '{}/{}'", + h.room, h.hotspot + ), + ); + } + let node = |p: &DialoguePosition| { + scene + .dialogues + .iter() + .find(|d| d.id == p.dialogue) + .and_then(|d| d.nodes.iter().find(|n| n.id == p.node)) + }; + for (i, p) in state.visited_nodes.iter().enumerate() { + check( + node(p).is_some(), + &format!("visited_nodes[{i}]"), + format!("unknown dialogue/node '{}/{}'", p.dialogue, p.node), + ); + } + for (i, c) in state.chosen_choices.iter().enumerate() { + let p = DialoguePosition { + dialogue: c.dialogue.clone(), + node: c.node.clone(), + }; + check( + node(&p).is_some_and(|n| n.choices.iter().any(|x| x.id == c.choice)), + &format!("chosen_choices[{i}]"), + format!("unknown choice '{}/{}/{}'", c.dialogue, c.node, c.choice), + ); + check( + state.visited_nodes.contains(&p), + &format!("chosen_choices[{i}]"), + "chosen choice's node must have been visited".into(), + ); + } + if let Some(p) = &state.dialogue { + check( + node(p).is_some(), + "dialogue", + format!("unknown dialogue/node '{}/{}'", p.dialogue, p.node), + ); + check( + state.visited_nodes.contains(p), + "dialogue", + "active node must have been visited".into(), + ); + check( + state.ending.is_none(), + "dialogue", + "an ended game cannot have active dialogue".into(), + ); + check(scene.rooms.iter().find(|r| r.id == state.room).is_some_and(|r| r.hotspots.iter().any(|h| matches!(&h.outcome, Outcome::Dialogue { dialogue } if dialogue == &p.dialogue))), "dialogue", "active dialogue must belong to a hotspot in the current room".into()); + } + if let Some(ending) = &state.ending { + check( + scene.endings.iter().any(|e| &e.id == ending), + "ending", + format!("unknown ending '{ending}'"), + ); + check( + scene + .rooms + .iter() + .find(|r| r.id == state.room) + .is_some_and(|r| { + r.hotspots + .iter() + .any(|h| matches!(&h.outcome, Outcome::End { ending: e } if e == ending)) + }), + "ending", + "ending must belong to a hotspot in the current room".into(), + ); + } + if errors.is_empty() { + Ok(()) + } else { + Err(SaveError(Diagnostics(errors).to_string())) + } +} diff --git a/tests/save_load.rs b/tests/save_load.rs new file mode 100644 index 0000000..24274cf --- /dev/null +++ b/tests/save_load.rs @@ -0,0 +1,199 @@ +use pace_core::{runtime::*, scene::Scene}; +use serde_json::{json, Value}; + +fn game() -> Game { + Game::new(Scene::from_json(include_str!("../assets/last-light/game.json")).unwrap()) +} +fn hit(g: &mut Game, id: &str) { + g.apply(AdventureCommand::Interact { hotspot: id.into() }) + .unwrap(); +} +fn choose(g: &mut Game, id: &str) { + g.apply(AdventureCommand::Choose { choice: id.into() }) + .unwrap(); +} +fn talking() -> Game { + let mut g = game(); + hit(&mut g, "crate"); + hit(&mut g, "workshop"); + hit(&mut g, "keeper"); + choose(&mut g, "help"); + g +} + +#[test] +fn fresh_instance_resumes_every_step_to_ending() { + let mut g = game(); + let steps = [ + (false, "crate"), + (false, "workshop"), + (false, "keeper"), + (true, "help"), + (true, "accept"), + (false, "stairs"), + (false, "panel"), + (false, "beacon"), + ]; + for (is_choice, id) in steps { + if is_choice { + choose(&mut g, id); + } else { + hit(&mut g, id); + } + let json = g.save_json().unwrap(); + let mut loaded = game(); + loaded.load_json(&json).unwrap(); + assert_eq!(loaded.state(), g.state(), "after {id}"); + assert_eq!( + loaded.save_json().unwrap(), + json, + "deterministic serialization" + ); + g = loaded; + } + assert_eq!(g.state().ending.as_deref(), Some("safe_harbor")); + assert!(!g.state().inventory.contains("fuse")); + assert!(g.state().inventory.contains("key")); + assert_eq!(g.state().room, "lantern"); + assert_eq!(g.state().visited_nodes.len(), 2); + assert_eq!(g.state().chosen_choices.len(), 2); + assert_eq!(g.state().used_hotspots.len(), 2); + assert!(g + .apply(AdventureCommand::Interact { + hotspot: "workshop".into() + }) + .is_err()); +} + +#[test] +fn file_save_resumes_room_inventory_and_active_dialogue_and_overwrites_slot() { + let dir = tempfile::tempdir().unwrap(); + let path = dir.path().join("slot.json"); + let original = talking(); + original.save_file(&path).unwrap(); + let mut g = game(); + g.load_file(&path).unwrap(); + assert_eq!(g.state(), original.state()); + assert_eq!(g.state().room, "workshop"); + assert!(g.state().inventory.contains("fuse")); + assert_eq!(g.active_node().unwrap().id, "instructions"); + choose(&mut g, "accept"); + g.save_file(&path).unwrap(); + let mut reloaded = game(); + reloaded.load_file(&path).unwrap(); + assert_eq!(reloaded.state(), g.state()); + // A consumed dialogue choice and pickup stay consumed after loading. + hit(&mut reloaded, "keeper"); + choose(&mut reloaded, "help"); + assert_eq!(reloaded.available_choices().len(), 1); + choose(&mut reloaded, "leave"); + hit(&mut reloaded, "quay"); + assert!(reloaded.visible_hotspots().iter().all(|h| h.id != "crate")); + assert_eq!( + std::fs::read_dir(dir.path()).unwrap().count(), + 1, + "temporary file cleaned up" + ); +} + +#[test] +fn incompatible_or_corrupt_loads_leave_live_state_unchanged() { + let mut g = talking(); + let before = g.state().clone(); + let good: Value = serde_json::from_str(&g.save_json().unwrap()).unwrap(); + for (pointer, value, expected) in [ + ("/save_version", json!(99), "unsupported save version"), + ("/game_id", json!("another_game"), "save belongs to"), + ( + "/scene_fingerprint", + json!("bad"), + "scene content has changed", + ), + ("/state/room", json!("missing"), "$.state.room"), + ("/state/inventory", json!(["missing"]), "$.state.inventory"), + ("/state/flags", json!(["missing"]), "$.state.flags"), + ( + "/state/used_hotspots", + json!([{"room":"quay","hotspot":"workshop"}]), + "one-shot hotspot", + ), + ("/state/dialogue/node", json!("missing"), "$.state.dialogue"), + ( + "/state/dialogue/dialogue", + json!("missing"), + "$.state.dialogue", + ), + ("/state/visited_nodes", json!([]), "must have been visited"), + ( + "/state/chosen_choices", + json!([{"dialogue":"keeper","node":"greeting","choice":"missing"}]), + "unknown choice", + ), + ( + "/state/ending", + json!("safe_harbor"), + "ended game cannot have active dialogue", + ), + ("/state/ending", json!("missing"), "unknown ending"), + ] { + let mut bad = good.clone(); + *bad.pointer_mut(pointer).unwrap() = value; + let error = g.load_json(&bad.to_string()).unwrap_err().to_string(); + assert!(error.contains(expected), "{pointer}: {error}"); + assert_eq!(g.state(), &before, "{pointer}"); + } + for invalid in [ + "{", + "{}", + "null", + "{\"save_version\":1,\"unexpected\":true}", + ] { + assert!(g.load_json(invalid).is_err()); + assert_eq!(g.state(), &before); + } +} + +#[test] +fn changed_scene_rejected_but_json_formatting_and_key_order_do_not_matter() { + let g = talking(); + let json = g.save_json().unwrap(); + let reformatted = serde_json::to_string(&serde_json::to_value(g.scene()).unwrap()).unwrap(); + let mut same = Game::new(Scene::from_json(&reformatted).unwrap()); + same.load_json(&json).unwrap(); + assert_eq!(same.state(), g.state()); + let mut scene = g.scene().clone(); + scene.rooms[0].name = "Different content".into(); + let mut changed = Game::new(scene.validate().unwrap()); + assert!(changed + .load_json(&json) + .unwrap_err() + .to_string() + .contains("fingerprint")); +} + +#[test] +fn io_errors_are_reported_without_mutating_game_or_other_slots() { + let dir = tempfile::tempdir().unwrap(); + let path = dir.path().join("slot.json"); + let mut g = talking(); + g.save_file(&path).unwrap(); + let bytes = std::fs::read(&path).unwrap(); + let before = g.state().clone(); + let missing = dir.path().join("missing/slot.json"); + assert!(g + .save_file(&missing) + .unwrap_err() + .to_string() + .contains("missing")); + assert!(g.save_file(dir.path()).is_err()); // rename must not replace a directory + assert!(g.load_file(&missing).is_err()); + assert_eq!(g.state(), &before); + assert_eq!(std::fs::read(&path).unwrap(), bytes); + std::fs::write(&path, "truncated{").unwrap(); + assert!(g + .load_file(&path) + .unwrap_err() + .to_string() + .contains("slot.json")); + assert_eq!(g.state(), &before); +}