From 4166dbf9072e74c2f3e093461d6abc1b06af8475 Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Thu, 27 Apr 2023 19:20:41 -0400 Subject: [PATCH] spockalicious (#2751) * Rough mockup of LUS XML loading * Updated code for merge * Loading from FS support and custom DList WIP implementation * Added current directory support to F3D and impl most of the dlist cmds * WIP Skeleton support * Almost done * Rebase fixes * Submodule updates * HD Texture Support * Fixes * bump lus * fix exporter build, header update * soh builds * setMesh image path cleanup * Update soh/src/overlays/actors/ovl_player_actor/z_player.c * Update soh/src/overlays/actors/ovl_player_actor/z_player.c * Update OTRExporter/OTRExporter/Main.cpp * Update ZAPDTR/ZAPD/ZResource.h * Update soh/src/code/z_skelanime.c * Update OTRExporter/OTRExporter/Main.cpp * Fixed jpeg backgrounds and decreased icon buffer size * Bump lus * Increased even more the buffer because it crashes on long texts * Removed print because sometimes the if is not triggered when the image is already byteswapped * fix non-windows build * fix build Co-authored-by: Kenix * add hd checkbox * Various fixes for custom model support (#23) * Some fixes * Updated LUS Version * Fixed issue with Link Skirt on pause menu * Added CVar for custom link model changes * Fixed headers * Additional header fixes * Tweaks * Unload HD game assets on scene transition. (#16) * Unload game assets on scene transition. * Bump LUS * Unloads all HD assets on scene transition. * Only unload hd assets if hd assets are turned on. * Fixes issues on toggling between HD and non HD assets. --------- Co-authored-by: briaguya * fix: actually load hd debug font (#27) * fix: actually load hd debug font * toggle debug text correctly --------- Co-authored-by: briaguya * Yes. (#28) * Merge branch 'develop' into dev-to-ghost * HD Skeleton Swapping and Language Fixes (#32) * Yes. * HD Skeleton Swapping and Language Fixes * Test * Fixed issues with ganon cape (#34) * Fixed Bongo Bongo Crash (#35) * Added HD Assets Toggle (#37) * Ivan the Fairy - Coop Mode (#36) * wip * hookshotable ivan * added hookshot item * new items & changes & fixes & restored navi * farore, din and nayru's spells are done * fixed slingshot & bow * added more items supported * done with all main items * bug fixes & ready * added imgui button * wip * hookshotable ivan * added hookshot item * new items & changes & fixes & restored navi * farore, din and nayru's spells are done * fixed slingshot & bow * added more items supported * fix own dungeon items on shuffled boss rooms (#2683) * bump lus (#2692) * fix: lowercase package names for vcpkg (#2693) vcpkg was throwing an error `error: invalid character in package name (must be lowercase, digits, '-')` this updates our calls to `vcpkg_install_packages` to use lowercase package names instead of uppercase * fix death mountain cloud in rando (#2691) * Fix: Switch Age No Longer Reloads Start Room (#2679) * [Reduced Clutter] Disable Hot/Underwater Warning Text (#2684) * Disable Warning Text * Moved to Reduced Clutter * done with all main items * bug fixes & ready * fix: process roms in consistent order (#2696) * chore: move rando savefile setup and document flags (#2697) * remove rando save init from sram * move rando savefile init logic and set more flags * document flags for rando save creation * Fix: Use correct fps value for frame interpolation with match refresh rate (#2694) * Fix: Kak GS placement on construction site (#2695) * added imgui button * addressed kenix's comments * fixed useless null * added rupee dash mode in extra modes * changed menu position --------- Co-authored-by: Adam Bird Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com> Co-authored-by: Patrick12115 <115201185+Patrick12115@users.noreply.github.com> * LUS Scancodes (#42) * Added HD Assets Toggle * Switched out SDL for LUS scancodes * Ivan tweaks (#45) * Magic consumption slowed down; Bosses now affected by Ivan's Din spell * Adjust magic timer * clean up imgui * model fixes/improvements (#50) * replace `gUseCustomLinkModel` with custom resource check * handle adult/child * bump lus * fix model switching with tab * use lus main * fix carpet man (#52) Co-authored-by: Rozelette * get ship model and lus texture into soh.otr, use `gAuthenticLogo` to toggle between ship and authentic (#55) * Use libultra features for CPU-modified textures (#40) * Use libultra features for CPU-modified textures * Comment * bump lus on ghost (#58) * fix: properly use `Interface_LoadActionLabel` to display start button text (#61) * Changes hd -> alt for texture replacement. (#65) * Changes hd -> alt for texture replacement. * Renames variables in gfxprint for hd -> alt change. * Update soh/soh/resource/type/Skeleton.cpp --------- Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> * Fixes kaleido dungeon maps (#67) * skeleton stuff (#69) * comment out wii u build (#70) * bump lus (#71) * Rework readme (#72) * Update README.md * docs * put custom music docs somewhere * Update README.md * Update README.md * Update README.md * Update README.md * dark/light title image * lus * Update README.md * Fixed vanilla minimap (#73) * Fixed vanilla minimap * Workaround for pulsing SD maps with non-broken HD maps. --------- Co-authored-by: Christopher Leggett * Skeleton fix fixed (#75) * WIP skelton patcher fix * Fixes skeleton reference change. * Adds const back to name in ResourceMgr_LoadSkeletonByName --------- Co-authored-by: Christopher Leggett Co-authored-by: Kenix * Fixes z_message_otr memory leak. * Update soh/soh/z_message_OTR.cpp * Update soh/src/code/game.c * docs: add how to find otr files to switch instructions (#78) * bump lus (#79) * comment out RegisterBlendedTexture in king d (#80) --------- Co-authored-by: Nicholas Estelami Co-authored-by: David Chavez Co-authored-by: briaguya Co-authored-by: Kenix3 Co-authored-by: KiritoDv Co-authored-by: briaguya Co-authored-by: Ralphie Morell Co-authored-by: MelonSpeedruns Co-authored-by: Adam Bird Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com> Co-authored-by: Patrick12115 <115201185+Patrick12115@users.noreply.github.com> Co-authored-by: Rozelette Co-authored-by: Christopher Leggett Co-authored-by: Lywx <36680385+KiritoDv@users.noreply.github.com> --- .github/workflows/generate-builds.yml | 82 +- .../OTRExporter/DisplayListExporter.cpp | 4 +- OTRExporter/OTRExporter/Main.cpp | 6 + .../textures/nintendo_rogo_static/SoHShiny | Bin 0 -> 1116 bytes .../textures/nintendo_rogo_static/gShipLogoDL | 21 + .../nintendo_rogo_static/gShipLogoDL_tri_0 | 241 +++++ .../nintendo_rogo_static/gShipLogoDL_tri_1 | 80 ++ .../nintendo_rogo_static/gShipLogoDL_tri_2 | 259 ++++++ .../nintendo_rogo_static/gShipLogoDL_tri_3 | 118 +++ .../nintendo_rogo_static/gShipLogoDL_vtx_0 | 335 +++++++ .../nintendo_rogo_static/gShipLogoDL_vtx_1 | 98 ++ .../nintendo_rogo_static/gShipLogoDL_vtx_2 | 323 +++++++ .../nintendo_rogo_static/gShipLogoDL_vtx_3 | 128 +++ .../mat_gShipLogoDL_f3d_material | 20 + .../mat_gShipLogoDL_f3d_material_001 | 20 + .../mat_gShipLogoDL_f3d_material_002 | 20 + .../mat_gShipLogoDL_f3d_material_003 | 20 + .../mat_revert_gShipLogoDL_f3d_material | 8 + .../mat_revert_gShipLogoDL_f3d_material_001 | 8 + .../mat_revert_gShipLogoDL_f3d_material_002 | 8 + .../mat_revert_gShipLogoDL_f3d_material_003 | 8 + .../nintendo_rogo_static_Tex_LUS_000000 | Bin 0 -> 6291548 bytes .../textures/virtual/gEmptyTexture.rgba32.png | Bin 0 -> 194 bytes README.md | 232 ++--- ZAPDTR/ZAPD/Globals.h | 3 + ZAPDTR/ZAPD/ZFile.cpp | 14 +- ZAPDTR/ZAPD/ZFile.h | 1 + BUILDING.md => docs/BUILDING.md | 0 docs/CREDITS.md | 45 + docs/CUSTOM_MUSIC.md | 24 + docs/VERSIONING.md | 5 + docs/poweredbylus.darkmode.png | Bin 0 -> 213165 bytes docs/poweredbylus.lightmode.png | Bin 0 -> 210989 bytes docs/shiptitle.darkmode.png | Bin 0 -> 34642 bytes docs/shiptitle.lightmode.png | Bin 0 -> 33072 bytes libultraship | 2 +- .../textures/boss_title_cards/.gitempty | 0 .../textures/boss_title_cards/object_bv.h | 31 +- .../textures/boss_title_cards/object_fd.h | 31 +- .../textures/boss_title_cards/object_fhg.h | 31 +- .../textures/boss_title_cards/object_ganon.h | 31 +- .../textures/boss_title_cards/object_ganon2.h | 31 +- .../textures/boss_title_cards/object_goma.h | 31 +- .../boss_title_cards/object_kingdodongo.h | 31 +- .../textures/boss_title_cards/object_mo.h | 31 +- .../textures/boss_title_cards/object_sst.h | 31 +- .../textures/boss_title_cards/object_tw.h | 31 +- .../xml/GC_MQ_D/textures/boss_title_cards.xml | 52 ++ .../GC_NMQ_D/textures/boss_title_cards.xml | 52 ++ .../textures/boss_title_cards.xml | 52 ++ soh/include/functions.h | 3 +- soh/include/tables/actor_table.h | 1 + soh/include/z64.h | 14 +- soh/include/z64player.h | 2 + soh/soh/GameMenuBar.cpp | 89 +- soh/soh/GbiWrap.cpp | 32 +- soh/soh/OTRGlobals.cpp | 86 +- soh/soh/OTRGlobals.h | 8 +- soh/soh/resource/importer/SkeletonFactory.cpp | 77 ++ soh/soh/resource/importer/SkeletonFactory.h | 5 + .../resource/importer/SkeletonLimbFactory.cpp | 77 ++ .../resource/importer/SkeletonLimbFactory.h | 5 + soh/soh/resource/importer/TextFactory.cpp | 46 + soh/soh/resource/importer/TextFactory.h | 5 + soh/soh/resource/type/Skeleton.cpp | 60 ++ soh/soh/resource/type/Skeleton.h | 20 + soh/soh/z_message_OTR.cpp | 43 +- soh/src/code/game.c | 10 + soh/src/code/gfxprint.c | 33 +- soh/src/code/z_actor.c | 61 +- soh/src/code/z_cheap_proc.c | 10 +- soh/src/code/z_collision_check.c | 10 +- soh/src/code/z_construct.c | 10 +- soh/src/code/z_fcurve_data_skelanime.c | 2 +- soh/src/code/z_kanfont.c | 6 +- soh/src/code/z_map_exp.c | 47 +- soh/src/code/z_message_PAL.c | 23 +- soh/src/code/z_parameter.c | 142 +-- soh/src/code/z_play.c | 6 + soh/src/code/z_player_lib.c | 25 +- soh/src/code/z_room.c | 44 +- soh/src/code/z_skelanime.c | 8 +- soh/src/code/z_skin_awb.c | 2 +- .../actors/ovl_Boss_Dodongo/z_boss_dodongo.c | 147 +-- .../overlays/actors/ovl_Boss_Fd/z_boss_fd.c | 3 +- .../overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c | 2 +- .../actors/ovl_Boss_Ganon/z_boss_ganon.c | 27 +- .../actors/ovl_Boss_Ganon2/z_boss_ganon2.c | 5 +- .../ovl_Boss_Ganondrof/z_boss_ganondrof.c | 101 +- .../actors/ovl_Boss_Goma/z_boss_goma.c | 76 +- .../overlays/actors/ovl_Boss_Mo/z_boss_mo.c | 5 +- .../overlays/actors/ovl_Boss_Sst/z_boss_sst.c | 3 +- .../overlays/actors/ovl_Boss_Tw/z_boss_tw.c | 5 +- .../overlays/actors/ovl_Boss_Va/z_boss_va.c | 3 +- soh/src/overlays/actors/ovl_En_Box/z_en_box.c | 22 +- .../ovl_En_Ganon_Mant/z_en_ganon_mant.c | 20 +- .../overlays/actors/ovl_En_Goma/z_en_goma.c | 2 +- .../actors/ovl_En_Jsjutan/z_en_jsjutan.c | 10 +- soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c | 54 +- .../actors/ovl_En_Partner/z_en_partner.c | 878 ++++++++++++++++++ .../actors/ovl_En_Partner/z_en_partner.h | 48 + soh/src/overlays/actors/ovl_En_fHG/z_en_fhg.c | 3 +- .../actors/ovl_player_actor/z_player.c | 44 +- .../ovl_file_choose/z_file_choose.c | 117 +-- .../overlays/gamestates/ovl_title/z_title.c | 25 +- .../ovl_kaleido_scope/z_kaleido_map_PAL.c | 31 +- .../ovl_kaleido_scope/z_kaleido_scope_PAL.c | 62 +- 107 files changed, 4130 insertions(+), 1174 deletions(-) create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/SoHShiny create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_0 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_1 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_2 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_3 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_0 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_1 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_2 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_3 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_001 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_002 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_003 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_001 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_002 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_003 create mode 100644 OTRExporter/assets/textures/nintendo_rogo_static/nintendo_rogo_static_Tex_LUS_000000 create mode 100644 OTRExporter/assets/textures/virtual/gEmptyTexture.rgba32.png rename BUILDING.md => docs/BUILDING.md (100%) create mode 100644 docs/CREDITS.md create mode 100644 docs/CUSTOM_MUSIC.md create mode 100644 docs/VERSIONING.md create mode 100644 docs/poweredbylus.darkmode.png create mode 100644 docs/poweredbylus.lightmode.png create mode 100644 docs/shiptitle.darkmode.png create mode 100644 docs/shiptitle.lightmode.png create mode 100644 soh/assets/textures/boss_title_cards/.gitempty create mode 100644 soh/assets/xml/GC_MQ_D/textures/boss_title_cards.xml create mode 100644 soh/assets/xml/GC_NMQ_D/textures/boss_title_cards.xml create mode 100644 soh/assets/xml/GC_NMQ_PAL_F/textures/boss_title_cards.xml create mode 100644 soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c create mode 100644 soh/src/overlays/actors/ovl_En_Partner/z_en_partner.h diff --git a/.github/workflows/generate-builds.yml b/.github/workflows/generate-builds.yml index daa99f19f..5e124da35 100644 --- a/.github/workflows/generate-builds.yml +++ b/.github/workflows/generate-builds.yml @@ -229,48 +229,48 @@ jobs: soh.nro soh.otr readme.txt - build-wiiu: - needs: generate-soh-otr - runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }} - container: - image: devkitpro/devkitppc:latest - steps: - - name: Install dependencies - if: ${{ !vars.LINUX_RUNNER }} - run: | - sudo apt-get update - sudo apt-get install -y ninja-build - - uses: actions/checkout@v3 - with: - submodules: true - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ runner.os }}-wiiu-ccache - - name: Build SoH - run: | - cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache - cmake --build build-wiiu --target soh_wuhb --config Release -j3 + # build-wiiu: + # needs: generate-soh-otr + # runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }} + # container: + # image: devkitpro/devkitppc:latest + # steps: + # - name: Install dependencies + # if: ${{ !vars.LINUX_RUNNER }} + # run: | + # sudo apt-get update + # sudo apt-get install -y ninja-build + # - uses: actions/checkout@v3 + # with: + # submodules: true + # - name: ccache + # uses: hendrikmuhs/ccache-action@v1.2 + # with: + # key: ${{ runner.os }}-wiiu-ccache + # - name: Build SoH + # run: | + # cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache + # cmake --build build-wiiu --target soh_wuhb --config Release -j3 - mv build-wiiu/soh/*.rpx soh.rpx - mv build-wiiu/soh/*.wuhb soh.wuhb - mv README.md readme.txt - env: - DEVKITPRO: /opt/devkitpro - DEVKITPPC: /opt/devkitpro/devkitPPC - - name: Download soh.otr - uses: actions/download-artifact@v3 - with: - name: soh.otr - - name: Upload build - uses: actions/upload-artifact@v3 - with: - name: soh-wiiu - path: | - soh.rpx - soh.wuhb - soh.otr - readme.txt + # mv build-wiiu/soh/*.rpx soh.rpx + # mv build-wiiu/soh/*.wuhb soh.wuhb + # mv README.md readme.txt + # env: + # DEVKITPRO: /opt/devkitpro + # DEVKITPPC: /opt/devkitpro/devkitPPC + # - name: Download soh.otr + # uses: actions/download-artifact@v3 + # with: + # name: soh.otr + # - name: Upload build + # uses: actions/upload-artifact@v3 + # with: + # name: soh-wiiu + # path: | + # soh.rpx + # soh.wuhb + # soh.otr + # readme.txt build-windows: needs: generate-soh-otr runs-on: ${{ (vars.WINDOWS_RUNNER && fromJSON(vars.WINDOWS_RUNNER)) || 'windows-latest' }} diff --git a/OTRExporter/OTRExporter/DisplayListExporter.cpp b/OTRExporter/OTRExporter/DisplayListExporter.cpp index 4ac8586df..3a77cba8f 100644 --- a/OTRExporter/OTRExporter/DisplayListExporter.cpp +++ b/OTRExporter/OTRExporter/DisplayListExporter.cpp @@ -15,7 +15,7 @@ #define GFX_SIZE 8 -#define gsDPSetCombineLERP2(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \ +#define gsDPSetCombineLERP_NoMacros(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \ a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ { \ _SHIFTL(G_SETCOMBINE, 24, 8) | \ @@ -607,7 +607,7 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina int32_t ab1 = (data & 0b00000000000000000000000000000000000000000000000000000000111000) >> 3; int32_t ad1 = (data & 0b00000000000000000000000000000000000000000000000000000000000111) >> 0; - Gfx value = {gsDPSetCombineLERP2(a0, b0, c0, d0, aa0, ab0, ac0, ad0, a1, b1, c1, d1, aa1, ab1, ac1, ad1)}; + Gfx value = { gsDPSetCombineLERP_NoMacros(a0, b0, c0, d0, aa0, ab0, ac0, ad0, a1, b1, c1, d1, aa1, ab1, ac1, ad1)}; word0 = value.words.w0; word1 = value.words.w1; } diff --git a/OTRExporter/OTRExporter/Main.cpp b/OTRExporter/OTRExporter/Main.cpp index 85300e6f8..7895fe759 100644 --- a/OTRExporter/OTRExporter/Main.cpp +++ b/OTRExporter/OTRExporter/Main.cpp @@ -259,6 +259,11 @@ static void ExporterResourceEnd(ZResource* res, BinaryWriter& writer) //printf("Exported Resource End %s in %zums\n", res->GetName().c_str(), diff); } +static void ExporterProcessCompilable(tinyxml2::XMLElement* reader) +{ + std::string nodeName = reader->Name(); +} + static void ExporterXMLBegin() { } @@ -285,6 +290,7 @@ void ImportExporters() ExporterSet* exporterSet = new ExporterSet(); exporterSet->processFileModeFunc = ExporterProcessFileMode; exporterSet->parseFileModeFunc = ExporterParseFileMode; + exporterSet->processCompilableFunc = ExporterProcessCompilable; exporterSet->parseArgsFunc = ExporterParseArgs; exporterSet->beginFileFunc = ExporterFileBegin; exporterSet->endFileFunc = ExporterFileEnd; diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/SoHShiny b/OTRExporter/assets/textures/nintendo_rogo_static/SoHShiny new file mode 100644 index 0000000000000000000000000000000000000000..5e5c7b52b922cc2aced6fa61a9c6de8cb01be40c GIT binary patch literal 1116 zcmZQzU|@)F4e@6L((m`Jy$8ZTCeeTms8RunA(|TO85n?=g@Ix1;+03PK74v_Z>>{k zUP@R5gSxp-Y))!ydQM?+>%vXj>S`AsJ%8ckwu#a1MfGLAx{MNPdN!_3cFr#D(T&q) zO?L^Ick;}>$!Q)29)(T0zG{MU>RL7-p@B~3=AKEFHK}4&Jv$FB&NCKKbjc`4a?sQ@ zv$XMu&4_X~RMRnY_cUgd4egxXmTV>_Z6BW&?e6Fk9vbMMQkw0lDJ`p@C@;vuD(94v zo#>(}X&ROs7Z#hImm43HQdJhIBPuQ~%FoHlE~4WV74B`JW#k?i9i5bsnGqS1)!v=w zC?+f+$j!pY!l!EC=IiR>?BpKc=VD`K@9LY=I&F4Cu(E)d5E~N%6PJvhp|O=mSbS1i zYK)Vdkakr2?D=!*L$!qk1c34^d{VM9lDYw@IpsBN-R16z_W9FRubxrnttQ4Nz{SkO zAuK5)t7+vE7M>(#DBP}K4;^E@x5)_}76crj3S2AgCdw%=s!>3N}>I>G=Fx1yKxAP2*ODQVP zP7Lu6iOQckZ+3h4=F{g-Zs`ru(y;fkwv^HLPOfP0tSv}S&n|3TxMjoqIor=&yRdg! zl%9rDWTZKRj6-5+ePeA^ZFOzytWA4&ty{hK+TFVsSLa(;1jT0s2%^O|dU`;QZ}jwl z9^dHc0X@Fa(*t^Zqo)V-_-0|1M@bJT@h!m3#>yqGi<};i<6BgagPD<4NYxxEJ)p!l zP@aK>M_kJQkseUuTabr^k(FCSLK=}CP~)4QlZk_0SV9Jo9?;`kPC;H#9VtDa$2WR< UK#y + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_0 b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_0 new file mode 100644 index 000000000..2986de72b --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_0 @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_1 b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_1 new file mode 100644 index 000000000..2aa9bea6d --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_1 @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_2 b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_2 new file mode 100644 index 000000000..2b8fe0d11 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_2 @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_3 b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_3 new file mode 100644 index 000000000..53edaf74f --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_tri_3 @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_0 b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_0 new file mode 100644 index 000000000..2c2ee793b --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_0 @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_1 b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_1 new file mode 100644 index 000000000..ec462b114 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_1 @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_2 b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_2 new file mode 100644 index 000000000..cc906e23e --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_2 @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_3 b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_3 new file mode 100644 index 000000000..68e4babcf --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/gShipLogoDL_vtx_3 @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material b/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material new file mode 100644 index 000000000..e48b335c0 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_001 b/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_001 new file mode 100644 index 000000000..e98640319 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_001 @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_002 b/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_002 new file mode 100644 index 000000000..b2db72d79 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_002 @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_003 b/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_003 new file mode 100644 index 000000000..be60fd46b --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/mat_gShipLogoDL_f3d_material_003 @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material b/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material new file mode 100644 index 000000000..3cda02a88 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_001 b/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_001 new file mode 100644 index 000000000..3cda02a88 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_001 @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_002 b/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_002 new file mode 100644 index 000000000..3cda02a88 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_002 @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_003 b/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_003 new file mode 100644 index 000000000..3cda02a88 --- /dev/null +++ b/OTRExporter/assets/textures/nintendo_rogo_static/mat_revert_gShipLogoDL_f3d_material_003 @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OTRExporter/assets/textures/nintendo_rogo_static/nintendo_rogo_static_Tex_LUS_000000 b/OTRExporter/assets/textures/nintendo_rogo_static/nintendo_rogo_static_Tex_LUS_000000 new file mode 100644 index 0000000000000000000000000000000000000000..2edcaacb3c9433e786162171be988e44cf246adb GIT binary patch literal 6291548 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 z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N 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 Axc~qF literal 0 HcmV?d00001 diff --git a/OTRExporter/assets/textures/virtual/gEmptyTexture.rgba32.png b/OTRExporter/assets/textures/virtual/gEmptyTexture.rgba32.png new file mode 100644 index 0000000000000000000000000000000000000000..eaf806b71c2ffd1f7020e54bacc43fb9d8149fd8 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enFx=C{F{C2y?Lk9EAn(wEul~6_@(MsEC1A&D YMuvU{#?@Pe>p{kNy85}Sb4q9e0K@ViY5)KL literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 4fe9dafec..318ff7fa5 100644 --- a/README.md +++ b/README.md @@ -1,105 +1,72 @@ -# Welcome to the Ship of Harkinian! +![Ship of Harkinian](docs/shiptitle.darkmode.png#gh-dark-mode-only) +![Ship of Harkinian](docs/shiptitle.lightmode.png#gh-light-mode-only) -A PC port of OoT allowing you to enjoy the game with modern controls, widescreen, high-resolution, gyroscopy and other great features! Setup is simple, let's get started! +## Website -The Ship does not include any copyrighted assets. You are required to provide a supported copy of the game. +Official Website: https://www.shipofharkinian.com/ ## Discord -Official Discord: https://discord.com/invite/BtBmd55HVH +Official Discord: https://discord.com/invite/shipofharkinian -## Quick Start (Windows) +If you're having any trouble after reading through this `README`, feel free ask for help in the Support text channels. Please keep in mind that we do not condone piracy. -1) Download The Ship of Harkinian from [Discord](https://discord.com/invite/BtBmd55HVH). -2) Requires a supported copy of the game (See supported games below). -3) Use `OTRGui.exe` to generate an `oot.otr` archive file. -4) Launch `soh.exe` +# Quick Start -### Supported Games -#### Ocarina of Time Debug PAL GC (not Master Quest) +The Ship does not include any copyrighted assets. You are required to provide a supported copy of the game. + +### 1. Check your `sha1` +You can verify you have a supported copy of the game by checking the `sha1` hash. There are many ways to do this, one of the simplest is using the [`hasher-js`](https://github.com/snarfblam/hasher-js) webapp hosted at https://www.romhacking.net/hash/. + +| Supported Version | `sha1` | +| - | - | +| PAL GC | `0227d7c0074f2d0ac935631990da8ec5914597b4` | +| PAL GC (Debug) | `cee6bc3c2a634b41728f2af8da54d9bf8cc14099` | +| PAL MQ | `079b855b943d6ad8bd1eb026c0ed169ecbdac7da` | +| PAL MQ | `50bebedad9e0f10746a52b07239e47fa6c284d03` | + +### 2. Download The Ship of Harkinian from [Discord](https://discord.com/invite/shipofharkinian) +The latest release is available in the most recent post in the `#downloads` channel. + +### 3. Launch the Game! +#### Windows +* Extract the zip +* Launch `soh.exe` + +#### Linux +* Place your supported copy of the game in the same folder as the appimage. +* Execute `soh.appimage`. You may have to `chmod +x` the appimage via terminal. + +#### macOS +* Run `soh.app`. When prompted, select your supported copy of the game. +* You should see a notification saying `Processing OTR`, then, once the process is complete, you should get a notification saying `OTR Successfully Generated`, then the game should start. + +#### Nintendo Switch +* Run one of the PC releases to generate an `oot.otr` and/or `oot-mq.otr` file. After launching the game on PC, you will be able to find these files in the same directory as `soh.exe` or `soh.appimage`. On macOS, these files can be found in `/Users//Library/Application Support/com.shipofharkinian.soh/` +* Copy the files to your sd card ``` -Build team: `zelda@srd022j` -Build date: `03-02-21 00:49:18` (year-month-day) -sha1: cee6bc3c2a634b41728f2af8da54d9bf8cc14099 -``` -#### Ocarina of Time PAL GameCube -``` -sha1: 0227d7c0074f2d0ac935631990da8ec5914597b4 -``` -#### Ocarina of Time Debug PAL GC MQ (Dungeons will be Master Quest) -``` -Build team: `zelda@srd022j` -Build date: `03-02-21 00:16:31` (year-month-day) -sha1: 079b855b943d6ad8bd1eb026c0ed169ecbdac7da (Produced by decomp) -sha1: 50bebedad9e0f10746a52b07239e47fa6c284d03 (Alternate) +sdcard +└── switch + └── soh + ├── oot-mq.otr + ├── oot.otr + ├── soh.nro + └── soh.otr ``` +* Launch via Atmosphere's `Game+R` launcher method. + +### 4. Play! Congratulations, you are now sailing with the Ship of Harkinian! Have fun! -## About Versions +# Configuration -The Ship of Harkinian's versioning system is a unique system, comprising of a three-numbered version (`x.y.z`) and a version codename. The main version number `x` signifies major feature updates that require a new `oot.otr` file. The version number `y` signifies major feature updates and bugfixes that do not require a new `oot.otr` file. The version number `z` signifies minor updates such as a collection of bugfixes. - -The version codename consists of a sci-fi film character followed by a phonetic alphabet code word. The film character represents a major release version which increments with the major `x` or `y` version bumps. The code word represents a minor release version which increments with the minor `z` version bump. - -## Additional Setup Information - -### Windows Rom Extraction - -* Open `OTRGui.exe` and click on "Open OOT ROM", then select your supported copy of the game (see section "Supported Games"). -* If a second button already exits then `oot.otr` already exists. To prevent overwriting the old `oot.otr` use this button to choose a new game directory. The new directory must not already contain an `oot.otr` to prevent an error. -* When the process completes, you should have an `oot.otr` or `oot-mq.otr` file in your main directory, depending on the version of the game used to build it. - (*NOTE:* You can have both `.otr` files, if you want to! This even allows you to shuffle MQ and vanilla dungeons in the randomizer) - -This process can take up to several minutes, depending on your system hardware. - -Close `OTRGui.exe` when the `Done!` message appears. -If you get another message, then you might have selected the wrong rom. See section "Supported Games". - -### Linux Rom Extraction - -* Place one of the supported roms in the same folder as the appimage (See section "Supported Games"). -* Execute `soh.appimage`. You may have to `chmod +x` the appimage via terminal. -* When the process completes, you should have an `oot.otr` or `oot-mq.otr` file in the same directory as the appimage, and the game should start automatically. - (*NOTE:* You can provide both a vanilla and MQ ROM, if you want to! This even allows you to shuffle MQ and vanilla dungeons in the randomizer) - -This process can take up to several minutes, depending on your system hardware. - -If you get any errors, then you might have selected the wrong rom. See section "Supported Games". - -### MacOS Rom Extraction - -* Run `soh.app`, and when prompted, select one of the supported roms listed above. -* You should see a notification saying `Processing OTR`, then, once the process is complete, you should get a notification saying `OTR Successfully Generated`, then the game should start. - -This process can take up to several minutes, depending on your system hardware. - -If you get an error saying `Incompatible ROM hash`, you have selected the wrong rom. See section "Supported Games". - -### Nintendo Switch Rom Extraction - -* Download the latest PC release of the Ship of Harkinian, and follow the instructions above for generating the `oot.otr` archive on that platform. -* Place the `.nro` and the `oot.otr` archive into a folder called `soh` in your Switch folder on your Switch - -### Nintendo Wii U Rom Extraction - -* Download the latest PC release of the Ship of Harkinian, and follow the instructions above for generating the `oot.otr` archive on that platform. -* Copy the `.rpx` and the `oot.otr` archive to `wiiu/apps/soh` - ---- - -If you're having any trouble, feel free to join our [Discord Server](https://discord.com/invite/BtBmd55HVH) and ask for help in the Support text channels. Please keep in mind that we do not condone piracy. - -### Running The Ship of Harkinian - -For Windows, launch `soh.exe`. For Linux, execute the appimage. For MacOS, launch the app. For Switch, launch the app via Atmosphere's `Game+R` launcher method. For Wii U, launch the `.rpx` file through the homebrew Mii Maker exploit. - -Default keyboard configuration: +### Default keyboard configuration | N64 | A | B | Z | Start | Analog stick | C buttons | D-Pad | | - | - | - | - | - | - | - | - | | Keyboard | X | C | Z | Space | WASD | Arrow keys | TFGH | -Other shortcuts: +### Other shortcuts | Keys | Action | | - | - | | F1 | Toggle menubar | @@ -110,89 +77,32 @@ Other shortcuts: | Alt+Enter | Fullscreen (DirectX) | | Ctrl+R | Reset | +### Graphics Backends Currently, there are three rendering APIs supported: DirectX11 (Windows), OpenGL (all platforms), and Metal (MacOS). You can change which API to use in the `Settings` menu of the menubar, which requires a restart. If you're having an issue with crashing, you can change the API in the `shipofharkinian.json` file by finding the line `gfxbackend:""` and changing the value to `sdl` for OpenGL. DirectX 11 is the default on Windows. -### Custom Music +# Custom Assets -We support importing custom [Seq64](https://github.com/sauraen/seq64) files to replace the in game music and fanfares (Sound effect and instrument replacement is currently not supported). +Custom assets are packed in `.otr` files. To use custom assets, place them in the `mods` folder. -First you will need to prepare a folder with the desired sequences. Every sequence requires two files with the same name and different extensions - a `.seq` Seq64 file and a `.meta` plaintext file. These files can be categorically nested in folders if desired, - Retro will recursively search each subfolder it finds. +If you're interested in creating and/or packing your own custom asset `.otr` files, check out [**retro**](https://github.com/HarbourMasters64/retro)! -The `.meta` file requires two lines - the first line is the name that will be displayed in the SFX editor, and the second line is the instrument set number in `base16` format. For example, if there is a sequence file `Foo.seq` then you need a meta file `Foo.meta` that could contain: -``` -Awesome Name -C -``` +# Development +### Building -Once you have prepared your sequences folder: -1. Download and open [Retro](https://github.com/HarbourMasters/retro/releases). -1. Choose the "Create OTR" option. -1. Choose the "Custom Sequences" option. -1. Using the file selection screen, choose the sequences folder you prepared in the previous instructions. -1. Click the "Stage Files" button. - (*NOTE:* SoH can handle 1024 custom sequence in total. This includes the original music. Keep that in mind!) -1. Click the "Finalize OTR" text in the green footer. -1. Click "Generate OTR" and, using the file selection screen, save the file to the `mods` folder of your SoH installation. - - This `mods` folder should be in the same folder as your `oot.otr` file. +If you want to manually compile SoH, please consult the [building instructions](docs/BUILDING.md). -Assuming you have done everything correctly, boot up SoH and select the SFX Editor from the enhancements dropdown menu. You should now be able to swap out any of the in game sequences/fanfares for the sequences added in your newly generated OTR file. If you have any trouble with this process, please reach out in the support section of the Discord. +### Playtesting +If you want to playtest a continuous integration build, you can find them at the links below. Keep in mind that these are for playtesting only, and you will likely encounter bugs and possibly crashes. -## Building The Ship of Harkinian +* [Windows](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-windows.zip) +* [macOS](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-mac.zip) +* [Linux (performance)](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux-performance.zip) _(requires `glibc 2.35` or newer, but will be more performant than the compatibility build.)_ +* [Linux (compatibility)](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux-compatiblity.zip) _(compatible with most Linux distributions, but may not be as performant as the performance build.)_ +* [Switch](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-switch.zip) -If you want to manually compile SoH, please consult the [building instructions](BUILDING.md). - -## Nightly Builds -If you want to playtest a nightly build, you can find them at the links below. However, keep in mind that these are for playtesting only, and you will likely encounter bugs. Rarely, these builds will crash. - -Nightly builds of Ship of Harkinian are available here: [Windows](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-windows.zip), [macOS](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-mac.zip), [Linux (compatibility*)](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux-compatiblity.zip), [Linux (performance*)](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux-performance.zip), [Switch](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-switch.zip), [Wii U](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-wiiu.zip) - -_*compatibility: compatible with most Linux distributions, but may not be as performant as the perf build._\ -_*performance: requires `glibc 2.35` or newer, but will be more performant than the compat build._ - -## Take The Survey -Want to use cartridge readers in tandem with OTRGui? -Take [this survey](https://retroarchopenhardware.com/survey.php) to increase chances of this becoming reality. - -## The Harbour Masters Are... - - Kenix | Lead Developer/Public Relations - Resource Management Programmer, Audio System Programmer, and General Programmer - Jack Walker | Lead Developer - OTR Format Programmer, Resource Load Programmer, and General Programmer - Louist103 | Developer - Save System Programmer and General Programmer - Emil | Developer - Fast3D Programmer - m4xw | Developer - Shipwright, Throwing Baguettes, and General Programmer - MelonSpeedruns | Developer - General Programmer - Rozlette | Developer - General Programmer - JoshDuMan | Developer - General Programmer - KiritoDev/Lywx | Developer - General Programmer - Theo3 | Developer - General Programmer - Random06457 | Developer - Linux Build - -## Special Thanks - - Decomp & ZAPD | Made this project even possible in the first place! - MNGoldenEagle | Patiently explained audio data formats, encouragement, and founding ZSO which was the first source of the game's code and resource format documentation. - Rrrrry123 | Speedbunner, encouragement, and community moderation - Fierce deity | Encouragement and community moderation - mzxrules | For his contributions to decomp - zel. | For his contributions to decomp - Aloxado | Developer - General Programmer - MegaMech | Developer - General Programmer - Revo | Tester - GCC support and General Testing - zfg | Tester - General Testing - Horseless Headman | Tester - General Testing - Steven Pritchett | Tester - General Testing - Trenton May | Tester - General Testing - Zeldaboy14 | Tester - General Testing, encouragement, and community moderation - Koby Howell | Tester - General Testing - Logg | Tester - General Testing - Taylor Daley | Graphic Design - Can't Sleep | Graphic Design - -## Video Credits - Kenix | Producer / Writer - briaguya | Writer - rainbow_fash | Executive Producer - ReveriePass | Editor - MicTheMicrophone | Gwonam / The King - Amphibibro | Link - AceHeart | Zelda + + + + Powered by libultraship + + diff --git a/ZAPDTR/ZAPD/Globals.h b/ZAPDTR/ZAPD/Globals.h index c599266ef..0fe8e0545 100644 --- a/ZAPDTR/ZAPD/Globals.h +++ b/ZAPDTR/ZAPD/Globals.h @@ -22,6 +22,7 @@ typedef bool (*ExporterSetFuncBool)(ZFileMode fileMode); typedef void (*ExporterSetFuncVoid)(int argc, char* argv[], int& i); typedef void (*ExporterSetFuncVoid2)(const std::string& buildMode, ZFileMode& fileMode); typedef void (*ExporterSetFuncVoid3)(); +typedef void (*ExporterSetFuncVoid4)(tinyxml2::XMLElement* reader); typedef void (*ExporterSetResSave)(ZResource* res, BinaryWriter& writer); class ExporterSet @@ -39,6 +40,8 @@ public: ExporterSetFuncVoid3 endXMLFunc = nullptr; ExporterSetResSave resSaveFunc = nullptr; ExporterSetFuncVoid3 endProgramFunc = nullptr; + + ExporterSetFuncVoid4 processCompilableFunc = nullptr; }; class Globals diff --git a/ZAPDTR/ZAPD/ZFile.cpp b/ZAPDTR/ZAPD/ZFile.cpp index 46264732c..1f4b92bcf 100644 --- a/ZAPDTR/ZAPD/ZFile.cpp +++ b/ZAPDTR/ZAPD/ZFile.cpp @@ -128,6 +128,9 @@ void ZFile::ParseXML(tinyxml2::XMLElement* reader, const std::string& filename) if (reader->Attribute("RangeEnd") != nullptr) rangeEnd = StringHelper::StrToL(reader->Attribute("RangeEnd"), 16); + if (reader->Attribute("Compilable") != nullptr) + isCompilable = true; + if (rangeStart > rangeEnd) HANDLE_ERROR_PROCESS( WarningType::Always, @@ -261,16 +264,19 @@ void ZFile::ParseXML(tinyxml2::XMLElement* reader, const std::string& filename) } nameSet.insert(nameXml); } - + std::string nodeName = std::string(child->Name()); if (nodeMap.find(nodeName) != nodeMap.end()) { ZResource* nRes = nodeMap[nodeName](this); - if (mode == ZFileMode::Extract || mode == ZFileMode::ExternalFile || mode == ZFileMode::ExtractDirectory) - nRes->ExtractFromXML(child, rawDataIndex); - + if (mode == ZFileMode::Extract || mode == ZFileMode::ExternalFile || + mode == ZFileMode::ExtractDirectory) + { + if (!isCompilable) + nRes->ExtractFromXML(child, rawDataIndex); + } switch (nRes->GetResourceType()) { case ZResourceType::Texture: diff --git a/ZAPDTR/ZAPD/ZFile.h b/ZAPDTR/ZAPD/ZFile.h index 7860aa4d3..ae7409061 100644 --- a/ZAPDTR/ZAPD/ZFile.h +++ b/ZAPDTR/ZAPD/ZFile.h @@ -36,6 +36,7 @@ public: std::vector resources; int workerID; + bool isCompilable = false; // Default to using virtual addresses uint32_t segment = 0x80; diff --git a/BUILDING.md b/docs/BUILDING.md similarity index 100% rename from BUILDING.md rename to docs/BUILDING.md diff --git a/docs/CREDITS.md b/docs/CREDITS.md new file mode 100644 index 000000000..10462b49d --- /dev/null +++ b/docs/CREDITS.md @@ -0,0 +1,45 @@ +# Credits + +## The Harbour Masters Are... + + Kenix | Lead Developer/Public Relations - Resource Management Programmer, Audio System Programmer, and General Programmer + Jack Walker | Lead Developer - OTR Format Programmer, Resource Load Programmer, and General Programmer + Louist103 | Developer - Save System Programmer and General Programmer + Emil | Developer - Fast3D Programmer + m4xw | Developer - Shipwright, Throwing Baguettes, and General Programmer + MelonSpeedruns | Developer - General Programmer + Rozlette | Developer - General Programmer + JoshDuMan | Developer - General Programmer + KiritoDev/Lywx | Developer - General Programmer + Theo3 | Developer - General Programmer + Random06457 | Developer - Linux Build + +## Special Thanks + + Decomp & ZAPD | Made this project even possible in the first place! + MNGoldenEagle | Patiently explained audio data formats, encouragement, and founding ZSO which was the first source of the game's code and resource format documentation. + Rrrrry123 | Speedbunner, encouragement, and community moderation + Fierce deity | Encouragement and community moderation + mzxrules | For his contributions to decomp + zel. | For his contributions to decomp + Aloxado | Developer - General Programmer + MegaMech | Developer - General Programmer + Revo | Tester - GCC support and General Testing + zfg | Tester - General Testing + Horseless Headman | Tester - General Testing + Steven Pritchett | Tester - General Testing + Trenton May | Tester - General Testing + Zeldaboy14 | Tester - General Testing, encouragement, and community moderation + Koby Howell | Tester - General Testing + Logg | Tester - General Testing + Taylor Daley | Graphic Design + Can't Sleep | Graphic Design + +## Video Credits + Kenix | Producer / Writer + briaguya | Writer + rainbow_fash | Executive Producer + ReveriePass | Editor + MicTheMicrophone | Gwonam / The King + Amphibibro | Link + AceHeart | Zelda diff --git a/docs/CUSTOM_MUSIC.md b/docs/CUSTOM_MUSIC.md new file mode 100644 index 000000000..f12ed0ecd --- /dev/null +++ b/docs/CUSTOM_MUSIC.md @@ -0,0 +1,24 @@ +### Custom Music + +We support importing custom [Seq64](https://github.com/sauraen/seq64) files to replace the in game music and fanfares (Sound effect and instrument replacement is currently not supported). + +First you will need to prepare a folder with the desired sequences. Every sequence requires two files with the same name and different extensions - a `.seq` Seq64 file and a `.meta` plaintext file. These files can be categorically nested in folders if desired, - Retro will recursively search each subfolder it finds. + +The `.meta` file requires two lines - the first line is the name that will be displayed in the SFX editor, and the second line is the instrument set number in `base16` format. For example, if there is a sequence file `Foo.seq` then you need a meta file `Foo.meta` that could contain: +``` +Awesome Name +C +``` + +Once you have prepared your sequences folder: +1. Download and open [Retro](https://github.com/HarbourMasters/retro/releases). +1. Choose the "Create OTR" option. +1. Choose the "Custom Sequences" option. +1. Using the file selection screen, choose the sequences folder you prepared in the previous instructions. +1. Click the "Stage Files" button. + (*NOTE:* SoH can handle 1024 custom sequence in total. This includes the original music. Keep that in mind!) +1. Click the "Finalize OTR" text in the green footer. +1. Click "Generate OTR" and, using the file selection screen, save the file to the `mods` folder of your SoH installation. + - This `mods` folder should be in the same folder as your `oot.otr` file. + +Assuming you have done everything correctly, boot up SoH and select the SFX Editor from the enhancements dropdown menu. You should now be able to swap out any of the in game sequences/fanfares for the sequences added in your newly generated OTR file. If you have any trouble with this process, please reach out in the support section of the Discord. diff --git a/docs/VERSIONING.md b/docs/VERSIONING.md new file mode 100644 index 000000000..d866997cc --- /dev/null +++ b/docs/VERSIONING.md @@ -0,0 +1,5 @@ +## About Versions + +The Ship of Harkinian's versioning system is a unique system, comprising of a three-numbered version (`x.y.z`) and a version codename. The main version number `x` signifies major feature updates that require a new `oot.otr` file. The version number `y` signifies major feature updates and bugfixes that do not require a new `oot.otr` file. The version number `z` signifies minor updates such as a collection of bugfixes. + +The version codename consists of a sci-fi film character followed by a phonetic alphabet code word. The film character represents a major release version which increments with the major `x` or `y` version bumps. The code word represents a minor release version which increments with the minor `z` version bump. diff --git a/docs/poweredbylus.darkmode.png b/docs/poweredbylus.darkmode.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2660814fdc04be71c078bd4e12800849de5394 GIT binary patch literal 213165 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 z

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 XE#MDywVZnl{iC6(rIPiB`OW_WIlKFS literal 0 HcmV?d00001 diff --git a/docs/poweredbylus.lightmode.png b/docs/poweredbylus.lightmode.png new file mode 100644 index 0000000000000000000000000000000000000000..740675417b594e406d85069d54574f1dceadd7b8 GIT binary patch literal 210989 zcmaI82Rzk#{6Bu=Ms*89M2NDpBAatFv&){x zia7QtA=|~r~_B-$;v9*-IV|5#Fb03!UAH#!aV1B z1yCr3CvQ|8HD3^pO5q5`wCewK%w&dIJV0@9rtYggs1{y$C}9I5?my0-#_njv>~^03d4UL{MnM(sh_wDO)j zR5h^iut52=2I|B!R6oa|(Lc$a-b7XN-l{%=s%AuGsD8Y202P8lSvb4>!+}bsMolbS zk=l#uNP5x3fa-`np0p1YNQMgMl0UgerVwSI_Tc8ZJ=o8vm{b`K-aoKuWL{dI&dcxd zD&C872-18?D`SB23jgO^9qNSW9+WKW;d=5DisUi;-%9(F^lcvJDUhMCwJ+;KuYD6d zlJ~OdnB&|`{~-I|XN$~#3>nTIG}%AQ5g8i6d01hTT(N-)g*rz3`ro>!^wZIi;eip8 zQH$w?ir97Y8EXzH_F3F|QNW%*PzP@`PIu{l|K3J!Q$?16DK$^hMs=y9?&65Lg5CRL zZXalJA^JOuuF9}Ry;ZKh$a4I^pMOrCGJ0FgKjbg9Avj>&@9(h$@2+>d%%E&v%Y=Wx z#ywoKHMDX_yBRcE`^P^5R)kT`^{U67Ye8qf4qnLAIY;j|tNA2Pnd5qubN;i#y-|87sxKW5K#6*%X3 z?jI2g)R9?v+FgC(yx*!{k-R|2gDe&DmOU7m{6w~6ew8tHU+pi@>UzD3HUD}nn^n^5 zQ*6T5Yd0o?>TZk2G>;vUNKkbR^WN3`cCTG!F!R4r}0lM zzw{07%koM+5&A6mDeY6G=cF%X!?{PqD|`nP_s5>R`7Y$pRUu>P?|;0HKL1a6OtMOS zQdG;nWMA><+gB`O9F+M~eUc7ez`Qe!cx1VPYHw~i=vsTmO zUgCD6e^ztorT9zrmmV)ilW(cnsY$mwC;xdXMU6H^Pu)HKvf4-Gp``sSM^jppSkwxW zgwq;sI^GOcZdB2aE74#3cLhzI<^A|_jJHDEEp%=rQy}}%%Jasvn*X%jS0~4xGY`9N zq@6{aP;}T!Vs_wjRaBL=OEyV0d1mrv#I~M{rZTgCMyxaPY6E)%b%QGpIgd0?W}Ddu zlMfyrM7mtMO1g|D?@u0`#CJ_&Y~IMcIrnB!+)|u?*-{RfXt@x#$S^+LHvN@Ng#W@m;ipU%0;1@dx~J$L=3)2pzRo-vNTjR1Tkx#> zZrs-^acA;QPx+V*2{|!HnWS1DH%h(GXWV0c(a`AL`R;e+?<$5%&en&RzcwlOn%!() zS66+mC$%H>%S4b^YovLUVM%9E_iEtd_m?6ouKEl6SH0?b&Z94dKc*`~o3uR`F2&xG2h}utyA0j@KJ49IGjtm|NKKt$LqN-Jwz{Kjrfr-}> z6q900hD)cGESDNt>W&{`X_K&*aJz4hsdKQfDZ;-SxKNfVrbVaja!*6z)`5JUX6 zr?rPd9YPsYEff3_tfF0NUw%I}Rq!pRc`+`cFrw!}r)5iTon(c33h6p;1oIc&GRf(` z7iI{WgSK@;ZxSLBKF>cL<Z&}@4uH9c;>uMk_C273UFh(v_ zDYYlsCEBMXzJvoOS;Fbj<`M2exf(^1SgBnLUM?MQo;x~wW3K_(e`MduiXR+%@R8h{ zob8YBKi*Rc?G4;pNWn)XMgI@gerheY`!B4q40Fsxv|x|vxz}ImYxcdNzs~vRc?;h>wtGzB3`F-MXSvTO^Ny=ztJ>Sz6VA1z4r`H2 zi-Tr^lLGQ3y3Ib_cQ8#gv$$!2o`}fv%1h3B;N-J>X*Tqb{o#}QC!Y+Lca%#$8M50m zYVleya`^SFSN7<%?>({k3?pL=wNZ{2wS=^ux`{pxI~1BF{r%yIf0X$cmA)rfU1vEw z_bB4A(xsBvz*v>c+`Ow7pO3szf4L;uE8#A?a@SkwGNw{+ztYXWoS!j0&*z-Kt}fTs zm)h8A+sPvq5*ZR1ca!?wtL(qp`E$8)l}!Hn>jm|&^N3{)^9!FE!Z0V%ZoZq|;<4h_ zxa^y0$}~q6`4azf(q`0l%2Oy-xZNU%Gg%)ea{l@6QMcl!8OnJXA3O4#v}XG`N-q^2 z<@8r&aO4%xy;*R_>E6sY_u9L)S+CZV2Q_c1&6zp(%mv+i`0f3B*}wkPxbQM5fnp-o8SHQo+ zTcr}TO4F|voBiF|TE@q2C_1X0`_2fc^LX+BcpHjQ$-U`Pp zxxDeztyN$9kdj-{dAh5uwAayfp5`G7y+q%1$V5@jUrrk4#h2U{t-ekD+Z%k$h`FG2 z#G^M)-chL{D%kbCE9KIqX}p=ewM9>QX=&De%bUW1tP0{b-y^)NyCNoEJLcHj=BD}l z_xJzK;Nsm}hm?Q3Z7Az0tH*_V<}U8TD>(o4O}rG7$`fZ9Bl)&?`bR+A8x}nl`I6iX zk7{aV99PhMViE=oXvGHbzM^*iR|u z>Jz@q_l*YY&J@`!a1e~TPvu_wAekm9?_skxppdR@jW;ILPHJ3CvtPK5m-sr}?73ow zZMAD(Zs*mFb}pW-oM6tiI^BCb?^MC!vcu9OgX4iI#U5RkV5juelCHIJ$`#si&+PR~ zW2|NWvH{khu}q70nr6RG)OyH9v(Lac`8xSl&dZ#E!Ee~un5mBy&)sQwF_4gzaJaF? zLw&;;ZbAbhM|d<(;*l3^ge3C>TH)q(6w2i^3gz_(g<64^ zyndii7=9FL+yI3V4@03CY$6L(F2Wo8Z4|WZP$=^R_P~~d|HdEG^8By&Dasp&?Wv{9W_jSkp{(>rEayS-Jzwd3&;08l zt-SW>+~Fg9D06bRs2sD!z)&3To)c#q(}*MUqm5*+;{W*ZS(bPBA1@()jjuZR*Z+Q* z#>AKYf4@peN=HvG*Nfn&!pV2v^(t$j%T#D+8a*w6t?Ru*`D2!yL;VZW_WPorM;oJq zONRs?3E%#aNlx)y)-jL_$TQ(cuJ#NhB_FeF-F`1%yhH2OMl}u1&WBN0mDdv}N%c-L zle8~1P3Se9?RRtz%BJpq2o*n82%nNNrVPs$mXHbNmDqV})by8wU@r)DlDXK!v!=S? zohixQT=(xgnF1lvt0 ze`MDDAJ39Ro>dE<(lDj$Fbrqe{=V0|U^!C2Z2cIxjQ?`TxZ0g($_~h-w(l?bvh9&20m)L7`xB-t4Mip#()g@9hsW!$n-=oyZVk4P^jjcrkkSV zw?m``vfcg}7Wh?Ix4X85HHFB-^Z$C5%9g+lMi2nK>fAAjYV@y&u)hF^NJVzPsB>!k zryPE@3a_!dTj$@B`%3=yuJV+h$Ap4R@RL}c@tCSV!jfLB1`j!e)0 zD$`@T0Bis&d%3%y+iwe&Ay&3t2S>F0?TB-~9g%tm@`P=??(D1a*L}^YsZ1SAL3ZD| zWt7{Ws{YktWr&FK+8QgIw!Ogr{hAVw)BpQZVDeuPZ-eNZQ4b*=;73O8SIjFHYzrJQ{U4ciyGG6QtE#!Q-)!14c5mWu z&L)QHSILKbsNYnJ!AKV(kAa+R`{@t=)qIRMF(tk2Aml@LwfLJYDu3E>5HH1xQh!S8 zH!s4az2#!Cb%@Jc{pq)Ue^eSceHz4#AUOR+TEF?N8Z|iornJO4l833>f7&9K&#&A6 zZnk4)TO!#KDhg%%tM$j|Od}>C_`guEeDpUxB5Q)o`R#C^DsVhI534cy#r$RRcVQ2~ z;a{DSyU;m~+3WC<%#A;Vhf}MgoG&_KIBozn;-}Wy|dUC+fL=^Ml5S zBsR~8NFUtO_Oq0uHg@BT;H?UivawM8(q&!+L+4ld;Yc)!@gQm^D)>5A9ZapleM3a85tt0VYxo$y0 z>&6g4{cRE(TpCbsQmfQhI!)o>cE2@K%=`7SxbNF1lM#5IPXX!7&Y`oI7;$D*E#m(W}^H(GvRDys<^ zvT8f+?xlKb7NglzD2hWx%JK~1Nlu|mkG{5K5{s4_83}9avU01UgG0gZ{Ys-!EcHV4 z@EwuS8~Y#Lx%RERon6>+SZ7EhQ|$Em;RyV4N0)D&blLoIGkUs>7c532K_oUp(6r~^ zMcm=;grrb@JEhZkD$bF{Imj-|eC1klVF%Tf zn2Q*>a~y-h9ITuhnqu*+oP+Me7RM+$)Crtv;q{{t6YY8Fl`WMcw@E;H>9bAy zbJ>Y2K>smfA>rA^G3yipd0J-BeV^>fZhteZ#~m#>4?a>di)Cy66lZC! z`*wc2yWv>au*jKIQ@VL3xrHO%T7gM^zWA`l+4HSK6Atp94w-RJag=JnR*T*T4@x0h z<*B^AiXHEu+UMlA8fDyyRvcY)sRbF&8~3v12c51FZHx}8llDF>oIb5OOgNRoiY_S= zu2ioWnIA?Emj=nUkr+n=?=Ok3Br_RUE))i@wmWI-(q?=TuOTVgSV&gflYYqkAE|m8 zt=~GtBhd=aaL|?v$iKSDOG{uJK)^kC>l1JExzUIWBNRg7x*DwkC~$l$QBeNyF=yIzr)s ztfFH^xBD=`T3a$O|A!nb_9@+}N?Ukqx2n5gW>o#sIz@_QD{G!NVecI&`Q8d5B~|?w zjvD3?6(h+C+lRwJ7)hJ;x8?_|I7*eac8N%#T|0--e3o3Zd}OggQRokn^93{?Oi~}y-sP?$+`4$lBi*4@HAL)|Fh zmI_`=-q)bB)s|_q#1zY~zwMPHw&y<|7ocIzaNXaP*MncvJ-*KBrYbX4lEWV*jM&?v z)9`K9KdU_&3WCo|TU)DM@+e&yUvsLxfjNv=oI|$Sw#A*TYKUEtcd*$K^XZg&nv4pU z#_rDxr6Fpe&AeiJ|Cn5+V<9~u7@KU{rxi^9#4`Ovg0wbOIttGEH-jg zxoU**HU319?5)gvE8RiI48F9%nE_#3;PYYo&9W>4Qn_)jZgtyy@EAjGvTu}HAtN1V zoIr6Bx2wgieJl24Hm7g>n&*^DH=CbP;K^yn5>fxCQ|ww|w}=ZSDa}am9Xn|;Tvf8% zDFU6cr!6<7>sgy*NO$%0*Ak(W^^Z=;1d)%yX_4w$f1~4B@*H0HY zx&_r^(mOwzYNc_OD!I1?eHzz!AH}SM<~_CrmV06@M_=w_G{?uJ=0voL(+CoC!iMt; z_=3RNUd4^uhmBdA?UDcw{EV_oT@J09=B)qF6W7Gvy%u=QA9H%nbwRxs+#dO@Oy~55 zsfwQQvo+H4;G~pDQM4j^hh0-x9f#Tep{H})n`&pZc<_64ifr;{+ibjM;?fU8hlY}5 zLUqIJ6z7IepSr(fmOjJNkJ()b)>>AarPA&~8lCQwDI@^~>dpOPvwwoy*gB(2y9|lDK@B!k(EZ>5?*@d9*Yk zgIET7^Q~pJz0~ggu-t3=Xjg6AT1@8rF`)a;p6hwt+EsAtZhf1 zW~MW0EaAH~CWGqK6h|d5#2uAz2?dF{e*D0S7$FFvTVwjC%h)YUM_c4JU53?{0*rg@ z6W%fd*r2KUGF6W^)Bm1gbh~P-zMDr{lf}3+p&=$ul*TrD5+&FNQ(DBwc}lr z8yfQK<~=OE47LOR~5k8W>X%Nu7;$PJe|CT1NEwqK&7j_fpl0ENGZq*?M z&yhU3K*Q66E&riJeC(6jaaH<=zv&$XCiqV+HCJXlOl>2VY+ziMfE-b{rZ`CHD~AM@ z)#JKLpRh1_bK3K$jc;I6CBpdv>+y(1&s9vPbSzAAb5=i7CztM1v!HmIO)kybt)?=P z?~=?dj62(RW;E=%@Cs?Mm&xw9(aWv0Te2Xk)Y@oXD_u67HxBD}{NsF0x`3V8R0 zCPQ|oAo3d9Az!@EQ2&3@tkU=C?73Wyx%~9W?Q&zPEVDA1mxnG0^qfdhBEMLviPWAR z)igGb5F3^@rgSPhf1lz;QLrIpTV^!3uzR{4diBx^mj0Km{x}VlKIJFw_T-W`=p!0E zDO{uU=_C3y@&zbVD@Jr~4_Ai0!*{Irz7sR|TYI_M=}NO%*J`g%al5ri$k7|?5+Wv0 zNcC`e4oc&n<+@_@uFVZW5w2~|=izx+SeXq?H$N5efZO=qXZ*9b2V{G^?dgrF|LhuR z7nFvD?MN$ijkOwTAwnTPfbmL)Z%J2>sneBFIVP4hy|uV*q4zM!oMVtZ-kJC1pz!*- zbF7$WKrt+Dl2#s_Be&}A)X7n^k}5!dJw)(g5y-HNTLP=FT{LYWA&hdT?h?HWe1!iL zvHgT?G4oK;+1JK+e%Lby$Tw9>%;^bNKt%-t!(lGcmj!R!lK0T>ORi8b$C=Qj z<(_Jb-8dx?F~M4tmeN6mt8TEh=w)eHE7d-dL9s|E829|**ZK&*-jw4sWvMOm%5w2Y z01ruMDrH3s7wdJ-E-|5+?e4-sqI-urEtr-HGZNtdWPb@{n#wU)79M3z7h#tt z-aMaKN_Zx5l6^j(ROCO`h|`sNV}pwjU0-`;dwud)*Q3Txv=duI6xf{$22ncLUKw|Z zN8gY=*n8F$k98?1?w^559CpiI1J<3|xL+9|dh~@?&j;YSTn|rbTXA}-a`|YL+sa;2 ze;6N@i^N35v9;Aj#m0Fl9qViAm!|NlXQUjX@e`;s<3U9@%R02en2wsj8}oaIDKrD$ z`_&7L7xpj~12elt0oL+k&8RGgsaq|cM>(Aa zOY@S2f?YI1JYFdBou97{|2xC+sll1RqTU&B0N^+r=)d0)yZi=R1zQ$*(Evg4qR(5= z=I25u|C?zZz)<$}<%{!xt|ydz$ka!7$xwvxNCa7G(u+ykB^{2k(+6sl^EXnKpY5k0 zPD`Ln7ga-w|C{ya7LFK?=wYOa3G&s?lC4u7lMU^I$2z@z;wvmx#tV|L93JIAV(K!^ zf6|cV)#e5yuZIv{tJ(I%sEinI(;4rU&o+2k@?Z?Q#7D%+lY{Q#q&0R3jxgF?`d1&V4fCOeDp3In;9`BRd&82Et09ntl~$RMFKhP6hm)&2X;(gd zG*Z_n;+R5iW$x8#|8lvL#2eWdYK8dp+QQ{65y$sv$7*O5eb4GTn z0-CRPC{I*y)b!eGJSJ1O!vJS<0`SS@`Quy2Ejrtmkpnzzm)#~VMS8xFEK3?JO4qlm z94$EFIpr)-HWL3KC`+%DV90oSo`qM{4Aa*y~?|ey|RkJZA;}wJfGX8%pYC?IU zo)2P3;%8KfSPJK$Nn^J|-1{&eFvSO8H%861+#qN+4kMv&Xg(vUvhTc|Vm@6$rfzB1 zGJA%E{rN4dXs!|`iuY9=X5P#pU$A)HQj46v-5ojR9F#eo(U3$$BEc>hUboAc9Ular z{!XjhBvJWFpL{1XzgVwQCJr03m?v;!4)>+8)HlnAmnF7_=HMs`%056}-lgZXaJx=? zy5BtYr0lo=MB(?Qi!e0Sde>GCF4lTu6dg^Zaq(#Q2{hJm&vv z{n!Q?ndIl*xjmIcZ=0tHerw)mQmX=OpPwcYH^Ns}?Y>>^oPNlLj=Wy2Cf6g+BwNl{ zncvrldo$+DTOsZcJ#<~J=MCpR(-*|fLcjXaNp1mhV=aVK1@VuK`{s$4&4*m%w*(BH zL`bIE9qPJnmr*+&TMs(`QJc1_+&Eg9>zhkSiHS=Hix+SBNVjrx^(lh2;DtO2&3dK7 zqfFHfL8EymdxJbvK4agC75EjkFNAVA{-6*;0ts|+V)l(Lmwb&J5DS8K4*&BlZgVTj zp+>%!?$B`jOt77QQ-`J_ipRq?GQ7Ek$sbFdG|BVxB|K?V3ex8oteQA@I2(LehA_vg zD~-DHoohOkqQ%Z^^R64yQTWE?u8-fBA}*Jktf{%VM|%&*cMa&i>&Go+2BnXVS8-02P7q0_g-6HK6z55Gw6=Zh z>T1hH^|%iRU;T!~D^{n%3EW#;&p;3)mW)@B)NQwsH@{m?lYkqI{K75FJi5VBW&PuJ z$%-9)M4+#}GgiWLjP`n3kS}30P#`ZjQ%plTXkoe6ZtZwPV`gc2wp6f)ZC_(w zX}PhRhi2u-{8GZGbUK52i_*5% z*~NkdU5kcNhwNL#btaG|w^}Hu6@tJ-(@rnazyx7ZZ*8RrHnvk7gYyA+DPdXt%C?Kr z8cQxpN%#k@S;5_$A7AOvW-`^ZR5~#a0H4(kwPr|BpDKPfFsFp?1X|xXPlA8w$oN_e zOBc?l(M>Cd(XgJdHx=Je5M1;h#dXCLM-lXeflkt%Hj&)qPYcAiUOH865RjYiqHh-$ zvc~P#&NkJ&c3HA=8ube14NHu~;$HROpVg(rFV*ElQcIvlLK|?AHJ0cCNq5E)76~4T8r^?- zrPC9RrAbn1m1k3=LJr1aUU>F|zJ9C3{ouE(C+wbJqz!^;Y&~Tv?b?U-;fr|N97|TQSUgBfpVh=Lk1`!)6GvYg$qO#G$*8JfurG=~F*zx!oof zy0*_i$X-%zJp&2G-#)t9Dz-j!L>Gz+KV;5ocfBfEVbUZgc?W%?rSgJE7j9Cs8AC=~ zN$!2-O4Uw&hc|PIa^h>rIOoTxlr%~`Yx?G*kv^&(ANFj4Kt1)LbJFg*b}1x{wGV$* z+uxO}m}yUCKgUrjLRzr05V>N`TwulNsL;g`Z#&61xm;-9nLgXJ$QWUMRY=F5=3C_g z<-=Z@-VoFGOWzIOEt;4kEFng)D|tKdytotB8C98y%&8+qT6mz1?%(C9yjy;hV0yce zaq&oggd<^AYK~-oS54CV-k;TN8kR~UnHOn73bPB?vaYxmNU~3NEFLM-*Pl9|+0MRr zFu&|--#0m8nPS>yO-Eg9!HBv@x{I5>OuXzkd(E*CViyO(4&-otkTfbFr_yh;46zGP z6DTG$>tdwuIy!xL0;FLg)ZyOrdh#AhK_99Hy6IG~1uNqYaDu|1)xM=xqg}4Zc_%00 zkH0i*opCIdHMYl)As0$z*>Q(R;nfPvw=VC*2rgHr)@%O2xUuK_(301d`BYLc{^g># z!=u&rEkibzUDxQ1X&3XDoQf^U%*EeL869iyyfjQO(4e>BC(N3@*#FlH_JE& z27xn`5buRCZdJ8#Sy|7g)yQNTZ=Lv>J5Ky$X^|!^k}2jerQcKPch6m_pcCDDD&HTW z+C$J!mzYuN znV$t_XP161-YFgo6i-j)|tfwVg5g_p|3S5NEf3&Ba=dI<$; z1!p>!T2PF)my91iA6pBNa>uiKvz&hM!SCL}hP%=_X-}4A3Q6}mThkG}Le&(eWG(AF$!3?Jr0xgpE~?nq z=iA(^)IucAO_=rPn53Jg76cEtVtl)K!mp-AJZtmh1vi+H-UXl4$G)aXs=(r<6NKkT zj*5~&O@Edob8HAnWk+!kif3*)KEsvCnkfM5W~$vwThwqf`x&mgq=0E>5~%Lq9lj&r zec&p!x=)*`qNA5uxe3=z2UHIVdaF~a7U<_E7zvEC-c+5gK29hpGdq=c}gMlFsSR_=li<7Dko z#ji?Sr2CIuLzvfJnd(1(W2*fizZCu4NcYv)NAy2#4yn_o9rA)RLuz!h&DdbESG*i0 z!M+%)02MdixyIn9vl1uez zuG7!w_c^GH+)gHAOJSYKJim5~ZiAUvmICo9Ee)*)IU*dXk9t8A6XL1pE)Y8HKvzZ^ zdvSBZ<@%T@k1E@d^>5Y!ZwM(4F;z*FE|CI2RBhIShC2f*Ud}sHEnc}Ton$mK+I8kH z=Ai%-+4IQgnnJ4&pqB>5TJ#yC}@il4)9RjJ>79HD@5 ziBX?wSrZ-JjD5rh6APd2g7DvZPu$U}FmY*V6a6p1OB19-W@bWj9G})aB!3MamuM!itI_3RF zZcz%o!L43$)6jObZmpLwFXl1eA>EQ_a!H6;7@D@aHuA|!$6YAiXHT1BS^-nMaq-lj znrM9<3LR5=I;Fj-_cVHG^ZK6m$az@jwklthPU{mNNhWg@cmx^HoO*9y&hi}*FgSsR zR_=J)s6N_^wnJ+0cRN<=3E{_fvkuvl|&jA~R8k;dmrFPEQ}C}&zbBY|Ze=kaWR zBUZ*f{){#E$(T;cH4XXvhvVvWvxe9zZ8_&M7d?^yP>diTmlpDim+8N=X}C+tl@l_F zidxS>#zlrKbke3ij9(BUGA(v>-kxQC)ruigtGjBLiiDJ}IxOF#{ZqoGg-ZO1dZW3U zGi*o+j|@vmf80T}{tl`$uEA!Nq%S+mQhGOCBI1)NodWP=tZ0i`-@GdgHdeJ!=_7cf;**mfY#^cuzD_d z=e7x@6O7jNqbBzSYpw9do;{1ns1oP!V4j(U?)LByFd|t z(|`9kt+!j(_5Ix4=JZ%zz~2m@XxGHxB7N7-?v3BuCs1F2mF!ctBo<0Huy9;q8KSD> z)|LE>76z$4pcR-HSxF&dGp7pmsDD!c0wG(6^fiskUE!^rkdpiGTAC4QH2!AlU=~G{ z13V`qXs(n}Q5Tu^I?p>adQKmFYC{Y{c_PdYLV<+NeLS>f*(P!9_S}A1Z-=udP@y(9L?n6QIyVXdqbJfmiRdGAxG-^#nlCWT7kd^`{4u*%THOn;zHK*2XcW= zdbOi0N2HH-iCA^Y2Sx$6>~2eG+k2Vct%%)0iITjwc})Otz>XD;D#}O{-$8ZDFm9OL zY!M$}z#!CliMgS%9IUQ8BI zH1jyQHKdl_?Cw+%V+pZSMA9OY;6w@}Nk_>gY3QVp&>b*(PN zhCM#hc_SL>P#7JPJbo47pn**R~a!K6HEF?UX&G7%Q9HhK*OJf-~d53 zkaH3+JiH|>?CQ=yEmjzCz*=fbX>jm8O%U<3?UDu{Paa%-K;pu@Dfc*+V@w}od(3mn zA)PLv+t!UQz$10K^2Hett!Y*m({QaDg>Ma;A``=(mKmE@8>+eybpT{I z?;&aCE^qkD4lEtKcz`$5`H~GIyO(Qx>*FVR#bocncLZ;~0jJ(UrC(q_i3*-=MgU*7M*@HAPd=DhRI7@3F)9bs^3Tt%tK6c?ZiOQ{)zni4(MluZw}B;U)I7&f_AHsbqmtG1x!!GuP}%=BD>Z zIVtM?MrJDKU@jeGCFk3(Ik(C8rTb;!x~q=Sh-8b`OmQ~f8b`hG^_9*d&p;^8kz}sv z+Z(W*I4~LH9>)L3;cRvXsrz%lmmJ;rLW4a4La@#V_i$;WTwlADqf(heL@RoBXeX6n zJ%Vk6x&a7xq6#>t+o{3~??Oc`^9s)XvBhN5eR_QWPl((znW;H1fpXPivyJAiSzgbp z*YTV}+D^Np<^S{W=is!y0M|aSAMAexh^7_EKpe~6Uq29}NvFlc7 zoyS>FXkNK%v@&!Z$#JebpiZN6Mkim>2}UN@(#WLmBvOCXPM`wfe{1;4Hjx~quTLa{Jpb3#(Zk6ThXM&M68QC7-z5dkr-2Yxp&P}1gCRw<~ z)ziOY0R!#0cH5r*3%t$a)ubG96ULhiBVFJm-|EeEu}qDGzzJ&$&np+@TPD-PJb=YCy76^Zmx|R!$Sfe?lRd zNDW@iJ)0OC@ZUAI!SrGs>*7|T8fA}zz)f$}HSxKj(4z3ySqN4H0W0ujni)v7J~nT8 zBN;x~z)En@PEZA4^@7Cs@NZ?Q?*6Y-NN4v(f)mW?&-evqGlPoAE^LJuE}buBLIs=~ zmIu-XGycAgCa$$c7X}*#@CfJOCY~>BoOcpZf-y>y#*EQ?p+42P*B{CMmr31wg7APlEusa+mv(R zAqqZs-?3;mf3EpsD|n`;II%K2ep(VurSk`-^W|Q!7-cdz9SK+&Y4$1mLexCET~Zch zHNXo+pr`V!-0S&8@v$WCKUoYLpx43glB0JjF}+KQ-vu`Suy{IVtFG~j<8J0Zno zD{JmOc`#jf3R_*sm#}-e4QIZcUrGND|M9)(brxeiPY=m5yKGY@nh~^fxqBBp{oYmP zCD@Z<4UC4WahixiIN8*S2BIaT)2o5Zg7(r8?ol-GhamY^7f1)(`2XGt5*xE2hI+v{ z{{@HSpgCn5(OS(E^mW2EqN18SB9=MOC~5VP6{sMHg9qtK;heJbm8JTZoZF*-BYG7{ zrl-y3Txx=)lGQe*6vb+j6Z`$GHg(1L8B$_)P)9m|wXO$--O^J(k{^L;XU1DPC{Iby z-j{590tdNnvn467+TGzveK5R^WF(UV7X!LC(19C39ftW;mQsN2eT6Q!<=4eZ;lhS> zPdu|^#h3?#xQZ%KTodY{ZHI>A@Y-uKP)0aQzszQ6EZz)_`~lmD+{}sqyPF2btPb{7 zh}hRo-yPt!^`pbO(>?R$vKvA&TtvEH=bMkCf=og=14(oNr1Hs*tKCYY2Qtg1XP06E za@QrbnT_=%JSB(hU`&KJ-Vy+k%;hL!9Lj>aJXrYE4V;$V7(#T>e=jlBD}WrJuZhJr z+N7UK7GB;Qbu0r%zm1`bJ4NzAm5~fu;SwNA${^Vw*8&UGM9O~gCFY{6<3bfPM?1+l z24O5uvQ=Vz(g%VT)+cPLUua}9jC!iRiJjs?4mAnxcb-OrOp+m8FoOZRgYVr-L4%t! z8^xeB>mQ&ZNgMCCb>B_p(-Cv|83mkos;v{BD{Gz$ZN0~zEMCL%2m-9=->vfm4Om%6 zs@&fDA?(4!_R|p(35vZ1+B7U&-@wfP}{+TsC-WXt7w_By1*N})Nv!0pvnBa8d!ciYw8#W0QAj_ z`I16b*NV3iC&^NcT~H|g1jSTk$~Ewa2z}u7H3#u;tTx??Pzb;P3s^3j6RDMvou;K| zWuBwPRa)B{|NRbTG^JBbrWY=PVM#XJK<0|XJhA)SG4B)hx%Yeb)bgM3gsq3?U6 zZ>6tC_EuQ}yNsgPWIW86m+%uPY$w$ITUip~xG;!oPZ71^Hx<0=Hvmp#%OZBKOaEN; zHLSW>0YcWExT$_%sIh4ro)1asAm4050ZfQvPZ}7-eG10g$UF*!TXFz(*n8-NG~v0| zrMv{Ye-n8IxL36hM|a{NGW36zxc2F1=-+KkJO}7y3D@*K%A<)G97!7vEUqQD*6+%A z-|nH{v5u)jH+@qAIf|NyGKN4kvN^bXKp81O8fc!TmN&NBAwy~qm^@W0Ok#At1QFM} zs920-AYvj@fj`GY`p@t12r@8M_Tg&J@G1Zl6$d%(f@amlpwbayJNKN3%7(}An!2pF z=uOh9IX#_!_L1%nXx6g-`g3-MP8=ZFI0>XCf^Tfy%atfd{}ccq89s=ufp#}-4Md1A z3ELp&-2piy1{nwk&H`hd*u=Ehp1}HA&Z%bVNW*=t^XdNORQjt9us*qoXe)@Wj#c6~ z)m7vgE+o>Z4nw-{?&?o$CXXZcWaVG5ocIc&>1(R6#eIZ1-%lQC`A{4peACvd*zY@1 z?$2sf88PYd^#xU(G>e_MZVOxke=-}$XC|6+>LaUoxmT8mil=WD>0|nYRLQ5HA)kkT zj{$;^e{BHez%@I+C_XYPmT?E-zaWabBB1YzcH%de%0q$D9pVUdE*k-n7d8{ne9MEuomy9$v9oZNv--}{Y)m`H~S9?B~Mkub1W$QXa77ugE@ zp37t;+7SsS7v0n{K$jCz5Sf2Lv*9mSdp9RjH{;5%1v)XV$M8Pi8VM>gS#QP;a0dG} zY2#fY&3I>sqaUf8woU_mkouo!6rdt8ewzm7VH{m&7bolnctIM2Hi%8pSUR9g@Xx(R zLHzxZNNtWJ=E@K*KR);Q;-2X@B+cL^q7(2R5@-5BT))KI&YgIhrvq@3Yyp;c0wid? z-1v-u_eS{kE=62IU>2qNDyf|0DElbv2^7hUKQarT5zI?P>DrC3mUl5B5(_X`i0S|f z><_rg8o9}isfDSgR)>Bv$Ky#>g2|ZUC8;NNfOQ13VYeM4U3&%qmu>_WCbr_ zn(dp_UKlhaqMk;1O&|yoKC(U}JEEtnJ96fY^B$=)rHl}UZ9v$6U;66~VN(oeDmOcjrGC+ZJAyQ5dpSN~| z{i&1tpp&H;NFxMSP9Y>>qz!IShN<$Vyxhx3_GXTn64uD9w*>!IU^Xd{Y3cqdG}?E_ zUID(rig7>%wL#=W$U#};FAxhed?2f13b}Yfm}3xFkVyRP6bBfne^DJ9O}&h!wP4bCDNwZhFyop7VpwhNWR zrw*4=j=KdIQYvA{rP@M17&UA6sUxaFGF{k>&A$K?Rs=bg2XL}Vw$Kojg$;-QMU&X=F40WT)mA`lpvkjOchFmcfO$6$6~ zL(1Pb1K`%()8SAqSI!Zi3_3dnNbkdv4v`9=7J;*R#eu3^QsX9u+-ty_9!J`9KHwub zlVJ>@z#e|vk_xl2C+)>nK7l|&CMHriJD>IBUhAZ|RddpAq~2*a*&x^S5w131LbwKZ zafS4RpifO_bO$;kPh$cR_SRZ#v4dnJ)-bI=AeP=YM!@_qX6o{ejREz^aI2icvP zEkO{_wA~UAYF9vt@H%;&b6yiBWaD-!T5xsbNbL*Nfb=J|U8via%5@!lMciNp+f}h% znfyP!+rcwos)CpGeKL@m4HSJm6=By}L?$+XuAm$px5pq@gan+fM~;Z>$kt6!i=~7f05O96P;b(kd)i!P!M!ar+YV{>o47@qMt&cWaE|6VIilJ5YMQ0m~Q%` z?8E??s+k01`6tJ@IXtd4*zh{4tdD^A^(f+v$4oMRJ739sIyY!8_&K9DvmbaA;_){3r4y1L)@o7KHk-Uve}Etkvr zI@y<6wz(m)G`Ko#o*z8sCPF-z;7N1$#tnfe5I^d*jpbIH@LKz2?7`q$pM3e~{?vdGpgn5^}9CTpuQw zYUl>$%*efu{&R9aG7-ALi0A$r=Cpd$>NWpVLN46&sx6|-i_RLbkXnqqa$dy*jk)EL zjvIS=gg=ac(H_1AFxD1jHIRf!jsDlyvVB)sr&SmCnV0ey=rS#e%FR3E@fieaslDkd zQ89+?_6Fun!R;1;y+&_zUJ1Sgd3bGhR&mY$67|J>TN z&bgf(i-J_Gv&6HHqAv{A!Pwp9JO^x!2n=Dt3O4oc;mWutA*mZCxm2-T=f_tT+9vI_ zvByU3BWcFi=SbNp<6qT1Jc6I$8g*M6?A>Y4q@^5DdWNelaq)Ae5_!^*8rOm*UV|I= zImoz*xlMo)v1s_0y7Z>TAn%i`DeNjh;G=#pAm_n9|-@?9;NQdJV@`~TQ` z@4u+7Eo^)Yi6jw0t_6^0xxuIrBnSvdF(7yqK}A5N$|xuuX-XYq1Vow<1?hr8J=OU3wjqGIXRf4CTA_IWq(1e&6@={sH&=kWU%wfA}9Hw+!h2_7DH z5AsWslQeBQ2S8Ue^M*`cJ&bOKw#vTLTw!DXR*M00-nu58KhY<@M3A8sw8Fqq?yE~i zbB2vPXa1OdqRBSEQ{u0ToACjM>S!?L) z?S;O;5SvJH<8cec5NME`NJ(NhoKjwA5jLEo|Nhki{pFaq4ZGMOI1NBp&-q<8(E++z z+r_oHT5iL*?W<=35`6~^+uPsd;i0+s7!#Y2+&j^hQ>`Sv+?~5Eh#54+Jk(vt>+dtk zo|K>5Zgn%ys59W5J`rN76dPO4y)+UZ~t z8+8&Ih?Y`Zns2}x42PO~+ZsjsM?KKy&Z##@y zjXrMDI?>7XDRb(>ShIqoWYZV51{E4xa+FEv#?kQ&=T91KOfUQwY_F|wPZBhv#hIII zraG{{5cxI1{_z9j;*a7b@ z_sY5qx~^M?kC;imdo^-uhOg=D*-Yg_qkhm_Yi84^rEbA{W^*6cdzwJ_+@Cvx-Qa`) z*u6NF;^OyG(X+^DYyDweo}S-4{~oV#CLS``aWAxV0@|$KW!=$5`=}K%h2lCa+_%<` zO;puxygSG-?cy^TKo*I2KjNN9zeQ&p;KIalFS18A>L^?PN%pp?`jF&v0}jQIc{X&* zb+XNIoyCz?scHl7c-ultH~BR~qi}oe!VRyP;L~%;l9rmS!}7ZF9E~p|a_=q{j<&a( z2Xk^*fd6Vs5MtM#(pop%s)J6k_#XP+66|Gl({>l>{vuEYU7{1Uxq{C&myu0ml}%<7 z&CC10N^2dVW;H4YJ16VIUeN!{CYJFgB!DZkGB4BKT2Jf9)GQEw#b6pXU1A}*br4p z$~l?#UTH}-0ggAwvXNKGX>Q#YFIn9}`Z5gt(oy$G{&}}E`VQux{+%8?+cUgTa&zD4>7+TQaB9N>{4_~l5Z*Js0xrMgWo-GvXck3rHgZHnzLi2@fN1=m#kUYGu z`GW6Al#okmQ=G%+8}~w+X2zf)JOBE_7pXe~(@h7wMiK*VdSvAYzffB=;D_evT4?^K zc%~6AHqR91^1l`n%lsjEJT%vT%01w>KSiu^JzlHyE>iQw= zXb~y4T|y6<4(lB7vZxE+w!2r+Oup1q*-G-N?reRDTR>6SVNWg_jmjf;E^;)Gl{8t(x9mwf=#Q75)-Tu|$IWg|bfFHt zHJ`jl*O6}L>nInDbScV}jOlC_eO3pxAX zK$siqoodxFu~PBU>H{Y;+2+1L2l$M(i0%NE-yG|T-7hO*UoGTuZfaQ zzZqyloTFb^atkL@=^YA+sU9|vcF?|@4Xg|+0ffi zfAOiZYl@sdugg7ALp36A7Pi>8EUhulzcjYnY~Iuh_G)p3q|;r;^uk)EEk8yVIniJz z8|*dgc;A1qv=6H3bFDjZ9~~MUXLg1e)@{!O&;yk#FEkx|0(*D1zdj-i`~03#t%(_L z+)|f~BC_r;o|hJp0IKg470zx$fZywSvF-UTroeqi7Ga8c5`^wxtgMAdU3zcl!y20fGRV0 z(Ha4-1Nge0X7SE9PV!F)b-n%k=)T7tr9omPp?88nHw z4os)X;36k*pc6pX?$!U06W~*GLcUqc(u?hK((WRzp_c(UaB`2I_6$j0_FUdCHTp?H z$tP(L2&2vCbA9dfx4y_Kyy*9;|13JHqw#B_YLw|oA;$}jJbsA)o6kSglD6{*R5R7C zPZhx*YW)2-t@_pdz%Fd*EAu)3i`n^OCEmRp5ukj9fr~^@lLuFIH(+K zSILPQGC9VeCHL?rqV#V0u}wf8s`l$gMk9X``Rt^J$D}(@4K2{lV>$8ewSKi9Q>5df*7sE-Q z_wd7mb&#;_zf$`jsG}G^n|8b^{I)hDQLn7Oz)k*( z{kbz^N&!IPNYFNgWHjXr#pc&^+PmBISYccO?7;2}yuac;FxN|^=0ooYK21_HD^KSD za^_PCaq$UH!aTGS-QI6UYV1gkix5hK=CP}MQ$o|1eLgs(^c)%Qt11ul^gY@3V#OZu zIRU>bI(z>3&QG)s(cVB69iJnrK&KOTI0ujp5jDW2<&8l(CQyi^{kz4Ky=8nH5@~43VQPQ#FV~g_eyUw2c)p;0Bq9gmfRFnp)GUD+q<@%QaQ&Hry^Io5? zhM0;**PVcdiXBznEsGp+|1P>yGarKZKm0OerVQP`BborJwb!-rQ+NA&yEI6enj^Kr`C9NDeIzj~4ydA#Bb z9>GWGxLVQ{;n+%xLFl!v<`mxytGil~FV=}x^i*Kqtfi7KwnNRRfD0D_ zZyg+|w|rkv0Q)DY4m88Xfjd3GC)%D^+2rj5T2^vj!K=sQM6S>LGEKL-hp3Va3xSGd zBp_9feHp;lw{D9k?fo#0zSUN{bg%{-UQ^GTyo~>%6x` zSxXo?^(CEllkkqdseWGOUUWi4ztNdlLNW9Y;-e~-Vj{&#BXsu35Un||=Dn>#$ssA7 zu}Qs_8*)Dg6T{e&AGNO2IQJ#!FJxc2_Sc}b^Jzh~|C{{=DvO$EKz~s?nt!orF@kXP z>^B2T1@@HdM1iUqPhJB{7n-O{nH1s@Q3+{&3sm;KL!Sr}Wfjc^-|iq2m$rvT^EBj$ zJ3*h!e-8>(n-h47R>Uo1gg(MX9{-0nG;xlX`&!d3%^&p={V4D@6KL;PO3(GcK2gi- zVjs#{INo2_BkvhLoll1&Y>#L8(cDVIZ*$#uP363_HFYIn=*zI(X|wf%t0xPW_Ag46 zn;+I%Y%Q_5WW4wU_Ks9djkmwrVl&Jd(l@H)M@Oeo8x(xJsjU>B*u1NM5H?7X3!C5o zjVJcPkcb49HJQviafsweC!CXalM|uJP8xZiOq;VQIBsSOSaX1Eo_|I2qg8Lwwh+T+ z_;m9Wobe?4-o>|w)33TZBW2s0P-_62T{?~Sh5Mw+t~o`4LIun5dI)Q)98vKQPB_ga zwxGikl#nLG5Spsf8kWg)TpSMBvLc(FY?}L_Hw?~*WRR!tx1uL)cb9qKd{{aOy z6w(UZJ#BIv$eB3ekdvROdIO9|DCE2*Y;V5rT|Ta66gWQwCw)CQnVb;1yrV_|G@G)w zQEPFAZmFjfZ`HV-xNjo=rrX1bB$B#Tig##POuHqJ za8p+)HL(%SjJYwzb1L{|{-e{*6LZZA@vsxhaWk%Mt3zvvM|?p0kcV3TKFgS{>@gEV z{{3@ykV_Z6$_=D#w7Lpgt6*1QuxBA`-Hhf;X+I+??%sTVrA_~j0?O3P;Se~U>-UF- za4gcKQTWN{;qpd-iR8C)FS3VrW_bz$z1W_W?3VyzyP?-PecAoD9qn6&_DU%a_CNpW zcCul!m1f%5&#)i*UQ{JxXrV;2GfTVW4&(ofgC@i2^P}_G&<-=dxPQqbz{m4_-^`$h zfH3uCK$ZBc`-p;>Od!{pWxEwPHhcFX9G&&V<6c$fBfDf1d#fcGnKEn(4#c}(8v;M; z3u^JeZn_YO5_7?D3#}0Txbqb)(`E&Il&(n04|tG9=hNo&jW?y!49l!5TJ)zBdrNsw z@uW_OjV^F#M~jy|VHIy{hg$}9@qwzp#SEl#vTKGNYjGv?K5Z*Ee5Z={)+ z>bRM^(L?P0Bw_g9oF?u z4QE?Wl-8b)Sjx4g473v0@d>`8ItoHsnU&;p*>FoxT8WEq)$q-|NiA+%AIDsEb2i@Sc8QZyJSy|6K$ z{?9j=_bFr`*&?=8wmAmVb7Fg4{Fc_o1b2&1()--xJ5Ti%nQA4M9h^1;D$&#G<_pRu<>}lCq=CJB zhu%&dzy0(X`I*-STY{wHqD(GE*Hl08r7i!~C(h{^D3-$`&7R7j3<6A;j7=JTCS_;z zi}>*GCZpq`pm~Vc$ZZEC#HB$;dI$NW6Avxz9Z+|l7RpY;xskvG0fGIWww7sedggEG zQ6^#IpJCXkaJrw~%%Z^^`^+>UVi?u@(Z2Yp*1=#GAD{l>u8u81bjMEN*Xud8K!o`z zZEVeTrF|UFU4L#~%x(~mj(&Eebb@W)_|N4O-O>9N3~J^!i`cM`#!k*GP_#3!s&tiD zw&E2%^p}WKcy@+S4V-*w+2KAY0>0PXFeCB9SgQg$+LPxh_mqdG!n9jKz@Q-!s4j1J zN6EG%v9eteWU-pY_j{}IZFR+Kh=Y6kCBOF0mS?_*#tv%K7EFJ%uYak4w%3ha;hbQ- zpsAy90_>3c%~;S~JNh-_0MZuLAvyUvL-85Ix0;+chi|;wI?NY~B$(cCW-P}xHFpD> zQWjz@`%@reniZEn=0Sl&JzqBkT;k>iAhclG;I2NU?>-8CO@=j<;SRr~oGqTV^T&4JVw9tYc82Nr{9R+<)m-{YQCawU zYF9~qb>rXX#5*tP7zOy7lN2teUD3;AOTOpfj6pr92*80a6#lWd#c##+k6nnK5QZ}Z z^Z9N>!hsLNWcsaU#!w5;j@PPmw!}hOfB3Bs+!qxW2hh2W_VD*89%|&CI0<~S_UK+rTtvLz8L=?4IhmVl?b?UbV#2#NI7sDpp-}bGU!nvjt6PhlIXFqNRw? zr=qtsJ5FuO)btfU8pprRzt5)>o$Ta=ZAnmEGfn=Px-WrjV!ycfuRbmgz0&@c`Gd7R zjp=+NXSYW?mui2Zc0LIlHZqaea`R_^o$_v63UCZ~^P+Q2QCjua2soRD8xD{*e@eZe z^0;~0r>bVXn+U#@xBEAknB(;Hetbs0O(mv2+Sg_de+kWLGws5_{oZCM@ZU9K2t)TE^Xq>DUR=t`deXo%TTcuT(MoLvXiCxJ@u zQdDf(RlSlC5H6o#+AwpKjE|M1ySfObek->v@iDKzzBRmx_zbZ(W-h6+QtmhA7Kde0 zOfs4jqdW~FX*3xP!Epb%@hDHLso2F+bNbOH_Ueu|&k!`umh~?z7z8_}7?kz5E%X(* zKIZws7fyOzT%62#{^8yv51j6)acpz=_@x!UDIvw-76G1>pD6E*e|2<|k8YPxoRgKJ zPKJ!Xt&mVuOh}CLY-!o|F;|tMCPO)8NLLV` zQc~dwMfcLeCp9wzszesFRTlY-yf>t<-?02xdqh_-oS5J{AtmVqCvxbd%S7c;DbBm) zg_ZWg(dfs&w$JCb76^ULX_}au8`BQXyd`v^v8364rh*y^tzA!241?_*h1z(R>E~f9 z$b#^Mvsq6Bwt@b|Z>CzchApLI@oRPYoTdGFLF*jzJOEcC6S&nP^C@7?jI z9L$=9gFJ0hUq*`*da#p;bi#dYz?;q2UmYsm+s0D_CnC}E1ByJ@4evy!o%ZTkW}oTN zJ65uC*&CNy_jLied;8WLb#(ewS&L=izLYTTW~_I@)<xr8)S-q zMg3e%SW^Qzl-z0^f0kJlC|-Pp5;#WiHk?O&H!OyxrOcB_DHz*A9}V-hB+$RRD;09O zSH3=6ANWd9BM7S`0$5lcM2; zmM_?ki?a(`Mxa+94PL=ud>QKfPLK!T-zT{<^Z$d2-;4{IZ1zKnc7G`dO7)7Ytf!Er zej)gK7$E6HcZxBFUvD@IhmlQcr$frG$cv+J%V<~x3j zS=(?cPolXpn4c}s-C%nO+P`1C^JI--=js@sEsynPlb?02u)p4M&*%9AiIGWQXz)vb z85u}7p{tSkdI_aBu!=mr-msL(Z)?utq*f>|lhf*dw&qO^`uVdtCuUY}$UMHEM1vk1 z^ky6MpckFlt?NWf=%_OanvEIHUi~V1FUJ5r1EtTPPI~8nS#c8VTNYlYV(Af(d!m~0 z8+Il&Vypl|WW8PpwRs$jfyRpuoD*IYR^AK19))6(HSBFnItNU0 zXas|`V*#RKH?$(GuR|WrahV%67j{jGOWjV!$71ZV)@UMX?rcM!qw~sF1Z?yqcc;<> z!hGPsQ-wn9nZp&#UW{)J9_3Y8vzWH8piM9$#@DBvYIJf|d{F>@l>q4{)|7?Nlyh-4 zFRp_P{hOX!CHcG#yzXhefSTLzadmHDI+n_JAa(S*9PAGQDcB~=vKzwnyvCVsqWHH% zS$zxrPu8qzL~nx6b2zi4TWZ%f=r)cF5Msil6G6kA+U2QPQ} z2irM)ZS%k1!5+!xkxlrs4sKx$a2!}^^zt3-51V0fuy1ph5K*FbU&V~Q7rBI^Y(YML z#sycSV(T?@*{`L_DsG}L+89pL{=w2zK5=MgwOpk+clc-R)?tNbM)>1SKV4JtIC!&_ zKW!mN$gT?g@t`!kWk8~UI4r)aOHD<>LCa*yzBD{^_G^+@BS$MQ{(IiPnG+33yu0YH z3kMUGNTLxH3lsz{Mh|bC$#?^AoQN{-`TFKmi74;+50Z7KEFLsLF(iWwFgNIzXrDY1fbP|EID*B+@;&|_G23NqkuM%9$y zBm*TZ&y5lIZAnuo-DX&EaS5=NesChJ6m0f}^gERKo6<>W*~71hUhtsIcT17(UXbUR znzZ0u!1=#oKbGgU0!EkluBXtLK-go~0QBDhrcd`93a^P)6m~ANDdaoMK#^*P#}sG% zYCP3ZtR=mZ1b8L*=TYGO+*Ok8iTLA-J+Q-7ZowPl&}FLtoo39ybMTD8JgrRtw8ZEV ziSbGgo?-@wCJkb|0v@qQKhZ-4Ne|qGJv8uV7vEuNZZ1&9wLOga9=rrQ%)9@ssHzge zltuOX|NlEec!q;k1gKDb3u1kjRm8xa&Jr_F-lW@00_z!X$+EpwNL!>$**Px)dX8hv zj3m2DC_{PrtMK3GgKmd8?mAO%V=+`*W7>eNFJexJ-8kDyh)_eF;IJ76U8Y~CBZQH@ z?1RPl3`rYU<%UCch+f-HYNql6+novu->^<;VaToF{#b3dVaqv_dzC*^!OCQ z7>g^y3ia3EB@L{X2kO6o@6n+KNDcJ`C$SwIWzjPcT-v0&EQPp;6oOH7B5la_gHm{v ztw@$$S@UOYX*d8L7r(~ZisqK+4Jl5zTO@cV?*1Y=>1lob1av-J)pm4H!=GT>zvcxw z#g`lI7qybH7evo_Ha1Xzr;%A z$g$;`%{3EKALnZDkGofh0BAY9eE?hTJ z?MjZhDNxfEpewL1YcZ%J^Y6;AtikIsQ)^MGlxK4M!QN*SjlG!*3(s+}75lh6 z$#}k9%wdOiT;0Hw0sd*sJw=Lg4vrIa% zH&g3`TH#Dl`(%VW|aL#f3 zB+<@K4*oPTE&Yx`YmzF;nNBw)<@jFrgR&-@6?t(-$Dw|I*)&vpSWZJR=&ZTnm*0n` zD@jSg%b+wTytHwpQDUKBd_eer2U<5o9+PaMGSSPLzp0X#a$oZyVY-sZ$gKU;g=y() zKP1RA4Pou4q$p;5T>Gg~4HNOM{WONv-n919S_!7RTKnn1H*dRR{^fteMUwcRbTNJS zpECSU88Aga|M{OX{NI#ebKN=)f726*9M(HLM+ZpjEJSKH0XAM7D z!_P_gu8FiS4WtS(si9i6D=z(0*IU$=QalN^;#Vf4{=7$iFt>&9;ulFNDJjF2t^EE9 z2|*bX6p!K0!JmX@u3X}GpYO~mPP5uQ^SWch@{mzfmf@rJ76(3_g3@0OO`AXH-=HvC zbAI_wpkITq*9XsO<&<>(w8eUA#Jq{8le}nL0)@UVd*jap?7-#Pv|%<+;q=zu4LdAc zYkrb<^Bg-yDWV##d`^s(nQh|9Q6Y5yjzCK3LdTmXZB_Q50w)J0l8ytRb=a?)Kt42g z(nc(fzg(w`fav?{*)QiE_UGPO$la%Y$T~71mWTv!jc#I=7+_7<;aa7a8huSwEvR6hEP?R)2uJ#tvs>W~<2M|NV5fr7_~lE-L-1?@A@_oTTkckvp{ipZqhaBNBn+n4 zs(Jc`T<$v3lUiTS9iCc>#DgMm%7xeYy2g2%qRg$G#iyUgvaL_PIudmcEJE8sDd=}u zl4T<{>)K;7;u+E)R&ACL+#PsuYj*ZTRX4})j-Z(~YSJ+7;`bv(GljcyZ#_AEjFE{Erq6H- zDs??-k_v#Y1QiWCYi_ICh}Mcg5EWKVe!WG6^68YI;6dAr`YR6KwUTS(zdq4$P$BJF z9e7n~+gY^Uve6#BT^bGy(5$5RTZgNjL@O6bwBPwuW*k4EoU%DVM-T2^W2{bSd5cyM z>A?7LhvMP`DFQwkJ6s(>BuMX)ViC5E2~WR!0Xze~o=EZoaUih8s->nqNdxN%FLec4 z6a_n#mXY2R_rdubA+dg(J8byl4kw#Yvv$ee8u9P4%{Hr418)jo+C-WBPppN1%}t=>Nm6qru~YEb5i#hJI6(0@)=c7 zELqtd$6*Pwk_NEBnYvwfAIBD@sAS+I3{($PwtIlE7!sOB2PvN?PXI-Nf!Pm^gy_# z&%pD$3SCTde36PYkAxlG1S7x&0t|cSt5`N<7YDEQq~$z;iF;Co=1ydExv zX3T5!Ek=D9SdSJBRuXn>>vwdV{O#{KO<$IXe+okm zD)66q2nsOb-|M7^-`Kdq970z1gL`C02Q~tYZZwu3&#*PnJQ!^F_Lb4>M|B%H?(CB_ zuHEkHyahKSpW4t!Gl7=QhQPw*%vKkVKlg|I+S+Wi*%+UVBp+3v9*M0@^3 zi5ZD9**ZS_{ybVL>_J5j!PEsi4<6ra<8lgIFw)TP_reM@b;N$OYW%l2e%_z89T);p z5`GAdY4l^xhd5Ydjynub4A!j()*TAwGy==CKEDsNV?eH$9YUxuuGF7rY zc#pKW-Eg;VlcwfJ6(G#HLA9|I&|v&pc#cdidT}9VA5ss4JPR~@S2eI;QU$z@U9?{b z44RBRL)%^fqzcd5l^lJ<02Vt1IdgERe9>)}Tn~4?!W0I5vT)^dSNliwu=mwxK^2vj zQ(F`aku#S??tc-Shsj6q$j*mkjk`rkD+a!Q3HGAG+g?yll9tlK+?$g0W(il{f%WJw z=$>%l-cI8{%CqQ&9-_7bJ1F*zdP{On)$8wali=wvl%=B&Y-xNZ?|<-LnbiZK zVk%M`<}cqKUdMeoO;B*tQxKsZzGMz()GJ5)vFLygnV=*r2+_pGNbh_i=0sDZD=XC) zg5c#)PHs^L4?Ziqzv%0I4Tq8)rkIBxs>mVfV2br4l8V_5|fc2)K=BG{8n<#^Zv>kTRREGr>}x5 zDN1w}Aj8;6Zw{9DZa{t>3jtu<#>a?r`rw!mMp`3>|0n+s5Fz4Cr~{_|w;>)JeOX%doJsr=DpNU>%p+y zLgxec61pJ_UA)A1Jj<-9S1&ga?AzKY7rE=19Cn3W@mcfrWAUm${zMkGr` zki(F6VRvL`Mb=BeBRA!8USGuU5oIZzj0q7%9FBmUI!Dxcs+&QhIqqP}M)XH^1BmV@ z@=lEb7`zn?d(b|+m8qWCjR)drU=_2O8NjL5c2580Zaru{Bv>{Cfza3%oSV${zGVPv ziz$n5)shChj&66I*?1-Fv2XPbPlSo{2w`(r0))-cax&eVMCMW( zjX5anmIEPoTy6HlS1CMlC$T82cm5*EJHWi4T>1i}LIYRwQu_M-jr^3uj=wSljXu+6 zIDG%~4-EM;hUtC|v@l!iq{U#u^8ER&o$HilKhoqM)NSm=UBy~yFabdwSo8Y)^vC!4 zZ~TagBNz0BUV)WISuv_Z#X4ufxnwua_+t@oiKbWpum{84;4NY9+5QD{wpe(^u;O?C zLo%37Fow$WzF~G4?uw}$VN^-_UgXLr6#XJ=j{Kkfd}^oU8D#Oh zQ3&YF)Um zTR5WFal`BUgmg6?pRYm&_QLUmdI*t43Z6!8QC7OmlJcFIh!iV2ydun#7zXJ(i3 zK-F28k04t2Cfro7%Bpm8tu|)TQOHb zRqrTOfmn=!ECh!C0st~Xn1*%wX-b2FzjXe$tnnsm`T6e1z0Y<%3*OFixahu==#7F6 zMp@E47iUc?uIhLDnQ7!sU(q*zXIjzn%Id+D>8uVRp?e#m+E(Zjw4RkGOSA>z=qXX; z>yf`e(bfX(YBt5-3zMX{5(I`PAN=k!V0ODSh{L;ZtQRFRpNLM&}Oq%076!1f0d^vwa zJ}U(w85HX0{1w53G14QXJ%wEua)$C|>TqBqmI$JUXd_x6H8k?@zmPgCH~CAjgSP@N zP9T&(*bhF7@*zyV@syb!P%-5vh~GhO2v$ljvVQ!gr=TDL7CaJC;(CDfi;%n6+If%w zNa?0*##a?6Z{5ZU*Pte8D9QqZRD)*GJH8fW9QHbY|Lh4wLm=S7fLw;|;Fug^cYn8K zjrN(&35EtTWCmKo~s&8xi_}rR~S9V*H!1+$j zPSYAO<8dG9LY^7v54IHMB`DfpXddNQ;!VFI<3vftnrM4Q-7+s0*#~%CHlzs&)q_1K zaATLd;|}1NQj)FCVRD(j`w+qk=C;7?Vxj>CpmjJIyp}A)ol--0<;SM+ptKkWMo{uG zN4m*oge6h31Dyz!lF~&PC?(n3g7{NQ*`Y2fG#!&BlyFT8c4lFno(I)l`|C7Ezw@2&PRi1Ll(yb@>v$ca3Wa{a0d%|V@g}Wcf z@(!Sd0-fHGb<6&!#qfTFd9ce}8v%jpFBho>p0g@~{{$^2d?u1@VINA5=VCzCEg93P ze?ViYrfn6V+|v8l9g)nmsM8Z?I%g5h15J9`TR~q_n6#AQN&-rSP+AIxaK)$bM}7!@ zfTNgk3NYN*uekMZdI~~kCVa6Gp{@Ktzkv`dMw@PPN!3fR%iP*LPT}u3PgP zBA9w@{)uVQInuWS$&0fCR$oq~T|2fKwo(B!xkY-^(8-v_ybiUnDFBa%!7R4ZNQE04 zrv|5H05ju`m#~n8kj*_Zmc#P?yq<_W2G|H}Sb9|j6d;xkg7UfpB3Q0g{Q6{H?oK6e zb5T;3#*nNU|LCV#{SZa3WypXWVt22Pf%|DD@IwUq{ziDz@xCiy7Yf@ENmoXg9{h%|#cv)Ik+r@a9W z97#z%u*Rh$s!&5TwF$HG?o$~l{Zc(Y4kV#q{pDu!;n>nH*Vo6}MdEP7wmrEYF~0nb zx8zZ7YtF!FJrCN!{UA<-13{J}k%sd_YkZYJdDy*+dcu!uKCHXJ?J-Mt-U`-h1F20L zJQbUSE{J?tXN-OvVu5j0Y1C-dz>g?5`R@p|J-lUGtU}#@WP@F}3(>9A z5V(txpOSkvf(t=0uKe~+oj5Y`56Hm77u9U`u_%#FPhDWEvt-S>mX>8PmO|9@`s@%0 zdeOcAzAI!~>o6ZYG(-b`lI%N%KP)EgA|lcr7%A#vWNxGc5uraU5kA6eBALsgLH#2U zbM>-WW(A5z13m<#;Y>n%&_G)DUjm5CVEY6SK$BV>J%H2B*i)uIyp_*J5*xo4`3%Fn z-(V$p6}^8d!g>B(C*GC3MsDR8g8;;FGms^sKv^IF#=D8F^L327f=AdN0|wMFlh`P1p#VClFHGhO0`63zW-2h6iQ?nR&mVU zq`k}3;rmu75ON?|J?hb;8o!||8*K2Tlp){|Z|YrW#~2^VSnCAxP^SudAgdz~df#j! z*P&bw!#!$%d+J)`d2ru^sF|CxQ)4XpD>a8kWhC*oIh`(F-@u*R3CTIvr3#EY}O{bNOBC<`&&qp9PB3d|GJ zsv)LU(cVAU>)%cN178w7ePolY`pC2jmh>UW9|Z5bSFL;d=?P*sQ6Mb+kb%&OZnS5& zawJo$7|Ze@$3ozz08~E1gL~gY305#!%CN1$D`{1MiWe{vV~<7(gSGxPue;)M8Hi8cRAPU-N&q=DRGwoM(u|b^y8qfBThxNMNbDLQgF<4o+4w@n9^{O_ zDa$A+fRjIklm!K=6mbO|6l%{1wjhFzNe^8xI8ul3eH^$g5d4vplmmgQ3y%SXs>c%y z_!G4Xf6!WROU!n?1Ib{#mM!ovva9?HBV*<1E2)fvWERQsICA*gLNt&Q#IEVaCkS3O zN>m^`M3eI{c?N5^9N%S^jIiV6C7;IUH-{`y(O~EyU1&%}jpI{Epr_|I2#BJM7c+(` z^C(6bNGN`bz=P>t^Ec{AO&VUUwEkSeg229NXa8~t%=O}kmW3K6>~90c*e@>dng z?B9rmiHpRVS>&K1Vex^dK@ghdQYJnis=1Y{I8`nWim?ub`})Us_MDx(@;f#|(gEV< zD4>BQeFr!vXG`8*$85BJP95_Uh%ucs@o5}D9Awx1f8ZgMl&(fC8XMEMupj>XXKASj z9-HAQSnTz5UVKAEejbH-L@&A`zd?fc!%MoLh=^iFTj|@_$ku^)l&4drq=;;&tFo0p z+8Vt3Wt(%HLs)2k|LnmUDS@Ui^C{&g5flkmcs|#xeAsvlPiSz_{77rswEy*U zSpB3}{`D#8&T2TPK-zHytpjF+-6l}*x9~q@c@LxLiu;^~->`>&Sf|la^5xSYs4l(~ zh5JCt?OQW8t0CT+^7fM|RyoxgKiqUT0Dsz5ls{sbm5ArUDNM7GOSYe*XoKmbR6lku zDhhz_Lf=Gd&WbStGYYWupcdHDH|s_%YOV^e5u(g$bq3N!IaD9Sq^AhddjvEjCY6p3 z2S~x!!lEqnC2;MgV;{q@h>xrXi}(WqC$Bj~F)AN=T@bQB&sRg1Rrq#95P&Yh5@8QP ztdgKVqWB-?`3|hVo?RCpiidkf{pW%Vz4r-YeE<^K9@WyqAP^=rEX;c<&XkoU;i#zN z29o~}>-G?Pu%OY=`pa796$qLQ&a0_e7cD)8gi&s_&~{=qamz#iwVtYr6nWD5YkaGY zefR{M1Linr6Qb8u{MIB_R>Tk0mJX6hY*1BVagIDygM!kB;()|KP(B5G$#lcrGBw9` zJXI*xkrW0OA9da~hM$m2Zyl#-11*Nwe+yKTr-?(@-2%YErmqmdg4a3=saZ=KRW+;y z1JS%kB5%&o+c9TlE8g6(XphBJU(VMZKw21s@)T+~xZUT#1Z8{=*>HPx;smPo^^Q03 zn}W2_@)8K})>?CiU}k*RDx&o;ZiI67adSw|800{1>v=sy*iy`d3lajXc~PYwaAcI` z9$BO3adOy$Al@UVUo{>EIT;kT?JM}bne0IC2Z)b$kWgY|RMy1wV~DO$FH-#a`Ja6Q zEe%fX?*`*RyOAN?lr8vr`9#(XZYh?0kYS;Ea1mv39&-jXxuTa?fjADq;V1|zTd7cw z{2l|^n|r3}fc*oW1F?Vh|HgQZ+{dAHcn;oGJ z*lN*reMwzH_D_t$#&4gYg`y%Bx6&=LkUv9}Z46f{y1&Gj1(LN?(<4+U#atKQkA(De z6sRyUk#K8Yti}`2Z|X_q4|eM8HU=(;SrDw1(ulG`#SBC-Kpz^W=idmxf1L)3#3;ha1aW_X`Y zNEgJT9u$mSgd!mzVu@!B9MwCt5GKY)FWTRx=UK=oaj&NEWr{0xYo>>+=gW{6TPLBm zQO_{L9hG-cxKM(ffZKnFoWimnMBDV(xHvM>uFp;m$|MjXE3UBGN8G2Qpn^$2<}kSU zFZ)ZT%buc>8;d$zur-b!H%6WfdWBgzSux z;4b(9Fwc7^?S^hSzKEmCh`Y7$3w(%amXoP#Ay^@+pF;JWlOn2CuSa!bO|1v*YrIV# zFwhNc3*~MaoW=LPrn{y>cL}Nm1EdgBPR=R>!K1VuwSaV&f*kRp+S)p!gmYh2AFIzq z-#SfhzR>i9zo`TJ&5MQ?o_~w`48-L=D@hX^92ZMYAgqh!hq;;iV*J*=~N$&KX8aowiH0t42k>i( z<`Nk%cdjjO?SLJwR_+iz7-0YH7gVtW&;9*Ghp~jzLAXOuQTko1rRn2QK_s15uh)X` zHThTZ>0haH>PVO65T)9|j%66hZVio*9R$JESu0i2fHLTlpRUq^LYp#Tn z-D_4>G*m&vE_X&8V{{=zuRNf^UGPq_n;;qsM7B{rx^p$wZDf;{Gf>@wGiu;@7)auE zXs2{x4x`sDqq0O>CK-WUTEK-PvZqjp-chthiILpGDKd@V z&3AZ$>*PZ50+SoOeN!*|;d;EZZJi4wnDg5PS(xL1vE$4(SxM5FEA8&mkkuAE@FT>xEzP@rS}J$_?nvZIl^(XqM{4m03?tQId{+(X}+V*nCtV+ zg5t(ihvc-8qM{7^+vs(R8NEuSmo*rLPtojVK{x1kQEEcI0=w{uZPS%jo!K!?nC@PS zl->cAkU~b4R?Kxlf**n>_&cy>7p9@7PZ?cA+0az0+V~(Og_v>`p7zADM)Z)FG~cyR ztNMTqR>MNc{XqfnSGmcDYVneWW;9kIr-Hv4Q&C&Xad#dnO<*t&41a~R%gP;}g;V>?j1W?>EigJ{+3d5(5bN}=h4N-g@FU{sDDsmjb*?FJ6XSuk zJT#~6Thlcn0&BtOLcAS@X3^#F{v0=>bItg$x(a)(Cy`6YI^Ms*ZwymUC=FIIa>^gi zqK7!aTnPk+`m3mz*lR^}SntS#{EDL$>gmON#juxd=U-IziD-D$WPCTtt_BYkCqA?tdBAXJr->X~~g~$Q7C%$702`VDwf>YASyABS39&Ur(F?kG3YNXL zRr4$8nFX^N2*_xpSQ#2Wl!Dm6O;@ZJf#1KBR_H{1rHEZvhfV-7%a^gbXsk3jV*9A9FHmDqIpdRz}FJ0^f^2V)El3tB;T= zm*bf!d5aQ1$d;XIW*GM)5WJv2T~8BK9Vltn=g@)s`h6e9v42}nx!3C66OKW3S=sLE zuAOh@B(<>a>daSe{WtzAe5nCy;r$tf^XA73t-$zvPdErI>uoL&R&j=Pv*Pj+qoD`6 znW`>NUBFM4jex*!;XTy)l`Xyc;I)>8T&JV5ZuH94)p=o}W9Ap_3i49ImSFR=Xk6%)wAcFHo$O%DjPAUSX(tx$X2MLjNxMh z2kQ}2Npr)yxs5B%zoyP2!gZ;?EIJuxS57(5T;uTf_(NMeVSi4LBOC^$R~0ab{4|&+ z@2fte1*-OmLH0Pg9mQ-c>^MifUsey`T z)SOYzwC7^;%3(lIq?9Ya$&v~Y%7A(bp}Z7mJ61~yKN)Yucz9bD%N{EK6idJ%1->_d z5#d4MR3Y!uD{r~&4Y&@gpY^;s zb#RP9Jn^0aba{Z;>VwaifnVx*qoV==U4Rmjf?;-pm2Wrieb&HPjZb+sE$Z)Dx{C)_ z{BCGXQD$`c9qhR1N9~;8=_Lw!yb!k31}6GCZ~#aA{ZHwvqKR)K3dF%!unAdaDU)Og z1Gr3PAoXO?sH-R)J|puSWv}0Iwpe#UQ>aeH8R$S z0zfctvj4h?siwnv8cOFe6ms%p!WtBURVo?096-l9D1$bk$OCSdQ2uUY39Dlb1GYSk z2^qFhgssSd7ooY1)Vad*LfQ|oQTt2 zm_35lrF*hr_*mrz@jhH0wtZm?R{c3w3YwRpSvQve{V^N8$4HB$4u!f71 z36kW=%ql#?5LFe3>IrDJCo(MH)LXIIKR!L440@?_cBx3#F*B6q0KeYXO%KD^R%y*6 z9!I{(xY}u%{)iAmHihsuqcaF!R+M3r6(A9Xf-iid+eCz#iu&~_L`Kd42zV`S1X2Nb zuL#6@!4-!Fc?qp2CO42O%O%z4Ss%fvR>oYRo;ZC6vHuL>bSd3-4(rXLGYT`z`*n|8 z$0%%AfL2tAY(hjTB4UX%ZV(T!CB=etOH0)MhFvjf2yAAjMO|Q&)_@lB0M9|w%Nc(Hd9jbQ>xw~D zujB1g5jW@95$giY{h=1tv>ebm)X}PMoh{&o0(+rGB<W= zgpXQWUm~+*RhHyEV-cx?VyG;{P_Vek8Gjp(_|*|2Q<(kKS&t{7uwDI~^(DyRG2)Nm zl5j6#Es|{{0Rgs4N|hSJiI`s01SH!^1E7KD6-u7Jb-25tn7!&Pi#L%kWxJ#F5miG- zmMwJ;ssvEP{6}342`b^?!;Hw_vwIHXv5T~f@wq&j2OR&d`4JvL;($`hBFq6}ByfXZ zpu~Tc&?1eFoWTlF@Ss{<5c$n^aT&A?39hG?eHu^myM8^uD4P+!i3n%|!d+|Bc!)=Y zYv$MK_gR7;It{nVGjV!r_7~hqX&Wr4H3|h}T`V_SR}x;ZlDdnry4`36US3r4- z(FQotY&}T*A*D5{*uP=5Qh}xZWzmKRUBGn~!e5IZEHfm&ptx)KFJ{F{*mHV}Nf-`m z1ul88fCRP<5;V6U(dB_O%_cko?FB6vL0SSme}rsuQC|wDgk#e69p+4Chl|vO&l#M+F_PZI@^l7ncAv(2k3sn z>zQD2z1ME`sk6q0HH(c7PLXkiE6#vBoh5P=K3j$G<*MLym`*dkju-2rty!UANfe3v#(Q>;r>BT4rLOps8ig{-onyEj~N9)xSHQa zL731@xuV=L2~?ln!S8i`BY89RVjae;6DAMRE1Xdxca3P5Xy4x{JfPwXUn_pEUTuJA z_M$T3f;?Yqs7%Pr7ouF~BIP{V;(%Rvhk%@27p^y`Dy-vbO2t`JP(U;m|Hllxl8fRs z6GxzSwX`zDIk6#@5)wa;p(d2cx$yu;+-Z=^U~%)2Wx$Rg2s%i90f=D%;&;DU^pS6p z8w7Fus}JG~1nCTFm&97c4TL>o1IEyBZ#)7wfc1|+K8(l1A%+uncYlW17*whT+5Q9I zpy)6fCWLRdB)9?f?sdAS=%za(r6pM+bb4*HA|M~yiIir;>gBAjssfRL7&o+RuU!5)9F;x=%S_h+iO5toh|z$SSCs_`)TL$E( z$|~w$gM-Bw*3`!QLoMuMy^i&ze2f_bcXQ;_sVc;KVHeKbkA@1Q;R+p9vx&S@VzyiF zBBOB*Q@NYozPvET)~zW$VVtt;HnDc=LBs=UI04i{>!w38HR{*f7}fP z&_a~qu4WO;UM^NAKeAjP)=*yoZJ|_J5!h0E-gxMs$JInK+%lT@XM5O}jCH%ctOFKC zlYavhx6J`lOOsh8#4j*GHknKXd`}{3wdBGo|T#_C#biUh*U?B!FYK(Tp}?Y)uip3`=)X8de4u9u4!) zV0NfS-T36bPw!X8&VA5$2usAZ-5=ZK22W)}bX7uT<};*tqz&fr6-Do^(SH{c9!N9I zoi5rC+3PAuILHx}m_4`TxIMB)lEhPn^$hs?%jVuXkoZ`1u`B+8WdfL%+15n5vkUpM z;ziX^Skz}IZtPcFfr87ra#c_SRQ9_3?D*cTo9SsMABeeM%SnILqQ3XphcBhHnfe6O zS#249s>gLssyWId*KPUXo>?R3&(Eyg=KkX!{HaYk`UL;UlQlAqmh@Q{_e)O<;guE7 zf1bT7QPG^BfW@|X~8ed2@iihcmAIRVS`u31{fA{4~? zM^*4y8l`LD(X@PC+9}V;XPO~qx*=gJ^pK9QvnK}U2NU|EWj%9S#4`^RxXnpY3O`NM zYd*YZu^)byYhtRFYtkM-{q0ryV3qrvw`sV6(^P$tE1wO$W!%c+LGiPFXHOiXdwW82 z{U@qM^i_|=#I#4w`t-jYX0mb`j_+NX8QeUj8Kw7Yn3hChhyDM@)tkpd`MzPpN~Kbk zB*IWil8}9;GL{G-WSt^p&yt-ysmp5m73cv!(G6Dc_mx(CCN>!e=j(1z1p8zR!d+fdFr^7X|Ig| zM%p7`#D$Gu;x%=Cds}eN8P>eA+L#JW4L7vo`k-=}EKWdEF4iG=+@OAW1&ghh*$j8x zhaFq1$^}q8x8>1RZ4yAQH1AL&YXx<=yG2O#nto+q4PYL+n>cFO<9SCmRi12K%bY&i zRa?KKo!of6#K<%`Be^4t`0vgv)&)z`XKgv_LjuQg*Ro^Ku5N<9%d2MKB{+uJ6zBDb zmCA1TSt}V&YQm=E|gUTHP_}xCxmZzn)xxk*Y^(@MNcu)TFtj+kWbi`--UT z0#+a!wWUetf`de zajR8ae{LkwZH*8$x)NURBLq48?VREh*z(cF&dv^f{WwG4?tuOGmvGsGIQN_wzoV*L zhb-wi%kNvztmps%$KjfbM}~AX)!-u&A1XTMNR6aU0bsVzEC&x z+a8r2qis7=jqPi$atUH7E6WpZ1!V_ECA{~Rnzx)6Co*w&4&U)nP}p77N8@qsT_&E}RNm;B9BdD!Zf*1A9!F)? z{2n??4d#%^F)r^lGUQa{_G`_;sTQySNYd?-Wh7BDy z7R30>tOjp6!j9^eOLFUd{@@|{BCO#`+rb|g=J!|8ZvDJ4^nPQ!1wwbXB9f50PW978 zv_n=umPEk9Z~Lz81TQdkyS8&okv{EI^>Z(DBa1In?HR{vAn%ISd*tZEc^CV1F$TH# z*3e?VV@lGO+qSLxqZhlghjF9Ba#gi4#H~j0KHEg^g7WZi9TL9a4SqSvbdbm)M;hIc z_aT<0yj0eqIFotYq(3!s{6T-}Gtn{9w`4bv*F9H!)iy`|5FbpbV{YCFe(>{N8n{>% zf6vY)n)Vt0fz)WECOdxf`couFqD*&u7k>_eT1Sd=cf?AP8t<|W_Z2C}TFd=jffSR+ zX&(5;gdx_wLHR9`bRvkuT-89+2YOf5(1e#>mWyMHD~Id-p%b3Zf1psyirzMBEnTj4 z#vVP9o5JKRjgGzz>+*XW)HPxXUu#K!20^03{yE;;8K@dmII`sK+si9)e&JbnNV)BT z@eMyAKkPl$SsB%ri*}O(`-l4n$GP*neSAw?X4mrY7{9fh&B^g*Y0?fxR*Ng37%+L0 zD!f3kwcJL}L##gB&KutlDZnnZvy!(npF7lEC*7R5tseo$nhAI*A5mk48ds{gO~1NMcZ1*+pZ#`@tRjxP>LrJ(_LVIQHXC5;H`f!Ye*ZfoF0f?;zTd#{ zSlVjMXDu)AnJmzrVzgChk;lghj=1@;A44Jl&qFkL2)!;EB8@8_+Q5M}kqU*{syN~L zU4M>M5F{VWW~vEIjYO;=!}fNKSXVMniyQ8aPG&C~2IaVIySwjRfGvfs(iIeo9~NEL zx3()BduEb1oO(RgyIV#**k_(r932ao3G*Fs^rpL?Z1#?=EUcHVV6CEyu3%+Td3|b2 z+8*Px;R_;P?sMO_wWl?sxT|Kn;<6=fjBX}V@8Jh4uCto$Zj8(Ad80WRZ}SivXh{t-QAmgY+I@J+ zthRS#x3Nli-d|QfyE{crYb|YZYC=x%%_Hg+YhTy?e&=VHwRLcFsC{ElQu21HWsk&4X2&8xgoQQ&(#@6DO5Pi{>yj z`NK~I5ph-w+T*A2#ggjxAHtgH3NXjp+zviufd@8H-uBdq z^s^uoIA@S)srm5Mn35+hqHSii-D`8KpyExH&9O_}@O8cTnJB#7nAqso`U!(P9o50% zD|!*|oz4Ei8@mrv*mhVbo<9|Z@3y$bfX#^Q4XDoFX>uqn4fULvkQ8%87l+kLOoB2B zh1HX$zyS@7#=pvKXAgFz>uW*|8{~}&IgYjr39KZabi#}yh3NrZL9m?rYe`%(4`A0| zQsO_|8mRw2LiM^P{EQ^g-rfGqs}-dn*GAyR2JIee!m+DLs`@Yp3v;%hY|5=YSbU!_ zoU)@08`8j&Ei#Tz|Bi3e*H+D|^CKFU`^_}=Zo@Yhb+?)fKzDqoeUzJ4y~~6l<-yed zt96oF7v$54>`a=#De>~RnTGY+%XiBuhu0_c?-mus==<0{8N^gC%y(D47HCjJoyE|a z74XRI6z1u(q1 z;^0Xn@!G0I!??q>02{(@b>w5sRQV)5aj})y-CZwh-y-6#1f3Sgv62FO5C@4i<)z7$ z=W5;!=*c4Yx&@2Q77c+Ic|o|k*FgbB!u6nZ@4omByHcxc_a5ZlfqjANK0TOv0v|ajVB$D@s6tApAIXzp(i| z{RV(*Kh5~FV?u`4H5FC!0CsT4xG74NSH?x87_TH7m?F`hZsqu~Un`q%ykpwePdK2k z8ns6fixRe!NqZGr)ph1nZVs%xO!{K&My5ieK3yO7{IGE49a&eGVjvL51ewZ$s}^w( zhzTGskrwOalZJ-G@{y^}ked939O^vf7!Ok0ozcLSw?Nh~{@XeO)5@jf;X-oPYA5S+ z6`^8iBvqD*WxOJmCwr*z&5@2O;cBIf>aF5B{%or$O;n$nPNF9P2Nxb$*;&3(0Q1f; z^jhu5y|e(Exwr0#X+eQ9sx@kTM3%M2MxGUr2_HV|KpA;B4IcPYMJddnGe3s+!d64{ zeTMfRqcpqTH(KO_9)-aD?MWm_dcNd?hUY=xx;;Bg;?1l5oyRVcO?Y4F zKN7xskQY0@LLwY?>$NTJQZ#%y3`Kf8I^0TeY2x#CyOJjFvi5@&Io9t({Fv{&FHHH0 zb{%ecf6$%wo7o7cf_s2Q)Oqb2tMWknu*bp;cQr{33VEi_RxgiR<*zg*c)hT|9k3SL zRJap~QBsHKJGFFVL9@cvs}?f(BU@UczHT>eeNuPIZ*s!FDsR)-D?_VmJu#$<#fFSH zJBPuhUaNg-6`o1o@u{6WBwtQh2X?S++g5kdKn|}-!ZF}p%BxYleW7*yQ+{-^+F^af zKc&oke!?|V6h80a+TY{lRyjD8Vs4?j{MyFucx;RVmXIn}XF7;^hD?olPU@w zX)CJ5%5zMK?IPRN>uOjlrhHJ7aDxKyWkk9j*k+g`N$wf{9ccKkN0M-Q{18-{of`s& z=pg`>Dnz9vU7maSl)h=IfOIb9Tz{%e^+QnvL%`STtfeIIMmmKcvL+hfbahis8!S0+V-Oucs>t9Gv{>*nnI zeqNxwQU-d0a#IH28BJ+2qkdU(;}I*A6n`9#moSMu>&HJwhYp@exz6g&&a3Ooum5O~ zyI*^EZ;j2{?VE1(>>HisxnD|Fo^LXJ7mk~wRz_@&>WTGf`DWCkcUV|iSp`-@E_M?i zupBwkLNtcONlP`|qjQTJzx)cjO}3gX@K^WEtC%X`;ij-C{sU%{|LM!c>=QK+x2h;_>SB5<#9#Yf31)i4e>-Tn$WNvj_Cc(C96vS#)KWI4GZBgu&UKv(dULcDr zE7Nxr7Rew#Cq@IX$U50(p53ibaQL7`U9msx)o9XGJ#}))C;^LeUuweCgE5+MXV}R0 z^2q1}YSEW}}Phgr&im1s&Vy!eL~E34rzj z4us{05HkHf{2hOnt=0>D>|e0Z5uo4AlpDuHn_^_dNA}gxv^Uw*DN~WSa{_KjN~)fP zj{DP&i>Jjzb}Q{Iqx+A%Nksf(ZgsKdF)Mxje563CJbwF((TN?SO-Gt3Z6CmQu`Bld zR5T*)m#y@N+pU6h?DIJUSmN=CW0CIlNj^WEe=6?J?}j zeV8}^bZE=!ef|z{0EH)OVXnhLN@h1CoIe0^>>;V;0)j#f>-_uZUJ|%R?OJ;ML(Sh~ zJ~0#CL>I6^s>FhL@ecP|2h4QvX0uW8q@Y39I=%~ceM;wIjpM~~spFh@2l?Xy$J!MX zX*Rxl&?&5e_4tL~g1IwqHD>`i@3aY+Vg1`#lqvEh1R0gA4c6Y(WK(mtB9&A>&cJ_8X;|T_d{>`_tuqKh4n{Rt}e*ej5#W?Sx z&gjc-PwH?4UVO#~`LS`-7SH~w&aHc}2)p3M{@E@J1w>!bG+E@dWapKQ6on!h6VJ{R zd4q|ap90B}CbH$OXhM_#UILo-Z~+v0UR;p-Z`rtXS>ehP{VM))q8mlj!+ zi}GDB?`HdckW&y4%KUY~_(t}CM6$NjaVH#&EUT>D+^8pF;^gpU_1+89BSOw#3o0G+ zk-RS)bf^9f-2a2W2f9aKvpV0`WI~iQ+WR%*4O_d#;)Rhe6L*cS`nj$_N1q~7>BF6% zZem+K>4|C{jRqwdkpG`Yf&3kD3sw7jg2i*!@XxX1(0~}4Z=0A z{ZJ~JSb@os+;V%fnV#(+y`Q&71O*e?C%rqAROc~u_-c2*`H9i4_-?-M1zo|BXwr71 zY_j&sDejZT1JeW`E^Y+c8V&z`%mIqg)SZP2(afZ4#y4V*ta3XDW&P_i1h~w|Ve{eq zUhH^|9KJh(-SKZ$T9Wbb|2shPuTy4sy{SQdudhKmrv=U7!>=P{CM0W!F34Jk47;vy#r==L|CggLOIHk%Hj#Sl zXu^CnZ3KznIM8d~2zn#6-)>lmvVe1@za^AVVVuDe9s-!;+@sSJIA{<lHi?Vkju)tq|Up&d1t3dz&ByaMMR8H z$9%j#l+Ewmzqrl?@_hUEOj$B(v`gOP+q%)u%Q zJ~u3I*nEP*Yxp?3ewQJryXY=qLM?GPhNtdeU%0Liwo@HOjjmtaR9~6*);yjWN=qH? z^&D^U>)sDoTH%Iyeer0}-7dmK_Xp)PH`A^!y?8YkY62U#yPAZV%1&`BnMaSj`8jQj zS!=*_QQN&*!Iey`?yM5sOm|8(ljY;lB_3$QXC{XmlW7NKLD7&W{ugAdUJW*G2kPz4 zVxJHWzNP;Is9smsw@))o#*dG$hA|N=Mt?gZg94e3Bw%xRO@X4P-nrcJ$=Y5Xi=@RU zyyDcQ3%|+OR4{voWVPNkTTr-OOM-Wy=jV(KM%$YB&(2YQ{d%p6&dD}5z!2pX&)}XM z@jk5_m109_zqn>L{?^qdF^ZNC;=qXYguY&Ca@xw*sr_hU;b@8K|y*MsLs_0A;GwZ@IeU3y4pXUBdS#{`Dh zW$M{0`EuQ-%w={FzO|?~{nn0?lk?7fcjHUy#pt^gcj$L-+2%X%5Isla(~8#RXIXK| z1FvUhBM*$IdY7sR!iIGmX$6ar}v!5DiV>phB>{MoO0oDN_D%D z<;}WmCs&$zddJ$QwVQn}pFdO=lCTcxuaPg?+)%UU`xUMG6q+x;x15!{;j1bZNS`)x zj!MbWV#y-njBfJF&rq@AqmK3(+zT2DnE)(jig=oh-PH&5T0awB4>s_4lAM0nUHB>4 zZ(A?w;UH=4-=Scj{2gbPY$Z)BzmAhZ-I6^nT0nOFUN8D4croRHSI1>MML{O`P|F3S zK1#T)>Y(9^$2{&0m0dfAv;Lv6q7WOWK0?Z&Sl5mcn9V%vSGo=%HZ9z!ItQ*V zGStIX8(uoB@kx3HB<+`m{n;GYI))R&6fKhUw5hx|!+!(SI$S_8VXt zNP%SU1jZc?{jl&@!)*VL5BKTjLrbE*hJ{085nt0xoZs{p?@_Y7QiPseSa4ZeR`$*+4z|UWD%Zld5Nmb!?ste8!;1_`6-OgKRQCh%xlB!% z$gMZKJB=ZI9|a7e&t|xMy?^tU+~I~n_DX|QtQe*+EGKPMYNR^1&WZpW%Zh4JY3Gkc zYz`u8inKdTo7~ZUdcSxo(Mx-@icVhnsNwVG{<@^Rt@)fSx9_3(r<>b=s+354a#KOk7%6)L4*N*|BaF};zx;+1q zsqOlHej?4AJyaNS$6?2$X}`VcokHQ30z~TVcdJZFI-gKW5jBa|zxBITQ&t|WWiyYu zl{szCB}{#W3-P1EUygH=+~rSlqn9zu8sk=#)3xU5lqyCvQr9#SqSOQ)9kzGq9V$f% z^$Nz2PBL&OoQTT#)5sG(iNra`?({DXQFEj{Wg9w+$?eH2Ql_Fy-+kjQ;z?P1Ek&dK z0aazwEcM_QRuykCsUKWdq~7i@UTBWy{B+8SPK*AqAq^gVCF;s+r7mL$>)t!`CB_^d z-QRJvcKwh#ruY#>^TEaC{?sEhykVQP+ubk)yPlus;(3QYq$t5IOl#?i6c;PxzM&x6 zX*%TPqiau@cJQCL{J#i(TGZggf2owemS6ZV7=b_J(ibJ96W$V%C=)ti2c2DdJQ?QS zp>q+MDWaoNyzE9!Zq^g|G*r5rKgOjH&QJ&;H_vxa5%|LudYbQ?IJVkFAL_~b_#5aZLTeF5WV2k z)uAE7pYoyxKJoN6@56l$6bhjl9_ZfASR1HPb^G$8iu6sQMs>Kb(StXi&$$WGl;r2_ z^@^RTvm`&@;$-gjz=1V0^Qldf^sV z_-CdRh0_^@jpi}29xTwTX-vIVYN}{2YHEKP)&J*iyI?A=mG&0!2^0h5j~GckbYPPb zoSxMR9#pWQq$!n<;aw!bFiqW6=3}me++WMY8aA1m!W;rRpM zw^W+N&HQR7Ni+w6*xA+*pN|tay))%u-7arwd`H4lsTwQ4x;yE3%oD!G*`D(ZcPW~( z@D($gD+PVu`vP{or89j=+Y^Z*)j#>zBlXik7&ZxgHA<&MAP{HD-PhcEE>;O;;_o({ z&{OONv5E_6qwYMHts5TAVE(E1e(U}H9>mBJg)^p8C&obBQo9sc507Od6uvrjqt-9E zRnh#07Jby5{@|}UY!Iy|p(p?Zx=-k96{r1FWR1WnmCD!p8yqM{pJJNxUri?RwAm;StYX9&0cZV?$E3>BF z6S7dsz9ovRZlA1yWYMX5%hBZL`F9sYdt{#)=S1u#aQ00c?dyh*lj^*;o6_3t=+OH7 zx7p0HCD)r7&x3Hs66gA@T?58tX4@ITbwM7ze;3sF4kfBrzr%cQCTyL0XX}%hf5G(v zBe&+gn?HH_i+;RkDLB%sk^CKUUbS$KlL1`CdpoaLq}u;%9yY~9@2lB)sem1eOv;H% z1*y5U#IxY1#V?e`89gVUP-p;gelSgHDbU#9Sy>NMoNmI+^{r9y=h_~bnm)V2uv^+u zB=)Ih)}`&X{6(S|I3(Tu7^9|t)sbE9;|g{iCMp;AWQm>AtNY;9?*kQA?UgOTSsm2C z<8sn+ioD}-GlyUQo!ZJ&M1*PtBwH_nwcN(%X0lA~-4_|&h*v6sh%D&MLG%izGE^)? zMa^eB^s4bCMxGBe*XqD?%bDiC1?${1M5cX8)V^XUoPGCYhB-pRa%u!|ofC|cdo3h# z9DBjBE%2RYFP>Da>DjsG`f2$Hr>`6-+ANT_bmu+DOEdF@lCD@a<6^e0GH!b`WMT)<+;gB!p}E>XNE2Begye!2$?w(x~= z;)?ILDKHgRA%vra3kO8>s2{xBehhn~n~5sroaYPA1gNA$gh!&ho^F7{wIXnF)J>bXBoHYWUV*7-kl@E^xgu}7Qqt4+eyO9v zT;ll?`b@b=nb(!_=jhT~;~Jl>hc0_mf%;nP&OIk$T$+akjHB*e4Af&=k^IEQz^AxR z*UQsLIFX>Qm%b3ID`Er^m8rDP*LhMI$s%*(F!Aecr`L>HKkq4KJ%T2V>6;92a*V*$S5qo%qM0xv3;y z?+&uX4X5whwfo!J&gSRHyzRP10H26LSLbIG%TDSKWtdCPMF;$EWz`~VSENV;-?kxT zLjht(OK(OHnxzFD+9CQf1{p9?pl4Ph#lQ7F0j7D^g4G4qFcmBoA>&j&R>&6y(t(qn zM_Y!jX{N~hxy^^Zef@v#6%cQjAiXk6;uPe4BMOS2Ol=(;mxC9k2GCr4xcxy*9VEq~ zR}oGJC%Hg8jk)xk;1}%u>*!ubUJzFW{yLXejwXtQmr@=)16V_!KMlD0(b7i#?I3-| zlT?uVRhvv@{Et(OMEw*!Z-2T>PnoO$&7EG=Zjh)Mcr~Ku?%A*gdS9fydcT^@_;qv& zs7G23zBbL5w+lV&IuCAB>C-cQjX`7q8^>IU>fG!UsJL(Y^$P^lbAWhip--O$@+XcsRV)Q=2#}G= zhD?uMK6?7)jDp;L;Mm%CpP6N_p2hkziH$4;+DW^4=)P|#IDfAD@XE)eoZBv=BYAl% zDs6Wp9X<-mQ(u}da{@Rz6dLUkRyxN^wU=AJ-(r%4TJx+sJ*fyau<#=td$v_#>Q|1P z6@n26Dpn{|(kd7MvPg!~CfNC89gM2|{PUL932pHC#)-wIhX6rMf03p`M<>VRLm2Io zwXX>E@vb8ocz(A%#D+{Ms_T_Y|ata&EhW67@Mm-Nign*fAA{^8>Pq?05?gVDwd)?A> zrP_ZB027L@VDz{G)W^O*8+S;()4H_|h^;8@%VM01#y!km6KZq%iA`fSYW#-ZIdHP@ zJKoOthhpx(kNI3OG4~(32_JUMU{LW^6g)14Wks|IAP_1{LDe)@cCd~TbYi_1PsJ)x zy-bKobWxlQ3psa@%~bazc*~S3B<%C!*fR|UVb4c^hiI*VG$Dzq?UO>*{_@(yp;+Jt z__bX&OT`!r`)5I}H-n$^85uaEUIJh$fC%}d{FvVQQdINafFi5nOUfVvtt$q=utuD7 zYMHFYmUea4UJVC*KN25VT&IL6#HejID}{NQ-v}2UVkt;89jnBA)Az$eZ3Y4yLbs%ll zB#$%;q~P{Q*)3Q-I9?B$`{`?qQabBx0e~$yvo^jafc)U)l4>;jg>~W*;%NdoiGXkl z4yL)r$;tBFiexKReO=!n86N$?;hF?1!>Xl(Rw$Ny&<M+IEG+-|T$VNJr0~ssiQY z3`B^8w6f5YW!%kw03e}T?VAx0*o`Az{X2n@gHfVNBUWF`5fdWWoUijW;>Pfiy(`0fuG2Yw&PNJ&My6$Rg(`kq0Vv07?Rvk$ccEH)yJ5Q_JX-lkTWKJ) z>w0_sR%OfG$RpGaQ9&1fB=DxFZkn3P&XpmBCFt35CqSgcYWc(O;SR5pte(E3TDHDz z?Mi`oNcAywjDu*&GWjQ`=k#I%x+F6RK#yp!QXkso-QF=4e4U!+5Or&qhN~i(qApYi zFF_xQ3WEf^yxy710s*z`lQ^9YFsmUsL6knyH~en_xxk7c5U+ZWn33r(tj^iFDCKn4 zv;6AobXhi#hR+;syI!ET?gW@DV-@84EL7h|NABwDEfQdV%2%#vGdKqNOV+&0xvtm`4_BQGeW z7n3%ZW^A>&{Cg5TuD$f?5rt-@mf_Fa|t&3;#7OPXzJ_M z`z>@;oiNe%4X!x5&B&|6UQ67hX9C7fA4K|wJuACdBQpNug`KmTiDdWdWt&Cl4LZN2 zxYz{pawC+Aj-LMFmX{BR@A#SY%7@}~LzDt`Dw(Vr0h>(J#rDjsNV_mRXw=XHrsZlQ zuJJF#^DeY#3%zELrtjr3c`Dle)MDOV9&@y~Q|4_7t9jFn6{`;Z%3OZ;a}o;!O_2fF zC8_D>Wfi7aEz9Mmwr0-Q(aeVi>?b2ZZm%EFCk-lzzq}fxPk*tYwuF8b%gbq`mufPG zpS}{bf41jid!{LHCYRLP}2m0>3dW_hik}m7g70#Q0SEO5)ee&0uEnFKWJ%cahj*~r=lXGVC^U|q4(+BnX z*I8&BKXNNC$Jhb3AY)qpQ2gT__*Tv4AJp=h`o(TGING20iwMB;YdhB;Dkfr{>E+LN z!WP=UzM%2R<``2bo^g7rJ_)ONY9i5Y?DBO{CBKp5{vw@LYVZ-I^XQV(&?yQJy+Ug?24olIe(JLH1C4);m8+r$)&gb zyTENbsdK23;<_(#0hqv2!k@r2(R)Ozi}mI3@`gwSo&h9!3P9%X@xYlnQFaw=+f5=d z5xYqsQN5M=N7m*ZF1>T%gLl5ag&FBRKlw0=!7=Z}sfH-NnSB&HzAdt9=KN1j1$w~M z#>#-nRD!Q|fH?Y#p0ew6bsk-d=(<+N*pWeV9zu@$*3qM&hkgXn2I4pWh-go*O7sB@jH{qPRq+;usM4;a(>Dzl}9f~|@bcyq5% zs`KV0!Rv*eWAck4#58!Q6J{O^)6J(nntw1`u~o`vY4ByYp|i#_k|O0v>$(;Qw<)mc z`Imo$AD6|_`92j>Q>tzEf{r1RHyR%52ET2;7$IEE8)Y~-!|O;-%FT}I-H~+%{*PIb zpYC{^QPPRQL|rE-1ILnVD~*>t+<4=QS@ z&s84wTXOj-eHbLPnD9yycNal|W6WKN^c{OB{=^i>wNRBPK^IV$tUH}jjiMhYS2k`a z-?`{|iVTBa2S5Cq4!rovq{AIrV~+%gX`n9ram%0#oFz%GH^00|XH$&0dBK(X0Z2qF z8x3k$zDSi!#4`{ocVw*MS(-<)mHJOJ>K2Ge!=D|6y6@+JVEJ%OS6I$-KP#AA_W%B? zY8+zql_uZRHBRg-pMb>|(X32EAaoZAt#o5wFr=A^G*^53>FOvpB769tAD)j6e42w# ziGyRyHTQ?$*!UyEUfHbp02AN*{Kg>Q9N=Ew*Wv2oR47s&;8ijym1cy8V-3XxB1AMH zIC0>(p7#ek&wa;D8JDD64ochh3O0o)6z*66f!RA@O;e6+hOYIZ2iza`*j(R^XV4C@ za+1QJO=iypfzPfbx1k>{5CBWn6plN-j z+|;o)uTnV6yjQjf0SuiD-Vo@JZ~tt1l7*c3VP5s*TR>N^&+a`jN>}~InD?H!VKi#u3Al#O z?76_3GW*Ga_jj2Kj&>(`X-U{_2ykNB$nNeF-$gD1TKay-eeOw$IJ1J)M|8+Ca}Zgg zupk2jD#-Ln@B)|xFEkQ|# z-k#;udX%8UdL<^7yMAk&^p(_9E5oO^^oy9NIK5*sTWBKi@Qi&y=u0(k!pwKX zKuZ$L8MrMqIl+!^)%em>zjz;3VPq-N_4TYc^L38u4_}{i{gSJ)bhB>ITuXjQcsZO7 zMg^z4X{v+2RS=p^k);wg(v)``7if;l*dahdCNM;e=J!xQ$pNfrJi2Afo4oH+1* z&yE|aP`6bZewchVXjuG7%xJi-htF4_B9|Eos7O{82joE_NSzcQM~wkR#Htl>3u(6% z&KkY-{vml;7C2-zJTthYWqLp1733#}Le|n}{)ESo!5Z>&U>RM?6PRZF3>~l3X)4H{ zE0F@fPn;CFOxBI5$r;x*4D`w3eN58;Hh8)Kn5)DRg5lm;V!U0dmY`rT&GjMx7R`35 zT#(Ov3C0HZ!Le!`%eIZK3q zFMK2l-5auY{WiEwa_KnRB`rI2$@SFo&2Sp#cbk!E`F5sq;xW)5I>z%ZF{qOLme@C( zrG4)6Qx~dppMlDSCYOCjaloR8NlZLs>_!ElcoGU669)xwa)V2+49WQ!6FtVG~_c&K|yr7n%j)`%^&Y zb-KSk8N2MiICrY7ngD@Ghfi!o=9L5Rl%K)vy z$aE91hKU89NHS-HwctC&s!#j?EUJPGbUyG)4DWniA?x+KP17F|>7)X_Rb)~|?3PICi>M<%kI+rS<6X@F{}Zfy(Jr$Mwu`cM zJnX$({QZ)#Xr()&-GTZ?;R+@XK^}S!{W@u}u!}U8hfDsT|d@`Nv^6K|M^~ZkL zKYKYPvGgq&2ZG8;cT4YpTyGUyu+PKd<%|YBh9uwt^z+^}8EisV9`8Di5+t zu0V8_fKe4d-MgeV@1Vf|79KR;Yij75adr)03CHe!fGEv zS7ti}EWSz3WdLlrT$Gs$8-KyjJtZ>9Vsy!__|d6Of8>q=5W|0z=5e*9*ybj7ACLS0 zmo|eYX7|0wA~t}U*WRD>vFmZ_TY775;_e6aB?k8K=_tF5utXUFa?0ujH_n5;%wBJ= zyZTz==ZuORq|R3*9mqw1Q_VbKqV4MkD(l}mPZpi^atPComOb+6yZM&#NjPdS zP(7osYKgxsoJk%3U9r3B-Uo;DU;W;%>&Zj}Sda5NI<<@3bm|068!oM~2_S|OK?zC~ zslGlu@JSuOCNit{?;?<^kndBU?;v|7htnL8s}Pg=6KRPbA%UN~)&!|0pL`WF_E5Lk z?u$g<;SB$ELJt~a#m^zzg`fT~RInHel!7aqD4Bb{A?3Tjw%x!ts>0yrwER^=S|dQ< zpPzWJrbU+bY9O*=)zhbdkBOBXW}Mrs;IX(4TGUVukvgF)ht&8Hr_N;U4-VJejg46K zgU>3T?jcKJZ}amuGFepwXuy-oFq0+~Yf0|Rr#|{B#;o;{z&UUben8?&XF@6 z#q?j^GvxqYN#>(KkDo>uzp=g}0birR9F$xE-pG8Y%An-Y^=@HFlBrk$_2k87?9GF! zxIoZ-K=ix|-Xu#6IXIid(FN*8@`C;!4H&5!S}W*H%C6P~cN*OM%p=7$vQpYgAVo^* zi>1gr?8T|P4Xx?<2v+{#&ZrCWyJ6f^t@*>?UgKXa*Xid=$`}GSo2s_Q^&*lgX(k`W zsL?)7Gpo4!)!zF#KBnTsd>|N3pr8NDLm5!W@&giMPPHzHp`&@4bKM8Ws>weU>ysu$AYH}( z;DdvV%V{P!~ImJ{-B#&S&L2kXh_9_4S$Tw^rgF|wF`~PGMUP|*1DPs~V+MKUk0<3= zC!Jz8;qpR7o(TqtmreIHV>H7e1@1Urp+7vPhC7@)u8vTg~{j0kG=lsDc zyZl~e^O8N4LSr%PMeGEzSDzrt@Ciham!`+U#M5P6@$cvK_cQKp1akiOrihQ1gyWLf zo+~Q6?m6MGdGL<>d)_!jh(~fH0`Z;xoDwyDSDfuESo3$zbkcRMTZco^kRup``MIKq zT}|(a4>SGS0`_!K`jS6F5a+e5uU$i_Cnoy1{`@6IFW4&!9o@(->$Z8#Z-if&&&&s* zg$OZFg^rCmniK*TWF=cm?Y$3ZbRt^I#5GW+M;&93j^BMZLAg@mr{8O9VTu)ZKSq|3 zoiC+98IS#^hg1A&IRoi9T$pK|;D%t)b4Jgh2DzV_8CUQEA|NO5mBiD~I0|0Ym zUBuV{8MABm!*ho;RK|2haDEZzr+X7q;`4wAd|Y2EFv&;5my7JT@3e@Y>xP4LW~3*p zRGy4_)xwzB!sANayX^HGe;NCsi5gaC+t+yO2HibSsG%%RgzmMrpLBn+=j6{Sl?`!( zxcxY%G_KrjQ~l~;ZPDFT@t=I4d|!Hz2E_B>X!E3Az8KaA@<_>y>x}amJmweEz#SKT zVW(=|rqwO?E#x121(h87pkf|}_%6GfS9#L?@+rA->t>gx3uJ^2TF}A(guL;CU6lIQ zfhP9{2Z$Tu{UBMK&e7E3+7-ubghK}Zocqut33WYB?45l&vywEHLCr4$-aGA|3T!Q~ zy`U3L14v;TD*_-*Yd+w)YNJ`a|9S48OaExgjsTK40Op-kH60_#1p~Lx<)EuCo~HXk zOz~JoUMUxdc5{NWNAXkD4h~I~5TVyUdFZvYD!*m4A2fy;*z2gxkZpJNs?inxky0;h z_3@K8UVu(9Ld3lF$F+jXl>wz4WGF+!zWm{0Ql+I*0)Do|cD##~)%Lz9oz~u@o2fxa zK;ijMg4sf^GH#G(hA4h~4Rb*-Lb!2zG)N<6t$J&gx=aVXR%dSv)YWj{4bz7)a=q=j ze%KXB^M&@?|G3^G=zmRnas*2YQYE}Agy`5K5x+$5bxA_@?t1CQ%#0_ z6Us0J5huxEi66Pq0m>tY79dBm+ZUPB+Y!h_u=-S;gh1`{QLGB z@6N`YCPoVY1`xL+MZROIM-Ze*H8z>37BasBw?Sw^e!;C4 zY%g`6b)_(qhh|b4jO%yIg`#lEEBj9gDoU1HHt{3IKs&;sh^|OdTuQhbF>=qtK zy(QW{`m6R2TIO!hl=O9`-%!n98&Jr7Dk5HTamz$#JVvGGzWZOY{1>tSZg&aHN9;7l~^r9N>GL9=ON*!W5_dd*cJ@h=NO|9J6uDZT_9v)l%bMGGm1w4vh zmGXr3XR)&7-H3*A`NM7Ysn4p0hf28BHykXwlb_FS=$+xr=>KR_|E7e8lXn)ruYG3X zVXiXS*Alv>!VoVf#xUSC!@{_sMpVoPLXOeVP0m8H!^JB4B#_k_+g?6b%Pw|?{0D%2 z0C@K+#8XR7Z0VVG{GK^LCWCR+3D-Naf$bbbNqa^X&0*tv_VIGcG{^YjUYJ5 zas<7$S+g@}(2)7K!}9v_Q?QimK2K0;|Ej6eSM2la^~C>&t~ZaTdi~nRD}^#-hh)xH z5m8Cz*(MPslBrbYjA<7#XWC{;6d_V6Btxc5Aw=ec%pp7TJci%8H|KMn=kt7jf1L9= zr_;&a_xoOJUF*88wcar|Jv!vh(P?XJu5EDMeSe`XG$z-VER9!f-^z+uYJ9=`k9+3P zA-01%__0a*`Dk_z4HV320pDe-oJSWxI8q&~Q<`Q_H28aF5S3HnH*hiia38xx)-Atv zR?=?kxdv;i?FNk+*Ur353jvc|VB^`ls;us9r_TCLzBofa>w=IcATdw-7cY(Ag7Is- zcbtA^rB-j`VTxx3fXx{7*4RzGcvJW5U2E=2E*+K`nJfh)nTkR0v@j)Ug1lVNP=JII z9{<4oQ=R;TWZ`V>Z;%Itg9u)?4=0V!Jz-%pQL4CHJlYE4_xuu+083B;FPnTbL@?(r zlu>59j~cZ{a*N!#@I~-S{ZmI>7E8@uvN{ZJ1aY1MG249Pb_Lw8A5xCrbAA(KBU7(k zngOo9(7?bYbM;3{*d$$qGP+(3aFg*fAwN6EL>k0hs&gJa1(6%WNO_daEQreHr%AxMv@ZSL;Mjh8lrCK^P@ODI9R)?*d&&ug z!%4(YX5)3f=ru0vQw9pX5Nb$KU*Ov>3iTwoR{dWNwY;51A|P~g?fJx_jM|ieO{J}2 zL4|C=G1x{EP{WQ+rrD+c8cEqf4V9d0BuY>~=H>-I^TTNh{f+RWQdYkmL{Scc11@qu zoJ;s4W93w%9|FC1=9ce-1bA}BDdMy(BJIPk$Oxg6Av^cL@wda8|D@54@%)K#_BmxG zt%C0Tm_H}CF_>L(MNX3dUjJLcV1E8Sny>N{JD#eU`G6xL8vkD8FWeoiuwKnvO3vYUQjsLi%Ug_H)%UG=n(XpM1 zC3Js*)Xnf;R3|%JRUP4Ku~nB(P*dlZYJ--V4WIjQ z!iV8xx|;_C+P@vYLOjUwtRbTwZfkOB|L8RUO*V}lw}Rn`PKd#C+FVO`LgV4AbUqt1 zoPRJ0`&nM6qS9Qc_&eg@0c2oVE<^4?90#)EL=FCKz+Sx;GdeZ;b3i?k#db29U=N>F ziRpw;vp_PZT`Y^JT-izH*HgMYjp2xoXI)tq4N*52!vT3!0-w2;-6-E zEzMsw3209Tm&$H-=YIMYpici11A(S_`Vy2_=Yf9d5d%nYeZv-Y5 znm`4xP9V%igEcu;C%C6&rnEt%NkG_Dw&z|4qJ+jiyg;|Uv?2QGSZ z!ygBZ(SE@4NxYSz&0;x_zS*3GCP;@YX0l}+db0ZU1$C_JCL!<>!Yl^_X`hnf~4MQZ`d4( zpF|Sn@PZRut{3ChHWrg9me8QQOETp%=sNO%Q;>XGChWw9iZ@}L4nuDM@w5qLtiY_> z=eOn28KBknwUV{I*3bPo)b?d~7#01L8s34!sjfGWga4DzH4VYswQ-u(c9e_toO(`T z;&9I2%{N*nD{P3gEG691>xQ^Tez%|jtYVQt)#{J6-G>GGC-r$oY-*-1pKy_)Vl}rZ zA(kFnG{M3QI6u!Wso~Qkgs!`kA7V?oHIGFx7e9Sq<$lmw%f4~^>~W?=C0xub^Dy6? zg?gKE`k#313j(KoH>I1JpfLW+GnyNCgWE&x;>agR(%@bVlGqBY!{$?*`xY0LMmx_l z&fe7w#lrh5Sf5GWjwy5){UtK6CRU4#c|mVZ7S}KL{irukKBpE7JTcDK1awBD^lMG7 zUx=BIetd^B%o{B9ZGPlDYle;UTv%90hs%AzO^k&8>yH4({Ljwb-|s(-h!_cT^*)`L zIG{OD@Z#7z_vy@lA}-mB-&i@p&y-yJP96Zt!uM+%c$HtQuwKjN#NUy%URz zOc1LXMT{(c?>QY^)UJVZ!Y2OCFluJup&tg{e~#&h!{7$9miE_byPg47QT<^DSzILN zUud@me=^A0KPC_=Z=V!G0Su!nIn6XU6>0xPBoZJ8SIxYC9sDQR|1Asr!xYN2(ooZW z;0rqve5R30;wT0C3-6B~nfNi5YT!|^--pqZkI{<>m*lxPXs=OwaPSk=?}_E0^Ja?J z{&T26Nu~mYQ1tqu(LH3Rx+fg|<|y!%K_ARxP|+Pc5z=PEq_O|q37as&EGLCt+-@jP6{tWx-xm2M|DWVv zwNSxNr+Gg{9Vh2&u{>--cR%jO*2bUsEpw@1=`%Z zl8)hb$Ats;Ry^S}_8~50f^D^O*I*OR!JPUuSYyz^fnkg`ZM{{0v0F+$QIa_HK0PEA z=QFs|LIuEzT${FinFM=vL%9e-P8!GBmcpJK$NShW3tnM*M%!Daj648z9AN<(AgNg$ zu$4guA_2*(tf4^i)f!xD{=L^f*l@y|FniU>%!cp&Ko&Wk;-<4}2@Bj4FtF1l?x7!4 zhkxGkot`FD_lzQ^i{v29fiM9A{#M7foV_+MSz##kHowz+w!)|+Sw27|);^!CphB7A zg`3+9%^1!kX!`Uy+)&^i)8SFb#5VGdm)uud(w@b==--!SC=DdCVEUiNf6;6@B8iF*rxMP|?fa_XMBfR;enK1Y&=y_cz+lbngWh zfE`f8k)&aq+`O}3h*2bRiwnN&19kT zCX_{s;1hFE0Ms7{5owJ=!L_RK(|Mr;byc zQMucf{p38}PY^NH2d!8K>JTHdR`6c2@KeNa9J+U0<+nJ0*GZNHcpRQ*b)d z3F}Wqg?zrWT-cWlwo++=z185dzPyFf*7peXU8pXsX2xKd<6( zV`XSgD~RWtRp_#!cnu_D=iLS^igdu%NzU1;w~zFEumm&ufa@SI+~hONyCdQ%m{QIz}>=h!s! z(4C_+k&AJBWmAjU;5W$~Jc4&8p!gAHhNf)E`qkb^&p|qVX{f0rMXQ5I-oD}{rE*a* z6Uq`IKW}?1XW~V2={GBTl)oA!|8yNxPPMiUBLoJW)HGvh?M`s+VUeYqV$_?)81YlXVJuE*L7VT{Citi(RenAbiUsNe^CLPSN zZ&tK-JsEF;@m19A=0IRFA?M33F0$tkI#?men}>{^o(UUS`{Tp$ROD=%u!~MCa|kH3 z;3znK6su08{8bGbvG;#@r)cefqUFILddUK-zKW$x*gj zO4Xg>Eu1isg_ThBBUt}&$!*!;D0heOgtk}O8VOQ>eE-We3Ggs}Rr1qwYwK!Rot>JxV0t&U=<_3j3O^^atY*(`je!++iH2yidh7hIG)s|PJIPSSc|)p7 z3=&B-dPs&+qW|?LVuKnw=m^$#x7^3hy^VnqLE|)?r3w#heb3b?Rq#CMh;pX|^H!TR z-5HN?CFxmFyqM#odyJQFr+Lrvo_v~|2z@r8!Immc?kDTak?vgxOkM=XqfDz!rR<%& zeFAzNzo9iSzmCIw5j@pvO}K`)JkTTme&EJI7GMlv0K%yVVWs=}sg}QA{$I-LU#ZE7 z7eaLRF!d5^X-=B_Ub|&1Sa8Y&62wPp?_pcu-D21zdIM7pTV37jmWh%o`_;1>ZA)68 zcSKSyHy;Oo#P67&b_U5!m@h==2T0P;ctK3SlANm*&iW#pTkhB{kQ zixHm;=HfD&64PubQhzdxdj^3-* z(Y|<5hSLxU$eiJ$o!Ng7?q0EY7fTC~Ja75oD|9igo~StK{Ex=tkFuyh3~a*op(j$8 zXZf#!@x1l>veVhdClR#Je>qHi9nL!&q_VF^9*0x>bZcIBaPhpB^WEDsLh;2n214sn zQ?;NxV{0XjV%biN%OHR-_Gc{5f33Lv!bz=X4cE~{Xs=JB)sx*^9y(I^vcvZ;2Yjjt zQuY*YYDQjIMwh33=GJy;w)BFkstqg>(5KifLt13nPHVkwv9Hcf-ve0SUlc zo=+j>v>NR;>%`*{f($=OG3uVm>!jajRshe|vyt~|03+wH(#bt(<5>pCR4`S~!wTL^ zY%;JdkZMX+gT@Z|576LH+9Ejs0a!w^`+jHW17cdJcm&Weg?Ym0$r0^~T30Vz>(=2o ze`s=uF3!;7rU!=*N9rf%AbU?njOO(M^V<2L@>x|X2*NXPCO5mvvxG=x_qnA-sZE4$ zC@O}7S)KaG`B zrIN!5r-5c9@Q(a#GiKd_XqRkvE4Od=!-o~9D$gOu1eyq~d%Cjp&w(G7|NT ztsp80a13ME@5Qcz%tQkA7V3{FLgy#hMqOwjS8!o%OmCJxn}dY&m^WxSSXSy(2$kXB z)4SEaa5rQ@;JhLD45KU>e%zBMHLh#Xbb$kzIqgV_s4nd`6_LEh$l?5cAv?=T}47-a&f!0dAV^ zmcDkRYm-U|C{j>LzJekJX7Qi!;+BYAGCXd{Z-T1d2O6w0c$gC?0jp{VEi_6;$)7Xn zT8iqkC8!uk(dqOvz;jjSuL>2lJNst(_xE3A@Ud}UzA#`)sy>l;ZI}H^Vv25!vc>Kn z)R+4XU@Q-F%!=UMZ$<@7@+!v}#UeoH0nTr0m;{aAtUQEZK<34T=*`)cQN)&DnckL| z^T)s`48SQ|KXo1f3%cfT#G3%mvW2)JT<;Ez4yz+`#gLFu_o=_e$EFM3>~J=IMN)eU zcjn+Y`v*SQlF(9=+}94&&iv1K=xQH>>5R8W7(^i)OcRF2sz&d=AE7ZyW(7IZ#+xk7 zC+sXXsmQTDe=kk>$lSxl$tTgQ9{EGJ&?n@RK}||l6UKM4e{>E}c#bQrrRoWzQ&1r^ z=JpJ#MoONALK;Q6HYDmX`O9tRj%}u>ca>_|wbfp1Y95;Ume9LdrB3s?S-)2vKRmv4 znE>Os$%#{)fk!0DY1nT0njyi&K048{SqXyG;U3zjuE zX)(>`_f%c@aEnRMO3v}p{RK`EQ4jPRP(?*vFn_(p!#YX1qYQ<*6nigvFsv$XD<3L{ zVJd6)z4C!ktHw=EgWCs;pVSH9(8+f~cMBYdshOpMNWEm9g$_Yb!Hf^Yw3OEv5lX-ol^%i;BVX)fLHl2?Q~ zzs3^Y_|Lha?@w{t{FQ@&A`X9hAbUiV9O)OdwV|U|5=5jvfAE^z^7bU}z3Qe1{DR%5 zyt9B;^X8Y>Ga(d;>1mmH<>12uN+w=v|NPKxz4*a>U;ro^oHvE|FCB3=tku#E%yj9s5dd ztB!(iN15p^f#5eW-poZ?bicF1rw@hmzTd8`Di=VB5ti_tm&eVM(1BGUIE-Aublp<&f;+ie^7d-OWK=}sJNDypAh|nlrF9uVXKj4KAG7IH?^O+tc&JF%CRbNuI zp0Xryfd$BVS&)?3(je8z-22fPB4qC+%}9>EZ%6Kjv|FuEg{g||Gm8~`U6=u6vQq7#Qt&&ALWUwW`;lPauNKk9E? zomx!Dp>wHpnCGJ|xwqIQu+hsGf`mV|pw9fic%E%DcWgP8C$SPHm1U#E+eA^Z`cq{d znfj=Z{|68x-xfH!?Y7AzOiVRv3MgmjAPkNPbeSZPM&wBB4s-dSE5utw?p613NCl?K z3wnSeUW^-W+Rr`T|LV8)MXR!8IwbVg__fncbYY<);Iu!CzEgfiRmacT#2(3reg#)8 zg!A!saHvKyJQ{R!-)u*@KQklSJZQRG2xF-cLL-{Q8u;bo$2(65_D6P*l!la;eX@`@ z9J<3h#ttgCWpxgiao3Jqf`~Nk%Vs<%fxWtH9Yiv;13)YvJdNgDdVr@u05S`*CHm2Y z`(j#IUQ*>hFesT@c4hmffVdu+Gm2X#gr>H&1=Px}tLf>v04Ui{lhMs5EbmjZJ=l zpYRcZ|6aMAgHUKt6l{AVi#QUHi8suCCK;Qjg)`Au5Wd%&FJ6DsgR(~v&qpiKf5FXh zWuhMYhy;fx>opEl#aNo3eIZGlUpHy?RVO`to@O6fUSW!>3FylGhn?YE`?y(TJXu(q z(pS!a!Gt_#VYS7HGI+yCIYO$?jS`w5LjD28>q~jpC3Q_t=%l4C+)zi<9G@T@W3DYa(Mv(o`s4-H~)?= zoJosmIqd(LPV@S+%NXH=d}r5vJ(@)K>=6|tdBN9~Tkd!d4w0nl>zrUAJ=pY`Oj#~tJY}Lzv-JT{U5?*3jw0xqaIigQE+pk9*~3X$)eT9 zhA#i5k5A4W03$Bi`%(4>9fuaSWk&-b>1cry8IiHazE4-JO3nG|onh5ce;$r5NW|hY zOTsn7em@P%#zb55=_UV3$?B(Cj6J))!JW4G5eX1PF_CK3xgJCF_D17oLT!f-$-C5n z#r74Zy7v4%|CvF=mtdhAvlgFzstMBx8nqZo>d3PMD(Ki>8II&PsDjb~G?e}*`&W0h zL$(@F@KJ1i_#v5f9@@nO^!P8)BZMkp+arpsDxLz7nU4EL&5jfIFe?r=-5oa-SK! z$c{hve!18k=-NsNm%`vjH-rNw53{^q9SJqc=jC*TM4*Zjqx2@E5a0rYpKUcuZekbC zVFU?UvOeZDt}ILg=*YjHW8JbzAQ%~mlyDmpx#Bd~N4Q+L;BT4RKA$D}DSVtbc??!z z{5hHP;3`ZXqsdZJoH(C%@0^{-cvP5?PD|ycAc42>2;2gdBOvCPP;Pd zN{BwUt8`P`%roZJu3)(`Ie(xCuAlC*Gl*0;H}uInwNcb}>WKwqX2wRU8-Rds$CU{c zg9P5G5WX26$X3y%`a%_X7#g{i*Fa_zh&zhp?h0sr5I%z!|lZ zrSEt4$X9H$B_yigH_hx2ZycK4P+LlrzK8A-^nzQQB0D$K_E%&i^8u#$6yTnSWeD{U z-!H<9d%(6OC^Q-{j!0Ry1_u`Qg^}9CCEmB9FdisF@L?%`ArsMB3x@U$z`iiWs8F zIHWbuoKc14+r2TG8B$I^<6OZS_@9>covwWlV7uP?c2+P@V>meT44Hf~PmGq4@C;2t zwHFs2(p(uiNUZBzW=HPTZ@R5@nYukt*D_#bXbvTZeIzc z^P0P8pV*Jqc010(spsSa9{f0Mxm)sf`+6=Bjvd-bVr=u~)b;L=JT|~XW~C(BS^4^g zifOUk+SBi5;u~Q5qUZ*6n?FjY!r=jC1F?A9=YAG;c(6ZDe_t_r*_MPLf8G^lc! zG6i*e--&_(JtwWB7)ir&)x?j?DY2P@*hoIsarsen3NQAM%RZNsY0oUT>d49hc4_7>b#1U;k>(21$6A z%zK3`svG?(!&BK$%~p{tL|SZ;_3V?VSHM<56E5+wjL3ox3*ZLMqB(PGJ`+l@>9@bg zgF~7r-*$-Rj7{|YgbF0yRM3ZhY=|ce;)PBLmP%ha82Gx09U$r(NH=K;qD?M3!OZFJ zIYmXL>>QvJ2|S(1I|)sw^93XfaV3ZzH~bbu*mueFTjSvFPSYQe6!4AyB^jXAH;o;I zX=l$+F?s+Q$nc0H8(2=Wg_(ePSK@q^2mjMaFe9S#&8i0)(!M3w4EWx!NOwg#yMAAU zB8sD*XqnRLS|Q27(#14&2R2`UwD#k*JXH`HfNI$+$Gh}zzTnni^4I0cnR|Gi<&ih7C&7;a z(g+|AWR3=JM3<}S6CJ$FRr^*pitMIK@V+{MW(p^YbIm~SKiC$9)j<$0{ zy5B)81eN?e#8nOM+)ykeNErHo)tJdW&n6iP6ECrik0PoVCI&qFi&~9ItiD4fUBoeb zY$%`e=ZL&WpKshaKGu zEvVPFGfscE)9gQXP+Gi+HLM3x+J%9b#IhWNkt1q@Td?vm6h8fWoR&^}q*u`B-XW@N zv$MKSKoJCp$9RM`l?`P$9L|SfzcVC_eM)+j)h<+)ywH-|O#56-4!?g})l53?eK@OLMR3=n+& zPkZjLe3Zr#=J;sVv2fK;%Mx(|FA0N8?_=V?frw4QG_B4x(brAs@?Z~&c|$s`ObX;P z);})=B$Ez*Rj^KU*t>?VD+K`r6_?|9ISw$+ptGM%X&nFi>jV%IyN&7HQG~Xxx@x^A z_2C4gln7+~H^iU#>4AR24t4OB6y1E2R;>=f8Xs@Vlf^?W}-XKYf|) z)^M)$#J)J7shPgwJ!YR#7gpT!FLVlzM}s^ugC%J-$N;_1-7Y?Qk7VQ)teKr zcnjn*9B#$jOVey`n0LYC-81GQ>Oo%^pso}4arj>f4kq!?Epi87SRm>`fPMgF^^T@+ zKzLj8N)Tz?;f_IJGd-zY%GGEQ6KHO7l?n(0z;4AIFqa8OU{Mk{TD11!8gW&E_6O3H z5zMP+IuCft(gv=JK-`);sr7$`a2|3f08&QmcW;4FvM0qQ&PkbXUmg>9?Y_$*RSZ7+ zu|~Utg89(JzqzSnsgU+=6nOlnC*JYq*|NwYEP=x*eZF1l77-9y!wm@^Op9b@BTVM- zRAfF`X+A?2!&D*F(G=Lqwccys>VOL}bRgT#>Wc)vQU$Kkn$zbaG^X%Q?J_!q-T`_c zs{!011X#A80f${O$!;5HCPvl#b)K!)9D>2h64I;GhCO;FkiP!eXh+K_J_KyVSALGI zTx5wa3y{kE8+xzYiV^f2>TaoKLtk57Y?Zm$Hw%s3yPz^*`8dwwMQpcDaeEaM9I>E&E5cyss3D7zrX)!d^bd{lHMfj0I}ibh!yUoGqfo|^ zu~%;c^)2C_QvgP|VHupK!QTM~RQ?gvoEGDR%QL7#@>p*x{~+B%rkYxc8+O#imfsZu z)lJ!~O6|$CzU5Wx7|FbwB{!dvJ~|(p!fC0klV=*F-$~UI-snE3bM@bL641-7Tku%& zZ+3`P)?V|QzHx*Gb-n4Eare%J{#F#;$E(9T%Rfd{x= zykcU^0;HL?gj)gpd%7tgtC|TD4OY$o)pur>4?xrVp5u)EwbOxA525IcX|GKLF-TzdgF6y#x^R+2saPHE z+)!%hB#Do;yjSv7z_`v8xB&v8#?)#xSLZ2_FaYKQCTC7Pr2Lh}uO*xZnf3Qu!d=D( zNDoD`qwu^6r>{)^Qe&Slnj;PJtOnViI@7$iuziQnx}D5X=i0HbEvb>TFBXKPOLiVG z`dahEjeTwFi@E|Nj{6ZmG^^H1xLE;yC9wK@>xAJVxHb!{^KqBL3?5&s@0H8IVU9Yjz0K0Wty zmvNW-p%3LdoUKN$D#mu&e4{;0k7ncvIH6D>OFtrUct5G(iO}ek=*ZsH6CRe^a|Uj- zibrDGCnO=Z)l>3w*UlV*UMKRhn*sj?eC4HOz6n8OphEIPT+czsL{O}@VT7%e%qH~n znPX#Om8?50d6h&xVaz}Z&D4kgfFa@TU;mCm{sSc7byF%k6CQIga@rtp<@eI)h}LGe zF*6=!Rve@HZW2_^kkVycT8odN_=7a4QkSY;wOw(}Y!QKPaUvVa!7&Mis}xs_ZV(7N z8z8f_)TSJO3D%l(>^=XZvnmpK0?bX!;s^mn1WNGyF|i%wD}v8#RK+~E`hMhChW|e# zBdsN{!N>&oxo4sWklzC!FbwK!bxmmNY&C2Dv>Li__5s_;vuG`6J+&cnZza!?w|p}*tCHxCMXIqr ztc}ECcd0Jeq@QZWyea3>u^lDmq5)O#x`<5a86%9jJ-Yx+5`>V(VJWS2c~J&&_)MtB zz$ORo$wO_m%~Gx(+Rf@F9fvRwY3{F?8uCxY$U-L~dhA^VvFR@ zrrM^zwN%~hBp?A_TK*%zPq}jzfmGc9|KoJo;q#BX=XJp?MeIs>@8We*N!T3)jls<% zZVf+(USp7*JfxRojUnIs@c4i@6x6bBp`T=Kw3#(PD<}TowG^p=r>Fu#lE>!UxK*^R zI2hC(GqT*4tG0QD(=gv_7_b|SXySx-iAc!7Xd^R`5-x|~D=*J(GYvhjNnQrdSTU}G zl%j4#r(xK+18AEfw@^c*FKx{kGj(way;jnQbAgHSAyOqHvzf{mrsH2i%qIy+&pbd> zryUP4r_KJO&}u>UZE(HAeY_~M{GR(ufGwmiPHJKd1%fqR!8T3c!$?#0c19$R4N5qq zI*v~>Dq7V-@~})sLJ$u|vp0XCpt_}I-NR*tJ!;wvtXB@7=bgG0L>U6ZLOJ_<&?SDr zd7bmlt?lblMb9~mO{`d$`-qbB1^@-Hh~`Oe2An2kG!^=+;o$R}{@$dedyxok!+*g3^~S%N$)1hp zU8JvXVFX%-k-qEh{#@Al8o<(g9P}?wA2ob28ti7(TlC$v;#4y3Ks0sn#%>;Dy8FDPJxU?(Qdv(tSITz`qoTQMar7%X;yLSk)sDiA^4Ez>!KZg2K$ zASb*+on+yYs+~wdu20Yc?j7Z#kK5`_ylr=+D54cfe;Tgpn<Qd(X6$~NsmMAT+7iqh3ia=cn1KndNk5YlAgf3-DAkWO-O&1d$jcWzNJv6uZTQCsM|Mx|$X0cD+_eTo<^ha&X_10Se~cI_ z%OiiY=qM3@AX&TuWMpse*OnMP{xN^njRo_N-i0xONrHipqTNeVRG^4zhia&*I+~z6S zR3MLjnb5-1`sZb-jr8Ieg>6nGbx~N#6R$*g@h@-EnU^Mq$h!CSd~Rcc3JwolDiQaR zb^IRQ#s(RDQEgSY(hXZn;V}uDB3J|WVeo|_O7!eUZ;^^ z1_9L6k!Qj-N*0OjVe2fK@|TtMY*r^^U!Iw*b>(g**dAu_%b_m%ZOep_obhI2Gr3U0 z?MTy@f~$w7exhUz(T2eZxFp+CV@eO3ClL0V`loNB3+g@_ z=tLdiUiLm9t0Bs3Z2UgQx|xa~@a3Yp@P& zPwjDutg~O&TVLzdy+h{D=Dj(!E@Y`K9g)8-trp|;$^Cr4dc~el#61!^^__38Dpms1 zt0Ln`CJqLLTn^fJg;`umg2_MBYhi_{&ZD_u< z{q817_ybe+w(v)y4kGQqAbc73qqey%^7y9*y`3+2F&YEl6eVp^10VHpSQIQ4G}>t1-?R4{K9uyZk_2K3lLPxaq zx&{mLpr4XK!nc}cF2<>)xjI{IA^Wt%MPf!2za~yk=roHK(a$w2C8-G0BZrR^Aj?pf zRs9>TnA)UT8r?up2_odMooTxLWZG@#z;V3iG1LVpS4NFryK8M~DT(`{kVqzMe&HSE zA&~X~`|LQyr-nk9KxCk17BlPKl}<;SSzDa9|M=U$?G>t@>BEo`a{cprN;e^Zc+e`M zu$lEKSML0ncWi0Be@eeez_-TewEjOjVEy0%dR+=>_w3%gsKsAjpZwBh31)JXOKZx$ z%0a3UuwGx-&j!Et4_(a@TDLa1gSwU{mzw%(NAJl;*Gm>8nJq%h1iM$01*Rk$mf<)) znDi@mN(|6sCl~0=T#oRH)wZ!v;mG&+DLgk0$k6eUX10<^HX-Mj`|?9?^~A@{eRBL- zxF0oTI}FI$a7y(Sz%4Ov%F5nt;<|y@MeJ;^{kw^&wY$ewec5vjF#fXXk!+iV*6izN zxu&FziZ)#cfvAUiHbAk_D(^_N=#r*K%@I?f`M+vnF%jwzw&(0Ve_ckecZck5yxjI) ztCf@XcSF-oLLZtXvp(GXIPd+Pz9|`lm(ovO22r>e#_8!2p&tj(2FnHJl24M>9B->; z;U$GGw30hLzRNq(Y0eOdGAD#i(Ip)Y2@C^UDGpb0Zw$tuY$wKMh8^|G6Gf8qf(bdb zW$Lfe+4RpkFxk5C2~-y~uC17g9#Jy!rB3@`wc`;%

FIKYjCHSY?+EQGBl^6xH_EPGWCibqvz6ZW>rjGwBLdOL;n=_<^1`X=M;ZEy;Dz~@|pS^&~3)K zZk|W&Dsn%`sC%H_A(Uy|s>{7Ex`k)0*O>ge-fVAp>gNm$BcE2_a&g65)B`;_4l6ui zgOi*}!{Eoa5QY^uAPg_{s`X_?VAyUwL9Vu+T{81|3kveLd)kHT?sHJr{~ z3jGLW8DX=uf`O${C3A}m5zQEYhRroKWn)!UmHUl8Bp!`qeATCJZgOL1SrnP50ceQ_ zO71+Ujy41?eG3v1Pijcjl)y)VcvZZtOzM4v0)?)P18S#JQ0LO|q1NL*q>|&5pmP z)Pc~8K_f!18&naL6M1291p#d}%^SLetiXed>G^!yv+ivN7_hO1{K3_a) z4UifgmZ`L`YZqA%j)R9X9s$B<5ul`yi*MwKmT~sB4j^jwJvLPUs08uTwgCA zi;bAQkwV+^;?vq2b+tC!OAr|L#dBj>m6DInR4@s3Fw{P2nR;zN+ilp+ho!-`5YiK| zn&a(d{P-Q3USDfm6jNK^Olp;@Uf^Wy%uV|H6dz1m`EzQk_Ojl7f|m~Db-4h8*T2K| zBU1@d;T6RC!KjSGD*#TQz0PV~SGMMi!BlTXh(2%av2R?ee(Lboh5YCg&AoKV&+P;Y zxhy+_FZxrjrc5sFge#^P&u{j$oJVHsjWy1c&VXN+0t*@uzOvof&hNHp<@wh(W zoYkx>O2@TgOsaZlLS$%*XhIY*vL9cZn8+|4Dh?7xWU%`C=kJgl$Niz}i`&exdoA)o zgug_%Tb6qq8H(rfWZEF_ZMt^Syr!0tO%9jVF8bwO8erSh(+00Af@>vz7iZ#jt8Px9 zpVs00AICg%oJo&Y?3g|-Sx>C#kppa=@nl@1JDFr{Z*qfjF)Ybw^$LrAQYLZ4#(@0& zr;fu|hh_OE3=xb%r4>*Rr*nYUI7ake^aHd~xXc5;N`c@+$I?$Pp`BtP+-oT5&yr8goD6Q`a{BFi0=fsNMr95$W z{KSn_+Yi_9Fjl>Tg%48y4l|&JXQ6^tWAtAdtv>Nq|9Y{xu`6BZ)Zf&NY44BcF?vVI zMEU9eG~g&KRPT5)(s%=!Iu(6kWSxi;%rfooUev&xU(4{QkguZl-~1^$@v>B%b8X>e zMS3JPbwaLB^~n^cG*|`Cr;EA?xGr>3*TWEd1NlB*VD(ZlN%LlW_-{*cE^(Uq2?AG0 zqiaG|@;P#2cx+c;`R_qFedBaXR&Dq{l_R_c&Ui&gmBI9KePxM>8wX2E%l8<+l=^KOo!b`3S+l2TUotsCvqx%uFvTebZ7bAV^5GH-i0&mdP zA|J3z8zi`V`??^*VdQSEn*UI`fL{PRcCu@ALRiFGqq^KY;Xck}xYW?S_$XP$i3=wC z8B1m&QYh_S$h`f~{t0g8o>xk^AIEZ~5_URXEU(+jAMyiDfHP>@-)!2>Lk! zy#q(UdohPl^P3p$@r2xwp$JY(0-H5Ct@x1@myF)WGH(J*kTzxkt+fK4L5^}&8vb-bnky6$-q=dX8^|68t_#^ImOU3Hnx1%J=h1 zPgXs09Y8mQi4mnkBO#R61tv6 z4EpQMbZ|xdro}I|ZPk6y$p;3Fy@}t%9q{%~HvQTS5|6UX7=7a5CL?n+z$KTA_`iIN z%~Ejs7QC;5Z-6fKAsjxkWq6LMBJmTk-ghW^c3cvjhqs#?6hF7w=|10RiHTTO_jr82 zz_@1p=#Rgzj*}^x0ATKn6I&hYZx0~4DQKA=-M=|%4ldE@77?f*vlR4x9;}W03NA%427FU8qU#;GnbQ6~M9@!x8f5dk^K`)Dgh8oG9vhqGHheg0v4n z66Rm#j=>BjnPz-#P1)&+`VH3W7ZufJeKupH)3Gf-=PH`5l#U$7TKOcb9rt+V*2NdO z)Z%EJ=lG3FNBq}YS@=`77W_EBqerO>cuX`zl(g$fgjY~`9_M;nXWzW2h@kn(MpL~^!THN+ zo1X$Sl9g~G)g^yZ;i_sJUM+|VC7h7{d&$O|noUhOTpAZ=^!!!%{=aWRCY#QiezV&a zdIxS?Eq&L&`VPn4%!ieo?OT38mCtRrlF|7%!mCkKKw6e99ax_$`>x{fKXvx@uY(nD zm|)(ki_k4%?}EKUcl0Y!lGaJ*5)~KxrhkhhS)Z?iCU~4o-DB{uad)`0iPq}6(V5BO zt6$6Zyt)USa4kNAK-tI|sxM^kaF&ebs|Ui?B(Th3_W}SWsq!+P*}VQw&o zNo4j=xQs~^Mu?F625h_tJ6U?>s1&D4LH2c=h+)Y@7c-u+V6ezMp@C3SWMt^>mOcH@ zwKgm823_2XI0$S_2yBKw=iXd$uO-y9z){-RQw*P`%}P2U1fm8!CKWOPY?jR8u#tE_ zEsGy<s!bV3Doi6T-E7t&0-IYrbiJGM@cRs?j-^T*A5?lCpqw8TA7T1}; zVqu@ZW`9kXP6;$!n&`N}3DMt9Yue9Su$Mi)U=Ziac5-#%Vr_3H?-s= zfcLh2&m#Q*n#|cK0qg>p&O0wbURhh-p@ziZou2r~ibr zsADacPJtFI@>2Y2c;Xv7?8^tZW7DdOCtQDh9bUkhlvTkUm9Rng56~XY0=BKzj*O_c;x8k*#H~0^ibF#Y_LY*r zw2{ALZ!W17sT`XD+6GLbrnYXAnHS!RYybd!T;7O{yapc`ou1te$8d63OO=%_Oee=< zVU8CgsUe-%EMX`o)cM}~>QphETz_5V-!#g>dm;NrsUR0)RDd$N`sy<~o*Y#WOvGwM z!du3H5qE69?^(=sk8?vEHSAyq|*_SUMQ(h8mY8SNJ9Y4Bkl_li=R47vo`2hSvfS9BTF5*y zk{7>wm>mrWJG__=m|$i;WTJ%s`EyFw1V%m)8aDh5@!An>biH<`jxYCWXWRnza@gdH zB$FgEd`oW|YB-U(z^7+w{yPxj!mU{Bj^QjZ2kF~)&`9|uq4|wg6@SasuUWL`P4sYPpatUeY94}qh0-Mb0EKHva21d=Io$c4u%B(?}cc}xj6kywP{ z3XnrgynFE-n{8~MKR0&nJ)8@yt6Owq1i3!Wc;~%H{=m5DCy{e9~5)<(ed-;C9RbPti^hdkoOmV!> zGxe|>6A@{l^Uzz&hKsUk0=`$rpOYB{?@Z%I;m9~r70dsRGVJR06eXYMeZ~0_K|x=el0~%G{{63Ck#Q=mOb*aySg~&Ce(=D`|p8 ztWYgA-kTOI9m-pT&}@|-Zfq`{NXf_X>Y{a?X}{U|qzF*6Y{i|H_V^JF^;0Jqb{@vg z-P&LJoZOMFO7(csSUf?PmJB z?o2-i%j<8iLj<0wv+@9RddqB2+x)@zSUpU!Ie#5Hi)H|Y;gHke?UZmrBpH46L4FDV zDlojEsZb+nY5y(6`DgSG$%$PtG-Tgp<&bZ~XU&XxTM7p>_JKJvqrqkI4^8f0#zHc~y#n^1!YP`Xdr&fi|b|KP3w$S2C=2TPA(qa%Ha zkQfW3uw4EPRYLpg%ct+)l6yT`$JEwEi{r`jE*)IHI{6j;(mQU*<~M({;3KSZt))SH zA&@e#MW+N7_@TEmbL4IDgh$bBj&aF0p<=vZ3pQYpWa-5^bBve;eF zKUbrJYtl%lQN~k5AQuyF9fbdNIFi@oi%zNCKQaEgrq7llQfUU16oiG5$Eh)22$c&!H^?Ux zX)J&h`U7_(T^6o|jXjm=d9&6kNHbL*;g$t1t;Ejyi0a=0DN4QVUFl^+#KiNoi^IJ< zVw6*k92TJW!~(CdRm4fs&;0iuw;IfKPdQxV*^##A&<`LZ@>NB*_92T;+8x%+hi;g9 zOQ!62zBJyNJ8h;Tq28+c>sX;Yg{hY(Lgh`5EZk&JddZb{a*b7f{nSs`;S>*JAoPF1 z(tjOL)qzXWQitAFEKPWEzqHF{OMuyt_$d!fHVo_PtS*hT^%x7xe`je$nm@bT$bP@*Dqy&O_U9fP_LQllPqdQ1QSO+I(M!BiWWO<2rNh z#8W>{#F)ZMr|=<4f}IyOBTu#58~d`rK!VPvS6hKH`b~dqus5V z&=C*Pwmo^od-S2GtTE4+T$YD*>?tgH0jV$#NbkalJKES7w!stzc)?g<)x!@BN;q_f zqreYt{C{-4cRbc>{6GHYE;`9-n2FLZd!~$1(UNRgA$zMko7?G-3W+kZlW`+^XB8?)$o~*LaTC^?pa{8;~nT@U)#5_^01?8i$2B z4_|SRNe+<-wjG21lXDZP0O(;t1M|o({CA)U8pmF-} z$lK|nV?@i?11i_cL7=*;% zyKMZRyOctAIs2RGrzYfs&Oc9Mb`O#~ST#{L8vKrdhlIbk=_yJ?v+s^?)G0www!QN_ zR{qjW_)w0T^G%jMQgQYkC=dnf(WQ5S(GU;MYl=$_>MWYLyu|{t1N2;(k{4BJPgG4C zF9YPiSa|1}pUmeyJ4$A#-YL)F4-8cZaD0ImS-`FDD#Nb(SN|BGi1+_1j~mdoZ=!j9 zSo-sBUW%NnTPU-5<7{L{N9mf9{6&?v&ZGOzQBbKBPKq$o5c{qK25w%dtADhrvpCM) zcki^tYXDw>dxyokFCN2BP0+!A{=xp)?=xz#nU@|ZclXL&d%ZvPe+H+vtsj8o{*nW! zva55h9sICNlS;mA)#o*~h2A$l21bC*<1F-mK8h4;Kdge~25*?meQLM5 zktY*-UV(|rSOh4u2sHcOd2@{WPr>m!o+|ohMiG@ll{YvwV3~2b&mLy{xh8_-ubo#Q z^|#x)zTMY({?*ixo-aFSwV8c?K%X3RMa%b~47dOqI*i3#r@p+H$)FDm|n1|rGkb3)m7;JUfcz1g* zy!p1DZpM_CLj@XwGQ2@s8vkHoPv5H9q1Wlfo*N3#^e8~HbtrYeb;!;TK0uNaZGO=B zB!ps7cXAsArSj8B4CqZB>7LlD)<hv_?xM~rgW`>C_I94Lk--&3B2oI$sGW_^viL7^rwcl*7XIRZ5Fo{G9s+v`4f$edM*8w`-b14uuz0}wgOA~`+iO0xoZk0byzkQdwxPd#MlZhE z-WC6@8@Ku*GjA7IHxvS|?-kC<`;#aMsN#P;Wg0!|;-{+JBs1J71X1|!4JO%V%=;J= z0yj&u);+vppO5J)-1$t~Q`qu(dU)*R-9=NKvrjvAGi!$oj^8qb_|#&qG3}dXer;F` zUOq~$4u1w7smI)p6?bx-fAbeKX;Eq`V*?i#oYdbtKbSIGTvTA%7fdUVmiOnjJ^@}B zKh6501<-;`?@)_yFT)pH`7fP_8cz8iwq1WIoTF_CC&dvw0GvplNa(0J@mEA*1c+Xl=r06 zpJzXSZVID{qv*N&J(C8y<8WgHSu}9Fdt~%`y!0ifu}FAr?;7P5a6hu%Jll|RKK+B` z`Sl9LA%U1pPEO|gYNPfQ(_R7wHeBm(4^Bq+aOej74DQQ*^sd72s;P^c8ezkxN9UC6 z{MWbQB@dsdr1^=)^ZL#Fg8*JWoTbtsNXMV>nq?+>RgbY#0)=tBDR=UAJkq)aRD;S~ zM8OBDrbWa58W=-rQ1S_0Tvgg_0Agmg&dwFa-5__Wk{*tx_Pg zybI+C2`~hXuKk5p37|JaQ?8nhoZ8P1F93%o@%YmKLi;Or7VMJU<*I=U#FeF4uaKI- zyDeM|(ywHOp1nP`5@W|#(Gk4ptK0Os(hP^6vvM50*Key35fIi|PVUdTc4?xwixo!N ze+UApw}3tD=w&#`^P^$nK7&_MGmGcKu`jPcBkF#pM0w3CMI&;lWq$tBJJKNcJ=cq5 zeouRYl0v*%nV)EaPReo86$VxkxTRz0X&q&+bsWwvedGiip7K6Y1FwJ`$6g07SThst zHor)KM7oav8EEBYLaA3X&JR_7~p zJPQxDRrp$83N2LFKGc;F82Ze{3q2|Fk^tX1r3<2OyE_q7W8Tzi_U&9y#*?6)V?ZA8vmg>uwK%N9ZRe&+2{U=2w6Lz9%NP z9--Hy5zE%|{q1+0X1>+D=EdrD6>8>_i?_QuwM=?e*IKylUY7xCYiD}+X$!55zGw2m z(koF)eR57=>)GQsTN2LtUHqkR=qDjCuGH|#bB58!%kJp&PJM|~J&_4h;1@Y4jUGYg2OSRd?jM17$n@mqR7z;7fW4lmY3Y7h(f;9&R>vqsNbwE`~Z@ zLomEFtUR*zW6hcBlh@8I@&l1X4!y^Zz-wI zsmRG?@7;e=7~WLka&P&>#imPtu$SL=SH{U)_aDL_p`(QR{0lq9K?B4GJ&4V9W`$au zg2PKgmlMRg!~N=cPF}QNFS;e;F*$2+(^&QQ;b1tT+exBKx1R*^?0&u(Tjuuc*=WY( z+Gg|*-TN({og8N!E)ZTEUOB2O&(F~qKB(gN^F@{(_45wCzpiz(^4%Bmk?c-nRJ6#x zvBRgwmNO#nhCtiv`-RrK$LfUs;uEFfmfy`^F#SCGX-I4Hb3Er2-jPLxIQly}IY*)w z7r(hkZ(2M~3~9lguKRYTXL8s|-)XaF`C0kAE1qU|Z@^QQv^{TF_U$}^$3?NE;0PfW z>uJ&Nvlky+_QiWCN;LC)P=9Vn*vFzZ;I(Qi={Wi^-Y|OGkU|Or)2X+&qXdY&y`^$o zJjzl|CuBJl{qvVM=hU7_QHvcbS>$|~ui4R`p`v=Z>+g2cI%=-ll}u^NGczA!q^RoY z(zusb6}gxTuUkD#wk6D}I60~f94nEo!s!;B5UkNXyL8N8*GH}thxOPVj=aqUzO(?L zcO*W=u7BGF^Y z*V;K*rd@W0b9=iuFt>XYT31wQ`rdhvbYm#gKSIN-Qm%fpUC_-#|W%ljgD?S&V{ zd};8w{msqqq}3#_TqZXC$>+8)QkZ1mXTi#y)6)S$UHvp9!pbul_EgRn2i63JweYx3 z%{75lYP@`>%yj(&9m{X2B7}&GHQ`NYKX@kO0$dx+X#VEjXbYZCOe(1(vyig0U#`CZJ4M_$r_K}%^ zn5R-41E#x>^zrF6GL2-NCM}lx;?+YBLafC7S(77GGFZ_u;ayo5N}UC;Z_je1uzETY z)y}7{B#REz)76RM(zB-Ym)}?E=(B~-G;yU^MAPB>Ixpx+`ml_79VYpcy57{5E#7D* z4L7md8^kd%9Z$m%Vsjr%-7IfS2$Wly^YXO1xoVd=DjHSux3hN0YpOlTMwZqj)2C4@ zPeNvzs0i((YV$LZ!%jz(jw{nvABnUZQ-;-hOYt0q6Ps{diSS}*LP1cI`qEKIGqWBG zJ|rx_kWpgSwQ$xo@kn?YKOXD6Z*6qic~ai%UStVQl7U7Fcg&$9OBoeLNHJAKsJDKUtlS~H8^8CGnU;7%vucR<27mbx3vQq8KsbtHQ+U!m~ z@aVFd-Isjg5MfcQsW>e0W2Q%@31Od7(xf-uyW}80{$nso zpP!B?xTmJ}x=rMi$FDugOK_Ow$4p)4xA4CTo+@js(S2vT$~8V((32fXr6JaL8IMKn z^;rC!Yt_VD`PV;WtkQ&0X0ucs7QBo4qRKWhCigiNM+o!t7lOkbBY4^<))ZWS=$YKER8C6KFoN@2uKhLqUUu0Ca^%arm*=&+{)W%Rj6~GgN7N*W z%qa>+N_Ux&OFQLLLujt_9 z)x1M?e0$oU-QHqXG0;B0DSn#B1jg^yplwFn zgWajWy=iHdVvGGF`I#fbZx=2-ZXeXcH=G=iIS~2{nzYBSUsnoiqKC}<)w8-6m(JtR zP0P?zu-I0s+~xhsgth-Qte0DZ3tLo|omuoQIZsgiEfk{6#RCgfEQ7dkof3hAVPP#a3j00Rk0e4dHhD{Ume(@lrheH@*sFx9L8V!cEXMQ3++Ea+c>Psw{!Y z@o9JGd`RWQK0$Tis|i;hE$nfqT^VOAb!@OB6_8%JwD z!!F4PQs;oVj!Qno^XkI6wetpDS>O3f$g@WvccQ2iOhoWR7d?z1>F>`t>$1!F)*XLs zD}U{Iw+`7t&-I0~7i<_$H?=@*FZEi9g5ILF{slIyo@;Ou{ zi8z8P6C@LJ8UyApWRr zS&{WyA=5A^>io><;IC!RC(rFpJ*z7W5&o@NB2}cfKn9P+h1TAETSBEY+eGDXA}_|K zF0X_-5MqLI@@W|vY$=@Z|J+?ZM>EG^T(Hr-(6HRkQ2oZN?nX?X2(71*YDU(`Lf2Uw zo)-HSBF7b%RiveM46AfEr2k9B?Dx>ub5&Fl-#bW9x#m-Nv5;nu;L3B_ooZ%~$1#x7 z$A1ZHbYZ32aOu4-1iEBPHk^9eTGcJTq^K(EloB)fPMWmr4;Y$#-L_n+^#lrGR9MN# z_hrU({xr^@9r03fm8rO(+Ys5a|3!A(!VP-*7ftjTwapT)kUav*w3uZZb;T(M6%^ik zsvb$98Uo3CMVkwAl3s}B^QL64NBMhI3G9$GM0Q2t`n?w6%9HpK=#NTE^|XaHw-m74 zy(u_Mv&`bhAv`tqEew@rwAuPM8)Ic2L`qQ$)`Zt=F6bF_5vpM~uX-pP)AD*00Ts)5w zP?ax?C9Tjli&XCXE9c`Ivnr8`IdwLtn&=s3;H!1SR}|MlA-M{Va3Vsh?N~XW#hS`# z6hfROK|8o^mflgFQlMtJ| z*!q0FCS0+L>f29(6lUM_V|qFm_GReG8_3y1kh3S#a6y*mVXZa#7?#3pRxpS{x+NL< z&#$Pzp|L~V>do?Uz3(1E9Cs7=e!PLQI0dM}Uq$F$@HCyM2#ZS#ejw?5JFHCWhc>Ui zy>HW{fd#)!PzT`FZgyjF;#uX6q>~96UA@7HUEHVApkOO=VJRkbH=y8C!t{#-|2zqf zFb?W(G6Ny<$wv)?E)2_mbFk+(k(0nS&jzCb`VFrluhxX~JJ9SG7Sx|^@tWP7OFfHW z_ZA<kE!_m@jyj{%LosMq-rciVWOGb^*l_n^kTVIr=#oUAZG-$d{5HBam|YL_Xvi|6o| zipe;nA)pCNNquv;aE|SOwIP+sC}(=f`y(NrRv_!Pim$k4LzXQnkbYmEw5-``cM&e` zfCM}NKr`v;k)0F}v9tJ4?57|aN^mwzoh(gBXCUa5w|JSCK^MFfFNI;dQ{OOPrfKs6 zPM66vl)Sili&$=phXZ3F%42tAn!M&}6}#eQrVCG>K-uFhB^Ouf=%Ca^xNl6@7i@G* z^xRupIh*WRkMq7-b$XB-!^>ps@ehYICBp0qiORuh?V=NWIW@qA!L}h%SpM6=x)v?` z!&Btj9cPX(h!6)=cYA9St;};F?fAqNC6khih95mxwxT<0>~or>G5Ke`XLRplv_hGG=TK2cx}MBe^jN++zp_BEbiSK22BdIp(&5iepnc4D(5i`}K~Q#lDPzc`IGJe*gX zJ7h{dtPb0Hze5e;@?HP7L$Dz}P*JuP`0b%0SC$;W6XI@<6V4mAp}f&~LtPPzV^HSU z0(Amvw8uqR*{6J4wxz2#Q0u9{{i=^{QA z1q>r-y`(A0C?N0X-8-g6TPe-AIl$>%V(5Jzy6=H^F`U|~3Y%-!QvmfGRDl3>#}k4I zEgj0=1QKSc@dUY%&croq9t}k1ciT2f%Wp8oX3&rsNW1K|j#5(898nUr_0MI`r4HFf zG}E9Km^ks?1bF$in($yrT>h!gqT=@bJ1tcLatX?lcGG5&x5oh{hc-E*iwc+CvmYdNOnECt_a9LsjV!ABD|6}+{bvC z?C0~~hkC34G{p?#hqMiHgn;5GX8&RPLR9#TY=l)+ze91ypN>j6&y~{w2>wkD%6M%Xn42*N04f z_L^H(0uEiS?s#2`51Wyg1cfF6KK^>zashw`s-ifkq7ttJCy&Ou8KN$~H{~oLd@cp2 z>?XVnT_i5_4{?TykeJ(ze-~CKks{KYRZiPXOZF|=d%FSsp#Koe$(NqSKWFd3Gp;7M zSoN)*7K1=$pDOMF$4Oan3d8wBFPo^ob4Esu6`L6_0g$=lJr9xc2@k48o1~!btz(ta z&!z5oYr)PNh>8~zM{aV{k+?7>s6=sjInszXciTc`^^h4Qat7^`Ugl)51x!0@vl(Ce z7Iw&g#$C_vphj}$-PROB1d2S9dh5ciSU^aP6iW1de}mUx;}P%=CSDY^gQ4kJWSYe0 znS6lo!K%M{Co0tGC}f&x&oZHqyXPja|k_qRXx3f6e4M1b=(C`bT5*r zxZBF-#T{sOlQYC5Tztj03)Z;Hx(1rPhBm>1#{@ZtMVnUPXC!OH?sE(hV|lfCZFAsV zA(5BR2t+DK@hl+iV(S`c{pSq0;sk}x=xIpA4Q+?zWvDA)bbZoZ=a|Mk9tf*B#U1_D zAuZ^u6`k~rYZ7>MQRd2XH|U0PkG5FwAr!S&8>TiFThNb}obM?`ul~q1eKe;Q8&i8n8VsGgcCPip_H&(|jpvtvmZ) z{IlE(Ve8!DR-(^Vu*E7A{rz?D)Cj8k=|Dw=o+kz>K)R*^cBq3ymBQDS#FA#qL}{o^ z#|}`{u!)=zuST`>ZOq|Sx^@lyaZoXD-&tVNzzAvcB{eBY87NX~3Ihgb zn1W+LZ9B=va;5Rp1^hOw8X$Md+6MU}!2O9+p5}HbwtgL~wpvC_^eHZBvl9FL0dibe z8I69akH=YFa4F}nW=dmxrA~E&o{2QXfJOJc0=gsk zFyAZ7V-y;?C2AAJQwv?5pgChky8)SQn}Q~(pA6js0o9?7?{#4=l;$Ny2B>4cGG?rU zGBO#-w<(-zED}xH(4mLZaC>(a`$OYMdRy0HF9-q=oeea}zO5#CxCaSZLjzK~vZXwb zY>_xoJ-$Y(0cw!qKOpejffcb^DQr$#d4ozdQgIJ-tPy6jIN!U7Xq-P0QcH6A1L56+@r_(%3W1X8=>-C{2eh}e%{!~j2OMZEtM!n4MQfbc zJ+S_$01zBTH~C0jp1kew*BS`cYvdi6sllrln;MV&t)buK)A%(%wfmjgJD& z=<`iFI}C7|-;?7VkaA#BQvy`F?>95-~p!C{(jOzSDj3cRT<~!Dm{>eD=7`v=W3) zls}qDcz+&G9h?Zr_8MqexlJ>&<;07q#JPmZ;f9c-33?=@Od}oJR){9kDf zPzW&u+-?E3wQpfdy}Q_qfp+{%143ruwwej2z4O{TSq-GG1CUhy%7UUXYA6lY|H4j} z4Cx7$1m!d%bMVU)aQ8;)j3H7Cp=+u`%w7YTbG&bE{zYW?tFbal4rON z8&RLxa>b!>Dt1y;TcW6~*f2k&=EO5yx?H4aE5jcwW#^WdtVCE%7^3<7Jkn5r@RU0*!mrMf7!~}ovMvVEo`|;QQmh)!=F99J3Mgc zgqjAhsd6bfqx+qydwNS{@N%6TcH>C8vTow$?i6+HX`#l`_Oh`!8h2kmFbdt)=eiyj zCzVi$TCDT7wTsD8n9?=ymy!m3YCabu2k?85hU#H1T!jWgNGRVek;o5829{~e~ zP0@qxAvbaRo@#B@LGdQvqcsT~POH*nhC49;_=>Euq?l7UU+~*n4IJ35q^%=k_WJST zM^Lo*i8>gM&ll9?s}j^VpH#T!XaZn71i3qi9~S*%0qmV9eq7}%H0cUOxbt-&rgorH ztUgBPo4SPz{|BhSRi*~0oL0Y`Ak#@VDjz4FrD*NFL|l-0S;C?x9^%MeITM6~gpB;M zH@3>3#qlD5zOhRCaJ*>U+GAWQ8~sFe|6ctmaU5C6z2B>3Nln&%deHK zZ?t~~>7-3y*vl<1O-;Y-^=Hrf=<6RZZ9WCMA?d|;wyIT|H|k z+998=^l7R{{aB?7@hl&4f~*OFS(KSGZ3|(6R(iehW%lQ(_w14x8)pkI9=#-w%gRdf zrR^ZmANp5xPJdA+@q)x`e;X8^YeyrIT7rmN-sZF=`Tv~MpHI>AaDWhosfT|`u zX0ybYu7RBO9mve>h5!azwA^nXLKN^043M`GA0{L~J&qLHl|xOCgo7r978rFUB{j&f z08o^x2K!*&J$8h+AAnr25~v2fI^~4bRx2g6zpqj)FQIy@@#@)A!D{k-(S7MqgpnK^ zIl&FFisUz*505OOLW#dy+uzG>sJxlL_CJV)V?5YFg0AeK)4rY^9FZKkGer+!KyWUv znw5<{K*#w30Ive5G1qSfqFxskD$gakkNK0BkkEbr>v5s!UbBenv4PAYlYUGw`~Bl= z)KU>H(gs*&3#vir7kU@j`B0Ou)Og(PhFAVB=DoLRw5jBF!Di(1re41cW<>ukOc~(* zRe57o)Vu-U`wShzbqm@R{IZk$oyLo?p1XHfxT(QV&`H%m=kBm8J+z(ITQKnO1vmyh zy-@mdhz>A;;c>WuM5o}YP`<`kMrNpV06|bu5Va`aE4>)}rttz^&i`t$??*(cp?w>H z$ztEw+A0SQ4&k<*P z)!T3hg_BJ;pv<0Dal#1S0i*xNok7yr;?8&Up^D!i@2K48G@h~q^-JF(gY}MI6Ue;a z-~Pv&b(@g_M!GR+U7G*y?oi)HjuByCn>p85a|I8CpGV9Y!oO-x>!YefwT&ZEd{E;B z7N&is#^~aI+!>H2sDnI5Az;lChwxNbzj7FHVCwMk?KNyMjR#qr-WJ!Ua>n8BT02LU zP=((FM}H-_Z{si1sf73MmAm5R(t6gCq^R<%7M|T4YhPG-nl7~svkV8ACqAc{+V|0G zx{MEM5*091#TTI6sVs+R0v{;KT#7FPXVEs++3X#km~cP!tdY%z@5AR%Ha?d1q->Lw zsrKdw-(#1-+PiOqgxmm-G!An-MdlBjIaL~i+{|^xfOPJ)0f9?o2A+d(V!;Bc>5C+K zhcqkO|Hrfj*$zx=5X8Z>?*3z1`)GP}!!Bl&lo(O;yWqNJh+LIZfR{Hi&lX(lXL$2S zomS4w-sp6xM+cBVE*{WZl+U))xnz!h8)O{UU0>nH(_y6JfJED; zz5{^*R$wm&?Q?mh{CN(5l`YRY2Z-~ltP{{j<+!MdOjCr%p+}f^>k7cwf~uHkH&KZK zkUAYFJwnuhCO}{i)M2E)gmUd6q?7~hHko?n;{rE5Z-*g{Pb)g}J z2J_{64!UjjJ?S7F1XtVFwmd!ER<3TUXVGf`Svzv4Q$a*{E_ETXINStDlPS2p{AV-E z%=w45My$JmPHquEoDx^+fn& z%bAszZ(s|FiN#@B_LD_Zw*gI^yi^mO&kf#mzZs-v+w`{sEDQ-r=T@3WrH!wLN#X+C z9H+vC(q{#CWq-IJnVju8P+n*-|J|3aexAgKDf1$5P;(SCOi3Pa2HsjXfHOexKvEja z0Fmu}=22AnS7&}gKRUn%|0_wMv>^Nq4jp3Chdg zqF_(f9qgW(w0p`MTfgV(fDVZ=(>uU7tj&%OEHTQ3kGcwYujU9V;G)jL#XiOrvhUVN zk@J$Wr9Lah!;r9tH=2I=GM?tA@mB>W>ycXuJkiabYO~L$M%rMIFG$Pv9jG4*Mf0X#yOcSA77{&UbH3haK z#0m=a!&Rg{Pp_$G6~EHX61H``h1yIJjC|SfV7zU4dT4+OA&pv=SAQG^hoY&}24Fk( znkHi@nW&!z3%MVVw|12+G5+cb@&I;a@wZN<0K2j6EhirKn795kWE$3U?n_eyi2qx+ zbKR$hxGNIwwaDr%zsixK!GeuI0=(*b@NIZP=30tZNC}nSc{t#^DNwA+LGjEVCLwA8 zfp&baBY-41qh-WWQ+Wx8C50vTrEmu60%TBo^>tCCnymJM1A(J!T}(b}$!OXMY0Rh; zS9&xW4;+2>#sdbW6pO&ZIb1u}ngSyg6t-q;&u9u_Rll%0m&wu*WZF=4_>A?whg$+C z#d_x1cfoj9!!U-0b92&1Y6xAEZ#r2O=`WONX#vw@ieVppO3RF{tjfD}dp2o`>)K}| zPf!uIp`Gr`o8J6w5HsDxPC-SF;j>;`u1Ti&+|X+z6J8kGoK#|MSoYR-U7zHlho2^T zHq6cx00h9DEf;0wa}fHvw@e1QpoS9|8^ha{szVXnOM%IybP#djt11TnN5ENNF5q7R zZgHyzH!6?6sOz{j5(F^Q=!1vM{uac*g^unv!{q9m7ZWG>peXKq4o29siPqhZ!HiWb zRp@c`Xrs`kZOh4Kv41tu^E-c)C}#$ZQt9gxpA5zrr}~X!J+2>zybaa|gG*?!{UD(6 zOoQuzRUQO>LR1c$Mp9}l$PB^vc0v_=oOfcg{2|QjC@#&b) zz~`X)q$=KX7iGu4T_z;Nc`|z~ECJo>3q<~uy z#~|mLKX`BGo9_y~CVU-NvGTQ0=-W;#@aejcq|NH<>@15}W0<1SGUqMShl!&gws%cb z7ZPVf1yg86cEW_4yfMhDgzCS*g|4QT>sLFPgoD15CQ3QaF(_o6n(I>(7!^@)8G(L? zP-N@bgb3_!lUn*@@Px!A7XbB5vA|l@Qv5RoF(46aIdl+qPYDo-!-?qC0zfAykSO3* z)x%>|iDEXCSO?Y_YMD!OK0uWRgN|5kB)OL*xwqCBSMz4rv;X>QFBw<0F6@QB5GQ?A zI@aq9Ei>3^ah7+#eLx;e7b^M#;zK4hX!;by2U+;XhyK;}!mH=KA{W)+8&>j1l_hwx z$8^gh;Oy}C-=tF@5M?DU#K>3O&Q{<>gHD&QxHj2AVwR&HQKiMM2#UF<%flZhPL!RU znoX)fvZVcO%WkKkNR9uCLVrk;F%Y)?T>aNBh6B4OE%f#iBD*MKz<0J>eGq))_?B7< z^}WJ`lF}#Sa`vZb1Q_}?RcPxT2lU;03O-K$a{g%VL z+=2KTzziOZFGHMH$vcYDCcWp&OAhjf49G|0eN16E1x$P+6%cH0y!`Tqf~$0dIi+9QDA_5aHC3jaz zpgzS$wSn7kMMSUxIDP|J|oZ5Yo7wXBv+b+;KjH#*+Umad7J@KbxT1Pw&yDRVI; zkJJjGVu7YPlMnS5ktwPg(F8!UBR#ZiUENU2qiC?-D)GoBpeV1a=Jgiy97 zhkSiwU`AIlcJalgTdiQ6RQ{_ceB~vE2f5OA!30@~wp9~yP1`Df-~N1PS8f^x4)&0F z%55%XiK1U3ZVUgAY3>wUUDh3$f7;&cG55FnY6X6tle>Mv_i0Jf4J?Zw1@$iJTBt-$ z@d1kgP=|I{oZ*>tE`2%f0s#wCwcD-^^Vh*wQuOCrUgX*ZV)0M0y~5B5!r1&_isyzk^O)>d8h9p8l(-8$05!Kq!`P;uIK&H zPckAJERA&Mx=Fy3yAS>=GS$@3s5nh>Dgk!*eO*Z%hp)Pj`jzD1yqo1i5@G^ZAz7v#|6PkyY@9L7z;2Og0*9fL|8nl+Qu(+NPUX61B|WXSa+N4wE+M8%Jhph zYzuwVvvK*}@CHx5#A0`m%!OR=!O%Gdncwx^X$k{)+mNCEip;&^)S}JgEhkLOzb>Kj z3Q4Rmo0&=E%IsqWf>2HPAO9RI$Rg6d4g@WqF37CCSBBSD^Ourm(Z|C~z%PI!S3%>5 zUKd!)N|G%!%f%xezQ^7A(-5>2IQb@Y@*Vtod2{ih?(uJIsVtkOe%%FKKuPmN?5Q%( zTOB1CxuN5(V|-!b?epCHI)!~bK}PtRwX^HIFKy5;7HkLN>|a_I10b%@dX%+D zFQAMcu4!IdWw=b<5yvvNG_eF2_VL}}nK}shXof9$qhDjOTLKgabb33GBPBY&#+)RJ zqdTQSiv?2j9~9+DM=v9%71=u`CAa%LB~de>^lr_pRl0b<#?=J!Ue2^Y8nUksDaa0t zTT;|K8H0oVjShMPx?ROrw%l7?f45K9B`Ej{)v%fsnS%ly&Ny5s+I}yRQ^IR%&}_12 zHt_25<^t0NO^;_;=|-V6}3@`IlCu*5&7;sUFQsXUTxskof(Jhb$W5t40%B zN%8S!{#Sn3%S(Pt#l_A3-pE{qy_gB4%Y=gQk5k}f?Zu~(K_d>!_$jm$8a_sPIbl1r_u9a9&7FI9Wk!E2>Lx6a2d-iyjyuZZlxi$^5`{@@2?)9hB1n!rm=8t4dmW|JB*rmHvX%>`C zzqUmK(%_Mx+IFsEHP8l>X=)gkcnrSo3&%EaH7N#&p;0hiApF+WoRnn%XgMo_)s{37 zJ!Pd^l0o?&$v_p#9nA8eff?I~4F5~KUek-HvNt0$9!3W;{`KIIp9wcMDD(JXKa1^V z9p|Ig0@)$sDRlXSrY0Z>#n{oWv2!H)@9YOS0p!t*?E9)eNaR#jZT5l`r@)up?xSy8 zoV?(d$&&j&eg^o)AJUS8^~aaIzty+V*Qd-ybvo}J$7mhm&w6Hj??x-dqSxI#2ft*x zkMcnhlrCWQjH|}>R~epZtjn&1nO(rsQj7pfsb|$~`C-(-(OU3~9hOCvIWYD&)Six4 zTQHaOD*D;Yls!RmNR+<0=yq?m^;TrP!5C5xKy-f&)-6m0<0YcNHA3?u4WwCxGltv! zZr;`E{ijh=SYU%I^%4}Y;cr5tv&?c7x#4lk8+RJm< zr<;>Cv&h6m^_tVQa%Gi89=!+WHg!Q+YWg)drv##52~OGk>u^BrO{cfo*+o`$Pd-Lw zo^^9kPXF4y7@hFR)oyKQz`KM|u4Gr2yLPQT;iS@yxpo2BZWt@Ocophbre_sJiGaBd zutF&2#f7a&$p3mn*J^;!tW_8*AYU-d>(W)>%$w$F3qOTy&bdK*L+Q2+)j|{U_dfmE z{=McHVSwVKW(5I54?CVG zB>Ie%$mEzAFP9M&JWcOEvpO7ag=%6NwJL<%TVD3Hl3sXiiYQFH8$2sJMQ8Mak@u;Xogls=C3=o)hu04rD{VR8Wys6p)H6n^2PZY)`DW^LAfG zQsp%2pbtP;g)@)4-~7%NO*rw9K|D?g^t+a!g(yB6n@1#~vAWvcTq}ry9=0gp{TG6e zSgGH9S6F#VDyOoD^HEx?^5)ubn89zopXGV0gM5jcItl z$t;#$X5)+IsoMrN}1hB0MA3ncj1%V3r-7sNbf?WSX9j-Y0+B4hH$coLst)nThYXB#);aDbx zI{{{F$mh=Kj9{Up!}Wv#;jcP4y!@D>wvt=Tb)*IWaXOpyNWtwB_woZkXDX&3SQRDB zHB%-H0UTqbqcpL(pa;NKo`UXqG9(`rA_N~H@+1NR=mGe?(SQM%fY23jxGWR&>M0+^ z!Wdz6vW9C580PnKgFI7+r&s@ES6q}=ooY;oO>Hoh$3GnPJ$B54BDLFV07bf9bDvKn zX*8iC&vN#Lfb6OL5mDsz_FRPr-819dbE&HsX%|CIP5PymmUCx2s$let2PRnm!04;P ze1^)5sQK;ntw|d1XTfjZ-<$wf0sR9?V)eLV1KcQSNpCHFc8S{y+v9D3!>u zQ^4OWx&dP^a-JX003t;5&4k1vOL`^_vy#RrM zt_GZB^qkrcY;E-kcl&4>=e94WSViioj|tiUU6f^m`=7T9@&a%Q_P4JluLhKoW1~R+ z0U=WEweT(Rc^CZl&H^1SrotMXcR-9L!U0QvI^bLchX0!&JO8$nKx{v>b2P4i#xrF) zBltv#BE1=+>oIvyVPFVB0!A2p9`wN+DtouWz_veB5%9|QGg508Zd7pFoG1XBez)By z_eAS{B9LUiuXg2Y7be5nS)9ZM9VKEqI!z<*rT0DTSlC4`%;Zi}k#7ahE6l0R8`S>E z7?lcmBfNCvw(0d21uu)Hp-6pCjaCWW>4zKdS8bOU7~N<4dyTR1000TK)2uyi-VZaL z8%4aVxt_+`TdvF%CoCmo^PlK~+b`}P(hg9`vMW-y+3x73LxdEr);K_@EO|EI+_Y4L z_ti%hX_}gqaLbR!7O!dWTc~npE(l+UXehO%GQb?-F*LkL$%`DHqbTbTu|Q*g2+931 zN}W7b&qm5aC#eN+*{IS314=AEv%km{=a=7z_Wt$6AIWtXcDl%_UMh2x%PfQZ%~V*g zf>hAzHXWN|xVLsnH*t3g=WZT%PxsT%Prx!&ELphFZ6)yQosHYI#e6dXkv*!78`+P^ z9z6jx>ztc|0M0J};db5kH{ zaJa{dM@<1c0bL`AA8fdY0$0Q{w`{ooM@*@jYb|15-rOhvWRC&6y8cYlI_Y~{Jpqa+ z2r9zvF;!RQq_eug^f577QZ_5M@R7oSz_4|NjHq(Pa@S;R{Ev7BLcPbk3Ak!XH<+WY z=?c=pew+0wu1FAQF>H3c?o@q27~h$M(Z35WMbqPpXTEa0B3-GpI3q4(IB}+xHT7(8 z@9HO-_1Q@93UDb$5C*Av5w>@B5V*lgL2eJ(?=*yPbh>708!vPM({5ZK-6`cFE_zfs9-t z?~ofwcj~f*AiND?v#MTv6N(fI?Tb}JKgkRt(GsK_OAuboO9hv#?^-Uwi|RG?`rs7J zVUF`@5p1(dw(G~X1unA~9sS$ZzpcLwelZgj4f9+vV>e_K)I`?`eewHq^Xou5=b|Fz zEL^A;sk!eIU6$_FJ7(fE&c6SzCv9UMJ@7irMc9r*Ov6;)(fzIc2I~&@V@s%%*^BcN z?rMej!=x{k`1~<3M`+ih$}8Ld3{KeV8g8u9y5qM6v3NAx6sq2t4eIA#cPE^~5MB8P zqTgf&AGP3*F1H~8UE=!K#)dc^7o@T7Wc#>XHcu&+F0RXuTv_m|gg5BKxFM`rl@ z3_Nr10AmfC+Jlff?64ePOWxf?P}pKLN6?s@Jzy28<=vxw{r^Q zzhFkQ3_!;_@RvDW?koldz$|L+H5D~j7-ocjNJFvApX%-@75(|r;cQCQ685FYpQ;X#dKjt^?V2ZVG1A21K$ z1?ZY@r<*6hNU#le-S`dhfnl;@V#1{7Hr5)TLlW8RsiXdZ-b7Kb8&wBjc4u+iV`&K5 zD$;3`8p18`H2c-rM;AdMID&|aM}wCv+K%f-(G6KOb8W8atHK;-Y*R_QUI% zbRfA`q?Z@D{lJEJHRkUAVXb}e5}rooZ`c&d1v3!kbv7C&LElBgMu^K78P4>INW(D5 zQNcBR8W3CVaz=t+vIW$MWO%NCl`=dZ0$LLPa*~Laxo^bMA7*l)Lxd znVgJrv(3xN&IVO$Y7*4?#?XeB0YZbbuQ;zSw=dXRJGMVNdh|j0#^#0<=(WK#)ZroV zkpeKRcDM@W=ZgC?W9OQ<2;qPwSIH9R;CU2k?VO{n&jKUB_we~zpEhiU`;@EBg}u3< zV|-Laf=3$Am=U^3ajombt;PoK+z6Am(ob5W_n~C70Ch77b(cEVGFu zt$d@H$1CpmPZwN1`LrPMGi~?}G$p8=up<|JIJJ)q6CcArS7#a# zTl40=akp-%piFmePPRjI39j;SKI=@3P?Fmv`S{gVH;tZrGyB88xieP=LR1&a*5mcc zB^fJ;Fg$;_N<@C3yifa}@}IHK5&z~WG~S?6$lb+eOr~Q;^lk|PWe4cI?dipDvO3rr z6DQ=PVC?SS?gV#C?B-irAG0q(WrZ`|Q-Fx*5;3uh6G4B9wEIWs5rxK-Onl57Sx33c zop<`Rp_X*uDV;Dzhz~yayESujYN(t(jSNL_?CBnDDvU1vE-PQ5o>}bV%boN3qWUA} zD)PI&n&fmp@lA?d{@^d<8^TP8n1A+60q(XYk3C&ov|Ei0)6G%pqPnwCZ)cG=^wG_E zltI_cL{vs>kWmBBs$S1MK&$Rv#{+PJoCvKdr+n>9w#8mtwjBqV5rw?+7ZVXQmk?`NBhcLB+mUPsk(pty z9w^aRZ*r;vLtAJ6KE(9?6M}%u@(M)So!)vZ%+@S)YSY#K>9o$rQRVn};~JXNsoezR zfdk~h^J8qNMNhB2Yg2bQC($h9^xe_YY2p<(Q{#KYGnz|20`)tny>C0%-#@G@arlR< zjN9?0`qbm4d1^B-52U0=3_8VbToTIOnBRB7ZniE{Qe=N*)B z^SD0m!FbrnU{jFgZS?ZK8yd#%)a^+48vX|smJ>bBO!neayMfI1JSkARoIdnaSAofpiX z^t3XJx)g0LU#T~C)O*mtl4!m-&Y@y1BJ`#**ie`3^2U2}ZDmrn9h@-3BW64zxWmY| zGkF?gv)wIyH5;WzZ!FU&h4NS2eyXD}T!jCfbZ2UZb+*hN)BJ;Gskg;AH$7=Ur2x?d zRa0SbD+-*r!wGsHXF;P+!~=XJRd zy=Fr_d8fh`e!6uQ*G}|wPr?G!Tna0>%S}L)PYvhH34~*)%}8su*3}2vE<{VyLdX&{ z&f_@c$3JV41~ISr{@L@hbdYg(0gIXe@*zR;d-^wtYKaijKmsd{y3_KBRGc!I^-8w1 z@8BP;w62HTh0E+ZcZm?T`Au6u_Y4Acj$a=(EK1UwN~JRX*e% zobKfu=w3KF!%!+RRC#L*7!JnV*g?FI#bb9dmiQ>YzBrM6 zj7TnL#Jq>WkGp_gKrv*Xu(I3(5gzN06*G4>N1XA}E6ci4;K*?mmCb_!TWEJ_i^|htp#sb;Coz#`T$+=l}TsgD5Xkk*xF7{R- znV-_OsdTHoz-jq+Yn5c%*3t^bMHj>luxWjup*-A5ba&-FzvE^dy^lM0X11EmVb@iV z)|8XWalLn13qz=1N&T1tL%hSsIqz_-YpYK|@b^55=U4(!v))j#GcBH^wwC-s35O3s z_!XRwjPD@l1<`6e`wBVLEFO^F1Z(N=IIDP1}l*N|IkYzfm%8lxdc!ZK_7T`E?Yc~Et!nE|4vVeqo~YUjt6D|)}ko8uDq(`M@%u%&q3uS?n~FjlG;NeQQ{H#J&>wB7v$ zhyEeQTlSPrq_XMC$rZY{R))Kf-DuyyZIPp*uYp~f?h;@tcT_7OCuS@)L2{l(Z$l)K zxCOYMpQiuw{Y~GE7AV$NAw!eRl~P=RBx9MRW))R|G1mZLi@JUdAst)JXT#G_^3@<3U+)LC<_%z~)S2OQtTusVlSSFoTRZLNCFcSBjvHe5u1)c zr^X_~&TGtfJ`JMs=R;p!!eSGvs%)P@u)+cDul^F^!H&es&&T~$=V)l0llALElDGrs z*Iwrx5ah^2XkRZ}qvgwVf11X9hPe1mw>jY4rfBBPo&Hn`hQZ|0Kd{=Qjaqwu5l^V2&-`3>~<0fk$uqJcZ zAW(R(nvOzJaC^Dfl zvsPuHFQiddRA6H{reFMNj&aA9cltWU`KPi}w>-x7^1v;x59Czc4r|dOl&xp6*YRlU zhzB9kZ9$bne65}3Xaximp^v&N8a6w&PT$v+V$`5)TjA&AIRgUGtN=B>>)%5j)Leqj z&eD?9TcxiVG}O4pPKXbhNV+l&sy*y?8A(zQG%Q%4Kw5cNX9PeXo$`})u%6_Pvb)cB zDW>qm5#kvbEy9K+;LY4YTnhXb!4zJnj^U6%*e0nk02%KzD2s|L)CNYK9{EIJBz?fW zlD!r%SYC9i_CbUFmUw6lq9o40S{ZBKBCIEuOO=#(9M+!KktEMJIqxy-vhg%%dk16d zBS?aFcvPFU^Mab%a&qo^pzIAT5Y3Bz-DTa<3@%vHY-Uy0{#eWuVADh#g3z|#%j>7T z7F=^uM;WDr+)c2JY3Mo`=ShK=AaC)Z4PMc+YX?tJ}@ybn?B$u z1Wg-`(}VI-920#xHe+*0pgu=+0iM`j9G5{;6n~9 zb)yPs7gUfWMJVjm&e4fDOAy4I45sves>wRe|90sfJAiE#BnCwJo19}b7>of`-|kcv zU=H=T_;S?K=-QaAjY5_~cCF#`-#?Rw31;yExxO1xtA5}@stR;%Cf8{C<~pIrkEO0k zjdVV;D$-`XaCssjt-ABp*E$w+p5BGXv5qdlIcEe;EhSPK$+UA9XAP-^heHpeWfZ0+ zTjJ0rINe+r9o67G+Y=P}^;W8FU;k)b@!^P>trpww(mjNi(9l>HK{-P$%~o|YXnQR% zPZ1p)UjH4(ixSFzh@{h;&aWt6UFD;RU<)T3hJLUAtaWj~Sw&V(6M@BD1RYypqUA+F=kcKkGWxM3DZ9{F#dw`Khk z=NbHD3l8U%Gzcx0l@F{C83BN0mvTjYUSIDYr$reNb)-$t5$EA4RXq637`Bpk6FBv` z@~CG**!=R4c`8Y)nm3U1YG>Zyk>o0`Us%69KPRt_xWn|t@@a0{sqr;Mj!i{`!&-wNH#hTt>gSN~GY!}Tpcr4!78 zk3#+c)iYvZF{6~Uf?v>uFf8Jwm3%Lbn-t8X8ZY_mK-G>LUEFO*WVQr3fgDh^C9?%6 zMe@=LTPH3^T_yWwwsQsF`GSZqkjo^GTO z{@A~K5p=r$i!aiTuAFZQs|UYEH97i-w6VhLHoLT z34zZA=B^HP=EKBLaO|?Gl>yt2G<5S}#0Dls*_r;gC(`=*a`@k-HW@(#xVarRv}`^O z5a>ro9BhHLS(^HcA)iwz7q~}WP%q`G+lvU@8;f@dJoXr`?tsy)_;;AY6m{ErQIK;A@* zlZmOSxVu!LiSwbo>7y3BJul4e{v==nDUPJCCknZ@B^$`VW6LakUjbvF4o+|Z+lRCP zB-tKn`Ma)3baM67dJ7a-iNtBSVOO&nTAP_3w+N;7jv`s;V(#%kd-{=G@w2--Av7_Y zMtX*%U!TJkWUzBbYfyJv7hU75La!La{nl#~s1~x#9s@ zggssZNLz7UY^;fL@joT(K0fxwzUl3$>PA(}EJyD!Fgn(oTrxA>st$MKAzHPE zgJ4EU9(vVfkyUB~CT{Uin|l@pu*fdy*I(8y59JlYEdyk@|~sr+-JXfOk2OEA6pxStb- z9Yjjc%Y%FKm#^n91e#Bcz4O3hMW&8wHb%U#7yL)%_sFk*Nu6)Zfn=~+lE@1KYk&hM zMdW82GW-;HQm{~k9>ekqB6@+;`v-bS4Z$z`MOtY#d87erTOd{5uEgPM1DamJ4cZl1 zj_vh^cgH+pAGHK8Zc>$8hVW^L8`7nQvPpu>KHJ=M9jUsBYHT7CUyS1zs-HlW~)9!;Y6;DNj~&+^%lZ$bV!gkF*`d zQq;LG-4vzC^TxhFXK30{&)_=1I)9|N(UdP9s1&7+n%^2J=Vevalt)b>oKSMG)sR@v z6M`XN7R>5Y_%t^MtbNE~94Y$$<8H(rKFS4;7)<*nG*9f2o4`19;{n~B~{kjM+_;BZqgnWtik zk&3+8&mlgm_j!OEq}RtH9zN5+`adzgBqEpNtM556P`^Q(yyKcZANAEqGkhPGp}1R+ zXN?pmZ>Y}D zW$HBwajA&j6?g@GfE97VoXc_vy5pCT=odLpUX5ecHS8=oh=~Tr8gs**K%)X!md6zq zBqKyi-z;yF8CJ{rx4fEm8_Z!~tbj=(*=jjL!E-^i2cY^s>9^b^D}+L(58C!XnF;b1 z8s_TvISsE3iIkPsd8ii^6hy_wnC){tZ-3w9l00`zEee5Ynt2bZjqk){XE^t;W%I9q{RP?w4Kl%K%-lynas7VL7O z{){wZjf#e$H>yQDp1o`drJ$UyIh9N3bprC9rQu(fV}7TMG_&10VQI++KnO18qn7hB z|IUL1;2b27DUz$OHaoNHfvhnbbJme7oyH*xW%KVPOqca{tW}%#V_CoX8XH^8)Jc8L z2t1zrRrY){RrW(x5oY9}@2g@vRTVo?)t>D+Ro1PjD{el~qjfY(CE*ydK#U_1&nQ9EzJ+&rT5a5PIi{H&30>jKQ? zE^Yn6Zap1ox&B(UyKW#p!>D>`MB{gO-`7lIg^AyF-j$W9u|%~DAN}{aQY<+kwNBGG zV7^1sIjg@Vil4N-r)<3p<>D`&YxU$AFx0qKF;i5dB^%M#=CIQ4=*J%L<#6Ry>*j~h zOgs;=ypVYtsMr6+zl(r>?}bkAA_XEKAiESLP%ghZ49y@CsNAXgsvfFv*_)enAYWqFObOPHzM<8VF5R0mE(XT8!O!~#`EF1G`**$%UW)9r zvePgptFh7L?BR(N7|Lww@A&a7cSKt&VOlh!Z*AJvJU^zTZSB+W@Rz&;*r}@5>rS2I zayOQXlDH^!9cb*$w7a@!x~GhjUa=t<48C@UpiDdmwG7HpVnH7ikipIW)aa-MJSyVF zO1$l>$6F4H`fIcF)#SU8LG`i=hyP>l{_S@C+mPM-@2Uch2d;vZv$iyh$izM?BX!Lh zNH(P4;*pS0GzmA9fg}UU93***%gb{@{ldA;v$1h;#*T6|x%cWoA$tBPXd+)J$M#Lw zS+%1I;4mor;+)cBi1)c>u5I_T>&iZk=n+XXGAsIO{@}q*Re3p3N!TeExN3GTd+~Kz zccz%>I-7jwveL$fiM19p0w$f?s6tu!G0=F!20xPPk+CNjLKPm6WB?`!N0hKsCG9pX z8q{lGh5x`zErvNH(&)Ui-(cqdPH0@C?XV&j1wl~g9dUDwcMeXP1WC@TZ?PmYal5|) zymPV7wEJvI)Guq~gFs++=32q?WyhWv2Vw{^k9uziR1~Tx*!WF(ubj3ype~=Hh&0hC z6AaGwN1>Aun1#Ila44YWSAKndi=%y4Q>v93neFfw8;#m)T!-;ogVTsz+3yvtyL{Z} zUG*@&x3(!{YOhI&7vo_oX|+{OM9s{-JM|1s>yASbyW64{@Op zCMI?X_`wvD5i4%oypLE=>YvDC7HQ;I2??`q@A4raL{=nvw`#$GGk+K-T-&8b1UKUt zKf#H@K5K(r^>swZzm#wlEfnXf*z-1dTj!{Tb617}06AeacPJxYP@W3d^8vNEmS@1+ zfPeX|H<0pRE*c00jLaJ?XZ z^Dg|}f18>dDmeBGks>f1QNqtiqkaIhC|l5d2fK8;2cEUflrOCyda(8KWev#fBy)9! zseJ~%opzI3N=w)0yGy=i3w-WUx>I@(1^Fo-rl>?eAsM&aaisqT+Pvz26CQ$fFvrT1 z2)adLOUhg~5yEvO zb)RcYM;;Q$;0Yux4BTnk9v#at9ov&^smA-&qz8iFsQ}(xKL0yv= zL`~>9BMXBR$n#ezd~gGsoPR)5h<_aJT)b;;3RuYcs>DA^lGEnpdsU`HDyT^b z6D9@z8HdLS3?K|)jM;PTp^%0HAq|I3Gs*^q4WOx|1fZ>9H`% z0W&I|fJ^V8X0I7><#OWQ*hlz*0ugh=Ax0_SRE{HZY3>t7ginYAeXZ{FP zJfrQ#heH1L0+Z*4)!cotW_Z{g8%o{06^$K_-iJibQ!aO%S5=s;stauTl|mv3=nsuLn&yWtBKQ7Jkg`jcX3*jvneef=E&3csU)4`2cHugOsj55YeTHaZPO!CciB9>RrsXl0qUCXS(X zkCubENX79(e0459BA2G3#fsIOP;GRQ8^T(fZ{4|Qfo;4yo1svS}lj&p#H z%hlU6Ykd$4vCokRcs!uQ*;L|GYbH@>_ySEQ28|g#-xxq*f`6y5*%|l+2rYb|_$>$N z-kGlAW+mH8k+ST_01tIXv69Waq2F3xt0`5@RN5MvTHmq;w(x`HdX`Q7Q6Q}JMz|jz zm=NHb8*lO(3F}FLRjxp4#!||(NzU?Q^Uh_93n`^xL_O9jfc{nv)W3uYmXc$zFm*mS z_2M~sP4bXQ^&A_A zD91t8w7ELStlgLr-Sr7~3dx#kt*+F>S6qUv>?5 zZp}_z-_9RwNy2D$SSyMpL#+o(@az61!?9WSqXw$4riPBU54}i{W6j9|dX!w=!s=r= z^gTk!6bn#rn^j*jge;ZL$Mx&JDrL*A#S`Euk_1J3n|-cw;G#fl2@p*E(jM+aF`YBa zG60TIGjwUf;y!&GGV$Md!jqVJsYV03o}uMTGJr>nY*6uWl?#l#Psv{WWqyxn3M78$ z=C9z;33R~6AEu3()eM;%R*~HsKZ6MtFui#LyDfft<&2At>B=>IN}!v04q&gN_kx?6 zc)5wum_5(&mHrmXSDbp*Ln@Fj@GOvf8WNUC8@B#N%5Kz4eD0)CF2^m1TG7FsRS%E+ z7Ip%W!#i*ZyaX>&exK+Kg*Qt|X2{;6(;H z|IV7Zu(K4hNED9qpBO z6F=yAY#@TIaGKh~crOkVoxcU1I76kO|E1+PYZeaO$~5&bIekGNPFrxlU#(sO>qt+5 z_QNrcz24ntXG7rY{N8;u@Rd^r+RPvo`&H^|{R1{Bl6Rpo1OpAbDael26-O_~?_C|` zcTW=y-t-lDnlHB!;cgI0RHa7dMG>|^0xBHWvn5mZx^Fmg0jDm*;)h@MS!=8WRdG+| zMQ%Mj3M5J^KZd2u2;Z?k^FWYL#PW~Dg4o3Ad~ zmpCq}3hWE}0q_79ih$9GW9`SoV z{w!z6ytsGwz5wLqB&hqF4@7JPSUjxPD;~a9JgXntr*KBmkKX$NU~5MGv@dH6C~m`# zRGQ91;SiI-xaH`6Xdxi)wGo;#8xhcfJnN^xJf!0_PAQLXvAqQ0HUJS`(F z%a8Y08L)o(-FecI?qruu@2qlitHEpfwmxzgt>Jau8Xn z;TAa>e944ZX)<8X?w~%mQt`lDt)9px^%{;dqG4{<@JkGiDAMT~*}2w( z3;{_ruB`p=uSYMI@o|rR+T3)`ynrcJ`D8IHIwes=JchBtjbY!e-ynHDPF&NoUJ;?} z*q7n?6|H*|#IAgT{4{mO=@M_`am3Aa4ZOLqJ7{JC(It6{$quM?ff=R?zDoA>;fO21 z*k*>W>oV33HsOc`FgB_V>oh~ODrD;WAN3DOyp+FXgYPPb>?wG_#F|*lqj-TQR~q6~ zxJ_+5&QSp>i;GHVmb$+H`en#gr1{SuWkeHLsv3(8jUPgC&=l22MSE36$=p_JNZ)*P zdVt^aJat>$)W|wKjAwkq9sH3dZ#Z67%V$=0S$t^T!_OvDm~=T}I0Z^9)xCY)Yv8NW z)wEy{SzB6L}2)g=(OzHek^Ms0mkFVI`Bexr2SO=aYz~ ze>!c4(=Yt4)#-l#TXfQc>BxAgI22$o`w4Y2p(o_be;>Qw`Y%C%0yPi>h%iPq82Hp8 z*H$<^I^Xy$sFc!+_%FM6_n!e^Q!f3G7FAOZFEhihM`Bv+Nt;&c+T|J6_RTg8aJGuo zIftK&VW{IAtObYIrJn4&#Z-x~0ubSMAHtQIu$%=F-EI+OKm|AIdV2ha0hr2rF~MS% zjyS&ksGXGrfFUOlc|+NFa%4*|!z z`Ngz0v9R>ed6^B*ws#PNVx+0r2q8v-ngYzB%sD!#e2!UiB(CwR@XnY5tBmtU!G-A3 zQn;{aS2n`KyXhnmF?oaIMoqtHO-!5%0WjTTvrH(@K&?Tt;pquGXt*zaWpWBEAy~W_ z80f(9^L$5n=`^z~(PORqt!LTF+1?(=n7z~I^b6=|WLto{x@>4gi51cDT65Vepqb5a z{vAGrfF&$~_TvvXIKZjk75RWV>#Mr6ig)gy3&PCou1hm|!GXs){{a7sEU^9!&7k?9 zwMQ@m;tnx+%~Mo%2&SY))&7NDPR-z+2@^JstHZ#Z;3mJFcPd#4(YR55b;PC9=++*u zy$*2IgD-H-(ZUM;>ZzS&!b+&F3viW7H&L{1w{EyEy%b3QHT!`Y8~#S2`xu@xU9ua` z6+p{6l0rRia`%ESS3>v zNfJ){pNe13^P_YR@Ve3gyxIsh;S}3Qh9(JL%Fuv7rR^i)+_h zt>6#w?l>x$9<4Y2iP|6C%ih!xki7*}dkTlM3-V8E9>9V>rZ_(7Pon&6;Sj-pGSg*g zyH$XkVjd{mR~Dg!`Du0rpEq8-<~{G{VU|||k5HuV!2nC${|{7RE3M{sbkf`jR7v9O zqeRGT;LuD?LVya<*r_4&>qsP7BUY)V2)%_{58A1gMx6ZYM@2vEPFen+x*q`n=-h+r zDaHdP_>_LzGW5;FLh`_`WU z*Ce_woyePRqQu?i0xXH4^-4$|lW8G@+%t*(R|*bcY>ZNV{@{-4_`>j%#`4k~#lD@* z1^#goOf=^U4pfjnw7f%s8049-wr}A6wyRPA&?KvS19amSn(NCSDRt{K-!1@84bF7C ztOd&$l}_1H?V1{(VJ>GB;07PT0{xlahl|L$2J!)v`z7RW`ui5{wVTZzaaXZGp<3G5 zc?f9*cQ1I`-Ftt9ZJ_(31~GzanCN@iToV>)2s`CYA5l#P+Mib(vH1{jOd;aRVHpS;C=ugr(Q zQ+;X!!3W}n<*0i+}7F`ZXB2U2i!<8jJgdq(Tv`zo&S!fve9<(SW z{tQSt(VSX$1KN6t2@&d^T5<30WWr1c$HefI$RaWg|BY+1);%(^nf@ zVcWXm5HMOHH{6Yykup7ww6f4iJ*5s*6+WbUV7#z?S6DCHb5=fBI8yur)@qk>q@ZwO z;;7tq^7?}q8uB#7nkzC9Y17Jru{xg#Q9Z)u=h4=Qrt7WM^;#F#ybspz>`*5t=5~vg(6l6?5SFhevkmaGilY$ycKAVhMijODZT-6 z6nZ5sG!%oTTyZDZL<20RXtUr17>G*%SMBlKx;j(W(7WIUi44E{5 z;A#W}{|>kapMwDx)CV~{2D;ikH+gAhbbe$1vzMd6s1}QX*=z5&_Mb4>K4HIZQF-pp%XJiu*$7l>(}1e(UTJf5 zA%S#G2mtPQR9uAlhZ=Y8v`m}}YL_F(XS#W{8qv)nKtUuXaNF{3DQ_xMf2I4C;K4>}7%?aLb{tS>JunWPZ1h0U* zq!LZ-zpZmlg1or_5ejwxaU2u%wap&HuENXs2|AhQE%GJ^m3CSC?Hqxdh`K_K+LZ_A zABnKUFuFePb-8>?QpS}ren+8>IoNHEmvi3Xq&G7KZ#4Wg3 zPWl#Zl@I|jT^NM3zXMSd{5yjOsxY<*wF|Bf1j{)V^2ygij0(Ahg5-7X7^2f4FsXm~ zxO?>&e8fOdYC$tdA0__1qI_&&dY%!~od6QsgM?sdDUuZbBBi@ornQ8yw2x17)neGQ z$Jbphz`gFKxcGFVP`{70^+8_c)t5F9$z!l}m7t4;Q9)g?Eag88BIzZp= zhIJmppg(G9qk^1$|1m@YBzMZn-G<4Ef8bFKDRs)=)|3Zm9PfQun1|1M1+zjxg1h>y z>$ASRcqNJ8LV*%azct()3z!$_S|y6W!=d^Vn6#gm$ag``_y1jq!)uT8_8ySlYJ}J_c>YH%w%}B-9B+509yUWM_FJ;BZ0ZI?i)GuxM)y&LMlK;zckN!mvFjwU*B8p-%tY?q$Sn76bH;Go zv>{s8H+UG;>{clrYTHv=HACo?x)`BFdW3311_JNz2Q?b*#ig`K&0uL`(U<*!T5MOI zdZQ6pbf6rWnC23Vq8&hsTUP7oCbqQ(36WwvQrNZ`OcOSL)o2wuDx>*p#PShc+g**=X8--GL(tG=Jm-GCdAupjXiYJ;o^FlC zW3CR(-2fnhz&xnn;jG&hy_QEJlQk2&kR6J6T-D`e=UV0iYz7&@sP=?z?~kx7+Q&N z2mBVSeJMG2j0*swguUcv0+P@r^PHU-Ao#_`Npj3hjF@1gSbJczikqfzs@ZW_V}3Oq zZnOk8LKxg>ettSXjhkvS>mpOY6|!6zx?DgB{Z~&OC~XX}Uoh&g9)?;yM>;w0Y}x0x z!EUz4C%vIO_=lj`_8f<8^Em1!@3|!LLiMT^j`g>o#Ku^8*f<3h>#caWnK4QD;eQnC z_mq%!8;njGn#*JUj9_N=wrg+Tb@{)CHKNNI_>^#e(`Zas3YfRO#%R=wqC>7*Ar&gRxmzYr*Hbke-U zFO>Xi90b->?XnSnYA56At)_94Mk4Rjpm~1`Nfcy@Ah=&d_XkNv?xN-{)aQY7B&M&i zF!p*N(+)S?2D=GOx22CAK}_u~OD=5!Gj_X8d+2N;^r`S^gA_TVz0>i1h}-tzeHqxzZtRJcw?tKjoxpTBfM+C2{>KU};){>k;RN?sDgGlmUZMLI0Iz!KatZDg)tM zKhwU!8u;O?;>QyYp)|soPQxYc!UniI>pnMLi3JnlXi3cC5E%ae*@JGW?68cF2{|8b1U-BZbgJD~6}@3A;*>_Zb|!475d2SR-yfad)@>ci zK7983mJ2oqw-UA&&AAm9F8dwbG+k_VSxw2-oH_mE=zW4ajOFL9)W@^o3$$*9_we_+ zA5C%iBf7)zz3&Rf^WMh2*is~j_nRf)p%v;BdB6{mT!5kXwlLiEE(^ZaxPE~hLkKi` zFf2o_@SzQYUOW+G_h34$W~6WIy+;Aag3xyUpVzz#$HkqqfwmW4?O|q22Xmd`$&WO1 z1tuM1!`jDoN9}!uMYJZb(m0{|GQ9akslk4hiyb zVr~cS-Vyj3>T_hqW?#yK0hnm~I*wf&kfMYgPqW&!WbV{&{_%v9#I^D>=UYY}yo-wQ zDvNi?WW6M?S)1kZwb;Bhs!I7KAQdWk4w!@Xw?G~>UF-gSr{7H4#FRKerxIty`>3bv z^8X?QE+IDv7~F-I025djz#p2t6b?VNP;#AN#`u1OBhc*C68(Q}x5Et^T%Uz&K}yhN z8oOtoAVVAc$ua4qB=aTsL?pPbUi|Y6X@xe<6kUUDo~f0G$bkWR$w*cwT2we9+4lB8 z`VKhhoN9t5_+H_tJ`3-GDU^&*S;h3A>&buo*xNOiOZrlaCf$mO^j1}gUw-r59EkuN zB^o5PW1zMAX^OA?$@-lQ#T{*npGt5qfo>J-|1w^iXQ3R58d!FU$>nv_`vw~boT;Q? zV*R6HTqrt}rmP7fKWHQr4%!@8rqlWQZLL6=*F%}ee=Z8zO28GN69fo#Z<_ZR10!zd z;~Ku}sD3mufw3W+h=(T<993~he7=@-(CviY@4pwNHSApqLi@Z|WBUPOuuH`rh?^GE zTqdC99qY`&hW^a+|!#Qtw%EUxoUm3pXE;dJpND65$Aph$Sx~W4o`R>6#GMW3&$M5 zZP&mY;EWK!av#SW5Rl7tO=!7>G)e!2sj1zvOEZl-g3LD=Ff_)cEXBN3WK< zAbqj%KTm^W(&X@ENkihMx>7DW)c9xD(HM-y(eV!NX&n+8SRZ(3_anSDw!F zBV|?Mnou^AHNIi}O+u0={+#}d36U7mo}0o^!&Nk%N?Cpj#R~LkQPTFy{dfUbv2nab zKN~Y$w65w);s#&%#O=ptMt!<_*`q%$_1>r_A^sIlcl&nq7FA@ti*gjDs3Qw6RvH#4 zKT7Zou85e3qVzH_Stq!CGS6*a>BS{7-*OV>8@@5WsjOZ5bi8>8m!#R@F9=8B|D$g( zGcmfKj)Lzwairj*M!Xa3&YhPJ^$7m5YQz&Z@UFVZkmr^;9F4zuRee-pl%Ppd{?zdN zX&!31xab?NnpJz;@0@bj`_W}T(607^N$p?xVLrSP3-p5Ja6YMvFB#+ zFBz|m|jW=YOt=CuIdJ;Ec5v6i6L0bz8#CdL__=l(k-AKk)LK$BdkBFb>5nQiM zwrjk}y_z!To6KozGo_<}WyNctU44s?eYRoZfSvLr{WL-f#`m@aH$J zj~@%@J913rrGLXSSpUMQ>B*I6q0`>NId%T!<+lkVujeMU-{MBkfPEuUOz}3Oz05O; z(NTmZ-3XQ$B{*~>zD0{|6K)bsWp6wflWX$pCgbYmIWihJ5Qp}Y0sM}}|A+a8Rfwk< zZ8W>wD0V2!bky~3|6yIGa@eg=L`N6V*{r=uxccz(OeE}vsoeZ0*6yDE7qT;0Ha#v< zDN0qms;7A?IU_>ZbF*=QeWKc9c0~5U*2JR;bqr-o<{@PgS0qzUOI$4~8M1<+t zIPyyKB!pQ$?5x^Kg~R`G*SKuvYaSH1^={T!Ms#bo))|&NAsB6stS5^#U(Ba^t;TzM zi#Ro-`lCXkwZ|TU{Q?QT*6%Wq9`nx_SrcExo zvrQB(D6A{Jv!-wgB1WYMq4-nSF}=(DU&`S(MU^$bgD|j|HA2YEH%d_awcRPss}}u}BT!KyT5lwU;iombrw={EnR!wU3@SAMzZ@ z;}fCFDG$6=%D3VvWy-Tes3v9VGUfM>kbuC%n&gRZv`8I7j& zYH%=*(2u6PKmzAMmZNUs5L4A{LRxvH9}w^}`=jt7`hUvU%$3mn{dUlYp?Xe)Q|BM< z4cTMo@|W{R30&>rqaambGNag26z8up6a+?D^39egQCWW%7T0?0gH8bMxoa|;A=(<& ziV&_col=5``oV{I_Mm5LGdt0ut;qaU;ii2qEF$t80f&~b$~Q)Oe^cDr03VgMi13NQ z%F+H$rgTkDwg>x`oVJ~Y7Di++>OcK7huq>KW(-aQd@X)bF{aoYrgAUCTUbtmX;STi z*M;b|>d~c#C+ALICtY&7(<=hIT`&qC_qbK9`t6_cO!kG}T!*iYmFHS<5b!?DEXlGJ zF4g{E>rf?l2TsM%YIM{S{1Y4N?;w}0Q?9qY;mRwuEyNdNY92k*)OE%h^MW82=0gnO zAiV+aBo7y__Ho$EhOD33r-fbETH3F%2BZk-zbc|z_-4J{SuKD4y@>v+ZCHM(lf15r z@-pmYx4ESsT!id5Ipa_(0*gLVGGPC1jLDi{%&$K6!XjGt^2&GF1WFpSu+^jJ3#6jh zM=u@886}98&7H_bDIp(Hf^AsQ@Y6)O5SC!oV)+~fcdu_{liPm|NN^s#(dt2rCk<<* zroZzl*?Cw2LQf1HO4MF84*4IQ2Yx4_>^$;Nv0ya%+~(sA(j|CWVPW0&M;ck)W|1Wq zs`FB%kES2*RhF|P=Eb5pOruYrSY2Y?85k>eyMa_#SYCWR|0VM%S zYQblLKie*%b-zuxO8;(%j)KXo{Y^EswL9+V7ptlJEdFl!V*4e1mb|F2-|0Df5nAS& zr7P(%KR3pY^%t_eMK_+m+;R8uy(V@JUK}^ub*fIkq?4MqTaSa7zZhqEC7bchOvc%^ z$+J4^OT2rYLPy8+{?su;p*xr|JbG9EtQVk!rv2^bo0W4Q*d;0)+}oTahpExSa<9bX zK+-Sy4BPzsjUPrVysnue09XPyC(BSYD;0q@9i(rHUmLu~eYyJ~b3UAn6^|*H|TjU&c>8ZLe_tRxz0<&AsHTI4|;VZ?4km zYqPPY**lt8-?^p`^98pKk@#L!&+(JJM)#YXrdEBZwYn+79hoXf1NGQs8KO5F<;#UwbI_^t-WPa@ZrM#?MF7QMk~2 z#hoD~I+;0!`+7q&b{!&jFn~he+=8A^N$SNzRByx zFObtI!o3=6VW*}0$%uj1eGx#QlTI|gs8qV$H?;NN!#gEEbNX=u(UA30Zp7yXq8R=a zf5xKWsB>ObZs;{!@TX$W8IP{mDHSUBEz1aU?k4F?l0H^%WAkGFh6Z0_@adg(8XQ(I z{*XRAa@^AJiKETCZ;Ho`Np#4f9kBWnvetINru3g>|6|mi5R9jCN3j@dIz5Cr93jSM zOuT_-^YSX6ZaEG6B2v&|@G!B%(CW8=GditGpU;QhQhHT>Tl3nVNXkvFrcORqMJ4Y# z+Cm6zB*Y?T=?)RV9&#I`w(Dmm=GCE#W6dukF>{SNVby>qOo4kde#Em1m+qruBcl?W z1g9fjIQrX7czhLv2pbCP(aGmhFhpMnc3uKiQ3is9T!$n2PKdm}>_VmdP*;vY9IYMU zVf+tXcKt`_itSzWc5)jg(#Yq^B={sT|t zQdy~fomEV)?z{iUm6Y^EsKN}qg;PmM0E%$opS=<9*}Gt?FMa@uP9*JYGSPRF2o8=! z;xpVtDV3Pl^&iuOl~?Z)lJ7tuM43@1tx($BgP!7z-BWzLQDM3TU)^Cx zB~^qc390)}00QABB3|Z2zz6;+8y9b6*rzL5e=DblpB3!tZ=QVom5M#{)7;!0^#|g) zzP>+(%XH3-9%)kVYtVkxmv!Qud~^MiP6j&D?1Dk-g~1HHVd0py%uiw`C`5# zBsn*fzkGCtgxPF4_O}UOe_5@yoU?QUJnoCI#G8SpDn?KydKrkHg3S7g%DUvd1>0fL z!DxK1hU27JC}Ir5AA2pT6bi4mFO@L}kV6Cn(x&=;?TATB8rufylPUm|*tTspgir!l zCtTQte7z8tWG?c5?)Oj}z?h>yTMGX;eXR4?iS(2T8p{&?C%Ax^VqP==-`6^0Iy=AH zrno2TrZAU@!%SyYat&8#YiC%1*y;YObkRF33=(u-DAWfC;f)t6#2)8@;^+h_j{2kV zrF%KAe7D(<_w^wbZ-ZHf2=P4oiF~E-g3Xu@~3Ve7n9N_IjfcH45(|~YU$0#NcW;4Kj z$r^twQJQD+g%@F6Xk(A=cUS3vngD*RNk`pPz>+I9r(6oXwkymX!LyMR0i@0#0X_&3v^!yts z)e!FrE1N_%^LpB7?b9kuXK8d=7v8TSNaL8B-}m2H0XE`WagJ2j4TYwo*fY1NW2qAK zbcbGD+Gh)xS>2FwDvM>&Ih8X zbVzr>uv>p5K88cOOrf3raS)}2<>iUtJe~YwOo=#=!}Ag5(XU0@xi6f)3CT11YVr@S zcqSt2{V3b40%s&D{;lNP3b83y$ z!i$6-d~fu1EVuRb2)Jy{{6EINJe=ybYr9gEOxuuI+7(hFWZ1~G4H22ktjx(!k)e=z zBMQlsSs5c!WXzCInM%qm3CR#LM7-7s){vpk# z13hdz>w502`^4TIQ15%8x_iBOzAc1cI`@6>_KH4M)sz`r*!gc6e4kstSa-=kZti|QO=?z32QPbwb% z83dgcHb>cP6!4a%%3_Tn*c>dz75+lJK<7^S zy&zCN#<7p5i1Ic8$`Ss+U7i_0;1Rofj`v9ihJLU5dY7MxxHRV@`8*F&mdCiTe9lC7 zPb#>_KZ~tV$uivtS3bEL3ONM$2P_DQkzrJ^M^F`+zGV@HIK>@c05wbN!&YPi!!bHz zXN~akuf!&HB%=>&YvI-bF)qwk_z@`Wr9}o0q;Pt!41_X(64Eo@SPhznP1=mt*PI(7HF%d4$I3Dy za~#Y2;@_eEIH~Z2H6$a>Ls90P<7>^%v8UxfoVPWCn6jq)hxJ8#1ms~3+0|`B~p?7hlEV&ZZ=_Axs?7dOfKRnl*rXS7xMmdwhh7Gf)8@msz zq8t`#3icZVhsXv%bA`-{GP6ehnM%EGOFH;W$)I}+v?WHJ>cHSZlFB@H_97BGE8(Oo z0M!?m+QO~#_A^~c3Uin&rIK_i3v-Cwjnev-)J^frrA^gh z3JOv|^ZKK__*8nbi=9m65cIL|>9xH#W#Q9Dyc+Sqbem4VWgYu)VZ#3H6W&hdjIyHS zPf9vmQvu5ic=Hhy?4S1^+>~JbBscncjh;8BSYR0N+{AgegKl5A?dLzv#lhTYoS}gE z6?02$MDF>_a~4dPJs|;9JS6B6x-3z*AT=vRf*=giGyUEOeMi?4{)^f~f`PzQOsw6|=lzlzNzlrfTK!n71A+yn>?5XOWY-Am`{i;!U4jc%tUK%eEc#3ckJ~ z9fSn8GoB*Zxu&_18TX$#EC}N$g4}zw$OSNz0o)F+Y$5(rop9$Mj-FAY_$B=na|{+ZRZ?&-cLk5wHqG0sl8gwK#jU(+5pJU!&zs~Gg) zK4hXn(jX;JWFxr5I^vt^Wyw+=N#x3HCDt8{2#|Dsy6ti4qu_a!6d*Kg(r1p`me14r z`2sXKBTJ&*{VV#O;TAtZdN)MD$~KC7*&9d|d)G}jY+IlK$>WgYD{TgdvKWYb)ryU;)U?LgMRijn9_n){`&{l>ix*jc96@)^5_D4z$B;*Io5Gv(>oRPI`x-*3w{a4&iq!r^wyH0PX24YL^OK^st zLy8T+{n8Ff|A=!LSD_#nd(LnJ9k6Y;bN^xjKT25rX?<7$y?qj)WPgxez@X6nf>b z=55O^)42=4FfNFS6PredlHuQUkTv4^&t*SE)XsGMPv23evX+O&y>*jT7^VO>G=G`Y9DW6u{ej`sM5^$UN z03;0!`FE+x4yWB&Yrf~@@Wzl;%RziWSg1#!AwE)_Pvy1w!w7YjW)ZBf=0GxTC~LLt zJqIph_X%`=>h%!?+xv8R$$eYE<4iomN9;2p=u_Hu$j(Cz1YkV=Rh+f3(;R1*8i0Z4 z2b1Y?w&V_SqSh^eWO=X9ZryE7`VOk==5wntEWoxFm3}3gM$?(}y>Bc@C*eAa1P>%x zunfyw#$f>JWxC}MI|-=y1$N%o!W~1*(XtL12O*g`m6z($r<$c!L<;OVsAUFAcOkWc>#6!+$FskQJEL zM>q3|@8&S!{Cw+{ru^hiH>zyw9Dy7jA7w?6;s?4mt2-no42Hc&3$T!0ifIPrFK2_` z@3<}EN9=(a{B%AF#D?K}>P{s=_04BQL9KJ=8H7nQdrWTiB69b$!=I3oEr6n5*ZK-% zXQZ|gno@P$Qpf`m_^|gvl-I@#Ij$ET%h(5r{!ewsd-jRtX((Y+Nw-=|mitwo6Y>sV z%-@p@My(ZRyM)EL_2)o!fWjDUnC@>*h(^iK>qYGa|90MBJj#a9qf1$22;BZ%G&QS? zs3`$j**j*+76p_5UKdc4_t50}RX;p8LMnng#0t%wMqk&sdIeVCuc30tpb>;ON!-ZRX4t>5pkUcVTtPsZnoHy4H$LOUE#b}%Q zWdMttAM%;$kz!`&z^EJ)`-K&X$`j~d&nSDyJyQyw_*H+I*^6UXz6q){+MoCgV?0Oo z%l~=h9yNHUHMkV@hn1EdDFH7bjyKF3#p`Rug;Xj z?IRhGg&g@y_R_6TM0jqH-C9neTNk-L@r)t2Kn^GmywJUlPl5@HrSyQrEYnF;P|qCN zeLEsZAt@0XV74|XnWrN16^Va+s}JI~*3*S}|@?H1_&aJp?>{GE1Av|ss z(k?Z+3yGQb&aaQa;dKqQk$6V*Nhms(4EBx3)sLs3WG|!AwEFgL$aN@;-##EY=J^AE z^PvNpJVt{20|aP{IDLuXSX}@8>{<0`s4p2Wj%}+QIWN%RZnXisRBszd;d}`A46j$b z+HS_@>6UqLW`al%M~zH)I}xNSDT(Th&>^w4$TAHELq(znctPS3Y?OT1@8git47whw zi*laib{A^i=j3KV#|*t#%~Q*K7af9?sUFD+YfcOPKAHEYl`lc^D)}CSdp0~s$-pav znVda*exv@Ow1b}TbI*xC9~VQM%@wc?YHFGEC+-rO4_S7?NG?GL($u>~@6q`-I*553kVEYUT=4fi&i06gdOrg!W^qSbKO)i+x5V!vVt$`{_jOFJ?C zk_3nx;VkMAK>%>d#Yb1Z*+zh-Z}+f5qTN*o1gR0wN0QfzQC8r(SipgMM@0)Z-lC2N zHc4YEcsOwpYX?r4@>O}Kn9W%@(=;~SbNKvKMwRCrkqBNlb+i!8r`2p(UryEYZcEj} zvuHun2`Rv3#wLT&oww}LvPMUa2p@pTKGqWB@ibID7Y|_r7q6Z&49U=Ni!0ZwC)p}| zd=Gm~%J#Ll?{BBc9hO#pJdZGo>iR1(;^&1nA1d(HZbLgE(}z_2X2?A;vWp~MjFnwu zm#p+ycq_7A`5=~tdf2L|uC*$<>d@KvZ@I&NIl`GjYM{W4Hg#x!20J9-O_y;g_kkPs zTb(`?i``o=6#x1L)cn9XPKK`J!&p{@j6dmyBJQ8)$qxZS_G;W#yz)L( zkG0)1(?!qNWz@D?KRV=fUWHEV^J1DkfsoW9k+x4s5eAK6tQtJR9$&cB+3j5A4#^>) zKkcRbb=J#~2D9g7-+A?u&;T;~PZE4=(A(ysPAo6xJOGLRnj+ zm;v%ueh6KX4h{vf2X~151JFGHSMRceV;%gfdqmVpCI@Ms`s?vwVfhXc487V`qjQ*I zm-5jrDiHV2tk2|vx!|wzF|iwz9;K+7UcAM7rLvOG!&Kzi)(1??5hX2H`qf%YMqLhi zH@Q^7Dr0-un}b0HEw!RacJH!to_UZ3u^f-uXQytt=R`P<3d(Ugfc~f|%&RJ-g@zyu zH+Z#w+Hb#%N&Z_?fIRP9SF!IxnP@46gocz<2|fzMgmx-n|d;`D|z@lwoHy@`fd*7bf31sq%O2dhz4Fe5OTtankpo~5P)bNQ#9f)Yf# z>iBQBD~hh1JRk(FFhrb?XP{TmVzE&hJ8vokKxkUiS!N%qttL7J1HoR77?8vmT2gdCKvV0t(s2AXPtK#?A8b6ye=!K{WP43@Z)A!>04rLv8(!b!i`wm99-O)qpA^gMBv^{oWoS9r2>MByVx zdmqxkf)%%OA3APew@9bwgda&DsQ(Bu&36>caeK=Z_BowEP5GMUc!6UQlcal+dP?Sy z0(kxYrF|eHW5ME{@s^j`(n{7e3Z01X#NQb9sWf)R@0$xa#V`s^4GpWY87~*?y)TwYFfu`3PS~{2Zu0*VpXBfi9=}sszVU2Zq@F zR55iriSyyP{{2FpAW_1qBaPc@ObUt8;KnkT{p6KscIu-7Sq2o~7KB+NZMOSXp`Qze zyd(vtuZq83KerRe0ctxIRAYf;Dw8*K%Mh7q<~9ms8b{o*MT&U!cVGmXtb??(ku>$4 zKDbRt0ZabEMZ&f6pxgTA=VhBy+M(lTep~!8uKn!!bFg9cG{5sQZbAe*;OzbVHpzg1 zI%?TYF*6M!xgI$~r`^E;1Ha|Lwg*H4>f@FNq{JFnXxi15Rfg|>tTWCzlkEwlt1W3z zxa~v>FQ&&(Ln{uvAb>0G%xYazuYQdBeBk-(x<)DaYrm>YltM7}D(Kz23fS2N^xwz) zDLo{4G+g~HxI=w@mh446h?QdpLKEO+fCakqBD^GIfxb?ba9@N4;a+tsLvd8cCxYDpAt-*Us9~n7}B~OI+(KmH-=DC7JDIvDq zWXa1;1y{<$e$P-5XDc&Gn0v6>?p+CTeLX{#?CP?2i0pwWcSp0Br$H|s04ZSXdb>ow zkBjlUaef3s_$Y|wR!}xV!hR3Gq%I5rTeN)n=a>*Eg#XqwC3>ipa-Eju!dMSKMy6ZdQ$gl6PZcp?J6eBPCafJ;tq z{wSM%H{W*?qyHSTp%!H{1Bk&<@4BtExWvMm`MGdrk02dS+PhlUa(B94P{8=ue0>8dnvrP6{01r@Y~f8YTA1#{fy*_ zd>+-3f#73WV_BSpxkhZpBg64Tlw81#`y{sB&NFwn$P9>j8NV5Zr7ivY`0(~{d2 zVJ9D4W8^hDh`P;=|8oD8y!Pyethi`oPgFur3B<-E&kkCpOSB@J6LLXK@bFFS2-$6j zf5D*NN*gB4$z#qhFS>YJ)gUnZJ17uBFMW|)Ia%aKtO4}i>M zn3z~b>VDwyzXiw7o&O4rQJ#BPY02>QxyY0ffh z*8_P;Nk4=tMdJqk>t(8EX*)(d$r*nAs3XC4x<66I3p+fmG_jK&HBB-Rv0k{RKCnKY z@Fr;%ch&U(X{SD3lPDN(&VNbenPETtn+`IZP(VBn&1Oz?4e zu6V7C{pL#N4Qxv>vsLnPqg@?2dKm?u2yTZN1R&A^WXi=t)p^dqmpS>!p|Ai1_)i=VMe2IiiMP6t{@yn?rvTh*F6!9n-zgo7)L!FN z_1x!aRNL&YcDXF(gs1}Q1C5l9a*65)1wc8k#b0s@_$_L^H>7_BRQ;;|cBA z1-62@#iZq-HiGmxGd6Ulu35=F&++xC-ohd%r#~`GMyHNadP%%Lh#8<++Qr5X*RZfq zb9>na1yK+VOW!WKY+8%>&_-aHB(Ra&uH~j+WVw}UqT#&@60%3AWfyk+hTPX60B3uW zTmk#^bz-*i92imjiGjY(eAb-qu{E2bB-j@Z6Mezl3y=vjM-EXHVmATwphn00&wbE2 zZav0)e%|#Y1Ks0Wf?WtW%eBx&Sc1b_b|EUDhpFEBhcM|tfG@C1EP1?3?cnsuKR??N z+BTN0zl+wce=8cVr0SdCO4}#cv2*n0_yeNWfn>t}m)2ovK_cbgyM7uzF#XZw8sUUn zeJyOl%A-a5*lB*`hEyjKXIzdq&yChz>twFUZRJ4?K&aCwx7|0ZzIyonk6#y8)6Tvk#gCh-+-a9Liq{zvF05z~s>SMA;_X z*Vbbk#NvSPW&{DPa#GS7l8zRT7|4L=dfbjauxYbXy89X$|9zL(rKW#LDVzkovzs864` zL;K~}HJ!WArYBx&0l3ztw9IFyGt-d4!?hE02I*e!M;ZzMq%J?E7M|!8s5C~PxbN~accWmYBGHFu5_bmbgbaaq~9p!SO(2+(g?7oLqpNo@1LC+&zaP4Qd^Hn6& z{R83QJV=Gc4uB}7*q=U!h`HZS>Se&txwLuF+3kgi&&cZ8FloO%$r9~JmF-5(9) z@h6-}edq&85ugLd#|6ZP3dVvF0_Ze!BalaHB@j+?O`nM z;pO?KeHYqC1dgXgP6DQfT>Cp$jr%5o^r>*WYN442KdALsDeB<$_JP)u^{xpiSPIah zO#AZn*v|uh6B`+Ua0IkSlpk+tR@ow024ehoxr~4H z(NV$6X%albz4^Ue6%_37eA3`!Ic8+2YCcB}3MnQ!%5{~xtl&Td<>s>dc%Da@=D^jA zDAMv^o-Bl3X3f07H-p?9B1AU_{9qVR0gvVbkT9AV(L^GFu)%8HvVM*Ve0atC*g3JZ zN+5zk;zSc_vsBABR>)C52Dv%*$X}j0hR*lyU50m02*N%>JZwnLYF)JSwnwA`Jj%_E z#n)Y#>*>DO{y=q$bdAb@2-2xsklKA3ELjo7d*N|`?ml{=qlQ|jV3?IzJV1rd)B=Ah zc_=hQd`E^~BE1e9vSW7spo6K@_?k3sys(F=#06@U6kZ9~mO1Jicr&gyfFAYNu>s(0 zV}p(|=VStmI&A=@xN~jh(OnoyG&^=R9@H>Geg0VQcimsz*H8!IOB4UJQwIjSljAaj zU6Lb0vdF&yI*qYz6Bv`1Zl;jPoPft}P+q=-ZgMud$-aNnH!%*tcD>gO5tSnc;(Vko zKiaq?6o&}MAK-?`AD{-F_w)0_Rt0ix0+Fj<{oAHu@NjpdWuS|L^xcDw`H&<&K*f(F zkLR2lyOMbk{}4cB0s-4t{jJ56ukvSRt<-q7C`^LLJA->ffV8USFDS#it5W7Xv8_qN1*pSF+ve;&s7@RGpfK$-y#r@Tmks3TSj6@0L0Vt6$1AQpOKiG| zZv-LdmDsc({G;D}zrJ2)9oTYV!*B*nuVHSKmg?=Boj#nKJDYO+kT)ZH6zT+^bc%&; z9|;dV^!MdP5e)U0X0^R*GC3VK-=vGh65jF8x}Mxjy>V?SzvqAiS*4USwWbVGlInp!$a{}TRO&-N>kztuwiPK=e;kgfor5XEYlyNG4@aFY;ysO6WRXMVC6Q`hy ziALtgkpqH)V|Jx97;}k~4K;J0S)8owz>CrZoZAm|)ci0mrE#S`HsmMDRacsyzS%cB zWOEy?g6VcBBegmLF0YiX-a9ar(u+gJ8KIz9>H~YN5U-X#9lI=&O7PgOyHqJJ?J7Oq z_(5U56bW3$NwQ@8C}=Bqdfj)MzbcnPpRccfNamR6?a*h!kJH%Zt_dwrj#SF>US3N; zj?4%ybm@@(>^>9bg&K_z()E?BU0_hAS9SrJPawCgshlyU=}j2_4+!O2#{NTk{XbM+ z!C9@?f0en1l1bG%J2i+02zJ)dsy0Gy<2mu4``Zr*dOGE>ime4_0kT!W1^p`IfXnzf zw{+%aaZvc&n>jNt=-wd=cN?`~GIerVg9V}=DtEv2umjCfxbS_P+ zp0OsMrM9^aq;ns;tj=XLZsneztL;CF4JLF{sctMVih3@T6&U?s`?1t<3Lj4#sDqB$ zEr?n~tA+gK^RmQ{-b~HzBbd&GW;$*hF4QR4DVFs4*ZN?}J}8%I&kPXTvK+TU5`($~ zZdkdF{c^XV22|y~W>#b9EIAh1c0ck^MfHWoVKL)cu8!#KF*#0i6 z6}db~4k>{+X6&*3hLblg`9xI{O$3{m->xt3HmZ&zD-Q^< z76S#wYiWGa(!YY%s7lifc_Kl)P(ab{xE<|(=j`sEdMtPe!9qacV7ZV*PGU$vg!-JZ z-kitKbI(wlxN~@q3nBVYG_q8Cgucsy?iG@mdP5tno|_{R=ZT+js8g@W#B@BKZv?B) zn-~VD1bM=TSnuV5Jp+H{iYyFeqf-1zTbBqqI(8Ca$pu0E5x8Mm*CC5dPJHI(uU=&( z8_-m5af?Kr3rPIR_;R->uCH^$cL>dhb6wXdtLLl; zQ0A6=5F1kQ<5s&kY99XWvwXhZU<8@=kELD>NYy(&ROvGV@`{4=L!J&uLP8=)^o`U#9n3|$jhCIlh{X^$(@&?B(9i#`mb9CuP`kI39lG~}GiwV_h zWD8(GKsTRfUMwqs%L1SA=Q|(u^Hd3f%Jgd_A+)R6unoQ)2LuIHmcDy~i$5N+^Bb=h zho58|kjvPK#Dh1~l&C-aPbTV2nk% zce;}DJI(Py;f`PzP@H^+zQDu6_4fwt6#N$`sOuhxSprm|+0*XugUO@dX20=#ur`;Kcc)L2H>auScp!QS`xkGWF`_w?~eH z4fDm8UxMBplKP&=8u)7-H#!xkmz+sKtN288g4G~`Cq!;QYF0nr3+vF zGk~26_r*q*{qkeTuP@?5cm{xDzKU)3PYZBL6 z69hp7K~1>fRJn8gxeGg1AQYr2DHny|lc0%7rQ0U*uYWbMZU(5QOk511;(Rny#VtKl z{Z7&K!TYuI)ll|`YNbLSF`jFJ(t`D$TfFh(!1-pKb4!*pUovvdR4z$62D2K`u9Myl zwXuGAJoShsFaMa5((IQ|T;%p}Ot40?&p?s8lH~V5VnXF_?>Av8xAe0ky;f3DG3Op+(#wYn*kA~=W~%MR0u>Qsx(VUwqRtwE0?H|d{+5bp5`y zVU~L);I&GUtLG0Ao~E669}i{aub`c;aM!q!XVP!&K{f2jmn{-wlS~36AU*-b_?co_!o1!Eo zgF}KpNHN=j-T^B$6mgY66?7EYW|T&0Lnod{!Z_-}$v^GWjE;kqL-Ij1t9RRvP5R^3 zf-I(m3P7{mp5*AL9hFS_XOd%VKPsLu$-#G+wH!m2!B`9_$tRqXyuy3^vhn+Ev%?YY znrFZX*;Hu?1OTkq<`-}x3?14A7+Mh}VhBSt-W)i$Osb{<>FKQ{qX9}!r}RV&QI9so z$rb>neA;s_a5WJ2K1FvIlf)!THwMNp!G-GMeDJQ35)c7bDy{hq*dC@_+Ci)sJ8+IJ}!P*9ak zwTz*M=ONE8`e;yZ_epuG?biIlKp#vqzkq4xZR$^Ni;_}!C0tNel$JgKz8qdnU`zt1 zG+5HT5|(FN4Q^IBYmdL=#050-!!PxiVrPSi;D3#99G8A8>qwl?vk`~{5TymI3@^LX zz~57Vn_Yb1Gn4Z2iab2vT;N5QUtnoa&pSSw2G*>3#TcZ6&6i0-(;12QzI+eW3_;9E z5zrGUpxx+y+*Ks8RbLyLWon^xVdVfl3;DC!+0Y^+39L#r=l55l$qAV78wvjPCqCfF zXf}krlvkJP8|J`MMqRtci^_kg9|c{D7%z9+OA9U>Nn>3g z5bDhq2LIT5FL%{YLP%Yo+UEBQ^YRktp;2};g+&xp6+6cs^kyLbp)enxCc=6F@Y0^P zbQm4TN1v!`l_r=Xuv@u5nF@+nY3=x&Kgm+mmOo&GCchrX^2_GwLRXK`A zHkEHRwOVQ84WL-z5`edBxU}uDI*}-AO@m2&N^4^MzVS0;;-kkY;9*ez9*OoCg&ti{ zGs?v!=RM{V?}1KjuhQ*|{sR2nkSb&Yd}UlTRwv@TTk}QLpsQQ-oW4ZZ`&6Hu=V2I! zz|-L{u<<2+a}?$@B?zr=k@AxB{u<;h|Btu&B#Eh`W2bV9SP!eFCe+qLrc7uP%O1Ej z=UNo4kq#UF7dhFJ8iJ;QR!r`#OTiczIu9zy-?>K zVDbiz%iL{`B1BN+@fXkU`463^=S6b6%}EK-fh)uvLq_mvFGo(?x#nJN*wS(uO==z({Nv8G#54CO&T>De&NTK#>b8K{dbD(i)ro5@v-Zr7b`z*c2l-F4P z>fABy8&_1qd>jt(lAumVuF6qx%Yt&dc(17*b`u$S-b4$D(6#e_p&bbTR_?JTzPA&D zm+ic6|Lgm5a)cl}w+-CeSG!?TZ_8;^pkve|CU)08p4ot{8N?}v9q_Y9XbK91EEn6O z_ER3}($2k0_2CHb(aO;cAF6_aH6B=fMd z4KLTWTWbNO`_#k8!xo^lWPY#>6f|e^ysK?Q^XLfuQdFTDdJA$8G_X%4y=7rrGf+K| z^i^&rahVe)VBqqUy0#lTt2>FGyZhyF>9TZ*R(r51WB_X`!(fn%St?KZ z&O9HJr3N~s$fhGpH*a(ylR%(sW7=OV5(h_vm>SKYytU}Qr4I=lIKQk92#uE2y56r{ zJ2vm(s2%8}CKx6QS^s3k&c|2=NcBWs6>FRffeNP2xehj<$Mn0c->E<}$Rly-;z5UY-0VefbFv||&QjweuJY!zHJcwVqC4>>|j@H^#_+> zP2l1$AV-v{)h~w$%Q`Lr*#ULly89ylYB$h&FoZR^3y!P+#~aaO#;7#`)7t94*C~?i zV9r!O%Z&D;A>#P-MhCo~2}o+#0nc0R_6{xU#{+R;Q?WbzvXFK$QjWKMv*yvG`>@Sa}rr|0xLsP*Wel;!cgWk6XI&NUG`G zx_v1qD4Z$uB?Z_kM#&L|p!8fg3!-FYjV~ww$P-6Hd{oP>$eQ6QHpqcwO|9P^5xxRu zG+~7YejxrU5wvYWvm<3_PaKhYbO7@AiaS$q_Ei+xM}wMKZ)K2KbH=?Nz3V(s5;(jT zzI&IZv))Fo1>|W9dE#h1FD@^}nb?%i4pZhQhbkvpyX%vKg!l0;Ig@=!AtVfLP$4e! z6}ZfuN3Tt%oZ!_E_iqp{?JGDU$HAm%4aQQL(2+UW3O!Ynh2u*6rB~Y@&|ElN350`~gE(mikM1 zN3eea&MZF`^&U-;SnrUIMFX=)LX5CP;?GTv-en#*X*RE_IfK!!R~cqCZM3%J0?ijp zo6ldtK+T~)YsblY;c8wyi5q5uOf&fu%S;?QM(uetWFc71D-NWY=(mt^2Ub}mu%G(f zDR^hN-%Ino{kx*k_{iL&m3k^N_EUOw%$HABhrCZktt>Qn2dY8eK>)!!Kzym^et32q zU%r}zEzn)@lo_Lowe6sb&Uz|}ioMsBi&ZDNjf|9!mMj+%{RUm7#R%5`)*v|F=z6=H zO2=cQw=dZ*f>71@3-+|kHT+9C=q7p%c#6aplbc!%|Cny}C?XP)usV1EM!MAGV5i!U z=VzBrc5}@*Wv8fPm`*YK!Afr;TKDs{r3UHpuZUo+-r^t+xTpT_#N7>R-B>t;K`M}c zUv}(GuGW0<6{3JeaPzjw69#tKRGKW$GI;P;lN~xn^o}g>8j%!&AYH)uynIF81ICf^ zt~9BT!!GPEkjlFKBYbW4CXAGe^!GK4yv5TqL(DS^;&w!3=^)V)=Ivf++zEm6$HRR1 zr;7JPIc4(Ftj~~C2t4+`wS##0kY=Ex5?V)~cAY+-lVubzlVWx&zf$`MXZvT?B7G9z z*7P!M{8TqVhEAgeCGy{6#!nEL_DujQMNqiR=NnmOTWJ#ZXM!Y5O3ue|4)6Scd!y&U z$M;r8C?H)Yaql$TUw254p5<_X8*CeJ9dLKBN=Gv|dmY`fPS6&gH}QAiloQY!vevBQ*mGga9}z5JL82$v=kiF{D zz!daui1R8NGizfBh+PubM}l;5=k1GMsC@}%!+9?EESxF%Q=^eoahR7-W@Oz+?$r&O zRX2ngf`BE6X4vz=;ll)*BAS_>IHd|OyubDdyp{P}#7>6hz*{Ro5gC!ekLKDL748h{vwr2aO^BBRS&lB*i!U#U)I0!&u zxE=ab0?M1B>wS*E!2Q#ZKNhLjzH!R%2Krsv`^7Nkb{izT6nMfkty^<`G2iYwH_5qb z%)Q!Ga;$(W4h{;N#)-SnKR1}j1;esz0oww@SET~y&q!cEj z4i;LW^_gHSIHl+7dmIG0uDVDt4ASY{l!9Y3r^K06`Cco%w#p0$ZBcZ+qZpVR2;xLv z3Am><#9j&7X0N|JE$&Pf(QXhReIdJQm+N6E%|bULKq`dRr_>ta)LpbwQ^TzMVBdU7XgDYD<4i^q zyQ<=w?%o&Et%*F*TXi*#bThlbRH=o7yYB{E(TEah*mdnuD_~+vS`pP6L5~uUxgD^ z8(A>*P(42wW%^_AWBAORsseBBRxO7q^LH18xdvsD;n{fobn9Ieb+FzG^$Q{um+pSh zKV6DWIOX~>M;rL5xM281*|BY-0mU{FwTZ4U=dqww2OpF)_EIWF0(5eCQ7?Z32pXo# zobT6DM+xyusFf{}M#6>Vky%OXT8kPZ@4`{xqlzz#Hi?(p+BPRO$k z22TC5`tL@I8eqG8XHq))K0#~)w&n(Gy$cM>G-~*UFD|+MBm&vz5cCWMk>P}XUBE7) z&7wMsQ70tS@xt$ z@aUj}=4F!4%jrVSpad=3bh;hT-a_~Qxj*T5W?MuNVu#6LaVMne=7}B0NetyM9Urf4 zO2HBHXUE;>*heoQlU=s-ArRm%?QbT;Wj7QB<-?c z;_c;^U9`XblB&3CKUF_v9~g-_ri<#-PV4)3v@>@Wc&G}YrmfTZ#|f&j4##!;4yN9|MeIs zH#2a=o2MNntUJFx-TjR_?}rsQN7Pg2=I|Mm{Q{SIk@ffcU!|sIiWM~}2e)=#YOFvi zYcX-P1ah8r4u*LiMoNDK*dc5U7_rHxhg!!$ljW0nqjofLv|{m9))Nx=w5E~htYp}3aJ3E3)scVg!*akcM_)E8C@_4N*?363eH&p zy<*&He_`|(0_YOu}+v=k*b73y9 zX3mp3aYRVI$QEcA>J-I-x41n4CWs?fo?SqKOrwx7!-Nrp{fN?@GETa8Wmtb7rASb#4b}<-K zMf)g-n-a+bzw0ys_>69K*FJycsrnOG*DP4DxOAQ87zP?yp+Q^6{?EMcaECO@et@Fa ze|<(Xa0n67d{aLQy@ikmk0I`BONI<;y*4D?!-DP9Vp4Vi=HJwXU$Q-P&WVg6uW!Yg zIb;i>GYpcof>M9hX@F#1{vZJ{z|~g6*3%ic@cYz6BoRW&YRM91>cGo^eLAp9MUe@{0&>7 zgbswARjPqPMH5~Bet&_naSS-~$O78sZ<#>z#r(9WAwt)9JpCbwj-5)U;DVNIq+UW3 zATTcu%@0^?w?<9`kETBd&q3tMWl9md z0p|iY&>A4L>h0Sv@rm6#K!lur0Wcg5K7fLib`*S|WE&bhOvfE{>UYwAJqV%-obztY z9dim8TVmOUosFXF+NrU&vfx3owl&!&112xgtoS58TfmzpE*2G(V z(C0Jwx$Q$R`~w?-aK311h=#zAsj2T^@KF1xy}v-WUOqF6B1y_k2H!|(eODicA!2_# z=1UrhSHaqQ@W;VS>bOsh6cjv|_j+*1s6fg5KA_W32bsx9AXxvUCy2uUXWI3O(fIFA zRKHp30S|eA(w^!j^rd4#XMD%3KcIexr#4^md;(h0jAk4n3%>kvv3ixJ8V?giQJ3x)-xJ>O-91#9e~Gpg{ucP#E*JIHJ3grNQ^kfmZ)Ju6K~wx);McET{LB?2UN*= z8<1;T4Ws^@7RNY#W0#OFTgJV z{{;iQj*Gw-w|ns5XA@LUj3jP%M|%tn#$o+-N^>Fk7ULS5d&+v{hNy{VH_{)E(Vw{q z#5*iJ_Qao{i@J}`A;%{G>-^{SNJ&Ynh*JX^=7~1EFUj@a!o4p_{M& zEW_$(f1eAkH)#06V!%woe!k(0L{BII*h4b``d%Y-XNb*2cpnwHup0+}N-anYxdF?@ z&JS*0BO zwb;Tdz(BCpmn1LCNF}`uGFBlKc;n1%aMWvE9*2C8>gn;hA6}c zr%Di--jx4Tgw^!q-Zvv_A+c-F>YfI%Vb|-}Yo4LdRKpp-vnSv!7+}N8D|myi#Qq2h zCB239V%{eq;$2%TETN;c_^^0Jr(QwJnWBKbcOcwh&QSLWF&i&IHAgF<_PqYS`MVY! zd>S0QeH786*J$!%lInvjCSU{uS}va6BHQgP(x5sU%2b^}p<*c5bpU)?tWvJ|P zPPDvN+Ee8$hNgu-aBb6Hnxq$&4?#h0zQQXh{2C9uwiN;OwoT3A(i)sYiXqQ~{+0T0 z5oi1{8>zoKgwgDsQ1v;(?=$z}BGpof!-7OO3z@K!A^B7^YZ4FP<9^fis9MBE3p+79 z`^;HzKE7w6l!SkHwxX^|6sW}k1@lM09|9EicP|jWBJ_0>9P?sy@r|$?OJf zo~iw{z4sjoK3a&2O}l>U%1Eh-;!q!5^t+Fu%iRmwCs!}H1Kf?4Qz{wugU?&C#^q2)$TNWM3s?cl05Z<2!Reh zdac7nq=_252GoTtXSu!sg1ZrIONM~$1u8`M_`TN}fVv>Jne(fE1x0K5&nCSQdCqxL z8;6YG+ZOOsy$UYsivDJFBQm5ezJsTsCow5> zhI1a-QM>MlXNI(U*gy?^IqTx>QFClvTwOtjYqSpla6B{$iO_GXU!N^pO#vDxoD>vc zbJeVePBQ}TNjXg5GM`%$3UeIPsEmV4a<_lQlHGoSpw;O?i2iT^xxx9bi&7Tq|AGJ@ z4iiFyvhzUlsZxa%+UQ;I6-s*>XUaD@SV5hY34_DKLc)gAfUj)GVyI& zRo?Ro0PYERwcOSNadc>jWtR?@ej#RHSoB73A0S_1%c+Y3u0+GzRs(Q|3S-E~=AV{k zmjpv5yj26@#O3zS$GYIsM36#%tw}!9Qw*5Q;_`whRpoZ>hlrP%D>Ch!Og;SXzOX>% z6Zj3-clSHx$%1#;!b4MHKI0za9DKET`cY~)J9|ivO_{j(a>!-;MO+vnMV#w{oLO$3 ziE-64t&qUe=)ml{%K#iHnWSL^`pe~0HT`L6&IaeyGfFLru3#Y4 zBO%m@Us2-mz2(+?b+T76Al$O3E9%=7DMcB4ToCZ9F1SBK}LxBM_>;S%5$X{E-4k^usy3kq+4(DVk7@~eg zYZ6KvpxN24q4k@p@OKkKpwkUDhEqkOx{M&S#*@<}qQz!NQ|1gw7Je)a1dgl1Z{p%z zR!5_wV1i`Y&iZM01g%Vl(qKHsnDWAat@2&!fqlGM?P6cDQTG>Bv9uJz>nIo@vkmgo zpDdpbs1ac{rl37mO%miTLxF$@w3{I3F?rpXaB<$%SuQzO7w{tPGjEcZdd(-#^4Eav zR%YD9&%@S z_Jz>bu%^oB3)af*BfA&@Uk%ScHP?Z8oUsrc1iJ4=;K6^k`2eiE6AK^uqC%6h@Y{>` zW?=CA+9-l`(h2@Wq%bhygiufRNR9;Mh`eh(3g)=g8U{#VXt4v$9tFX;=>4p<59L9A zx&AQ`SdIbCCq}}nY~R2gnr)i{fH`5$g~)b&!06${-_L)0DMfzwAYYYwb^1*e*kPJB z`fdYuf09JpgP6t`aB&cq&^Q2L1=OX4df|pHylCs7a9zV$n-f?Uo39a1^p2vtVx3Mx zb3G&|H&P@X>U<%K=h&kHmRV>rIds0M-)Q zHeeO6m?!3ShynkFZ&r}D3E>^SRGhru{*&1Ev5v;LxIq$whwuJyg8%MBV@?-rwRF{G zhG2*F#T(B;9d;ndrlgYeON5F7%f}=-SZ)ID=4TFaWD}Rm%U~IVhMB%lfg@}Vq-Td) zfcw1m=^c1$__M#qAu<7PpWw^IasJ!MtLyPTGn|hUKH^kYuHFrq;9s=Ii*lYgvrLDI zUDir+O~B4vY2^TXsL`B{id0LdXgdWT2Z&od!B~J%p$cysE%N7l;i9Z%0Zc4ue-G$Q6(D|fcuY&?_4fE?0Zb>Vq+9#-< zVGqK{9NhQ=aO1zo(DHsWbNuSSa#@JDl@bNMlL5~5sEMhy-hk7<73kw7K;%Cqe$`OK zN5tg;hVvW&+h_qa>&0vH0cH)B5q5uf+1AJZ}-SWxV+cDu`-?v z1K4D2Fy~A(D-coqwzEoEJC}C5`s`h;C!hy@{CKM)=v*R^pY0HD{REC~z2uaaKJ=4# z$P%}FKK&0=SQB@=WIRV);)Z<3n@_OswF)O_1KLt-JnZi10{g)_QbKbck5)ad!w(Tg zo2!HcKOk3ibu;^SCkn7%`f^9-T!oG3n+No#D45yJEX`DvU03By6Yz`6Z~kSL=yD@4 zU;>)%9Wd#^ZRPSs=L0YSLxPck<-q=0iRZpTHfJO5D->lz`{BJ~JZI4$I&pX9?>=ug z*y5Se|Jg8Gt{4l>2rw^EOF%QZu8H|^BR2&RPFJqkZh?uh8Z z?*m|dA9)4;JDW#pR3P$mHc~5y@y!#LC)_T+{0$m!>kA)uxgO!;inWeEc^w4)Ejjv@x8Jh3=BL2R6Eweiw7!U;+yAwUk zCDZi|e4gD$HbWOYH^3cMx0v%)1O|HIxE~YUVedd_2L1@EE1!Veo;Hd^nkcY`1rvV0 zugrWdQX?@?zfGgk$v&GoTYSO)*kr&A+!GSE&&Il7rNzpAI?c)^!>mkm&ygb7wraJ*Le8x8QjQB zvCu_{@)4LR2);QLR(e7eKI_*ScN`DkOXYM+U$7i!th8qx@PXa~v1=U$Ee9cZDQuf1 zb`m(BiP$6~H{+=I>$E+gH0NOJJ7-Yj%o{Y2y~hM%;%gZ!@p$<0aTM&IrDBCQ16l5$ z!Cj&^0(My5HgmYS?d9LrFVg62_=u2R!50n1YwEKU1`A`V`jug~@1V!3#Z882n z^jZAmyk8*o{Sm~d!oXi~r=va+#EWYJRKEhTgtZuUc#Zd1^#ZOfC11*tmPhCe?~y&k z5`SwCmi~a}I1+8AH`xz&mA3SYmIou7(#vX{*(!+so5~<~w=M(W^5qH+LLt6*Z;3V* zq6T$XKr<5K&x~e0n);xw)#U}aZNTRrhqLzI{l`!!|2M7MgTMKmcF95-E=HV;@nB6d zt@d+q0N$=o#*zXbd(d7iR;F;yJV>VxIIPyY9jwZj4=ytQO=tYwUZN7nJd<+vz2_N}DwvP3e_Op&Jb`2j9REs{N%m<}BB!H!2|1 zLCr<|%F-?ef+Tn5V7?b~?fT235>6_bCI}5_-RAs-<7!Hir~^{D@fcm$|3jF6+lkWh zT?ZflXN#a+BA5l*C1j8xxO?&kklhgSS1~&u;t^?Q=$81fHhVN6(!Dartv8q@WAOQ4 zkQby5(yQkVIa{tV>Dzro+(Y@Ngjo^4UlUKRake5`>oEexyvkvh!=J{sw{$96HwANX z(=*@F)0gqv*OhB_-Ef>e%FLcd7@r~g;V94E1T&lbiJ>4?^$S;>{pgB@EKA z>c(u;91MT}yLZw{+BefnEQ(-wPvgRM$_)n#te^)(Jp!|5i@>9|07)X}2221IvRrZ= za(*`=XwE^Ziq>>9!ogE}BB|T%>PSY3rj*#^I3WjSeum`0d(5qbB|rZ&i|`*F1Q~Nz z8S@Y%^N7yo+#UYKVM`+MV&yyYqiZ_$_n%Zl9j8peHpl<3s>p$=C|v|_@b0}bKAze| zMT2mz1j>fUytmP%iANMl&(_3vl#|0RTWAiPOCrvuFgw=8@|}5OxW@+^#|@k5HEuar zqg3jXwPAS>Vj-TbA5^kY`-Z4ZU{1ySa2fB$hsJ?pixEm_z({mVf09WDhEo$}Qf zd8|%;KNgudRDf-a4;(|Uo+?=%P%%fEPA)+%g^VH%tPYfe{162gf2ja_^vz=|Xa0-AO+_Tw!LG!zIY&@>nI zmar3P8#Xb#vw}u>$JFKLHw8lIbW?z063}w>9XvNt`zVtisfYdTPQ=oj0|ZvFEDsMkF$*VZ=m%9#Dr*C;9kNZ1&Tsrg_HO56kWD+5NzlDNIQ`S;}z}&mOte`?s?Q zu6{VUe*r*g_hVUc)Y;>3YyjF3C8n_}cy(zzvp? zzKh@*-g$U_s@gSKdc@epY_#{%i9o6$!4~w<&q(;p%>!#dW_UAK8>IHvjSQ|1ZzYf za0zG^$f`pjf8>KpvoYDQ*r$j6RozsSac4!GpnnknrM@~Okoxg#7w8yrD{LbC%%Zwz zg|MFa(6|9tvHojR4+3!?WL8h&*^Kmai~BOrFqw309=}xTP>T#Oc@|HI>+oM`A^Y3j zqkwGEB#VryptO2P^@$K^iYh{gv!%JTyk8(YwSK zGi3mGe0==oX-@t7a?cqdv!;fWk5Cu=Fr)y4)88X_JI+4Hx?Adaub0{BhtFv0W$&*a zw;LMm3RRpvomh4W#`f+uvnp5d!3Cgp?BX2*GiBr?9#WG=u3*T8h8geH^}RdTQiBr9 zCx!kh>xdwW_A5v{DK40-L24z7KEJDH50lX%?Vaf4GM}t|hT|%E!?}G$ig_JkCCc%9p-+klVHF9^$*_N z=~?OL^zLUtloD^4YqJ|9r8e)@F4c^@0J3#@-L4!83`heA$mnRT;D!7N$sAS;lYzu} zMNpdbzmDXJ3ig@@(l*OJ!& z@VkVSf=n{Gwj#g_lC%HXvIfMop1NE;Qp0#bMOm1*a@pQ>A-Q+7Cc$Dyh#{N|#)9AA zn5!~i~PeZ4l^xXu(fH5IM?Z_Mv_H{C7-R$-GcPi?bLXGP#FaFp+A_QZ< zv$zl2?XcsIET!*le_1rN6v{O8n)V0cl*jj|j;JJ)tT+DeIN-Y#@Esg%+_YCmhP-m) zsVlqHpK2TD4DrB8ozrBc^_`+qr(ZJ3EY<0qIVt{m`36VA$_!1gj9exZj4!Ao7cY*h18?*dW4Fp%-4Ivi%(Nie~}5@KvxZc708O2BRFA^Uwt=d>)PWW#I`qoSJclTebPWel{H-{j122FbvfL1_`>*EE{2zu!wON(`wKl~ z9U>RI^c7d0vKXgvLv|M&vi#m+)E~))87sDS{;RVD<_7)li6Sca07SL#w&_K5pY z^vr{%9yS*a->le>u)d6Y1_ddkTz?WB+@JWU1DGKii=ornmS!4`dwmz@0+=ei)1wde z2wf?K6=X*cTMl&inF6>2HX~H;y2_c{lY> z3Ii|zWUgCUJOQd7zRAywcX!zA$l_T!iv8a$P4Y{zecO1(`O>(nLdFTse)n}B?-o+h zGJD2@fwc=;GR!vmNNGag(od5UBsA#*zYj-2fZsnE5lt1A^Y-_s=?kHw$+=EHO~#jx zk%e4^NDfKzi)4o#*cU=pmI_vuEh!axaKHR{4trAn3GOkP#PI(&FCeW#(K`+c?d~Sx4zs!||C(8@%DeQ!hl1edN_v3Qt2Z60U+6V;6{+-I zTDgcq7QP+()KpcEgL_-?3KO3cXjHZO)#j(neB6DE6FR8g?!taBlNWl4Rnk#Lxp4pP#Z7NII z^*|FnfU@xDTBt0_Me2dmCj7`D6hIwF{T$gR@qj*ks&b^JdfMGhIYAtE+wLou5~vns zT>RN*?Dc|O)Jjh6N3J2=PlnTW2qs=_zNi8%hUL%kPtXILRf36D1<;}jbphjllZ+1< zi?zQwE}7V36}60q4K{kD$Q^q{%OBTQVM`Sw_Nn9; zXc>GD6pF6F1UMm~B5=A9CxywQ)Bo!#;1oF<#8O3$9B<#JWv9=?n#YUdRGO$wQ*%dZ zjhhym98xsqvnEJx`WaF5HS!9LLBZh<19CDE&@wW8ROhWspq|DzNW33H_W;(w^rxMQ z`WOvoQN?tGq}K1&UQD5uqY2lMHaSGs64?A^qt$QVICnwA@Fw)tZa4^Wtw(2(;xF`PYMs#pr`A zIfkzwXFiv=79|3eHLlDQx6aOuU_D`xfmP@6l>D+h!2sXk@Y~A&qF%64zg=X(+^)mQ zb1!7gl@$fzcq{*B{F?wKq13LntZ`wyg<?3s({bsYhGIocTUy-!6eB=j%aw~3K;9+v&1*Sjh)JD1 z)nk`q=m+6f-S{0-8eCU{{m_rc@?CEx49D#KJzL3)92@(54OxV-lmRVL$s&UPnHACp z808X=HE(zH?&Ud#5ESEF;S`Z(`EP@|Ix70L?{ikezXi zlUAT7WkL%gzdkV2VNOD~78x9}9gCu0(t!Fs($Od?*l{px14fN$c++)98Gc;CpT6bH z9R7-9ZHH$Rr0v$2ZOfKQ1>=Qm|3ieG#k@=Zo!S9?z42p3wAy(UWW+-YJ*RHil6PUR z`%-%AUzn?1a)z_N3hB_rjDyRaCz)wURUfnjHQF+-<^jSg+wJ^6*B!kJxK3LA;4%WO z7T+X8*=hBG3rezT%{*s& zs`))Ufg9MXa?9*;=4mUku5&@x!C;Gsw9vLMN!OhKCNZ&NhMsDd-6UO%e>S$v8NlbT z^jHT9bZ-8iA8B3?MTn1Js3Zn3J;Ii%2X9!EFf3jD#O>KQt~6DaTk~?UkHD#Qw#?kN zeUFT`_CcBhCWsYypp+4`GEmgsfxxSvCAC0}uk#hk=*yj#vD9lla1#-0W+j>7$V|Kk zZCGORa6k~sCDK4Eu=gp$v0xY@H5!ilyH2R1W~2y2jC4-&dv#niqCkqt@r(-3w|xnn z6_7M%@-r<?&jDDlPgG1okRRnOtDYM!kesqIDe|P zY4akH&@2By59yT$Y-aQYy|`sPHz`KbpIso^==7NA9bnFb4}Qn2__sdm`@n2!H#(*T_Sk z&A)l$8S;1d&&88?c-!^OP%5mK{ou<$B$A%Iq zGn&NP)w$~!jX6XJk>3@)S#`{|UXLPO2Cf^nM7_VSw)%4zQ>gZlE-sN9%H2NX)kuOJ z_#=UGvJ>X^aHdpYc;(4z4PJ{~6UrZnF>Q>si6GW{S>QbUSGMT3a$%cNrQOW!k^~`J z>Q^iOZeXG1`o=$broM`E3xVba-A&)X(>aUuOy9NJh?Hrld`XbaX&2${3w4GA$>H89 zt#aKWICl*MLRYU{PKmZ;KLf)U4cUpZ=}&29wvEr0&zjy$Xy0d5+xeAs4d$ef+p7d3 zW2)9V6|oe4!5X+h_is5%7$wxPo|IHBFaPR=D9!l&gV9dk)8HSxH8)*hONCFQm~G-o+Gy@c>R$P@x&7@Bk#1;E0u4)`?9y{+2f#}NaD z!yCIfM-$uSTY(oW!lL_@VK({BERnG$z1S)w!!;IamDg~77_@5@M^*+b{uM&{J-un$XmRH zWhj0Ek8!i=J(2YdMMGGF$Me*@Lb!N8z8Ys6*Tr3jR7S4u0!>$?A9Q=onq}C864w23 z;%hg>&Oe8Z^wY-5if>>A(Z^3J{_-v`mPlAJI$D@@0E;G0&S8|_mPl@s+V{Jx6q#ZT z#5Y9T7ZTnl`ZZ)-_@e(dz;M=w@8Yi^E~G!39*apLuP<${vMAxkm|p+V%93_ztB^H` zJU)s{u=yl&AXLm`hJmLAf@f4_=+@IDMgin%ZHRsVjuWkB_iR#y8M(=^-e>Oqb1b}d zsUcYB!D?R#9Vy+s)ijrz7l`U);9$187oVKpU>?+hV+M6YOme^{Hb8HpC)s= zeEhM-nLnMZ$#IqKm5#lnsWCq=!kRC{W_<}KE>r$g##+oo)M&qr`01m#8VoUaB!WB= zId@L^(Hj&0&$Hyoqzeyr5}ijDmY0ou`r87F9}=7pLq`oI3HI=8S_&c2m`Uy;&{?qve<6b59jNciqLhtzf-;EzU^1 zVpTrh9}SJ)Fj2IuVRkP9W^wk`M)x=V5)gj2RBg!;lB5^7bG9a)_S=H%HvgVzl&(=y zAKLZRU&fo)|3cL@#Mv-1qdDLS%;@*t$|aM_V6)%$=hz$CMk_HEb0j042K-xi7m+ea zp||u?XO zIhqQO?p9qbZlwxqD%-ahGw}=gI()#$bM%If_fn0zVfd+f>f;%(hDG#TRZV<1pTQrI zMH8bV#)fl4?bm3(x;bZs<>oueVfDT#UBI>9?~rhK6Fs?pX8nmF*KymU5&_}2DGN{`+%Bsb6CsJOTcimHdU? z9Q6c{Yq!U&}2QivbIpgZ9rC`XHa|WE#7f=^Fy09}zG#&dqXr??dT9k!fY11#4Ap<#JLM z1E;CF*M zbGDmfhml%`N=yJaWJ1FPbUE@72wFh`LHl><0vsnjIsLU2siS+eRIjO+jxRkO;J?|~ zdVlXT7bVYKc{nDh1nMvOlT?zylh_c7&tF?`2D04CIjv{qLRl+4;r2m4C zD8!1G@yM&KKAjtAV>Ei}cT-*f&W{@ti^yN1G1wpHZn2Z7)gJ8~?7+C%XO$TpbOHT# zM>&p4yW?RU1;zB|h2dI?;e@QYtLF*B1PD(R@lc7MoBV0qz_z=+c`e9IH>s{4T(U2r(N@XKb@fmPRK8Z)haZ8Lw|^YKA( z&fArs{Yw?csAKXmYs=(RqbhnqWUu|fN}!yITP z6T9YSlP_HDSqd|;kq>t&eHdRKd$6Vi>nE*E>wO6j&(&-x>wam@%3u_>TE+mI) z;(MGuusC7}nM6T$8XbMKfBlO|l3y_ZNAnZvG<oQef#=tB(~&R z3%=wB_21)`%-?E1fRd%yR8+ed3?05{*rs(e&3isX4^uD!0y5ZAXBMseCU}qUD2oKt ze8sx{BguX(0f@?C5S0VQ?)2G;!4VLN&D;;tUa)V3t3R<=GWXju2DW>#Y#5<)9QWt9$4->0uRc{<8-70@Y+g&B zZ^Ef>(;>obxHxdz;H${os|HM3|LP1`*RyPY_f3z$kj_(Xe!a-*r07-~mWzWUz>1PA{L#46n3HLfHF>#` zQeJA8BJ8~weJ(o6qSZie_;xbTB&- z!07#*gMpG^iL%h!XM_&|QWxv%w&zYokW_f%N!kXko(pN+V|pjI_p@-th(fU{P2d$&}a6!gvHd38LUBA z&@E}cFm5b^st@JS>I7D)k6Y0%~7(iCA;^iOUZpvzxhhMSft42sW&8A5AM8QY`q(L|Bj+Pnndf4v8NEXb>E0* ztn9=8w2Z6c}h8s*Khk>GyHIuXp7Z?1vOu4}wKnU$o(T8)W6>o`a>@KEzp#28;WGdFGd z;PF&vw@Hb`jHOy_A!3xS$Bg~$0(A<17pX*_&lT83h%`TgTcuD!U=rn&gb#hvM|WhLUMw~n#R?IXY2EvUk# z2X*p(+u7(Q*2sVJHJEUsi8|VGS#5|z5bqjMNc zj(N*+xCFc9$FI#JDy$exTCM8@{yfX$`YMXh9>+cWIoZui4a{szYDBkA(mU=PlBpzW z`t4imVbWMK`I)@oe_PKA|Vs1|BV`ABk17|$ha>c`zyv37C<}hW|xOtoz)muk&0T-qws4Yvy)tYj*chq?% z!Xk2eWX$|v86R4;UoEj&H+djqI1$%ytI-#QyX4-#7v(gF9(bs3^CD*$HCaALbfXa+ z`->8FB!_ndZ$3De{cVv?tzqtfrq9A->)n~EzAg)thinGV#WG9n?Ut)LMqBLi=e~-c za9i$C?vU2+t?FJS!Jigw>x2Ecx;Y<%LXXun7HG=xld$7+~Dr z|4OWk>dwuW6_3fa_nMQXD<~`>*8MnN_`>tSiw7t)K60L@@WXhsonU6$$ga6uqz)k*q z0oB$bBP(pKy(pzIx~7I$^v+Ph0e#a2j%S)iVJUx~1Qlv*)5fVHP`&Y?lq;^nGR2;} zd-Br>x0`?Tbv80Rzu^MPQ+^KK@W_mv^5dnxth-y9=H^+Qy(zt(MPfKuju!MYNJD` zUC`r4+|?#VH*6g4Of3x3d-&J;I%54ZplW|CNJ73;3P>MHJ;{L}YE0L2AQo(MqhdJ6Km~tTL|A zF(PH)5Yt$ov|_m)rx_jKWx#jw|ps|F2CO3P_wTlp5#cWJu0X_lR3Vzn-WD9#7*id2dYQz`qr^- zD8iq%w*oVL*VIjCGj3rAs3Vl+KZ^i}dg7G!-QC!#PGac>JK5tC&-l7fSTl zOxmkq$)@x!7Du7@uy>BH(?lo|o-c_xRGbNqLV1LEdhzZnkjj(2eF4JK07u02El#LG zls2b!q~w#Z#-PUNw6K zj@Fq)R^571qKtiKx}-Ieb($3qx;1(h(`KMwN5OVUn+ z4wD!p;v0<}NzNLM|GDd+q=9Hx8u;kuknT;}MeM=WiR=e%v;rC6`J^|MlAK^aM zpT+CAY{;qNM0bK|J}0tj|7ne~HcL;TciwB!n-Y~471vUkA6Q8~%4PafPJ{9|1WIer zR=?rKo;~dGVa%9xDj&~uu#-MFIi?|~V8D3h-nz=DVFN0}2 zHw;j)H295^Rq;*J+bal z4I$LDP;P0mF0aBvE$v1=4vtAkvfva8dgTMA9gJkT**Uft#5^eRGUNlW~2DT8Q~$FG5cgSURN!Z!}TEXZ`>s!O)?lz2qsvtcgq59_p6gs8%Ujs--42zdQ05j{?hn;I&d062mh%b= zR+e}`?#_$^>BWIQJlN5o4^J8Qc+Jt&_=#2S5c`*rp5vFDKYfU|C;2jMLTZ%G`FQL& zfHGq;xAdOg5Zu)YHswzqDbL-a^HQsngus#8%q;6)lWppyRH%xQ&8{wZr4+i zYcG{Bzh(DL>*Q9&f5f7Crm%!jR~Qk?4e-n!znoHbQlcw+o)rsOOSmTrYHDd`L6AlM zU3^AG@{e0HjSd#ufk)0`_wg$_&Be}S1Kdwt3_kxTT$M4o*J_48eKv}QG(Z#YW9C%a z|BCze`bU`(ArCc^>&vEcONB+6Xf-a(eSGzTR&{dyx1AGfdT2EcjGo?Mrt+-2Lb?nP z$)lIfca%DVf)FA9kSBC&-dONL;pq;pW5!Z-j_~9@j@DoL;GNE%xbf+P-8ECGDaqbiH{8kt_K*%GJ;G9*gCM`(6Bf)0MUlp_h{us@5%i__Em%Rz0_D4~uR&`Jd<4ZRT zXd@I&K$ifYls{Q$3fz4(>R!zy41dJQ^4zHn7NcsB#NjZRfJ1k9PQGjb3|+_SSpWM; zsDu)`VM1njp|jf`l{S6lwJMwxi|VAQ;Hd!8Tbr+xrSxaRTXk0gGQ+z=?N5XTYM){F zQ_NWS^R#92pp3j*bIMhA_Q8vy72iqS?t)x|kNL4t-xjnndAuM}k}3RcXQj3T+Zb85 z`B1NzY^x!oW-Tn;zEMCGoUq2ya=O`%;Taw$2boIMS>@V$gy(}V zKsnV>qqToM^$>mL&ql5C{V*y%6auyy4JT&?1tNXGJ0aFyv@s~r5ohDkD{`0#Q-`VW z8-_}e03KA*Y2{xG2#~MMfzo5UzT~!*uIL@W-PHbeY~I*k;#O} zB&T}Lk^3iVns;*HP!+w+@B{d-@xq9{_rgAcYh^Bxb%ZB2Cd>=%xI zn3Pw$7RsRZKuI$*hIlI2cW?vn-9T|c5u0-D*eqg8m-45Alaw*kNy>?TI-WBDGUl;Buve^xq*a_p3PzC?853>;ZQS9y{_;2&duf@z>8v zhy^IlH6fTBwJK|~{GmPC9?R3iSnynrO> z-1*n19M+!n!$p8MMHvl30D?rYGW*5dHVgHb+g2mh7tAuG@7^h>Et%>K%k)si6wcO-4%K%MD|}}t zAx=#~JTle(7k#RfPl?KSlDd-s_P#i5Oy82Pydz`Gr)w%$=ZIu8H%TO;07Rlfr8LpT z-61%;=WNQvY%(bU=h?^nz`M|ZxcOp}nB&i7GeblR34}b*Tv6yy-tVP@a+_~yjO+^P zsWFF89;d>y=_+>kn+0MJRkWW+F*>*?I#5$Elq^jHzb zqu6%`P$=DL&6WbL{8Ird1rN^Gsh&s0TY&)&&|JzYK(Yw2s&w(2!(3IJ%&67&+;&=6 zbYJwal8u%--R=FqTo@I~HKMHc*dO<<^7cu!-Ydd1&bk|crb{lyuaiC)dbLG;Fpkr_ z!YiEi(LgOf{lX;-e_r;(L;Sg#BvZAEVR}-PcN$o33iZ2<%|156Q=TRDf}|_S>%{Y& z2-4B?jU;!6<h;t=SZJ|7RMB48aOirAhx6R9cUYBX0(dDFQjQjo4sHX}np zN}*!qp(mz2lnVOB;BP{c{^N-#^@JnL&;X)Q-dXWyCh258H%NRwg_vC$bLgZ#rchGo z5GwQ*@i86yU+x?b!x}z{QgAf*amxNQAw@}@e5avYKJohe0M{*-iHwohPb1&syhF4r zcRjD>+N+lCPTrNt-r&`w$>q7IrLIn6md?X{+*pvvJ5%s2_!5C^<01OJ#+CEA&!5T# z+mnU9605gSMZLbNJi6_d$9&njy4xXEu{6Gzu|*;}c?>#h;TDtf4PNWk?{vK9Ov5*<1_bvp_Oi8^tt zpH;zEfo}SOdAef5PfQVy*rX_e9S4sMD7$=ZZWug{IC0TZrR=IY0uGY8YCme5lf>-V zfOwWGOOv$s@-vl%jsTR6g+E85V#R)4)2K( z;^Q@b0wz*l#1Q_^x!nCbz!VBSW74zduMZNbmoBnsKcBDXM+gBBO8%GFBI!y%ro#Ec zj`!2@n8W04C9?xw{!Dr4WDV zm(~#92Bw!PmiQqf(zs`OKmQ--m2bovL_nIaYcKimnS1ThGs7Y^qw9Nd^^if0DxI(< zIvhQhxYqC7A7>Y4Pr}F5%WkM_clRwj=6JJmAFi53m36O0&(h50M;14?<<{ewGY2A4 z%rkDay( zFM9^=3Wc%`;wpDtD|x{m%VZoDaO3zOn3%!aEap(TB(^=77b(5}9LtGPiz=M+%ub$- zcQZB7*);RvJ#12C&kE!V1J4p92$l`*<+YXf&Km9tsbtP2^s$4_51L`Dw3hc+pr5p} zi)d@0%#U~B{Iw3}c$od~EKR-J%BvpZIE$%uoa>ZN(NMiCwZHiN_0P4TkT$lRp~(HO z_5P+oHT>T!dm|&<?8rvDgutv0WP(r&xy2tml%FF6fnrD~dOm@mUMBOkd+g0QBDI zExXm7&3u_0l7TN9e`<*Sg(%3iL@DWL4}?xYjzO<}|7PYlATC!RZ8*L%^$`LHN|Z8? zq+>1!+%a1Wnk&}G>u%7}x)$Pqa`H>S0jUUywmc+=%#Y<@GO2A+{`S17uda!YgPFh5 zpnJn>QzDc%k3xivCQS+NGt%nkF)Bqt@@`V~VG^EyED)LFKs&ru%O;ww)s0_gbdy5TQ^5D+NHk_mk5YF*T6 zZ%}?hmQc({qnZ|{db&FVT(49)raPTEEH9wYt;uFo&tLk&!i{MKjx}0CdcFH|+L=3+Kb`S|})`MDg^ zs=7PctJJZ4PbmHTF1_335FHOu{rnoy@SqulM(KCVCdAQ@Rf%(mzN;+aGzM4-Zq6_( z_jUMxxKg@)44A_A0eM@F(sT|DQwY)kwLqcD&nl>&o~xPj&9x^@wY+qhhLA9|X(FJ0 zb0p8JgfWyF5WdUGkETEoJsiAWyEG?jWu>+zPn9Y=x6h+v2oq;hLhNyO6G=6r&2~g< z(}s0lC=F>FJ-=})Ife)&%5lBd^o(&|h%_-E=O>Kxj2r);INzv@799TS!o7^Km!%iC zj1B@&kdVW5>aSCmfKXU5h~B!i!=|jYVg+BKIcY@t-=vU%#^+XYa8;1h_@yqsccbeK zsrzzHXTT{BvHgMKg_<@9oMy)&71a=b77`fc+bIEo*dG!~?*AL<-H_aZ9t)dlTuB$bSW-=ePN|Wg-U&1Soz4SnMUXL+SiV3ybMRl z6%=zDXXrfc#$?1Z zC>avIMXq4%211~d-C38)CXxD;9YGdny~3IDnd1$u4$ z;=H%>WkFL53BF`zqDdz};H?3~f8#;pDRgXFG&@+wyGJHZ_dejbe{(Y9y|NjZO2M~P zDT8GYUW3F&B3YYk!}p<+;nYw31|iL1=SGSjkxYa)uCGiNx6g(m7>a2CY(i+gj3?@l ztC(>r&5;+HXGxGe#^a(jkd`RE2kx9djRm8pORwc+@V@=l4!Tt;+>%Gztp-1QD7Qwh z{3#=wvWK4+LdJt_a{DjEnLs3SG1M8FHUa9B_A4*JBvdvrg#-}r;{jixkp5bEZGO@7 zTT`5nJ}peY85lf9s2VmRKdMfl#t&Ozxt);r!&6|+{f|SzN|;yPFqq?Mc%=V>(75&7 zV)AqD^3rKk(7N@^Z@C;H7W-nMRk{3h9P$u!4GL@d||8j5Go~L-S37?L?_wvx4ehZzv$VzBb8?WZTxb zRnVnadn{`Uu;p`>MTPJov5ws=doz`;K$ny4_vj2DKo0?M2+*Sn3q?>2$Erkf%}y#y zMJuy((bWF%W#s>?unwGVqy&pmDdMoedkL4SgV(h(+HvjJYUp!THgT9rS`EKPP(8xC z5PWV|1AYf;8Pvml(^uEnUk}owP+t@u!^ddC#}q-@a;?m@^B*>=bI};`1tZ~3V^XRB zJl6EP7^nk^SMVDV?<2j;#N!oiKEPZ+RZ!$|YwF$qA8~-94qmqfxQg>oy2ZdEw}Np7 zDrv}W^e=PZa}(^5u4A;zIt+kbvp)ajLlh`JX`QN}oxRknZ6!jhU8D!QF8|0DR4T3) zd1?XY3Gu>|4u=vU**~fdQNMdiV?q$uaph!|_HXGTd+g0M_wk_6<(nwkL;=-r1l&aM zS|Sx+dM!F1GEjU6_o)3INU#(FVdyapZ}R}}C-w%9&SF=)#bO-{?9$&b_`mtQhbN}m zK{9C&jSH&rU3w<9^IRAYzlI+NJ}Ol-Kd8CkGQu{;iIlDA>tGXG=}{gpgOaHVjhnZB z*5h;~KiK}sAfTmx2|eE_+T7X^+M1__P-Dl}8-1}@;hz+b;m&Yi*zn3ngt6@z50J(R zVTb{*O&yjJLj7;Xt*BWrfP9E%;~tr8YZqmwm09}tZVM2N(IgdlY|lV?%!70=n5)sn zh`q#qGaBa}rKBi&9*FRn_f8|3rEYkac5T5<6N_YtP^j8t@jX*QDsq-<)zO_MV)3_#BFZLny1z8iVd03%=o3rPbdz%`Ec}A5uqy&FmMRFp)AiN?X{37U{WsuD+v{ z2#tmSKW)k)?F8%x4>^k=g2vqj`b)Qmn3o8Hf&ZTQPzqk@FzxwI$sxI%Jl~rS z-M^jt196H-P&~fQ1cr!0iEm*FKM--b4ty9YE_CFXN=!h@18In$EpU4TRr=&F%C@!i1*L-p{!Cp`kYGE}YJ0XF=NH!8<%HGCSJx#NlRzG?c zQ62;LemUP7+?(o1s;8#8{Amj$CUW zii%mwyrZC|E-E69IZ4B)FCIydiFq80U0OOde);poO1);8uo{Dh(6Qqo2toRR5a#uE zt(6bE<`l*2%{3Vj^MCCCq01E)WrG1xrU=j>**y~5kMH?kCcGK31YJJA)VgH$bmWkl z5UuqiCAB~(tsM!;)CZ;)XyG>mv$|mOGQnwW5Z(EDeoi$Da-*Wl-M!QHBBkrSmz(mR zkOu)$H0YU?zD;XaX8=kkR%kf+IfUl>3@bRN@O!wC*eDFaOGJuwGA==MB5(}R3C;vu z@Co-l`aH#9`GLp7TJ06TMp$GJ$P~srkQ47AzC)~cT-CGm5E&^n(dco)*qzk126e>Uyov~E2 z;tOm(4f_T@Amr7#;wva!$tFpks*vM?XM~$@eu7xCUj?#j;w=X#F*%<6|&n^4mxzjceQ} zY0FA-x~(O+`x}S=Mn+HS zT7?Jb3n~^HSTimiGyJKEQ=80j7XH_e0LjpW0>rWvCdi1DPlkPxW329SyPXLxtLJKD z&`u4b29Kr7vxJmK#0@mxbmbqkAQp_|FJxaMgK4EwtXM3Mcw`T*xAt`P#hj2T5hA;* z^e-{pQs>(G7k{sD)ReshLkq*fT=UBVZ|X_=PQ=L=s5lZ>igO?2{s*z~n;ZvHc zh=4qky>DyGaza86YoLH=a96<5g0$m-fTF!*cE!Ya_6O2(Q>(__`?%7?qETZ6;x>#{ zHFR0v5C;j_CcNAjyqx1}c)6GdwLM+nM=}^>{z&Y~Z8TE44LxhiE44MzeW$gdHEkql zAd_F*3c}p7FV>tg7Nkk!X5_WUHa=(v9qjF@Y;)aw8)suzbjf*X;tKcp#NFr*Y0RiE z-@F&{UitgweE?O>L{dBx!KqAg!M)3crbf8_MHGrAS=#Ool2}9%zB_Tg`!v|!NvL5V zRhs{**5ihZnmA@{f)yYDPz80a#{1|caK<9c+ z-nxb|5S3cu*>G^*Hm>I554R(g%=Td0UVqsSaJ%l(XGHBgR}J9m?f9)IKISTosu*F8 zqbOYIv>0Rl{6RfE2l4Qc}Xr~fCSA!*)tz9u>>OMk!hyaR=E z#YI%;gIqs8UBi#Rf>e7WHPmjLuvXbncyIsWP}49UJv1-0P=PA>3q_z-Be*D3$B&W- zn%heL#e&zvyRh!xMr}LB7mJ1l%sdN_0LQ>guL=kh$;!OV+L{8H^`t3K-I=#XCVA6E z!ic!o_xwjdaf4=zNKwXCd5FJKCwX`m_>2A=b)zTlD#jn9BHORstpO**O9;@?RGc$tNWT|pBdeS#w95t z8WI)k{L2}80B6xyP*ZHZ+RYQzy;b+5gjg3ye9aM!I@_9ZGscbf(E!UxytI9A5ot;PDAyeW?5D+2KQ)c(T`=>9?tU^!b=k-3DhzCM^dG za`)GL^Zt}*kSWowPECt&?biUKyCbb^fTq=7Gg>b>NF9;a{um(wggC@@a zS@rcOO8N?-rZj6JF7md;dC)+F@({NYy7ohrSIUhjAtHu`t{r&3M1==;4W)(tAHv=| zoa(lF8{Y^GhJ+|YRAk6dNX9}Gr7~wMBAMrzEoI1jmnnrJk|{Hp=ba28WY}cRw9Vtj ze%EK${d}MA?{~b%`~3GD_kGv?T*JB6I?r>hiM(HT&X+PEu4nf*ulQSGly5 zH18wd_f}TR7_MTU7i4X6w-Ga5_QOf?(?m>_%I4&R4L!z~!$8eJ8_GR~Agjeq=S5p6 z9nk(CD9ZQtr`h!{D4qIz?7>H7ga`wvyY^qH8?DU2aZ6;oPZ(A60P32q9s>N`6g+|% zg@1k{N}2wG#{m?NvYLzQl>zGQvG7>eM%>VrBHIAVv`r+L`0}{pH4AKF;eTx+iY_Y8bZBvKrF^FRA>N~T=TLD`Q5x40NA`3~$73W7 z7Gkb#*2>C`{9RkL6OshvEDZ$PdosC>1L$i(|`+FYt zmy>^F46|FB`8F9zArQ9cEC6(z`O>W3kiQRmG^v3qWhB#ktoSYuCnv-r2XzNqy%dO; zp=asuY23TZKC+r6`8;9pMEg}6yFdP@e59<0Twv)-8_NZohJDH6TEgT6*t?HJeG2p!sp(ZdQdTGMa72E`*aE!YM+ZTyS zO0Xzc)5wyoe>)7qTG?#T(Y`FEVFg&PdNxXIT4-^_cloDr1N+Hu zW;CeO5P;RmEUQo*UERx+4!TbYmtt%w19U4J5$rfy@txjwignETR)07OeaX$a=5Soz zzS3eu*bc%0pzB0qR58C)e1qo8rdepTD4Kz7l_q-NF`fuqfLM%L?4F_1yN zEM(;B^`qP7yF+t&M9E*77jdzF{DjE7T<%I9)0)B~?jFs`{E`q@#NfU~cjpT~d}Kb# zig~1@Sq7}Awx*c{ca2;2A5$}Pv-c_sMNZXOUh)mj$EY&vtm@og628=LpEspU!ciKq zJv}AswZAXPgwojt1u^_U@9FTKLc-bMb$eM8>tQ?amA3))U|c~*krm3IMzieAbZ#8z z-4maY@(^v+9~%U>Z+kX=c=%^acE|FnE2>6S*m(WAKIWuSVS(#UrbGg5(9-Mks?{kFuc0b!s3bxvVha+aQh;emhA(i8Vv3f24#p?}EB*eUDrkW?yYIggRg*pLnz=Q^}Ng?fHA z-`CsGiGtnyLm64wSBNYz15nfdo8dhc|CKFfTl$lU&d>^l3amj#_y1R)M%Ti(x!lcX zr}rxX_V@x2F8T@mm}Fbqcg8X&xy z{q+R#>xr00!Iw|op1iKzxcl2cjanl9771E6_z;MRcoip8O6mu@~Iz>=#}jroU;r>p+cE5!fimxi%TP{n(F|~(2gGU*}JEf z@CS_~&v;ceFwD=N0%L0-f7XTK|6M0Ht)zL>s~Pms5zlliDeB^JYM)XQ2{Ns1u5KXz#99GF2}%tgKmo`H8Q&EiaeW{H ztWM;ETL`UZ+V$%(X7<@QIb94r4h!Dz5vVj-t~L*@ zRU#5&4uyls4GQXh_=}8yfs+`ZKAhF9#(%^@sYbcoN%q&LICg_-2|5+u!>Cqe0E6xG zFS)dcHTBXKhO+rb>EADe7N|Q9;gVc_S@jv&Qh2_v-R%%c^#U*FIs{jYHcpOYW_$g$ zj>E_WrE)U4{Tua=*NlumxJGpGw}PPqQH)V92P;PT!j~Spp~$Tu6<(Zk&j=^sTh)y2 zA#%^}45bc{k0CeMbZi<($%zlK6gy?Iv5z{|HkxcKR+;ljQ57wWQD0_@SPUj6B07!=C@-DuTAxLsa#MsbYawM z;;ti0DF?~4zDEv~@Nw4lT}92jOapkno+VU^Xb|KoTJSxHYJo~KTMfv~dPV9zMvtx& z1C9&JM*BlHfAY3=Ik`HrqzGpmNlx{h6t&X3;RoircSrZ^21D)!fTM|XEJ)dVeIP8+ zLFoblD8+71fT}0DL~6XOee!RCkI16=m2hY*f@Y!NH(*J_y56z285I)r`DMk_aFWd3*fP4z;nB0mp4a~@ zO@Eur0UiM)(*4=%`1UZ$DpyCRFYIKff{74igH3AL7rd^huIgo9?eGnkGAK|S^qwSV z3bT=EQU0{JLgRo~&2F95Y}P@LDTNI^(+|fyF(`G;k_*M0o#Gm+rzz|zOr}*fF5Mds z8p0pgE@DCRTO6Z!Ofr!y>r`>9#|B+Sw7%dR4}~q&TMJ(I*;vW>hy<-U&K^tgmDP9W zX9>H+3SL|D-UNt|M3+3+Mgs_LAF+^fb@jfag5`%Jg%0?X&xz#jD`u;;NndhOmOHKM zZ9MLwjPE4|{h*W`8s&xFY!UDu>X|*7|B0dPdGx&0>)WgV(vg9%XU43q6ztt`xPxE_ z6W?DmaYn9r4-JW-=vF#)6sU+U6zCzwenJgxLbqFm-N}gOL%=Zt3yP_^hor~dG&O71 z!%NX|L6`Wa?f zoAY0G$#$V^6^*?4Wq|tVc1c@@h$%Vhc|8;H>Zi1@l{NjZdY|a)AlwE+gl@=G%wsr# z$P(m_p#cfFwjrIiEvDSgrQG2HN@{=J5%ntw$WN1+Pj;p@4ZQ6u0!a34iv9ID`z`ce zjFlz?9TZ$^NVtXXsH@quae2DSCvrRA~CAU zUL6Hd(yqQ-uczcMj!{REdWLfS?e-E|K()3`Q5#tR1RP^P@0O&`J^%gXmU!Q{h9iZM z@=p~TRS?e^U?V0?FuVGl?iS$`ICGT4Fyn7MS$scFW(2t$X%&mS={`UmR};yIVmP3! za2%$S{pNL@KoWJc!5(q`IukMU!6ZRp@GPRi0sn_oLv&;48Tg|cqvMC1SSNr17)siE z@VS%yq)PKB>erq3ocGvwmCHdM=5J|5pz!{^T4=bi+TGNXUI@raP&c!LJRJU1q`{=g z-h9ixjdScnHYsZOW8Un&w_V&Q(ns;kC_{FI|R9z$sNHQme_5+nS>8pdxel2NH zga;2nwhjJ;8y}FQQeuE4j*-F;H4zPEq>Hna&G6EE2WQ=M$r}xZgUB5^#r26tLH{=i zx|8A_*NQA$h5gA0fi}uv2CY`VQQ!;sKORwx3x_NZW7!F@VD3|&&03MX1A__v^81#5 zk`Ye%X-90_k3WrCAF{bmAlLxqA$5fJo*QDyap-nV&U{$eNd$*0r%dn|;qGHr7uzRDwI$>Xh>8ix$n;VJmQtS4_VJv+kzCXu*DNR=7yH3UawL-ARr zCaJPG#ADAKqn@lG64fU^J!M2>{#gR7WbTMq^f7ZE>7`6LamDAde6ykrkmdQ0Iw=$W zx)@PrHV`JZ>LMA@Qo^7Zgp{*~>^}JRmdbnL^M5JUR`{+R7S{OE-*hPE>F6yq!CyeF z2m58O|D($hhx&*TTSx_$t|Rwocv5(ZCgK_--bolu()))tD?vSkL@Z;cBt{+i9eBdC9k&~V;?2Udy^Fr zfJR2l5u~rz9vVds889`h=3?wpOO*+1qhG(Gx|(lEt-Bd?tY@+=95v>pz=jP&wWgLs zYNrEoq-@o6zlX0ne@yT=d&%w-KKf=w91=sI)2ul4f63o|{q8RH+WK^(l%G%z19BD3 zzV@3Y>m44niqNFy$kc1}0L<3h5dF~qoO|GP9R0wBdZVn`w=vVxZREn{t;PGFI>}ZS zf@y>8eA|@?U$*-(w}#uN5aoy*B_x>>1R@KTSrdn$jDc9Pp|4$GOsR_&&qEB|FQ;Mw zeg4BnAf^zhfY5sTZtt28guH4WbEOuwO?!CX0(Si=yF~=AtK40)>sdPix>b#)2+4Vb zKMUb8{`KmPms(uDuKqflEEyd}O>-R%iYAlqtgu=+d0aSBte=(KxCEquP{&V9WM9el z<~mkwx32A%#XQw1ma=-Ho__Z$CjzcLG;$tN<)eIe!HgvrKFc!eq~|Jihmf@ynSy=V zKXbxVf$`-^_1-VU7Mwh)GH1J_`0R)@N~lR?&u6|nVz+p|ccH^$KmfxQsuOQL**ksG z)@GHHh`%pd8qm?1Ls6?cvcA`W%Abbjt|CH3^pBw?etsdM;(b~zbZ z;@%#c&0UK}27tCU0cwxTx3(~dvsaA#n>t>f)QeI>@cv zw>bNA{z-}P##Fm5G_nvguH+e5m7qhL{UkgrfVK5_7tvg|wf#vE`^HiEyaMfK`d!i@ z@SVRfIoOSduMnh>04ojPOsEE6FJH;T5rkvLf6pz3GeYdqBGPu>*pg(1bFvRYD-|&W zrF?n{@ji6o(QJ*YwCKcsAK6|-3{8!yf?}!+ER0bZ83m>_h*4I**);r<1DGpxAips@ z9bO*1WKL!~nKsTrHc}2<^=VG5N93;BD;av^RV~JrC>F`1`%ey+Id5+%*MVA*Y-{Dl zQS6KTv;$G7zN2o2nKwZBWK*!?R~-kUeFun;>WcOGfLv&7NCQ>p<%t_-O|_e+rYNy` zbCXMgZLFN-qWshG0`aF8d=&s%G#N>an)$6{{TmwWttEBcp(i z9N$KQlBJUAVEp38gMqvvq9lH-(~nkuX=A%tD(Akwn^H|AlN+|6@=2A3z81sieNUmj zB+K-@IE-Wp!K(yF$w#M0uX3vb;Y=h>bSZMH8gKRGQB=9E-lVhda+ZQ}(#lR~z;W-> zPVESxx5tL0>%n*IZ)(pDr6%x0oJTR7-H>6&;s+N`&D>m^F?%#4C6oZb4#oij7zd!i z%awRSL^wHjOUR8sM`;WpkP{_qRpyw_)Xvqc@ru}#jKnB6qx-)8f}G&UK`|s^<@bh* zI;1tL&F}@CK&D2~`gFD5rgP{_+&a2B?a)v(Xy~**{(Slb6fp&&JwwIsay%BUt4W@r zB~lUY_E8`$Gd~S^X?*X<6hjG;(-I7bjuSZ8j~{=YhLS=^tEt+|YxYZf(|Q7Zo@x@M zT>GkG>IH~gW|K6`=k~a?JSpc3+3B~>Ca!&`>0JxS-3Bu+(OqJy=iUu1fn=fMroZC) zy=rC9LlYsGmEj`UV8|RI&3D)nxK|@nl*jqx4tJD;(#V~3{Es8mIljG~JfE;n3y&NcuZ??? z$%cyi6*6aIr}(V7nZ&eB-2nfPFw#WGMiAQdusH3b%ajuH=GKB`kl}n8nID|1%5Bu$ z)liGb#FC=i$kY^OpV$n3z9-I=OI)b`;cPg#OaD0K5yIv?CaUC-$`n5$2UJ+SnUL=* zR62zfn>QQRM>+h%#TnwyZs8g&X`H+kp;MXNauY8cWpuq+f8hYJiG7;d$UZQaIL`uY zKjg%2_sdfpU#ICp!rJ7z_I7aI%L#AGfk_C9 zbvt~(j>Rnw(i+Y^7DuIRjeTL!dZDZ;K_-`oK+~S5iVlKlKH{*aV0HH zt)OouS;G&3oA{Fue#Ovc!qqF_;tY$wEQWs5J2B#6f~=L)!cmTH4KRuYU5u;c(=Ycki>k?&o%d)FHyVHS2=X|v-Y&WB}B|@4&t>t zXr%Az&qpuIM}gKw?pCf#d?kBk+ zuASbDkA3-V@11a1H`(_-hFxV(?CxMU|Gg`DJ@Mm-6r%(nS_B~{vijH7aQ zKbuz3BXR5bA;G!=ID|+GuikO~?NDMIfc7F!z@f-nTp6W=bn9wsr~7>?ajqmMZl6UY zDsU&D;${J?gAU7Ufv306ILWguCVf`RcF$y$pZ3v*)0FNXy)WaQh;vB$6u9Q%#RUY` zX$wn~V0Sno{sgtD;yMrS7l@GgpN3l`sTt|iY|Msq`nF_R=mS-vu=%|=`Y_yWohL>Y z+rM~JuNu*=DZ!6B{DPa)xps9x8z_qARM&=2Cf||eiO~Pk)7}a(2Rd-&i=)L2jzU>y zKVI)}9OO0Vl`E$yw>u)YZk`jsBoBoRAi0FL-#C?fcaOXLA zSqBq=fH)jN;L$JY!12e4yPrHgQs4)YbMYe9BL_-{J8+ziw~mI>g=axS+3h<=ffgp} z`B2`3zAU1QLC~6ohcC=@&I{!fO3S_58NT-okK65EA(rye=o?U~b#6JTDZ)-TXy>~c zS&i84r^r-!7Gz>MIUR;pGNEP_LQ3IVA4Iv4oCG;EY}qVTvq#{}h;YQ;#I$=SygoJL zuXECRkX;#o<%Xn~x?w=yu zUgxJC`l}iXPhp!%z(*#pL0mLAFyJoH5-tN1?RD zm6-vzib1@`OV`vYYJc^Vl=jO^`<>2w zT-vx!3}3T40ygkh%jfrxbXBC#zgU$9aOIFMn4NPmd!dcZ5I~S z5xi2m%$Z*bXNb?zX5`mg+ApL#%*->*QTdOtCIFCkwI_y>4PxK)oBK!>LTttOFG`Jd z0qrkrNhe)OI+g-yTUL1t#5C3D|yKY~28zD;E zPoIvIeZ8ABtkdUcP>{k#I`IzxRf>pxk2{J&Wn(_Ln6R(p3_w-aVUCH>E z+6752!e+(2bFSCsBEdP5#rgTU#cqz_l;+rXyKjZn9hp92c$b4%?S_6N?FQlyEq?+c z-tp>!?U0B)n`K)U+X#!zI|;g)i&Ho%E?=yb^nSvEb&34 zBbeW7u@Qt2q##F4*@=6J@^XG_oX?#`QAMeqotO-7Yul90`(zV>&?RISU&X>40OCiW zCQgFt!fMrVr`lC}@W?uo>@tcg|IYIGf*u?K(`Z64capvjKF8o2QC(z42?YsqhQTe< z(RajCD3y^1npr^pB)CcIiL4SxgA>o5vK8V~LPgdBhzbowKr-2HJ)k9W(`0pO@a#H4;xRjuh5bO00kq=fY=I45a>m6avPD1QEB+g^1@_9Lfh z7fL#qr6&|pKAI^^m%)CE+P&pGimF%q$ISkNRkrmA>+Q3GZ<;MHWL4K8Mjx0agw|g} z?i~s2)KeJN5jC>V-?=suR-F-I3(Cv^P@MX>cJGIO$RNW&6@;daRh8JPcP}Pda8MUokidg=0Bmak& zGbtM&QF7>eDUTE1A2i1t7E0hIM!kQ*D&m7}!zUi&4+}aNHPOj`MIdAVUMkqLs0_VB zGO ze7Sy))YK?BASYJwvu`2Sd!}D`TzzgXWiV;I&=Uai?xB2qx6U4K{e zDkuZjS5!Eyt6UmPaUKpB123oLF{Ki)<_VyN-|GU;J6+WLO7afsMYl`pr+bpt&DW}c z82Q86LFW{rk^s7s4O>A%s`RO9pPVj=5$+KUGyAEHW(vxacprOD805!ufX%XcE=D)K zw?m?Gf7IBSClyP^@DvW;v0SOXS0>|{xeq@wb8?c48p}ebVaQEhCrBr{$7M1p|0srdjVMTK3|hjX%&K+u8ssHI*4oBujyC*UXIJb!%7~wHhtfmw=v@! zxnW|%V8%ApRd$O!^%7iYub?5)m_Zv56LMEah0>M_$u@|0DE0gut>QQmK92G~xH1{ZYZgqMZds0p>Ju6e!XPD!+krv_B6~&Lv=OK0rik%{n5OJ*Ib|n3>qyVAxQp< zjM8zq76Mw`>WC)M-HphV6rSM#7bcSfeN=?3MO<$6_V=2&EbBn zH)-QKAUUsq3k6zY$CQ>u*@43$wmVw!*?y@3EVqZ=CK_|(0P!xP0GmT zW2UaY`xQJlN0aY3XYJ(xld;;4uX{aKrXdlp(+V0-`6lQL$`e%!5N6Kt0aZ68||JoBYAV z&S~bU#8sG>kZ)rn%GzQ1`NQ?Os*b?alkvLq$XnKsTY2L0j@ zu&(&s>@)Y0yw!ZQ>Jz{H-v&o)DN<%uxjaW^X*7Xc7jF8S+f^(?+0@HTL6V&3%nqKa81WFlv3JV2IrSrRz<&Mrscvy*v7e+10eip-i@jm`+E{M z*M0XxBZXE%Z|vs1O>!iaj~zTcx_UM(*+dBXlOLa8K2?O2Dq!lD_k9Qx=FoXyd5+)t z5h0l}C(b?VQk)L@eKHD?=gXy5zFgpfd6h_)=@<3ELV{)`me?Ws`EN@lV%GTf%hlGt zh~?bHrM)BtvPU1BVOUxTYTGKSZxifb)6H$`%iQd)uN+YoH#!!5i$(Uw(k8(OXjD#) zd1S(6Z~M4e{hOqo&;1dCzF~zO77imFqOBcfU|cO_N7PFW*D^SiGWg$pbEacAl~GU^ zRebX-GjW_4y(OD5I3_*uc#~sut*IP}Lgo%U*mj{|O|EKZ_X~>wT?T!VBKl2d66>;F z`KGw{b{?Kdya=pvo2ZvJLc=|f$SV7@xJ`17Hsboe`|8veCU}iz;S}of(~pq7Z0o{H zwB`bd4oAA0kz3-kqFSE*r=RIR_THPNan@%jdC?bFESJ5j|)aGGc%Rggke z?cD2)5m)PiiN4F9pwQt$$i~|IlZZ6V2ki=&gTCDXxuU&qx07I$+ex~-SDvWW8f9MG z;=<6Eos4PU9{%lhX;gkz@k0Yj4nH~3SD{)tznURK9#OX__<2_EMei5dfjy8LL46<>l1Gl_5e!6o?uxN zq;MjqMGvr&*zO>Pn{h;pZN&a~;DY{#kW?{rf=PeG86L+@^x@F%aA2Ky%8Y@kb*|oO zxtrO(v$~=pAFViWLr!K%F;y7OtwtG{oBx_uK$7~y50jTMdgEmEL~ios1E^|=b~i{9 zcp%?&I)gJiATnw5(0|lV()h>j$=(gWKQOd(yvbTrbi? z>qh~TOHm^I#f{+Im&34XbortI6{CD=&7av+NTrd^hTi>bQQ!CG7E6^@Eb9g^N+?zA zo%c#Eu2wet>s%wcyFXT|@1Nh^gca_9g9Y99U(f*GXIcrhvesVKoFSnoUY7Ge;MnE8Wi%7hUe!KmS8vaO7?!ByDM#VB-m8V$rPn>iQyZ zFG=kle+8dOi7d-rcSzp3^T~K6OvR`Mr#_LtD{zM->Gbx{7nZk4iF=b*=yZ{>a}sh_ z5rUXco~*MOWch6DerP(Dto2oQRbLNS_buIa4?*%kD9o{GEPwJO#|!`Fri#QNxd(O% zrp|30_aC;fVNOBdFmoKFltuzR5J;`APMY@Zl`*^q9`q(uCPWd1*e`dxGY9={1!vjx z-13Xb$bG}PME57#uRo;6JTLM@v(ht0Az2c1Y1-)&u>To__2yD4hb=WS3JYNYN@rR6otb$h9y1j|L`ic+5pTi?m_v^8R3%;7&W@q9R@ zJmryf`WMZOF45Y7Z9oR&7kN>oN%KBs8FNvCuZ#5Zk*12Of4l7LC%ph2rUpm#!Ft9) zuo_qr1rPXb&qZ-TflM8{4@+(g#-Wf3kS*u@uF7G0ow#~xtl2pLKeLc*u&2SJSC zbw@UW5tFjg_;1uA!e)$J^CX9FC5CFlE(pm3NvgNw1rv0(M;#Ny6cx|xbbtB6Xx^H% z8J}`fr5;j&l?Xvj;dtg;2Thga(_q^xh^7cx!8NYeP(4R18@F`h$vd61RS6svv@aw+(7oL%1j>i}wd=kP|h(-UW6&kfN z7?WNFFP(?H3kWRk>1^wDF_zv-sqb5>&v87nm{Q`hDbQGd32;)D1a! zZk)hag4wXdYcNTNvqztfNonG*vh>+q}SC)^}W%xY&U z34Po#+w{Mzw{QbLnBKTMu6b}#34|hZPG`XF(%`Jcw}CLW~?44Z-%2`)rw> zb7K#UaysM?sX%An=XT%dAa9MlI51pQu^E$a{Gu^ALkz$KHpkOON9xM=!Amm#d~YWa zvEh%8H0|K)thJ7~fOA{gQTC(O30_KNQRVsAe3{hmU&Zp!?}0MsFnl_-Q6~FIH+Oel z(Fu!9)b@q=7x=gP?P(*@J_}>F1e-YTC9AzraG?&Py3h$k6nrO&UZxz^6c+^cFz%P6 z%KnwhB-KTpzTGQ<`<}}sdg5X?eY~+i5Euuvk3K-wdJ#WZEV;UfH<&orp*J)z$h7|Q zhEe$;bSLpdm;E`>btFh@*g|~!)u`Q_MC!QnP^=7`a&x*IT+(gZYLBG~-IoC^ho7-vo0_5WQ&O(1XO8;jhKDw@8U9GP{;mih; z`Tq3bcsJD+0MnH=W5|BptIJ(7H;oH|wpt{3grYw`N~H3j@Kmdy7iAYbNrJOVOEpQ)_WKvdI${b%@8@MHRd`m>wu;}$D?}Wc@xX#;$ zAGpc3t*jPa!U+~*1aTCUc?q!DBcni(3{5VL%8S6w_bv7<DO01m&2a9_(2_v-n_xCqk4NmX~(84g!f=0I z=!dG&^LD|8g$Mn>dThjMV;bT#l?x~_Ro#GT*-IpcYZ#_kd8^}h;Rt@M0z>S z*3=0Mi`n>NDJlv#3jx{?9;;>vX@D?cobL;58uWbaNzwe!*ZJnmCn$a^u9j0`jv6Uw zg(y3Ieo&p8K$_Yyk2K{!h&PH#W0*J(O|?kh==gTM_U=%3IHq_d%@@&V|3*GcY6HwH z2TF3cj{AbZYdy~oOAV$I@yiNzENW-8HnCM=y!0bNWHqPPWw+%V2`_0Crr+ZGHEUL8NQ{@{8<@;S@vE_ypnsmT&9`_W zGghlzV&flU`$x(p2Qh5&!KY5#pixZnp4l&YyHBH3PWjwgmrYi${*@cF$jmd-D;I784Yedkh&Mnl>^-50I?g3-E7 z+SN!Ol?IXVqXT6mT>(qpYok1#TWlC@??Y;mSCKAWVm|^xSwoeFiFuc>XqB^5B6z)- zGC+&`6R-B;P4JM(Tw*w)p_PNH+&-sNPA+$Qx!l*&GSy{9Nt@D=DT|kejS-UHw1*&* zr0+za?0>-*=PF!lxrXlSN_T=IAt2 z%>(L&@`?t#k%2H=+uc#}1|bDSqKErmQX8eT(eEq{qiXVo*@h|hm- zEN}gF-tY;kh8dn)(QbU=Gdwnv#?iOtyH5qTeroQ-DQ6fDVJ$!M86mw-AZ~XUr;GGC z08w~}m4z2+UE^1itT~{K#m?zFyV_#m9arB*BmN5pMO(keB3cg7@tX)5qhgcS{CB@xkMY@MK8!x^@ zY{f7agyuGX~()GKlkbw)lwbDwn_jzV`dzwjg%T|D8-_e5U$R*OY})+=M!zhmkSr=gzl? zsx>TkjJ^o+u#v=}xWh2RWmDWp zHhfIa1!-SJNC34dAOUQ-0VX(bExy$-!Ve@i<3gX5Oh5)ooWl@$HgF!MaU#@U^1dp^ zrj`57?8hL55yz=nJFmwh(Tvf}&!S(V82y(o2+9nVY|w2^eY9)578gdRiM$~J^Ba>4 zTwii?Mu~>%zLNt|BbATNb%0{GXv6}`+=CNV%?!HqSV``WH5L^<0dM?yjtmx8>MFeM z`yr4Qk;y}7^^|`{F)Cq;{;Kb8UD~qjq#mh+6mJV>Wk(NjRiY1eq}MY%`}2l@I#Uc% zbtfVj2{J9|t^3XYV$%awI(8y9qB*;E8%mgRJn(g6jPGvlQ`IWx1Z5qM(y`l?0hq$% z#7F3O?>k9)pTKC3SNjgbJc+b1OPS-u33`a$&x4#s;ML{2zh@Jm%KZIC&}*ejPH{Wh zZzVs{;n>pazpx%rv2~4qxq%*G5O#Y9S2AJcBD(?A7n6sEIp22Jt^Chxyc+K;y|^zI}E+f6M_k4z_|LP|=XR;0Z&NisHnvQ3)js zmuJ9EWlqEQf!@Tu&cPDdaf?mnmTnq!j`Z?rT*qm11+k(pBFoHf&K_Q72_R1Fd1Tk{pGgFs9*}PM|A(GOp4*@(Z$ZdVh}!kr zzT0hkQMTTN#WO=+R`^a7JU#6d@0Mlbyu9L_^W;$S<0<0kiJ5OObW~qE)azmCxpJ?ef|K{^EpuU4{42NjsPiibtl5>f#s+LuqO8 z&@}wm0bg9?zd5o97{DX7?_d4+c+~HT)v6yy4^re(X>}C5dU*%+54OBAZ**%G7gnP9 zJd>my8PLN8L_mN3Z~siIKRgU7E<9aae+=P(;5Dw+9_oyVUuPT7I$B|QIlTYLcy=ZL z|3>>tqAtE-(^$21Bx2|oFQ3^w%S%wWP_2fh*jrUWS^AC}v9A?PpR0!I>Ut>Fv@V3v zZtdGi4a76+;{oh*T-0bl8cv@35wBmka@1sWzt(NtUclo)QtIGy{ky72=0pqyYGy4&EP4q zj_o>bZHBh&$s1oW&_(-@D?xlja&1Xoc=9;vC>;b+Z*@TBB9#uKyHd8NO|+EDff|v$ z@{^v0?YALz_2*mo&>Z0QUFGZU2rE<|9EqipDbeEY4rz?n!a?JJ-E=YiV{or-q+g%U zf3Y3=D!Rj#=X}n=^R6V_F{)=%eeJ3fSZ`%{@5Vn?J-j(Bg0cU%odxy{)in(WUl4Rj zsbl}1e~{O8g_CP9&>1I`!?(ChQt}2%N`^g0aMr>LiTW$z)r1eL7)sfUwUYpY1d3RI>IIog z!BTuyDv3t@bGjfHi-=0ViM+ZqQvaEl)&wWP;cKP|%(N)oUr7;!xyol_Ti>cPbm6WU zt}2)o1vR{o{nF8Wi=_1!Gdp`yKP3gJ#ck+dMh7XcS9@DD>ZmP7D>_;V(9y;BVv8(> zl@ccN$hu{k-kt2SuU-*qzN|1<*d7yJEWeMB-?JwR+}reNFu^+*_xBSz2%&9PNKqnL zJKocmUa@-Doo#$a{s8`*zBe`RWZ2s`EPMU9*zW~Yow~g^*E>2KRherZD6M`4*U`Gf z41RXZV_vbYQS2b>UFQrd424gQtelfJGP!sW-R}uox*?Kyc z@;2Hr!eFP1odwmV!I-o1UmIRXzzaG4BjS7bCk5q3VuSdqK*=VjD%#7t+iQ!1>^SD` za$7->!A06G#}S{E0HoN>;$ilDZ?ajLndB)Y7FJJ&I;>D=6YTBrvG^UYPKA}BZm{=n zJ+`U2MJwM5>4k`-9r{+9?J256+gZA9r!DTpTjR_#r3(y_B3m7A5(#PD5>2lNSkGgT zagbC=h*sO}_A9~IE7cP_0c`(hgZF=FuV3}8?R~+E?O*W)Gm=IyHtB6YJC&S_`}~O7 zZ;8DIe;ItiVqGE2--~OT-;eKh7_4_TT@!vPkKI@g=u&2pKUF~gWN%-X z`a`21pPHeLRpmynQw6gaHG%#1wE0V2-z;8}>2JSeSFMcPMAsvr%e$z|G6YV{+jd<) z{Y&ElyvREaFn)E<*645qZIj?34XsP6dnwF$9^-lGUf=4yybMEiw(IN|(X8U;U*om< zm(%r6WW63d3WeOQNfYM0*UNX)?5zrvvcQXwbAZ%R5@#8HNbn&H>x>KgPLM7rJ1zXf z=Z5=arx=&kOLh~F=0^>)nCUA{dM`$KVeFVO1d>Jyy6w=QOF=>pMf>e(U9C*^w`n|` z9F?+mUe*ueYO8*J(KdWiX1iJZ^AgP=6p!7089SAMHcm`KX!#tGjdIY;1UJz+w1A7>t-TI(K_`JD>#qo_dqkmEyp;?<{#M zH@U1sy6s$oFw=zMPY))yMU&3+9lG>vis2BK7NtqUlf&$bhw3$X?u6>VwVKG7_1*hN zbXe9c_!UF$!B^GGhs$jngL+sZq$l-GO^rLcG_A}khW|vMnOQYVxx=n*;Z*R*pyWS6-X+fdl412Qs#gaVv(UA1oI1Mp z{RgG!n1B%nvg=vlp>&z?!nO@9^w%?ywM$OUE?+BMici;&+6@pF`S0~}fc0CqxGYJt zk{!`|-@K~8sj>Vv&vt9YCr-;I%7+b40;a!Z(DA7;=a4ezk;0EW;3$KqZc$n~sYxB2rUD?;o^FurX(_?e`Ph{NLV{f(c$_BP84WJplVIUB93)`yN8-Sb#G zMD5qL@;zasBd8}dLL|&&E?3+b<`X8C@rA9iYo_Y=|a_-_{zU*(o{s1DnVzR$=7Tm2>z!9~1@${?gaX;JXsMQ++i;zMHKIAY8v z4*F|_>f9Rj3WWjqm@2nwBQ1td>N86BtJZ$!n$+3xqc~QtwU1N?RwQRRSt#BWlFBV? zFl%^nEL5j0bU!GXk24(OmML@}un&bg8l|^yG1}tmVYD7?>&C^Uby2E`-`2B~rjjl* ztxI{Z<PaXDX}-69^3gZx@unBdDOWk69(u7Kzg#OQ3 zay&AxXy%n!p9lcYfvv|i5iTuTsf|~*?r{;~t_?Sj)$hCUGP1CrvN_bAz_dzOt={ct zXFxfqujAV-cqC>^I}Y4zVR@=q#90^A!yk^UW~feBSi@fDJ45a}8cw#&i$1LMh6*s^ z&iGkL(h4p0yKUd9tdAcr>+9=Vu+0?1GVY39&w>eocPa+e!e}JPmfJlErIR#D=W?FF z^=EP>LYxXu`Lasdn^Gm>b4I%H9Qd#|1eY2Ym~ z6o=%scKirav8AOIoh~ous0F(pUFLaKf4WSrQyv@Bt7kdj^{JpBE>4>^LG}%EZw+K^ zv())mhL^5i&oXlh)g9ijV}qBGqPmpzE>W8|Ph88E)%ht@{pqo;?v3OJ zH<7JvTk>iO)7chT{)w&R9AikT?ns!@^{Z$Of`}sL_i4XRPZI5ZMN({AWQ zf63l3+;GWmiIeba^KJJ@2W4unh_h0~2vReU*EcpsL%f0$U2DrXPnW5!lo_D3bKh_n zU$}a+xd3wnnNwY_}R(R+fSp8C6Wj9!B)i$)f*fF?XgN;hD2+2TPpS&x8$_mkj?S zpYFGPTROvbL}fv|A_`94DU+BIY5lBC{X=-u<*^7p*bi7K2h&Q()kpoNoNZ-oCyoy?u*R z`?EIY8^Z8P8Uv&@!`B1_%It1?Nj%QFsZjA62Dh6t!Epz4(-1U#6b4fO zcbonTChwfg;|(hm9(yPFW5@qFb;ey?m%3eJH{6@|-z^sbqywhaPvki~dWf!4RCqJC zy1COWC35FG@ru_ZJfHH~pr?kaXI_0 z43$KKB2(shs7O-EoH?P)$9&A^eb#n#yLavG`~LIpKg!2h)_T^nzR&mhK5Or@cG9k; zimOhPUh25mD`zyp;$P@h9pEQf87|_*tT$sOe1LEmj^AaKB}->lfhHuvYp^$Lm79+a}B|)SAYLXW^d9k#8vq3cV$~-34M&jEmI!}GA{qwzx+C)<33B^`f$+VC6hL}apShrtP>1lgn<+xWt zV|L_dh4jp$<$Ge>PM#@5x?t~di{?6;^76eNOp%ewyy`1i14BFj5DK1q5L}&q<*;R1 zwMyV&UtfQLP`?#C@L~dQtNf*Ux+Al-qV1se+Fw>*@qV+VFWPl8l%Nv*$GIA~I6DW6 zi;tSFSFaF}=#_lJ=#<^Z#wHLZIcS$T^Q8gA zOtPN7W#LoVUA;EEo;mJS<}qI4bZT@<_6t3@vy=0R{+js@OWlwA6;^YOOnu-mD`B|# zslWQff@NyW;;J3h)3le`Ys=v64sdq+>6z(^#j)b_k*A_&_RN3fDbOJ5MvqMF*OvLb zT_iooz4wZL{8GWV&5Qp0suz*7 zoVH5PgPT#bIQ2sIxmhVmc%1O~B}E&!e;_lo7bda-NJBd!rI7QGZ<-(9XVddfzHZ`j ztq2`;UqI>FA$;Dtx1mq&nN`<#r;@lhpVh5USlmZ#c@qM#4>CL6S*TkLU*vC?C{T$% zAhlp6%;lEPXsuy<(xgNB6>sG&A%Vd)8t!rdTAG^AL9*!su5Vvc7TMLw>p2DYtrjgT zZQM&A3BPwB=OYj<#s0Hja{hl;FKgiD(pbKAOOo;aH@(p=TX|HEW%jk^jIv*b?LRB0 zw<>Y8j??JB{3 zCjE6hs;KkSH;3-7VLkpXk%^aAd84|%@{s_}&HT~>+93Dz-%>~aV-Tqw@!)|$Y)k`( zcX96X?0$>K7bPfeyWXtHtrV0TJf5xpd{7zQ7C6@P5>h8;cLsRfCE`&PCr9t-(cC_h z=evG;(sN%lexP6*j91Yc^>do@^deW|pupqxgLcI?J~YZMS<2eG=zX+=A7r60>R~h2 z9^tGR&ZE+X_bbH)uIa4&C5?+c23)l3?P=)Z`d2}FT1y?gndp?av0swo-p}wh)CDnF z?Qv`NLk8NC?i`aV@2qWLah2Ase&Xb|PM0=>`nFy;z{{5&kSwq)apORDLD1HKTITpa zz+@*MtHzxIJgRv)GS6BpKPC8iDfQ8%+7I-B?t@FeHcQ#xaUA^r;-A2utWXNQ>A79L zym&V0g$&&}Xsozd?X>lXuK=f#Po1~FAZzZV3kab&N8Ps^oGZ+Bn;a>)BUyl83X4WV;>stE59^xKQV9C{D_M6ZeMj@Ha2e`-|P)- zfaWO4FSN1M+^%=Gk2JJQl$bO$b*)=Xxt<*BK_3?|)^|N6e)wqCX7!WCzE3>+bgLT= z|K_94o2@gb{DrfJmFid`6o0SfPOnRm@~Dj+Qz*BM$C`4mKu+ge!07Jmq#^d0r;|VN z2d&dMuF939@SpqT<)^cAoSHdIFT7aNBnq|H92cd-o{7%#t)r97wA2&tcfE3UDW*?0 z&9bUx__Kj1`CWqks4{N2#U(4%Eb6_?tDhTUOVOu zc>zd`W%$n;*Ng6)+`p!`SpPBjAnAr%ljM%GVNM4Utqc9%e9YZ&im z76x5l<$8r%GowIyz)>i}e0Rg^i|>`YqMt}aH#zDL#5>;Ip#TStsdxRsuW3D5cR#Sj zR4vE(s!y-kDUB@ifQ{L-`XW$0P}}fu%UKkjf7EpIbN$1n2TA*76OFwC!|gOmm9qKt zuI^5Va`LO4(X9%pP0&OhXpgP`P||8El&Pd$mt1~NmY#ChenPXW^PJY&#bFyk9aZ$? zuZ({xp$hj=n+Gg1Mb1>q4qSV5bkS`NhwSa*DLM<8X{9fIrkdItv{Wu<33iC&J<)tD zPV8FF>}Mh9e|;Mfgw#_R;vaPzV%WPY(^%hToo;mjRp zM!UsN$h|7+p$^7%XU6pnF6cVMn$1`HmgZWZ1oG?WNO(W>Z?LX$th3I2g;bsFmeZW$ zCm?Z_?KXq6!baZ-X*!P5Qf;N%5dl*u6Z|Rk`gGc#Tdp-va{aZqi+NNd19mQyTKoY; zA${nE{r#5AMN`zip%39Uo7RNoWfX!kU9yzLzrlO;PlmRaw!$99WxeHhjs7-4{ssQw|u^YTBGuQrI~0Sy}anqQ@$!){nK# zx1CNGSA1UK7bK@x)GFh$SUcZLg3DjIyF+@pQ-iSSkrOAVF=pH@)4%`j*y0$bW>%No zEuq8S4nePG*MBlRpu)p@V`9%PNCndcE*505v@1?+P+gLawU>^;>OQW3ur{Gf7UFF?S zQxPc}=;k#-qq16C%NmA+ybIFvvrq6kkn%-*Z07wRP~|)7vd$-Ba~#Ohd8BMYh@!22iuy`@>qQuG88JnjxXRk#x= zlB`cRmMF=@x9~-a|3gc5C7%YE)v+!^X?TeY#m!2WkojcYuAk{u9QK9>`!>PzY0&cY zk6XTTna$MuwgT(5e!K!o$+WFo(2*^%aC{Za%Hzkg+F{&tP_TOL4%h$EQgZH`YIu$Z z`s|vcDY7ZaIe7RzU5rjwMGk-`wf=otzIpcjQj*7?KVo7nDF`t6F<@oO)X)+|)6PKsSn8f-O78>2}-7m_L`q%ImkTwc=5G_7mlo9@a56!YM_ zXn*x@*WLRjwtafBJ(7NF4MdgE75R|>PrROw1;@BLc%uFdb zd6C%U_`VnOJ*sT}w92J{)yU9T5<_{Yxv7~-VCWWP=sOZaGbf&>>=Qez3XdwfC4a$? z_{m3Va^ew8wX)qb|9}{|89VDI8cuaBJWn{3i^QSsW^BzS$j&EVr<6GEP^R=RA)!`G z2GU9}Q+soKrVCYNWpcwzBVuJ>B43}AOvKJLt$N;9Bs~mFo~3FwU8q=A1s=EUT1XLR z!#%EDIg?LKOEwW>%{h!5GJIy{dw-*!a~_9@i8X+!qg?Z8VW~d}T#rxwxoL09}WW&n+>Z z53Fr=G`<)BK7VONq1@%;L*?Axu7uVv%$1t}wwX)0KP(2?;=@PGg2FWBVZ|7d?P z8N!K(H}6mQs;qKK%n&&Q5qlcuB6x{pE(4YC-y;B86GM>9<@rrRzNvYBTSgL&+Q}Kh zU_({AX-gyr<2nv!g@v)3K@DL=c zh=+ms;+QLk%pgvTgCLN+NdjqQbGV5p@^=N~lK|Y`IXQKbYGR>QKZ$~!rB+N7&5d|0 z33bheHQA)~#k;Q|XtX?b!#}X&7Lsz&fWS^TGK2(wyv_{lT!w(v+(9-B2qvpM-fjs1D1D+e2uc)A8cZF4uLQrHN%NEIyz4a%Srt4XSILvJV39L z!~ky&t>()Hh{h`baV0z(3@kV8S3&7Q05Ujf2T~5-kRwMDL$bAHw&@j1SBmcHoPzb( zhzG#uzwJx&H=RTJd3hU=sZau_z`c;8 zF4@uqiK?nSf?BbZa-Agle$JD&O9wv@l(`Crl%4yj;Zl_>_oPXP&f_Go|5=qSy!jwQ ztdVv=GdzVl2!^nTD!_FEU5t^W2$e+A!?^DpWKPXN1_{ro0u2l@zG3{KCNNGGGPD&Z zW-$h25J||bB3X?#2F;}I|4{=5WKa%^dON=cuA(w!N3dx{(c-2({COY^L_IZNdj|C9d3gBq^QC= zDG0z1!Z9&kl+H{gY7xjChkfz%rPFvv$CMEm5o<{%p)T#@AjzQ0s8_frg&4_61Jo#4 z2Xwu$bXUiR`}WSo_j!Dp7cN|A%ufa`j54NP$Y7=>-`TwDHh?~Z9iJkpA*@B~-W%wQVp z9lJXHE0+DBlNl=tp|7IeU`9L}yC)@ia$apd#Thj=H`I|(#R!uQ>_}=xy~XXUfhQHj7_#K>ZOm1=adBL8B^8qQ z$8kbaH&%NRg6t%Mlw^Riv*AwL!XkNy3PR2R3m~^tYkCy;&YSQzMp5nuk|*4c;zl+|SDUd}3d7giej>4Qq`j^LDH<)ngeOkj&w?3>CJt~- z-a+T!zWEwR9#0L zAG%5;)9CmPHU-yl;;nhp+^>q{8v;MeRgw{=&8-N4?CQid0 zsX%60H!tTMf{hb0BVHBPZbHyP37s8h_kwym*hUIqh)nr5EEB79h|wOafEquzleKaY zW!nzi-Km3}gTwRnk0+iWo~@RlpL2B0o7y9BISVCx7CZ~-3OJ3{#iDAkyj`0p)9>T? zHrC_Ruo3boVqSTi-qn}HTq#b6H5*<3qXue1I_DY1iLMvEs6D!4CCygBesh~ZBtx+0 zPT4k_BIIP&3RNzpY*WDfQQlxbd=v!|+DMY`z+B3ndq}pCARJTy9mX@r9y2pTq}z!C z-4o9b+Z<%qaT5C~Kj`39{K>{!kWGnw7qS8RLWL3_g1YZC_7M0F!qHhJleg0dT$KvN zMZt9vBl|#LDKc^`3kmsGea|=gxSNhRj*QzQHxcm1$$y*19N#$egzeTsiO!R(jgIq9 zV=Jl_I0yR-Eg*`C4U_wLLF!XeT}osrf;p}5nIztE zP7))s6k3lDB))>mI~@|KwMzdes?J$Rl0=|Qb57O#Rs=gvCwsao+0xg{v))47iX-(6 zb%=Kf@ay6H%^u0^=SOVif?CyO!NIRrHMe1mwtC4ve>nUuq!zL@nuS)@0?I2q$!wG0 z)(QQVrB>rcmfL?vH+nevvxhO14bo@qOYp_&lydlMU!1Iip!c%%&EeF%fU<~q6o8~{ z5@bSQI|blBMG&VtiMu;$oW5-x3FBPk^QOCXaDKm!eFbi4lxD6|G^*9mF54@d-M4K@ zJ~Z|?+3F`k{E+og_w@EF+rI$qB_^Zvkbe3e}c-qU}fjQ zy}4P+-X;m|G7vE;j4NWF7w>Y3)PRz$53bsES8_?aG^6lBA8X4Zm6f}e2PN6N!G(T8hxe@^0Cp6hBzl_rj4>7kS2}Ln~AtXS?Zr~n+hQrhuGjP z$wbo9lfT^!xrN)gu`7-WoagH(vd?49@^Wg3nvgnWfcS=l|JCRD z21!91lI3u)bRuv=fD`9-mKp|bm=WJd;=t22(VkSEPv&~*utEEe%TDnfyh_RSG0)sS zUgA_~Ny$F2_MexVduAZ^$8gKr4tFhldEq=Z73fb~6tfS0d-o2Oyy3S8@hvX+?Gt<% z;P&t_+%Iq+AsSy(3guJP|C70W`3u4{9Pb%vu1^6wSq;?pomEkxY=NJNM>paBieoq7 PU&=nkg9`C~=wA9Cm#!~S literal 0 HcmV?d00001 diff --git a/docs/shiptitle.darkmode.png b/docs/shiptitle.darkmode.png new file mode 100644 index 0000000000000000000000000000000000000000..56d75ff70bc3e3f243343c99e6639b058440caef GIT binary patch literal 34642 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 OkGzbEbd98G(EkGfehM=H literal 0 HcmV?d00001 diff --git a/docs/shiptitle.lightmode.png b/docs/shiptitle.lightmode.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e2d822ca0822518c95baa626cbe41253151288 GIT binary patch literal 33072 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 SPCfbGRaR0-qDIU( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/soh/assets/xml/GC_NMQ_D/textures/boss_title_cards.xml b/soh/assets/xml/GC_NMQ_D/textures/boss_title_cards.xml new file mode 100644 index 000000000..3667d2bdf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_D/textures/boss_title_cards.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/soh/assets/xml/GC_NMQ_PAL_F/textures/boss_title_cards.xml b/soh/assets/xml/GC_NMQ_PAL_F/textures/boss_title_cards.xml new file mode 100644 index 000000000..3667d2bdf --- /dev/null +++ b/soh/assets/xml/GC_NMQ_PAL_F/textures/boss_title_cards.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/soh/include/functions.h b/soh/include/functions.h index 42aab2813..7854b9835 100644 --- a/soh/include/functions.h +++ b/soh/include/functions.h @@ -28,6 +28,7 @@ f64 sqrt(f64 d); //#pragma intrinsic(sqrt) void gSPSegment(void* value, int segNum, uintptr_t target); +void gSPSegmentLoadRes(void* value, int segNum, uintptr_t target); void gDPSetTextureImage(Gfx* pkt, u32 f, u32 s, u32 w, uintptr_t i); void gSPDisplayList(Gfx* pkt, Gfx* dl); void gSPDisplayListOffset(Gfx* pkt, Gfx* dl, int offset); @@ -840,7 +841,7 @@ void CollisionCheck_SpawnShieldParticlesMetal2(PlayState* play, Vec3f* v); void CollisionCheck_SpawnShieldParticlesWood(PlayState* play, Vec3f* b, Vec3f* actorPos); s32 CollisionCheck_CylSideVsLineSeg(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1, Vec3f* out2); -u8 CollisionCheck_GetSwordDamage(s32 dmgFlags); +u8 CollisionCheck_GetSwordDamage(s32 dmgFlags, PlayState* play); void SaveContext_Init(void); s32 func_800635D0(s32); void func_800636C0(void); diff --git a/soh/include/tables/actor_table.h b/soh/include/tables/actor_table.h index cdbebbc63..64d9099e8 100644 --- a/soh/include/tables/actor_table.h +++ b/soh/include/tables/actor_table.h @@ -481,3 +481,4 @@ /* 0x01D4 */ DEFINE_ACTOR(En_Mm2, ACTOR_EN_MM2, ALLOCTYPE_NORMAL) /* 0x01D5 */ DEFINE_ACTOR(Bg_Jya_Block, ACTOR_BG_JYA_BLOCK, ALLOCTYPE_NORMAL) /* 0x01D6 */ DEFINE_ACTOR(Obj_Warp2block, ACTOR_OBJ_WARP2BLOCK, ALLOCTYPE_NORMAL) +/* 0x01D7 */ DEFINE_ACTOR(En_Partner, ACTOR_EN_PARTNER, ALLOCTYPE_NORMAL) \ No newline at end of file diff --git a/soh/include/z64.h b/soh/include/z64.h index 0e2b147ff..09332cd94 100644 --- a/soh/include/z64.h +++ b/soh/include/z64.h @@ -624,12 +624,15 @@ typedef enum { /* 10 */ TEXT_STATE_AWAITING_NEXT } TextState; +// Increased char buffer because texture paths could be bigger than (16 * 16 / 2) +#define FONT_CHAR_MULTIPLIER 256 + typedef struct { /* 0x0000 */ uintptr_t msgOffset; /* 0x0004 */ u32 msgLength; - /* 0x0008 */ u8 charTexBuf[FONT_CHAR_TEX_SIZE * 120]; - /* 0x3C08 */ u8 iconBuf[FONT_CHAR_TEX_SIZE]; - /* 0x3C88 */ u8 fontBuf[FONT_CHAR_TEX_SIZE * 320]; + /* 0x0008 */ u8 charTexBuf[FONT_CHAR_TEX_SIZE * FONT_CHAR_MULTIPLIER]; + /* 0x3C08 */ u8 iconBuf[FONT_CHAR_TEX_SIZE * FONT_CHAR_MULTIPLIER]; + /* 0x3C88 */ u8 fontBuf[FONT_CHAR_TEX_SIZE * FONT_CHAR_MULTIPLIER]; union { /* 0xDC88 */ char msgBuf[1280]; /* 0xDC88 */ u16 msgBufWide[640]; @@ -737,9 +740,10 @@ typedef struct { /* 0x0128 */ Vtx* actionVtx; /* 0x012C */ Vtx* beatingHeartVtx; /* 0x0130 */ u8* parameterSegment; - /* 0x0134 */ u8* doActionSegment; + /* 0x0134 */ char** doActionSegment; /* 0x0138 */ u8* iconItemSegment; - /* 0x013C */ u8* mapSegment; + /* 0x013C */ char** mapSegment; + char** mapSegmentName; /* 0x0140 */ u8 mapPalette[32]; /* 0x0160 */ DmaRequest dmaRequest_160; /* 0x0180 */ DmaRequest dmaRequest_180; diff --git a/soh/include/z64player.h b/soh/include/z64player.h index 1d3c3e971..7ce699678 100644 --- a/soh/include/z64player.h +++ b/soh/include/z64player.h @@ -678,6 +678,8 @@ typedef struct Player { // Upstream TODO: Rename this to make it more obvious it is apart of an enhancement /* */ u8 boomerangQuickRecall; // Has the player pressed the boomerang button while it's in the air still? // #endregion + u8 ivanFloating; + u8 ivanDamageMultiplier; } Player; // size = 0xA94 #endif diff --git a/soh/soh/GameMenuBar.cpp b/soh/soh/GameMenuBar.cpp index 952186786..981bc1840 100644 --- a/soh/soh/GameMenuBar.cpp +++ b/soh/soh/GameMenuBar.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #ifdef __SWITCH__ #include @@ -28,6 +29,7 @@ #include "soh/SaveManager.h" #include "OTRGlobals.h" #include "soh/Enhancements/presets.h" +#include "soh/resource/type/Skeleton.h" #ifdef ENABLE_CROWD_CONTROL #include "Enhancements/crowd-control/CrowdControl.h" @@ -36,6 +38,7 @@ #include "Enhancements/game-interactor/GameInteractor.h" #include "Enhancements/cosmetics/authenticGfxPatches.h" +bool ShouldClearTextureCacheAtEndOfFrame = false; bool isBetaQuestEnabled = false; extern "C" { @@ -791,6 +794,34 @@ namespace GameMenuBar { if (ImGui::BeginMenu("Graphics")) { + if (UIWidgets::PaddedEnhancementCheckbox("Use Alternate Assets", "gAltAssets", true, false)) { + ShouldClearTextureCacheAtEndOfFrame = true; + } + UIWidgets::PaddedEnhancementCheckbox("Disable LOD", "gDisableLOD", true, false); + UIWidgets::Tooltip("Turns off the Level of Detail setting, making models use their higher-poly variants at any distance"); + if (UIWidgets::PaddedEnhancementCheckbox("Disable Draw Distance", "gDisableDrawDistance", true, false)) { + if (CVarGetInteger("gDisableDrawDistance", 0) == 0) { + CVarSetInteger("gDisableKokiriDrawDistance", 0); + } + } + UIWidgets::Tooltip("Turns off the objects draw distance, making objects being visible from a longer range"); + if (CVarGetInteger("gDisableDrawDistance", 0) == 1) { + UIWidgets::PaddedEnhancementCheckbox("Kokiri Draw Distance", "gDisableKokiriDrawDistance", true, false); + UIWidgets::Tooltip("The Kokiri are mystical beings that fade into view when approached\nEnabling this will remove their draw distance"); + } + UIWidgets::PaddedEnhancementCheckbox("N64 Mode", "gLowResMode", true, false); + UIWidgets::Tooltip("Sets aspect ratio to 4:3 and lowers resolution to 240p, the N64's native resolution"); + UIWidgets::PaddedEnhancementCheckbox("Glitch line-up tick", "gDrawLineupTick", true, false); + UIWidgets::Tooltip("Displays a tick in the top center of the screen to help with glitch line-ups in SoH, as traditional UI based line-ups do not work outside of 4:3"); + UIWidgets::PaddedEnhancementCheckbox("Enable 3D Dropped items/projectiles", "gNewDrops", true, false); + UIWidgets::Tooltip("Change most 2D items and projectiles on the overworld to their 3D versions"); + UIWidgets::PaddedEnhancementCheckbox("Disable Black Bar Letterboxes", "gDisableBlackBars", true, false); + UIWidgets::Tooltip("Disables Black Bar Letterboxes during cutscenes and Z-targeting\nNote: there may be minor visual glitches that were covered up by the black bars\nPlease disable this setting before reporting a bug"); + UIWidgets::PaddedEnhancementCheckbox("Dynamic Wallet Icon", "gDynamicWalletIcon", true, false); + UIWidgets::Tooltip("Changes the rupee in the wallet icon to match the wallet size you currently have"); + UIWidgets::PaddedEnhancementCheckbox("Always show dungeon entrances", "gAlwaysShowDungeonMinimapIcon", true, false); + UIWidgets::Tooltip("Always shows dungeon entrance icons on the minimap"); + UIWidgets::Spacer(0); if (ImGui::BeginMenu("Animated Link in Pause Menu")) { ImGui::Text("Rotation"); UIWidgets::EnhancementRadioButton("Disabled", "gPauseLiveLinkRotation", 0); @@ -834,37 +865,14 @@ namespace GameMenuBar { ImGui::EndMenu(); } - UIWidgets::PaddedEnhancementCheckbox("Disable LOD", "gDisableLOD", true, false); - UIWidgets::Tooltip("Turns off the Level of Detail setting, making models use their higher-poly variants at any distance"); - if (UIWidgets::PaddedEnhancementCheckbox("Disable Draw Distance", "gDisableDrawDistance", true, false)) { - if (CVarGetInteger("gDisableDrawDistance", 0) == 0) { - CVarSetInteger("gDisableKokiriDrawDistance", 0); - } - } - UIWidgets::Tooltip("Turns off the objects draw distance, making objects being visible from a longer range"); - if (CVarGetInteger("gDisableDrawDistance", 0) == 1) { - UIWidgets::PaddedEnhancementCheckbox("Kokiri Draw Distance", "gDisableKokiriDrawDistance", true, false); - UIWidgets::Tooltip("The Kokiri are mystical beings that fade into view when approached\nEnabling this will remove their draw distance"); - } - UIWidgets::PaddedEnhancementCheckbox("N64 Mode", "gLowResMode", true, false); - UIWidgets::Tooltip("Sets aspect ratio to 4:3 and lowers resolution to 240p, the N64's native resolution"); - UIWidgets::PaddedEnhancementCheckbox("Glitch line-up tick", "gDrawLineupTick", true, false); - UIWidgets::Tooltip("Displays a tick in the top center of the screen to help with glitch line-ups in SoH, as traditional UI based line-ups do not work outside of 4:3"); - UIWidgets::PaddedEnhancementCheckbox("Enable 3D Dropped items/projectiles", "gNewDrops", true, false); - UIWidgets::Tooltip("Change most 2D items and projectiles on the overworld to their 3D versions"); - UIWidgets::PaddedEnhancementCheckbox("Disable Black Bar Letterboxes", "gDisableBlackBars", true, false); - UIWidgets::Tooltip("Disables Black Bar Letterboxes during cutscenes and Z-targeting\nNote: there may be minor visual glitches that were covered up by the black bars\nPlease disable this setting before reporting a bug"); - UIWidgets::PaddedEnhancementCheckbox("Dynamic Wallet Icon", "gDynamicWalletIcon", true, false); - UIWidgets::Tooltip("Changes the rupee in the wallet icon to match the wallet size you currently have"); - UIWidgets::PaddedEnhancementCheckbox("Always show dungeon entrances", "gAlwaysShowDungeonMinimapIcon", true, false); - UIWidgets::Tooltip("Always shows dungeon entrance icons on the minimap"); UIWidgets::PaddedText("Fix Vanishing Paths", true, false); UIWidgets::EnhancementCombobox("gDirtPathFix", zFightingOptions, 0); UIWidgets::Tooltip("Disabled: Paths vanish more the higher the resolution (Z-fighting is based on resolution)\n" "Consistent: Certain paths vanish the same way in all resolutions\n" "No Vanish: Paths do not vanish, Link seems to sink in to some paths\n" "This might affect other decal effects\n"); - + UIWidgets::PaddedEnhancementSliderInt("Text Spacing: %d", "##TEXTSPACING", "gTextSpacing", 4, 6, "", 6, true, true, true); + UIWidgets::Tooltip("Space between text characters (useful for HD font textures)"); ImGui::EndMenu(); } @@ -922,9 +930,9 @@ namespace GameMenuBar { if (ImGui::BeginMenu("Restoration")) { - UIWidgets::PaddedEnhancementCheckbox("Hide Build Info", "gHideBuildInfo", true, false); - UIWidgets::Tooltip("Hides the game version and build details in the boot logo start screen"); - UIWidgets::EnhancementCheckbox("Red Ganon blood", "gRedGanonBlood"); + UIWidgets::EnhancementCheckbox("Authentic Logo Screen", "gAuthenticLogo"); + UIWidgets::Tooltip("Hide the game version and build details and display the authentic model and texture on the boot logo start screen"); + UIWidgets::PaddedEnhancementCheckbox("Red Ganon blood", "gRedGanonBlood", true, false); UIWidgets::Tooltip("Restore the original red blood from NTSC 1.0/1.1. Disable for green blood"); UIWidgets::PaddedEnhancementCheckbox("Fish while hovering", "gHoverFishing", true, false); UIWidgets::Tooltip("Restore a bug from NTSC 1.0 that allows casting the Fishing Rod while using the Hover Boots"); @@ -941,7 +949,30 @@ namespace GameMenuBar { ImGui::EndMenu(); } - UIWidgets::PaddedSeparator(); + UIWidgets::Spacer(0); + + if (ImGui::BeginMenu("Extra Modes")) { + UIWidgets::PaddedEnhancementCheckbox("Ivan the Fairy (Coop Mode)", "gIvanCoopModeEnabled", true, false); + UIWidgets::Tooltip("Enables Ivan the Fairy upon the next map change. Player 2 can control Ivan and " + "press the C-Buttons to use items and mess with Player 1!"); + + UIWidgets::Spacer(0); + + UIWidgets::PaddedEnhancementCheckbox("Rupee Dash Mode", "gRupeeDash", true, false); + + if (CVarGetInteger("gRupeeDash", 0)) { + UIWidgets::Tooltip("Rupees reduced over time, Link suffers damage when the count hits 0."); + UIWidgets::PaddedEnhancementSliderInt( + "Rupee Dash Interval: %d", "##DashInterval", "gDashInterval", 3, 5, "", 5, true, true, false, + !CVarGetInteger("gRupeeDash", 0), + "This option is disabled because \"Rupee Dash Mode\" is turned off"); + UIWidgets::Tooltip("Interval between Rupee reduction in Rupee Dash Mode"); + } + + ImGui::EndMenu(); + } + + UIWidgets::PaddedSeparator(false, true); // Autosave enum value of 1 is the default in presets and the old checkbox "on" state for backwards compatibility UIWidgets::PaddedText("Autosave", false, true); diff --git a/soh/soh/GbiWrap.cpp b/soh/soh/GbiWrap.cpp index e06f802bc..074a638e7 100644 --- a/soh/soh/GbiWrap.cpp +++ b/soh/soh/GbiWrap.cpp @@ -21,6 +21,7 @@ uint16_t ResourceMgr_LoadTexWidthByName(char* texPath); uint16_t ResourceMgr_LoadTexHeightByName(char* texPath); size_t GetResourceTexSizeByName(const char* name); char* ResourceMgr_LoadTexOrDListByName(char* filePath); +char* ResourceMgr_LoadIfDListByName(char* filePath); char* ResourceMgr_LoadPlayerAnimByName(char* animPath); char* ResourceMgr_GetNameByCRC(uint64_t crc, char* alloc); Gfx* ResourceMgr_LoadGfxByCRC(uint64_t crc); @@ -30,6 +31,7 @@ Vtx* ResourceMgr_LoadVtxByName(char* path); CollisionHeader* ResourceMgr_LoadColByName(char* path); uint64_t GetPerfCounter(); int ResourceMgr_OTRSigCheck(char* imgData); +void ResourceMgr_PushCurrentDirectory(char* path); } @@ -39,8 +41,30 @@ extern "C" void gSPSegment(void* value, int segNum, uintptr_t target) { int res = ResourceMgr_OTRSigCheck(imgData); - if (res) + // OTRTODO: Disabled for now to fix an issue with HD Textures. + // With HD textures, we need to pass the path to F3D, not the raw texture data. + // Otherwise the needed metadata is not available for proper rendering... + // This should *not* cause any crashes, but some testing may be needed... + // UPDATE: To maintain compatability it will still do the old behavior if the resource is a display list. + // That should not affect HD textures. + if (res) { + uintptr_t desiredTarget = (uintptr_t)ResourceMgr_LoadIfDListByName(imgData); + + if (desiredTarget != NULL) + target = desiredTarget; + } + + __gSPSegment(value, segNum, target); +} + +extern "C" void gSPSegmentLoadRes(void* value, int segNum, uintptr_t target) { + char* imgData = (char*)target; + + int res = ResourceMgr_OTRSigCheck(imgData); + + if (res) { target = (uintptr_t)ResourceMgr_LoadTexOrDListByName(imgData); + } __gSPSegment(value, segNum, target); } @@ -57,8 +81,12 @@ extern "C" void gDPSetTextureImageFB(Gfx* pkt, u32 format, u32 size, u32 width, extern "C" void gSPDisplayList(Gfx* pkt, Gfx* dl) { char* imgData = (char*)dl; - if (ResourceMgr_OTRSigCheck(imgData) == 1) + if (ResourceMgr_OTRSigCheck(imgData) == 1) { + + //ResourceMgr_PushCurrentDirectory(imgData); + //gsSPPushCD(pkt++, imgData); dl = ResourceMgr_LoadGfxByName(imgData); + } __gSPDisplayList(pkt, dl); } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 988810659..a3940504a 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1,4 +1,4 @@ -#include "OTRGlobals.h" +#include "OTRGlobals.h" #include "OTRAudio.h" #include #include @@ -694,7 +694,7 @@ extern "C" uint32_t GetGIID(uint32_t itemID) { } extern "C" void OTRExtScanner() { - auto lst = *OTRGlobals::Instance->context->GetResourceManager()->GetArchive()->ListFiles("*.*").get(); + auto lst = *OTRGlobals::Instance->context->GetResourceManager()->GetArchive()->ListFiles("*").get(); for (auto& rPath : lst) { std::vector raw = StringHelper::Split(rPath, "."); @@ -834,14 +834,16 @@ extern "C" void Graph_ProcessFrame(void (*run_one_game_iter)(void)) { OTRGlobals::Instance->context->MainLoop(run_one_game_iter); } +extern bool ShouldClearTextureCacheAtEndOfFrame; + extern "C" void Graph_StartFrame() { #ifndef __WIIU__ - // Why -1? + using Ship::KbScancode; int32_t dwScancode = OTRGlobals::Instance->context->GetLastScancode(); OTRGlobals::Instance->context->SetLastScancode(-1); - switch (dwScancode - 1) { - case SDL_SCANCODE_F5: { + switch (dwScancode) { + case KbScancode::LUS_KB_F5: { const unsigned int slot = OTRGlobals::Instance->gSaveStateMgr->GetCurrentSlot(); const SaveStateReturn stateReturn = OTRGlobals::Instance->gSaveStateMgr->AddRequest({ slot, RequestType::SAVE }); @@ -858,7 +860,7 @@ extern "C" void Graph_StartFrame() { } break; } - case SDL_SCANCODE_F6: { + case KbScancode::LUS_KB_F6: { unsigned int slot = OTRGlobals::Instance->gSaveStateMgr->GetCurrentSlot(); slot++; if (slot > 5) { @@ -868,7 +870,7 @@ extern "C" void Graph_StartFrame() { SPDLOG_INFO("Set SaveState slot to {}.", slot); break; } - case SDL_SCANCODE_F7: { + case KbScancode::LUS_KB_F7: { const unsigned int slot = OTRGlobals::Instance->gSaveStateMgr->GetCurrentSlot(); const SaveStateReturn stateReturn = OTRGlobals::Instance->gSaveStateMgr->AddRequest({ slot, RequestType::LOAD }); @@ -892,9 +894,16 @@ extern "C" void Graph_StartFrame() { break; } - case SDL_SCANCODE_F9: { + case KbScancode::LUS_KB_F9: { // Toggle TTS CVarSetInteger("gA11yTTS", !CVarGetInteger("gA11yTTS", 0)); + break; + } + case KbScancode::LUS_KB_TAB: { + // Toggle HD Assets + CVarSetInteger("gAltAssets", !CVarGetInteger("gAltAssets", 0)); + ShouldClearTextureCacheAtEndOfFrame = true; + break; } } #endif @@ -963,6 +972,12 @@ extern "C" void Graph_ProcessGfxCommands(Gfx* commands) { } } + if (ShouldClearTextureCacheAtEndOfFrame) { + gfx_texture_cache_clear(); + Ship::SkeletonPatcher::UpdateSkeletons(); + ShouldClearTextureCacheAtEndOfFrame = false; + } + // OTRTODO: FIGURE OUT END FRAME POINT /* if (OTRGlobals::Instance->context->lastScancode != -1) OTRGlobals::Instance->context->lastScancode = -1;*/ @@ -1036,6 +1051,7 @@ extern "C" void ResourceMgr_DirtyDirectory(const char* resName) { } // OTRTODO: There is probably a more elegant way to go about this... +// Kenix: This is definitely leaking memory when it's called. extern "C" char** ResourceMgr_ListFiles(const char* searchMask, int* resultSize) { auto lst = OTRGlobals::Instance->context->GetResourceManager()->GetArchive()->ListFiles(searchMask); char** result = (char**)malloc(lst->size() * sizeof(char*)); @@ -1051,6 +1067,15 @@ extern "C" char** ResourceMgr_ListFiles(const char* searchMask, int* resultSize) return result; } +extern "C" uint8_t ResourceMgr_FileExists(const char* filePath) { + std::string path = filePath; + if(path.substr(0, 7) == "__OTR__"){ + path = path.substr(7); + } + + return ExtensionCache.contains(path); +} + extern "C" void ResourceMgr_LoadFile(const char* resName) { OTRGlobals::Instance->context->GetResourceManager()->LoadResource(resName); } @@ -1095,7 +1120,7 @@ extern "C" uint8_t ResourceMgr_ResourceIsBackground(char* texPath) { return res->InitData->Type == Ship::ResourceType::SOH_Background; } -extern "C" char* ResourceMgr_LoadJPEG(char* data, int dataSize) +extern "C" char* ResourceMgr_LoadJPEG(char* data, size_t dataSize) { static char* finalBuffer = 0; @@ -1149,6 +1174,15 @@ extern "C" char* ResourceMgr_LoadTexOrDListByName(const char* filePath) { } } +extern "C" char* ResourceMgr_LoadIfDListByName(const char* filePath) { + auto res = GetResourceByNameHandlingMQ(filePath); + + if (res->InitData->Type == Ship::ResourceType::DisplayList) + return (char*)&((std::static_pointer_cast(res))->Instructions[0]); + + return nullptr; +} + extern "C" Sprite* GetSeedTexture(uint8_t index) { return OTRGlobals::Instance->gRandomizer->GetSeedTexture(index); } @@ -1159,6 +1193,11 @@ extern "C" char* ResourceMgr_LoadPlayerAnimByName(const char* animPath) { return (char*)&anim->limbRotData[0]; } +extern "C" void ResourceMgr_PushCurrentDirectory(char* path) +{ + gfx_push_current_dir(path); +} + extern "C" Gfx* ResourceMgr_LoadGfxByName(const char* path) { auto res = std::static_pointer_cast(GetResourceByNameHandlingMQ(path)); @@ -1351,8 +1390,29 @@ extern "C" AnimationHeaderCommon* ResourceMgr_LoadAnimByName(const char* path) { return (AnimationHeaderCommon*)GetResourceDataByName(path, false); } -extern "C" SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path) { - return (SkeletonHeader*)GetResourceDataByName(path, false); +extern "C" SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path, SkelAnime* skelAnime) +{ + SkeletonHeader* skelHeader = (SkeletonHeader*)GetResourceDataByName(path, false); + + // This function is only called when a skeleton is initialized. + // Therefore we can take this oppurtunity to take note of the Skeleton that is created... + if (skelAnime != nullptr) { + auto stringPath = std::string(path); + Ship::SkeletonPatcher::RegisterSkeleton(stringPath, skelAnime); + } + + + return skelHeader; +} + +extern "C" void ResourceMgr_UnregisterSkeleton(SkelAnime* skelAnime) { + if (skelAnime != nullptr) + Ship::SkeletonPatcher::UnregisterSkeleton(skelAnime); +} + +extern "C" void ResourceMgr_ClearSkeletons(SkelAnime* skelAnime) { + if (skelAnime != nullptr) + Ship::SkeletonPatcher::ClearSkeletons(); } extern "C" s32* ResourceMgr_LoadCSByName(const char* path) { @@ -1916,3 +1976,7 @@ extern "C" void EntranceTracker_SetCurrentGrottoID(s16 entranceIndex) { extern "C" void EntranceTracker_SetLastEntranceOverride(s16 entranceIndex) { SetLastEntranceOverrideForTracker(entranceIndex); } + +extern "C" void Gfx_RegisterBlendedTexture(const char* name, u8* mask, u8* replacement) { + gfx_register_blended_texture(name, mask, replacement); +} diff --git a/soh/soh/OTRGlobals.h b/soh/soh/OTRGlobals.h index 830d4f9e3..d1e69843f 100644 --- a/soh/soh/OTRGlobals.h +++ b/soh/soh/OTRGlobals.h @@ -60,11 +60,12 @@ uint32_t ResourceMgr_GetNumGameVersions(); uint32_t ResourceMgr_GetGameVersion(int index); void ResourceMgr_LoadDirectory(const char* resName); char** ResourceMgr_ListFiles(const char* searchMask, int* resultSize); +uint8_t ResourceMgr_FileExists(const char* resName); char* GetResourceDataByNameHandlingMQ(const char* path); void ResourceMgr_LoadFile(const char* resName); char* ResourceMgr_LoadFileFromDisk(const char* filePath); uint8_t ResourceMgr_ResourceIsBackground(char* texPath); -char* ResourceMgr_LoadJPEG(char* data, int dataSize); +char* ResourceMgr_LoadJPEG(char* data, size_t dataSize); uint16_t ResourceMgr_LoadTexWidthByName(char* texPath); uint16_t ResourceMgr_LoadTexHeightByName(char* texPath); char* ResourceMgr_LoadTexOrDListByName(const char* filePath); @@ -87,7 +88,9 @@ void Ctx_ReadSaveFile(uintptr_t addr, void* dramAddr, size_t size); void Ctx_WriteSaveFile(uintptr_t addr, void* dramAddr, size_t size); uint64_t GetPerfCounter(); -struct SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path); +struct SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path, SkelAnime* skelAnime); +void ResourceMgr_UnregisterSkeleton(SkelAnime* skelAnime); +void ResourceMgr_ClearSkeletons(); s32* ResourceMgr_LoadCSByName(const char* path); int ResourceMgr_OTRSigCheck(char* imgData); uint64_t osGetTime(void); @@ -139,6 +142,7 @@ void Entrance_ClearEntranceTrackingData(void); void Entrance_InitEntranceTrackingData(void); void EntranceTracker_SetCurrentGrottoID(s16 entranceIndex); void EntranceTracker_SetLastEntranceOverride(s16 entranceIndex); +void Gfx_RegisterBlendedTexture(const char* name, u8* mask, u8* replacement); uint32_t GetGIID(uint32_t itemID); #endif diff --git a/soh/soh/resource/importer/SkeletonFactory.cpp b/soh/soh/resource/importer/SkeletonFactory.cpp index 3bca7873d..a10702f8a 100644 --- a/soh/soh/resource/importer/SkeletonFactory.cpp +++ b/soh/soh/resource/importer/SkeletonFactory.cpp @@ -26,6 +26,28 @@ std::shared_ptr SkeletonFactory::ReadResource(std::shared_ptr SkeletonFactory::ReadResourceXML(std::shared_ptr resourceMgr, + std::shared_ptr initData, + tinyxml2::XMLElement* reader) { + auto resource = std::make_shared(resourceMgr, initData); + std::shared_ptr factory = nullptr; + + switch ((Version)resource->InitData->ResourceVersion) { + case Version::Deckard: + factory = std::make_shared(); + break; + } + + if (factory == nullptr) { + SPDLOG_ERROR("Failed to load Skeleton with version {}", resource->InitData->ResourceVersion); + return nullptr; + } + + factory->ParseFileXML(reader, resource); + + return resource; +} + void SkeletonFactoryV0::ParseFileBinary(std::shared_ptr reader, std::shared_ptr resource) { @@ -77,4 +99,59 @@ void SkeletonFactoryV0::ParseFileBinary(std::shared_ptr reader, SPDLOG_ERROR("unknown skeleton type {}", (uint32_t)skeleton->type); } } +void SkeletonFactoryV0::ParseFileXML(tinyxml2::XMLElement* reader, std::shared_ptr resource) +{ + std::shared_ptr skel = std::static_pointer_cast(resource); + + std::string skeletonType = reader->Attribute("Type"); + // std::string skeletonLimbType = reader->Attribute("LimbType"); + int numLimbs = reader->IntAttribute("LimbCount"); + int numDLs = reader->IntAttribute("DisplayListCount"); + + if (skeletonType == "Flex") { + skel->type = SkeletonType::Flex; + } else if (skeletonType == "Curve") { + skel->type = SkeletonType::Curve; + } else if (skeletonType == "Normal") { + skel->type = SkeletonType::Normal; + } + + skel->type = SkeletonType::Flex; + skel->limbType = LimbType::LOD; + + // if (skeletonLimbType == "Standard") + // skel->limbType = LimbType::Standard; + // else if (skeletonLimbType == "LOD") + // skel->limbType = LimbType::LOD; + // else if (skeletonLimbType == "Curve") + // skel->limbType = LimbType::Curve; + // else if (skeletonLimbType == "Skin") + // skel->limbType = LimbType::Skin; + // else if (skeletonLimbType == "Legacy") + // Sskel->limbType = LimbType::Legacy; + + auto child = reader->FirstChildElement(); + + skel->limbCount = numLimbs; + skel->dListCount = numDLs; + + while (child != nullptr) { + std::string childName = child->Name(); + + if (childName == "SkeletonLimb") { + std::string limbName = child->Attribute("Path"); + skel->limbTable.push_back(limbName); + + auto limb = GetResourceDataByName(limbName.c_str(), true); + skel->skeletonHeaderSegments.push_back(limb); + } + + child = child->NextSiblingElement(); + } + + skel->skeletonData.flexSkeletonHeader.sh.limbCount = skel->limbCount; + skel->skeletonData.flexSkeletonHeader.sh.segment = (void**)skel->skeletonHeaderSegments.data(); + skel->skeletonData.flexSkeletonHeader.dListCount = skel->dListCount; +} + } // namespace Ship diff --git a/soh/soh/resource/importer/SkeletonFactory.h b/soh/soh/resource/importer/SkeletonFactory.h index 56cb80dad..09e293a97 100644 --- a/soh/soh/resource/importer/SkeletonFactory.h +++ b/soh/soh/resource/importer/SkeletonFactory.h @@ -10,11 +10,16 @@ class SkeletonFactory : public ResourceFactory std::shared_ptr ReadResource(std::shared_ptr resourceMgr, std::shared_ptr initData, std::shared_ptr reader) override; + std::shared_ptr ReadResourceXML(std::shared_ptr resourceMgr, + std::shared_ptr initData, + tinyxml2::XMLElement* reader) override; }; class SkeletonFactoryV0 : public ResourceVersionFactory { public: void ParseFileBinary(std::shared_ptr reader, std::shared_ptr resource) override; + void ParseFileXML(tinyxml2::XMLElement* reader, std::shared_ptr resource) override; }; }; // namespace Ship + diff --git a/soh/soh/resource/importer/SkeletonLimbFactory.cpp b/soh/soh/resource/importer/SkeletonLimbFactory.cpp index 652f2450f..4b3ce4885 100644 --- a/soh/soh/resource/importer/SkeletonLimbFactory.cpp +++ b/soh/soh/resource/importer/SkeletonLimbFactory.cpp @@ -26,6 +26,28 @@ std::shared_ptr SkeletonLimbFactory::ReadResource(std::shared_ptr SkeletonLimbFactory::ReadResourceXML(std::shared_ptr resourceMgr, + std::shared_ptr initData, + tinyxml2::XMLElement* reader) { + auto resource = std::make_shared(resourceMgr, initData); + std::shared_ptr factory = nullptr; + + switch ((Version)resource->InitData->ResourceVersion) { + case Version::Deckard: + factory = std::make_shared(); + break; + } + + if (factory == nullptr) { + SPDLOG_ERROR("Failed to load Skeleton Limb with version {}", resource->InitData->ResourceVersion); + return nullptr; + } + + factory->ParseFileXML(reader, resource); + + return resource; +} + void Ship::SkeletonLimbFactoryV0::ParseFileBinary(std::shared_ptr reader, std::shared_ptr resource) { @@ -190,4 +212,59 @@ void Ship::SkeletonLimbFactoryV0::ParseFileBinary(std::shared_ptr } } } +void SkeletonLimbFactoryV0::ParseFileXML(tinyxml2::XMLElement* reader, std::shared_ptr resource) +{ + std::shared_ptr skelLimb = std::static_pointer_cast(resource); + + std::string limbType = reader->Attribute("Type"); + + // OTRTODO + skelLimb->limbType = LimbType::LOD; + + // skelLimb->legTransX = reader->FloatAttribute("LegTransX"); + // skelLimb->legTransY = reader->FloatAttribute("LegTransY"); + // skelLimb->legTransZ = reader->FloatAttribute("LegTransZ"); + skelLimb->rotX = reader->IntAttribute("RotX"); + skelLimb->rotY = reader->IntAttribute("RotY"); + skelLimb->rotZ = reader->IntAttribute("RotZ"); + + // skelLimb->transX = reader->IntAttribute("TransX"); + // skelLimb->transY = reader->IntAttribute("TransY"); + // skelLimb->transZ = reader->IntAttribute("TransZ"); + + skelLimb->transX = (int)reader->FloatAttribute("LegTransX"); + skelLimb->transY = (int)reader->FloatAttribute("LegTransY"); + skelLimb->transZ = (int)reader->FloatAttribute("LegTransZ"); + + skelLimb->childIndex = reader->IntAttribute("ChildIndex"); + skelLimb->siblingIndex = reader->IntAttribute("SiblingIndex"); + + // skelLimb->childPtr = reader->Attribute("ChildLimb"); + // skelLimb->siblingPtr = reader->Attribute("SiblingLimb"); + skelLimb->dListPtr = reader->Attribute("DisplayList1"); + + if (std::string(reader->Attribute("DisplayList1")) == "gEmptyDL") { + skelLimb->dListPtr = ""; + } + + auto& limbData = skelLimb->limbData; + + limbData.lodLimb.jointPos.x = skelLimb->transX; + limbData.lodLimb.jointPos.y = skelLimb->transY; + limbData.lodLimb.jointPos.z = skelLimb->transZ; + + if (skelLimb->dListPtr != "") { + limbData.lodLimb.dLists[0] = (Gfx*)GetResourceDataByName((const char*)skelLimb->dListPtr.c_str(), true); + } else { + limbData.lodLimb.dLists[0] = nullptr; + } + + limbData.lodLimb.dLists[1] = nullptr; + + limbData.lodLimb.child = skelLimb->childIndex; + limbData.lodLimb.sibling = skelLimb->siblingIndex; + + // skelLimb->dList2Ptr = reader->Attribute("DisplayList2"); +} + } // namespace Ship diff --git a/soh/soh/resource/importer/SkeletonLimbFactory.h b/soh/soh/resource/importer/SkeletonLimbFactory.h index 517ab4a85..6d33b72e0 100644 --- a/soh/soh/resource/importer/SkeletonLimbFactory.h +++ b/soh/soh/resource/importer/SkeletonLimbFactory.h @@ -10,11 +10,16 @@ class SkeletonLimbFactory : public ResourceFactory std::shared_ptr ReadResource(std::shared_ptr resourceMgr, std::shared_ptr initData, std::shared_ptr reader) override; + std::shared_ptr ReadResourceXML(std::shared_ptr resourceMgr, + std::shared_ptr initData, + tinyxml2::XMLElement* reader) override; }; class SkeletonLimbFactoryV0 : public ResourceVersionFactory { public: void ParseFileBinary(std::shared_ptr reader, std::shared_ptr resource) override; + void ParseFileXML(tinyxml2::XMLElement* reader, std::shared_ptr resource) override; }; }; // namespace Ship + diff --git a/soh/soh/resource/importer/TextFactory.cpp b/soh/soh/resource/importer/TextFactory.cpp index a73f350f9..5718de3f2 100644 --- a/soh/soh/resource/importer/TextFactory.cpp +++ b/soh/soh/resource/importer/TextFactory.cpp @@ -28,6 +28,28 @@ std::shared_ptr TextFactory::ReadResource(std::shared_ptr return resource; } +std::shared_ptr TextFactory::ReadResourceXML(std::shared_ptr resourceMgr, + std::shared_ptr initData, + tinyxml2::XMLElement* reader) { + auto resource = std::make_shared(resourceMgr, initData); + std::shared_ptr factory = nullptr; + + switch ((Version)resource->InitData->ResourceVersion) { + case Version::Deckard: + factory = std::make_shared(); + break; + } + + if (factory == nullptr) { + SPDLOG_ERROR("Failed to load Text with version {}", resource->InitData->ResourceVersion); + return nullptr; + } + + factory->ParseFileXML(reader, resource); + + return resource; +} + void Ship::TextFactoryV0::ParseFileBinary(std::shared_ptr reader, std::shared_ptr resource) { std::shared_ptr text = std::static_pointer_cast(resource); @@ -46,4 +68,28 @@ void Ship::TextFactoryV0::ParseFileBinary(std::shared_ptr reader, text->messages.push_back(entry); } } +void TextFactoryV0::ParseFileXML(tinyxml2::XMLElement* reader, std::shared_ptr resource) { + std::shared_ptr txt = std::static_pointer_cast(resource); + + auto child = reader->FirstChildElement(); + + while (child != nullptr) { + std::string childName = child->Name(); + + if (childName == "TextEntry") { + MessageEntry entry; + entry.id = child->IntAttribute("ID"); + entry.textboxType = child->IntAttribute("TextboxType"); + entry.textboxYPos = child->IntAttribute("TextboxYPos"); + entry.msg = child->Attribute("Message"); + entry.msg += "\x2"; + + txt->messages.push_back(entry); + int bp = 0; + } + + child = child->NextSiblingElement(); + } +} + } // namespace Ship diff --git a/soh/soh/resource/importer/TextFactory.h b/soh/soh/resource/importer/TextFactory.h index b1eac4a6a..6f67daca7 100644 --- a/soh/soh/resource/importer/TextFactory.h +++ b/soh/soh/resource/importer/TextFactory.h @@ -10,11 +10,16 @@ class TextFactory : public ResourceFactory std::shared_ptr ReadResource(std::shared_ptr resourceMgr, std::shared_ptr initData, std::shared_ptr reader) override; + std::shared_ptr ReadResourceXML(std::shared_ptr resourceMgr, + std::shared_ptr initData, + tinyxml2::XMLElement* reader) override; }; class TextFactoryV0 : public ResourceVersionFactory { public: void ParseFileBinary(std::shared_ptr reader, std::shared_ptr resource) override; + void ParseFileXML(tinyxml2::XMLElement* reader, std::shared_ptr resource) override; }; }; // namespace Ship + diff --git a/soh/soh/resource/type/Skeleton.cpp b/soh/soh/resource/type/Skeleton.cpp index 137041c67..52f5f5a5d 100644 --- a/soh/soh/resource/type/Skeleton.cpp +++ b/soh/soh/resource/type/Skeleton.cpp @@ -1,4 +1,7 @@ +#include "resource/ResourceMgr.h" #include "Skeleton.h" +#include "soh/OTRGlobals.h" +#include "libultraship/libultraship.h" namespace Ship { void* Skeleton::GetPointer() { @@ -17,4 +20,61 @@ size_t Skeleton::GetPointerSize() { return 0; } } + +std::vector SkeletonPatcher::skeletons; + + +void SkeletonPatcher::RegisterSkeleton(std::string& path, SkelAnime* skelAnime) { + SkeletonPatchInfo info; + + info.skelAnime = skelAnime; + + static const std::string sOtr = "__OTR__"; + + if (path.starts_with(sOtr)) { + path = path.substr(sOtr.length()); + } + + // Determine if we're using an alternate skeleton + if (path.starts_with(Ship::Resource::gAltAssetPrefix)) { + info.vanillaSkeletonPath = path.substr(Ship::Resource::gAltAssetPrefix.length(), + path.size() - Ship::Resource::gAltAssetPrefix.length()); + } else { + info.vanillaSkeletonPath = path; + } + + skeletons.push_back(info); +} + +void SkeletonPatcher::UnregisterSkeleton(SkelAnime* skelAnime) { + + // TODO: Should probably just use a dictionary here... + for (int i = 0; i < skeletons.size(); i++) + { + auto skel = skeletons[i]; + + if (skel.skelAnime == skelAnime) { + skeletons.erase(skeletons.begin() + i); + break; + } + } +} +void SkeletonPatcher::ClearSkeletons() +{ + skeletons.clear(); +} + +void SkeletonPatcher::UpdateSkeletons() { + bool isHD = CVarGetInteger("gAltAssets", 0); + for (auto skel : skeletons) + { + Skeleton* newSkel = + (Skeleton*)OTRGlobals::Instance->context->GetResourceManager() + ->LoadResource((isHD ? Ship::Resource::gAltAssetPrefix : "") + skel.vanillaSkeletonPath, true) + .get(); + + if (newSkel != nullptr) + skel.skelAnime->skeleton = newSkel->skeletonData.skeletonHeader.segment; + } +} } // namespace Ship diff --git a/soh/soh/resource/type/Skeleton.h b/soh/soh/resource/type/Skeleton.h index eef2bca58..e6f7cd91f 100644 --- a/soh/soh/resource/type/Skeleton.h +++ b/soh/soh/resource/type/Skeleton.h @@ -3,6 +3,7 @@ #include #include "Resource.h" #include "SkeletonLimb.h" +#include namespace Ship { @@ -68,4 +69,23 @@ class Skeleton : public Resource { std::vector limbTable; std::vector skeletonHeaderSegments; }; + +// TODO: CLEAN THIS UP LATER +struct SkeletonPatchInfo +{ + SkelAnime* skelAnime; + std::string vanillaSkeletonPath; +}; + +class SkeletonPatcher { + public: + static void RegisterSkeleton(std::string& path, SkelAnime* skelAnime); + static void UnregisterSkeleton(SkelAnime* skelAnime); + static void ClearSkeletons(); + static void UpdateSkeletons(); + + static std::vector skeletons; +}; + + } // namespace Ship \ No newline at end of file diff --git a/soh/soh/z_message_OTR.cpp b/soh/soh/z_message_OTR.cpp index bb3437216..bb51843a4 100644 --- a/soh/soh/z_message_OTR.cpp +++ b/soh/soh/z_message_OTR.cpp @@ -22,6 +22,8 @@ MessageTableEntry* OTRMessage_LoadTable(const char* filePath, bool isNES) { return nullptr; // Allocate room for an additional message + // OTRTODO: Should not be malloc'ing here. It's fine for now since we check elsewhere that the message table is + // already null. MessageTableEntry* table = (MessageTableEntry*)malloc(sizeof(MessageTableEntry) * (file->messages.size() + 1)); for (size_t i = 0; i < file->messages.size(); i++) { @@ -29,6 +31,8 @@ MessageTableEntry* OTRMessage_LoadTable(const char* filePath, bool isNES) { if (file->messages[i].id == 0x2066) { // Create a new message based on the Owl Text uint32_t kaeporaMsgSize = file->messages[i].msg.size(); + // OTRTODO: Should not be malloc'ing here. It's fine for now since we check elsewhere that the message table + // is already null. char* kaeporaOg = (char*)malloc(sizeof(char) * kaeporaMsgSize); char* kaeporaPatch = (char*)malloc(sizeof(char) * kaeporaMsgSize); file->messages[i].msg.copy(kaeporaOg, kaeporaMsgSize, 0); @@ -68,25 +72,38 @@ MessageTableEntry* OTRMessage_LoadTable(const char* filePath, bool isNES) { _message_0xFFFC_nes = (char*)file->messages[i].msg.c_str(); } - return table; + return table; } extern "C" void OTRMessage_Init() { - sNesMessageEntryTablePtr = OTRMessage_LoadTable("text/nes_message_data_static/nes_message_data_static", true); - sGerMessageEntryTablePtr = OTRMessage_LoadTable("text/ger_message_data_static/ger_message_data_static", false); - sFraMessageEntryTablePtr = OTRMessage_LoadTable("text/fra_message_data_static/fra_message_data_static", false); + // OTRTODO: Added a lot of null checks here so that we don't malloc the table multiple times causing a memory leak. + // We really ought to fix the implementation such that we aren't malloc'ing new tables. + // Once we fix the implementation, remove these NULL checks. + if (sNesMessageEntryTablePtr == NULL) { + sNesMessageEntryTablePtr = OTRMessage_LoadTable("text/nes_message_data_static/nes_message_data_static", true); + } + if (sGerMessageEntryTablePtr == NULL) { + sGerMessageEntryTablePtr = OTRMessage_LoadTable("text/ger_message_data_static/ger_message_data_static", false); + } + if (sFraMessageEntryTablePtr == NULL) { + sFraMessageEntryTablePtr = OTRMessage_LoadTable("text/fra_message_data_static/fra_message_data_static", false); + } - auto file2 = std::static_pointer_cast(OTRGlobals::Instance->context->GetResourceManager()->LoadResource("text/staff_message_data_static/staff_message_data_static")); + if (sStaffMessageEntryTablePtr == NULL) { + auto file2 = + std::static_pointer_cast(OTRGlobals::Instance->context->GetResourceManager()->LoadResource( + "text/staff_message_data_static/staff_message_data_static")); + // OTRTODO: Should not be malloc'ing here. It's fine for now since we check that the message table is already null. + sStaffMessageEntryTablePtr = (MessageTableEntry*)malloc(sizeof(MessageTableEntry) * file2->messages.size()); - sStaffMessageEntryTablePtr = (MessageTableEntry*)malloc(sizeof(MessageTableEntry) * file2->messages.size()); - - for (size_t i = 0; i < file2->messages.size(); i++) - { - sStaffMessageEntryTablePtr[i].textId = file2->messages[i].id; - sStaffMessageEntryTablePtr[i].typePos = (file2->messages[i].textboxType << 4) | file2->messages[i].textboxYPos; - sStaffMessageEntryTablePtr[i].segment = file2->messages[i].msg.c_str(); - sStaffMessageEntryTablePtr[i].msgSize = file2->messages[i].msg.size(); + for (size_t i = 0; i < file2->messages.size(); i++) { + sStaffMessageEntryTablePtr[i].textId = file2->messages[i].id; + sStaffMessageEntryTablePtr[i].typePos = + (file2->messages[i].textboxType << 4) | file2->messages[i].textboxYPos; + sStaffMessageEntryTablePtr[i].segment = file2->messages[i].msg.c_str(); + sStaffMessageEntryTablePtr[i].msgSize = file2->messages[i].msg.size(); + } } CustomMessageManager::Instance->AddCustomMessageTable(customMessageTableID); diff --git a/soh/src/code/game.c b/soh/src/code/game.c index 546901d3e..26b26e94c 100644 --- a/soh/src/code/game.c +++ b/soh/src/code/game.c @@ -1,6 +1,7 @@ #include #include "global.h" #include "vt.h" +#include "libultraship/bridge.h" #include "soh/Enhancements/game-interactor/GameInteractor.h" SpeedMeter D_801664D0; @@ -13,6 +14,7 @@ u16 sLastButtonPressed; // Forward declared, because this in a C++ header. int gfx_create_framebuffer(uint32_t width, uint32_t height); +void gfx_texture_cache_clear(); void GameState_FaultPrint(void) { static char sBtnChars[] = "ABZSuldr*+LRudlr"; @@ -459,6 +461,14 @@ void GameState_Destroy(GameState* gameState) { Fault_RemoveClient(&sGameFaultClient); osSyncPrintf("game デストラクタ終了\n"); // "game destructor end" + + // Performing clear skeletons before unload resources fixes an actor heap corruption crash due to the skeleton patching system. + ResourceMgr_ClearSkeletons(); + + if (CVarGetInteger("gAltAssets", 0)) { + UnloadResourceDirectory("alt/*"); + gfx_texture_cache_clear(); + } } GameStateFunc GameState_GetInit(GameState* gameState) { diff --git a/soh/src/code/gfxprint.c b/soh/src/code/gfxprint.c index 2dfc21da9..f7aa20a76 100644 --- a/soh/src/code/gfxprint.c +++ b/soh/src/code/gfxprint.c @@ -128,6 +128,7 @@ u8 sGfxPrintFontData[(16 * 256) / 2] = { // Can be used to set GFXP_FLAG_ENLARGE by default static u8 sDefaultSpecialFlags; +static const char rGfxPrintFontData[] = "__OTR__alt/textures/font/sGfxPrintFontData"; void GfxPrint_Setup(GfxPrint* this) { s32 width = 16; @@ -140,13 +141,26 @@ void GfxPrint_Setup(GfxPrint* this) { G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, G_AC_NONE | G_ZS_PRIM | G_RM_XLU_SURF | G_RM_XLU_SURF2); gDPSetCombineMode(this->dList++, G_CC_DECALRGBA, G_CC_DECALRGBA); - gDPLoadTextureBlock_4b(this->dList++, sGfxPrintFontData, G_IM_FMT_CI, width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + bool useAltTexture = ResourceMgr_FileExists(rGfxPrintFontData) && CVarGetInteger("gAltAssets", 0); + if (!useAltTexture) { + gDPLoadTextureBlock_4b(this->dList++, sGfxPrintFontData, G_IM_FMT_CI, width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + } else { + gDPLoadTextureBlock_4b(this->dList++, rGfxPrintFontData, G_IM_FMT_CI, width * 4, height, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + } + gDPLoadTLUT(this->dList++, 64, 256, sGfxPrintFontTLUT); for (i = 1; i < 4; i++) { - gDPSetTile(this->dList++, G_IM_FMT_CI, G_IM_SIZ_4b, 1, 0, i * 2, i, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + if (useAltTexture) { + gDPSetTile(this->dList++, G_IM_FMT_RGBA, G_IM_SIZ_4b, 1, 0, i * 2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + } else { + gDPSetTile(this->dList++, G_IM_FMT_CI, G_IM_SIZ_4b, 1, 0, i * 2, i, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + } gDPSetTileSize(this->dList++, i * 2, 0, 0, 60, 1020); } @@ -174,7 +188,7 @@ void GfxPrint_SetColor(GfxPrint* this, u32 r, u32 g, u32 b, u32 a) { } void GfxPrint_SetPosPx(GfxPrint* this, s32 x, s32 y) { - this->posX = this->baseX + (x * 4); + this->posX = this->baseX + (x * 4) + CVarGetInteger("gGfxPrintCharStartOffset", 0); this->posY = this->baseY + (y * 4); } @@ -189,6 +203,8 @@ void GfxPrint_SetBasePosPx(GfxPrint* this, s32 x, s32 y) { void GfxPrint_PrintCharImpl(GfxPrint* this, u8 c) { u32 tile = (c & 0xFF) * 2; + u8 offset = ((c * 2) & 0x7) / 2; + u8 useAltTexture = ResourceMgr_FileExists(rGfxPrintFontData) && CVarGetInteger("gAltAssets", 0); if (this->flags & GFXP_FLAG_UPDATE) { this->flags &= ~GFXP_FLAG_UPDATE; @@ -226,11 +242,12 @@ void GfxPrint_PrintCharImpl(GfxPrint* this, u8 c) { gSPTextureRectangle(this->dList++, (this->posX) << 1, (this->posY) << 1, (this->posX + 32) << 1, (this->posY + 32) << 1, tile, (u16)(c & 4) * 64, (u16)(c >> 3) * 256, 1 << 9, 1 << 9); } else { - gSPTextureRectangle(this->dList++, this->posX, this->posY, this->posX + 32, this->posY + 32, tile, - (u16)(c & 4) * 64, (u16)(c >> 3) * 256, 1 << 10, 1 << 10); + gSPTextureRectangle(this->dList++, this->posX, this->posY, this->posX + 32, this->posY + 32, + useAltTexture ? 0 : tile, (useAltTexture ? ((128 * 4) * offset) : 0) + (u16)((c & 4) * 64), + (u16)(c >> 3) * 256, 1 << 10, 1 << 10); } - this->posX += 32; + this->posX += CVarGetInteger("gGfxPrintCharSpacing", 32); } void GfxPrint_PrintStringWithSize(GfxPrint* this, const void* buffer, u32 charSize, u32 charCount) { diff --git a/soh/src/code/z_actor.c b/soh/src/code/z_actor.c index ae2db5b78..21d4e8702 100644 --- a/soh/src/code/z_actor.c +++ b/soh/src/code/z_actor.c @@ -799,9 +799,22 @@ void func_8002CDE4(PlayState* play, TitleCardContext* titleCtx) { void TitleCard_InitBossName(PlayState* play, TitleCardContext* titleCtx, void* texture, s16 x, s16 y, u8 width, u8 height, s16 hasTranslation) { - - if (ResourceMgr_OTRSigCheck(texture)) - texture = GetResourceDataByName(texture, false); + static char newName[512]; + + if (gSaveContext.language != LANGUAGE_ENG) { + size_t length = strlen(texture); + strcpy(newName, texture); + if (gSaveContext.language == LANGUAGE_FRA) { + newName[length - 6] = 'F'; + newName[length - 5] = 'R'; + newName[length - 4] = 'A'; + } else if (gSaveContext.language == LANGUAGE_GER) { + newName[length - 6] = 'G'; + newName[length - 5] = 'E'; + newName[length - 4] = 'R'; + } + texture = newName; + } titleCtx->texture = texture; titleCtx->isBossCard = true; @@ -1005,7 +1018,7 @@ void TitleCard_InitPlaceName(PlayState* play, TitleCardContext* titleCtx, void* } - char newName[512]; + static char newName[512]; if (gSaveContext.language != LANGUAGE_ENG) { size_t length = strlen(texture); @@ -1023,7 +1036,7 @@ void TitleCard_InitPlaceName(PlayState* play, TitleCardContext* titleCtx, void* texture = newName; } - titleCtx->texture = GetResourceDataByName(texture, false); + titleCtx->texture = texture; titleCtx->isBossCard = false; titleCtx->hasTranslation = false; titleCtx->x = x; @@ -1067,14 +1080,9 @@ void TitleCard_Update(PlayState* play, TitleCardContext* titleCtx) { void TitleCard_Draw(PlayState* play, TitleCardContext* titleCtx) { s32 width; s32 height; - s32 unused; s32 titleX; s32 doubleWidth; s32 titleY; - s32 titleSecondY; - s32 textureLanguageOffset; - s32 shiftTopY; - s32 shiftBottomY; if (titleCtx->alpha != 0) { width = titleCtx->width; @@ -1107,52 +1115,21 @@ void TitleCard_Draw(PlayState* play, TitleCardContext* titleCtx) { OPEN_DISPS(play->state.gfxCtx); - height = (width * height > 0x1000) ? 0x1000 / width : height; - titleSecondY = titleY + (height * 4); - - textureLanguageOffset = 0x0; - shiftTopY = 0x0; - shiftBottomY = 0x1000; - - //if this card is bosses cards, has translation and that is not using English language. - if (titleCtx->isBossCard && titleCtx->hasTranslation && gSaveContext.language != LANGUAGE_ENG) { - textureLanguageOffset = (width * height * gSaveContext.language); - if (gSaveContext.language == LANGUAGE_GER) { - shiftTopY = 0x400; - shiftBottomY = 0x1400; - } else if (gSaveContext.language == LANGUAGE_FRA) { - shiftTopY = 0x800; - shiftBottomY = 0x1800; - } - } - // WORLD_OVERLAY_DISP Goes over POLY_XLU_DISP but under POLY_KAL_DISP WORLD_OVERLAY_DISP = Gfx_SetupDL_52NoCD(WORLD_OVERLAY_DISP); gDPSetPrimColor(WORLD_OVERLAY_DISP++, 0, 0, (u8)titleCtx->intensityR, (u8)titleCtx->intensityG, (u8)titleCtx->intensityB, (u8)titleCtx->alpha); - gDPLoadTextureBlock(WORLD_OVERLAY_DISP++, (uintptr_t)titleCtx->texture + textureLanguageOffset + shiftTopY, G_IM_FMT_IA, + gDPLoadTextureBlock(WORLD_OVERLAY_DISP++, (uintptr_t)titleCtx->texture, G_IM_FMT_IA, G_IM_SIZ_8b, width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - //Removing the -1 there remove the gap between top and bottom textures. gSPWideTextureRectangle(WORLD_OVERLAY_DISP++, titleX, titleY, ((doubleWidth * 2) + titleX) - 4, titleY + (height * 4), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); height = titleCtx->height - height; - // If texture is bigger than 0x1000, display the rest - if (height > 0) { - gDPLoadTextureBlock(WORLD_OVERLAY_DISP++, (uintptr_t)titleCtx->texture + textureLanguageOffset + shiftBottomY, - G_IM_FMT_IA, - G_IM_SIZ_8b, width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, - G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - //Removing the -1 there remove the gap between top and bottom textures. - gSPWideTextureRectangle(WORLD_OVERLAY_DISP++, titleX, titleSecondY, ((doubleWidth * 2) + titleX) - 4, - titleSecondY + (height * 4), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - } - CLOSE_DISPS(play->state.gfxCtx); } } diff --git a/soh/src/code/z_cheap_proc.c b/soh/src/code/z_cheap_proc.c index a5d0a8bc9..cf52db2d3 100644 --- a/soh/src/code/z_cheap_proc.c +++ b/soh/src/code/z_cheap_proc.c @@ -6,7 +6,11 @@ void Gfx_DrawDListOpa(PlayState* play, Gfx* dlist) { Gfx_SetupDL_25Opa(play->state.gfxCtx); gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD); - gSPDisplayList(POLY_OPA_DISP++, dlist); + + if (ResourceMgr_OTRSigCheck(dlist) == 1) + gsSPPushCD(POLY_OPA_DISP++, dlist); + + gSPDisplayList(POLY_OPA_DISP++, dlist); CLOSE_DISPS(play->state.gfxCtx); } @@ -17,6 +21,10 @@ void Gfx_DrawDListXlu(PlayState* play, Gfx* dlist) { Gfx_SetupDL_25Xlu(play->state.gfxCtx); gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD); + + if (ResourceMgr_OTRSigCheck(dlist) == 1) + gsSPPushCD(POLY_XLU_DISP++, dlist); + gSPDisplayList(POLY_XLU_DISP++, dlist); CLOSE_DISPS(play->state.gfxCtx); diff --git a/soh/src/code/z_collision_check.c b/soh/src/code/z_collision_check.c index 785e68836..d04a097cf 100644 --- a/soh/src/code/z_collision_check.c +++ b/soh/src/code/z_collision_check.c @@ -3045,6 +3045,10 @@ void CollisionCheck_ApplyDamage(PlayState* play, CollisionCheckContext* colChkCt if (!(collider->acFlags & AC_HARD)) { collider->actor->colChkInfo.damage += damage; } + + if (CVarGetInteger("gIvanCoopModeEnabled", 0)) { + collider->actor->colChkInfo.damage *= GET_PLAYER(play)->ivanDamageMultiplier; + } } /** @@ -3649,7 +3653,7 @@ s32 CollisionCheck_CylSideVsLineSeg(f32 radius, f32 height, f32 offset, Vec3f* a * Gets damage from a sword strike using generic values, and returns 0 if the attack is * not sword-type. Used by bosses to require that a sword attack deal the killing blow. */ -u8 CollisionCheck_GetSwordDamage(s32 dmgFlags) { +u8 CollisionCheck_GetSwordDamage(s32 dmgFlags, PlayState* play) { u8 damage = 0; if (dmgFlags & 0x00400100) { @@ -3662,6 +3666,10 @@ u8 CollisionCheck_GetSwordDamage(s32 dmgFlags) { damage = 8; } + if (CVarGetInteger("gIvanCoopModeEnabled", 0)) { + damage *= GET_PLAYER(play)->ivanDamageMultiplier; + } + KREG(7) = damage; return damage; } diff --git a/soh/src/code/z_construct.c b/soh/src/code/z_construct.c index 44b0ee5e7..1aae3fcf8 100644 --- a/soh/src/code/z_construct.c +++ b/soh/src/code/z_construct.c @@ -41,18 +41,16 @@ void func_801109B0(PlayState* play) { DmaMgr_SendRequest1(interfaceCtx->parameterSegment, (uintptr_t)_parameter_staticSegmentRomStart, parameterSize, __FILE__, 162); - interfaceCtx->doActionSegment = GAMESTATE_ALLOC_MC(&play->state, 0x480); + interfaceCtx->doActionSegment = GAMESTATE_ALLOC_MC(&play->state, 3 * sizeof(char*)); osSyncPrintf("DOアクション テクスチャ初期=%x\n", 0x480); // "DO Action Texture Initialization" osSyncPrintf("parameter->do_actionSegment=%x\n", interfaceCtx->doActionSegment); ASSERT(interfaceCtx->doActionSegment != NULL); - uint32_t attackDoActionTexSize = GetResourceTexSizeByName(gAttackDoActionENGTex, false); - memcpy(interfaceCtx->doActionSegment, GetResourceDataByName(gAttackDoActionENGTex, false), attackDoActionTexSize); - memcpy(interfaceCtx->doActionSegment + (attackDoActionTexSize / 2), GetResourceDataByName(gCheckDoActionENGTex, false), attackDoActionTexSize); - - memcpy(interfaceCtx->doActionSegment + attackDoActionTexSize, GetResourceDataByName(gReturnDoActionENGTex, false), GetResourceTexSizeByName(gReturnDoActionENGTex, false)); + interfaceCtx->doActionSegment[0] = gAttackDoActionENGTex; + interfaceCtx->doActionSegment[1] = gCheckDoActionENGTex; + interfaceCtx->doActionSegment[2] = gReturnDoActionENGTex; interfaceCtx->iconItemSegment = GAMESTATE_ALLOC_MC( &play->state, 0x1000 * ARRAY_COUNT(gSaveContext.equips.buttonItems)); diff --git a/soh/src/code/z_fcurve_data_skelanime.c b/soh/src/code/z_fcurve_data_skelanime.c index 2ae49c3dd..a0eeace16 100644 --- a/soh/src/code/z_fcurve_data_skelanime.c +++ b/soh/src/code/z_fcurve_data_skelanime.c @@ -15,7 +15,7 @@ s32 SkelCurve_Init(PlayState* play, SkelAnimeCurve* skelCurve, SkelCurveLimbList TransformUpdateIndex* transUpdIdx) { if (ResourceMgr_OTRSigCheck(limbListSeg)) - limbListSeg = ResourceMgr_LoadSkeletonByName(limbListSeg); + limbListSeg = ResourceMgr_LoadSkeletonByName(limbListSeg, NULL); SkelCurveLimb** limbs; SkelCurveLimbList* limbList = SEGMENTED_TO_VIRTUAL(limbListSeg); diff --git a/soh/src/code/z_kanfont.c b/soh/src/code/z_kanfont.c index 0eea9be34..2dd9cda80 100644 --- a/soh/src/code/z_kanfont.c +++ b/soh/src/code/z_kanfont.c @@ -174,7 +174,7 @@ void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) { //__FILE__, __LINE__); if (character < 0x8B) - memcpy(&font->charTexBuf[codePointIndex], GetResourceDataByName(fntTbl[character], false), FONT_CHAR_TEX_SIZE); + memcpy(&font->charTexBuf[codePointIndex], fntTbl[character], strlen(fntTbl[character]) + 1); } /** @@ -183,7 +183,7 @@ void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) { * The different icons are given in the MessageBoxIcon enum. */ void Font_LoadMessageBoxIcon(Font* font, u16 icon) { - memcpy(font->iconBuf, GetResourceDataByName(msgStaticTbl[4 + icon], false), FONT_CHAR_TEX_SIZE); + memcpy(font->iconBuf, msgStaticTbl[4 + icon], strlen(msgStaticTbl[4 + icon]) + 1); } /** @@ -218,7 +218,7 @@ void Font_LoadOrderedFont(Font* font) { osSyncPrintf("nes_mes_buf[%d]=%d\n", codePointIndex, font->msgBuf[codePointIndex]); offset = (font->msgBuf[codePointIndex] - '\x20') * FONT_CHAR_TEX_SIZE; - memcpy(fontBuf, GetResourceDataByName(fntTbl[offset / FONT_CHAR_TEX_SIZE], false), FONT_CHAR_TEX_SIZE); + memcpy(fontBuf, fntTbl[offset / FONT_CHAR_TEX_SIZE], strlen(fntTbl[offset / FONT_CHAR_TEX_SIZE]) + 1); //DmaMgr_SendRequest1(fontBuf, fontStatic + offset, FONT_CHAR_TEX_SIZE, __FILE__, __LINE__); fontBufIndex += FONT_CHAR_TEX_SIZE / 8; } diff --git a/soh/src/code/z_map_exp.c b/soh/src/code/z_map_exp.c index 690c81e21..af1c1784d 100644 --- a/soh/src/code/z_map_exp.c +++ b/soh/src/code/z_map_exp.c @@ -413,8 +413,8 @@ void Map_InitData(PlayState* play, s16 room) { //gMapData->owMinimapTexSize[mapIndex], __FILE__, __LINE__); if (sEntranceIconMapIndex < 24) { - const char* textureName = minimapTableOW[sEntranceIconMapIndex]; - memcpy(play->interfaceCtx.mapSegment, GetResourceDataByName(textureName, false), GetResourceTexSizeByName(textureName, false)); + play->interfaceCtx.mapSegment[0] = GetResourceDataByName(minimapTableOW[sEntranceIconMapIndex], true); + play->interfaceCtx.mapSegmentName[0] = minimapTableOW[sEntranceIconMapIndex]; } interfaceCtx->unk_258 = mapIndex; @@ -447,9 +447,8 @@ void Map_InitData(PlayState* play, s16 room) { //((gMapData->dgnMinimapTexIndexOffset[mapIndex] + room) * 0xFF0), //0xFF0, __FILE__, __LINE__); - const char* textureName = minimapTableDangeon[gMapData->dgnMinimapTexIndexOffset[mapIndex] + room]; - memcpy(play->interfaceCtx.mapSegment, GetResourceDataByName(textureName, false), GetResourceTexSizeByName(textureName, false)); - + play->interfaceCtx.mapSegment[0] = GetResourceDataByName(minimapTableDangeon[gMapData->dgnMinimapTexIndexOffset[mapIndex] + room], true); + play->interfaceCtx.mapSegmentName[0] = minimapTableDangeon[gMapData->dgnMinimapTexIndexOffset[mapIndex] + room]; R_COMPASS_OFFSET_X = gMapData->roomCompassOffsetX[mapIndex][room]; R_COMPASS_OFFSET_Y = gMapData->roomCompassOffsetY[mapIndex][room]; Map_SetFloorPalettesData(play, VREG(30)); @@ -519,7 +518,8 @@ void Map_Init(PlayState* play) { interfaceCtx->unk_258 = -1; interfaceCtx->unk_25A = -1; - interfaceCtx->mapSegment = GAMESTATE_ALLOC_MC(&play->state, 0x1000); + interfaceCtx->mapSegment = GAMESTATE_ALLOC_MC(&play->state, 2 * sizeof(char*)); + interfaceCtx->mapSegmentName = GAMESTATE_ALLOC_MC(&play->state, 2 * sizeof(char*)); // "MAP texture initialization scene_data_ID=%d mapSegment=%x" osSyncPrintf("\n\n\nMAP テクスチャ初期化 scene_data_ID=%d\nmapSegment=%x\n\n", play->sceneNum, interfaceCtx->mapSegment, play); @@ -639,20 +639,20 @@ void Minimap_DrawCompassIcons(PlayState* play) { if (CVarGetInteger("gMinimapPosType", 0) == 1) {//Anchor Left if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;}; Matrix_Translate( - OTRGetDimensionFromLeftEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVarGetInteger("gMinimapPosX", 0)*10)) / 10.0f), + OTRGetDimensionFromLeftEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVarGetInteger("gMinimapPosX", 0)*10)) / 10.0f), (R_COMPASS_OFFSET_Y + ((Y_Margins_Minimap*10)*-1) - tempZ + ((CVarGetInteger("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW); } else if (CVarGetInteger("gMinimapPosType", 0) == 2) {//Anchor Right if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;}; Matrix_Translate( - OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVarGetInteger("gMinimapPosX", 0)*10)) / 10.0f), + OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVarGetInteger("gMinimapPosX", 0)*10)) / 10.0f), (R_COMPASS_OFFSET_Y +((Y_Margins_Minimap*10)*-1) - tempZ + ((CVarGetInteger("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW); } else if (CVarGetInteger("gMinimapPosType", 0) == 3) {//Anchor None Matrix_Translate( - (R_COMPASS_OFFSET_X + tempX + (CVarGetInteger("gMinimapPosX", 0)*10) / 10.0f), + (R_COMPASS_OFFSET_X + tempX + (CVarGetInteger("gMinimapPosX", 0)*10) / 10.0f), (R_COMPASS_OFFSET_Y + ((Y_Margins_Minimap*10)*-1) - tempZ + ((CVarGetInteger("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW); } else if (CVarGetInteger("gMinimapPosType", 0) == 4) {//Hidden Matrix_Translate( - (R_COMPASS_OFFSET_X+(9999*10) + tempX / 10.0f), + (R_COMPASS_OFFSET_X+(9999*10) + tempX / 10.0f), (R_COMPASS_OFFSET_Y+(9999*10) - tempZ) / 10.0f, 0.0f, MTXMODE_NEW); } } else { @@ -677,20 +677,20 @@ void Minimap_DrawCompassIcons(PlayState* play) { if (CVarGetInteger("gMinimapPosType", 0) == 1) {//Anchor Left if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;}; Matrix_Translate( - OTRGetDimensionFromLeftEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVarGetInteger("gMinimapPosX", 0)*10)) / 10.0f), + OTRGetDimensionFromLeftEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVarGetInteger("gMinimapPosX", 0)*10)) / 10.0f), (R_COMPASS_OFFSET_Y + ((Y_Margins_Minimap*10)*-1) - tempZ + ((CVarGetInteger("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW); } else if (CVarGetInteger("gMinimapPosType", 0) == 2) {//Anchor Right if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;}; Matrix_Translate( - OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVarGetInteger("gMinimapPosX", 0)*10)) / 10.0f), + OTRGetDimensionFromRightEdge((R_COMPASS_OFFSET_X + (X_Margins_Minimap*10) + tempX + (CVarGetInteger("gMinimapPosX", 0)*10)) / 10.0f), (R_COMPASS_OFFSET_Y +((Y_Margins_Minimap*10)*-1) - tempZ + ((CVarGetInteger("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW); } else if (CVarGetInteger("gMinimapPosType", 0) == 3) {//Anchor None Matrix_Translate( - (R_COMPASS_OFFSET_X + tempX + (CVarGetInteger("gMinimapPosX", 0)*10) / 10.0f), + (R_COMPASS_OFFSET_X + tempX + (CVarGetInteger("gMinimapPosX", 0)*10) / 10.0f), (R_COMPASS_OFFSET_Y - tempZ + ((CVarGetInteger("gMinimapPosY", 0)*10)*-1)) / 10.0f, 0.0f, MTXMODE_NEW); } else if (CVarGetInteger("gMinimapPosType", 0) == 4) {//Hidden Matrix_Translate( - (R_COMPASS_OFFSET_X+(9999*10) + tempX / 10.0f), + (R_COMPASS_OFFSET_X+(9999*10) + tempX / 10.0f), (R_COMPASS_OFFSET_Y+(9999*10) - tempZ) / 10.0f, 0.0f, MTXMODE_NEW); } } else { @@ -756,8 +756,7 @@ void Minimap_Draw(PlayState* play) { if (CHECK_DUNGEON_ITEM(DUNGEON_MAP, mapIndex)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, minimapColor.r, minimapColor.g, minimapColor.b, interfaceCtx->minimapAlpha); - gSPInvalidateTexCache(OVERLAY_DISP++, interfaceCtx->mapSegment); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->mapSegment, G_IM_FMT_I, 96, 85, 0, + gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->mapSegmentName[0], G_IM_FMT_I, 96, 85, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -767,7 +766,7 @@ void Minimap_Draw(PlayState* play) { dgnMiniMapY = R_DGN_MINIMAP_Y+CVarGetInteger("gMinimapPosY", 0)+Y_Margins_Minimap; if (CVarGetInteger("gMinimapPosType", 0) == 1) {//Anchor Left if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;}; - dgnMiniMapX = OTRGetDimensionFromLeftEdge(R_DGN_MINIMAP_X+CVarGetInteger("gMinimapPosX", 0)+X_Margins_Minimap); + dgnMiniMapX = OTRGetDimensionFromLeftEdge(R_DGN_MINIMAP_X+CVarGetInteger("gMinimapPosX", 0)+X_Margins_Minimap); } else if (CVarGetInteger("gMinimapPosType", 0) == 2) {//Anchor Right if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Right_MM_Margin;}; dgnMiniMapX = OTRGetDimensionFromRightEdge(R_DGN_MINIMAP_X+CVarGetInteger("gMinimapPosX", 0)+X_Margins_Minimap); @@ -827,7 +826,7 @@ void Minimap_Draw(PlayState* play) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, minimapColor.r, minimapColor.g, minimapColor.b, interfaceCtx->minimapAlpha); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->mapSegment, G_IM_FMT_IA, + gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->mapSegmentName[0], G_IM_FMT_IA, gMapData->owMinimapWidth[mapIndex], gMapData->owMinimapHeight[mapIndex], 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -897,7 +896,7 @@ void Minimap_Draw(PlayState* play) { //No idea why and how Original value work but this does actually fix them all. PosY = PosY+1024; } - + if (((gMapData->owEntranceFlag[sEntranceIconMapIndex] == 0xFFFF) || ((gMapData->owEntranceFlag[sEntranceIconMapIndex] != 0xFFFF) && (gSaveContext.infTable[26] & gBitFlags[gMapData->owEntranceFlag[mapIndex]]) @@ -912,9 +911,9 @@ void Minimap_Draw(PlayState* play) { } s16 entranceX = OTRGetRectDimensionFromRightEdge(270 + X_Margins_Minimap); - s16 entranceY = 154 + Y_Margins_Minimap; + s16 entranceY = 154 + Y_Margins_Minimap; if (CVarGetInteger("gMinimapPosType", 0) != 0) { - entranceY = 154 + Y_Margins_Minimap + CVarGetInteger("gMinimapPosY", 0); + entranceY = 154 + Y_Margins_Minimap + CVarGetInteger("gMinimapPosY", 0); if (CVarGetInteger("gMinimapPosType", 0) == 1) {//Anchor Left if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap = Left_MM_Margin;}; entranceX = OTRGetRectDimensionFromLeftEdge(270 + X_Margins_Minimap + CVarGetInteger("gMinimapPosX", 0)); @@ -932,15 +931,15 @@ void Minimap_Draw(PlayState* play) { gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPWideTextureRectangle(OVERLAY_DISP++, entranceX << 2, entranceY << 2, (entranceX + 32) << 2, (entranceY + 8) << 2, + gSPWideTextureRectangle(OVERLAY_DISP++, entranceX << 2, entranceY << 2, (entranceX + 32) << 2, (entranceY + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } else if ((play->sceneNum == SCENE_SPOT08) && CVarGetInteger("gAlwaysShowDungeonMinimapIcon", 0) != 0){ - + gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPWideTextureRectangle(OVERLAY_DISP++, entranceX << 2, entranceY << 2, (entranceX + 32) << 2, (entranceY + 8) << 2, + gSPWideTextureRectangle(OVERLAY_DISP++, entranceX << 2, entranceY << 2, (entranceX + 32) << 2, (entranceY + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } diff --git a/soh/src/code/z_message_PAL.c b/soh/src/code/z_message_PAL.c index 1a8c777a2..762e06b55 100644 --- a/soh/src/code/z_message_PAL.c +++ b/soh/src/code/z_message_PAL.c @@ -32,10 +32,10 @@ s16 sMessageHasSetSfx = false; u16 sOcarinaSongBitFlags = 0; // ocarina bit flags -MessageTableEntry* sNesMessageEntryTablePtr; -MessageTableEntry* sGerMessageEntryTablePtr; -MessageTableEntry* sFraMessageEntryTablePtr; -MessageTableEntry* sStaffMessageEntryTablePtr; +MessageTableEntry* sNesMessageEntryTablePtr = NULL; +MessageTableEntry* sGerMessageEntryTablePtr = NULL; +MessageTableEntry* sFraMessageEntryTablePtr = NULL; +MessageTableEntry* sStaffMessageEntryTablePtr = NULL; char* _message_0xFFFC_nes; @@ -562,7 +562,6 @@ void Message_DrawTextboxIcon(PlayState* play, Gfx** p, s16 x, s16 y) { *p = gfx; } -#define MESSAGE_SPACE_WIDTH 6 f32 sFontWidths[144] = { 8.0f, // ' ' 8.0f, // '!' @@ -865,7 +864,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { Message_SetTextColor(msgCtx, msgCtx->msgBufDecoded[++i] & 0xF); break; case ' ': - msgCtx->textPosX += MESSAGE_SPACE_WIDTH; + msgCtx->textPosX += CVarGetInteger("gTextSpacing", 6); break; case MESSAGE_BOX_BREAK: if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { @@ -1131,7 +1130,7 @@ void Message_LoadItemIcon(PlayState* play, u16 itemId, s16 y) { R_TEXTBOX_ICON_YPOS = y + 6; R_TEXTBOX_ICON_SIZE = 32; memcpy((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, - GetResourceDataByName(gItemIcons[itemId], false), GetResourceTexSizeByName(gItemIcons[itemId], false)); + gItemIcons[itemId], strlen(gItemIcons[itemId]) + 1); // "Item 32-0" osSyncPrintf("アイテム32-0\n"); } else { @@ -1139,7 +1138,7 @@ void Message_LoadItemIcon(PlayState* play, u16 itemId, s16 y) { R_TEXTBOX_ICON_YPOS = y + 10; R_TEXTBOX_ICON_SIZE = 24; memcpy((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, - GetResourceDataByName(gItemIcons[itemId], false), GetResourceTexSizeByName(gItemIcons[itemId], false)); + gItemIcons[itemId], strlen(gItemIcons[itemId]) + 1); // "Item 24" osSyncPrintf("アイテム24=%d (%d) {%d}\n", itemId, itemId - ITEM_KOKIRI_EMERALD, 84); } @@ -1525,10 +1524,8 @@ void Message_Decode(PlayState* play) { msgCtx->textboxBackgroundYOffsetIdx = (font->msgBuf[msgCtx->msgBufPos + 3] & 0xF0) >> 4; msgCtx->textboxBackgroundUnkArg = font->msgBuf[msgCtx->msgBufPos + 3] & 0xF; - memcpy((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, - GetResourceDataByName(gRedMessageXLeftTex, false), GetResourceTexSizeByName(gRedMessageXLeftTex, false)); - memcpy((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900, - GetResourceDataByName(gRedMessageXRightTex, false), GetResourceTexSizeByName(gRedMessageXRightTex, false)); + memcpy((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, gRedMessageXLeftTex, strlen(gRedMessageXLeftTex) + 1); + memcpy((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900, gRedMessageXRightTex, strlen(gRedMessageXRightTex) + 1); msgCtx->msgBufPos += 3; R_TEXTBOX_BG_YPOS = R_TEXTBOX_Y + 8; @@ -1674,7 +1671,7 @@ void Message_OpenText(PlayState* play, u16 textId) { osSyncPrintf("吹き出し種類=%d\n", msgCtx->textBoxType); if (textBoxType < TEXTBOX_TYPE_NONE_BOTTOM) { const char* textureName = msgStaticTbl[messageStaticIndices[textBoxType]]; - memcpy(msgCtx->textboxSegment, GetResourceDataByName(textureName, false), MESSAGE_STATIC_TEX_SIZE); + memcpy(msgCtx->textboxSegment, textureName, strlen(textureName) + 1); if (textBoxType == TEXTBOX_TYPE_BLACK) { msgCtx->textboxColorRed = 0; msgCtx->textboxColorGreen = 0; diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index 68db893fb..8198caebf 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -16,30 +16,9 @@ #include "soh/Enhancements/game-interactor/GameInteractor.h" -static uint16_t _doActionTexWidth, _doActionTexHeight = -1; -static uint16_t DO_ACTION_TEX_WIDTH() { - return 48; - - // TODO: Figure out why Ship::Texture is not returning a valid width - if (_doActionTexWidth == -1) - _doActionTexWidth = GetResourceTexWidthByName(gCheckDoActionENGTex, false); - return _doActionTexWidth; -} -static uint16_t DO_ACTION_TEX_HEIGHT() { - return 16; - - // TODO: Figure out why Ship::Texture is not returning a valid height - if (_doActionTexHeight == -1) - _doActionTexHeight = GetResourceTexHeightByName(gCheckDoActionENGTex, false); - return _doActionTexHeight; -} - -static uint32_t _doActionTexSize = -1; -static uint32_t DO_ACTION_TEX_SIZE() { - if (_doActionTexSize == -1) - _doActionTexSize = GetResourceTexSizeByName(gCheckDoActionENGTex, false); - return _doActionTexSize; -} +#define DO_ACTION_TEX_WIDTH() 48 +#define DO_ACTION_TEX_HEIGHT() 16 +#define DO_ACTION_TEX_SIZE() ((DO_ACTION_TEX_WIDTH() * DO_ACTION_TEX_HEIGHT()) / 2) // The button statuses include the A button when most things are only the equip item buttons // So, when indexing into it with a item button index, we need to adjust @@ -225,6 +204,8 @@ static const char* actionsTbl[] = gNum8DoActionENGTex, }; +static const char gDoEmptyTexture[] = "__OTR__textures/virtual/gEmptyTexture"; + // original name: "alpha_change" void Interface_ChangeAlpha(u16 alphaType) { if (alphaType != gSaveContext.unk_13EA) { @@ -2848,11 +2829,7 @@ bool Inventory_HatchPocketCucco(PlayState* play) { } void func_80086D5C(s32* buf, u16 size) { - u16 i; - - //buf = GetResourceDataByName(buf, false); - - for (i = 0; i < size; i++) { + for (u16 i = 0; i < size; i++) { buf[i] = 0; } } @@ -2865,46 +2842,25 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l char* doAction = actionsTbl[action]; - char newName[512]; + static char newName[4][512]; if (gSaveContext.language != LANGUAGE_ENG) { size_t length = strlen(doAction); - strcpy(newName, doAction); + strcpy(newName[loadOffset], doAction); if (gSaveContext.language == LANGUAGE_FRA) { - newName[length - 6] = 'F'; - newName[length - 5] = 'R'; - newName[length - 4] = 'A'; + newName[loadOffset][length - 6] = 'F'; + newName[loadOffset][length - 5] = 'R'; + newName[loadOffset][length - 4] = 'A'; } else if (gSaveContext.language == LANGUAGE_GER) { - newName[length - 6] = 'G'; - newName[length - 5] = 'E'; - newName[length - 4] = 'R'; + newName[loadOffset][length - 6] = 'G'; + newName[loadOffset][length - 5] = 'E'; + newName[loadOffset][length - 4] = 'R'; } - doAction = newName; - } - - /* - if (gSaveContext.language != LANGUAGE_ENG) { - action += DO_ACTION_MAX; - } - - if (gSaveContext.language == LANGUAGE_FRA) { - action += DO_ACTION_MAX; - }*/ - - - if (action != DO_ACTION_NONE) { - //osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, OS_MESG_BLOCK); - memcpy(interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE()), GetResourceDataByName(doAction, false), - DO_ACTION_TEX_SIZE()); - //DmaMgr_SendRequest2(&interfaceCtx->dmaRequest_160, - //interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE), - //(uintptr_t)_do_action_staticSegmentRomStart + (action * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE, - //0, &interfaceCtx->loadQueue, NULL, __FILE__, __LINE__); - //osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); - } else { - gSegments[7] = VIRTUAL_TO_PHYSICAL(interfaceCtx->doActionSegment); - //func_80086D5C(SEGMENTED_TO_VIRTUAL(sDoActionTextures[loadOffset]), DO_ACTION_TEX_SIZE / 4); - func_80086D5C(interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE()), DO_ACTION_TEX_SIZE() / 4); + doAction = newName[loadOffset]; } + + char* segment = interfaceCtx->doActionSegment[loadOffset]; + interfaceCtx->doActionSegment[loadOffset] = action != DO_ACTION_NONE ? doAction : gDoEmptyTexture; + gSegments[7] = interfaceCtx->doActionSegment[loadOffset]; } void Interface_SetDoAction(PlayState* play, u16 action) { @@ -2950,7 +2906,7 @@ void Interface_LoadActionLabelB(PlayState* play, u16 action) { InterfaceContext* interfaceCtx = &play->interfaceCtx; char* doAction = actionsTbl[action]; - char newName[512]; + static char newName[512]; if (gSaveContext.language != LANGUAGE_ENG) { size_t length = strlen(doAction); @@ -2967,24 +2923,10 @@ void Interface_LoadActionLabelB(PlayState* play, u16 action) { doAction = newName; } - /*if (gSaveContext.language != LANGUAGE_ENG) { - action += DO_ACTION_MAX; - } - - if (gSaveContext.language == LANGUAGE_FRA) { - action += DO_ACTION_MAX; - }*/ - interfaceCtx->unk_1FC = action; - - - - // OTRTODO - osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, OS_MESG_BLOCK); - memcpy(interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE(), GetResourceDataByName(doAction, false), DO_ACTION_TEX_SIZE()); - //DmaMgr_SendRequest2(&interfaceCtx->dmaRequest_160, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE, - //(uintptr_t)_do_action_staticSegmentRomStart + (action * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE, 0, - //&interfaceCtx->loadQueue, NULL, __FILE__, __LINE__); + + char* segment = interfaceCtx->doActionSegment[1]; + interfaceCtx->doActionSegment[1] = action != DO_ACTION_NONE ? doAction : gDoEmptyTexture; osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); interfaceCtx->unk_1FA = 1; @@ -4040,28 +3982,8 @@ void Interface_DrawItemButtons(PlayState* play) { gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - - //There is probably a more elegant way to do it. - char* doAction = actionsTbl[3]; - char newName[512]; - if (gSaveContext.language != LANGUAGE_ENG) { - size_t length = strlen(doAction); - strcpy(newName, doAction); - if (gSaveContext.language == LANGUAGE_FRA) { - newName[length - 6] = 'F'; - newName[length - 5] = 'R'; - newName[length - 4] = 'A'; - } else if (gSaveContext.language == LANGUAGE_GER) { - newName[length - 6] = 'G'; - newName[length - 5] = 'E'; - newName[length - 4] = 'R'; - } - doAction = newName; - } - - memcpy(interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE() * 2, GetResourceDataByName(doAction, false), DO_ACTION_TEX_SIZE()); - - gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE() * 2, G_IM_FMT_IA, + Interface_LoadActionLabel(interfaceCtx, 3, 2); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment[2], G_IM_FMT_IA, DO_ACTION_TEX_WIDTH(), DO_ACTION_TEX_HEIGHT(), 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -4076,7 +3998,7 @@ void Interface_DrawItemButtons(PlayState* play) { gSPMatrix(OVERLAY_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[4], 4, 0); - Interface_DrawActionLabel(play->state.gfxCtx, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE() * 2); + Interface_DrawActionLabel(play->state.gfxCtx, interfaceCtx->doActionSegment[2]); gDPPipeSync(OVERLAY_DISP++); } } @@ -4900,10 +4822,6 @@ void Interface_Draw(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - // Invalidate Do Action textures as they may have changed - gSPInvalidateTexCache(OVERLAY_DISP++, interfaceCtx->doActionSegment); - gSPInvalidateTexCache(OVERLAY_DISP++, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE()); - gSPSegment(OVERLAY_DISP++, 0x02, interfaceCtx->parameterSegment); gSPSegment(OVERLAY_DISP++, 0x07, interfaceCtx->doActionSegment); gSPSegment(OVERLAY_DISP++, 0x08, interfaceCtx->iconItemSegment); @@ -5211,7 +5129,7 @@ void Interface_Draw(PlayState* play) { PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE(), G_IM_FMT_IA, + gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment[1], G_IM_FMT_IA, DO_ACTION_TEX_WIDTH(), DO_ACTION_TEX_HEIGHT(), 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -5301,7 +5219,7 @@ void Interface_Draw(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, dPadColor.r, dPadColor.g, dPadColor.b, dpadAlpha); if (fullUi) { - gDPLoadTextureBlock(OVERLAY_DISP++, GetResourceDataByName("__OTR__textures/parameter_static/gDPad", false), + gDPLoadTextureBlock(OVERLAY_DISP++, "__OTR__textures/parameter_static/gDPad", G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPWideTextureRectangle(OVERLAY_DISP++, DpadPosX << 2, DpadPosY << 2, @@ -5417,9 +5335,9 @@ void Interface_Draw(PlayState* play) { gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[4], 4, 0); if ((interfaceCtx->unk_1EC < 2) || (interfaceCtx->unk_1EC == 3)) { - Interface_DrawActionLabel(play->state.gfxCtx, interfaceCtx->doActionSegment); + Interface_DrawActionLabel(play->state.gfxCtx, interfaceCtx->doActionSegment[0]); } else { - Interface_DrawActionLabel(play->state.gfxCtx, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE()); + Interface_DrawActionLabel(play->state.gfxCtx, interfaceCtx->doActionSegment[1]); } gDPPipeSync(OVERLAY_DISP++); diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index 488207a97..9ac45cdcc 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -682,6 +682,12 @@ void Play_Init(GameState* thisx) { DmaMgr_DmaRomToRam(0x03FEB000, D_8012D1F0, sizeof(D_801614D0)); } #endif + + if (CVarGetInteger("gIvanCoopModeEnabled", 0)) { + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_PARTNER, GET_PLAYER(play)->actor.world.pos.x, + GET_PLAYER(play)->actor.world.pos.y + Player_GetHeight(GET_PLAYER(play)) + 5.0f, + GET_PLAYER(play)->actor.world.pos.z, 0, 0, 0, 1, true); + } } void Play_Update(PlayState* play) { diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index 8df5b5a91..01d5e0409 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -330,6 +330,12 @@ void Player_SetBootData(PlayState* play, Player* this) { } } +// Custom method used to determine if we're using a custom model for link +uint8_t Player_IsCustomLinkModel() { + return (LINK_IS_ADULT && GetResourceIsCustomByName(gLinkAdultSkel, true)) || + (LINK_IS_CHILD && GetResourceIsCustomByName(gLinkChildSkel, true)); +} + s32 Player_InBlockingCsMode(PlayState* play, Player* this) { return (this->stateFlags1 & 0x20000080) || (this->csMode != 0) || (play->sceneLoadFlag == 0x14) || (this->stateFlags1 & 1) || (this->stateFlags3 & 0x80) || @@ -788,6 +794,11 @@ void func_8008F470(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dLis gDPSetEnvColor(POLY_OPA_DISP++, color->r, color->g, color->b, 0); + // If we have a custom link model, always use the most detailed LOD + if (Player_IsCustomLinkModel()) { + lod = 0; + } + sDListsLodOffset = lod * 2; SkelAnime_DrawFlexLod(play, skeleton, jointTable, dListCount, overrideLimbDraw, postLimbDraw, data, lod); @@ -1024,7 +1035,8 @@ s32 func_8008FCC8(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s s32 func_80090014(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) { Player* this = (Player*)thisx; - if (!func_8008FCC8(play, limbIndex, dList, pos, rot, thisx)) { + if (!func_8008FCC8(play, limbIndex, dList, pos, rot, thisx)) + { if (limbIndex == PLAYER_LIMB_L_HAND) { Gfx** dLists = this->leftHandDLists; @@ -1072,7 +1084,12 @@ s32 func_80090014(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s } else if (limbIndex == PLAYER_LIMB_WAIST) { - *dList = ResourceMgr_LoadGfxByName(this->waistDLists[sDListsLodOffset]); + + if (!Player_IsCustomLinkModel()) { + *dList = ResourceMgr_LoadGfxByName( + this->waistDLists[sDListsLodOffset]); // NOTE: This needs to be disabled when using custom + // characters - they're not going to have LODs anyways... + } } } @@ -1678,6 +1695,10 @@ s32 func_80091880(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s } } else if (limbIndex == PLAYER_LIMB_WAIST) { type = gPlayerModelTypes[modelGroup][4]; + + if (Player_IsCustomLinkModel()) { + return 0; + } } else { return 0; } diff --git a/soh/src/code/z_room.c b/soh/src/code/z_room.c index d10a5089e..f30bb5b03 100644 --- a/soh/src/code/z_room.c +++ b/soh/src/code/z_room.c @@ -1,3 +1,7 @@ +#ifdef WIN32 +#include +#endif + #include "global.h" #include "vt.h" #include "soh/Enhancements/randomizer/randomizer_entrance.h" @@ -222,42 +226,29 @@ void func_80095D04(PlayState* play, Room* room, u32 flags) { s32 swapAndConvertJPEG(void* data) { OSTime time; + if (BE32SWAP(*(u32*)data) == JPEG_MARKER) { + size_t size = 320 * 240 * 2; - if (BE32SWAP(*(u32*)data) == JPEG_MARKER) - { - char* decodedJpeg = ResourceMgr_LoadJPEG(data, 320 * 240 * 2); - //char* decodedJpeg = ResourceMgr_LoadJPEG(data, 480 * 240 * 2); + char *decodedJpeg = ResourceMgr_LoadJPEG(data, size); - osSyncPrintf("JPEGデータを展開します\n"); // "Expanding jpeg data" - osSyncPrintf("JPEGデータアドレス %08x\n", data); // "Jpeg data address %08x" - // "Work buffer address (Z buffer) %08x" - osSyncPrintf("ワークバッファアドレス(Zバッファ)%08x\n", gZBuffer); + osSyncPrintf("Expanding jpeg data\n"); + osSyncPrintf("Work buffer address (Z buffer) %08x\n", gZBuffer); time = osGetTime(); - //if (!Jpeg_Decode(data, gZBuffer, gGfxSPTaskOutputBuffer, sizeof(gGfxSPTaskOutputBuffer))) - if (1) - { - memcpy(data, decodedJpeg, 320 * 240 * 2); - //memcpy(data, decodedJpeg, 480 * 240 * 2); - time = osGetTime() - time; + memcpy(data, decodedJpeg, size); + time = osGetTime() - time; - // "Success... I think. time = %6.3f ms" - osSyncPrintf("成功…だと思う。 time = %6.3f ms \n", OS_CYCLES_TO_USEC(time) / 1000.0f); - // "Writing back to original address from work buffer." - osSyncPrintf("ワークバッファから元のアドレスに書き戻します。\n"); - // "If the original buffer size isn't at least 150kb, it will be out of control." - osSyncPrintf("元のバッファのサイズが150キロバイト無いと暴走するでしょう。\n"); - - //bcopy(gZBuffer, data, sizeof(gZBuffer)); - } else { - osSyncPrintf("失敗!なんで〜\n"); // "Failure! Why is it 〜" - } + osSyncPrintf("Success... I think. time = %6.3f ms", OS_CYCLES_TO_USEC(time) / 1000.0f); + osSyncPrintf("Writing back to original address from work buffer."); + osSyncPrintf("If the original buffer size isn't at least 150kb, it will be out of control."); + return 1; } return 0; } + void func_8009638C(Gfx** displayList, void* source, void* tlut, u16 width, u16 height, u8 fmt, u8 siz, u16 mode0, u16 tlutCount, f32 frameX, f32 frameY) { Gfx* displayListHead; @@ -265,7 +256,6 @@ void func_8009638C(Gfx** displayList, void* source, void* tlut, u16 width, u16 h s32 temp; displayListHead = *displayList; - swapAndConvertJPEG(SEGMENTED_TO_VIRTUAL(source)); bg = (uObjBg*)(displayListHead + 1); gSPBranchList(displayListHead, (u8*)bg + sizeof(uObjBg)); @@ -413,7 +403,7 @@ BgImage* func_80096A74(PolygonType1* polygon1, PlayState* play) { // camera (such as din's fire) on scenes with prerendered backgrounds return NULL; } - + // jfifid camId2 = func_80041C10(&play->colCtx, camId, BGCHECK_SCENE)[2].y; if (camId2 >= 0) { diff --git a/soh/src/code/z_skelanime.c b/soh/src/code/z_skelanime.c index d0404ae17..908a83bcf 100644 --- a/soh/src/code/z_skelanime.c +++ b/soh/src/code/z_skelanime.c @@ -1077,7 +1077,7 @@ void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeade LinkAnimationHeader* animation, s32 flags, Vec3s* jointTable, Vec3s* morphTable, s32 limbBufCount) { if (ResourceMgr_OTRSigCheck(skeletonHeaderSeg) != 0) - skeletonHeaderSeg = ResourceMgr_LoadSkeletonByName(skeletonHeaderSeg); + skeletonHeaderSeg = ResourceMgr_LoadSkeletonByName(skeletonHeaderSeg, skelAnime); FlexSkeletonHeader* skeletonHeader = SEGMENTED_TO_VIRTUAL(skeletonHeaderSeg); s32 headerJointCount = skeletonHeader->sh.limbCount; @@ -1429,7 +1429,7 @@ s32 LinkAnimation_OnFrame(SkelAnime* skelAnime, f32 frame) { s32 SkelAnime_Init(PlayState* play, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount) { if (ResourceMgr_OTRSigCheck(skeletonHeaderSeg)) - skeletonHeaderSeg = ResourceMgr_LoadSkeletonByName(skeletonHeaderSeg); + skeletonHeaderSeg = ResourceMgr_LoadSkeletonByName(skeletonHeaderSeg, skelAnime); SkeletonHeader* skeletonHeader = SEGMENTED_TO_VIRTUAL(skeletonHeaderSeg); @@ -1462,7 +1462,7 @@ s32 SkelAnime_Init(PlayState* play, SkelAnime* skelAnime, SkeletonHeader* skelet s32 SkelAnime_InitFlex(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount) { if (ResourceMgr_OTRSigCheck(skeletonHeaderSeg) != 0) - skeletonHeaderSeg = ResourceMgr_LoadSkeletonByName(skeletonHeaderSeg); + skeletonHeaderSeg = ResourceMgr_LoadSkeletonByName(skeletonHeaderSeg, skelAnime); FlexSkeletonHeader* skeletonHeader = SEGMENTED_TO_VIRTUAL(skeletonHeaderSeg); @@ -1921,6 +1921,8 @@ void SkelAnime_Free(SkelAnime* skelAnime, PlayState* play) { } else { osSyncPrintf("morf_joint あきまへん!!\n"); // "morf_joint is freed !!" } + + ResourceMgr_UnregisterSkeleton(skelAnime); } /** diff --git a/soh/src/code/z_skin_awb.c b/soh/src/code/z_skin_awb.c index f3a2e6390..eea1967a9 100644 --- a/soh/src/code/z_skin_awb.c +++ b/soh/src/code/z_skin_awb.c @@ -38,7 +38,7 @@ void Skin_InitAnimatedLimb(PlayState* play, Skin* skin, s32 limbIndex) { */ void Skin_Init(PlayState* play, Skin* skin, SkeletonHeader* skeletonHeader, AnimationHeader* animationHeader) { if (ResourceMgr_OTRSigCheck(skeletonHeader)) - skeletonHeader = ResourceMgr_LoadSkeletonByName(skeletonHeader); + skeletonHeader = ResourceMgr_LoadSkeletonByName(skeletonHeader, NULL); s32 limbCount; s32 i; diff --git a/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c b/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c index b616a292f..2ae04e344 100644 --- a/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c +++ b/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c @@ -1,4 +1,5 @@ #include "z_boss_dodongo.h" +#include "textures/boss_title_cards/object_kingdodongo.h" #include "objects/object_kingdodongo/object_kingdodongo.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" #include "scenes/dungeons/ddan_boss/ddan_boss_room_1.h" @@ -49,6 +50,14 @@ const ActorInit Boss_Dodongo_InitVars = { #include "z_boss_dodongo_data.c" +static u8 sMaskTex16x16[16 * 16] = { { 0 } }; +static u8 sMaskTex8x16[8 * 16] = { { 0 } }; +static u8 sMaskTex16x32[16 * 32] = { { 0 } }; +static u8 sMaskTex32x16[32 * 16] = { { 0 } }; +static u8 sMaskTex8x8[8 * 8] = { { 0 } }; +static u8 sMaskTex8x32[8 * 32] = { { 0 } }; +static u8 sMaskTexLava[32 * 64] = { { 0 } }; + static InitChainEntry sInitChain[] = { ICHAIN_U8(targetMode, 5, ICHAIN_CONTINUE), ICHAIN_S8(naviEnemyId, 0x0C, ICHAIN_CONTINUE), @@ -56,65 +65,24 @@ static InitChainEntry sInitChain[] = { ICHAIN_F32(targetArrowOffset, 8200.0f, ICHAIN_STOP), }; -void func_808C1190(s16* arg0, u8* arg1, s16 arg2) { - arg0 = GetResourceDataByName(arg0, false); - - if (arg2[arg1] != 0) { - arg0[arg2 / 2] = 0; - } -} - -void func_808C11D0(s16* arg0, u8* arg1, s16 arg2) { - arg0 = GetResourceDataByName(arg0, false); - - if (arg1[arg2] != 0) { - arg0[arg2] = 0; - } -} - -void func_808C1200(s16* arg0, u8* arg1, s16 arg2) { - arg0 = GetResourceDataByName(arg0, false); - - if (arg1[arg2] != 0) { - arg0[arg2] = 0; - } -} - -void func_808C1230(s16* arg0, u8* arg1, s16 arg2) { - s16 index; - - arg0 = GetResourceDataByName(arg0, false); - - if (arg1[arg2] != 0) { - index = ((arg2 & 0xF) + ((arg2 & 0xF0) * 2)); - arg0[index + 16] = 0; - arg0[index] = 0; - } -} - -void func_808C1278(s16* arg0, u8* arg1, s16 arg2) { - s16 index; - - arg0 = GetResourceDataByName(arg0, false); - - if (arg1[arg2] != 0) { - index = ((arg2 & 0xF) * 2) + ((arg2 & 0xF0) * 2); - arg0[index + 1] = 0; - arg0[index] = 0; - } -} - void func_808C12C4(u8* arg1, s16 arg2) { - func_808C1190(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_015890), arg1, arg2); - func_808C1200(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_017210), arg1, arg2); - func_808C11D0(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_015D90), arg1, arg2); - func_808C11D0(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_016390), arg1, arg2); - func_808C11D0(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_016590), arg1, arg2); - func_808C11D0(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_016790), arg1, arg2); - func_808C1230(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_015990), arg1, arg2); - func_808C1230(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_015F90), arg1, arg2); - func_808C1278(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_016990), arg1, arg2); - func_808C1278(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_016E10), arg1, arg2); + if (arg2[arg1] != 0) { + sMaskTex8x16[arg2 / 2] = 1; + + sMaskTex8x32[arg2] = 1; + + sMaskTex16x16[arg2] = 1; + + sMaskTex16x16[arg2] = 1; + + s16 index = ((arg2 & 0xF) + ((arg2 & 0xF0) * 2)); + sMaskTex16x32[index + 16] = 1; + sMaskTex16x32[index] = 1; + + index = ((arg2 & 0xF) * 2) + ((arg2 & 0xF0) * 2); + sMaskTex32x16[index + 1] = 1; + sMaskTex32x16[index] = 1; + } } void func_808C1554(void* arg0, void* floorTex, s32 arg2, f32 arg3) { @@ -228,13 +196,47 @@ void BossDodongo_Init(Actor* thisx, PlayState* play) { Actor_Spawn(&play->actorCtx, play, ACTOR_BG_BREAKWALL, -890.0f, -1523.76f, -3304.0f, 0, 0, 0, 0x6000, true); Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, -690.0f, -1523.76f, -3304.0f, 0, 0, 0, 0, true); - for (i = 0; i < 2048; i++) { - temp_v0 = i; - temp_s1_3[temp_v0] = temp_s2[temp_v0]; + for (int i = 0; i < ARRAY_COUNT(sMaskTexLava); i++) { + sMaskTexLava[i] = 1; + } + } else { + for (int i = 0; i < ARRAY_COUNT(sMaskTexLava); i++) { + sMaskTexLava[i] = 0; } } this->actor.flags &= ~ACTOR_FLAG_0; + + for (int i = 0; i < ARRAY_COUNT(sMaskTex8x16); i++) { + sMaskTex8x16[i] = 0; + } + for (int i = 0; i < ARRAY_COUNT(sMaskTex8x32); i++) { + sMaskTex8x32[i] = 0; + } + for (int i = 0; i < ARRAY_COUNT(sMaskTex16x16); i++) { + sMaskTex16x16[i] = 0; + } + for (int i = 0; i < ARRAY_COUNT(sMaskTex16x32); i++) { + sMaskTex16x32[i] = 0; + } + for (int i = 0; i < ARRAY_COUNT(sMaskTex32x16); i++) { + sMaskTex32x16[i] = 0; + } + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_015890, sMaskTex8x16, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_017210, sMaskTex8x32, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_015D90, sMaskTex16x16, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_016390, sMaskTex16x16, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_016590, sMaskTex16x16, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_016790, sMaskTex16x16, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_015990, sMaskTex16x32, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_015F90, sMaskTex16x32, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_016990, sMaskTex32x16, NULL); + Gfx_RegisterBlendedTexture(object_kingdodongo_Tex_016E10, sMaskTex32x16, NULL); + + // OTRTODO: This is causing OOB memory reads with HD assets + // commenting this out means the lava will stay lava even after beating king d + // + // Gfx_RegisterBlendedTexture(gDodongosCavernBossLavaFloorTex, sMaskTexLava, sLavaFloorRockTex); } void BossDodongo_Destroy(Actor* thisx, PlayState* play) { @@ -421,7 +423,7 @@ void BossDodongo_IntroCutscene(BossDodongo* this, PlayState* play) { if (this->unk_198 == 0x5A) { if (!(gSaveContext.eventChkInf[7] & 2)) { TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gKingDodongoTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gKingDodongoTitleCardENGTex), 160, 180, 128, 40, true); } Audio_QueueSeqCmd(SEQ_PLAYER_BGM_MAIN << 24 | NA_BGM_FIRE_BOSS); } @@ -1011,7 +1013,8 @@ void BossDodongo_Update(Actor* thisx, PlayState* play2) { } } - func_808C1554(gDodongosCavernBossLavaFloorTex, sLavaFloorLavaTex, this->unk_19E, this->unk_224); + // TODO The lave floor bubbles with an effect that modifies the texture. This needs to be recreated shader-side. + //func_808C1554(gDodongosCavernBossLavaFloorTex, sLavaFloorLavaTex, this->unk_19E, this->unk_224); } if (this->unk_1C6 != 0) { @@ -1022,7 +1025,7 @@ void BossDodongo_Update(Actor* thisx, PlayState* play2) { for (i2 = 0; i2 < 20; i2++) { s16 new_var = this->unk_1C2 & 0x7FF; - ptr1[new_var] = ptr2[new_var]; + sMaskTexLava[new_var] = 1; this->unk_1C2 += 37; } Math_SmoothStepToF(&this->unk_224, 0.0f, 1.0f, 0.01f, 0.0f); @@ -1139,6 +1142,18 @@ void BossDodongo_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL_25Opa(play->state.gfxCtx); + if ((this->csState == 9) && (this->unk_1DA < 854)) { + gSPInvalidateTexCache(POLY_OPA_DISP++, sMaskTex8x16); + gSPInvalidateTexCache(POLY_OPA_DISP++, sMaskTex8x32); + gSPInvalidateTexCache(POLY_OPA_DISP++, sMaskTex16x16); + gSPInvalidateTexCache(POLY_OPA_DISP++, sMaskTex16x32); + gSPInvalidateTexCache(POLY_OPA_DISP++, sMaskTex32x16); + } + + if (this->unk_1C6 != 0) { + gSPInvalidateTexCache(POLY_OPA_DISP++, sMaskTexLava); + } + if ((this->unk_1C0 >= 2) && (this->unk_1C0 & 1)) { POLY_OPA_DISP = Gfx_SetFog(POLY_OPA_DISP, 255, 255, 255, 0, 900, 1099); } else { @@ -1274,7 +1289,7 @@ void BossDodongo_UpdateDamage(BossDodongo* this, PlayState* play) { this->collider.elements->info.bumperFlags &= ~2; item1 = this->collider.elements[0].info.acHitInfo; if ((this->actionFunc == BossDodongo_Vulnerable) || (this->actionFunc == BossDodongo_LayDown)) { - swordDamage = damage = CollisionCheck_GetSwordDamage(item1->toucher.dmgFlags); + swordDamage = damage = CollisionCheck_GetSwordDamage(item1->toucher.dmgFlags, play); if (damage != 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DODO_K_DAMAGE); @@ -1700,8 +1715,6 @@ void BossDodongo_DrawEffects(PlayState* play) { Gfx_SetupDL_25Xlu(play->state.gfxCtx); unkMtx = &play->billboardMtxF; - gSPInvalidateTexCache(POLY_XLU_DISP++, gDodongosCavernBossLavaFloorTex); - for (i = 0; i < 80; i++, eff++) { FrameInterpolation_RecordOpenChild(eff, eff->epoch); if (eff->unk_24 == 1) { diff --git a/soh/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c b/soh/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c index 51e3402d8..b29232095 100644 --- a/soh/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c +++ b/soh/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c @@ -5,6 +5,7 @@ */ #include "z_boss_fd.h" +#include "textures/boss_title_cards/object_fd.h" #include "objects/object_fd/object_fd.h" #include "overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.h" #include "overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.h" @@ -499,7 +500,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) { } if ((this->timers[3] == 130) && !(gSaveContext.eventChkInf[7] & 8)) { TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gVolvagiaBossTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gVolvagiaBossTitleCardENGTex), 160, 180, 128, 40, true); } if (this->timers[3] <= 100) { this->camData.eyeVel.x = this->camData.eyeVel.y = this->camData.eyeVel.z = 2.0f; diff --git a/soh/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c b/soh/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c index a8577c2da..9280071f5 100644 --- a/soh/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c +++ b/soh/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c @@ -869,7 +869,7 @@ void BossFd2_CollisionCheck(BossFd2* this, PlayState* play) { u8 canKill = false; u8 damage; - if ((damage = CollisionCheck_GetSwordDamage(hurtbox->toucher.dmgFlags)) == 0) { + if ((damage = CollisionCheck_GetSwordDamage(hurtbox->toucher.dmgFlags, play)) == 0) { damage = (hurtbox->toucher.dmgFlags & 0x00001000) ? 4 : 2; } else { canKill = true; diff --git a/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c b/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c index 413014834..ec59ae35b 100644 --- a/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c +++ b/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c @@ -4,6 +4,7 @@ #include "overlays/actors/ovl_En_Zl3/z_en_zl3.h" #include "overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" +#include "textures/boss_title_cards/object_ganon.h" #include "assets/objects/object_ganon/object_ganon.h" #include "assets/objects/object_ganon_anime1/object_ganon_anime1.h" #include "assets/objects/object_ganon_anime2/object_ganon_anime2.h" @@ -119,6 +120,8 @@ EnZl3* sBossGanonZelda; GanondorfEffect sBossGanonEffectBuf[200]; +static u8 sWindowShatterTex[2048] = { {0} }; + void BossGanonEff_SpawnWindowShard(PlayState* play, Vec3f* pos, Vec3f* velocity, f32 scale) { static Color_RGB8 shardColors[] = { { 255, 175, 85 }, { 155, 205, 155 }, { 155, 125, 55 } }; s16 i; @@ -453,6 +456,13 @@ void BossGanon_Init(Actor* thisx, PlayState* play2) { Collider_SetCylinder(play, &this->collider, thisx, &sLightBallCylinderInit); } } + + for (int i = 0; i < ARRAY_COUNT(sWindowShatterTex); i++) { + sWindowShatterTex[i] = 0; + } + + Gfx_RegisterBlendedTexture(ganon_boss_sceneTex_006C18, sWindowShatterTex, NULL); + Gfx_RegisterBlendedTexture(ganon_boss_sceneTex_007418, sWindowShatterTex, NULL); } void BossGanon_Destroy(Actor* thisx, PlayState* play) { @@ -1095,7 +1105,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) { if (!(gSaveContext.eventChkInf[7] & 0x100)) { TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gGanondorfTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gGanondorfTitleCardENGTex), 160, 180, 128, 40, true); } gSaveContext.eventChkInf[7] |= 0x100; @@ -1210,14 +1220,12 @@ void BossGanon_SetupTowerCutscene(BossGanon* this, PlayState* play) { void BossGanon_ShatterWindows(u8 windowShatterState) { s16 i; - u8* tex1 = GetResourceDataByNameHandlingMQ(SEGMENTED_TO_VIRTUAL(ganon_boss_sceneTex_006C18)); - u8* tex2 = GetResourceDataByNameHandlingMQ(SEGMENTED_TO_VIRTUAL(ganon_boss_sceneTex_007418)); u8* templateTex = GetResourceDataByName(SEGMENTED_TO_VIRTUAL(gGanondorfWindowShatterTemplateTex), false); - for (i = 0; i < 2048; i++) { - if ((tex1[i] != 0) && (Rand_ZeroOne() < 0.03f)) { + for (i = 0; i < ARRAY_COUNT(sWindowShatterTex); i++) { + if ((sWindowShatterTex[i] != 1) && (Rand_ZeroOne() < 0.03f)) { if ((templateTex[i] == 0) || (windowShatterState == GDF_WINDOW_SHATTER_FULL)) { - tex1[i] = tex2[i] = 1; + sWindowShatterTex[i] = 1; } } } @@ -2776,7 +2784,7 @@ void BossGanon_UpdateDamage(BossGanon* this, PlayState* play) { Rand_ZeroFloat(200.0f) + 500.0f, 0x1E); } - damage = flags = CollisionCheck_GetSwordDamage(acHitInfo->toucher.dmgFlags); + damage = flags = CollisionCheck_GetSwordDamage(acHitInfo->toucher.dmgFlags, play); if (flags == 0) { damage = 2; @@ -3866,10 +3874,9 @@ void BossGanon_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - // Invalidate textures if they have changed + // Invalidate texture mask if it has changed if (this->windowShatterState != GDF_WINDOW_SHATTER_OFF) { - gSPInvalidateTexCache(POLY_OPA_DISP++, ganon_boss_sceneTex_006C18); - gSPInvalidateTexCache(POLY_OPA_DISP++, ganon_boss_sceneTex_007418); + gSPInvalidateTexCache(POLY_OPA_DISP++, sWindowShatterTex); } Gfx_SetupDL_25Opa(play->state.gfxCtx); diff --git a/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c b/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c index f4c239d6d..a1cfaa684 100644 --- a/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c +++ b/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c @@ -2,6 +2,7 @@ #include "overlays/actors/ovl_Demo_Gj/z_demo_gj.h" #include "overlays/actors/ovl_En_Zl3/z_en_zl3.h" #include "objects/object_ganon/object_ganon.h" +#include "textures/boss_title_cards/object_ganon2.h" #include "objects/object_ganon2/object_ganon2.h" #include "objects/object_ganon_anime3/object_ganon_anime3.h" #include "objects/object_geff/object_geff.h" @@ -708,7 +709,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) { if (this->csTimer == 80) { BossGanon2_SetObjectSegment(this, play, OBJECT_GANON2, false); TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gGanonTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gGanonTitleCardENGTex), 160, 180, 128, 40, true); //It has translation but they are all the same. they all say "GANON" only } this->unk_3A4.x = ((this->actor.world.pos.x + 500.0f) - 350.0f) + 100.0f; @@ -3155,4 +3156,4 @@ void BossGanon2_Reset(void) { memset(D_809105D8, 0, sizeof(D_809105D8)); memset(D_80910608, 0, sizeof(D_80910608)); memset(sBossGanon2Particles, 0, sizeof(sBossGanon2Particles)); -} \ No newline at end of file +} diff --git a/soh/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c b/soh/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c index ee63f6a64..642dd4559 100644 --- a/soh/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c +++ b/soh/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c @@ -181,6 +181,8 @@ static u8 sDecayMaskTotal[16 * 16] = { }; // clang-format on +static u8 sDecayTex[16 * 16] = { { 0 } }; + // These are Phantom Ganon's body textures, but I don't know which is which. static void* sLimbTex_rgba16_8x8[] = { gPhantomGanonLimbTex_00A800, gPhantomGanonLimbTex_00AE80, gPhantomGanonLimbTex_00AF00, @@ -208,66 +210,9 @@ static InitChainEntry sInitChain[] = { static Vec3f sAudioVec = { 0.0f, 0.0f, 50.0f }; -void BossGanondrof_ClearPixels8x8(s16* texture, u8* mask, s16 index) -{ - if (mask[index]) { - WriteTextureDataInt16ByName(texture, index / 4, 0, true); - } -} - -void BossGanondrof_ClearPixels16x8(s16* texture, u8* mask, s16 index) { - if (mask[index]) { - WriteTextureDataInt16ByName(texture, index / 2, 0, false); - - } -} - -void BossGanondrof_ClearPixels16x16(s16* texture, u8* mask, s16 index, s16 bpp) { - if (mask[index]) { - WriteTextureDataInt16ByName(texture, index, 0, false); - } -} - -void BossGanondrof_ClearPixels32x16(s16* texture, u8* mask, s16 index) { - if (mask[index]) { - s16 i = (index & 0xF) + ((index & 0xF0) << 1); - - WriteTextureDataInt16ByName(texture, i + 0x10, 0, false); - WriteTextureDataInt16ByName(texture, i, 0, false); - } -} - -void BossGanondrof_ClearPixels16x32(s16* texture, u8* mask, s16 index) { - if (mask[index]) { - s16 i = ((index & 0xF) * 2) + ((index & 0xF0) * 2); - - WriteTextureDataInt16ByName(texture, i + 1, 0, false); - WriteTextureDataInt16ByName(texture, i, 0, false); - } - -} - void BossGanondrof_ClearPixels(u8* mask, s16 index) { - s16 i; - - for (i = 0; i < 5; i++) { - // ARRAY_COUNT can't be used here because the arrays aren't guaranteed to be the same size. - BossGanondrof_ClearPixels8x8(SEGMENTED_TO_VIRTUAL(sLimbTex_rgba16_8x8[i]), mask, index); - BossGanondrof_ClearPixels16x8(SEGMENTED_TO_VIRTUAL(sLimbTex_rgba16_16x8[i]), mask, index); - } - - for (i = 0; i < ARRAY_COUNT(sLimbTex_rgba16_16x16); i++) { - BossGanondrof_ClearPixels16x16(SEGMENTED_TO_VIRTUAL(sLimbTex_rgba16_16x16[i]), mask, index, 2); - } - - for (i = 0; i < ARRAY_COUNT(sLimbTex_rgba16_16x32); i++) { - BossGanondrof_ClearPixels16x32(SEGMENTED_TO_VIRTUAL(sLimbTex_rgba16_16x32[i]), mask, index); - } - - BossGanondrof_ClearPixels32x16(SEGMENTED_TO_VIRTUAL(gPhantomGanonLimbTex_00B380), mask, index); - BossGanondrof_ClearPixels16x32(SEGMENTED_TO_VIRTUAL(gPhantomGanonEyeTex), mask, index); - for (i = 0; i < ARRAY_COUNT(sMouthTex_ci8_16x16); i++) { - BossGanondrof_ClearPixels16x16(SEGMENTED_TO_VIRTUAL(sMouthTex_ci8_16x16[i]), mask, index, 1); + if (mask[index]) { + sDecayTex[index] = 1; } } @@ -311,6 +256,26 @@ void BossGanondrof_Init(Actor* thisx, PlayState* play) { Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_FHG, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, this->actor.params); } + + for (int i = 0; i < ARRAY_COUNT(sDecayTex); i++) { + sDecayTex[i] = 0; + } + + for (int i = 0; i < 5; i++) { + Gfx_RegisterBlendedTexture(sLimbTex_rgba16_8x8[i], sDecayTex, NULL); + Gfx_RegisterBlendedTexture(sLimbTex_rgba16_16x8[i], sDecayTex, NULL); + } + for (int i = 0; i < ARRAY_COUNT(sLimbTex_rgba16_16x16); i++) { + Gfx_RegisterBlendedTexture(sLimbTex_rgba16_16x16[i], sDecayTex, NULL); + } + for (int i = 0; i < ARRAY_COUNT(sLimbTex_rgba16_16x32); i++) { + Gfx_RegisterBlendedTexture(sLimbTex_rgba16_16x32[i], sDecayTex, NULL); + } + Gfx_RegisterBlendedTexture(gPhantomGanonLimbTex_00B380, sDecayTex, NULL); + Gfx_RegisterBlendedTexture(gPhantomGanonEyeTex, sDecayTex, NULL); + for (int i = 0; i < ARRAY_COUNT(sMouthTex_ci8_16x16); i++) { + Gfx_RegisterBlendedTexture(sMouthTex_ci8_16x16[i], sDecayTex, NULL); + } } void BossGanondrof_Destroy(Actor* thisx, PlayState* play) { @@ -1271,7 +1236,7 @@ void BossGanondrof_CollisionCheck(BossGanondrof* this, PlayState* play) { if (dmgFlags & 0x80) { return; } - dmg = CollisionCheck_GetSwordDamage(dmgFlags); + dmg = CollisionCheck_GetSwordDamage(dmgFlags, play); (dmg == 0) ? (dmg = 2) : (canKill = true); if (((s8)this->actor.colChkInfo.health > 2) || canKill) { this->actor.colChkInfo.health -= dmg; @@ -1512,21 +1477,7 @@ void BossGanondrof_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); if (this->work[GND_BODY_DECAY_FLAG]) { - for (int i = 0; i < 5; i++) { - gSPInvalidateTexCache(POLY_OPA_DISP++, sLimbTex_rgba16_8x8[i]); - gSPInvalidateTexCache(POLY_OPA_DISP++, sLimbTex_rgba16_16x8[i]); - } - for (int i = 0; i < ARRAY_COUNT(sLimbTex_rgba16_16x16); i++) { - gSPInvalidateTexCache(POLY_OPA_DISP++, sLimbTex_rgba16_16x16[i]); - } - for (int i = 0; i < ARRAY_COUNT(sLimbTex_rgba16_16x32); i++) { - gSPInvalidateTexCache(POLY_OPA_DISP++, sLimbTex_rgba16_16x32[i]); - } - gSPInvalidateTexCache(POLY_OPA_DISP++, gPhantomGanonLimbTex_00B380); - gSPInvalidateTexCache(POLY_OPA_DISP++, gPhantomGanonEyeTex); - for (int i = 0; i < ARRAY_COUNT(sMouthTex_ci8_16x16); i++) { - gSPInvalidateTexCache(POLY_OPA_DISP++, sMouthTex_ci8_16x16[i]); - } + gSPInvalidateTexCache(POLY_OPA_DISP++, sDecayTex); } osSyncPrintf("MOVE P = %x\n", this->actor.update); diff --git a/soh/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c b/soh/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c index 732e0b514..0bc49d3f0 100644 --- a/soh/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c +++ b/soh/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c @@ -1,4 +1,5 @@ #include "z_boss_goma.h" +#include "textures/boss_title_cards/object_goma.h" #include "objects/object_goma/object_goma.h" #include "overlays/actors/ovl_En_Goma/z_en_goma.h" #include "overlays/actors/ovl_Door_Shutter/z_door_shutter.h" @@ -255,6 +256,9 @@ static u8 sClearPixelTableSecondPass[16 * 16] = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; +static u8 sClearPixelTex16[16 * 16] = { { 0 } }; +static u8 sClearPixelTex32[32 * 32] = { { 0 } }; + // indexed by limb (where the root limb is 1) static u8 sDeadLimbLifetime[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -289,47 +293,20 @@ static u8 sDeadLimbLifetime[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -/** - * Sets the `i`th pixel of a 16x16 RGBA16 image to 0 (transparent black) - * according to the `clearPixelTable` - */ -void BossGoma_ClearPixels16x16Rgba16(s16* rgba16image, u8* clearPixelTable, s16 i) -{ - if (clearPixelTable[i]) { - rgba16image[i] = 0; - } -} - -/** - * Sets the `i`th 2x2 pixels block of a 32x32 RGBA16 image to 0 (transparent black) - * according to the `clearPixelTable` - */ -void BossGoma_ClearPixels32x32Rgba16(s16* rgba16image, u8* clearPixelTable, s16 i) { - s16* targetPixel; - - if (clearPixelTable[i]) { - // address of the top left pixel in a 2x2 pixels block located at - // (i & 0xF, i >> 4) in a 16x16 grid of 2x2 pixels - targetPixel = rgba16image + ((i & 0xF) * 2 + (i & 0xF0) * 4); - // set the 2x2 block of pixels to 0 - targetPixel[0] = 0; - targetPixel[1] = 0; - targetPixel[32 + 0] = 0; - targetPixel[32 + 1] = 0; - } -} - /** * Clear pixels from Gohma's textures */ void BossGoma_ClearPixels(u8* clearPixelTable, s16 i) { - BossGoma_ClearPixels16x16Rgba16(GetResourceDataByName(SEGMENTED_TO_VIRTUAL(gGohmaBodyTex), false), clearPixelTable, i); - BossGoma_ClearPixels16x16Rgba16(GetResourceDataByName(SEGMENTED_TO_VIRTUAL(gGohmaShellUndersideTex), false), clearPixelTable, i); - BossGoma_ClearPixels16x16Rgba16(GetResourceDataByName(SEGMENTED_TO_VIRTUAL(gGohmaDarkShellTex), false), clearPixelTable, i); - BossGoma_ClearPixels16x16Rgba16(GetResourceDataByName(SEGMENTED_TO_VIRTUAL(gGohmaEyeTex), false), clearPixelTable, i); + if (clearPixelTable[i]) { + sClearPixelTex16[i] = 1; - BossGoma_ClearPixels32x32Rgba16(GetResourceDataByName(SEGMENTED_TO_VIRTUAL(gGohmaShellTex), false), clearPixelTable, i); - BossGoma_ClearPixels32x32Rgba16(GetResourceDataByName(SEGMENTED_TO_VIRTUAL(gGohmaIrisTex), false), clearPixelTable, i); + u8* targetPixel = sClearPixelTex32 + ((i & 0xF) * 2 + (i & 0xF0) * 4); + // set the 2x2 block of pixels to 0 + targetPixel[0] = 1; + targetPixel[1] = 1; + targetPixel[32 + 0] = 1; + targetPixel[32 + 1] = 1; + } } static InitChainEntry sInitChain[] = { @@ -365,6 +342,21 @@ void BossGoma_Init(Actor* thisx, PlayState* play) { 0, WARP_DUNGEON_CHILD); Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, 141.0f, -640.0f, -84.0f, 0, 0, 0, 0, true); } + + for (int i = 0; i < ARRAY_COUNT(sClearPixelTex16); i++) { + sClearPixelTex16[i] = 0; + } + + for (int i = 0; i < ARRAY_COUNT(sClearPixelTex32); i++) { + sClearPixelTex32[i] = 0; + } + + Gfx_RegisterBlendedTexture(gGohmaBodyTex, sClearPixelTex16, NULL); + Gfx_RegisterBlendedTexture(gGohmaShellUndersideTex, sClearPixelTex16, NULL); + Gfx_RegisterBlendedTexture(gGohmaDarkShellTex, sClearPixelTex16, NULL); + Gfx_RegisterBlendedTexture(gGohmaEyeTex, sClearPixelTex16, NULL); + Gfx_RegisterBlendedTexture(gGohmaShellTex, sClearPixelTex32, NULL); + Gfx_RegisterBlendedTexture(gGohmaIrisTex, sClearPixelTex32, NULL); } void BossGoma_PlayEffectsAndSfx(BossGoma* this, PlayState* play, s16 arg2, s16 amountMinus1) { @@ -928,7 +920,7 @@ void BossGoma_Encounter(BossGoma* this, PlayState* play) { if (!(gSaveContext.eventChkInf[7] & 1)) { TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gGohmaTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gGohmaTitleCardENGTex), 160, 180, 128, 40, true); } Audio_QueueSeqCmd(SEQ_PLAYER_BGM_MAIN << 24 | NA_BGM_BOSS); @@ -1831,7 +1823,7 @@ void BossGoma_UpdateHit(BossGoma* this, PlayState* play) { BossGoma_SetupFallStruckDown(this); Audio_PlayActorSound2(&this->actor, NA_SE_EN_GOMA_DAM2); } else if (this->actionFunc == BossGoma_FloorStunned && - (damage = CollisionCheck_GetSwordDamage(acHitInfo->toucher.dmgFlags)) != 0) { + (damage = CollisionCheck_GetSwordDamage(acHitInfo->toucher.dmgFlags, play)) != 0) { this->actor.colChkInfo.health -= damage; if ((s8)this->actor.colChkInfo.health > 0) { @@ -2137,12 +2129,8 @@ void BossGoma_Draw(Actor* thisx, PlayState* play) { // Invalidate Texture Cache since Goma modifies her own texture if (this->visualState == VISUALSTATE_DEFEATED) { - gSPInvalidateTexCache(POLY_OPA_DISP++, gGohmaBodyTex); - gSPInvalidateTexCache(POLY_OPA_DISP++, gGohmaShellUndersideTex); - gSPInvalidateTexCache(POLY_OPA_DISP++, gGohmaDarkShellTex); - gSPInvalidateTexCache(POLY_OPA_DISP++, gGohmaEyeTex); - gSPInvalidateTexCache(POLY_OPA_DISP++, gGohmaShellTex); - gSPInvalidateTexCache(POLY_OPA_DISP++, gGohmaIrisTex); + gSPInvalidateTexCache(POLY_OPA_DISP++, sClearPixelTex16); + gSPInvalidateTexCache(POLY_OPA_DISP++, sClearPixelTex32); } if (this->noBackfaceCulling) { diff --git a/soh/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c b/soh/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c index 3df8252fb..bcd457172 100644 --- a/soh/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c +++ b/soh/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c @@ -5,6 +5,7 @@ */ #include "z_boss_mo.h" +#include "textures/boss_title_cards/object_mo.h" #include "objects/object_mo/object_mo.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" #include "objects/gameplay_keep/gameplay_keep.h" @@ -1437,7 +1438,7 @@ void BossMo_IntroCs(BossMo* this, PlayState* play) { } if (this->timers[2] == 130) { TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gMorphaTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gMorphaTitleCardENGTex), 160, 180, 128, 40, true); gSaveContext.eventChkInf[7] |= 0x10; } break; @@ -1767,7 +1768,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) { // "hit 2 !!" osSyncPrintf("Core_Damage_check 当り 2 !!\n"); if ((this->work[MO_TENT_ACTION_STATE] != MO_CORE_UNDERWATER) && (this->work[MO_TENT_INVINC_TIMER] == 0)) { - u8 damage = CollisionCheck_GetSwordDamage(hurtbox->toucher.dmgFlags); + u8 damage = CollisionCheck_GetSwordDamage(hurtbox->toucher.dmgFlags, play); if ((damage != 0) && (this->work[MO_TENT_ACTION_STATE] < MO_CORE_ATTACK)) { // "sword hit !!" diff --git a/soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c b/soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c index 36781cb81..4f1d8244f 100644 --- a/soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c +++ b/soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c @@ -5,6 +5,7 @@ */ #include "z_boss_sst.h" +#include "textures/boss_title_cards/object_sst.h" #include "objects/object_sst/object_sst.h" #include "objects/gameplay_keep/gameplay_keep.h" #include "overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.h" @@ -608,7 +609,7 @@ void BossSst_HeadIntro(BossSst* this, PlayState* play) { } else if (revealStateTimer == 85) { if (!(gSaveContext.eventChkInf[7] & 0x80)) { TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gBongoTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gBongoTitleCardENGTex), 160, 180, 128, 40, true); } Audio_QueueSeqCmd(SEQ_PLAYER_BGM_MAIN << 24 | NA_BGM_BOSS); Animation_MorphToPlayOnce(&this->skelAnime, &gBongoHeadEyeCloseAnim, -5.0f); diff --git a/soh/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c b/soh/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c index 8797a86f2..d513fa6bb 100644 --- a/soh/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c +++ b/soh/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c @@ -1,5 +1,6 @@ #include "z_boss_tw.h" #include "objects/gameplay_keep/gameplay_keep.h" +#include "textures/boss_title_cards/object_tw.h" #include "objects/object_tw/object_tw.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" #include "soh/frame_interpolation.h" @@ -2181,7 +2182,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) { play->envCtx.unk_BE = 1; play->envCtx.unk_BD = 1; play->envCtx.unk_D8 = 0.0f; - TitleCard_InitBossName(play, &play->actorCtx.titleCtx, SEGMENTED_TO_VIRTUAL(gTwinrovaTitleCardTex), 160, 180, 128, 40, true); + TitleCard_InitBossName(play, &play->actorCtx.titleCtx, SEGMENTED_TO_VIRTUAL(gTwinrovaTitleCardENGTex), 160, 180, 128, 40, true); gSaveContext.eventChkInf[7] |= 0x20; Audio_QueueSeqCmd(SEQ_PLAYER_BGM_MAIN << 24 | NA_BGM_BOSS); } @@ -3080,7 +3081,7 @@ void BossTw_TwinrovaUpdate(Actor* thisx, PlayState* play2) { this->collider.base.acFlags &= ~AC_HIT; swordDamage = false; - damage = CollisionCheck_GetSwordDamage(info->toucher.dmgFlags); + damage = CollisionCheck_GetSwordDamage(info->toucher.dmgFlags, play); if (damage == 0) { damage = 2; diff --git a/soh/src/overlays/actors/ovl_Boss_Va/z_boss_va.c b/soh/src/overlays/actors/ovl_Boss_Va/z_boss_va.c index 6e79660e7..808f9ee12 100644 --- a/soh/src/overlays/actors/ovl_Boss_Va/z_boss_va.c +++ b/soh/src/overlays/actors/ovl_Boss_Va/z_boss_va.c @@ -8,6 +8,7 @@ #include +#include "textures/boss_title_cards/object_bv.h" #include "objects/object_bv/object_bv.h" #include "overlays/actors/ovl_En_Boom/z_en_boom.h" #include "objects/gameplay_keep/gameplay_keep.h" @@ -985,7 +986,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) { if (!(gSaveContext.eventChkInf[7] & 0x40)) { TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gBarinadeTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gBarinadeTitleCardENGTex), 160, 180, 128, 40, true); } if (Rand_ZeroOne() < 0.1f) { diff --git a/soh/src/overlays/actors/ovl_En_Box/z_en_box.c b/soh/src/overlays/actors/ovl_En_Box/z_en_box.c index 6b1261d25..4e864e582 100644 --- a/soh/src/overlays/actors/ovl_En_Box/z_en_box.c +++ b/soh/src/overlays/actors/ovl_En_Box/z_en_box.c @@ -756,16 +756,16 @@ void EnBox_UpdateSizeAndTexture(EnBox* this, PlayState* play) { void EnBox_CreateExtraChestTextures() { if (hasCreatedRandoChestTextures) return; Gfx gTreasureChestChestTextures[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gSkullTreasureChestFrontTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gSkullTreasureChestSideAndTopTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gGoldTreasureChestFrontTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gGoldTreasureChestSideAndTopTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gKeyTreasureChestFrontTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gKeyTreasureChestSideAndTopTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gChristmasRedTreasureChestFrontTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gChristmasRedTreasureChestSideAndTopTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gChristmasGreenTreasureChestFrontTex", false)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, GetResourceDataByName("__OTR__objects/object_box/gChristmasGreenTreasureChestSideAndTopTex", false)), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gSkullTreasureChestFrontTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gSkullTreasureChestSideAndTopTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gGoldTreasureChestFrontTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gGoldTreasureChestSideAndTopTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gKeyTreasureChestFrontTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gKeyTreasureChestSideAndTopTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gChristmasRedTreasureChestFrontTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gChristmasRedTreasureChestSideAndTopTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gChristmasGreenTreasureChestFrontTex"), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, "__OTR__objects/object_box/gChristmasGreenTreasureChestSideAndTopTex"), }; Gfx* frontCmd = ResourceMgr_LoadGfxByName(gTreasureChestChestFrontDL); @@ -839,7 +839,7 @@ void EnBox_CreateExtraChestTextures() { gChristmasGreenTreasureChestChestSideAndLidDL[29] = gTreasureChestChestTextures[9]; gChristmasGreenTreasureChestChestSideAndLidDL[45] = gTreasureChestChestTextures[8]; - ResourceMgr_ListFiles("assets/objects/object_box/gChristmas*", &hasChristmasChestTexturesAvailable); + ResourceMgr_ListFiles("objects/object_box/gChristmas*", &hasChristmasChestTexturesAvailable); hasCreatedRandoChestTextures = 1; } diff --git a/soh/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.c b/soh/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.c index 457d689f1..066ce12c0 100644 --- a/soh/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.c +++ b/soh/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.c @@ -96,7 +96,7 @@ static u16 sVerticesMap[GANON_MANT_NUM_STRANDS * GANON_MANT_NUM_JOINTS] = { #define MANT_TEX_WIDTH 32 #define MANT_TEX_HEIGHT 64 -//static u64 sForceAlignment = 0; +static u8 sMaskTex[MANT_TEX_WIDTH * MANT_TEX_HEIGHT] = { {0} }; #include "overlays/ovl_En_Ganon_Mant/ovl_En_Ganon_Mant.h" @@ -104,6 +104,12 @@ void EnGanonMant_Init(Actor* thisx, PlayState* play) { EnGanonMant* this = (EnGanonMant*)thisx; this->actor.flags &= ~ACTOR_FLAG_0; + + for (int i = 0; i < ARRAY_COUNT(sMaskTex); i++) { + sMaskTex[i] = 0; + } + + Gfx_RegisterBlendedTexture(gMantTex, sMaskTex, NULL); } void EnGanonMant_Destroy(Actor* thisx, PlayState* play) { @@ -127,8 +133,6 @@ void EnGanonMant_Tear(EnGanonMant* this) { s16 count = shape->count; s16* tearAreaSizes = shape->tearAreaSizes; - u8* gMantTexProper = GetResourceDataByName(gMantTex, false); - for (i = 0; i < count; i++) { if ((0 <= tx && tx < MANT_TEX_WIDTH) && (0 <= ty && ty < MANT_TEX_HEIGHT)) { for (areaX = 0; areaX <= tearAreaSizes[i]; areaX++) { @@ -136,7 +140,7 @@ void EnGanonMant_Tear(EnGanonMant* this) { for (areaY = 0; areaY <= tearAreaSizes[i]; areaY++) { texIdx = (s16)((s16)tx + ((s16)ty * MANT_TEX_WIDTH)) + ((s16)areaX + ((s16)areaY * MANT_TEX_WIDTH)); if (texIdx < MANT_TEX_WIDTH * MANT_TEX_HEIGHT) { - ((u16*)gMantTexProper)[texIdx] = 0; + sMaskTex[texIdx] = 1; } } } @@ -365,8 +369,8 @@ void EnGanonMant_DrawCloak(PlayState* play, EnGanonMant* this) { OPEN_DISPS(play->state.gfxCtx); - // Invalidate cape texture as it may have been torn - gSPInvalidateTexCache(POLY_OPA_DISP++, gMantTex); + // Invalidate cape texture mask as it may have been torn + gSPInvalidateTexCache(POLY_OPA_DISP++, sMaskTex); Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_NEW); @@ -379,9 +383,9 @@ void EnGanonMant_DrawCloak(PlayState* play, EnGanonMant* this) { // set vertices, vertices are double buffered to prevent // modification of vertices as they are being drawn if (this->frameTimer % 2 != 0) { - gSPSegment(POLY_OPA_DISP++, 0x0C, gMant1Vtx); + gSPSegmentLoadRes(POLY_OPA_DISP++, 0x0C, gMant1Vtx); } else { - gSPSegment(POLY_OPA_DISP++, 0x0C, gMant2Vtx); + gSPSegmentLoadRes(POLY_OPA_DISP++, 0x0C, gMant2Vtx); } // draw cloak diff --git a/soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c b/soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c index 3ad2e9eee..48de7b549 100644 --- a/soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c +++ b/soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c @@ -644,7 +644,7 @@ void EnGoma_UpdateHit(EnGoma* this, PlayState* play) { this->hurtTimer = 8; } } else { - swordDamage = CollisionCheck_GetSwordDamage(dmgFlags); + swordDamage = CollisionCheck_GetSwordDamage(dmgFlags, play); if (swordDamage) { EffectSsSibuki_SpawnBurst(play, &this->actor.focus.pos); diff --git a/soh/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c b/soh/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c index b3ca9f13a..60c51c036 100644 --- a/soh/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c +++ b/soh/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c @@ -418,15 +418,15 @@ void EnJsjutan_Draw(Actor* thisx, PlayState* play2) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); // Draws the carpet's shadow texture. - gSPSegment(POLY_OPA_DISP++, 0x0C, sShadowTex); + gSPSegmentLoadRes(POLY_OPA_DISP++, 0x0C, sShadowTex); gSPDisplayList(POLY_OPA_DISP++, sShadowMaterialDL); gDPPipeSync(POLY_OPA_DISP++); // Draws the carpet's shadow vertices. Swaps them between frames to get a smoother result. if (play->gameplayFrames % 2 != 0) { - gSPSegment(POLY_OPA_DISP++, 0x0C, gShadowOddVtx); + gSPSegmentLoadRes(POLY_OPA_DISP++, 0x0C, gShadowOddVtx); } else { - gSPSegment(POLY_OPA_DISP++, 0x0C, sShadowEvenVtx); + gSPSegmentLoadRes(POLY_OPA_DISP++, 0x0C, sShadowEvenVtx); } gSPDisplayList(POLY_OPA_DISP++, sModelDL); @@ -443,9 +443,9 @@ void EnJsjutan_Draw(Actor* thisx, PlayState* play2) { // Draws the carpet vertices. if (play->gameplayFrames % 2 != 0) { - gSPSegment(POLY_OPA_DISP++, 0x0C, sCarpetOddVtx); + gSPSegmentLoadRes(POLY_OPA_DISP++, 0x0C, sCarpetOddVtx); } else { - gSPSegment(POLY_OPA_DISP++, 0x0C, sCarpetEvenVtx); + gSPSegmentLoadRes(POLY_OPA_DISP++, 0x0C, sCarpetEvenVtx); } gSPDisplayList(POLY_OPA_DISP++, sModelDL); diff --git a/soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 052c77f5f..0dd77b716 100644 --- a/soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -572,52 +572,22 @@ void EnMag_DrawImageRGBA32(Gfx** gfxp, s16 centerX, s16 centerY, const char* sou s32 pad; s32 i; - source = GetResourceDataByName(source, false); - Gfx_SetupDL_56Ptr(&gfx); - - curTexture = source; + rectLeft = centerX - (width / 2); rectTop = centerY - (height / 2); - textureHeight = 4096 / (width << 2); - remainingSize = (width * height) << 2; - textureSize = (width * textureHeight) << 2; - textureCount = remainingSize / textureSize; - if ((remainingSize % textureSize) != 0) { - textureCount += 1; - } - - gDPSetTileCustom(gfx++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, textureHeight, 0, G_TX_NOMIRROR | G_TX_CLAMP, + + gDPSetTileCustom(gfx++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, height, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - - remainingSize -= textureSize; - - for (i = 0; i < textureCount; i++) { - gDPSetTextureImage(gfx++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, curTexture); - - gDPLoadSync(gfx++); - gDPLoadTile(gfx++, G_TX_LOADTILE, 0, 0, (width - 1) << 2, (textureHeight - 1) << 2); - - gSPTextureRectangle(gfx++, rectLeft << 2, rectTop << 2, (rectLeft + (s32)width) << 2, - (rectTop + textureHeight) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - - curTexture += textureSize; - rectTop += textureHeight; - - if ((remainingSize - textureSize) < 0) { - if (remainingSize > 0) { - textureHeight = remainingSize / (s32)(width << 2); - remainingSize -= textureSize; - - gDPSetTileCustom(gfx++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, textureHeight, 0, - G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); - } - } else { - remainingSize -= textureSize; - } - } - + + gDPSetTextureImage(gfx++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, source); + + gDPLoadSync(gfx++); + gDPLoadTile(gfx++, G_TX_LOADTILE, 0, 0, (width - 1) << 2, (height - 1) << 2); + + gSPTextureRectangle(gfx++, rectLeft << 2, rectTop << 2, (rectLeft + (s32)width) << 2, + (rectTop + height) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + *gfxp = gfx; } diff --git a/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c b/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c new file mode 100644 index 000000000..c284af550 --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c @@ -0,0 +1,878 @@ +/* + * File: z_en_partner.c + * Overlay: ovl_En_Partner + * Description: Navi Coop Partner + */ + +#include "z_en_partner.h" +#include "objects/gameplay_keep/gameplay_keep.h" +#include +#include "overlays/actors/ovl_En_Si/z_en_si.h" +#include +#include +#include + +#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_5 | ACTOR_FLAG_10 | ACTOR_FLAG_26) + +void EnPartner_Init(Actor* thisx, PlayState* play); +void EnPartner_Destroy(Actor* thisx, PlayState* play); +void EnPartner_Update(Actor* thisx, PlayState* play); +void EnPartner_Draw(Actor* thisx, PlayState* play); +void EnPartner_SpawnSparkles(EnPartner* this, PlayState* play, s32 sparkleLife); + +const ActorInit En_Partner_InitVars = { + ACTOR_EN_PARTNER, + ACTORCAT_ITEMACTION, + FLAGS, + OBJECT_GAMEPLAY_KEEP, + sizeof(EnPartner), + (ActorFunc)EnPartner_Init, + (ActorFunc)EnPartner_Destroy, + (ActorFunc)EnPartner_Update, + (ActorFunc)EnPartner_Draw, + NULL, +}; + +static InitChainEntry sInitChain[] = { + ICHAIN_VEC3F_DIV1000(scale, 8, ICHAIN_STOP), +}; + +static Color_RGBAf sInnerColors[] = { + { 255.0f, 255.0f, 255.0f, 255.0f }, +}; + +static Color_RGBAf sOuterColors[] = { + { 0.0f, 255.0f, 0.0f, 255.0f }, +}; + +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_NONE, + AT_ON | AT_TYPE_PLAYER, + AC_ON | AC_TYPE_PLAYER, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0x00020002, 0x00, 0x01 }, + { 0x4FC00748, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_ON, + }, + { 12, 27, 0, { 0, 0, 0 } }, +}; + +static CollisionCheckInfoInit sCCInfoInit = { 0, 12, 60, MASS_HEAVY }; + +void EnPartner_Init(Actor* thisx, PlayState* play) { + EnPartner* this = (EnPartner*)thisx; + s32 pad; + Player* player = GET_PLAYER(play); + s32 i; + + this->usedItem = 0xFF; + this->canMove = 1; + this->shouldDraw = 1; + this->hookshotTarget = NULL; + GET_PLAYER(play)->ivanFloating = 0; + + this->innerColor.r = 255.0f; + this->innerColor.g = 255.0f; + this->innerColor.b = 255.0f; + this->innerColor.a = 255.0f; + + this->outerColor.r = 0.0f; + this->outerColor.g = 255.0f; + this->outerColor.b = 0.0f; + this->outerColor.a = 255.0f; + + this->usedItemButton = 0xFF; + + Collider_InitCylinder(play, &this->collider); + Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); + Collider_UpdateCylinder(&this->actor, &this->collider); + CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sCCInfoInit); + this->actor.colChkInfo.mass = MASS_HEAVY; + this->collider.base.ocFlags1 |= OC1_TYPE_PLAYER; + this->collider.info.toucher.damage = 1; + GET_PLAYER(play)->ivanDamageMultiplier = 1; + + Actor_ProcessInitChain(thisx, sInitChain); + SkelAnime_Init(play, &this->skelAnime, &gFairySkel, &gFairyAnim, this->jointTable, this->morphTable, 15); + ActorShape_Init(&thisx->shape, 1000.0f, ActorShadow_DrawCircle, 15.0f); + thisx->shape.shadowAlpha = 0xFF; + + Lights_PointGlowSetInfo(&this->lightInfoGlow, thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, 200, 255, + 200, 0); + this->lightNodeGlow = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfoGlow); + + Lights_PointNoGlowSetInfo(&this->lightInfoNoGlow, thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, 200, + 255, 200, 0); + this->lightNodeNoGlow = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfoNoGlow); + + thisx->room = -1; +} + +void EnPartner_Destroy(Actor* thisx, PlayState* play) { + s32 pad; + EnPartner* this = (EnPartner*)thisx; + + LightContext_RemoveLight(play, &play->lightCtx, this->lightNodeGlow); + LightContext_RemoveLight(play, &play->lightCtx, this->lightNodeNoGlow); + + Collider_DestroyCylinder(play, &this->collider); +} + +void EnPartner_UpdateLights(EnPartner* this, PlayState* play) { + s16 glowLightRadius = 100; + s16 lightRadius = 200; + + if (this->shouldDraw == 0) { + glowLightRadius = 0; + lightRadius = 0; + } + + Player* player; + + player = GET_PLAYER(play); + Lights_PointNoGlowSetInfo(&this->lightInfoNoGlow, player->actor.world.pos.x, (s16)(player->actor.world.pos.y) + 69, + player->actor.world.pos.z, 200, 255, 200, lightRadius); + + Lights_PointGlowSetInfo(&this->lightInfoGlow, this->actor.world.pos.x, this->actor.world.pos.y + 9, + this->actor.world.pos.z, 200, 255, 200, glowLightRadius); + + Actor_SetScale(&this->actor, this->actor.scale.x); +} + +void EnPartner_SpawnSparkles(EnPartner* this, PlayState* play, s32 sparkleLife) { + static Vec3f sparkleVelocity = { 0.0f, -0.05f, 0.0f }; + static Vec3f sparkleAccel = { 0.0f, -0.025f, 0.0f }; + s32 pad; + Vec3f sparklePos; + Color_RGBA8 primColor; + Color_RGBA8 envColor; + + sparklePos.x = Rand_CenteredFloat(6.0f) + this->actor.world.pos.x; + sparklePos.y = (Rand_ZeroOne() * 6.0f) + this->actor.world.pos.y + 5; + sparklePos.z = Rand_CenteredFloat(6.0f) + this->actor.world.pos.z; + + primColor.r = this->innerColor.r; + primColor.g = this->innerColor.g; + primColor.b = this->innerColor.b; + + envColor.r = this->outerColor.r; + envColor.g = this->outerColor.g; + envColor.b = this->outerColor.b; + + EffectSsKiraKira_SpawnDispersed(play, &sparklePos, &sparkleVelocity, &sparkleAccel, &primColor, &envColor, + 1500, sparkleLife); +} + +Vec3f Vec3fNormalize(Vec3f vec) { + f32 norm = sqrt((vec.x * vec.x) + (vec.y * vec.y) + (vec.z * vec.z)); + + if (norm != 0.0f) { + vec.x /= norm; + vec.y /= norm; + vec.z /= norm; + } else { + vec.x = vec.y = vec.z = 0.0f; + } + + return vec; +} + +void CenterIvanOnLink(Actor* thisx, PlayState* play) { + EnPartner* this = (EnPartner*)thisx; + this->actor.world.pos = GET_PLAYER(play)->actor.world.pos; + this->actor.world.pos.y += Player_GetHeight(GET_PLAYER(play)) + 5.0f; +} + +static u8 magicArrowCosts[] = { 0, 4, 4, 8 }; + +void UseBow(Actor* thisx, PlayState* play, u8 started, u8 arrowType) { + EnPartner* this = (EnPartner*)thisx; + + if (started == 1) { + func_808328EC(this, NA_SE_PL_CHANGE_ARMS); + this->canMove = 0; + } else if (started == 0) { + if (this->itemTimer <= 0) { + if (AMMO(ITEM_BOW) > 0) { + if (arrowType >= 1 && !func_80087708(play, magicArrowCosts[arrowType], 0)) { + func_80078884(NA_SE_SY_ERROR); + this->canMove = 1; + return; + } + + this->itemTimer = 10; + + Actor* newarrow = Actor_SpawnAsChild( + &play->actorCtx, &this->actor, play, ACTOR_EN_ARROW, this->actor.world.pos.x, + this->actor.world.pos.y + 7, this->actor.world.pos.z, 0, this->actor.world.rot.y, 0, ARROW_NORMAL); + + switch (arrowType) { + case 1: + newarrow->params = ARROW_FIRE; + break; + case 2: + newarrow->params = ARROW_ICE; + break; + case 3: + newarrow->params = ARROW_LIGHT; + break; + } + + GET_PLAYER(play)->unk_A73 = 4; + newarrow->parent = NULL; + Inventory_ChangeAmmo(ITEM_BOW, -1); + } + } + } +} + +void UseSlingshot(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (started == 1) { + func_808328EC(this, NA_SE_PL_CHANGE_ARMS); + this->canMove = 0; + } else if (started == 0) { + if (this->itemTimer <= 0) { + if (AMMO(ITEM_SLINGSHOT) > 0) { + this->itemTimer = 10; + Actor* newarrow = Actor_SpawnAsChild( + &play->actorCtx, &this->actor, play, ACTOR_EN_ARROW, this->actor.world.pos.x, + this->actor.world.pos.y + 7, this->actor.world.pos.z, 0, this->actor.world.rot.y, 0, ARROW_SEED); + GET_PLAYER(play)->unk_A73 = 4; + newarrow->parent = NULL; + Inventory_ChangeAmmo(ITEM_SLINGSHOT, -1); + } else { + func_80078884(NA_SE_SY_ERROR); + } + } + } +} + +void UseBombs(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + if (AMMO(ITEM_BOMB) > 0 && play->actorCtx.actorLists[ACTORCAT_EXPLOSIVE].length < 3) { + this->itemTimer = 10; + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_BOM, this->actor.world.pos.x, this->actor.world.pos.y + 7, + this->actor.world.pos.z, 0, 0, 0, 0, false); + Inventory_ChangeAmmo(ITEM_BOMB, -1); + } else { + func_80078884(NA_SE_SY_ERROR); + } + } + } +} + +static Vec3f D_80854A40 = { 0.0f, 40.0f, 45.0f }; + +void UseHammer(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + this->itemTimer = 10; + static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f }; + Vec3f shockwavePos = this->actor.world.pos; + + func_808429B4(play, 27767, 7, 20); + func_8002F7DC(&this->actor, NA_SE_IT_HAMMER_HIT); + + EffectSsBlast_SpawnWhiteShockwave(play, &shockwavePos, &zeroVec, &zeroVec); + + if (this->actor.xzDistToPlayer < 100.0f && this->actor.yDistToPlayer < 35.0f) { + func_8002F71C(play, &this->actor, 8.0f, this->actor.yawTowardsPlayer, 8.0f); + } + } + } +} + +void UseBombchus(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + if (AMMO(ITEM_BOMBCHU) > 0) { + this->itemTimer = 10; + EnBom* bomb = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_BOM, this->actor.world.pos.x, this->actor.world.pos.y + 7, + this->actor.world.pos.z, 0, 0, 0, 0, false); + bomb->timer = 0; + Inventory_ChangeAmmo(ITEM_BOMBCHU, -1); + } else { + func_80078884(NA_SE_SY_ERROR); + } + } + } +} + +static Vec3f D_808547A4 = { 0.0f, 0.5f, 0.0f }; +static Vec3f D_808547B0 = { 0.0f, 0.5f, 0.0f }; + +static Color_RGBA8 D_808547BC = { 255, 255, 100, 255 }; +static Color_RGBA8 D_808547C0 = { 255, 50, 0, 0 }; + +void UseDekuStick(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + if (AMMO(ITEM_STICK) > 0) { + func_808328EC(this, NA_SE_EV_FLAME_IGNITION); + } else { + func_80078884(NA_SE_SY_ERROR); + } + } + + if (started == 2) { + if (AMMO(ITEM_STICK) > 0) { + this->stickWeaponInfo.tip = this->actor.world.pos; + this->stickWeaponInfo.tip.y += 7.0f; + + func_8002836C(play, &this->stickWeaponInfo.tip, &D_808547A4, &D_808547B0, &D_808547BC, &D_808547C0, + 200.0f, 0, 8); + + CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base); + + if (this->damageTimer <= 0) { + Inventory_ChangeAmmo(ITEM_STICK, -1); + this->damageTimer = 20; + } else { + this->damageTimer--; + } + } + } + } +} + +void UseNuts(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + if (AMMO(ITEM_NUT) > 0) { + this->itemTimer = 10; + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ARROW, this->actor.world.pos.x, this->actor.world.pos.y + 7, + this->actor.world.pos.z, 0x1000, this->actor.world.rot.y, 0, ARROW_NUT, false); + Inventory_ChangeAmmo(ITEM_NUT, -1); + } else { + func_80078884(NA_SE_SY_ERROR); + } + } + } +} + +void UseHookshot(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + func_808328EC(this, NA_SE_PL_CHANGE_ARMS); + this->canMove = 0; + this->hookshotTarget = + Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_OBJ_HSBLOCK, this->actor.world.pos.x, + this->actor.world.pos.y + 7.5f, this->actor.world.pos.z, this->actor.world.rot.x, + this->actor.world.rot.y, this->actor.world.rot.z, 2); + this->hookshotTarget->scale.x = 0.05f; + this->hookshotTarget->scale.y = 0.05f; + this->hookshotTarget->scale.z = 0.05f; + } else if (started == 0) { + Actor_Kill(this->hookshotTarget); + this->hookshotTarget = NULL; + func_808328EC(this, NA_SE_PL_CHANGE_ARMS); + this->canMove = 1; + } else if (started == 2) { + this->hookshotTarget->shape.rot.y = this->actor.world.rot.y; + } + } +} + +void UseOcarina(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + Audio_PlaySoundTransposed(&this->actor.projectedPos, NA_SE_VO_NA_HELLO_2, -6); + } + } +} + +void UseBoomerang(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + this->itemTimer = 20; + spawn_boomerang_ivan(&this->actor, play); + } + } +} + +void UseLens(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + func_80078884(NA_SE_SY_GLASSMODE_ON); + this->shouldDraw = 0; + } + + if (started == 0) { + func_80078884(NA_SE_SY_GLASSMODE_OFF); + this->shouldDraw = 1; + } + } +} + +void UseBeans(Actor* thisx, PlayState* play, u8 started) { + EnPartner* this = (EnPartner*)thisx; + + if (this->itemTimer <= 0) { + if (started == 1) { + this->entry = ItemTable_Retrieve(GI_BEAN); + if (play->actorCtx.titleCtx.alpha <= 0) { + if (gSaveContext.rupees >= 100 && GiveItemEntryWithoutActor(play, this->entry)) { + Rupees_ChangeBy(-100); + } else { + func_80078884(NA_SE_SY_ERROR); + } + } + } + } +} + +void UseSpell(Actor* thisx, PlayState* play, u8 started, u8 spellType) { + EnPartner* this = (EnPartner*)thisx; + + if (gSaveContext.magic > 0) { + if (this->itemTimer <= 0 && this->usedSpell == 0) { + if (started == 1) { + this->usedSpell = spellType; + } + } + + if (started == 0 && this->usedSpell != 0) { + this->itemTimer = 10; + gSaveContext.magicState = 5; + + switch (this->usedSpell) { + case 1: + GET_PLAYER(play)->ivanDamageMultiplier = 1; + break; + case 3: + GET_PLAYER(play)->ivanFloating = 0; + break; + } + + this->usedSpell = 0; + } + + if (started == 2) { + if (this->usedSpell != 0) { + Vec3f spE4[3]; + Vec3f newBasePos[3]; + + switch (this->usedSpell) { + case 1: //Din's + GET_PLAYER(play)->ivanDamageMultiplier = 2; + break; + case 2: //Nayru's + GET_PLAYER(play)->invincibilityTimer = -10; + break; + case 3: //Farore's + GET_PLAYER(play)->hoverBootsTimer = 10; + GET_PLAYER(play)->ivanFloating = 1; + break; + } + + gSaveContext.magicState = 3; + this->magicTimer--; + if (this->magicTimer <= 0) { + gSaveContext.magic--; + this->magicTimer = 20; + if (gSaveContext.magic <= 0) { + gSaveContext.magic = 0; + + this->itemTimer = 10; + this->usedSpell = 0; + gSaveContext.magicState = 5; + } + } + } + } + } +} + +void UseItem(uint8_t usedItem, u8 started, Actor* thisx, PlayState* play) { + EnPartner* this = (EnPartner*)thisx; + + if (this->usedItem != 0xFF && this->itemTimer <= 0) { + switch (usedItem) { + case SLOT_STICK: + UseDekuStick(this, play, started); + break; + case SLOT_BOMB: + UseBombs(this, play, started); + break; + case SLOT_BOMBCHU: + UseBombchus(this, play, started); + break; + case SLOT_NUT: + UseNuts(this, play, started); + break; + case SLOT_BOW: + UseBow(this, play, started, 0); + break; + case SLOT_ARROW_FIRE: + UseBow(this, play, started, 1); + break; + case SLOT_ARROW_ICE: + UseBow(this, play, started, 2); + break; + case SLOT_ARROW_LIGHT: + UseBow(this, play, started, 3); + break; + case SLOT_SLINGSHOT: + UseSlingshot(this, play, started); + break; + case SLOT_OCARINA: + UseOcarina(this, play, started); + break; + case SLOT_HOOKSHOT: + UseHookshot(this, play, started); + break; + case SLOT_DINS_FIRE: + UseSpell(this, play, started, 1); + break; + case SLOT_NAYRUS_LOVE: + UseSpell(this, play, started, 2); + break; + case SLOT_FARORES_WIND: + UseSpell(this, play, started, 3); + break; + case SLOT_HAMMER: + UseHammer(this, play, started); + break; + case SLOT_BOOMERANG: + UseBoomerang(this, play, started); + break; + case SLOT_LENS: + UseLens(this, play, started); + break; + case SLOT_BEAN: + UseBeans(this, play, started); + break; + } + } + + if (started == 0) { + this->usedItem = 0xFF; + } +} + +void EnPartner_Update(Actor* thisx, PlayState* play) { + s32 pad; + EnPartner* this = (EnPartner*)thisx; + + Input sControlInput = play->state.input[this->actor.params]; + + f32 relX = sControlInput.cur.stick_x / 10.0f; + f32 relY = sControlInput.cur.stick_y / 10.0f; + + Vec3f camForward = { GET_ACTIVE_CAM(play)->at.x - GET_ACTIVE_CAM(play)->eye.x, 0.0f, + GET_ACTIVE_CAM(play)->at.z - GET_ACTIVE_CAM(play)->eye.z }; + camForward = Vec3fNormalize(camForward); + + Vec3f camRight = { -camForward.z, 0.0f, camForward.x }; + + this->actor.velocity.x = 0; + this->actor.velocity.y = 0; + this->actor.velocity.z = 0; + + this->actor.velocity.x += camRight.x * relX; + this->actor.velocity.z += camRight.z * relX; + this->actor.velocity.x += camForward.x * relY; + this->actor.velocity.z += camForward.z * relY; + + if (this->actor.velocity.x != 0 || this->actor.velocity.z != 0) { + int16_t finalDir = Math_Atan2S(-this->actor.velocity.x, this->actor.velocity.z) - 0x4000; + Math_SmoothStepToS(&this->actor.world.rot.y, finalDir, 2, 10000, 0); + Math_SmoothStepToS(&this->actor.shape.rot.y, finalDir, 2, 10000, 0); + } + + if (!this->canMove) { + relX = 0; + relY = 0; + } + + Math_SmoothStepToF(&this->actor.speedXZ, sqrtf(SQ(relX) + SQ(relY)), 1.0f, 1.3f, 0.0f); + + if (this->shouldDraw == 1) { + thisx->shape.shadowAlpha = 0xFF; + EnPartner_SpawnSparkles(this, play, 12); + } else { + thisx->shape.shadowAlpha = 0; + } + + if (CHECK_BTN_ALL(sControlInput.cur.button, BTN_A) && this->canMove) { + Math_SmoothStepToF(&this->yVelocity, 6.0f, 1.0f, 1.5f, 0.0f); + } else if (CHECK_BTN_ALL(sControlInput.cur.button, BTN_B) && this->canMove) { + Math_SmoothStepToF(&this->yVelocity, -6.0f, 1.0f, 1.5f, 0.0f); + } else { + Math_SmoothStepToF(&this->yVelocity, 0.0f, 1.0f, 1.5f, 0.0f); + } + + this->actor.gravity = this->yVelocity; + + if (this->canMove == 1) { + Actor_MoveForward(&this->actor); + Actor_UpdateBgCheckInfo(play, &this->actor, 19.0f, 20.0f, 0.0f, 5); + } + + if (this->usedSpell != 0) { + func_8002F974(thisx, NA_SE_PL_MAGIC_SOUL_NORMAL - SFX_FLAG); + } + + if (!Player_InCsMode(play)) { + // Collect drops & rupees + Actor* itemActor = play->actorCtx.actorLists[ACTORCAT_MISC].head; + while (itemActor != NULL) { + if (itemActor->id == ACTOR_EN_ITEM00) { + if (itemActor->params == ITEM00_RUPEE_GREEN || itemActor->params == ITEM00_RUPEE_BLUE || + itemActor->params == ITEM00_RUPEE_RED || itemActor->params == ITEM00_RUPEE_PURPLE || + itemActor->params == ITEM00_RUPEE_ORANGE || itemActor->params == ITEM00_HEART || + itemActor->params == ITEM00_BOMBS_A || itemActor->params == ITEM00_BOMBS_B || + itemActor->params == ITEM00_ARROWS_SINGLE || itemActor->params == ITEM00_ARROWS_SMALL || + itemActor->params == ITEM00_ARROWS_MEDIUM || itemActor->params == ITEM00_ARROWS_LARGE || + itemActor->params == ITEM00_BOMBCHU || itemActor->params == ITEM00_MAGIC_SMALL || + itemActor->params == ITEM00_MAGIC_LARGE || itemActor->params == ITEM00_NUTS || + itemActor->params == ITEM00_STICK) { + f32 distanceToObject = Actor_WorldDistXYZToActor(&this->actor, itemActor); + if (distanceToObject <= 20.0f) { + itemActor->world.pos = GET_PLAYER(play)->actor.world.pos; + break; + } + } + } + itemActor = itemActor->next; + } + + itemActor = play->actorCtx.actorLists[ACTORCAT_ITEMACTION].head; + while (itemActor != NULL) { + if (itemActor->id == ACTOR_EN_SI) { + f32 distanceToObject = Actor_WorldDistXYZToActor(&this->actor, itemActor); + if (distanceToObject <= 20.0f) { + EnSi* ensi = (EnSi*)itemActor; + ensi->collider.base.ocFlags2 = OC2_HIT_PLAYER; + break; + } + } + itemActor = itemActor->next; + } + } + + if (this->itemTimer > 0) { + this->itemTimer--; + if (this->itemTimer <= 0) { + this->canMove = 1; + } + } + + if (!Player_InCsMode(play)) { + uint8_t pressed = 0; + uint8_t released = 0; + uint8_t current = 0; + + if (this->usedItem == 0xFF && this->itemTimer <= 0) { + if (CHECK_BTN_ALL(sControlInput.press.button, BTN_CLEFT)) { + this->usedItem = gSaveContext.equips.cButtonSlots[0]; + this->usedItemButton = 0; + pressed = 1; + } else if (CHECK_BTN_ALL(sControlInput.press.button, BTN_CDOWN)) { + this->usedItem = gSaveContext.equips.cButtonSlots[1]; + this->usedItemButton = 1; + pressed = 1; + } else if (CHECK_BTN_ALL(sControlInput.press.button, BTN_CRIGHT)) { + this->usedItem = gSaveContext.equips.cButtonSlots[2]; + this->usedItemButton = 2; + pressed = 1; + } + } + + if (this->usedItem != 0xFF) { + if (CHECK_BTN_ALL(sControlInput.cur.button, BTN_CLEFT) && this->usedItemButton == 0) { + current = 1; + } else if (CHECK_BTN_ALL(sControlInput.cur.button, BTN_CDOWN) && this->usedItemButton == 1) { + current = 1; + } else if (CHECK_BTN_ALL(sControlInput.cur.button, BTN_CRIGHT) && this->usedItemButton == 2) { + current = 1; + } + } + + if (this->usedItem != 0xFF) { + if (CHECK_BTN_ALL(sControlInput.rel.button, BTN_CLEFT) && this->usedItemButton == 0) { + released = 1; + } else if (CHECK_BTN_ALL(sControlInput.rel.button, BTN_CDOWN) && this->usedItemButton == 1) { + released = 1; + } else if (CHECK_BTN_ALL(sControlInput.rel.button, BTN_CRIGHT) && this->usedItemButton == 2) { + released = 1; + } + } + + if (pressed == 1) { + UseItem(this->usedItem, 1, this, play); + } else if (released == 1) { + UseItem(this->usedItem, 0, this, play); + this->usedItemButton = 0xFF; + } else if (current == 1) { + UseItem(this->usedItem, 2, this, play); + } + } else { + UseItem(this->usedItem, 0, this, play); + this->usedItem = 0xFF; + this->itemTimer = 10; + } + + if (CHECK_BTN_ALL(sControlInput.press.button, BTN_Z) && this->canMove) { + Audio_PlayActorSound2(&this->actor, NA_SE_EV_FAIRY_DASH); + } + + if (CHECK_BTN_ALL(sControlInput.cur.button, BTN_Z) && this->canMove) { + CenterIvanOnLink(this, play); + } else if (this->canMove == 1 && this->hookshotTarget == NULL) { + Collider_UpdateCylinder(&this->actor, &this->collider); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); + } + + SkelAnime_Update(&this->skelAnime); + + EnPartner_UpdateLights(this, play); +} + +s32 EnPartner_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx, + Gfx** gfx) { + static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f }; + s32 pad; + f32 scale; + Vec3f mtxMult; + EnPartner* this = (EnPartner*)thisx; + + if (limbIndex == 8) { + scale = ((Math_SinS(4096) * 0.1f) + 1.0f) * 0.012f; + scale *= (this->actor.scale.x * 124.99999f); + Matrix_MultVec3f(&zeroVec, &mtxMult); + Matrix_Translate(mtxMult.x, mtxMult.y, mtxMult.z, MTXMODE_NEW); + Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); + } + + return false; +} + +void DrawOrb(Actor* thisx, PlayState* play, u8 color) { + EnPartner* this = (EnPartner*)thisx; + Vec3f pos; + Player* player = GET_PLAYER(play); + s32 pad; + f32 sp6C = play->state.frames & 0x1F; + + pos = this->actor.world.pos; + pos.y += 5.0f; + + pos.x -= (this->actor.scale.x * 300.0f * Math_SinS(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play))) * + Math_CosS(Camera_GetCamDirPitch(GET_ACTIVE_CAM(play)))); + pos.y -= (this->actor.scale.x * 300.0f * Math_SinS(Camera_GetCamDirPitch(GET_ACTIVE_CAM(play)))); + pos.z -= (this->actor.scale.x * 300.0f * Math_CosS(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play))) * + Math_CosS(Camera_GetCamDirPitch(GET_ACTIVE_CAM(play)))); + + OPEN_DISPS(play->state.gfxCtx); + + Gfx_SetupDL_25Xlu(play->state.gfxCtx); + + gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 255, 255, 255, 255); + + switch (color) { + case 1: + gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 255); + break; + case 2: + gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 255, 255); + break; + case 3: + gDPSetEnvColor(POLY_XLU_DISP++, 0, 255, 0, 255); + break; + } + + Matrix_Translate(pos.x, pos.y, pos.z, MTXMODE_NEW); + Matrix_Scale(this->actor.scale.x * 3.0f, this->actor.scale.y * 3.0f, this->actor.scale.z * 3.0f, MTXMODE_APPLY); + Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); + Matrix_Push(); + gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + Matrix_RotateZ(sp6C * (M_PI / 32), MTXMODE_APPLY); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); + Matrix_Pop(); + Matrix_RotateZ(-sp6C * (M_PI / 32), MTXMODE_APPLY); + gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); + + CLOSE_DISPS(play->state.gfxCtx); +} + + +void EnPartner_Draw(Actor* thisx, PlayState* play) { + s32 pad; + f32 alphaScale; + s32 envAlpha; + EnPartner* this = (EnPartner*)thisx; + s32 pad1; + Gfx* dListHead; + Player* player = GET_PLAYER(play); + + if (play->pauseCtx.state != 0 && this->usedItem != 0xFF) { + UseItem(this->usedItem, 0, this, play); + this->usedItem = 0xFF; + } + + if (this->shouldDraw == 0) { + return; + } + + dListHead = Graph_Alloc(play->state.gfxCtx, sizeof(Gfx) * 4); + + OPEN_DISPS(play->state.gfxCtx); + + Gfx_SetupDL_27Xlu(play->state.gfxCtx); + + envAlpha = (50) & 0x1FF; + envAlpha = (envAlpha > 255) ? 511 - envAlpha : envAlpha; + + alphaScale = 1.0f; + + gSPSegment(POLY_XLU_DISP++, 0x08, dListHead); + gDPPipeSync(dListHead++); + gDPSetPrimColor(dListHead++, 0, 0x01, (u8)this->innerColor.r, (u8)this->innerColor.g, (u8)this->innerColor.b, + (u8)(this->innerColor.a * alphaScale)); + + gDPSetRenderMode(dListHead++, G_RM_PASS, G_RM_ZB_CLD_SURF2); + + gSPEndDisplayList(dListHead++); + gDPSetEnvColor(POLY_XLU_DISP++, (u8)this->outerColor.r, (u8)this->outerColor.g, (u8)this->outerColor.b, + (u8)(envAlpha * alphaScale)); + POLY_XLU_DISP = SkelAnime_Draw(play, this->skelAnime.skeleton, this->skelAnime.jointTable, + EnPartner_OverrideLimbDraw, NULL, this, POLY_XLU_DISP); + + CLOSE_DISPS(play->state.gfxCtx); + + if (this->usedSpell > 0) { + DrawOrb(this, play, this->usedSpell); + } +} diff --git a/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.h b/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.h new file mode 100644 index 000000000..8e3e1cf20 --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.h @@ -0,0 +1,48 @@ +#ifndef Z_EN_PARTNER_H +#define Z_EN_PARTNER_H + +#include +#include "global.h" +#include + +struct EnPartner; + +typedef void (*EnPartnerActionFunc)(struct EnPartner*, PlayState*); + +typedef struct EnPartner { + Actor actor; + + SkelAnime skelAnime; + + Vec3s jointTable[15]; + Vec3s morphTable[15]; + + ColliderCylinder collider; + + Color_RGBAf innerColor; + Color_RGBAf outerColor; + LightInfo lightInfoGlow; + LightNode* lightNodeGlow; + LightInfo lightInfoNoGlow; + LightNode* lightNodeNoGlow; + + f32 yVelocity; + + u8 canMove; + u8 usedItem; + u8 usedItemButton; + u8 usedSpell; + u8 damageTimer; + s16 magicTimer; + + u8 shouldDraw; + s16 itemTimer; + + GetItemEntry entry; + WeaponInfo stickWeaponInfo; + + EnBoom* boomerangActor; + Actor* hookshotTarget; +} EnPartner; + +#endif \ No newline at end of file diff --git a/soh/src/overlays/actors/ovl_En_fHG/z_en_fhg.c b/soh/src/overlays/actors/ovl_En_fHG/z_en_fhg.c index ce7c8f342..1d6ac8f88 100644 --- a/soh/src/overlays/actors/ovl_En_fHG/z_en_fhg.c +++ b/soh/src/overlays/actors/ovl_En_fHG/z_en_fhg.c @@ -5,6 +5,7 @@ */ #include "z_en_fhg.h" +#include "textures/boss_title_cards/object_fhg.h" #include "objects/object_fhg/object_fhg.h" #include "overlays/actors/ovl_Door_Shutter/z_door_shutter.h" #include "overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.h" @@ -332,7 +333,7 @@ void EnfHG_Intro(EnfHG* this, PlayState* play) { Math_ApproachF(&this->cameraSpeedMod, 1.0f, 1.0f, 0.05f); if (this->timers[0] == 75) { TitleCard_InitBossName(play, &play->actorCtx.titleCtx, - SEGMENTED_TO_VIRTUAL(gPhantomGanonTitleCardTex), 160, 180, 128, 40, true); + SEGMENTED_TO_VIRTUAL(gPhantomGanonTitleCardENGTex), 160, 180, 128, 40, true); } if (this->timers[0] == 0) { this->cutsceneState = INTRO_RETREAT; diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index 8b94847dd..58147efd5 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -24,6 +24,7 @@ #include "soh/Enhancements/item-tables/ItemTableTypes.h" #include "soh/Enhancements/game-interactor/GameInteractor.h" #include "soh/Enhancements/randomizer/randomizer_entrance.h" +#include typedef enum { /* 0x00 */ KNOB_ANIM_ADULT_L, @@ -136,6 +137,7 @@ s32 func_80835800(Player* this, PlayState* play); s32 func_80835884(Player* this, PlayState* play); // Start aiming boomerang s32 func_808358F0(Player* this, PlayState* play); // Aim boomerang s32 func_808359FC(Player* this, PlayState* play); // Throw boomerang +s32 spawn_boomerang_ivan(EnPartner* this, PlayState* play); // Throw boomerang Ivan s32 func_80835B60(Player* this, PlayState* play); // Boomerang active s32 func_80835C08(Player* this, PlayState* play); void func_80835F44(PlayState* play, Player* this, s32 item); @@ -2799,6 +2801,27 @@ s32 func_808359FC(Player* this, PlayState* play) { return 1; } +s32 spawn_boomerang_ivan(EnPartner* this, PlayState* play) { + if (!CVarGetInteger("gIvanCoopModeEnabled", 0)) { + return 0; + } + + f32 posX = (Math_SinS(this->actor.shape.rot.y) * 1.0f) + this->actor.world.pos.x; + f32 posZ = (Math_CosS(this->actor.shape.rot.y) * 1.0f) + this->actor.world.pos.z; + s32 yaw = this->actor.shape.rot.y; + EnBoom* boomerang = + (EnBoom*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_BOOM, posX, this->actor.world.pos.y + 7.0f, posZ, + this->actor.focus.rot.x, yaw, 0, 0, true); + + this->boomerangActor = &boomerang->actor; + if (boomerang != NULL) { + boomerang->returnTimer = 20; + Audio_PlayActorSound2(&this->actor, NA_SE_IT_BOOMERANG_THROW); + } + + return 1; +} + s32 func_80835B60(Player* this, PlayState* play) { if (func_80834758(play, this)) { return 1; @@ -6998,7 +7021,10 @@ void func_8084029C(Player* this, f32 arg1) { arg1 = 7.25f; } - if ((this->currentBoots == PLAYER_BOOTS_HOVER) && !(this->actor.bgCheckFlags & 1) && (this->hoverBootsTimer != 0)) { + if ((this->currentBoots == PLAYER_BOOTS_HOVER || + (CVarGetInteger("gIvanCoopModeEnabled", 0) && this->ivanFloating)) && + !(this->actor.bgCheckFlags & 1) && + (this->hoverBootsTimer != 0 || (CVarGetInteger("gIvanCoopModeEnabled", 0) && this->ivanFloating))) { func_8002F8F0(&this->actor, NA_SE_PL_HOBBERBOOTS_LV - SFX_FLAG); } else if (func_8084021C(this->unk_868, arg1, 29.0f, 10.0f) || func_8084021C(this->unk_868, arg1, 29.0f, 24.0f)) { func_808327F8(this, this->linearVelocity); @@ -9591,6 +9617,8 @@ void Player_InitCommon(Player* this, PlayState* play, FlexSkeletonHeader* skelHe Collider_SetQuad(play, &this->meleeWeaponQuads[1], &this->actor, &D_80854650); Collider_InitQuad(play, &this->shieldQuad); Collider_SetQuad(play, &this->shieldQuad, &this->actor, &D_808546A0); + + this->ivanDamageMultiplier = 1; } static void (*D_80854738[])(PlayState* play, Player* this) = { @@ -9925,13 +9953,16 @@ void func_808473D4(PlayState* play, Player* this) { s32 func_80847A78(Player* this) { s32 cond; - if ((this->currentBoots == PLAYER_BOOTS_HOVER) && (this->hoverBootsTimer != 0)) { + if ((this->currentBoots == PLAYER_BOOTS_HOVER || + (CVarGetInteger("gIvanCoopModeEnabled", 0) && this->ivanFloating)) && + (this->hoverBootsTimer != 0)) { this->hoverBootsTimer--; } else { this->hoverBootsTimer = 0; } - cond = (this->currentBoots == PLAYER_BOOTS_HOVER) && + cond = (this->currentBoots == PLAYER_BOOTS_HOVER || + (CVarGetInteger("gIvanCoopModeEnabled", 0) && this->ivanFloating)) && ((this->actor.yDistToWater >= 0.0f) || (func_80838144(D_808535E4) >= 0) || func_8083816C(D_808535E4)); if (cond && (this->actor.bgCheckFlags & 1) && (this->hoverBootsTimer != 0)) { @@ -11123,7 +11154,9 @@ void Player_DrawGameplay(PlayState* play, Player* this, s32 lod, Gfx* cullDList, if (CVarGetInteger("gFixIceTrapWithBunnyHood", 1)) Matrix_Pop(); } - if ((this->currentBoots == PLAYER_BOOTS_HOVER) && !(this->actor.bgCheckFlags & 1) && + if ((this->currentBoots == PLAYER_BOOTS_HOVER || + (CVarGetInteger("gIvanCoopModeEnabled", 0) && this->ivanFloating)) && + !(this->actor.bgCheckFlags & 1) && !(this->stateFlags1 & PLAYER_STATE1_23) && (this->hoverBootsTimer != 0)) { s32 sp5C; s32 hoverBootsTimer = this->hoverBootsTimer; @@ -11207,8 +11240,9 @@ void Player_Draw(Actor* thisx, PlayState* play2) { lod = 1; } - if (CVarGetInteger("gDisableLOD", 0) != 0) + if (CVarGetInteger("gDisableLOD", 0) != 0) { lod = 0; + } func_80093C80(play); Gfx_SetupDL_25Xlu(play->state.gfxCtx); diff --git a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c index 316956de3..171766609 100644 --- a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -42,65 +42,6 @@ void FileChoose_DrawTextureI8(GraphicsContext* gfxCtx, const void* texture, s16 CLOSE_DISPS(gfxCtx); } -void FileChoose_DrawRawImageRGBA32(GraphicsContext* gfxCtx, s16 centerX, s16 centerY, const char* source, u32 width, u32 height) { - u8* curTexture; - s32 textureCount; - u32 rectLeft; - u32 rectTop; - u32 textureHeight; - s32 remainingSize; - s32 textureSize; - s32 pad; - s32 i; - - OPEN_DISPS(gfxCtx); - - source = GetResourceDataByName(source, false); - - curTexture = source; - rectLeft = centerX - (width / 2); - rectTop = centerY - (height / 2); - textureHeight = 4096 / (width << 2); - remainingSize = (width * height) << 2; - textureSize = (width * textureHeight) << 2; - textureCount = remainingSize / textureSize; - if ((remainingSize % textureSize) != 0) { - textureCount += 1; - } - - gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, textureHeight, 0, G_TX_NOMIRROR | G_TX_CLAMP, - G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - - remainingSize -= textureSize; - - for (i = 0; i < textureCount; i++) { - gDPSetTextureImage(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, curTexture); - - gDPLoadSync(POLY_OPA_DISP++); - gDPLoadTile(POLY_OPA_DISP++, G_TX_LOADTILE, 0, 0, (width - 1) << 2, (textureHeight - 1) << 2); - - gSPTextureRectangle(POLY_OPA_DISP++, rectLeft << 2, rectTop << 2, (rectLeft + (s32)width) << 2, - (rectTop + textureHeight) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - - curTexture += textureSize; - rectTop += textureHeight; - - if ((remainingSize - textureSize) < 0) { - if (remainingSize > 0) { - textureHeight = remainingSize / (s32)(width << 2); - remainingSize -= textureSize; - - gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, textureHeight, 0, - G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); - } - } else { - remainingSize -= textureSize; - } - } - CLOSE_DISPS(gfxCtx); -} - void FileChoose_DrawImageRGBA32(GraphicsContext* gfxCtx, s16 centerX, s16 centerY, const char* source, u32 width, u32 height) { u8* curTexture; s32 textureCount; @@ -114,49 +55,19 @@ void FileChoose_DrawImageRGBA32(GraphicsContext* gfxCtx, s16 centerX, s16 center OPEN_DISPS(gfxCtx); - source = GetResourceDataByName(source, false); - - curTexture = source; rectLeft = centerX - (width / 2); rectTop = centerY - (height / 2); - textureHeight = 4096 / (width << 2); - remainingSize = (width * height) << 2; - textureSize = (width * textureHeight) << 2; - textureCount = remainingSize / textureSize; - if ((remainingSize % textureSize) != 0) { - textureCount += 1; - } - - gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, textureHeight, 0, G_TX_NOMIRROR | G_TX_CLAMP, + + gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, height, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - - remainingSize -= textureSize; - - for (i = 0; i < textureCount; i++) { - gDPSetTextureImage(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, curTexture); - - gDPLoadSync(POLY_OPA_DISP++); - gDPLoadTile(POLY_OPA_DISP++, G_TX_LOADTILE, 0, 0, (width - 1) << 2, (textureHeight - 1) << 2); - - gSPTextureRectangle(POLY_OPA_DISP++, rectLeft << 2, rectTop << 2, (rectLeft + (s32)width) << 2, - (rectTop + textureHeight) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - - curTexture += textureSize; - rectTop += textureHeight; - - if ((remainingSize - textureSize) < 0) { - if (remainingSize > 0) { - textureHeight = remainingSize / (s32)(width << 2); - remainingSize -= textureSize; - - gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, textureHeight, 0, - G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); - } - } else { - remainingSize -= textureSize; - } - } + + gDPSetTextureImage(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_32b, width, source); + + gDPLoadSync(POLY_OPA_DISP++); + gDPLoadTile(POLY_OPA_DISP++, G_TX_LOADTILE, 0, 0, (width - 1) << 2, (height - 1) << 2); + + gSPTextureRectangle(POLY_OPA_DISP++, rectLeft << 2, rectTop << 2, (rectLeft + (s32)width) << 2, + (rectTop + height) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); CLOSE_DISPS(gfxCtx); } @@ -1479,7 +1390,7 @@ void FileChoose_DrawWindowContents(GameState* thisx) { char* tex = (this->configMode == CM_QUEST_MENU || this->configMode == CM_ROTATE_TO_NAME_ENTRY || this->configMode == CM_START_QUEST_MENU || this->configMode == CM_QUEST_TO_MAIN || this->configMode == CM_NAME_ENTRY_TO_QUEST_MENU) - ? GetResourceDataByName(FileChoose_GetQuestChooseTitleTexName(gSaveContext.language), false) + ? FileChoose_GetQuestChooseTitleTexName(gSaveContext.language) : sTitleLabels[gSaveContext.language][this->titleLabel]; OPEN_DISPS(this->state.gfxCtx); @@ -1549,7 +1460,7 @@ void FileChoose_DrawWindowContents(GameState* thisx) { FileChoose_DrawTextureI8(this->state.gfxCtx, gTitleTheLegendOfTextTex, 72, 8, 156, 108, 72, 8, 1024, 1024); FileChoose_DrawTextureI8(this->state.gfxCtx, gTitleOcarinaOfTimeTMTextTex, 96, 8, 154, 163, 96, 8, 1024, 1024); FileChoose_DrawImageRGBA32(this->state.gfxCtx, 160, 135, ResourceMgr_GameHasOriginal() ? gTitleZeldaShieldLogoTex : gTitleZeldaShieldLogoMQTex, 160, 160); - FileChoose_DrawRawImageRGBA32(this->state.gfxCtx, 182, 180, "__OTR__objects/object_mag/gTitleRandomizerSubtitleTex", 128, 32); + FileChoose_DrawImageRGBA32(this->state.gfxCtx, 182, 180, "__OTR__objects/object_mag/gTitleRandomizerSubtitleTex", 128, 32); break; } } else if (this->configMode != CM_ROTATE_TO_NAME_ENTRY) { @@ -1625,7 +1536,7 @@ void FileChoose_DrawWindowContents(GameState* thisx) { this->nameAlpha[i]); } gDPLoadTextureBlock(POLY_OPA_DISP++, - GetResourceDataByName("__OTR__textures/title_static/gFileSelRANDButtonTex", false), + "__OTR__textures/title_static/gFileSelRANDButtonTex", G_IM_FMT_IA, G_IM_SIZ_16b, 44, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0); @@ -1642,7 +1553,7 @@ void FileChoose_DrawWindowContents(GameState* thisx) { this->nameAlpha[i]); } gDPLoadTextureBlock(POLY_OPA_DISP++, - GetResourceDataByName("__OTR__textures/title_static/gFileSelMQButtonTex", false), + "__OTR__textures/title_static/gFileSelMQButtonTex", G_IM_FMT_IA, G_IM_SIZ_16b, 44, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0); diff --git a/soh/src/overlays/gamestates/ovl_title/z_title.c b/soh/src/overlays/gamestates/ovl_title/z_title.c index 2597b695b..2ba99231a 100644 --- a/soh/src/overlays/gamestates/ovl_title/z_title.c +++ b/soh/src/overlays/gamestates/ovl_title/z_title.c @@ -128,6 +128,12 @@ void Title_SetupView(TitleContext* this, f32 x, f32 y, f32 z) { func_800AAA50(view, 0xF); } +#define dgShipLogoDL "__OTR__textures/nintendo_rogo_static/gShipLogoDL" +static const ALIGN_ASSET(2) char gShipLogoDL[] = dgShipLogoDL; + +#define dnintendo_rogo_static_Tex_LUS_000000 "__OTR__textures/nintendo_rogo_static/nintendo_rogo_static_Tex_LUS_000000" +static const ALIGN_ASSET(2) char nintendo_rogo_static_Tex_LUS_000000[] = dnintendo_rogo_static_Tex_LUS_000000; + void Title_Draw(TitleContext* this) { static s16 sTitleRotY = 0; static Lights1 sTitleLights = gdSPDefLights1(0x64, 0x64, 0x64, 0xFF, 0xFF, 0xFF, 0x45, 0x45, 0x45); @@ -152,8 +158,6 @@ void Title_Draw(TitleContext* this) { v1.z = 0; v2.z = 1119.0837; - char* n64LogoTex = GetResourceDataByName(nintendo_rogo_static_Tex_000000, false); - func_8002EABC(&v1, &v2, &v3, this->state.gfxCtx); gSPSetLights1(POLY_OPA_DISP++, sTitleLights); Title_SetupView(this, 0, 150.0, 300.0); @@ -163,7 +167,11 @@ void Title_Draw(TitleContext* this) { Matrix_RotateZYX(0, sTitleRotY, 0, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(this->state.gfxCtx), G_MTX_LOAD); - gSPDisplayList(POLY_OPA_DISP++, gNintendo64LogoDL); + if (CVarGetInteger("gAuthenticLogo", 0)) { + gSPDisplayList(POLY_OPA_DISP++, gNintendo64LogoDL); + } else { + gSPDisplayList(POLY_OPA_DISP++, gShipLogoDL); + } Gfx_SetupDL_39Opa(this->state.gfxCtx); gDPPipeSync(POLY_OPA_DISP++); gDPSetCycleType(POLY_OPA_DISP++, G_CYC_2CYCLE); @@ -184,9 +192,12 @@ void Title_Draw(TitleContext* this) { for (idx = 0, y = 94; idx < 16; idx++, y += 2) { - gDPLoadTextureBlock(POLY_OPA_DISP++, &n64LogoTex[0x180 * idx], G_IM_FMT_I, - G_IM_SIZ_8b, 192, 2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadMultiTile(POLY_OPA_DISP++, CVarGetInteger("gAuthenticLogo", 0) ? nintendo_rogo_static_Tex_000000 : nintendo_rogo_static_Tex_LUS_000000, 0, G_TX_RENDERTILE, G_IM_FMT_I, G_IM_SIZ_8b, 192, 32, + 0, idx * 2, 192 - 1, (idx + 1) * 2 - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gDPSetTileSize(POLY_OPA_DISP++, 0, 0, 0, (192 - 1) << G_TEXTURE_IMAGE_FRAC, + (2 - 1) << G_TEXTURE_IMAGE_FRAC); gDPSetTileSize(POLY_OPA_DISP++, 1, this->uls, (this->ult & 0x7F) - idx * 4, 0, 0); gSPTextureRectangle(POLY_OPA_DISP++, 388, y << 2, 1156, (y + 2) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); @@ -226,7 +237,7 @@ void Title_Main(GameState* thisx) { Title_Calc(this); Title_Draw(this); - if (!CVarGetInteger("gHideBuildInfo", 0)) { + if (!CVarGetInteger("gAuthenticLogo", 0)) { Gfx* gfx = POLY_OPA_DISP; s32 pad; diff --git a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.c b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.c index db487b3fc..4d1c65ad4 100644 --- a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.c +++ b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.c @@ -341,15 +341,15 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) { gSPVertex(POLY_KAL_DISP++, &pauseCtx->mapPageVtx[60], 8, 0); // The dungeon map textures are recreated each frame, so always invalidate them - gSPInvalidateTexCache(POLY_KAL_DISP++, interfaceCtx->mapSegment); - gSPInvalidateTexCache(POLY_KAL_DISP++, interfaceCtx->mapSegment + 0x800); + gSPInvalidateTexCache(POLY_KAL_DISP++, interfaceCtx->mapSegment[0]); + gSPInvalidateTexCache(POLY_KAL_DISP++, interfaceCtx->mapSegment[1]); - gDPLoadTextureBlock_4b(POLY_KAL_DISP++, interfaceCtx->mapSegment, G_IM_FMT_CI, 48, 85, 0, G_TX_WRAP | G_TX_NOMIRROR, + gDPLoadTextureBlock_4b(POLY_KAL_DISP++, interfaceCtx->mapSegmentName[0], G_IM_FMT_CI, 48, 85, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_KAL_DISP++, 0, 2, 3, 1, 0); - gDPLoadTextureBlock_4b(POLY_KAL_DISP++, interfaceCtx->mapSegment + 0x800, G_IM_FMT_CI, 48, 85, 0, + gDPLoadTextureBlock_4b(POLY_KAL_DISP++, interfaceCtx->mapSegmentName[1], G_IM_FMT_CI, 48, 85, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -513,9 +513,10 @@ void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx) { gSPVertex(POLY_KAL_DISP++, &pauseCtx->mapPageVtx[188], 32, 0); for (j = t = i = 0; i < 8; i++, t++, j += 4) { - gDPLoadTextureBlock(POLY_KAL_DISP++, (u8*)GetResourceDataByName(gWorldMapImageTex, false) + t * 216 * 9, G_IM_FMT_CI, G_IM_SIZ_8b, 216, 9, - 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); + gDPLoadMultiTile(POLY_KAL_DISP++, gWorldMapImageTex, 0, G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 216, 128, 0, t * 9, 216 - 1, + (t + 1) * 9 - 1, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gDPSetTileSize(POLY_KAL_DISP++, G_TX_RENDERTILE, 0, 0, (216 - 1) << G_TEXTURE_IMAGE_FRAC, (9 - 1) << G_TEXTURE_IMAGE_FRAC); gSP1Quadrangle(POLY_KAL_DISP++, j, j + 2, j + 3, j + 1, 0); } @@ -524,16 +525,20 @@ void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx) { for (j = i = 0; i < 6; i++, t++, j += 4) { - gDPLoadTextureBlock(POLY_KAL_DISP++, (u8*)GetResourceDataByName(gWorldMapImageTex, false) + t * 216 * 9, G_IM_FMT_CI, G_IM_SIZ_8b, 216, 9, - 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); + gDPLoadMultiTile(POLY_KAL_DISP++, gWorldMapImageTex, 0, G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 216, 128, + 0, t * 9, 216 - 1, (t + 1) * 9 - 1, 0, G_TX_WRAP | G_TX_NOMIRROR, + G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPSetTileSize(POLY_KAL_DISP++, G_TX_RENDERTILE, 0, 0, (216 - 1) << G_TEXTURE_IMAGE_FRAC, + (9 - 1) << G_TEXTURE_IMAGE_FRAC); gSP1Quadrangle(POLY_KAL_DISP++, j, j + 2, j + 3, j + 1, 0); } - gDPLoadTextureBlock(POLY_KAL_DISP++, (u8*)GetResourceDataByName(gWorldMapImageTex, false) + t * 216 * 9, G_IM_FMT_CI, G_IM_SIZ_8b, 216, 2, 0, - G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, - G_TX_NOLOD); + gDPLoadMultiTile(POLY_KAL_DISP++, gWorldMapImageTex, 0, G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 216, 128, 0, + t * 9, 216 - 1, (t * 9 + 2) - 1, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPSetTileSize(POLY_KAL_DISP++, G_TX_RENDERTILE, 0, 0, (216 - 1) << G_TEXTURE_IMAGE_FRAC, + (2 - 1) << G_TEXTURE_IMAGE_FRAC); gSP1Quadrangle(POLY_KAL_DISP++, j, j + 2, j + 3, j + 1, 0); } else if (HREG(15) == 1) { diff --git a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c index 213fc5ce8..dfd7fae49 100644 --- a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c +++ b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c @@ -820,7 +820,7 @@ Gfx* KaleidoScope_QuadTextureIA8(Gfx* gfx, void* texture, s16 width, s16 height, return gfx; } -void KaleidoScope_OverridePalIndexCI4(u8* texture, ptrdiff_t size, s32 targetIndex, s32 newIndex) { +void KaleidoScope_OverridePalIndexCI4(u8* texture, s32 size, s32 targetIndex, s32 newIndex) { s32 i; targetIndex &= 0xF; @@ -2079,7 +2079,7 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) { } const char* textureName = mapNameTextures[sp2A]; - memcpy(pauseCtx->nameSegment, GetResourceDataByName(textureName, false), GetResourceTexSizeByName(textureName, false)); + memcpy(pauseCtx->nameSegment, textureName, strlen(textureName) + 1); } else { osSyncPrintf("zoom_name=%d\n", pauseCtx->namedItem); @@ -2093,7 +2093,7 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) { osSyncPrintf("J_N=%d point=%d\n", gSaveContext.language, sp2A); const char* textureName = iconNameTextures[sp2A]; - memcpy(pauseCtx->nameSegment, GetResourceDataByName(textureName, false), GetResourceTexSizeByName(textureName, false)); + memcpy(pauseCtx->nameSegment, textureName, strlen(textureName) + 1); } pauseCtx->nameDisplayTimer = 0; @@ -3045,31 +3045,6 @@ uint32_t _bswap32(uint32_t a) return a; } -void KaleidoScope_GrayOutTextureRGBA32(u32* texture, u16 pixelCount) { - u32 rgb; - u16 gray; - u16 i; - - texture = GetResourceDataByName(texture, false); - - for (i = 0; i < pixelCount; i++) { - uint32_t px = texture[i]; - if ((px & 0xFFFFFF00) != 0) { - u8 a = (px & 0xFF000000) >> 24; - u8 b = (px & 0x00FF0000) >> 16; - u8 g = (px & 0x0000FF00) >> 8; - u8 r = (px & 0x000000FF) >> 0; - gray = (r + g + b) / 7; - - r = gray; - g = gray; - b = gray; - - texture[i] = (a << 24) + (b << 16) + (g << 8) + (r << 0); - } - } -} - void func_808265BC(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; @@ -3194,11 +3169,10 @@ void KaleidoScope_UpdateCursorSize(PauseContext* pauseCtx) { void KaleidoScope_LoadDungeonMap(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - char* firstTextureName = sDungeonMapTexs[R_MAP_TEX_INDEX]; - char* secondTextureName = sDungeonMapTexs[R_MAP_TEX_INDEX + 1]; - - memcpy(interfaceCtx->mapSegment, GetResourceDataByName(firstTextureName, false), GetResourceTexSizeByName(firstTextureName, false)); - memcpy(interfaceCtx->mapSegment + 0x800, GetResourceDataByName(secondTextureName, false), GetResourceTexSizeByName(secondTextureName, false)); + interfaceCtx->mapSegmentName[0] = sDungeonMapTexs[R_MAP_TEX_INDEX]; + interfaceCtx->mapSegmentName[1] = sDungeonMapTexs[R_MAP_TEX_INDEX + 1]; + interfaceCtx->mapSegment[0] = GetResourceDataByName(sDungeonMapTexs[R_MAP_TEX_INDEX], true); + interfaceCtx->mapSegment[1] = GetResourceDataByName(sDungeonMapTexs[R_MAP_TEX_INDEX + 1], true); } void KaleidoScope_UpdateDungeonMap(PlayState* play) { @@ -3212,13 +3186,15 @@ void KaleidoScope_UpdateDungeonMap(PlayState* play) { if ((play->sceneNum >= SCENE_YDAN) && (play->sceneNum <= SCENE_TAKARAYA)) { if ((VREG(30) + 3) == pauseCtx->cursorPoint[PAUSE_MAP]) { - KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment, 2040, interfaceCtx->mapPaletteIndex, 14); + // HDTODO: Handle Runtime Modified Textures (HD) + KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment[0], 2040, interfaceCtx->mapPaletteIndex, 14); } } if ((play->sceneNum >= SCENE_YDAN) && (play->sceneNum <= SCENE_TAKARAYA)) { if ((VREG(30) + 3) == pauseCtx->cursorPoint[PAUSE_MAP]) { - KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment + 0x800, 2040, interfaceCtx->mapPaletteIndex, 14); + // HDTODO: Handle Runtime Modified Textures (HD) + KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment[1], 2040, interfaceCtx->mapPaletteIndex, 14); } } } @@ -3375,19 +3351,13 @@ void KaleidoScope_Update(PlayState* play) osSyncPrintf("サイズ=%x\n", size2 + size1 + size0 + size + 0x800); if (((void)0, gSaveContext.worldMapArea) < 22) { - if (gSaveContext.language == LANGUAGE_ENG) { - const char* textureName = mapNameTextures[36 + gSaveContext.worldMapArea]; - memcpy(pauseCtx->nameSegment + 0x400, GetResourceDataByName(textureName, false), GetResourceTexSizeByName(textureName, false)); - } else if (gSaveContext.language == LANGUAGE_GER) { - const char* textureName = mapNameTextures[58 + gSaveContext.worldMapArea]; - memcpy(pauseCtx->nameSegment + 0x400, GetResourceDataByName(textureName, false), GetResourceTexSizeByName(textureName, false)); - } else { - const char* textureName = mapNameTextures[80 + gSaveContext.worldMapArea]; - memcpy(pauseCtx->nameSegment + 0x400, GetResourceDataByName(textureName, false), GetResourceTexSizeByName(textureName, false)); - } + const uint8_t offsets[] = { 36, 58, 80 }; + const char* textureName = mapNameTextures[offsets[gSaveContext.language] + gSaveContext.worldMapArea]; + memcpy(pauseCtx->nameSegment + 0x400, textureName, strlen(textureName) + 1); } // OTRTODO - player on pause #if 1 + // HDTODO: Remove sPreRenderCvg stuff? sPreRenderCvg = (void*)(((uintptr_t)pauseCtx->nameSegment + 0x400 + 0xA00 + 0xF) & ~0xF); PreRender_Init(&sPlayerPreRender); @@ -4260,6 +4230,6 @@ void KaleidoScope_Update(PlayState* play) osSyncPrintf(VT_RST); break; } - + GameInteractor_ExecuteOnKaleidoscopeUpdate(sInDungeonScene); }