From 88482897b95e92c3c4f787cc49ed02e6f3d75b70 Mon Sep 17 00:00:00 2001 From: jnack <55568980+jnackmclain@users.noreply.github.com> Date: Mon, 23 Sep 2024 23:37:12 -0500 Subject: [PATCH] more rb4 fixes (#8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * shader_recompiler/frontend: implement V_NOP * shader_recompiler/frontend: fix V_NOP instruction format * shader_recompiler/frontend: add information on instruction format assert * shader_recompiler/frontend: fix `IMAGE_GATHER4_C_LZ` format * shader_recompiler/frontend: fix `IMAGE_SAMPLE_CD` format * Seen on Dark Souls * video_core: added support for indirect draws (#678) * video_core: added support for indirect draws * barriers simplified * Don't load `sync2` ext if `nv_checkpoints` isn't used * core: Fix CPU patch stack issues * savedata: Handle a missing case in saveDataMount This should potentially fix the mount issue in Resistance : Retribution (CUSA32636) Testing is welcome. * update zh_CN translation * Qt: Update Game List * libraries: gnmdriver: `sceGnmValidateCommandBuffers` added * ci: Remove translations folder from macOS upload. * ci: Remove translations folder from Windows upload. * Added Persian(Farsi) Translation (#689) * Adding Persian(Farsi)Translation * Update Copyright * Added arabic translation (#693) * added arabic translation * added arabic translation * whitespace added, "patch" consistency * only apply cheats at runtime * improve german translation * macos: Remove need for TLS patch by storing TCB pointer in FS. * [macOS] Place `shadPS4/user` folder in `Application Support` Partially resolves #509 * include git short hash in artifact filename * include build date use pwsh instead of cmd on windows workflows * Correct machine translations * Force PIE usage on linux (#625) * force PIE usage on linux * get rid of explicit -pie linker flag * change UNIX with UNIX AND NOT APPLE in CMakeLists.txt * cmake: add proper check for PIE support at link time --------- Co-authored-by: Mikhail Paulyshka * Adding missing data format - (1_5_5_5) (#701) * added data_format=17 and num_format=0 * Set `sceSaveDataDialogIsReadyToDisplay` temporary to 1 until is properly implemented. * Implement V_READFIRSTLANE_B32 (#681) * Implement V_READFIRSTLANE_B32 * refactor * Replace recursive_mutex with mutex (#708) * Replace recursive_mutex with mutex * Move mutex lock outside of ObtainBuffer * Implement V_BFM_B32 and V_FFBH_U32 (#663) * Implement V_BFM_B32 * Render.Recompiler: Implement V_FFBH_U32 * fix clang-format * Fix VirtualQuery Found this issue while looking at code from fpPS4. VirtualQuery was setting is_commited to true when the queried region was reserved. Also sets the protection value in the VirtualQueryInfo, as I'd assume not storing that could cause issues in games. This fixes all games currently hanging on the sceKernelmprotect stub. * Add Albanian translation * Update Albanian translation * Assign is_stack and is_pooled Properly set these values to avoid potential errors, and future proof for when these types of memory are emulated. * Fix MemoryManager::VirtualQuery header The headers for these functions were technically not the same as the actual function definition. This didn't cause any emulation issues, but caused some weird issues with my IDE. * Grammar * Always assign memory_type and offset The memory_type default is based on fpPS4 behavior. I'm not entirely sure how the offset should be handled, but since the value we use defaults to 0 anyway, that should be better than leaving random data in that area. * Clang fix * Clang * Fix download Cheats/Patches on Linux * shader_recompiler: Implement V_MOVRELS_B32 This inst indexes the vgpr's like an array to read and write at a dynamic index. Generates a ton of OpSelects to hardcode reading from the VGPR at src index if the index is equal to 1..max_allocated_vgpr. Then does that again to choose the dest vgpr. I dont know if theres a better way without significantly reworking the IR. I think the best solution would be to generate OpSwitch during spirv emitting, but it would need a case for each VGPR values to load it, then a case to store back to each VPGR at emit time. You lose that ability after ssa_rewrite, so I dont think theres a good solution. * Update linux-appimage-qt.sh * Update CMakeLists.txt * handle uninit m0 * fix amp and rb4 debug asserts * handle V_MOVRELD (TODO refactor) * proper comments for shader hashes * comment * Update CMakeLists.txt * docs: fix sdl and qt steps for MSYS2 - Add required dependencies - Add Qt steps - Fix README typo * implement m0 read/write * forgot m0 case in GetSrc * fix mistake with dst_val * Add macOS build guide. * Note macOS and Xcode version requirements. * refactor and implement V_MOVRELSD_B32 * vulkan: Better support for directly linking a Vulkan support library. * video_core: Add bounds checking for subspan use in liverpool functions (#717) * shader_recompiler: Implement render target swizzles when no format is available (#739) * shader_recompiler: Use null image when shader is compiled with unbound sharp * video_core: Refactor and render target swizzles * liverpool_to_vk: Add missing swap format from RDR * video_core: Refactor shader recompiler interface * Makes it much easier to pass runtime information to the recompiler and have it treated as part of the shader key. Also pulls out most runtime state from Info struct * shader_recompiler: Avoid some asserts * add TR for PR 700 * Update src/qt_gui/translations/pl_PL.ts Co-authored-by: Marcin Mitura * add more information download patches If the patch does not appear, it may be that it does not exist for the specific serial and version of the game. It may be necessary to update the game. * Update patch url (#755) * Update patch url * Update cheats_patches.cpp * Set CF correctly on BLSI patch (#722) * Set CF correctly on BLSI patch * Remove redundant CLC * Preserve flags on some patched instructions (#720) * Preserve flags on some patched instructions * Move flag saving to Save/RestoreContext * vulkan: Improve format support info for vertex buffer formats. (#753) * shader_recompiler: Limit src0 to 4-bit in V_CVT_OFF_F32_I4 (#759) * Set CF correctly on BLSR/BLSMSK patch (#724) * Set CF correctly on BLSR patch * Set CF correctly on BLSMSK patch * Fix warnings (#749) * suppress warning in vk_mem_alloc.h * fix warnings in cheats_patches.cpp * cmp_u32 * Save,Apply,Restore Defaults,Close Save,Apply,Restore Defaults,Close * fix PL text * video_core: added `VK_LAYER_LUNARG_crash_diagnostic` (#751) * Icon,Name,Serial,Region,Firmware,Size,Version,Path * vulkan: Emulate depth clip control when extension is not available. (#762) * Game List * Add "support" for pad type remote control Needed for the Dragon Ball Xenoverse titles. * misc: Fix a few compiler warnings. * Get rid of unnecessary jump * shader_recompiler: change ir.SetScalarReg() -> SetDst() (#777) Fixes an out-of-bounds crash on Amplitude and Rock Band 4 startup. * Implemented sceKernelMTypeProtect and sceKernelMProtect (#387) * Fixed ORBIS_KERNEL_MAP_OP_TYPE_PROTECT for batchmap2 * Fix merge * Changed 4 to ORBIS_KERNEL_MAP_OP_TYPE_PROTECT * Removed MProtect from AddressSpace * Added Mtyprotect and moved Mprotect to ORBIS_KERNEL_MAP_OP_PROTECT * Changed Protect for Windows * reverted the previous function * Fixed Mtypeprotect and MProtect * '' * '' * Took out logs stopping build * clang-format issues * Fixed the order of mtypeprotect and mprotect in batchmap2 * '' * update branch * '' * Fixed nits * '' * Update submodules to latest commits * '' * reverted ffmpeg * '' * Fixed the nits * '' * '' * '' * '' * '' * Fix clang formatting, DEBUG_ASSERT, and extra spacing * Fix build issues * Revert "Fix build issues" This reverts commit 9185f96ec93ce9414d98aaf2560df4fb6c17f49b. * '' * '' * '' * Changes for MemoryProt Format * '' * '' * '' * Surface management rework (3/3) (#370) * texture_cache: images overlap support * renderer_vk: log messages on surfaces which require degamma * missing barriers * forced sync2 + better barriers * Handling of depth target aliasing; added formats compatibility check * Don't bind empty texel buffers * Promote r32f textures to depth target if shader expects so * Promote textures to depth if they use depth tiling * fix for image leaking; detiler stream buffer removed * Update sceBatchMap2 (#782) * Update sceKernelBatchMap2 Improves placement of new BatchMap op types, and re-adds the BatchMap2 changes from https://github.com/shadps4-emu/shadPS4/pull/602. * Update some logs. * Forgot one (#783) I forgot to readd the processed variable to the for loop. * video_core/renderer_vulkan: Ignore unsupported shader stages (#778) * video_core/renderer_vulkan: Ignore unsupported shader stages * clang-format * hot-fix: don't skip draws with DS decompression * video_core: Improve handling of image buffer aliases (#757) * texture_cache: Use invalidate threshhold * It's possible for shaders to bind huge buffers and only write to lower portion of it. This is a problem if upper parts of the buffer overlap with render targets. If the image is very far away from buffer base it's unlikely the shader will want to write it, so skip invalidation for it * video_core: Allow using texture cache to validate texture buffers * texture_cache: Use buffer cache in all cases for data source * Allows to correctly handle compute written micro tiled textures * texture_cache: Fix depth pitch * kernel: Remove missed code * clang format * video_core: Adjust depth format * buffer_cache: Do not cache buffer views * thread_management: Do not call createMutex on unlock * temp: Revert this when pr is done * buffer_cache: Dont skip cpu uploads with image sync * Sometimes image does not fully overlap with a region * fix build * video_core: Improve invalidate heuristic * small fixes * video_core: Hopefully fix some vertex explosions * `sceKernelWaitEventFlag` log noise reduced * Standardize game_data directory for game metadata. (#809) * shader_recompiler: Add ConvertF16F32 to FP16 detection. (#800) * vulkan: Add VK_KHR_format_feature_flags_2 to extensions. (#803) * Updated sq translation (#791) * Fix incompatible format images being passed on overlap resolve (#794) * Implement V_MOVREL variants (#745) * shader_recompiler: Implement V_MOVRELS_B32, V_MOVRELD_B32, V_MOVRELSD_B32 Generates a ton of OpSelects to hardcode reading or writing from each possible vgpr depending on the value of m0 Future work is to do range analysis to put an upper bound on m0 and check fewer registers. * fix runtime info after rebase * shader_recompiler: Add more opcodes (#802) * Implement some missing shader opcodes Implements TBUFFER_STORE_FORMAT_XYZW, IMAGE_SAMPLE_CD, and IMAGE_GATHER4_C_LZ. These are seen in https://github.com/shadps4-emu/shadPS4/issues/496. * Implement IMAGE_STORE_MIP Not sure if this is the right way to do this, let me know if this needs changing. * Revert "Implement IMAGE_STORE_MIP" This reverts commit cff78b5924c20397995f590df3553dc8f7a45a7b. * core/libraries/save_data: Implement wildcard searches on `sceSaveDataDirNameSearch` (#817) * libraries/save_data: Implement wildcards and params * clang-format * libSceRtc HLE (#697) * SetTick + GetTick, adding functions, checkvalid * format * more functions * format * implement lizardy's changes * fix linux build * various formatting improvements and fixes * fix sceRtcGetCurrentClockLocalTime, fixes sceRtcGetCurrentClockLocalTime using lizardy's suggestions. also implements various formatting improvements and logging changes * fix mac and linux builds, const for UNIX_EPOCH * fix ConvertUtcToLocalTime,RtcConvertLocalTimeToUtc * format rfc2822, format rfc3339 * format * GetDosTime, GetTime_t, GetWin32FileTime +various formatting improvements * sceRtcParseRFC3339, sceRtcParseDateTime * shader_recompiler: Implement data share append and consume operations (#814) * shader_recompiler: Add more format swap modes * texture_cache: Handle stencil texture reads * emulator: Support loading font library * readme: Add thanks section * shader_recompiler: Constant buffers as integers * shader_recompiler: Typed buffers as integers * shader_recompiler: Separate thread bit scalars * We can assume guest shader never mixes them with normal sgprs. This helps avoid errors where ssa could view an sgpr write dominating a thread bit read, due to how control flow is structurized, even though its not possible in actual control flow * shader_recompiler: Implement data append/consume operations * clang format * buffer_cache: Simplify invalidation scheme * video_core: Remove some invalidation remnants * adjust * Adding Refresh icon to toolbar (#816) * ci: enable cmake cache on all platforms (SDL/Qt) (#622) - uses actions/cache@v4 and hendrikmuhs/ccache-action@v1.2.14 - Keeps the cache from CMake Cache configuration (Windows, Linux, macOS) - Keeps the cache from CMake build objects (Linux/macOS) - Use ccache for Linux builds - Use sccache for macOS builds - Add hashes to the s/ccache keys - Update cache names with OS-qt/sdl as a prefix - All old caches are invalidated, delete them or wait for cache eviction * core/libraries: reduce log pressure (#829) * Small fix for EmitQuadToTriangleListIndices (#831) * hot-fix: exclude tiling condition from promotion of textures to depth * hot-fix: linear cubemaps check assert removed (verified) * Dear ImGui Implementation (#598) * added imgui as dependency * imgui renderer/basic input implementation * imgui: add layers system Add video info layer to show fps. Press F10 to toggle it. * imgui: add custom imgui config * imgui: gamepad capture, stopping propagation * imgui: changed config & log file path to use portable dir * videoout: render blank frame when video output is closed required to render imgui even when game has no video output - fixed merge compile-error * Message Dialog library (#767) * system/MsgDialog: types & basic text display * system/MsgDialog: User message dialog * system/MsgDialog: RAII for MsgDialog ui * system/MsgDialog: Progress bar dialog * system/MsgDialog: System message texts * system/MsgDialog: copy all ui state to local memory handles when game release memory before close extracted all UI code to it's own file use single window instead of creating new one every single dialogOpen * system/MsgDialog: debug logging * Improved Dark theme, search bar and icon theme (#830) * Improved Dark theme, search bar and icon theme * Update FR translation * Redefined ffmpeg's av_err2str macro to be c++ friendly (#815) * Fixed compiler error for av_err2string by redefining in c++ friendly way * removed link from comment, putting in PR * fixed formatting * Minor fix: enable qt gui to find PKG files with lowercase extension .pkg * Added missing dependencies and instructions for enabling QT for linux builds * kernel: Delete cond attr May solve memory leaks in games that create/destroy these often * fix for image view storage flag handling * presentation barriers fixed * imgui: fix End call when window is collapsed (#850) * hot-fix: nullGpu functionality restored * Initial support for compiling on ARM64. (#788) * Added S_ANDN2_B32 and S_NAND_B32 opcodes (#833) * Added S_ANDN2_B32 and S_NAND_B32 opcodes * Update src/shader_recompiler/frontend/translate/scalar_alu.cpp Co-authored-by: baggins183 * Fix result and src1 Co-authored-by: baggins183 * update result Co-authored-by: baggins183 * Update src1 Co-authored-by: baggins183 --------- Co-authored-by: baggins183 * [libSceAudio3d] Initialize Audio3d Library (#761) * init libSceAudio3d * complete header and func params * clang * rm incl * incl stddef * revert module num * print params * correct logs * clang --------- Co-authored-by: microsoftv <6063922+microsoftv@users.noreply.github.com> * Fix compilation on linux (#846) * Fix deadlocks by enabling reuse of exited threads (#855) Simplify loop const correctness Simplify setting is_free Co-authored-by: Adam Jones * use github api to download patches removing this workaround makes the code cleaner * video_core: Add fallback path for pipelines with more than 32 bindings (#837) * video_core: Small fixes * renderer_vulkan: Add fallback path for pipelines with more than 32 bindings * vk_resource_pool: Rewrite desc heap * work * Update Discord link (#861) The current Discord link was made before we enabled the "accept the rules" on Discord. This leads to users who use the current link to enter the Discord server to skip this moderation step. Updating the link to one created after we enabled this should fix this. * support for unlocking trophies (#854) * add pugixml * trophy_viewer: support for trophy unlocking * nptrophy: UnlockTrophy(), DestroyContext() * initial imgui popup * queue to handle multiple trophies at once * extract trophy info on game start + various fixes * platinum trophy support + extract trophy data on startup * format * nptrophy: GetTrophyUnlockState * implement vinicius' reviews * Add UI to configure keyboard-to-controller mapping (#308) * Add UI to configure keyboard-to-controller mapping * Add an optional "---fix" argument to format-checking script * clang fix --------- Co-authored-by: georgemoralis * sceNetAccept sleep and SDLAudio::AudioOutOutput latency and cpu improvements (#507) * Add 5-second sleep on sceNetAccept as this can be called in an infinite loop and would normally block (this isn't ideal for non-blocking sockets but it's all stubs at the moment anyway) * SDLAudio::AudioOutOutput: protect against invalid handle, support NULL input (wait only), replace fixed 65536 with an amount based on settable latency target (20ms for now) * Fix whitespace --------- Co-authored-by: j * vulkan: Skip draw when primitive type is None. (#867) * Revert "Add UI to configure keyboard-to-controller mapping (#308)" This reverts commit fdb13a3b90236cd6c6e9c6e097b5e69f29efe04c. * Revert "sceNetAccept sleep and SDLAudio::AudioOutOutput latency and cpu improvements (#507)" This reverts commit d66d12935711dc531e909ed30109797e25deb5e0. * Typo fix (#820) * Update pm4_cmds.h * Update pm4_cmds.h * Misc Fixes 10 (#781) * libSceRazorCpu needed for gravity rush * libSceCesCs needed for blue reflection * clang format fix * set scePadSetVibration to log debug * initial sceNetCtl module implementation * improved error codes in file system * some intial work on netctl callbacks (helps a bit CUSA10135) * misc * improved callbacks handling in sceNetCtl * small fixes * added libSceRudp.sprx to lle modules * draft work for npcallbacks * shader_recompiler: Use correct integer type for OpImageWrite. (#871) * hot-fix: mark null image as tracked by default to avoid its updates * implement more nptrophy functions (#874) * fix review's from last pr * save timestamp when trophies are unlocked * implement GetTrophyInfo() * use strncpy instead of strcpy_s, should fix actions * nptrophy: GetGameInfo(), GetGroupInfo() * various fixes * format * Fixed the return value of sceAvPlayerIsActive * Fix copyGpuBuffers when resize invalidates commands in flight (#876) * Fix copyGpuBuffers when resize invalidates commands in flight * Use _MB macro for size constant * vulkan: Limit multisampling to supported sample counts. (#828) * shader_recompiler: Add buffer offset calculation when swizzle is enabled. (#834) * Silence unhandled case warns (#823) * hotfix: Restore unreachable * Fix Regression 895 * Enable patches on cli builds (#897) * patch support for cli * fix mac build * format * Implement S_ABSDIFF_I32 shader instruction (#902) * Implement IMAGE_SAMPLE_L_O opcode (#899) * Fix initialization of change_layers (#907) * vulkan: Disable exceptions for getImageFormatProperties and account for errors. (#906) * Map BUFFER_AUTOMIC SMIN/SAMX/AND/OR/XOR/INC/DEC (#910) * Add S_XOR_B32 opcode (#911) * Add S_XOR_B32 * Stub S_OR_B32 * core/libraries/save_data: Fix inaccurate behaviour on `sceSaveDataSetupSaveDataMemory` (#913) * Add PM4 opcodes * Add DS_READ2ST64_B32 (#916) * Add DS_READ2ST64_B32 * Fix CLANG * Fix CI again * Parameter update for DS_READ * semaphore: Fix semaphore wait list leaking (#928) Co-authored-by: Daniel R. <47796739+polybiusproxy@users.noreply.github.com> * graphics_pipeline: Move some depth configuration to dynamic state (#931) * graphics_pipeline: More proper masking * pipeline_cache: Skip setting depth/stencil fields when test is disabled * pipeline_cache: More fixes to depth stencil state * vk_rasterizer: Use dynamic state for depth bounds and bias * pipeline_cache: Missed depth bias enable * vk_rasterizer: Add stencil dynamic states * thread: Reduce spammy log * Remove some leftover state * pipeline_cache: Allocate pipelines from pools * vk_graphics_pipeline: Remove bindings member Saves about 1KB from each pipeline * cpu_patches: Patch just-in-time using signal handlers. (#852) * cpu_patches: Patch just-in-time using illegal instruction handler. * core: Add common signal dispatch system and use for on-demand TCB patches. * page_manager: Re-add userfaultfd implementation. * shader_recompiler: Implement basic 64-bit floating point support (#915) * shader_recompiler: Implement basic 64-bit floating point support * Fix formatting * Do not wait for audio packets without audio stream (#939) * signals: Fix compilation on GCC. (#934) * build: Ignore macOS ARM homebrew path when cross compiling. (#922) * cpu_patches: Revert to ahead-of-time patching on Linux for now. (#949) * hot-fix: make profiler to show real frame time * Add other 64-bit floating point shader instructions (#944) * libraries: gnmdriver: `sceGnmResetVgtControl` added (#965) * rb4 updates * Fix Regression #932 (#973) * Improve es_ES translation & fix typos (#974) Replaced Latin American Spanish terms with equivalent Spain-specific vocabulary. Adjusted grammatical structures to reflect common usage in Spain. * hot fix : always check if eboot.bin is available in path * hotfix2 : fix previous fix * Cache Windows CIs, solution by @Artalus (#985) * ci: Add ccache with ninja generator for Windows builds - Credits to @Artalus * ci: Don't include d3d and dxc compiler DLLs * ci: Simplify cache steps names and key names - Windows builds will no longer cause issues when merging * CI trigger * MiscFixes11 (#984) * fixed an issue in sceSaveDataSetSaveDataMemory , makes chariot CUSA00739 goes ingame * added branch name into sdl window title * core: name avplayer threads * Sort opcodes by their indices. Group them too when applicable (#945) * core: file_sys: fix for racing in fs mount * video_core: stride fix (#986) I don't know why it was forced to be 1 while in reality it should be as is * videoout: Make present thread realtime on macOS. (#990) * Set High Priority for Windows (#961) * ci: Refresh CMake cache on build. (#996) * QOL: Set Log Filter On Save (#991) * set log filter on reset * clang format * Rewrite Save Data & Impl Save Data Dialog (#824) * core: Rewrite PSF parser & add encoder add .sfo hex pattern to /scripts * core/fs: allow to mount path as read-only * common: Add CString wrapper to handle native null-terminated strings * SaveData: rewrite to implement full functionality * mock value for SYSTEM_VER * SavaData: backup features * SavaData: SaveDataMemory features * imgui Ref-counted textures - has a background thread to decode textures * imgui: rework gamepad navigation * PSF: fixed psf not using enum class for PSFEntryFmt (was a standard old ugly enum) - Add null check to CString when itself is used in a nullable field * SaveDataDialog implementation - Fix Mounting/Unmounting check of SaveInstance * Update Discord invite link.md (#994) I missed one last time :P * libraries/kernel: add `sceKernelMmap` to HLE * vulkan: Upgrade format queries to use format feature flags 2. (#941) * vulkan: Add alternatives when nullDescriptor is not supported. (#1001) * vulkan: Add alternatives when nullDescriptor is not supported. * vulkan: Set identifying name on null image/image view/buffer * save_data: Fix save data list back button. (#1003) * save_data: Fix save data list back button. * common: Add more null checks in CString. Co-authored-by: Vinicius Rangel --------- Co-authored-by: Vinicius Rangel * resource_tracking_pass: Allow derivatives for 2D array images. (#1000) * Image subresources barriers (#904) * video_core: texture: image subresources state tracking * shader_recompiler: use one binding if the same image is read and written * video_core: added rebinding of changed textures after overlap resolve * don't use pointers; slight `FindTexture` refactoring * video_core: buffer_cache: don't copy over the image size * redundant barriers removed; fixes * regression fixes * texture_cache: 3d texture layers count fixup * shader_recompiler: support for partially bound cubemaps * added support for cubemap arrays * don't bind unused color buffers * fixed depth promotion to do not use stencil * doors * bonfire lit * cubemap array index calculation * final touches * shader_recompiler: Use SetDst in more instructions. (#1015) * hotfix: Revert ADDC change * SaveLib PR related fixes (#1011) * Safety checks in all SFO readings * SaveData: log backup error and continue & fix possible concurrent file editing * SaveData: Fix issue with old firmwares * Optimise out unnecessary shifts (#1021) * Add V_CVT_PK_U8_F32 opcode (#1022) * shader_recompiler: Exclude non-float results from output modifiers. (#1016) * vulkan: Use closest available equivalent to missing clamp modes. (#1007) * core: Reduce some library log spam. (#1023) * hotfix: Fix mipmap query for images * hot-fix: unnecessary optimization removed * shader_recompiler: Additional scope handling and user data as push constants (#1013) * shader_recompiler: Use push constants for user data regs * shader: Add some GR2 instructions * shader: Add some instructions * shader: Add instructions for knack * touchups * spirv: Better names * buffer_cache: Ignore non gpu modified images * clang format * Add log * more fixes * shader_recompiler: Increase push constants user data to full capacity. (#1032) * Save fixes (#1031) * Add ElfInfo to track current game info in a singleton * SaveData compatibility with old firmwares * sceKernelOpen: fix for write-only mode * imgui: add font to render non-ascii characters * save_data: fix Backup Job including old backup in the new backup * Save backup: fix to avoid filling the queue Also limiting 1 backup / 10sec * Save backup: fix search not handling empty pattern *backup time improv * video_core: Separate dirty flags and better gpu invalidation (#1034) * added 0.3.0 version * starting 0.3.1 WIP * Frame graph + Precise 60 fps timing (#998) * video info: add frame graph Toggle advanced info with CTRL+F10. Also fixed imgui using gamepad for nav in wrong situations * 60fps! Implemented a timer that accumulates the time spent sleeping and sleeps for the remaining time. Also measure entire PresentThread time instead of just the time spent in Flip. * sceKernelGettimeofday: replace chrono by win32 api. Better performance bb uses this function too much. Consuming almost 30% of cpu time * Patch `extrq` (#943) * Use a singleton for instruction decoding * Use singleton class * Patch `EXTRQ` * Fixup signal context functions * Update CMakeLists.txt --------- Co-authored-by: georgemoralis * core/memory: Fix `sceKernelMTypeProtect` setting VMA type (#1037) * I hate programming and will furiously smash my monitor if I ever see another oversight of this caliber ever again in my goddamn life * Merge both protect functions together * Pre-release | Unifies builds (#953) * Pre-release | Unifies builds * Missing code... * + create actions for any branch, and pre-release only for MAIN * Cache windows * Delete old pre-releases and tags deletes old pre-releases and their tags to keep the repository clean * Update build.yml * core: Add wrapper for calling into guest code. (#967) * merge main again * RB4 CHARACTER RENDERING * skip rivals movreld * frodo fixes for readfirstlane --------- Co-authored-by: Daniel R. <47796739+polybiusproxy@users.noreply.github.com> Co-authored-by: georgemoralis Co-authored-by: psucien <168137814+psucien@users.noreply.github.com> Co-authored-by: psucien Co-authored-by: squidbus <175574877+squidbus@users.noreply.github.com> Co-authored-by: Exhigh Co-authored-by: bigqy Co-authored-by: Xphalnos <164882787+Xphalnos@users.noreply.github.com> Co-authored-by: Mmpr87 <115404923+Mmpr87@users.noreply.github.com> Co-authored-by: huss2342 <89368091+huss2342@users.noreply.github.com> Co-authored-by: Fabian <38659818+Fejbien@users.noreply.github.com> Co-authored-by: CrazyBloo Co-authored-by: tGecko Co-authored-by: Marcin Mitura Co-authored-by: Random <28494085+Random06457@users.noreply.github.com> Co-authored-by: Mikhail Paulyshka Co-authored-by: Emulator-Team-2 <38318848+Emulator-Team-2@users.noreply.github.com> Co-authored-by: Grégoire Hage <33609333+greggameplayer@users.noreply.github.com> Co-authored-by: Paris Oplopoios Co-authored-by: baggins183 Co-authored-by: Stephen Miller Co-authored-by: RDN000 <109141852+RDN000@users.noreply.github.com> Co-authored-by: DanielSvoboda Co-authored-by: Plínio Larrubia Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com> Co-authored-by: illusion0001 <37698908+illusion0001@users.noreply.github.com> Co-authored-by: oltolm Co-authored-by: Sebastian Kassai <8061077+xezrunner@users.noreply.github.com> Co-authored-by: menaman123 <53198002+menaman123@users.noreply.github.com> Co-authored-by: Stephen Miller <56742918+StevenMiller123@users.noreply.github.com> Co-authored-by: Blargle Co-authored-by: Vinicius Rangel Co-authored-by: Zack McKevitt <49414389+zmckevitt@users.noreply.github.com> Co-authored-by: Andrew Middendorp <72170013+amiddendorp22@users.noreply.github.com> Co-authored-by: Lizardy <6063922+lzardy@users.noreply.github.com> Co-authored-by: microsoftv <6063922+microsoftv@users.noreply.github.com> Co-authored-by: Yussur Mustafa Oraji Co-authored-by: adjonesey Co-authored-by: Adam Jones Co-authored-by: SleepingSnakezzz <71992016+SleepingSnakezzz@users.noreply.github.com> Co-authored-by: Vasyl_Baran Co-authored-by: kh0nsu Co-authored-by: j Co-authored-by: Pipi86 <66808852+Pipi86@users.noreply.github.com> Co-authored-by: Vladislav Mikhalin Co-authored-by: Luke Warner <65521430+LukeWarnut@users.noreply.github.com> Co-authored-by: nnn27 <51850231+nnn27@users.noreply.github.com> Co-authored-by: Raven Co-authored-by: TheCamrew <82264381+TheCamrew@users.noreply.github.com> Co-authored-by: korenkonder Co-authored-by: ElBread3 <92335081+ElBread3@users.noreply.github.com> --- .github/workflows/build.yml | 438 +++++ .github/workflows/ci.yml | 17 - .github/workflows/format.yml | 28 - .github/workflows/linux-qt.yml | 37 - .github/workflows/linux.yml | 48 - .github/workflows/macos-qt.yml | 57 - .github/workflows/macos.yml | 52 - .github/workflows/windows-qt.yml | 46 - .github/workflows/windows.yml | 34 - .gitignore | 3 + .gitmodules | 8 + .reuse/dep5 | 4 + CMakeLists.txt | 153 +- LICENSES/OFL-1.1.txt | 43 + README.md | 26 +- documents/building-linux.md | 13 +- documents/building-macos.md | 73 + documents/building-windows.md | 30 +- externals/CMakeLists.txt | 17 +- externals/dear_imgui | 1 + externals/pugixml | 1 + externals/sirit | 2 +- scripts/file_formats/sfo.hexpat | 52 + src/common/arch.h | 10 + src/common/assert.cpp | 12 + src/common/config.cpp | 24 +- src/common/config.h | 3 +- src/common/cstring.h | 157 ++ src/common/{disassembler.cpp => decoder.cpp} | 17 +- src/common/{disassembler.h => decoder.h} | 11 +- src/common/elf_info.h | 72 + src/common/fixed_value.h | 35 + src/common/io_file.cpp | 14 + src/common/io_file.h | 2 + src/common/logging/backend.cpp | 8 + src/common/logging/backend.h | 2 + src/common/logging/filter.cpp | 2 + src/common/logging/types.h | 2 + src/{qt_gui => common}/memory_patcher.cpp | 171 +- src/{qt_gui => common}/memory_patcher.h | 6 +- src/common/path_util.cpp | 16 +- src/common/path_util.h | 2 + src/common/rdtsc.h | 17 + src/common/signal_context.cpp | 92 + src/common/signal_context.h | 18 + src/common/string_util.cpp | 11 +- src/common/string_util.h | 4 +- src/common/thread.cpp | 77 + src/common/thread.h | 17 + src/common/version.h | 2 +- src/core/address_space.cpp | 78 +- src/core/address_space.h | 3 +- src/core/cpu_patches.cpp | 525 +++++- src/core/cpu_patches.h | 12 +- src/core/file_format/psf.cpp | 290 ++- src/core/file_format/psf.h | 75 +- src/core/file_format/trp.cpp | 6 +- src/core/file_sys/fs.cpp | 12 +- src/core/file_sys/fs.h | 8 +- .../libraries/app_content/app_content.cpp | 32 +- src/core/libraries/audio3d/audio3d.cpp | 344 ++++ src/core/libraries/audio3d/audio3d.h | 134 ++ src/core/libraries/audio3d/audio3d_error.h | 13 + src/core/libraries/audio3d/audio3d_impl.cpp | 13 + src/core/libraries/audio3d/audio3d_impl.h | 16 + src/core/libraries/avplayer/avplayer.cpp | 4 +- src/core/libraries/avplayer/avplayer.h | 27 +- src/core/libraries/avplayer/avplayer_impl.h | 2 - .../libraries/avplayer/avplayer_source.cpp | 28 +- .../libraries/avplayer/avplayer_state.cpp | 14 +- src/core/libraries/avplayer/avplayer_state.h | 7 +- src/core/libraries/error_codes.h | 40 +- src/core/libraries/gnmdriver/gnmdriver.cpp | 39 +- src/core/libraries/gnmdriver/gnmdriver.h | 8 +- src/core/libraries/kernel/cpu_management.cpp | 2 +- .../kernel/event_flag/event_flag.cpp | 8 +- src/core/libraries/kernel/file_system.cpp | 63 +- src/core/libraries/kernel/libkernel.cpp | 7 +- src/core/libraries/kernel/libkernel.h | 2 + .../libraries/kernel/memory_management.cpp | 28 +- src/core/libraries/kernel/memory_management.h | 6 +- .../libraries/kernel/thread_management.cpp | 36 +- src/core/libraries/kernel/thread_management.h | 2 +- .../libraries/kernel/threads/semaphore.cpp | 21 +- src/core/libraries/kernel/time_management.cpp | 19 +- src/core/libraries/kernel/time_management.h | 7 +- src/core/libraries/libs.cpp | 6 +- src/core/libraries/network/net.h | 4 + src/core/libraries/network/net_ctl_codes.h | 28 + src/core/libraries/network/net_ctl_obj.cpp | 80 + src/core/libraries/network/net_ctl_obj.h | 40 + src/core/libraries/network/netctl.cpp | 56 +- src/core/libraries/network/netctl.h | 51 +- src/core/libraries/np_manager/np_manager.cpp | 17 +- src/core/libraries/np_manager/np_manager.h | 12 +- src/core/libraries/np_trophy/np_trophy.cpp | 647 ++++++- src/core/libraries/np_trophy/np_trophy.h | 157 +- src/core/libraries/np_trophy/trophy_ui.cpp | 74 + src/core/libraries/np_trophy/trophy_ui.h | 36 + src/core/libraries/pad/pad.cpp | 8 +- src/core/libraries/pad/pad.h | 1 + src/core/libraries/rtc/rtc.cpp | 1130 +++++++++-- src/core/libraries/rtc/rtc.h | 112 +- src/core/libraries/rtc/rtc_error.h | 17 +- .../save_data/dialog/savedatadialog.cpp | 164 ++ .../save_data/dialog/savedatadialog.h | 33 + .../save_data/dialog/savedatadialog_ui.cpp | 849 +++++++++ .../save_data/dialog/savedatadialog_ui.h | 319 ++++ src/core/libraries/save_data/error_codes.h | 28 - src/core/libraries/save_data/save_backup.cpp | 248 +++ src/core/libraries/save_data/save_backup.h | 67 + .../libraries/save_data/save_instance.cpp | 228 +++ src/core/libraries/save_data/save_instance.h | 138 ++ src/core/libraries/save_data/save_memory.cpp | 287 +++ src/core/libraries/save_data/save_memory.h | 49 + src/core/libraries/save_data/savedata.cpp | 1653 ++++++++++++----- src/core/libraries/save_data/savedata.h | 356 +--- src/core/libraries/system/commondialog.cpp | 20 +- src/core/libraries/system/commondialog.h | 43 +- src/core/libraries/system/msgdialog.cpp | 171 +- src/core/libraries/system/msgdialog.h | 107 +- src/core/libraries/system/msgdialog_ui.cpp | 294 +++ src/core/libraries/system/msgdialog_ui.h | 181 ++ src/core/libraries/system/savedatadialog.cpp | 84 - src/core/libraries/system/savedatadialog.h | 26 - src/core/libraries/system/systemservice.cpp | 2 +- src/core/libraries/system/userservice.cpp | 2 +- src/core/libraries/videoout/driver.cpp | 38 +- src/core/libraries/videoout/driver.h | 3 +- src/core/libraries/videoout/video_out.cpp | 4 +- src/core/linker.cpp | 31 +- src/core/linker.h | 10 +- src/core/memory.cpp | 84 +- src/core/memory.h | 12 +- src/core/module.cpp | 20 +- src/core/signals.cpp | 146 ++ src/core/signals.h | 56 + src/core/tls.cpp | 136 +- src/core/tls.h | 2 + src/emulator.cpp | 59 +- src/images/play_icon.png | Bin 2470 -> 1150 bytes src/images/themes_icon.png | Bin 3395 -> 1413 bytes src/imgui/imgui_config.h | 32 + src/imgui/imgui_layer.h | 17 + src/imgui/imgui_std.h | 69 + src/imgui/imgui_texture.h | 45 + src/imgui/layer/video_info.cpp | 123 ++ src/imgui/layer/video_info.h | 22 + src/imgui/renderer/CMakeLists.txt | 32 + .../renderer/fonts/NotoSansJP-Regular.ttf | Bin 0 -> 5733060 bytes src/imgui/renderer/imgui_core.cpp | 210 +++ src/imgui/renderer/imgui_core.h | 31 + src/imgui/renderer/imgui_impl_sdl3.cpp | 789 ++++++++ src/imgui/renderer/imgui_impl_sdl3.h | 31 + src/imgui/renderer/imgui_impl_vulkan.cpp | 1307 +++++++++++++ src/imgui/renderer/imgui_impl_vulkan.h | 63 + src/imgui/renderer/texture_manager.cpp | 243 +++ src/imgui/renderer/texture_manager.h | 30 + src/main.cpp | 15 + src/qt_gui/cheats_patches.cpp | 181 +- src/qt_gui/game_grid_frame.cpp | 7 +- src/qt_gui/game_info.h | 37 +- src/qt_gui/game_list_frame.cpp | 39 +- src/qt_gui/game_list_utils.h | 1 - src/qt_gui/gui_context_menus.h | 58 +- src/qt_gui/main.cpp | 9 +- src/qt_gui/main_window.cpp | 56 +- src/qt_gui/main_window_themes.cpp | 33 +- src/qt_gui/main_window_ui.h | 13 +- src/qt_gui/pkg_viewer.cpp | 32 +- src/qt_gui/pkg_viewer.h | 1 - src/qt_gui/settings_dialog.cpp | 17 +- src/qt_gui/translations/ar.ts | 991 ++++++++++ src/qt_gui/translations/da_DK.ts | 78 +- src/qt_gui/translations/de.ts | 268 ++- src/qt_gui/translations/el.ts | 78 +- src/qt_gui/translations/en.ts | 80 +- src/qt_gui/translations/es_ES.ts | 100 +- src/qt_gui/translations/fa_IR.ts | 978 ++++++++++ src/qt_gui/translations/fi.ts | 78 +- src/qt_gui/translations/fr.ts | 108 +- src/qt_gui/translations/hu_HU.ts | 78 +- src/qt_gui/translations/id.ts | 78 +- src/qt_gui/translations/it.ts | 78 +- src/qt_gui/translations/ja_JP.ts | 80 +- src/qt_gui/translations/ko_KR.ts | 80 +- src/qt_gui/translations/lt_LT.ts | 78 +- src/qt_gui/translations/nb.ts | 80 +- src/qt_gui/translations/nl.ts | 78 +- src/qt_gui/translations/pl_PL.ts | 106 +- src/qt_gui/translations/pt_BR.ts | 78 +- src/qt_gui/translations/ro_RO.ts | 78 +- src/qt_gui/translations/ru_RU.ts | 78 +- src/qt_gui/translations/sq.ts | 978 ++++++++++ src/qt_gui/translations/tr_TR.ts | 78 +- src/qt_gui/translations/vi_VN.ts | 78 +- src/qt_gui/translations/zh_CN.ts | 254 ++- src/qt_gui/translations/zh_TW.ts | 78 +- src/qt_gui/trophy_viewer.cpp | 36 +- src/sdl_window.cpp | 17 +- src/sdl_window.h | 4 + src/shader_recompiler/backend/bindings.h | 8 +- .../backend/spirv/emit_spirv.cpp | 21 +- .../backend/spirv/emit_spirv.h | 5 +- .../backend/spirv/emit_spirv_atomic.cpp | 16 + .../spirv/emit_spirv_bitwise_conversion.cpp | 8 +- .../spirv/emit_spirv_context_get_set.cpp | 63 +- .../backend/spirv/emit_spirv_image.cpp | 14 +- .../backend/spirv/emit_spirv_instructions.h | 35 +- .../backend/spirv/emit_spirv_integer.cpp | 8 + .../backend/spirv/emit_spirv_special.cpp | 16 +- .../backend/spirv/emit_spirv_warp.cpp | 5 +- .../backend/spirv/spirv_emit_context.cpp | 61 +- .../backend/spirv/spirv_emit_context.h | 14 +- .../frontend/control_flow_graph.cpp | 22 +- src/shader_recompiler/frontend/decode.cpp | 48 +- src/shader_recompiler/frontend/format.cpp | 14 +- .../frontend/structured_control_flow.cpp | 16 +- .../frontend/structured_control_flow.h | 4 +- .../frontend/translate/data_share.cpp | 261 +-- .../frontend/translate/export.cpp | 32 +- .../frontend/translate/scalar_alu.cpp | 552 +++--- .../frontend/translate/scalar_memory.cpp | 3 + .../frontend/translate/translate.cpp | 52 +- .../frontend/translate/translate.h | 261 +-- .../frontend/translate/vector_alu.cpp | 1346 ++++++++------ .../translate/vector_interpolation.cpp | 29 +- .../frontend/translate/vector_memory.cpp | 630 ++++--- src/shader_recompiler/info.h | 272 +++ src/shader_recompiler/ir/basic_block.h | 1 + src/shader_recompiler/ir/ir_emitter.cpp | 59 +- src/shader_recompiler/ir/ir_emitter.h | 9 +- src/shader_recompiler/ir/microinstruction.cpp | 11 +- src/shader_recompiler/ir/opcodes.inc | 78 +- .../ir/passes/constant_propagation_pass.cpp | 7 +- .../passes/lower_shared_mem_to_registers.cpp | 3 +- .../ir/passes/resource_tracking_pass.cpp | 174 +- .../ir/passes/shader_info_collection_pass.cpp | 18 +- .../ir/passes/ssa_rewrite_pass.cpp | 64 +- src/shader_recompiler/ir/program.h | 2 +- src/shader_recompiler/ir/reg.h | 1 + src/shader_recompiler/ir/value.cpp | 1 + src/shader_recompiler/params.h | 26 + src/shader_recompiler/recompiler.cpp | 19 +- src/shader_recompiler/recompiler.h | 22 +- src/shader_recompiler/runtime_info.h | 265 +-- .../specialization.h} | 124 +- src/video_core/amdgpu/liverpool.cpp | 84 +- src/video_core/amdgpu/liverpool.h | 29 + src/video_core/amdgpu/pm4_cmds.h | 107 +- src/video_core/amdgpu/pm4_opcodes.h | 4 + src/video_core/amdgpu/resource.h | 30 +- src/video_core/buffer_cache/buffer.cpp | 39 +- src/video_core/buffer_cache/buffer.h | 39 +- src/video_core/buffer_cache/buffer_cache.cpp | 140 +- src/video_core/buffer_cache/buffer_cache.h | 28 +- src/video_core/page_manager.cpp | 107 +- .../renderer_vulkan/liverpool_to_vk.cpp | 49 +- .../renderer_vulkan/liverpool_to_vk.h | 12 +- .../renderer_vulkan/renderer_vulkan.cpp | 30 +- .../renderer_vulkan/renderer_vulkan.h | 4 + src/video_core/renderer_vulkan/vk_common.cpp | 3 + src/video_core/renderer_vulkan/vk_common.h | 5 + .../renderer_vulkan/vk_compute_pipeline.cpp | 164 +- .../renderer_vulkan/vk_compute_pipeline.h | 22 +- .../renderer_vulkan/vk_graphics_pipeline.cpp | 195 +- .../renderer_vulkan/vk_graphics_pipeline.h | 48 +- .../renderer_vulkan/vk_instance.cpp | 89 +- src/video_core/renderer_vulkan/vk_instance.h | 50 +- .../renderer_vulkan/vk_pipeline_cache.cpp | 349 +++- .../renderer_vulkan/vk_pipeline_cache.h | 42 +- .../renderer_vulkan/vk_pipeline_common.cpp | 81 + .../renderer_vulkan/vk_pipeline_common.h | 49 + .../renderer_vulkan/vk_platform.cpp | 56 +- src/video_core/renderer_vulkan/vk_platform.h | 4 +- .../renderer_vulkan/vk_rasterizer.cpp | 149 +- .../renderer_vulkan/vk_rasterizer.h | 8 +- .../renderer_vulkan/vk_resource_pool.cpp | 120 +- .../renderer_vulkan/vk_resource_pool.h | 31 +- .../renderer_vulkan/vk_scheduler.cpp | 61 +- .../renderer_vulkan/vk_shader_cache.cpp | 192 -- .../texture_cache/host_compatibility.h | 392 ++++ src/video_core/texture_cache/image.cpp | 246 ++- src/video_core/texture_cache/image.h | 35 +- src/video_core/texture_cache/image_info.cpp | 82 +- src/video_core/texture_cache/image_info.h | 13 +- src/video_core/texture_cache/image_view.cpp | 66 +- src/video_core/texture_cache/image_view.h | 11 +- .../texture_cache/texture_cache.cpp | 338 +++- src/video_core/texture_cache/texture_cache.h | 93 +- src/video_core/texture_cache/tile_manager.cpp | 34 +- src/video_core/texture_cache/tile_manager.h | 3 +- src/video_core/texture_cache/types.h | 2 + 293 files changed, 24016 insertions(+), 5558 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/format.yml delete mode 100644 .github/workflows/linux-qt.yml delete mode 100644 .github/workflows/linux.yml delete mode 100644 .github/workflows/macos-qt.yml delete mode 100644 .github/workflows/macos.yml delete mode 100644 .github/workflows/windows-qt.yml delete mode 100644 .github/workflows/windows.yml create mode 100644 LICENSES/OFL-1.1.txt create mode 100644 documents/building-macos.md create mode 160000 externals/dear_imgui create mode 160000 externals/pugixml create mode 100644 scripts/file_formats/sfo.hexpat create mode 100644 src/common/arch.h create mode 100644 src/common/cstring.h rename src/common/{disassembler.cpp => decoder.cpp} (65%) rename src/common/{disassembler.h => decoder.h} (60%) create mode 100644 src/common/elf_info.h create mode 100644 src/common/fixed_value.h rename src/{qt_gui => common}/memory_patcher.cpp (66%) rename src/{qt_gui => common}/memory_patcher.h (87%) create mode 100644 src/common/signal_context.cpp create mode 100644 src/common/signal_context.h create mode 100644 src/core/libraries/audio3d/audio3d.cpp create mode 100644 src/core/libraries/audio3d/audio3d.h create mode 100644 src/core/libraries/audio3d/audio3d_error.h create mode 100644 src/core/libraries/audio3d/audio3d_impl.cpp create mode 100644 src/core/libraries/audio3d/audio3d_impl.h create mode 100644 src/core/libraries/network/net_ctl_codes.h create mode 100644 src/core/libraries/network/net_ctl_obj.cpp create mode 100644 src/core/libraries/network/net_ctl_obj.h create mode 100644 src/core/libraries/np_trophy/trophy_ui.cpp create mode 100644 src/core/libraries/np_trophy/trophy_ui.h create mode 100644 src/core/libraries/save_data/dialog/savedatadialog.cpp create mode 100644 src/core/libraries/save_data/dialog/savedatadialog.h create mode 100644 src/core/libraries/save_data/dialog/savedatadialog_ui.cpp create mode 100644 src/core/libraries/save_data/dialog/savedatadialog_ui.h delete mode 100644 src/core/libraries/save_data/error_codes.h create mode 100644 src/core/libraries/save_data/save_backup.cpp create mode 100644 src/core/libraries/save_data/save_backup.h create mode 100644 src/core/libraries/save_data/save_instance.cpp create mode 100644 src/core/libraries/save_data/save_instance.h create mode 100644 src/core/libraries/save_data/save_memory.cpp create mode 100644 src/core/libraries/save_data/save_memory.h create mode 100644 src/core/libraries/system/msgdialog_ui.cpp create mode 100644 src/core/libraries/system/msgdialog_ui.h delete mode 100644 src/core/libraries/system/savedatadialog.cpp delete mode 100644 src/core/libraries/system/savedatadialog.h create mode 100644 src/core/signals.cpp create mode 100644 src/core/signals.h create mode 100644 src/imgui/imgui_config.h create mode 100644 src/imgui/imgui_layer.h create mode 100644 src/imgui/imgui_std.h create mode 100644 src/imgui/imgui_texture.h create mode 100644 src/imgui/layer/video_info.cpp create mode 100644 src/imgui/layer/video_info.h create mode 100644 src/imgui/renderer/CMakeLists.txt create mode 100644 src/imgui/renderer/fonts/NotoSansJP-Regular.ttf create mode 100644 src/imgui/renderer/imgui_core.cpp create mode 100644 src/imgui/renderer/imgui_core.h create mode 100644 src/imgui/renderer/imgui_impl_sdl3.cpp create mode 100644 src/imgui/renderer/imgui_impl_sdl3.h create mode 100644 src/imgui/renderer/imgui_impl_vulkan.cpp create mode 100644 src/imgui/renderer/imgui_impl_vulkan.h create mode 100644 src/imgui/renderer/texture_manager.cpp create mode 100644 src/imgui/renderer/texture_manager.h create mode 100644 src/qt_gui/translations/ar.ts create mode 100644 src/qt_gui/translations/fa_IR.ts create mode 100644 src/qt_gui/translations/sq.ts create mode 100644 src/shader_recompiler/info.h create mode 100644 src/shader_recompiler/params.h rename src/{video_core/renderer_vulkan/vk_shader_cache.h => shader_recompiler/specialization.h} (51%) create mode 100644 src/video_core/renderer_vulkan/vk_pipeline_common.cpp create mode 100644 src/video_core/renderer_vulkan/vk_pipeline_common.h delete mode 100644 src/video_core/renderer_vulkan/vk_shader_cache.cpp create mode 100644 src/video_core/texture_cache/host_compatibility.h diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..8c5bc47901 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,438 @@ +# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +name: Build and Release + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "*" ] + +env: + BUILD_TYPE: Release + +jobs: + reuse: + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@v4 + - uses: fsfe/reuse-action@v4 + + clang-format: + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install + run: | + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' + sudo apt update + sudo apt install clang-format-17 + - name: Build + env: + COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} + run: ./.ci/clang-format.sh + + get-info: + runs-on: ubuntu-latest + outputs: + date: ${{ steps.vars.outputs.date }} + shorthash: ${{ steps.vars.outputs.shorthash }} + steps: + - uses: actions/checkout@v4 + - name: Get date and git hash + id: vars + run: | + echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + echo "shorthash=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + echo "shorthash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + windows-sdl: + runs-on: windows-latest + needs: get-info + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Cache CMake Configuration + uses: actions/cache@v4 + env: + cache-name: ${{ runner.os }}-sdl-ninja-cache-cmake-configuration + with: + path: | + ${{github.workspace}}/build + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + restore-keys: | + ${{ env.cache-name }}- + + - name: Cache CMake Build + uses: hendrikmuhs/ccache-action@v1.2.14 + env: + cache-name: ${{ runner.os }}-sdl-cache-cmake-build + with: + append-timestamp: false + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + + - name: Setup VS Environment + uses: ilammy/msvc-dev-cmd@v1.13.0 + with: + arch: amd64 + + - name: Configure CMake + run: cmake --fresh -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel + + - name: Upload Windows SDL artifact + uses: actions/upload-artifact@v4 + with: + name: shadps4-win64-sdl-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} + path: ${{github.workspace}}/build/shadPS4.exe + + windows-qt: + runs-on: windows-latest + needs: get-info + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Qt + uses: jurplel/install-qt-action@v4 + with: + version: 6.7.2 + host: windows + target: desktop + arch: win64_msvc2019_64 + archives: qtbase qttools + + - name: Cache CMake Configuration + uses: actions/cache@v4 + env: + cache-name: ${{ runner.os }}-qt-ninja-cache-cmake-configuration + with: + path: | + ${{github.workspace}}/build + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + restore-keys: | + ${{ env.cache-name }}- + + - name: Cache CMake Build + uses: hendrikmuhs/ccache-action@v1.2.14 + env: + cache-name: ${{ runner.os }}-qt-cache-cmake-build + with: + append-timestamp: false + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + + - name: Setup VS Environment + uses: ilammy/msvc-dev-cmd@v1.13.0 + with: + arch: amd64 + + - name: Configure CMake + run: cmake --fresh -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel + + - name: Deploy and Package + run: | + mkdir upload + move build/shadPS4.exe upload + windeployqt --no-compiler-runtime --no-system-d3d-compiler --no-system-dxc-compiler --dir upload upload/shadPS4.exe + Compress-Archive -Path upload/* -DestinationPath shadps4-win64-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}.zip + + - name: Upload Windows Qt artifact + uses: actions/upload-artifact@v4 + with: + name: shadps4-win64-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} + path: upload/ + + macos-sdl: + runs-on: macos-latest + needs: get-info + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup latest Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest + + - name: Install MoltenVK + run: | + arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + arch -x86_64 /usr/local/bin/brew install molten-vk + + - name: Cache CMake Configuration + uses: actions/cache@v4 + env: + cache-name: ${{ runner.os }}-sdl-cache-cmake-configuration + with: + path: | + ${{github.workspace}}/build + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + restore-keys: | + ${{ env.cache-name }}- + + - name: Cache CMake Build + uses: hendrikmuhs/ccache-action@v1.2.14 + env: + cache-name: ${{runner.os}}-sdl-cache-cmake-build + with: + append-timestamp: false + create-symlink: true + key: ${{env.cache-name}}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + variant: sccache + + - name: Configure CMake + run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel $(sysctl -n hw.ncpu) + + - name: Package and Upload macOS SDL artifact + run: | + mkdir upload + mv ${{github.workspace}}/build/shadps4 upload + cp $(arch -x86_64 /usr/local/bin/brew --prefix)/opt/molten-vk/lib/libMoltenVK.dylib upload + tar cf shadps4-macos-sdl.tar.gz -C upload . + - uses: actions/upload-artifact@v4 + with: + name: shadps4-macos-sdl-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} + path: shadps4-macos-sdl.tar.gz + + macos-qt: + runs-on: macos-latest + needs: get-info + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup latest Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest + + - name: Install MoltenVK and Setup Qt + run: | + arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + arch -x86_64 /usr/local/bin/brew install molten-vk + - uses: jurplel/install-qt-action@v4 + with: + version: 6.7.2 + host: mac + target: desktop + arch: clang_64 + archives: qtbase qttools + + - name: Cache CMake Configuration + uses: actions/cache@v4 + env: + cache-name: ${{ runner.os }}-qt-cache-cmake-configuration + with: + path: | + ${{github.workspace}}/build + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + restore-keys: | + ${{ env.cache-name }}- + + - name: Cache CMake Build + uses: hendrikmuhs/ccache-action@v1.2.14 + env: + cache-name: ${{runner.os}}-qt-cache-cmake-build + with: + append-timestamp: false + create-symlink: true + key: ${{env.cache-name}}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + variant: sccache + + - name: Configure CMake + run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_ARCHITECTURES=x86_64 -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel $(sysctl -n hw.ncpu) + + - name: Package and Upload macOS Qt artifact + run: | + mkdir upload + mv ${{github.workspace}}/build/shadps4.app upload + macdeployqt upload/shadps4.app + tar cf shadps4-macos-qt.tar.gz -C upload . + - uses: actions/upload-artifact@v4 + with: + name: shadps4-macos-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} + path: shadps4-macos-qt.tar.gz + + linux-sdl: + runs-on: ubuntu-24.04 + needs: get-info + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install dependencies + run: sudo apt-get update && sudo apt install -y libx11-dev libxext-dev libwayland-dev libfuse2 clang build-essential + + - name: Cache CMake Configuration + uses: actions/cache@v4 + env: + cache-name: ${{ runner.os }}-sdl-cache-cmake-configuration + with: + path: | + ${{github.workspace}}/build + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + restore-keys: | + ${{ env.cache-name }}- + + - name: Cache CMake Build + uses: hendrikmuhs/ccache-action@v1.2.14 + env: + cache-name: ${{ runner.os }}-sdl-cache-cmake-build + with: + append-timestamp: false + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + + - name: Configure CMake + run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel + + - name: Package and Upload Linux(ubuntu64) SDL artifact + run: | + ls -la ${{ github.workspace }}/build/shadps4 + + - uses: actions/upload-artifact@v4 + with: + name: shadps4-ubuntu64-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} + path: ${{ github.workspace }}/build/shadps4 + + - name: Run AppImage packaging script + run: ./.github/linux-appimage-sdl.sh + + - name: Package and Upload Linux SDL artifact + run: | + tar cf shadps4-linux-sdl.tar.gz -C ${{github.workspace}}/build shadps4 + - uses: actions/upload-artifact@v4 + with: + name: shadps4-linux-sdl-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} + path: Shadps4-sdl.AppImage + + linux-qt: + runs-on: ubuntu-24.04 + needs: get-info + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install dependencies + run: sudo apt-get update && sudo apt install -y libx11-dev libxext-dev libwayland-dev libfuse2 clang build-essential qt6-base-dev qt6-tools-dev + + - name: Cache CMake Configuration + uses: actions/cache@v4 + env: + cache-name: ${{ runner.os }}-qt-cache-cmake-configuration + with: + path: | + ${{github.workspace}}/build + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + restore-keys: | + ${{ env.cache-name }}- + + - name: Cache CMake Build + uses: hendrikmuhs/ccache-action@v1.2.14 + env: + cache-name: ${{ runner.os }}-qt-cache-cmake-build + with: + append-timestamp: false + key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} + + - name: Configure CMake + run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel + + - name: Run AppImage packaging script + run: ./.github/linux-appimage-qt.sh + + - name: Package and Upload Linux Qt artifact + run: | + tar cf shadps4-linux-qt.tar.gz -C ${{github.workspace}}/build shadps4 + - uses: actions/upload-artifact@v4 + with: + name: shadps4-linux-qt-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }} + path: Shadps4-qt.AppImage + + pre-release: + if: github.ref == 'refs/heads/main' && github.event_name == 'push' + needs: [get-info, windows-sdl, windows-qt, macos-sdl, macos-qt, linux-sdl, linux-qt] + runs-on: ubuntu-latest + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: ./artifacts + + - name: Compress individual directories (without parent directory) + run: | + cd ./artifacts + for dir in */; do + if [ -d "$dir" ]; then + dir_name=${dir%/} + echo "Creating zip for $dir_name" + (cd "$dir_name" && zip -r "../${dir_name}.zip" .) + fi + done + + - name: Create Pre-Release on GitHub + uses: ncipollo/release-action@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + name: "Pre-release-shadPS4-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}" + tag: "Pre-release-shadPS4-${{ needs.get-info.outputs.date }}-${{ needs.get-info.outputs.shorthash }}" + draft: false + prerelease: true + artifacts: | + ./artifacts/*.zip + + - name: Delete old pre-releases and tags + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + current_date="${{ needs.get-info.outputs.date }}" + api_url="https://api.github.com/repos/${{ github.repository }}/releases" + + # Get current pre-releases + releases=$(curl -H "Authorization: token $GITHUB_TOKEN" "$api_url?per_page=100") + + # Parse and delete old pre-releases + echo "$releases" | jq -c '.[] | select(.prerelease == true)' | while read -r release; do + release_date=$(echo "$release" | jq -r '.created_at' | cut -d'T' -f1) + release_id=$(echo "$release" | jq -r '.id') + release_tag=$(echo "$release" | jq -r '.tag_name') + + # Compare dates + if [[ "$release_date" < "$current_date" ]]; then + echo "Deleting old pre-release: $release_id from $release_date with tag: $release_tag" + # Delete the pre-release + curl -X DELETE -H "Authorization: token $GITHUB_TOKEN" "$api_url/$release_id" + # Delete the tag + curl -X DELETE -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/${{ github.repository }}/git/refs/tags/$release_tag" + fi + done diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 123c7f3f80..0000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-FileCopyrightText: 2021 yuzu Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -name: Reuse - -on: - push: - branches: [ main ] - tags: [ "*" ] - pull_request: - branches: [ main ] -jobs: - reuse: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: fsfe/reuse-action@v4 diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml deleted file mode 100644 index b9887ccac1..0000000000 --- a/.github/workflows/format.yml +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -name: Clang Format - -on: - push: - branches: [ "*" ] - pull_request: - branches: [ main ] - -jobs: - clang-format: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Install - run: | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' - sudo apt update - sudo apt install clang-format-17 - - name: Build - env: - COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} - run: ./.ci/clang-format.sh \ No newline at end of file diff --git a/.github/workflows/linux-qt.yml b/.github/workflows/linux-qt.yml deleted file mode 100644 index 6388536bb2..0000000000 --- a/.github/workflows/linux-qt.yml +++ /dev/null @@ -1,37 +0,0 @@ -# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -name: Linux-Qt - -on: [push, pull_request] - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install misc packages - run: > - sudo apt-get update && sudo apt install libx11-dev libxext-dev libwayland-dev libfuse2 clang build-essential qt6-base-dev qt6-tools-dev - - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DENABLE_QT_GUI=ON - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel - - - name: Run AppImage packaging script - run: ./.github/linux-appimage-qt.sh - - - name: Upload executable - uses: actions/upload-artifact@v4 - with: - name: shadps4-linux-qt - path: Shadps4-qt.AppImage diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml deleted file mode 100644 index ef77a16c8b..0000000000 --- a/.github/workflows/linux.yml +++ /dev/null @@ -1,48 +0,0 @@ -# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -name: Linux - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install misc packages - run: > - sudo apt-get update && sudo apt install libx11-dev libxext-dev libwayland-dev libfuse2 clang build-essential - - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel - - - name: Upload executable - uses: actions/upload-artifact@v4 - with: - name: shadps4-ubuntu64 - path: | - ${{github.workspace}}/build/shadps4 - - - name: Run AppImage packaging script - run: ./.github/linux-appimage-sdl.sh - - - name: Upload executable - uses: actions/upload-artifact@v4 - with: - name: shadps4-sdl-appimage - path: Shadps4-sdl.AppImage diff --git a/.github/workflows/macos-qt.yml b/.github/workflows/macos-qt.yml deleted file mode 100644 index c507fa7ce0..0000000000 --- a/.github/workflows/macos-qt.yml +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -name: macOS-Qt - -on: [push, pull_request] - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: macos-latest - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup latest Xcode - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest - - - name: Install MoltenVK - run: | - arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - arch -x86_64 /usr/local/bin/brew install molten-vk - - - name: Setup Qt - uses: jurplel/install-qt-action@v4 - with: - version: 6.7.2 - host: mac - target: desktop - arch: clang_64 - archives: qtbase qttools - - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_ARCHITECTURES=x86_64 -DENABLE_QT_GUI=ON - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel $(sysctl -n hw.ncpu) - - - name: Package - run: | - mkdir upload - mv ${{github.workspace}}/build/shadps4.app upload - mv ${{github.workspace}}/build/translations upload - macdeployqt upload/shadps4.app - tar cf shadps4-macos-qt.tar.gz -C upload . - - - name: Upload executable - uses: actions/upload-artifact@v4 - with: - name: shadps4-macos-qt - path: shadps4-macos-qt.tar.gz diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml deleted file mode 100644 index 1a2a6eff61..0000000000 --- a/.github/workflows/macos.yml +++ /dev/null @@ -1,52 +0,0 @@ -# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -name: macOS - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: macos-latest - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup latest Xcode - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest - - - name: Install MoltenVK - run: | - arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - arch -x86_64 /usr/local/bin/brew install molten-vk - - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_ARCHITECTURES=x86_64 - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel $(sysctl -n hw.ncpu) - - - name: Package - run: | - mkdir upload - mv ${{github.workspace}}/build/shadps4 upload - cp $(arch -x86_64 /usr/local/bin/brew --prefix)/opt/molten-vk/lib/libMoltenVK.dylib upload - install_name_tool -add_rpath "@loader_path" upload/shadps4 - tar cf shadps4-macos-sdl.tar.gz -C upload . - - - name: Upload executable - uses: actions/upload-artifact@v4 - with: - name: shadps4-macos-sdl - path: shadps4-macos-sdl.tar.gz diff --git a/.github/workflows/windows-qt.yml b/.github/workflows/windows-qt.yml deleted file mode 100644 index a792e9d5f2..0000000000 --- a/.github/workflows/windows-qt.yml +++ /dev/null @@ -1,46 +0,0 @@ -# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -name: Windows-Qt - -on: [push, pull_request] - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: windows-latest - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup Qt - uses: jurplel/install-qt-action@v4 - with: - version: 6.7.2 - host: windows - target: desktop - arch: win64_msvc2019_64 - archives: qtbase qttools - - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -T ClangCL -DENABLE_QT_GUI=ON - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel - - - name: Deploy - run: | - mkdir upload - move build/Release/shadPS4.exe upload - move build/translations upload - windeployqt --dir upload upload/shadPS4.exe - - - name: Upload executable - uses: actions/upload-artifact@v4 - with: - name: shadps4-win64-qt - path: upload diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index 499124863a..0000000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -name: Windows - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -T ClangCL - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel - - - name: Upload executable - uses: actions/upload-artifact@v4 - with: - name: shadps4-win64-sdl - path: | - ${{github.workspace}}/build/Release/shadPS4.exe diff --git a/.gitignore b/.gitignore index 2a3145085a..087f29683d 100644 --- a/.gitignore +++ b/.gitignore @@ -409,3 +409,6 @@ FodyWeavers.xsd /out/* /third-party/out/* /src/common/scm_rev.cpp + +# for macOS +**/.DS_Store \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 95b0fc0bb4..b2543534f3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -85,3 +85,11 @@ [submodule "externals/half"] path = externals/half url = https://github.com/ROCm/half.git +[submodule "externals/dear_imgui"] + path = externals/dear_imgui + url = https://github.com/shadps4-emu/ext-imgui.git + shallow = true + branch = docking +[submodule "externals/pugixml"] + path = externals/pugixml + url = https://github.com/zeux/pugixml.git diff --git a/.reuse/dep5 b/.reuse/dep5 index 0140c0c02f..30a9065b77 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -58,3 +58,7 @@ License: MIT Files: externals/tracy/* Copyright: 2017-2024 Bartosz Taudul License: BSD-3-Clause + +Files: src/imgui/renderer/fonts/NotoSansJP-Regular.ttf +Copyright: 2012 Google Inc. All Rights Reserved. +License: OFL-1.1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c7e03e3ce..e0408ae19b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,8 +17,41 @@ endif() project(shadPS4) +# Forcing PIE makes sure that the base address is high enough so that it doesn't clash with the PS4 memory. +if(UNIX AND NOT APPLE) + set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) + + # check PIE support at link time + include(CheckPIESupported) + check_pie_supported(OUTPUT_VARIABLE pie_check LANGUAGES C CXX) + if(NOT CMAKE_C_LINK_PIE_SUPPORTED OR NOT CMAKE_CXX_LINK_PIE_SUPPORTED) + message(WARNING "PIE is not supported at link time: ${pie_check}") + endif() +endif() + option(ENABLE_QT_GUI "Enable the Qt GUI. If not selected then the emulator uses a minimal SDL-based UI instead" OFF) +# First, determine whether to use CMAKE_OSX_ARCHITECTURES or CMAKE_SYSTEM_PROCESSOR. +if (APPLE AND CMAKE_OSX_ARCHITECTURES) + set(BASE_ARCHITECTURE "${CMAKE_OSX_ARCHITECTURES}") +else() + set(BASE_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}") +endif() + +# Next, match common architecture strings down to a known common value. +if (BASE_ARCHITECTURE MATCHES "(x86)|(X86)|(amd64)|(AMD64)") + set(ARCHITECTURE "x86_64") +elseif (BASE_ARCHITECTURE MATCHES "(aarch64)|(AARCH64)|(arm64)|(ARM64)") + set(ARCHITECTURE "arm64") +else() + message(FATAL_ERROR "Unsupported CPU architecture: ${BASE_ARCHITECTURE}") +endif() + +if (APPLE AND ARCHITECTURE STREQUAL "x86_64") + # Exclude ARM homebrew path to avoid conflicts when cross compiling. + list(APPEND CMAKE_IGNORE_PREFIX_PATH "/opt/homebrew") +endif() + # This function should be passed a list of all files in a target. It will automatically generate file groups # following the directory hierarchy, so that the layout of the files in IDEs matches the one in the filesystem. function(create_target_directory_groups target_name) @@ -80,6 +113,7 @@ find_package(xbyak 7.07 CONFIG) find_package(xxHash 0.8.2 MODULE) find_package(zlib-ng 2.1.7 MODULE) find_package(Zydis 5.0.0 CONFIG) +find_package(pugixml 1.14 CONFIG) if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR NOT MSVC) find_package(cryptopp 8.9.0 MODULE) @@ -151,7 +185,7 @@ set(GNM_LIB src/core/libraries/gnmdriver/gnmdriver.cpp src/core/libraries/gnmdriver/gnm_error.h ) -set(KERNEL_LIB +set(KERNEL_LIB src/core/libraries/kernel/event_flag/event_flag.cpp src/core/libraries/kernel/event_flag/event_flag.h src/core/libraries/kernel/event_flag/event_flag_obj.cpp @@ -183,6 +217,9 @@ set(NETWORK_LIBS src/core/libraries/network/http.cpp src/core/libraries/network/net.cpp src/core/libraries/network/netctl.cpp src/core/libraries/network/netctl.h + src/core/libraries/network/net_ctl_obj.cpp + src/core/libraries/network/net_ctl_obj.h + src/core/libraries/network/net_ctl_codes.h src/core/libraries/network/net.h src/core/libraries/network/ssl.cpp src/core/libraries/network/ssl.h @@ -192,13 +229,21 @@ set(SYSTEM_LIBS src/core/libraries/system/commondialog.cpp src/core/libraries/system/commondialog.h src/core/libraries/system/msgdialog.cpp src/core/libraries/system/msgdialog.h + src/core/libraries/system/msgdialog_ui.cpp src/core/libraries/system/posix.cpp src/core/libraries/system/posix.h - src/core/libraries/save_data/error_codes.h + src/core/libraries/save_data/save_backup.cpp + src/core/libraries/save_data/save_backup.h + src/core/libraries/save_data/save_instance.cpp + src/core/libraries/save_data/save_instance.h + src/core/libraries/save_data/save_memory.cpp + src/core/libraries/save_data/save_memory.h src/core/libraries/save_data/savedata.cpp src/core/libraries/save_data/savedata.h - src/core/libraries/system/savedatadialog.cpp - src/core/libraries/system/savedatadialog.h + src/core/libraries/save_data/dialog/savedatadialog.cpp + src/core/libraries/save_data/dialog/savedatadialog.h + src/core/libraries/save_data/dialog/savedatadialog_ui.cpp + src/core/libraries/save_data/dialog/savedatadialog_ui.h src/core/libraries/system/sysmodule.cpp src/core/libraries/system/sysmodule.h src/core/libraries/system/systemservice.cpp @@ -231,6 +276,11 @@ set(SYSTEM_LIBS src/core/libraries/system/commondialog.cpp src/core/libraries/ngs2/ngs2_impl.cpp src/core/libraries/ngs2/ngs2_impl.h src/core/libraries/ajm/ajm_error.h + src/core/libraries/audio3d/audio3d.cpp + src/core/libraries/audio3d/audio3d.h + src/core/libraries/audio3d/audio3d_error.h + src/core/libraries/audio3d/audio3d_impl.cpp + src/core/libraries/audio3d/audio3d_impl.h ) set(VIDEOOUT_LIB src/core/libraries/videoout/buffer.h @@ -279,6 +329,8 @@ set(NP_LIBS src/core/libraries/np_manager/np_manager.cpp src/core/libraries/np_score/np_score.h src/core/libraries/np_trophy/np_trophy.cpp src/core/libraries/np_trophy/np_trophy.h + src/core/libraries/np_trophy/trophy_ui.cpp + src/core/libraries/np_trophy/trophy_ui.h ) set(MISC_LIBS src/core/libraries/screenshot/screenshot.cpp @@ -296,6 +348,7 @@ set(COMMON src/common/logging/backend.cpp src/common/logging/text_formatter.h src/common/logging/types.h src/common/alignment.h + src/common/arch.h src/common/assert.cpp src/common/assert.h src/common/bit_field.h @@ -303,9 +356,11 @@ set(COMMON src/common/logging/backend.cpp src/common/concepts.h src/common/config.cpp src/common/config.h + src/common/cstring.h src/common/debug.h - src/common/disassembler.cpp - src/common/disassembler.h + src/common/decoder.cpp + src/common/decoder.h + src/common/elf_info.h src/common/endian.h src/common/enum.h src/common/io_file.cpp @@ -313,6 +368,7 @@ set(COMMON src/common/logging/backend.cpp src/common/error.cpp src/common/error.h src/common/scope_exit.h + src/common/fixed_value.h src/common/func_traits.h src/common/native_clock.cpp src/common/native_clock.h @@ -322,6 +378,8 @@ set(COMMON src/common/logging/backend.cpp src/common/polyfill_thread.h src/common/rdtsc.cpp src/common/rdtsc.h + src/common/signal_context.h + src/common/signal_context.cpp src/common/singleton.h src/common/slot_vector.h src/common/string_util.cpp @@ -334,6 +392,8 @@ set(COMMON src/common/logging/backend.cpp src/common/version.h src/common/ntapi.h src/common/ntapi.cpp + src/common/memory_patcher.h + src/common/memory_patcher.cpp src/common/scm_rev.cpp src/common/scm_rev.h ) @@ -344,10 +404,8 @@ set(CORE src/core/aerolib/stubs.cpp src/core/aerolib/aerolib.h src/core/address_space.cpp src/core/address_space.h - src/core/cpu_patches.cpp - src/core/cpu_patches.h src/core/crypto/crypto.cpp - src/core/crypto/crypto.h + src/core/crypto/crypto.h src/core/crypto/keys.h src/core/file_format/pfs.h src/core/file_format/pkg.cpp @@ -372,7 +430,7 @@ set(CORE src/core/aerolib/stubs.cpp src/core/loader/elf.h src/core/loader/symbols_resolver.h src/core/loader/symbols_resolver.cpp - src/core/libraries/error_codes.h + src/core/libraries/error_codes.h src/core/libraries/libs.h src/core/libraries/libs.cpp ${AUDIO_LIB} @@ -397,17 +455,29 @@ set(CORE src/core/aerolib/stubs.cpp src/core/module.cpp src/core/module.h src/core/platform.h + src/core/signals.cpp + src/core/signals.h src/core/tls.cpp src/core/tls.h src/core/virtual_memory.cpp src/core/virtual_memory.h ) +if (ARCHITECTURE STREQUAL "x86_64") + set(CORE ${CORE} + src/core/cpu_patches.cpp + src/core/cpu_patches.h) +endif() + set(SHADER_RECOMPILER src/shader_recompiler/exception.h src/shader_recompiler/profile.h src/shader_recompiler/recompiler.cpp src/shader_recompiler/recompiler.h + src/shader_recompiler/info.h + src/shader_recompiler/params.h src/shader_recompiler/runtime_info.h + src/shader_recompiler/specialization.h + src/shader_recompiler/backend/bindings.h src/shader_recompiler/backend/spirv/emit_spirv.cpp src/shader_recompiler/backend/spirv/emit_spirv.h src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp @@ -513,6 +583,8 @@ set(VIDEO_CORE src/video_core/amdgpu/liverpool.cpp src/video_core/renderer_vulkan/vk_master_semaphore.h src/video_core/renderer_vulkan/vk_pipeline_cache.cpp src/video_core/renderer_vulkan/vk_pipeline_cache.h + src/video_core/renderer_vulkan/vk_pipeline_common.cpp + src/video_core/renderer_vulkan/vk_pipeline_common.h src/video_core/renderer_vulkan/vk_platform.cpp src/video_core/renderer_vulkan/vk_platform.h src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -521,8 +593,6 @@ set(VIDEO_CORE src/video_core/amdgpu/liverpool.cpp src/video_core/renderer_vulkan/vk_resource_pool.h src/video_core/renderer_vulkan/vk_scheduler.cpp src/video_core/renderer_vulkan/vk_scheduler.h - src/video_core/renderer_vulkan/vk_shader_cache.cpp - src/video_core/renderer_vulkan/vk_shader_cache.h src/video_core/renderer_vulkan/vk_shader_util.cpp src/video_core/renderer_vulkan/vk_shader_util.h src/video_core/renderer_vulkan/vk_swapchain.cpp @@ -540,6 +610,7 @@ set(VIDEO_CORE src/video_core/amdgpu/liverpool.cpp src/video_core/texture_cache/tile_manager.cpp src/video_core/texture_cache/tile_manager.h src/video_core/texture_cache/types.h + src/video_core/texture_cache/host_compatibility.h src/video_core/page_manager.cpp src/video_core/page_manager.h src/video_core/multi_level_page_table.h @@ -547,6 +618,22 @@ set(VIDEO_CORE src/video_core/amdgpu/liverpool.cpp src/video_core/renderdoc.h ) +set(IMGUI src/imgui/imgui_config.h + src/imgui/imgui_layer.h + src/imgui/imgui_std.h + src/imgui/imgui_texture.h + src/imgui/layer/video_info.cpp + src/imgui/layer/video_info.h + src/imgui/renderer/imgui_core.cpp + src/imgui/renderer/imgui_core.h + src/imgui/renderer/imgui_impl_sdl3.cpp + src/imgui/renderer/imgui_impl_sdl3.h + src/imgui/renderer/imgui_impl_vulkan.cpp + src/imgui/renderer/imgui_impl_vulkan.h + src/imgui/renderer/texture_manager.cpp + src/imgui/renderer/texture_manager.h +) + set(INPUT src/input/controller.cpp src/input/controller.h ) @@ -567,8 +654,6 @@ set(QT_GUI src/qt_gui/about_dialog.cpp src/qt_gui/about_dialog.ui src/qt_gui/cheats_patches.cpp src/qt_gui/cheats_patches.h - src/qt_gui/memory_patcher.cpp - src/qt_gui/memory_patcher.h src/qt_gui/main_window_ui.h src/qt_gui/main_window.cpp src/qt_gui/main_window.h @@ -603,6 +688,7 @@ endif() if (ENABLE_QT_GUI) qt_add_executable(shadps4 ${AUDIO_CORE} + ${IMGUI} ${INPUT} ${QT_GUI} ${COMMON} @@ -615,6 +701,7 @@ if (ENABLE_QT_GUI) else() add_executable(shadps4 ${AUDIO_CORE} + ${IMGUI} ${INPUT} ${COMMON} ${CORE} @@ -631,16 +718,26 @@ endif() create_target_directory_groups(shadps4) -target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient RenderDoc::API FFmpeg::ffmpeg) -target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAllocator sirit Vulkan::Headers xxHash::xxhash Zydis::Zydis glslang::SPIRV glslang::glslang SDL3::SDL3) +target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient RenderDoc::API FFmpeg::ffmpeg Dear_ImGui) +target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAllocator sirit Vulkan::Headers xxHash::xxhash Zydis::Zydis glslang::SPIRV glslang::glslang SDL3::SDL3 pugixml::pugixml) -if (APPLE) - # Reserve system-managed memory space. - target_link_options(shadps4 PRIVATE -Wl,-no_pie,-no_fixup_chains,-no_huge,-pagezero_size,0x400000,-segaddr,GUEST_SYSTEM,0x400000,-image_base,0x10000000000) +target_compile_definitions(shadps4 PRIVATE IMGUI_USER_CONFIG="imgui/imgui_config.h") +target_compile_definitions(Dear_ImGui PRIVATE IMGUI_USER_CONFIG="${PROJECT_SOURCE_DIR}/src/imgui/imgui_config.h") - # Link MoltenVK for Vulkan support - find_library(MOLTENVK MoltenVK REQUIRED) - target_link_libraries(shadps4 PRIVATE ${MOLTENVK}) +if (APPLE) + option(USE_SYSTEM_VULKAN_LOADER "Enables using the system Vulkan loader instead of directly linking with MoltenVK. Useful for loading validation layers." OFF) + if (USE_SYSTEM_VULKAN_LOADER) + target_compile_definitions(shadps4 PRIVATE USE_SYSTEM_VULKAN_LOADER=1) + else() + # Link MoltenVK for Vulkan support + find_library(MOLTENVK MoltenVK REQUIRED) + target_link_libraries(shadps4 PRIVATE ${MOLTENVK}) + endif() + + if (ARCHITECTURE STREQUAL "x86_64") + # Reserve system-managed memory space. + target_link_options(shadps4 PRIVATE -Wl,-no_pie,-no_fixup_chains,-no_huge,-pagezero_size,0x4000,-segaddr,TCB_SPACE,0x4000,-segaddr,GUEST_SYSTEM,0x400000,-image_base,0x20000000000) + endif() # Replacement for std::chrono::time_zone target_link_libraries(shadps4 PRIVATE date::date-tz) @@ -716,6 +813,11 @@ add_subdirectory(${HOST_SHADERS_INCLUDE}) add_dependencies(shadps4 host_shaders) target_include_directories(shadps4 PRIVATE ${HOST_SHADERS_INCLUDE}) +# ImGui resources +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/imgui/renderer) +add_dependencies(shadps4 ImGui_Resources) +target_include_directories(shadps4 PRIVATE ${IMGUI_RESOURCES_INCLUDE}) + if (ENABLE_QT_GUI) set_target_properties(shadps4 PROPERTIES # WIN32_EXECUTABLE ON @@ -725,3 +827,10 @@ if (ENABLE_QT_GUI) set_source_files_properties(src/images/shadPS4.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) endif() + +if (UNIX AND NOT APPLE) + if (ENABLE_QT_GUI) + find_package(OpenSSL REQUIRED) + target_link_libraries(shadps4 PRIVATE ${OPENSSL_LIBRARIES}) + endif() +endif() diff --git a/LICENSES/OFL-1.1.txt b/LICENSES/OFL-1.1.txt new file mode 100644 index 0000000000..6fe84ee21e --- /dev/null +++ b/LICENSES/OFL-1.1.txt @@ -0,0 +1,43 @@ +SIL OPEN FONT LICENSE + +Version 1.1 - 26 February 2007 + +PREAMBLE + +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS + +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION + +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/README.md b/README.md index c99142c78f..1be14c4fa2 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ SPDX-License-Identifier: GPL-2.0-or-later

- + @@ -40,14 +40,14 @@ If you encounter problems or have doubts, do not hesitate to look at the [**Quic To verify that a game works, you can look at [**shadPS4 Game Compatibility**](https://github.com/shadps4-emu/shadps4-game-compatibility). -To discuss shadPS4 development, suggest ideas or to ask for help, join our [**Discord server**](https://discord.gg/MyZRaBngxA). +To discuss shadPS4 development, suggest ideas or to ask for help, join our [**Discord server**](https://discord.gg/bFJxfftGW6). To get the latest news, go to our [**X (Twitter)**](https://x.com/shadps4) or our [**website**](https://shadps4.net/). # Status > [!IMPORTANT] -> shadPS4 is early in developement, don't expect a flawless experience. +> shadPS4 is early in development, don't expect a flawless experience. Currently, the emulator successfully runs small games like [**Sonic Mania**](https://www.youtube.com/watch?v=AAHoNzhHyCU), [**Undertale**](https://youtu.be/5zIvdy65Ro4) and it can even *somewhat* run [**Bloodborne**](https://www.youtube.com/watch?v=wC6s0avpQRE). @@ -65,6 +65,12 @@ Check the build instructions for [**Windows**](https://github.com/shadps4-emu/sh Check the build instructions for [**Linux**](https://github.com/shadps4-emu/shadPS4/blob/main/documents/building-linux.md). +## macOS + +Check the build instructions for [**macOS**](https://github.com/shadps4-emu/shadPS4/blob/main/documents/building-macos.md). + +Note that macOS users need at least macOS 15 on an Apple Silicon Mac, or at least macOS 11 on an Intel Mac. + ## Building status
@@ -153,6 +159,20 @@ Open a PR and we'll check it :) + +# Special Thanks + +A few noteworthy teams/projects who've helped us along the way are: + +- [**Panda3DS**](https://github.com/wheremyfoodat/Panda3DS): A multiplatform 3DS emulator from our co-author wheremyfoodat. They have been incredibly helpful in understanding and solving problems that came up from natively executing the x64 code of PS4 binaries + +- [**fpPS4**](https://github.com/red-prig/fpPS4): The fpPS4 team has assisted massively with understanding some of the more complex parts of the PS4 operating system and libraries, by helping with reverse engineering work and research. + +- **yuzu**: Our shader compiler has been designed with yuzu's Hades compiler as a blueprint. This allowed us to focus on the challenges of emulating a modern AMD GPU while having a high-quality optimizing shader compiler implementation as a base. + +- [**hydra**](https://github.com/hydra-emu/hydra): A multisystem, multiplatform emulator (chip-8, GB, NES, N64) from Paris. + + # Sister Projects - [**Panda3DS**](https://github.com/wheremyfoodat/Panda3DS): A multiplatform 3DS emulator from our co-author wheremyfoodat. diff --git a/documents/building-linux.md b/documents/building-linux.md index 9645d8b4fc..622de543b7 100644 --- a/documents/building-linux.md +++ b/documents/building-linux.md @@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-2.0-or-later #### Debian & Ubuntu ``` -sudo apt-get install build-essential libasound2-dev libpulse-dev libopenal-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl2-2.0 libsdl2-dev libjack-dev libsndio-dev +sudo apt-get install build-essential libasound2-dev libpulse-dev libopenal-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl2-2.0 libsdl2-dev libjack-dev libsndio-dev qt6-base-dev qt6-tools-dev ``` #### Fedora @@ -34,9 +34,9 @@ git clone --recursive https://github.com/shadps4-emu/shadPS4.git cd shadPS4 ``` -Generate the build directory in the shadPS4 directory: +Generate the build directory in the shadPS4 directory. To enable the QT GUI, pass the ```-DENABLE_QT_GUI=ON``` flag: ``` -cmake -S . -B build/ +cmake -S . -B build/ -DENABLE_QT_GUI=ON ``` Enter the directory: @@ -49,8 +49,11 @@ Use make to build the project: cmake --build . --parallel$(nproc) ``` -Now run the emulator: - +Now run the emulator. If QT is enabled: +``` +./shadps4 +``` +Otherwise, specify the path to your PKG's boot file: ``` ./shadps4 /"PATH"/"TO"/"GAME"/"FOLDER"/eboot.bin ``` diff --git a/documents/building-macos.md b/documents/building-macos.md new file mode 100644 index 0000000000..d8cc414e2d --- /dev/null +++ b/documents/building-macos.md @@ -0,0 +1,73 @@ + + +## Build shadPS4 for macOS + +### Install the necessary tools to build shadPS4: + +First, make sure you have **Xcode 16.0 or newer** installed. + +For installing other tools and library dependencies we will be using [Homebrew](https://brew.sh/). + +On an ARM system, we will need the native ARM Homebrew to install tools and x86_64 Homebrew to install libraries. + +First, install native Homebrew and tools: +``` +# Installs native Homebrew to /opt/homebrew +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +# Adds Homebrew to your path +echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> ~/.zprofile +eval $(/opt/homebrew/bin/brew shellenv) +# Installs tools. +brew install clang-format cmake +``` + +Next, install x86_64 Homebrew and libraries. + +**If you are on an ARM Mac:** +``` +# Installs x86_64 Homebrew to /usr/local +arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +# Installs libraries. +arch -x86_64 /usr/local/bin/brew install molten-vk qt@6 +``` + +**If you are on an x86_64 Mac:** +``` +brew install molten-vk qt@6 +``` + +If you don't need the Qt GUI you can remove `qt@6` from the last command. + +### Cloning and compiling: + +Clone the repository recursively: +``` +git clone --recursive https://github.com/shadps4-emu/shadPS4.git +cd shadPS4 +``` + +Generate the build directory in the shadPS4 directory: +``` +cmake -S . -B build/ -DCMAKE_OSX_ARCHITECTURES=x86_64 +``` + +If you want to build the Qt GUI, add `-DENABLE_QT_GUI=ON` to the end of this command as well. + +Enter the directory: +``` +cd build/ +``` + +Use make to build the project: +``` +cmake --build . --parallel$(sysctl -n hw.ncpu) +``` + +Now run the emulator: + +``` +./shadps4 /"PATH"/"TO"/"GAME"/"FOLDER"/eboot.bin +``` diff --git a/documents/building-windows.md b/documents/building-windows.md index 21fd871547..fb1bb93caa 100644 --- a/documents/building-windows.md +++ b/documents/building-windows.md @@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-2.0-or-later # Build shadPS4 for Windows This tutorial reads as if you have none of the prerequisites already installed. If you do, just ignore the steps regarding installation. -If you are building to contribute to the project, please omit `--depth 1` from the git invokations. +If you are building to contribute to the project, please omit `--depth 1` from the git invocations. Note: **ARM64 is not supported!** As of writing, it will not build nor run. The instructions with respect to ARM64 are for developers only. @@ -15,6 +15,7 @@ Note: **ARM64 is not supported!** As of writing, it will not build nor run. The ### (Prerequisite) Download the Community edition from [**Visual Studio 2022**](https://visualstudio.microsoft.com/vs/) Once you are within the installer: + 1. Select `Desktop development with C++` 2. Go to "Individual Components" tab 3. Search and select `C++ Clang Compiler for Windows` and `MSBuild support for LLVM` @@ -30,11 +31,12 @@ Beware, this requires you to create a Qt account. If you do not want to do this, Go through the installation normally. If you know what you are doing, you may unselect individual components that eat up too much disk space. 2. Download and install [Qt Visual Studio Tools](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022) - + Once you are finished, you will have to configure Qt within Visual Studio: + 1. Tools -> Options -> Qt -> Versions -2. Add a new Qt version and navigate it to the correct folder. Should look like so: `C:\Qt\6.7.2\msvc2019_64` -3. Enable the default checkmark on the new version you just created. +2. Add a new Qt version and navigate it to the correct folder. Should look like so: `C:\Qt\6.7.2\msvc2019_64` +3. Enable the default checkmark on the new version you just created. ### (Prerequisite) Download [**Git for Windows**](https://git-scm.com/download/win) @@ -62,7 +64,7 @@ Go through the Git for Windows installation as normal Your shadps4.exe will be in `c:\path\to\source\Build\x64-Clang-Release\` To automatically populate the necessary files to run shadPS4.exe, run in a command prompt or terminal: -`C:\Qt\6.7.2\msvc2019_64\bin\windeployqt.exe c:\path\to\shadps4.exe` +`C:\Qt\6.7.2\msvc2019_64\bin\windeployqt.exe "c:\path\to\shadps4.exe"` (Change Qt path if you've installed it to non-default path) ## Option 2: MSYS2/MinGW @@ -74,27 +76,35 @@ Go through the MSYS2 installation as normal If you are building to distribute, please omit `-DCMAKE_CXX_FLAGS="-O2 -march=native"` within the build configuration step. Normal x86-based computers, follow: + 1. Open "MSYS2 MINGW64" from your new applications 2. Run `pacman -Syu`, let it complete; -3. Run `pacman -S --needed git mingw-w64-x86_64-binutils mingw-w64-x86_64-clang mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-qt6-base` +3. Run `pacman -S --needed git mingw-w64-x86_64-binutils mingw-w64-x86_64-clang mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-ffmpeg` + 1. Optional (Qt only): run `pacman -S --needed mingw-w64-x86_64-qt6-base mingw-w64-x86_64-qt6-tools` 4. Run `git clone --depth 1 --recursive https://github.com/shadps4-emu/shadPS4` 5. Run `cd shadPS4` -6. Run `cmake -S . -B build -DCMAKE_CXX_COMPILER="clang++.exe" -DCMAKE_C_COMPILER="clang.exe" -DCMAKE_CXX_FLAGS="-O2 -march=native"` +6. Run `cmake -S . -B build -DCMAKE_C_COMPILER="clang.exe" -DCMAKE_CXX_COMPILER="clang++.exe" -DCMAKE_CXX_FLAGS="-O2 -march=native"` + 1. Optional (Qt only): add `-DENABLE_QT_GUI=ON` 7. Run `cmake --build build` + 1. Optional (Qt only): run `windeployqt6 build/shadps4.exe` 8. To run the finished product, run `./build/shadPS4.exe` ARM64-based computers, follow: + 1. Open "MSYS2 CLANGARM64" from your new applications 2. Run `pacman -Syu`, let it complete; -3. Run `pacman -S --needed git mingw-w64-clang-aarch64-binutils mingw-w64-clang-aarch64-clang mingw-w64-clang-aarch64-cmake mingw-w64-clang-aarch64-ninja mingw-w64-clang-aarch64-qt6-base` +3. Run `pacman -S --needed git mingw-w64-clang-aarch64-binutils mingw-w64-clang-aarch64-clang mingw-w64-clang-aarch64-cmake mingw-w64-clang-aarch64-ninja mingw-w64-clang-aarch64-ffmpeg` + 1. Optional (Qt only): run `pacman -S --needed mingw-w64-clang-aarch64-qt6-base mingw-w64-clang-aarch64-qt6-tools` 4. Run `git clone --depth 1 --recursive https://github.com/shadps4-emu/shadPS4` 5. Run `cd shadPS4` -6. Run `cmake -S . -B build -DCMAKE_CXX_COMPILER="clang++.exe" -DCMAKE_C_COMPILER="clang.exe" -DCMAKE_CXX_FLAGS="-O2 -march=native"` +6. Run `cmake -S . -B build -DCMAKE_C_COMPILER="clang.exe" -DCMAKE_CXX_COMPILER="clang++.exe" -DCMAKE_CXX_FLAGS="-O2 -march=native"` + 1. Optional (Qt only): add `-DENABLE_QT_GUI=ON` 7. Run `cmake --build build` + 1. Optional (Qt only): run `windeployqt6 build/shadps4.exe` 8. To run the finished product, run `./build/shadPS4.exe` ## Note on MSYS2 builds These builds may not be easily copyable to people who do not also have a MSYS2 installation. If you want to distribute these builds, you need to copy over the correct DLLs into a distribution folder. -In order to run them, you must be within the MSYS2 shell environment. \ No newline at end of file +In order to run them, you must be within the MSYS2 shell environment. diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index de0317ff90..5410f37ebd 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -43,7 +43,6 @@ else() endif() if (NOT TARGET FFmpeg::ffmpeg) - set(ARCHITECTURE "x86_64") add_subdirectory(ffmpeg-core) add_library(FFmpeg::ffmpeg ALIAS ffmpeg) endif() @@ -155,6 +154,17 @@ if (APPLE) endif() endif() +# Dear ImGui +add_library(Dear_ImGui + dear_imgui/imgui.cpp + dear_imgui/imgui_demo.cpp + dear_imgui/imgui_draw.cpp + dear_imgui/imgui_internal.h + dear_imgui/imgui_tables.cpp + dear_imgui/imgui_widgets.cpp +) +target_include_directories(Dear_ImGui INTERFACE dear_imgui/) + # Tracy option(TRACY_ENABLE "" ON) option(TRACY_NO_CRASH_HANDLER "" ON) # Otherwise texture cache exceptions will be treaten as a crash @@ -168,3 +178,8 @@ option(TRACY_NO_SAMPLING "" ON) option(TRACY_ONLY_LOCALHOST "" ON) option(TRACY_NO_CONTEXT_SWITCH "" ON) add_subdirectory(tracy) + +# pugixml +if (NOT TARGET pugixml::pugixml) + add_subdirectory(pugixml) +endif() \ No newline at end of file diff --git a/externals/dear_imgui b/externals/dear_imgui new file mode 160000 index 0000000000..636cd4a7d6 --- /dev/null +++ b/externals/dear_imgui @@ -0,0 +1 @@ +Subproject commit 636cd4a7d623a2bc9bf59bb3acbb4ca075befba3 diff --git a/externals/pugixml b/externals/pugixml new file mode 160000 index 0000000000..30cc354fe3 --- /dev/null +++ b/externals/pugixml @@ -0,0 +1 @@ +Subproject commit 30cc354fe37114ec7a0a4ed2192951690357c2ed diff --git a/externals/sirit b/externals/sirit index 8db09231c4..37090c74cc 160000 --- a/externals/sirit +++ b/externals/sirit @@ -1 +1 @@ -Subproject commit 8db09231c448b913ae905d5237ce2eca46e3fe87 +Subproject commit 37090c74cc6e680f2bc334cac8fd182f7634a1f6 diff --git a/scripts/file_formats/sfo.hexpat b/scripts/file_formats/sfo.hexpat new file mode 100644 index 0000000000..cfc1f87896 --- /dev/null +++ b/scripts/file_formats/sfo.hexpat @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +import std.io; +import std.sys; + +struct Header { + u32 magic; + u32 version; + u32 key_table_offset; + u32 data_table_offset; + u32 index_table_entries; +}; + +struct KeyEntry { + char name[]; +} [[inline]]; + +struct DataEntry { + if (fmt == 0x0404) { + u32 int_value; + } else if(fmt == 0x0004) { + char bin_value[size]; + } else if(fmt == 0x0204) { + char str_value[size]; + } else { + std::warning("unknown fmt type"); + } +} [[inline]]; + +struct IndexEntry { + u16 key_offset; + u16 param_fmt; + u32 param_len; + u32 param_max_len; + u32 data_offset; +}; + +struct Entry { + u64 begin = $; + IndexEntry index; + KeyEntry key @ KeyTableOffset + index.key_offset; + DataEntry data @ DataTableOffset + index.data_offset; + u8 data_empty[index.param_max_len - index.param_len] @ DataTableOffset + index.data_offset + index.param_len; + $ = begin + sizeof(IndexEntry); +}; + +Header header @ 0; +std::assert(header.magic == 0x46535000, "Miss match magic"); +std::assert(header.version == 0x00000101, "Miss match version"); + +Entry list[header.index_table_entries] @ 0x14; \ No newline at end of file diff --git a/src/common/arch.h b/src/common/arch.h new file mode 100644 index 0000000000..b22366cb7c --- /dev/null +++ b/src/common/arch.h @@ -0,0 +1,10 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#if defined(__x86_64__) || defined(_M_X64) +#define ARCH_X86_64 1 +#elif defined(__aarch64__) || defined(_M_ARM64) +#define ARCH_ARM64 1 +#endif diff --git a/src/common/assert.cpp b/src/common/assert.cpp index 3a49c9396b..be0feb71da 100644 --- a/src/common/assert.cpp +++ b/src/common/assert.cpp @@ -1,10 +1,17 @@ // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include "common/arch.h" #include "common/assert.h" #include "common/logging/backend.h" +#if defined(ARCH_X86_64) #define Crash() __asm__ __volatile__("int $3") +#elif defined(ARCH_ARM64) +#define Crash() __asm__ __volatile__("brk 0") +#else +#error "Missing Crash() implementation for target CPU architecture." +#endif void assert_fail_impl() { Common::Log::Stop(); @@ -18,3 +25,8 @@ void assert_fail_impl() { Crash(); throw std::runtime_error("Unreachable code"); } + +void assert_fail_debug_msg(const char* msg) { + LOG_CRITICAL(Debug, "Assertion Failed!\n{}", msg); + assert_fail_impl(); +} diff --git a/src/common/config.cpp b/src/common/config.cpp index 8d87ed3c3a..fb6ee120a1 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -30,7 +30,9 @@ static bool vkValidation = false; static bool vkValidationSync = false; static bool vkValidationGpu = false; static bool rdocEnable = false; -static bool rdocMarkersEnable = false; +static bool vkMarkers = false; +static bool vkCrashDiagnostic = false; + // Gui std::string settings_install_dir = ""; u32 main_window_geometry_x = 400; @@ -121,7 +123,7 @@ bool isRdocEnabled() { } bool isMarkersEnabled() { - return rdocMarkersEnable; + return vkMarkers; } u32 vblankDiv() { @@ -140,6 +142,14 @@ bool vkValidationGpuEnabled() { return vkValidationGpu; } +bool vkMarkersEnabled() { + return vkMarkers || vkCrashDiagnostic; // Crash diagnostic forces markers on +} + +bool vkCrashDiagnosticEnabled() { + return vkCrashDiagnostic; +} + void setGpuId(s32 selectedGpuId) { gpuId = selectedGpuId; } @@ -384,7 +394,8 @@ void load(const std::filesystem::path& path) { vkValidationSync = toml::find_or(vk, "validation_sync", false); vkValidationGpu = toml::find_or(vk, "validation_gpu", true); rdocEnable = toml::find_or(vk, "rdocEnable", false); - rdocMarkersEnable = toml::find_or(vk, "rdocMarkersEnable", false); + vkMarkers = toml::find_or(vk, "rdocMarkersEnable", false); + vkCrashDiagnostic = toml::find_or(vk, "crashDiagnostic", false); } if (data.contains("Debug")) { @@ -460,7 +471,8 @@ void save(const std::filesystem::path& path) { data["Vulkan"]["validation_sync"] = vkValidationSync; data["Vulkan"]["validation_gpu"] = vkValidationGpu; data["Vulkan"]["rdocEnable"] = rdocEnable; - data["Vulkan"]["rdocMarkersEnable"] = rdocMarkersEnable; + data["Vulkan"]["rdocMarkersEnable"] = vkMarkers; + data["Vulkan"]["crashDiagnostic"] = vkCrashDiagnostic; data["Debug"]["DebugDump"] = isDebugDump; data["GUI"]["theme"] = mw_themes; data["GUI"]["iconSize"] = m_icon_size; @@ -504,7 +516,11 @@ void setDefaultValues() { shouldDumpPM4 = false; vblankDivider = 1; vkValidation = false; + vkValidationSync = false; + vkValidationGpu = false; rdocEnable = false; + vkMarkers = false; + vkCrashDiagnostic = false; emulator_language = "en"; m_language = 1; gpuId = -1; diff --git a/src/common/config.h b/src/common/config.h index 11e7d88278..7e717fe71b 100644 --- a/src/common/config.h +++ b/src/common/config.h @@ -31,7 +31,6 @@ bool copyGPUCmdBuffers(); bool dumpShaders(); bool dumpPM4(); bool isRdocEnabled(); -bool isMarkersEnabled(); u32 vblankDiv(); void setDebugDump(bool enable); @@ -62,6 +61,8 @@ void setRdocEnabled(bool enable); bool vkValidationEnabled(); bool vkValidationSyncEnabled(); bool vkValidationGpuEnabled(); +bool vkMarkersEnabled(); +bool vkCrashDiagnosticEnabled(); // Gui void setMainWindowGeometry(u32 x, u32 y, u32 w, u32 h); diff --git a/src/common/cstring.h b/src/common/cstring.h new file mode 100644 index 0000000000..fb29443ee3 --- /dev/null +++ b/src/common/cstring.h @@ -0,0 +1,157 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include + +#include "assert.h" + +namespace Common { + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-undefined-compare" + +/** + * @brief A null-terminated string with a fixed maximum length + * This class is not meant to be used as a general-purpose string class + * It is meant to be used as `char[N]` where memory layout is fixed + * @tparam N Maximum length of the string + * @tparam T Type of character + */ +template +class CString { + T data[N]{}; + +public: + class Iterator; + + CString() = default; + + template + explicit CString(const CString& other) + requires(M <= N) + { + if (this == nullptr) { + return; + } + std::ranges::copy(other.begin(), other.end(), data); + } + + void FromString(const std::basic_string_view& str) { + if (this == nullptr) { + return; + } + size_t p = str.copy(data, N - 1); + data[p] = '\0'; + } + + void Zero() { + if (this == nullptr) { + return; + } + std::ranges::fill(data, 0); + } + + explicit(false) operator std::basic_string_view() const { + if (this == nullptr) { + return {}; + } + return std::basic_string_view{data}; + } + + explicit operator std::basic_string() const { + if (this == nullptr) { + return {}; + } + return std::basic_string{data}; + } + + std::basic_string to_string() const { + if (this == nullptr) { + return {}; + } + return std::basic_string{data}; + } + + std::basic_string_view to_view() const { + if (this == nullptr) { + return {}; + } + return std::basic_string_view{data}; + } + + char* begin() { + if (this == nullptr) { + return nullptr; + } + return data; + } + + const char* begin() const { + if (this == nullptr) { + return nullptr; + } + return data; + } + + char* end() { + if (this == nullptr) { + return nullptr; + } + return data + N; + } + + const char* end() const { + if (this == nullptr) { + return nullptr; + } + return data + N; + } + + T& operator[](size_t idx) { + return data[idx]; + } + + const T& operator[](size_t idx) const { + return data[idx]; + } + + class Iterator { + T* ptr; + T* end; + + public: + using difference_type = std::ptrdiff_t; + using value_type = T; + using pointer = T*; + using reference = T&; + using iterator_category = std::random_access_iterator_tag; + + Iterator() = default; + explicit Iterator(T* ptr) : ptr(ptr), end(ptr + N) {} + + Iterator& operator++() { + ++ptr; + return *this; + } + + Iterator operator++(int) { + Iterator tmp = *this; + ++ptr; + return tmp; + } + + operator T*() { + ASSERT_MSG(ptr >= end, "CString iterator out of bounds"); + return ptr; + } + }; +}; + +static_assert(sizeof(CString<13>) == sizeof(char[13])); // Ensure size still matches a simple array +static_assert(std::weakly_incrementable::Iterator>); + +#pragma clang diagnostic pop + +} // namespace Common \ No newline at end of file diff --git a/src/common/disassembler.cpp b/src/common/decoder.cpp similarity index 65% rename from src/common/disassembler.cpp rename to src/common/decoder.cpp index 2d1264a4eb..2499074197 100644 --- a/src/common/disassembler.cpp +++ b/src/common/decoder.cpp @@ -2,18 +2,18 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include -#include "common/disassembler.h" +#include "common/decoder.h" namespace Common { -Disassembler::Disassembler() { +DecoderImpl::DecoderImpl() { ZydisDecoderInit(&m_decoder, ZYDIS_MACHINE_MODE_LONG_64, ZYDIS_STACK_WIDTH_64); ZydisFormatterInit(&m_formatter, ZYDIS_FORMATTER_STYLE_INTEL); } -Disassembler::~Disassembler() = default; +DecoderImpl::~DecoderImpl() = default; -void Disassembler::printInstruction(void* code, u64 address) { +void DecoderImpl::printInstruction(void* code, u64 address) { ZydisDecodedInstruction instruction; ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT_VISIBLE]; ZyanStatus status = @@ -25,8 +25,8 @@ void Disassembler::printInstruction(void* code, u64 address) { } } -void Disassembler::printInst(ZydisDecodedInstruction& inst, ZydisDecodedOperand* operands, - u64 address) { +void DecoderImpl::printInst(ZydisDecodedInstruction& inst, ZydisDecodedOperand* operands, + u64 address) { const int bufLen = 256; char szBuffer[bufLen]; ZydisFormatterFormatInstruction(&m_formatter, &inst, operands, inst.operand_count_visible, @@ -34,4 +34,9 @@ void Disassembler::printInst(ZydisDecodedInstruction& inst, ZydisDecodedOperand* fmt::print("instruction: {}\n", szBuffer); } +ZyanStatus DecoderImpl::decodeInstruction(ZydisDecodedInstruction& inst, + ZydisDecodedOperand* operands, void* data, u64 size) { + return ZydisDecoderDecodeFull(&m_decoder, data, size, &inst, operands); +} + } // namespace Common diff --git a/src/common/disassembler.h b/src/common/decoder.h similarity index 60% rename from src/common/disassembler.h rename to src/common/decoder.h index b81f9e31bc..1f22195968 100644 --- a/src/common/disassembler.h +++ b/src/common/decoder.h @@ -4,21 +4,26 @@ #pragma once #include +#include "common/singleton.h" #include "common/types.h" namespace Common { -class Disassembler { +class DecoderImpl { public: - Disassembler(); - ~Disassembler(); + DecoderImpl(); + ~DecoderImpl(); void printInst(ZydisDecodedInstruction& inst, ZydisDecodedOperand* operands, u64 address); void printInstruction(void* code, u64 address); + ZyanStatus decodeInstruction(ZydisDecodedInstruction& inst, ZydisDecodedOperand* operands, + void* data, u64 size = 15); private: ZydisDecoder m_decoder; ZydisFormatter m_formatter; }; +using Decoder = Common::Singleton; + } // namespace Common diff --git a/src/common/elf_info.h b/src/common/elf_info.h new file mode 100644 index 0000000000..5a2c914e04 --- /dev/null +++ b/src/common/elf_info.h @@ -0,0 +1,72 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +#include "assert.h" +#include "singleton.h" +#include "types.h" + +namespace Core { +class Emulator; +} + +namespace Common { + +class ElfInfo { + friend class Core::Emulator; + + bool initialized = false; + + std::string game_serial{}; + std::string title{}; + std::string app_ver{}; + u32 firmware_ver = 0; + u32 raw_firmware_ver = 0; + +public: + static constexpr u32 FW_15 = 0x1500000; + static constexpr u32 FW_16 = 0x1600000; + static constexpr u32 FW_17 = 0x1700000; + static constexpr u32 FW_20 = 0x2000000; + static constexpr u32 FW_25 = 0x2500000; + static constexpr u32 FW_30 = 0x3000000; + static constexpr u32 FW_40 = 0x4000000; + static constexpr u32 FW_45 = 0x4500000; + static constexpr u32 FW_50 = 0x5000000; + static constexpr u32 FW_80 = 0x8000000; + + static ElfInfo& Instance() { + return *Singleton::Instance(); + } + + [[nodiscard]] std::string_view GameSerial() const { + ASSERT(initialized); + return Instance().game_serial; + } + + [[nodiscard]] std::string_view Title() const { + ASSERT(initialized); + return title; + } + + [[nodiscard]] std::string_view AppVer() const { + ASSERT(initialized); + return app_ver; + } + + [[nodiscard]] u32 FirmwareVer() const { + ASSERT(initialized); + return firmware_ver; + } + + [[nodiscard]] u32 RawFirmwareVer() const { + ASSERT(initialized); + return raw_firmware_ver; + } +}; + +} // namespace Common diff --git a/src/common/fixed_value.h b/src/common/fixed_value.h new file mode 100644 index 0000000000..e32a795f22 --- /dev/null +++ b/src/common/fixed_value.h @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/** + * @brief A template class that encapsulates a fixed, compile-time constant value. + * + * @tparam T The type of the value. + * @tparam Value The fixed value of type T. + * + * This class provides a way to encapsulate a value that is constant and known at compile-time. + * The value is stored as a private member and cannot be changed. Any attempt to assign a new + * value to an object of this class will reset it to the fixed value. + */ +template +class FixedValue { + T m_value{Value}; + +public: + constexpr FixedValue() = default; + + constexpr explicit(false) operator T() const { + return m_value; + } + + FixedValue& operator=(const T&) { + m_value = Value; + return *this; + } + FixedValue& operator=(T&&) noexcept { + m_value = {Value}; + return *this; + } +}; diff --git a/src/common/io_file.cpp b/src/common/io_file.cpp index fbc37a10c9..c1d9cc5920 100644 --- a/src/common/io_file.cpp +++ b/src/common/io_file.cpp @@ -396,4 +396,18 @@ s64 IOFile::Tell() const { return ftello(file); } +u64 GetDirectorySize(const std::filesystem::path& path) { + if (!fs::exists(path)) { + return 0; + } + + u64 total = 0; + for (const auto& entry : fs::recursive_directory_iterator(path)) { + if (fs::is_regular_file(entry.path())) { + total += fs::file_size(entry.path()); + } + } + return total; +} + } // namespace Common::FS diff --git a/src/common/io_file.h b/src/common/io_file.h index 2c3df3f69c..177bddbad6 100644 --- a/src/common/io_file.h +++ b/src/common/io_file.h @@ -219,4 +219,6 @@ class IOFile final { uintptr_t file_mapping = 0; }; +u64 GetDirectorySize(const std::filesystem::path& path); + } // namespace Common::FS diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index a21af8bbaa..7802977f5f 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp @@ -144,6 +144,10 @@ class Impl { initialization_in_progress_suppress_logging = false; } + static bool IsActive() { + return instance != nullptr; + } + static void Start() { instance->StartBackendThread(); } @@ -275,6 +279,10 @@ void Initialize(std::string_view log_file) { Impl::Initialize(log_file.empty() ? LOG_FILE : log_file); } +bool IsActive() { + return Impl::IsActive(); +} + void Start() { Impl::Start(); } diff --git a/src/common/logging/backend.h b/src/common/logging/backend.h index 91c9da8327..a1ad663691 100644 --- a/src/common/logging/backend.h +++ b/src/common/logging/backend.h @@ -13,6 +13,8 @@ class Filter; /// Initializes the logging system. This should be the first thing called in main. void Initialize(std::string_view log_file = ""); +bool IsActive(); + /// Starts the logging threads. void Start(); diff --git a/src/common/logging/filter.cpp b/src/common/logging/filter.cpp index ab3468ca07..c3088f926c 100644 --- a/src/common/logging/filter.cpp +++ b/src/common/logging/filter.cpp @@ -113,10 +113,12 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) { SUB(Lib, ImeDialog) \ SUB(Lib, AvPlayer) \ SUB(Lib, Ngs2) \ + SUB(Lib, Audio3d) \ CLS(Frontend) \ CLS(Render) \ SUB(Render, Vulkan) \ SUB(Render, Recompiler) \ + CLS(ImGui) \ CLS(Input) \ CLS(Tty) \ CLS(Loader) diff --git a/src/common/logging/types.h b/src/common/logging/types.h index dd2376ea67..749568da16 100644 --- a/src/common/logging/types.h +++ b/src/common/logging/types.h @@ -80,10 +80,12 @@ enum class Class : u8 { Lib_ImeDialog, ///< The LibSceImeDialog implementation. Lib_AvPlayer, ///< The LibSceAvPlayer implementation. Lib_Ngs2, ///< The LibSceNgs2 implementation. + Lib_Audio3d, ///< The LibSceAudio3d implementation. Frontend, ///< Emulator UI Render, ///< Video Core Render_Vulkan, ///< Vulkan backend Render_Recompiler, ///< Shader recompiler + ImGui, ///< ImGui Loader, ///< ROM loader Input, ///< Input emulation Tty, ///< Debug output from emu diff --git a/src/qt_gui/memory_patcher.cpp b/src/common/memory_patcher.cpp similarity index 66% rename from src/qt_gui/memory_patcher.cpp rename to src/common/memory_patcher.cpp index d5ffa1c99b..85a25167a3 100644 --- a/src/qt_gui/memory_patcher.cpp +++ b/src/common/memory_patcher.cpp @@ -2,14 +2,20 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include +#include #include +#include +#ifdef ENABLE_QT_GUI #include #include #include #include #include #include +#include #include +#endif #include "common/logging/log.h" #include "common/path_util.h" #include "memory_patcher.h" @@ -17,78 +23,169 @@ namespace MemoryPatcher { uintptr_t g_eboot_address; -u64 g_eboot_image_size; +uint64_t g_eboot_image_size; std::string g_game_serial; +std::string patchFile; std::vector pending_patches; -QString toHex(unsigned long long value, size_t byteSize) { +std::string toHex(unsigned long long value, size_t byteSize) { std::stringstream ss; ss << std::hex << std::setfill('0') << std::setw(byteSize * 2) << value; - return QString::fromStdString(ss.str()); + return ss.str(); } -QString convertValueToHex(const QString& type, const QString& valueStr) { - QString result; - std::string typeStr = type.toStdString(); - std::string valueStrStd = valueStr.toStdString(); +std::string convertValueToHex(const std::string type, const std::string valueStr) { + std::string result; - if (typeStr == "byte") { - unsigned int value = std::stoul(valueStrStd, nullptr, 16); + if (type == "byte") { + unsigned int value = std::stoul(valueStr, nullptr, 16); result = toHex(value, 1); - } else if (typeStr == "bytes16") { - unsigned int value = std::stoul(valueStrStd, nullptr, 16); + } else if (type == "bytes16") { + unsigned int value = std::stoul(valueStr, nullptr, 16); result = toHex(value, 2); - } else if (typeStr == "bytes32") { - unsigned long value = std::stoul(valueStrStd, nullptr, 16); + } else if (type == "bytes32") { + unsigned long value = std::stoul(valueStr, nullptr, 16); result = toHex(value, 4); - } else if (typeStr == "bytes64") { - unsigned long long value = std::stoull(valueStrStd, nullptr, 16); + } else if (type == "bytes64") { + unsigned long long value = std::stoull(valueStr, nullptr, 16); result = toHex(value, 8); - } else if (typeStr == "float32") { + } else if (type == "float32") { union { float f; uint32_t i; } floatUnion; - floatUnion.f = std::stof(valueStrStd); + floatUnion.f = std::stof(valueStr); result = toHex(floatUnion.i, sizeof(floatUnion.i)); - } else if (typeStr == "float64") { + } else if (type == "float64") { union { double d; uint64_t i; } doubleUnion; - doubleUnion.d = std::stod(valueStrStd); + doubleUnion.d = std::stod(valueStr); result = toHex(doubleUnion.i, sizeof(doubleUnion.i)); - } else if (typeStr == "utf8") { - QByteArray byteArray = QString::fromStdString(valueStrStd).toUtf8(); - byteArray.append('\0'); + } else if (type == "utf8") { + std::vector byteArray = + std::vector(valueStr.begin(), valueStr.end()); + byteArray.push_back('\0'); std::stringstream ss; for (unsigned char c : byteArray) { ss << std::hex << std::setfill('0') << std::setw(2) << static_cast(c); } - result = QString::fromStdString(ss.str()); - } else if (typeStr == "utf16") { - QByteArray byteArray( - reinterpret_cast(QString::fromStdString(valueStrStd).utf16()), - QString::fromStdString(valueStrStd).size() * 2); - byteArray.append('\0'); - byteArray.append('\0'); + result = ss.str(); + } else if (type == "utf16") { + std::wstring wide_str(valueStr.size(), L'\0'); + std::mbstowcs(&wide_str[0], valueStr.c_str(), valueStr.size()); + wide_str.resize(std::wcslen(wide_str.c_str())); + + std::u16string valueStringU16; + + for (wchar_t wc : wide_str) { + if (wc <= 0xFFFF) { + valueStringU16.push_back(static_cast(wc)); + } else { + wc -= 0x10000; + valueStringU16.push_back(static_cast(0xD800 | (wc >> 10))); + valueStringU16.push_back(static_cast(0xDC00 | (wc & 0x3FF))); + } + } + + std::vector byteArray; + // convert to little endian + for (char16_t ch : valueStringU16) { + unsigned char low_byte = static_cast(ch & 0x00FF); + unsigned char high_byte = static_cast((ch >> 8) & 0x00FF); + + byteArray.push_back(low_byte); + byteArray.push_back(high_byte); + } + byteArray.push_back('\0'); + byteArray.push_back('\0'); std::stringstream ss; - for (unsigned char c : byteArray) { - ss << std::hex << std::setfill('0') << std::setw(2) << static_cast(c); + + for (unsigned char ch : byteArray) { + ss << std::hex << std::setw(2) << std::setfill('0') << static_cast(ch); } - result = QString::fromStdString(ss.str()); - } else if (typeStr == "bytes") { + result = ss.str(); + } else if (type == "bytes") { result = valueStr; - } else if (typeStr == "mask" || typeStr == "mask_jump32") { + } else if (type == "mask" || type == "mask_jump32") { result = valueStr; } else { - LOG_INFO(Loader, "Error applying Patch, unknown type: {}", typeStr); + LOG_INFO(Loader, "Error applying Patch, unknown type: {}", type); } return result; } void OnGameLoaded() { + if (!patchFile.empty()) { + std::string patchDir = Common::FS::GetUserPath(Common::FS::PathType::PatchesDir).string(); + + std::string filePath = patchDir + "/" + patchFile; + + pugi::xml_document doc; + pugi::xml_parse_result result = doc.load_file(filePath.c_str()); + + if (result) { + auto patchXML = doc.child("Patch"); + for (pugi::xml_node_iterator it = patchXML.children().begin(); + it != patchXML.children().end(); ++it) { + + if (std::string(it->name()) == "Metadata") { + if (std::string(it->attribute("isEnabled").value()) == "true") { + auto patchList = it->first_child(); + + std::string currentPatchName = it->attribute("Name").value(); + + for (pugi::xml_node_iterator patchLineIt = patchList.children().begin(); + patchLineIt != patchList.children().end(); ++patchLineIt) { + + std::string type = patchLineIt->attribute("Type").value(); + std::string address = patchLineIt->attribute("Address").value(); + std::string patchValue = patchLineIt->attribute("Value").value(); + std::string maskOffsetStr = patchLineIt->attribute("type").value(); + + patchValue = convertValueToHex(type, patchValue); + + bool littleEndian = false; + + if (type == "bytes16") { + littleEndian = true; + } else if (type == "bytes32") { + littleEndian = true; + } else if (type == "bytes64") { + littleEndian = true; + } + + MemoryPatcher::PatchMask patchMask = MemoryPatcher::PatchMask::None; + int maskOffsetValue = 0; + + if (type == "mask") { + patchMask = MemoryPatcher::PatchMask::Mask; + + // im not sure if this works, there is no games to test the mask + // offset on yet + if (!maskOffsetStr.empty()) + maskOffsetValue = std::stoi(maskOffsetStr, 0, 10); + } + + if (type == "mask_jump32") + patchMask = MemoryPatcher::PatchMask::Mask_Jump32; + + MemoryPatcher::PatchMemory(currentPatchName, address, patchValue, false, + littleEndian, patchMask); + } + } + } + } + } else + LOG_ERROR(Loader, "couldnt patch parse xml : {}", result.description()); + + ApplyPendingPatches(); + return; + } + +#ifdef ENABLE_QT_GUI // We use the QT headers for the xml and json parsing, this define is only true on QT builds QString patchDir = QString::fromStdString(Common::FS::GetUserPath(Common::FS::PathType::PatchesDir).string()); @@ -190,7 +287,8 @@ void OnGameLoaded() { QString patchValue = lineObject["Value"].toString(); QString maskOffsetStr = lineObject["Offset"].toString(); - patchValue = convertValueToHex(type, patchValue); + patchValue = QString::fromStdString( + convertValueToHex(type.toStdString(), patchValue.toStdString())); bool littleEndian = false; @@ -233,6 +331,7 @@ void OnGameLoaded() { } ApplyPendingPatches(); } +#endif } void AddPatchToQueue(patchInfo patchToAdd) { diff --git a/src/qt_gui/memory_patcher.h b/src/common/memory_patcher.h similarity index 87% rename from src/qt_gui/memory_patcher.h rename to src/common/memory_patcher.h index 821184adec..899ffccb10 100644 --- a/src/qt_gui/memory_patcher.h +++ b/src/common/memory_patcher.h @@ -5,13 +5,13 @@ #include #include #include -#include namespace MemoryPatcher { extern uintptr_t g_eboot_address; -extern u64 g_eboot_image_size; +extern uint64_t g_eboot_image_size; extern std::string g_game_serial; +extern std::string patchFile; enum PatchMask : uint8_t { None, @@ -32,7 +32,7 @@ struct patchInfo { extern std::vector pending_patches; -QString convertValueToHex(const QString& type, const QString& valueStr); +std::string convertValueToHex(const std::string type, const std::string valueStr); void OnGameLoaded(); void AddPatchToQueue(patchInfo patchToAdd); diff --git a/src/common/path_util.cpp b/src/common/path_util.cpp index 8d369fc7bf..cce12ebcf4 100644 --- a/src/common/path_util.cpp +++ b/src/common/path_util.cpp @@ -82,11 +82,20 @@ static std::filesystem::path GetBundleParentDirectory() { static auto UserPaths = [] { #ifdef __APPLE__ - std::filesystem::current_path(GetBundleParentDirectory()); + // Start by assuming the base directory is the bundle's parent directory. + std::filesystem::path base_dir = GetBundleParentDirectory(); + std::filesystem::path user_dir = base_dir / PORTABLE_DIR; + // Check if the "user" directory exists in the current path: + if (!std::filesystem::exists(user_dir)) { + // If it doesn't exist, use the new hardcoded path: + user_dir = + std::filesystem::path(getenv("HOME")) / "Library" / "Application Support" / "shadPS4"; + } +#else + const auto user_dir = std::filesystem::current_path() / PORTABLE_DIR; #endif std::unordered_map paths; - const auto user_dir = std::filesystem::current_path() / PORTABLE_DIR; const auto create_path = [&](PathType shad_path, const fs::path& new_path) { std::filesystem::create_directory(new_path); @@ -107,6 +116,7 @@ static auto UserPaths = [] { create_path(PathType::CheatsDir, user_dir / CHEATS_DIR); create_path(PathType::PatchesDir, user_dir / PATCHES_DIR); create_path(PathType::AddonsDir, user_dir / ADDONS_DIR); + create_path(PathType::MetaDataDir, user_dir / METADATA_DIR); return paths; }(); @@ -155,4 +165,4 @@ void SetUserPath(PathType shad_path, const fs::path& new_path) { UserPaths.insert_or_assign(shad_path, new_path); } -} // namespace Common::FS +} // namespace Common::FS \ No newline at end of file diff --git a/src/common/path_util.h b/src/common/path_util.h index bee93c1b9c..623b285ed2 100644 --- a/src/common/path_util.h +++ b/src/common/path_util.h @@ -23,6 +23,7 @@ enum class PathType { CheatsDir, // Where cheats are stored. PatchesDir, // Where patches are stored. AddonsDir, // Where additional content is stored. + MetaDataDir, // Where game metadata (e.g. trophies and menu backgrounds) is stored. }; constexpr auto PORTABLE_DIR = "user"; @@ -41,6 +42,7 @@ constexpr auto CAPTURES_DIR = "captures"; constexpr auto CHEATS_DIR = "cheats"; constexpr auto PATCHES_DIR = "patches"; constexpr auto ADDONS_DIR = "addcont"; +constexpr auto METADATA_DIR = "game_data"; // Filenames constexpr auto LOG_FILE = "shad_log.txt"; diff --git a/src/common/rdtsc.h b/src/common/rdtsc.h index 3180273e50..4e4d584369 100644 --- a/src/common/rdtsc.h +++ b/src/common/rdtsc.h @@ -3,6 +3,8 @@ #pragma once +#include "common/arch.h" + #ifdef _MSC_VER #include #endif @@ -13,15 +15,20 @@ namespace Common { #ifdef _MSC_VER __forceinline static u64 FencedRDTSC() { +#ifdef ARCH_X86_64 _mm_lfence(); _ReadWriteBarrier(); const u64 result = __rdtsc(); _mm_lfence(); _ReadWriteBarrier(); return result; +#else +#error "Missing FencedRDTSC() implementation for target CPU architecture." +#endif } #else static inline u64 FencedRDTSC() { +#ifdef ARCH_X86_64 u64 eax; u64 edx; asm volatile("lfence\n\t" @@ -29,6 +36,16 @@ static inline u64 FencedRDTSC() { "lfence\n\t" : "=a"(eax), "=d"(edx)); return (edx << 32) | eax; +#elif defined(ARCH_ARM64) + u64 ret; + asm volatile("isb\n\t" + "mrs %0, cntvct_el0\n\t" + "isb\n\t" + : "=r"(ret)::"memory"); + return ret; +#else +#error "Missing FencedRDTSC() implementation for target CPU architecture." +#endif } #endif diff --git a/src/common/signal_context.cpp b/src/common/signal_context.cpp new file mode 100644 index 0000000000..112160bc80 --- /dev/null +++ b/src/common/signal_context.cpp @@ -0,0 +1,92 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/arch.h" +#include "common/assert.h" +#include "common/signal_context.h" + +#ifdef _WIN32 +#include +#else +#include +#endif + +namespace Common { + +void* GetXmmPointer(void* ctx, u8 index) { +#if defined(_WIN32) +#define CASE(index) \ + case index: \ + return (void*)(&((EXCEPTION_POINTERS*)ctx)->ContextRecord->Xmm##index.Low) +#elif defined(__APPLE__) +#define CASE(index) \ + case index: \ + return (void*)(&((ucontext_t*)ctx)->uc_mcontext->__fs.__fpu_xmm##index); +#else +#define CASE(index) \ + case index: \ + return (void*)(&((ucontext_t*)ctx)->uc_mcontext.fpregs->_xmm[index].element[0]) +#endif + switch (index) { + CASE(0); + CASE(1); + CASE(2); + CASE(3); + CASE(4); + CASE(5); + CASE(6); + CASE(7); + CASE(8); + CASE(9); + CASE(10); + CASE(11); + CASE(12); + CASE(13); + CASE(14); + CASE(15); + default: { + UNREACHABLE_MSG("Invalid XMM register index: {}", index); + return nullptr; + } + } +#undef CASE +} + +void* GetRip(void* ctx) { +#if defined(_WIN32) + return (void*)((EXCEPTION_POINTERS*)ctx)->ContextRecord->Rip; +#elif defined(__APPLE__) + return (void*)((ucontext_t*)ctx)->uc_mcontext->__ss.__rip; +#else + return (void*)((ucontext_t*)ctx)->uc_mcontext.gregs[REG_RIP]; +#endif +} + +void IncrementRip(void* ctx, u64 length) { +#if defined(_WIN32) + ((EXCEPTION_POINTERS*)ctx)->ContextRecord->Rip += length; +#elif defined(__APPLE__) + ((ucontext_t*)ctx)->uc_mcontext->__ss.__rip += length; +#else + ((ucontext_t*)ctx)->uc_mcontext.gregs[REG_RIP] += length; +#endif +} + +bool IsWriteError(void* ctx) { +#if defined(_WIN32) + return ((EXCEPTION_POINTERS*)ctx)->ExceptionRecord->ExceptionInformation[0] == 1; +#elif defined(__APPLE__) +#if defined(ARCH_X86_64) + return ((ucontext_t*)ctx)->uc_mcontext->__es.__err & 0x2; +#elif defined(ARCH_ARM64) + return ((ucontext_t*)ctx)->uc_mcontext->__es.__esr & 0x40; +#endif +#else +#if defined(ARCH_X86_64) + return ((ucontext_t*)ctx)->uc_mcontext.gregs[REG_ERR] & 0x2; +#else +#error "Unsupported architecture" +#endif +#endif +} +} // namespace Common \ No newline at end of file diff --git a/src/common/signal_context.h b/src/common/signal_context.h new file mode 100644 index 0000000000..b09da64f25 --- /dev/null +++ b/src/common/signal_context.h @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "common/types.h" + +namespace Common { + +void* GetXmmPointer(void* ctx, u8 index); + +void* GetRip(void* ctx); + +void IncrementRip(void* ctx, u64 length); + +bool IsWriteError(void* ctx); + +} // namespace Common \ No newline at end of file diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index 29e6aeb4f4..6d5a254cd2 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -14,12 +14,17 @@ namespace Common { -std::string ToLower(std::string str) { - std::transform(str.begin(), str.end(), str.begin(), - [](unsigned char c) { return static_cast(std::tolower(c)); }); +std::string ToLower(std::string_view input) { + std::string str; + str.resize(input.size()); + std::ranges::transform(input, str.begin(), tolower); return str; } +void ToLowerInPlace(std::string& str) { + std::ranges::transform(str, str.begin(), tolower); +} + std::vector SplitString(const std::string& str, char delimiter) { std::istringstream iss(str); std::vector output(1); diff --git a/src/common/string_util.h b/src/common/string_util.h index 8dae6c75b0..23e82b93c8 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -10,7 +10,9 @@ namespace Common { /// Make a string lowercase -[[nodiscard]] std::string ToLower(std::string str); +[[nodiscard]] std::string ToLower(std::string_view str); + +void ToLowerInPlace(std::string& str); std::vector SplitString(const std::string& str, char delimiter); diff --git a/src/common/thread.cpp b/src/common/thread.cpp index f08b36faae..46df68c388 100644 --- a/src/common/thread.cpp +++ b/src/common/thread.cpp @@ -3,12 +3,15 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include #include "common/error.h" #include "common/logging/log.h" #include "common/thread.h" +#include "ntapi.h" #ifdef __APPLE__ #include +#include #include #elif defined(_WIN32) #include @@ -31,6 +34,48 @@ namespace Common { +#ifdef __APPLE__ + +void SetCurrentThreadRealtime(const std::chrono::nanoseconds period_ns) { + // CPU time to grant. + const std::chrono::nanoseconds computation_ns = period_ns / 2; + + // Determine the timebase for converting time to ticks. + struct mach_timebase_info timebase {}; + mach_timebase_info(&timebase); + const auto ticks_per_ns = + static_cast(timebase.denom) / static_cast(timebase.numer); + + const auto period_ticks = + static_cast(static_cast(period_ns.count()) * ticks_per_ns); + const auto computation_ticks = + static_cast(static_cast(computation_ns.count()) * ticks_per_ns); + + thread_time_constraint_policy policy = { + .period = period_ticks, + .computation = computation_ticks, + // Should not matter since preemptible is false, but needs to be >= computation regardless. + .constraint = computation_ticks, + .preemptible = false, + }; + + int ret = thread_policy_set( + pthread_mach_thread_np(pthread_self()), THREAD_TIME_CONSTRAINT_POLICY, + reinterpret_cast(&policy), THREAD_TIME_CONSTRAINT_POLICY_COUNT); + if (ret != KERN_SUCCESS) { + LOG_ERROR(Common, "Could not set thread to real-time with period {} ns: {}", + period_ns.count(), ret); + } +} + +#else + +void SetCurrentThreadRealtime(const std::chrono::nanoseconds period_ns) { + // Not implemented +} + +#endif + #ifdef _WIN32 void SetCurrentThreadPriority(ThreadPriority new_priority) { @@ -59,6 +104,16 @@ void SetCurrentThreadPriority(ThreadPriority new_priority) { SetThreadPriority(handle, windows_priority); } +static void AccurateSleep(std::chrono::nanoseconds duration) { + LARGE_INTEGER interval{ + .QuadPart = -1 * (duration.count() / 100u), + }; + HANDLE timer = ::CreateWaitableTimer(NULL, TRUE, NULL); + SetWaitableTimer(timer, &interval, 0, NULL, NULL, 0); + WaitForSingleObject(timer, INFINITE); + ::CloseHandle(timer); +} + #else void SetCurrentThreadPriority(ThreadPriority new_priority) { @@ -79,6 +134,10 @@ void SetCurrentThreadPriority(ThreadPriority new_priority) { pthread_setschedparam(this_thread, scheduling_type, ¶ms); } +static void AccurateSleep(std::chrono::nanoseconds duration) { + std::this_thread::sleep_for(duration); +} + #endif #ifdef _MSC_VER @@ -121,4 +180,22 @@ void SetCurrentThreadName(const char*) { #endif +AccurateTimer::AccurateTimer(std::chrono::nanoseconds target_interval) + : target_interval(target_interval) {} + +void AccurateTimer::Start() { + auto begin_sleep = std::chrono::high_resolution_clock::now(); + if (total_wait.count() > 0) { + AccurateSleep(total_wait); + } + start_time = std::chrono::high_resolution_clock::now(); + total_wait -= std::chrono::duration_cast(start_time - begin_sleep); +} + +void AccurateTimer::End() { + auto now = std::chrono::high_resolution_clock::now(); + total_wait += + target_interval - std::chrono::duration_cast(now - start_time); +} + } // namespace Common diff --git a/src/common/thread.h b/src/common/thread.h index 39acc1db55..fd962f8e5a 100644 --- a/src/common/thread.h +++ b/src/common/thread.h @@ -4,6 +4,7 @@ #pragma once +#include #include "common/types.h" namespace Common { @@ -16,8 +17,24 @@ enum class ThreadPriority : u32 { Critical = 4, }; +void SetCurrentThreadRealtime(std::chrono::nanoseconds period_ns); + void SetCurrentThreadPriority(ThreadPriority new_priority); void SetCurrentThreadName(const char* name); +class AccurateTimer { + std::chrono::nanoseconds target_interval{}; + std::chrono::nanoseconds total_wait{}; + + std::chrono::high_resolution_clock::time_point start_time; + +public: + explicit AccurateTimer(std::chrono::nanoseconds target_interval); + + void Start(); + + void End(); +}; + } // namespace Common diff --git a/src/common/version.h b/src/common/version.h index 80de187b02..12fd170419 100644 --- a/src/common/version.h +++ b/src/common/version.h @@ -8,7 +8,7 @@ namespace Common { -constexpr char VERSION[] = "0.2.1 WIP"; +constexpr char VERSION[] = "0.3.1 WIP"; constexpr bool isRelease = false; } // namespace Common diff --git a/src/core/address_space.cpp b/src/core/address_space.cpp index 235113700c..3950bd5fe5 100644 --- a/src/core/address_space.cpp +++ b/src/core/address_space.cpp @@ -3,11 +3,13 @@ #include #include "common/alignment.h" +#include "common/arch.h" #include "common/assert.h" #include "common/error.h" #include "core/address_space.h" #include "core/libraries/kernel/memory_management.h" #include "core/memory.h" +#include "libraries/error_codes.h" #ifdef _WIN32 #include @@ -16,7 +18,7 @@ #include #endif -#ifdef __APPLE__ +#if defined(__APPLE__) && defined(ARCH_X86_64) // Reserve space for the system address space using a zerofill section. asm(".zerofill GUEST_SYSTEM,GUEST_SYSTEM,__guest_system,0xFBFC00000"); #endif @@ -231,27 +233,36 @@ struct AddressSpace::Impl { void Protect(VAddr virtual_addr, size_t size, bool read, bool write, bool execute) { DWORD new_flags{}; - if (read && write) { + + if (read && write && execute) { + new_flags = PAGE_EXECUTE_READWRITE; + } else if (read && write) { new_flags = PAGE_READWRITE; } else if (read && !write) { new_flags = PAGE_READONLY; - } else if (!read && !write) { + } else if (execute && !read && not write) { + new_flags = PAGE_EXECUTE; + } else if (!read && !write && !execute) { new_flags = PAGE_NOACCESS; } else { - UNIMPLEMENTED_MSG("Protection flag combination read={} write={}", read, write); + LOG_CRITICAL(Common_Memory, + "Unsupported protection flag combination for address {:#x}, size {}", + virtual_addr, size); + return; } - const VAddr virtual_end = virtual_addr + size; - auto [it, end] = placeholders.equal_range({virtual_addr, virtual_end}); - while (it != end) { - const size_t offset = std::max(it->lower(), virtual_addr); - const size_t protect_length = std::min(it->upper(), virtual_end) - offset; - DWORD old_flags{}; - if (!VirtualProtect(virtual_base + offset, protect_length, new_flags, &old_flags)) { - LOG_CRITICAL(Common_Memory, "Failed to change virtual memory protect rules"); - } - ++it; + DWORD old_flags{}; + bool success = + VirtualProtect(reinterpret_cast(virtual_addr), size, new_flags, &old_flags); + + if (!success) { + LOG_ERROR(Common_Memory, + "Failed to change virtual memory protection for address {:#x}, size {}", + virtual_addr, size); } + + // Use assert to ensure success in debug builds + DEBUG_ASSERT(success && "Failed to change virtual memory protection"); } HANDLE process{}; @@ -298,12 +309,12 @@ struct AddressSpace::Impl { constexpr int protection_flags = PROT_READ | PROT_WRITE; constexpr int base_map_flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE; -#ifdef __APPLE__ - // On ARM64 Macs, we run into limitations due to the commpage from 0xFC0000000 - 0xFFFFFFFFF - // and the GPU carveout region from 0x1000000000 - 0x6FFFFFFFFF. We can allocate the system - // managed region, as well as system reserved if reduced in size slightly, but we cannot map - // the user region where we want, so we must let the OS put it wherever possible and hope - // the game won't rely on its location. +#if defined(__APPLE__) && defined(ARCH_X86_64) + // On ARM64 Macs under Rosetta 2, we run into limitations due to the commpage from + // 0xFC0000000 - 0xFFFFFFFFF and the GPU carveout region from 0x1000000000 - 0x6FFFFFFFFF. + // We can allocate the system managed region, as well as system reserved if reduced in size + // slightly, but we cannot map the user region where we want, so we must let the OS put it + // wherever possible and hope the game won't rely on its location. system_managed_base = reinterpret_cast( mmap(reinterpret_cast(SYSTEM_MANAGED_MIN), system_managed_size, protection_flags, base_map_flags | MAP_FIXED, -1, 0)); @@ -315,12 +326,22 @@ struct AddressSpace::Impl { protection_flags, base_map_flags, -1, 0)); #else const auto virtual_size = system_managed_size + system_reserved_size + user_size; +#if defined(ARCH_X86_64) const auto virtual_base = reinterpret_cast(mmap(reinterpret_cast(SYSTEM_MANAGED_MIN), virtual_size, protection_flags, base_map_flags | MAP_FIXED, -1, 0)); system_managed_base = virtual_base; system_reserved_base = reinterpret_cast(SYSTEM_RESERVED_MIN); user_base = reinterpret_cast(USER_MIN); +#else + // Map memory wherever possible and instruction translation can handle offsetting to the + // base. + const auto virtual_base = reinterpret_cast( + mmap(nullptr, virtual_size, protection_flags, base_map_flags, -1, 0)); + system_managed_base = virtual_base; + system_reserved_base = virtual_base + SYSTEM_RESERVED_MIN - SYSTEM_MANAGED_MIN; + user_base = virtual_base + USER_MIN - SYSTEM_MANAGED_MIN; +#endif #endif if (system_managed_base == MAP_FAILED || system_reserved_base == MAP_FAILED || user_base == MAP_FAILED) { @@ -420,9 +441,11 @@ struct AddressSpace::Impl { if (write) { flags |= PROT_WRITE; } +#ifdef ARCH_X86_64 if (execute) { flags |= PROT_EXEC; } +#endif int ret = mprotect(reinterpret_cast(virtual_addr), size, flags); ASSERT_MSG(ret == 0, "mprotect failed: {}", strerror(errno)); } @@ -453,8 +476,14 @@ AddressSpace::~AddressSpace() = default; void* AddressSpace::Map(VAddr virtual_addr, size_t size, u64 alignment, PAddr phys_addr, bool is_exec) { - return impl->Map(virtual_addr, phys_addr, size, - is_exec ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE); +#if ARCH_X86_64 + const auto prot = is_exec ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE; +#else + // On non-native architectures, we can simplify things by ignoring the execute flag for the + // canonical copy of the memory and rely on the JIT to map translated code as executable. + constexpr auto prot = PAGE_READWRITE; +#endif + return impl->Map(virtual_addr, phys_addr, size, prot); } void* AddressSpace::MapFile(VAddr virtual_addr, size_t size, size_t offset, u32 prot, @@ -493,7 +522,10 @@ void AddressSpace::Unmap(VAddr virtual_addr, size_t size, VAddr start_in_vma, VA } void AddressSpace::Protect(VAddr virtual_addr, size_t size, MemoryPermission perms) { - return impl->Protect(virtual_addr, size, true, true, true); + const bool read = True(perms & MemoryPermission::Read); + const bool write = True(perms & MemoryPermission::Write); + const bool execute = True(perms & MemoryPermission::Execute); + return impl->Protect(virtual_addr, size, read, write, execute); } } // namespace Core diff --git a/src/core/address_space.h b/src/core/address_space.h index 2a3488d572..3233c75881 100644 --- a/src/core/address_space.h +++ b/src/core/address_space.h @@ -4,6 +4,7 @@ #pragma once #include +#include "common/arch.h" #include "common/enum.h" #include "common/types.h" @@ -23,7 +24,7 @@ constexpr VAddr CODE_BASE_OFFSET = 0x100000000ULL; constexpr VAddr SYSTEM_MANAGED_MIN = 0x00000400000ULL; constexpr VAddr SYSTEM_MANAGED_MAX = 0x07FFFFBFFFULL; constexpr VAddr SYSTEM_RESERVED_MIN = 0x07FFFFC000ULL; -#ifdef __APPLE__ +#if defined(__APPLE__) && defined(ARCH_X86_64) // Can only comfortably reserve the first 0x7C0000000 of system reserved space. constexpr VAddr SYSTEM_RESERVED_MAX = 0xFBFFFFFFFULL; #else diff --git a/src/core/cpu_patches.cpp b/src/core/cpu_patches.cpp index 55bbf23b11..24438b6b5e 100644 --- a/src/core/cpu_patches.cpp +++ b/src/core/cpu_patches.cpp @@ -1,12 +1,20 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include #include #include +#include #include #include +#include +#include "common/alignment.h" +#include "common/arch.h" #include "common/assert.h" +#include "common/decoder.h" +#include "common/signal_context.h" #include "common/types.h" +#include "core/signals.h" #include "core/tls.h" #include "cpu_patches.h" @@ -22,6 +30,16 @@ using namespace Xbyak::util; +#define MAYBE_AVX(OPCODE, ...) \ + [&] { \ + Cpu cpu; \ + if (cpu.has(Cpu::tAVX)) { \ + c.v##OPCODE(__VA_ARGS__); \ + } else { \ + c.OPCODE(__VA_ARGS__); \ + } \ + }() + namespace Core { static Xbyak::Reg ZydisToXbyakRegister(const ZydisRegister reg) { @@ -126,39 +144,35 @@ static Xbyak::Reg AllocateScratchRegister( static pthread_key_t stack_pointer_slot; static pthread_key_t patch_stack_slot; static std::once_flag patch_context_slots_init_flag; +static constexpr u32 patch_stack_size = 0x1000; static_assert(sizeof(void*) == sizeof(u64), "Cannot fit a register inside a thread local storage slot."); +static void FreePatchStack(void* patch_stack) { + // Subtract back to the bottom of the stack for free. + std::free(static_cast(patch_stack) - patch_stack_size); +} + static void InitializePatchContextSlots() { ASSERT_MSG(pthread_key_create(&stack_pointer_slot, nullptr) == 0, "Unable to allocate thread-local register for stack pointer."); - ASSERT_MSG(pthread_key_create(&patch_stack_slot, nullptr) == 0, + ASSERT_MSG(pthread_key_create(&patch_stack_slot, FreePatchStack) == 0, "Unable to allocate thread-local register for patch stack."); } void InitializeThreadPatchStack() { std::call_once(patch_context_slots_init_flag, InitializePatchContextSlots); - const auto* patch_stack = std::malloc(0x1000); - pthread_setspecific(patch_stack_slot, patch_stack); -} - -void CleanupThreadPatchStack() { - std::call_once(patch_context_slots_init_flag, InitializePatchContextSlots); - - auto* patch_stack = pthread_getspecific(patch_stack_slot); - if (patch_stack != nullptr) { - std::free(patch_stack); - pthread_setspecific(patch_stack_slot, nullptr); - } + pthread_setspecific(patch_stack_slot, + static_cast(std::malloc(patch_stack_size)) + patch_stack_size); } /// Saves the stack pointer to thread local storage and loads the patch stack. static void SaveStack(Xbyak::CodeGenerator& c) { std::call_once(patch_context_slots_init_flag, InitializePatchContextSlots); - // Save stack pointer and load patch stack. + // Save original stack pointer and load patch stack. c.putSeg(gs); c.mov(qword[reinterpret_cast(stack_pointer_slot * sizeof(void*))], rsp); c.putSeg(gs); @@ -184,10 +198,6 @@ void InitializeThreadPatchStack() { // No-op } -void CleanupThreadPatchStack() { - // No-op -} - /// Saves the stack pointer to thread local storage and loads the patch stack. static void SaveStack(Xbyak::CodeGenerator& c) { UNIMPLEMENTED(); @@ -220,31 +230,38 @@ static void RestoreRegisters(Xbyak::CodeGenerator& c, } /// Switches to the patch stack and stores all registers. -static void SaveContext(Xbyak::CodeGenerator& c) { +static void SaveContext(Xbyak::CodeGenerator& c, bool save_flags = false) { SaveStack(c); for (int reg = Xbyak::Operand::RAX; reg <= Xbyak::Operand::R15; reg++) { c.push(Xbyak::Reg64(reg)); } for (int reg = 0; reg <= 7; reg++) { - c.sub(rsp, 32); + c.lea(rsp, ptr[rsp - 32]); c.vmovdqu(ptr[rsp], Xbyak::Ymm(reg)); } + if (save_flags) { + c.pushfq(); + } } /// Restores all registers and restores the original stack. /// If the destination is a register, it is not restored to preserve the output. -static void RestoreContext(Xbyak::CodeGenerator& c, const Xbyak::Operand& dst) { +static void RestoreContext(Xbyak::CodeGenerator& c, const Xbyak::Operand& dst, + bool restore_flags = false) { + if (restore_flags) { + c.popfq(); + } for (int reg = 7; reg >= 0; reg--) { if ((!dst.isXMM() && !dst.isYMM()) || dst.getIdx() != reg) { c.vmovdqu(Xbyak::Ymm(reg), ptr[rsp]); } - c.add(rsp, 32); + c.lea(rsp, ptr[rsp + 32]); } for (int reg = Xbyak::Operand::R15; reg >= Xbyak::Operand::RAX; reg--) { if (!dst.isREG() || dst.getIdx() != reg) { c.pop(Xbyak::Reg64(reg)); } else { - c.add(rsp, 4); + c.lea(rsp, ptr[rsp + 8]); } } RestoreStack(c); @@ -315,9 +332,22 @@ static void GenerateBLSI(const ZydisDecodedOperand* operands, Xbyak::CodeGenerat SaveRegisters(c, {scratch}); + // BLSI sets CF to zero if source is zero, otherwise it sets CF to one. + Xbyak::Label clear_carry, end; + c.mov(scratch, *src); - c.neg(scratch); + c.neg(scratch); // NEG, like BLSI, clears CF if the source is zero and sets it otherwise + c.jnc(clear_carry); + + c.and_(scratch, *src); + c.stc(); // setting/clearing carry needs to happen after the AND because that clears CF + c.jmp(end); + + c.L(clear_carry); c.and_(scratch, *src); + // We don't need to clear carry here since AND does that for us + + c.L(end); c.mov(dst, scratch); RestoreRegisters(c, {scratch}); @@ -331,9 +361,24 @@ static void GenerateBLSMSK(const ZydisDecodedOperand* operands, Xbyak::CodeGener SaveRegisters(c, {scratch}); + Xbyak::Label clear_carry, end; + + // BLSMSK sets CF to zero if source is NOT zero, otherwise it sets CF to one. c.mov(scratch, *src); + c.test(scratch, scratch); + c.jnz(clear_carry); + + c.dec(scratch); + c.xor_(scratch, *src); + c.stc(); + c.jmp(end); + + c.L(clear_carry); c.dec(scratch); c.xor_(scratch, *src); + // We don't need to clear carry here since XOR does that for us + + c.L(end); c.mov(dst, scratch); RestoreRegisters(c, {scratch}); @@ -347,9 +392,24 @@ static void GenerateBLSR(const ZydisDecodedOperand* operands, Xbyak::CodeGenerat SaveRegisters(c, {scratch}); + Xbyak::Label clear_carry, end; + + // BLSR sets CF to zero if source is NOT zero, otherwise it sets CF to one. c.mov(scratch, *src); + c.test(scratch, scratch); + c.jnz(clear_carry); + + c.dec(scratch); + c.and_(scratch, *src); + c.stc(); + c.jmp(end); + + c.L(clear_carry); c.dec(scratch); c.and_(scratch, *src); + // We don't need to clear carry here since AND does that for us + + c.L(end); c.mov(dst, scratch); RestoreRegisters(c, {scratch}); @@ -369,7 +429,7 @@ static void GenerateVCVTPH2PS(const ZydisDecodedOperand* operands, Xbyak::CodeGe const auto float_count = dst.getBit() / 32; const auto byte_count = float_count * 4; - SaveContext(c); + SaveContext(c, true); // Allocate stack space for outputs and load into first parameter. c.sub(rsp, byte_count); @@ -405,7 +465,7 @@ static void GenerateVCVTPH2PS(const ZydisDecodedOperand* operands, Xbyak::CodeGe } c.add(rsp, byte_count); - RestoreContext(c, dst); + RestoreContext(c, dst, true); } using SingleToHalfFloatConverter = half_float::half (*)(float); @@ -433,7 +493,7 @@ static void GenerateVCVTPS2PH(const ZydisDecodedOperand* operands, Xbyak::CodeGe const auto float_count = src.getBit() / 32; const auto byte_count = float_count * 4; - SaveContext(c); + SaveContext(c, true); if (dst->isXMM()) { // Allocate stack space for outputs and load into first parameter. @@ -480,7 +540,7 @@ static void GenerateVCVTPS2PH(const ZydisDecodedOperand* operands, Xbyak::CodeGe c.add(rsp, byte_count); } - RestoreContext(c, *dst); + RestoreContext(c, *dst, true); } static bool FilterRosetta2Only(const ZydisDecodedOperand*) { @@ -492,7 +552,7 @@ static bool FilterRosetta2Only(const ZydisDecodedOperand*) { return ret; } -#endif // __APPLE__ +#else // __APPLE__ static bool FilterTcbAccess(const ZydisDecodedOperand* operands) { const auto& dst_op = operands[0]; @@ -507,7 +567,6 @@ static bool FilterTcbAccess(const ZydisDecodedOperand* operands) { static void GenerateTcbAccess(const ZydisDecodedOperand* operands, Xbyak::CodeGenerator& c) { const auto dst = ZydisToXbyakRegisterOperand(operands[0]); - const auto slot = GetTcbKey(); #if defined(_WIN32) // The following logic is based on the Kernel32.dll asm of TlsGetValue @@ -515,6 +574,8 @@ static void GenerateTcbAccess(const ZydisDecodedOperand* operands, Xbyak::CodeGe static constexpr u32 TlsExpansionSlotsOffset = 0x1780; static constexpr u32 TlsMinimumAvailable = 64; + const auto slot = GetTcbKey(); + // Load the pointer to the table of TLS slots. c.putSeg(gs); if (slot < TlsMinimumAvailable) { @@ -528,11 +589,6 @@ static void GenerateTcbAccess(const ZydisDecodedOperand* operands, Xbyak::CodeGe // Load the pointer to our buffer. c.mov(dst, qword[dst + tls_index * sizeof(LPVOID)]); } -#elif defined(__APPLE__) - // The following logic is based on the Darwin implementation of _os_tsd_get_direct, used by - // pthread_getspecific https://github.com/apple/darwin-xnu/blob/main/libsyscall/os/tsd.h#L89-L96 - c.putSeg(gs); - c.mov(dst, qword[reinterpret_cast(slot * sizeof(void*))]); #else const auto src = ZydisToXbyakMemoryOperand(operands[1]); @@ -542,6 +598,116 @@ static void GenerateTcbAccess(const ZydisDecodedOperand* operands, Xbyak::CodeGe #endif } +#endif // __APPLE__ + +static bool FilterNoSSE4a(const ZydisDecodedOperand*) { + Cpu cpu; + return !cpu.has(Cpu::tSSE4a); +} + +static void GenerateEXTRQ(const ZydisDecodedOperand* operands, Xbyak::CodeGenerator& c) { + bool immediateForm = operands[1].type == ZYDIS_OPERAND_TYPE_IMMEDIATE && + operands[2].type == ZYDIS_OPERAND_TYPE_IMMEDIATE; + + ASSERT_MSG(operands[0].type == ZYDIS_OPERAND_TYPE_REGISTER, "operand 0 must be a register"); + + const auto dst = ZydisToXbyakRegisterOperand(operands[0]); + + ASSERT_MSG(dst.isXMM(), "operand 0 must be an XMM register"); + + Xbyak::Xmm xmm_dst = *reinterpret_cast(&dst); + + if (immediateForm) { + u8 length = operands[1].imm.value.u & 0x3F; + u8 index = operands[2].imm.value.u & 0x3F; + if (length == 0) { + length = 64; + } + + LOG_DEBUG(Core, "Patching immediate form EXTRQ, length: {}, index: {}", length, index); + + const Xbyak::Reg64 scratch1 = rax; + const Xbyak::Reg64 scratch2 = rcx; + + // Set rsp to before red zone and save scratch registers + c.lea(rsp, ptr[rsp - 128]); + c.pushfq(); + c.push(scratch1); + c.push(scratch2); + + u64 mask = (1ULL << length) - 1; + + // Get lower qword from xmm register + MAYBE_AVX(movq, scratch1, xmm_dst); + + if (index != 0) { + c.shr(scratch1, index); + } + + // We need to move mask to a register because we can't use all the possible + // immediate values with `and reg, imm32` + c.mov(scratch2, mask); + c.and_(scratch1, scratch2); + + // Writeback to xmm register, extrq instruction says top 64-bits are undefined so we don't + // care to preserve them + MAYBE_AVX(movq, xmm_dst, scratch1); + + c.pop(scratch2); + c.pop(scratch1); + c.popfq(); + c.lea(rsp, ptr[rsp + 128]); + } else { + ASSERT_MSG(operands[0].type == ZYDIS_OPERAND_TYPE_REGISTER && + operands[1].type == ZYDIS_OPERAND_TYPE_REGISTER && + operands[0].reg.value >= ZYDIS_REGISTER_XMM0 && + operands[0].reg.value <= ZYDIS_REGISTER_XMM15 && + operands[1].reg.value >= ZYDIS_REGISTER_XMM0 && + operands[1].reg.value <= ZYDIS_REGISTER_XMM15, + "Unexpected operand types for EXTRQ instruction"); + + const auto src = ZydisToXbyakRegisterOperand(operands[1]); + + ASSERT_MSG(src.isXMM(), "operand 1 must be an XMM register"); + + Xbyak::Xmm xmm_src = *reinterpret_cast(&src); + + const Xbyak::Reg64 scratch1 = rax; + const Xbyak::Reg64 scratch2 = rcx; + const Xbyak::Reg64 mask = rdx; + + c.lea(rsp, ptr[rsp - 128]); + c.pushfq(); + c.push(scratch1); + c.push(scratch2); + c.push(mask); + + // Construct the mask out of the length that resides in bottom 6 bits of source xmm + MAYBE_AVX(movq, scratch1, xmm_src); + c.mov(scratch2, scratch1); + c.and_(scratch2, 0x3F); + c.mov(mask, 1); + c.shl(mask, cl); + c.dec(mask); + + // Get the shift amount and store it in scratch2 + c.shr(scratch1, 8); + c.and_(scratch1, 0x3F); + c.mov(scratch2, scratch1); // cl now contains the shift amount + + MAYBE_AVX(movq, scratch1, xmm_dst); + c.shr(scratch1, cl); + c.and_(scratch1, mask); + MAYBE_AVX(movq, xmm_dst, scratch1); + + c.pop(mask); + c.pop(scratch2); + c.pop(scratch1); + c.popfq(); + c.lea(rsp, ptr[rsp + 128]); + } +} + using PatchFilter = bool (*)(const ZydisDecodedOperand*); using InstructionGenerator = void (*)(const ZydisDecodedOperand*, Xbyak::CodeGenerator&); struct PatchInfo { @@ -556,13 +722,15 @@ struct PatchInfo { }; static const std::unordered_map Patches = { -#if defined(_WIN32) || defined(__APPLE__) - // Windows and Apple need a trampoline. +#if defined(_WIN32) + // Windows needs a trampoline. {ZYDIS_MNEMONIC_MOV, {FilterTcbAccess, GenerateTcbAccess, true}}, -#else +#elif !defined(__APPLE__) {ZYDIS_MNEMONIC_MOV, {FilterTcbAccess, GenerateTcbAccess, false}}, #endif + {ZYDIS_MNEMONIC_EXTRQ, {FilterNoSSE4a, GenerateEXTRQ, true}}, + #ifdef __APPLE__ // Patches for instruction sets not supported by Rosetta 2. // BMI1 @@ -577,64 +745,263 @@ static const std::unordered_map Patches = { #endif }; -void PatchInstructions(u64 segment_addr, u64 segment_size, Xbyak::CodeGenerator& c) { - if (Patches.empty()) { - // Nothing to patch on this platform. - return; +static std::once_flag init_flag; + +struct PatchModule { + /// Mutex controlling access to module code regions. + std::mutex mutex{}; + + /// Start of the module. + u8* start; + + /// End of the module. + u8* end; + + /// Tracker for patched code locations. + std::set patched; + + /// Code generator for patching the module. + Xbyak::CodeGenerator patch_gen; + + /// Code generator for writing trampoline patches. + Xbyak::CodeGenerator trampoline_gen; + + PatchModule(u8* module_ptr, const u64 module_size, u8* trampoline_ptr, + const u64 trampoline_size) + : start(module_ptr), end(module_ptr + module_size), patch_gen(module_size, module_ptr), + trampoline_gen(trampoline_size, trampoline_ptr) {} +}; +static std::map modules; + +static PatchModule* GetModule(const void* ptr) { + auto upper_bound = modules.upper_bound(reinterpret_cast(ptr)); + if (upper_bound == modules.begin()) { + return nullptr; } + return &(std::prev(upper_bound)->second); +} - ZydisDecoder instr_decoder; +/// Returns a boolean indicating whether the instruction was patched, and the offset to advance past +/// whatever is at the current code pointer. +static std::pair TryPatch(u8* code, PatchModule* module) { ZydisDecodedInstruction instruction; ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT]; - ZydisDecoderInit(&instr_decoder, ZYDIS_MACHINE_MODE_LONG_64, ZYDIS_STACK_WIDTH_64); + const auto status = Common::Decoder::Instance()->decodeInstruction(instruction, operands, code, + module->end - code); + if (!ZYAN_SUCCESS(status)) { + return std::make_pair(false, 1); + } + + if (Patches.contains(instruction.mnemonic)) { + const auto& patch_info = Patches.at(instruction.mnemonic); + bool needs_trampoline = patch_info.trampoline; + if (patch_info.filter(operands)) { + auto& patch_gen = module->patch_gen; + + if (needs_trampoline && instruction.length < 5) { + // Trampoline is needed but instruction is too short to patch. + // Return false and length to fall back to the illegal instruction handler, + // or to signal to AOT compilation that this instruction should be skipped and + // handled at runtime. + return std::make_pair(false, instruction.length); + } - u8* code = reinterpret_cast(segment_addr); - u8* end = code + segment_size; - while (code < end) { - ZyanStatus status = - ZydisDecoderDecodeFull(&instr_decoder, code, end - code, &instruction, operands); - if (!ZYAN_SUCCESS(status)) { - code++; - continue; + // Reset state and move to current code position. + patch_gen.reset(); + patch_gen.setSize(code - patch_gen.getCode()); + + if (needs_trampoline) { + auto& trampoline_gen = module->trampoline_gen; + const auto trampoline_ptr = trampoline_gen.getCurr(); + + patch_info.generator(operands, trampoline_gen); + + // Return to the following instruction at the end of the trampoline. + trampoline_gen.jmp(code + instruction.length); + + // Replace instruction with near jump to the trampoline. + patch_gen.jmp(trampoline_ptr, Xbyak::CodeGenerator::LabelType::T_NEAR); + } else { + patch_info.generator(operands, patch_gen); + } + + const auto patch_size = patch_gen.getCurr() - code; + if (patch_size > 0) { + ASSERT_MSG(instruction.length >= patch_size, + "Instruction {} with length {} is too short to replace at: {}", + ZydisMnemonicGetString(instruction.mnemonic), instruction.length, + fmt::ptr(code)); + + // Fill remaining space with nops. + patch_gen.nop(instruction.length - patch_size); + + module->patched.insert(code); + LOG_DEBUG(Core, "Patched instruction '{}' at: {}", + ZydisMnemonicGetString(instruction.mnemonic), fmt::ptr(code)); + return std::make_pair(true, instruction.length); + } } + } + + return std::make_pair(false, instruction.length); +} + +#if defined(ARCH_X86_64) + +static bool TryExecuteIllegalInstruction(void* ctx, void* code_address) { + ZydisDecodedInstruction instruction; + ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT]; + const auto status = + Common::Decoder::Instance()->decodeInstruction(instruction, operands, code_address); + + switch (instruction.mnemonic) { + case ZYDIS_MNEMONIC_EXTRQ: { + bool immediateForm = operands[1].type == ZYDIS_OPERAND_TYPE_IMMEDIATE && + operands[2].type == ZYDIS_OPERAND_TYPE_IMMEDIATE; + if (immediateForm) { + LOG_ERROR(Core, "EXTRQ immediate form should have been patched at code address: {}", + fmt::ptr(code_address)); + return false; + } else { + ASSERT_MSG(operands[0].type == ZYDIS_OPERAND_TYPE_REGISTER && + operands[1].type == ZYDIS_OPERAND_TYPE_REGISTER && + operands[0].reg.value >= ZYDIS_REGISTER_XMM0 && + operands[0].reg.value <= ZYDIS_REGISTER_XMM15 && + operands[1].reg.value >= ZYDIS_REGISTER_XMM0 && + operands[1].reg.value <= ZYDIS_REGISTER_XMM15, + "Unexpected operand types for EXTRQ instruction"); - if (Patches.contains(instruction.mnemonic)) { - auto patch_info = Patches.at(instruction.mnemonic); - if (patch_info.filter(operands)) { - auto patch_gen = Xbyak::CodeGenerator(instruction.length, code); + const auto dstIndex = operands[0].reg.value - ZYDIS_REGISTER_XMM0; + const auto srcIndex = operands[1].reg.value - ZYDIS_REGISTER_XMM0; - if (patch_info.trampoline) { - const auto trampoline_ptr = c.getCurr(); + const auto dst = Common::GetXmmPointer(ctx, dstIndex); + const auto src = Common::GetXmmPointer(ctx, srcIndex); - patch_info.generator(operands, c); + u64 lowQWordSrc; + memcpy(&lowQWordSrc, src, sizeof(lowQWordSrc)); - // Return to the following instruction at the end of the trampoline. - c.jmp(code + instruction.length); + u64 lowQWordDst; + memcpy(&lowQWordDst, dst, sizeof(lowQWordDst)); - // Replace instruction with near jump to the trampoline. - patch_gen.jmp(trampoline_ptr, Xbyak::CodeGenerator::LabelType::T_NEAR); - } else { - patch_info.generator(operands, patch_gen); - } + u64 mask = lowQWordSrc & 0x3F; + mask = (1ULL << mask) - 1; - const auto patch_size = patch_gen.getCurr() - code; - if (patch_size > 0) { - ASSERT_MSG(instruction.length >= patch_size, - "Instruction {} with length {} is too short to replace at: {}", - ZydisMnemonicGetString(instruction.mnemonic), instruction.length, - fmt::ptr(code)); + u64 shift = (lowQWordSrc >> 8) & 0x3F; - // Fill remaining space with nops. - patch_gen.nop(instruction.length - patch_size); + lowQWordDst >>= shift; + lowQWordDst &= mask; - LOG_DEBUG(Core, "Patched instruction '{}' at: {}", - ZydisMnemonicGetString(instruction.mnemonic), fmt::ptr(code)); - } - } + memcpy(dst, &lowQWordDst, sizeof(lowQWordDst)); + + Common::IncrementRip(ctx, instruction.length); + + return true; } + break; + } + default: { + LOG_ERROR(Core, "Unhandled illegal instruction at code address {}: {}", + fmt::ptr(code_address), ZydisMnemonicGetString(instruction.mnemonic)); + return false; + } + } + + UNREACHABLE(); +} +#elif defined(ARCH_ARM64) +// These functions shouldn't be needed for ARM as it will use a JIT so there's no need to patch +// instructions. +static bool TryExecuteIllegalInstruction(void*, void*) { + return false; +} +#else +#error "Unsupported architecture" +#endif + +static bool TryPatchJit(void* code_address) { + auto* code = static_cast(code_address); + auto* module = GetModule(code); + if (module == nullptr) { + return false; + } + + std::unique_lock lock{module->mutex}; + + // Return early if already patched, in case multiple threads signaled at the same time. + if (std::ranges::find(module->patched, code) != module->patched.end()) { + return true; + } + + return TryPatch(code, module).first; +} + +static void TryPatchAot(void* code_address, u64 code_size) { + auto* code = static_cast(code_address); + auto* module = GetModule(code); + if (module == nullptr) { + return; + } + + std::unique_lock lock{module->mutex}; - code += instruction.length; + const auto* end = code + code_size; + while (code < end) { + code += TryPatch(code, module).second; + } +} + +static bool PatchesAccessViolationHandler(void* context, void* /* fault_address */) { + return TryPatchJit(Common::GetRip(context)); +} + +static bool PatchesIllegalInstructionHandler(void* context) { + void* code_address = Common::GetRip(context); + if (!TryPatchJit(code_address)) { + return TryExecuteIllegalInstruction(context, code_address); + } + return true; +} + +static void PatchesInit() { + if (!Patches.empty()) { + auto* signals = Signals::Instance(); + // Should be called last. + constexpr auto priority = std::numeric_limits::max(); + signals->RegisterAccessViolationHandler(PatchesAccessViolationHandler, priority); + signals->RegisterIllegalInstructionHandler(PatchesIllegalInstructionHandler, priority); } } +void RegisterPatchModule(void* module_ptr, u64 module_size, void* trampoline_area_ptr, + u64 trampoline_area_size) { + std::call_once(init_flag, PatchesInit); + + const auto module_addr = reinterpret_cast(module_ptr); + modules.emplace(std::piecewise_construct, std::forward_as_tuple(module_addr), + std::forward_as_tuple(static_cast(module_ptr), module_size, + static_cast(trampoline_area_ptr), + trampoline_area_size)); +} + +void PrePatchInstructions(u64 segment_addr, u64 segment_size) { +#if defined(__APPLE__) + // HACK: For some reason patching in the signal handler at the start of a page does not work + // under Rosetta 2. Patch any instructions at the start of a page ahead of time. + if (!Patches.empty()) { + auto* code_page = reinterpret_cast(Common::AlignUp(segment_addr, 0x1000)); + const auto* end_page = code_page + Common::AlignUp(segment_size, 0x1000); + while (code_page < end_page) { + TryPatchJit(code_page); + code_page += 0x1000; + } + } +#elif !defined(_WIN32) + // Linux and others have an FS segment pointing to valid memory, so continue to do full + // ahead-of-time patching for now until a better solution is worked out. + if (!Patches.empty()) { + TryPatchAot(reinterpret_cast(segment_addr), segment_size); + } +#endif +} + } // namespace Core diff --git a/src/core/cpu_patches.h b/src/core/cpu_patches.h index 9126074ed1..f9f7fe6460 100644 --- a/src/core/cpu_patches.h +++ b/src/core/cpu_patches.h @@ -3,10 +3,6 @@ #pragma once -namespace Xbyak { -class CodeGenerator; -} - namespace Core { /// Initializes a stack for the current thread for use by patch implementations. @@ -15,7 +11,11 @@ void InitializeThreadPatchStack(); /// Cleans up the patch stack for the current thread. void CleanupThreadPatchStack(); -/// Patches CPU instructions that cannot run as-is on the host. -void PatchInstructions(u64 segment_addr, u64 segment_size, Xbyak::CodeGenerator& c); +/// Registers a module for patching, providing an area to generate trampoline code. +void RegisterPatchModule(void* module_ptr, u64 module_size, void* trampoline_area_ptr, + u64 trampoline_area_size); + +/// Applies CPU patches that need to be done before beginning executions. +void PrePatchInstructions(u64 segment_addr, u64 segment_size); } // namespace Core diff --git a/src/core/file_format/psf.cpp b/src/core/file_format/psf.cpp index 3d076acdce..1df5d430ee 100644 --- a/src/core/file_format/psf.cpp +++ b/src/core/file_format/psf.cpp @@ -2,61 +2,275 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include + +#include "common/assert.h" #include "common/io_file.h" +#include "common/logging/log.h" #include "core/file_format/psf.h" -PSF::PSF() = default; - -PSF::~PSF() = default; +static const std::unordered_map psf_known_max_sizes = { + {"ACCOUNT_ID", 8}, {"CATEGORY", 4}, {"DETAIL", 1024}, {"FORMAT", 4}, + {"MAINTITLE", 128}, {"PARAMS", 1024}, {"SAVEDATA_BLOCKS", 8}, {"SAVEDATA_DIRECTORY", 32}, + {"SUBTITLE", 128}, {"TITLE_ID", 12}, +}; +static inline u32 get_max_size(std::string_view key, u32 default_value) { + if (const auto& v = psf_known_max_sizes.find(key); v != psf_known_max_sizes.end()) { + return v->second; + } + return default_value; +} -bool PSF::open(const std::string& filepath, const std::vector& psfBuffer) { - if (!psfBuffer.empty()) { - psf.resize(psfBuffer.size()); - psf = psfBuffer; - } else { - Common::FS::IOFile file(filepath, Common::FS::FileAccessMode::Read); - if (!file.IsOpen()) { - return false; - } +bool PSF::Open(const std::filesystem::path& filepath) { + if (std::filesystem::exists(filepath)) { + last_write = std::filesystem::last_write_time(filepath); + } - const u64 psfSize = file.GetSize(); - psf.resize(psfSize); - file.Seek(0); - file.Read(psf); - file.Close(); + Common::FS::IOFile file(filepath, Common::FS::FileAccessMode::Read); + if (!file.IsOpen()) { + return false; } + const u64 psfSize = file.GetSize(); + std::vector psf(psfSize); + file.Seek(0); + file.Read(psf); + file.Close(); + return Open(psf); +} + +bool PSF::Open(const std::vector& psf_buffer) { + const u8* psf_data = psf_buffer.data(); + + entry_list.clear(); + map_binaries.clear(); + map_strings.clear(); + map_integers.clear(); + // Parse file contents - PSFHeader header; - std::memcpy(&header, psf.data(), sizeof(header)); + PSFHeader header{}; + std::memcpy(&header, psf_data, sizeof(header)); + + if (header.magic != PSF_MAGIC) { + LOG_ERROR(Core, "Invalid PSF magic number"); + return false; + } + if (header.version != PSF_VERSION_1_1 && header.version != PSF_VERSION_1_0) { + LOG_ERROR(Core, "Unsupported PSF version: 0x{:08x}", header.version); + return false; + } + for (u32 i = 0; i < header.index_table_entries; i++) { - PSFEntry entry; - std::memcpy(&entry, &psf[sizeof(PSFHeader) + i * sizeof(PSFEntry)], sizeof(entry)); + PSFRawEntry raw_entry{}; + std::memcpy(&raw_entry, psf_data + sizeof(PSFHeader) + i * sizeof(PSFRawEntry), + sizeof(raw_entry)); - const std::string key = (char*)&psf[header.key_table_offset + entry.key_offset]; - if (entry.param_fmt == PSFEntry::Fmt::TextRaw || - entry.param_fmt == PSFEntry::Fmt::TextNormal) { - map_strings[key] = (char*)&psf[header.data_table_offset + entry.data_offset]; - } - if (entry.param_fmt == PSFEntry::Fmt::Integer) { - u32 value; - std::memcpy(&value, &psf[header.data_table_offset + entry.data_offset], sizeof(value)); - map_integers[key] = value; + Entry& entry = entry_list.emplace_back(); + entry.key = std::string{(char*)(psf_data + header.key_table_offset + raw_entry.key_offset)}; + entry.param_fmt = static_cast(raw_entry.param_fmt.Raw()); + entry.max_len = raw_entry.param_max_len; + + const u8* data = psf_data + header.data_table_offset + raw_entry.data_offset; + + switch (entry.param_fmt) { + case PSFEntryFmt::Binary: { + std::vector value(raw_entry.param_len); + std::memcpy(value.data(), data, raw_entry.param_len); + map_binaries.emplace(i, std::move(value)); + } break; + case PSFEntryFmt::Text: { + std::string c_str{reinterpret_cast(data)}; + map_strings.emplace(i, std::move(c_str)); + } break; + case PSFEntryFmt::Integer: { + ASSERT_MSG(raw_entry.param_len == sizeof(s32), "PSF integer entry size mismatch"); + s32 integer = *(s32*)data; + map_integers.emplace(i, integer); + } break; + default: + UNREACHABLE_MSG("Unknown PSF entry format"); } } return true; } -std::string PSF::GetString(const std::string& key) { - if (map_strings.find(key) != map_strings.end()) { - return map_strings.at(key); +bool PSF::Encode(const std::filesystem::path& filepath) const { + Common::FS::IOFile file(filepath, Common::FS::FileAccessMode::Write); + if (!file.IsOpen()) { + return false; } - return ""; + + last_write = std::filesystem::file_time_type::clock::now(); + + const auto psf_buffer = Encode(); + return file.Write(psf_buffer) == psf_buffer.size(); +} + +std::vector PSF::Encode() const { + std::vector psf_buffer; + Encode(psf_buffer); + return psf_buffer; } -u32 PSF::GetInteger(const std::string& key) { - if (map_integers.find(key) != map_integers.end()) { - return map_integers.at(key); +void PSF::Encode(std::vector& psf_buffer) const { + psf_buffer.resize(sizeof(PSFHeader) + sizeof(PSFRawEntry) * entry_list.size()); + + { + auto& header = *(PSFHeader*)psf_buffer.data(); + header.magic = PSF_MAGIC; + header.version = PSF_VERSION_1_1; + header.index_table_entries = entry_list.size(); + } + + const size_t key_table_offset = psf_buffer.size(); + ((PSFHeader*)psf_buffer.data())->key_table_offset = key_table_offset; + for (size_t i = 0; i < entry_list.size(); i++) { + auto& raw_entry = ((PSFRawEntry*)(psf_buffer.data() + sizeof(PSFHeader)))[i]; + const Entry& entry = entry_list[i]; + raw_entry.key_offset = psf_buffer.size() - key_table_offset; + raw_entry.param_fmt.FromRaw(static_cast(entry.param_fmt)); + raw_entry.param_max_len = entry.max_len; + std::ranges::copy(entry.key, std::back_inserter(psf_buffer)); + psf_buffer.push_back(0); // NULL terminator } - return -1; + + const size_t data_table_offset = psf_buffer.size(); + ((PSFHeader*)psf_buffer.data())->data_table_offset = data_table_offset; + for (size_t i = 0; i < entry_list.size(); i++) { + if (psf_buffer.size() % 4 != 0) { + std::ranges::fill_n(std::back_inserter(psf_buffer), 4 - psf_buffer.size() % 4, 0); + } + auto& raw_entry = ((PSFRawEntry*)(psf_buffer.data() + sizeof(PSFHeader)))[i]; + const Entry& entry = entry_list[i]; + raw_entry.data_offset = psf_buffer.size() - data_table_offset; + + s32 additional_padding = s32(raw_entry.param_max_len); + + switch (entry.param_fmt) { + case PSFEntryFmt::Binary: { + const auto& value = map_binaries.at(i); + raw_entry.param_len = value.size(); + additional_padding -= s32(raw_entry.param_len); + std::ranges::copy(value, std::back_inserter(psf_buffer)); + } break; + case PSFEntryFmt::Text: { + const auto& value = map_strings.at(i); + raw_entry.param_len = value.size() + 1; + additional_padding -= s32(raw_entry.param_len); + std::ranges::copy(value, std::back_inserter(psf_buffer)); + psf_buffer.push_back(0); // NULL terminator + } break; + case PSFEntryFmt::Integer: { + const auto& value = map_integers.at(i); + raw_entry.param_len = sizeof(s32); + additional_padding -= s32(raw_entry.param_len); + const auto value_bytes = reinterpret_cast(&value); + std::ranges::copy(value_bytes, value_bytes + sizeof(s32), + std::back_inserter(psf_buffer)); + } break; + default: + UNREACHABLE_MSG("Unknown PSF entry format"); + } + ASSERT_MSG(additional_padding >= 0, "PSF entry max size mismatch"); + std::ranges::fill_n(std::back_inserter(psf_buffer), additional_padding, 0); + } +} + +std::optional> PSF::GetBinary(std::string_view key) const { + const auto& [it, index] = FindEntry(key); + if (it == entry_list.end()) { + return {}; + } + ASSERT(it->param_fmt == PSFEntryFmt::Binary); + return std::span{map_binaries.at(index)}; +} + +std::optional PSF::GetString(std::string_view key) const { + const auto& [it, index] = FindEntry(key); + if (it == entry_list.end()) { + return {}; + } + ASSERT(it->param_fmt == PSFEntryFmt::Text); + return std::string_view{map_strings.at(index)}; +} + +std::optional PSF::GetInteger(std::string_view key) const { + const auto& [it, index] = FindEntry(key); + if (it == entry_list.end()) { + return {}; + } + ASSERT(it->param_fmt == PSFEntryFmt::Integer); + return map_integers.at(index); +} + +void PSF::AddBinary(std::string key, std::vector value, bool update) { + auto [it, index] = FindEntry(key); + bool exist = it != entry_list.end(); + if (exist && !update) { + LOG_ERROR(Core, "PSF: Tried to add binary key that already exists: {}", key); + return; + } + if (exist) { + ASSERT_MSG(it->param_fmt == PSFEntryFmt::Binary, "PSF: Change format is not supported"); + it->max_len = get_max_size(key, value.size()); + map_binaries.at(index) = std::move(value); + return; + } + Entry& entry = entry_list.emplace_back(); + entry.max_len = get_max_size(key, value.size()); + entry.key = std::move(key); + entry.param_fmt = PSFEntryFmt::Binary; + map_binaries.emplace(entry_list.size() - 1, std::move(value)); +} + +void PSF::AddString(std::string key, std::string value, bool update) { + auto [it, index] = FindEntry(key); + bool exist = it != entry_list.end(); + if (exist && !update) { + LOG_ERROR(Core, "PSF: Tried to add string key that already exists: {}", key); + return; + } + if (exist) { + ASSERT_MSG(it->param_fmt == PSFEntryFmt::Text, "PSF: Change format is not supported"); + it->max_len = get_max_size(key, value.size() + 1); + map_strings.at(index) = std::move(value); + return; + } + Entry& entry = entry_list.emplace_back(); + entry.max_len = get_max_size(key, value.size() + 1); + entry.key = std::move(key); + entry.param_fmt = PSFEntryFmt::Text; + map_strings.emplace(entry_list.size() - 1, std::move(value)); +} + +void PSF::AddInteger(std::string key, s32 value, bool update) { + auto [it, index] = FindEntry(key); + bool exist = it != entry_list.end(); + if (exist && !update) { + LOG_ERROR(Core, "PSF: Tried to add integer key that already exists: {}", key); + return; + } + if (exist) { + ASSERT_MSG(it->param_fmt == PSFEntryFmt::Integer, "PSF: Change format is not supported"); + it->max_len = sizeof(s32); + map_integers.at(index) = value; + return; + } + Entry& entry = entry_list.emplace_back(); + entry.key = std::move(key); + entry.param_fmt = PSFEntryFmt::Integer; + entry.max_len = sizeof(s32); + map_integers.emplace(entry_list.size() - 1, value); +} + +std::pair::iterator, size_t> PSF::FindEntry(std::string_view key) { + auto entry = + std::ranges::find_if(entry_list, [&](const auto& entry) { return entry.key == key; }); + return {entry, std::distance(entry_list.begin(), entry)}; +} + +std::pair::const_iterator, size_t> PSF::FindEntry( + std::string_view key) const { + auto entry = + std::ranges::find_if(entry_list, [&](const auto& entry) { return entry.key == key; }); + return {entry, std::distance(entry_list.begin(), entry)}; } diff --git a/src/core/file_format/psf.h b/src/core/file_format/psf.h index 9a162b1d52..d25b79eece 100644 --- a/src/core/file_format/psf.h +++ b/src/core/file_format/psf.h @@ -3,11 +3,18 @@ #pragma once +#include +#include #include +#include #include #include #include "common/endian.h" +constexpr u32 PSF_MAGIC = 0x00505346; +constexpr u32 PSF_VERSION_1_1 = 0x00000101; +constexpr u32 PSF_VERSION_1_0 = 0x00000100; + struct PSFHeader { u32_be magic; u32_le version; @@ -15,34 +22,72 @@ struct PSFHeader { u32_le data_table_offset; u32_le index_table_entries; }; +static_assert(sizeof(PSFHeader) == 0x14); -struct PSFEntry { - enum Fmt : u16 { - TextRaw = 0x0400, // String in UTF-8 format and not NULL terminated - TextNormal = 0x0402, // String in UTF-8 format and NULL terminated - Integer = 0x0404, // Unsigned 32-bit integer - }; - +struct PSFRawEntry { u16_le key_offset; u16_be param_fmt; u32_le param_len; u32_le param_max_len; u32_le data_offset; }; +static_assert(sizeof(PSFRawEntry) == 0x10); + +enum class PSFEntryFmt : u16 { + Binary = 0x0004, // Binary data + Text = 0x0204, // String in UTF-8 format and NULL terminated + Integer = 0x0404, // Signed 32-bit integer +}; class PSF { + struct Entry { + std::string key; + PSFEntryFmt param_fmt; + u32 max_len; + }; + public: - PSF(); - ~PSF(); + PSF() = default; + ~PSF() = default; - bool open(const std::string& filepath, const std::vector& psfBuffer); + PSF(const PSF& other) = default; + PSF(PSF&& other) noexcept = default; + PSF& operator=(const PSF& other) = default; + PSF& operator=(PSF&& other) noexcept = default; - std::string GetString(const std::string& key); - u32 GetInteger(const std::string& key); + bool Open(const std::filesystem::path& filepath); + bool Open(const std::vector& psf_buffer); - std::unordered_map map_strings; - std::unordered_map map_integers; + [[nodiscard]] std::vector Encode() const; + void Encode(std::vector& buf) const; + bool Encode(const std::filesystem::path& filepath) const; + + std::optional> GetBinary(std::string_view key) const; + std::optional GetString(std::string_view key) const; + std::optional GetInteger(std::string_view key) const; + + void AddBinary(std::string key, std::vector value, bool update = false); + void AddString(std::string key, std::string value, bool update = false); + void AddInteger(std::string key, s32 value, bool update = false); + + [[nodiscard]] std::filesystem::file_time_type GetLastWrite() const { + return last_write; + } + + [[nodiscard]] const std::vector& GetEntries() const { + return entry_list; + } private: - std::vector psf; + mutable std::filesystem::file_time_type last_write; + + std::vector entry_list; + + std::unordered_map> map_binaries; + std::unordered_map map_strings; + std::unordered_map map_integers; + + [[nodiscard]] std::pair::iterator, size_t> FindEntry(std::string_view key); + [[nodiscard]] std::pair::const_iterator, size_t> FindEntry( + std::string_view key) const; }; diff --git a/src/core/file_format/trp.cpp b/src/core/file_format/trp.cpp index f122709e4b..86865fe63b 100644 --- a/src/core/file_format/trp.cpp +++ b/src/core/file_format/trp.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include "common/path_util.h" #include "trp.h" TRP::TRP() = default; @@ -48,8 +49,9 @@ bool TRP::Extract(const std::filesystem::path& trophyPath) { return false; s64 seekPos = sizeof(TrpHeader); - std::filesystem::path trpFilesPath(std::filesystem::current_path() / "user/game_data" / - title / "TrophyFiles" / it.path().stem()); + std::filesystem::path trpFilesPath( + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / title / "TrophyFiles" / + it.path().stem()); std::filesystem::create_directories(trpFilesPath / "Icons"); std::filesystem::create_directory(trpFilesPath / "Xml"); diff --git a/src/core/file_sys/fs.cpp b/src/core/file_sys/fs.cpp index 199e42a046..3b060dd832 100644 --- a/src/core/file_sys/fs.cpp +++ b/src/core/file_sys/fs.cpp @@ -9,12 +9,14 @@ namespace Core::FileSys { constexpr int RESERVED_HANDLES = 3; // First 3 handles are stdin,stdout,stderr -void MntPoints::Mount(const std::filesystem::path& host_folder, const std::string& guest_folder) { +void MntPoints::Mount(const std::filesystem::path& host_folder, const std::string& guest_folder, + bool read_only) { std::scoped_lock lock{m_mutex}; - m_mnt_pairs.emplace_back(host_folder, guest_folder); + m_mnt_pairs.emplace_back(host_folder, guest_folder, read_only); } void MntPoints::Unmount(const std::filesystem::path& host_folder, const std::string& guest_folder) { + std::scoped_lock lock{m_mutex}; auto it = std::remove_if(m_mnt_pairs.begin(), m_mnt_pairs.end(), [&](const MntPair& pair) { return pair.mount == guest_folder; }); m_mnt_pairs.erase(it, m_mnt_pairs.end()); @@ -25,7 +27,7 @@ void MntPoints::UnmountAll() { m_mnt_pairs.clear(); } -std::filesystem::path MntPoints::GetHostPath(std::string_view guest_directory) { +std::filesystem::path MntPoints::GetHostPath(std::string_view guest_directory, bool* is_read_only) { // Evil games like Turok2 pass double slashes e.g /app0//game.kpf std::string corrected_path(guest_directory); size_t pos = corrected_path.find("//"); @@ -39,6 +41,10 @@ std::filesystem::path MntPoints::GetHostPath(std::string_view guest_directory) { return ""; } + if (is_read_only) { + *is_read_only = mount->read_only; + } + // Nothing to do if getting the mount itself. if (corrected_path == mount->mount) { return mount->host_path; diff --git a/src/core/file_sys/fs.h b/src/core/file_sys/fs.h index 2c55b0513c..eeaeaf7810 100644 --- a/src/core/file_sys/fs.h +++ b/src/core/file_sys/fs.h @@ -22,18 +22,22 @@ class MntPoints { struct MntPair { std::filesystem::path host_path; std::string mount; // e.g /app0/ + bool read_only; }; explicit MntPoints() = default; ~MntPoints() = default; - void Mount(const std::filesystem::path& host_folder, const std::string& guest_folder); + void Mount(const std::filesystem::path& host_folder, const std::string& guest_folder, + bool read_only = false); void Unmount(const std::filesystem::path& host_folder, const std::string& guest_folder); void UnmountAll(); - std::filesystem::path GetHostPath(std::string_view guest_directory); + std::filesystem::path GetHostPath(std::string_view guest_directory, + bool* is_read_only = nullptr); const MntPair* GetMount(const std::string& guest_path) { + std::scoped_lock lock{m_mutex}; const auto it = std::ranges::find_if( m_mnt_pairs, [&](const auto& mount) { return guest_path.starts_with(mount.mount); }); return it == m_mnt_pairs.end() ? nullptr : &*it; diff --git a/src/core/libraries/app_content/app_content.cpp b/src/core/libraries/app_content/app_content.cpp index 125d19684a..754343eef9 100644 --- a/src/core/libraries/app_content/app_content.cpp +++ b/src/core/libraries/app_content/app_content.cpp @@ -4,6 +4,7 @@ #include #include "app_content.h" +#include "common/assert.h" #include "common/io_file.h" #include "common/logging/log.h" #include "common/path_util.h" @@ -90,37 +91,32 @@ int PS4_SYSV_ABI sceAppContentAddcontUnmount() { return ORBIS_OK; } -int PS4_SYSV_ABI sceAppContentAppParamGetInt(OrbisAppContentAppParamId paramId, s32* value) { - if (value == nullptr) +int PS4_SYSV_ABI sceAppContentAppParamGetInt(OrbisAppContentAppParamId paramId, s32* out_value) { + if (out_value == nullptr) return ORBIS_APP_CONTENT_ERROR_PARAMETER; auto* param_sfo = Common::Singleton::Instance(); + std::optional value; switch (paramId) { case ORBIS_APP_CONTENT_APPPARAM_ID_SKU_FLAG: - *value = ORBIS_APP_CONTENT_APPPARAM_SKU_FLAG_FULL; + value = ORBIS_APP_CONTENT_APPPARAM_SKU_FLAG_FULL; break; case ORBIS_APP_CONTENT_APPPARAM_ID_USER_DEFINED_PARAM_1: - *value = param_sfo->GetInteger("USER_DEFINED_PARAM_1"); + value = param_sfo->GetInteger("USER_DEFINED_PARAM_1"); break; case ORBIS_APP_CONTENT_APPPARAM_ID_USER_DEFINED_PARAM_2: - *value = param_sfo->GetInteger("USER_DEFINED_PARAM_2"); + value = param_sfo->GetInteger("USER_DEFINED_PARAM_2"); break; case ORBIS_APP_CONTENT_APPPARAM_ID_USER_DEFINED_PARAM_3: - *value = param_sfo->GetInteger("USER_DEFINED_PARAM_3"); + value = param_sfo->GetInteger("USER_DEFINED_PARAM_3"); break; case ORBIS_APP_CONTENT_APPPARAM_ID_USER_DEFINED_PARAM_4: - *value = param_sfo->GetInteger("USER_DEFINED_PARAM_4"); + value = param_sfo->GetInteger("USER_DEFINED_PARAM_4"); break; default: - LOG_ERROR(Lib_AppContent, " paramId = {}, value = {} paramId is not valid", paramId, - *value); - return ORBIS_APP_CONTENT_ERROR_PARAMETER; - } - if (*value == -1) { - LOG_ERROR(Lib_AppContent, - " paramId = {}, value = {} value is not valid can't read param.sfo?", paramId, - *value); + LOG_ERROR(Lib_AppContent, " paramId = {} paramId is not valid", paramId); return ORBIS_APP_CONTENT_ERROR_PARAMETER; } + *out_value = value.value_or(0); return ORBIS_OK; } @@ -251,7 +247,11 @@ int PS4_SYSV_ABI sceAppContentInitialize(const OrbisAppContentInitParam* initPar auto* param_sfo = Common::Singleton::Instance(); const auto addons_dir = Common::FS::GetUserPath(Common::FS::PathType::AddonsDir); - title_id = param_sfo->GetString("TITLE_ID"); + if (const auto value = param_sfo->GetString("TITLE_ID"); value.has_value()) { + title_id = *value; + } else { + UNREACHABLE_MSG("Failed to get TITLE_ID"); + } auto addon_path = addons_dir / title_id; if (std::filesystem::exists(addon_path)) { for (const auto& entry : std::filesystem::directory_iterator(addon_path)) { diff --git a/src/core/libraries/audio3d/audio3d.cpp b/src/core/libraries/audio3d/audio3d.cpp new file mode 100644 index 0000000000..63815a0682 --- /dev/null +++ b/src/core/libraries/audio3d/audio3d.cpp @@ -0,0 +1,344 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "audio3d.h" +#include "audio3d_error.h" +#include "audio3d_impl.h" + +#include "common/logging/log.h" +#include "core/libraries/audio/audioout.h" +#include "core/libraries/error_codes.h" +#include "core/libraries/libs.h" + +namespace Libraries::Audio3d { + +// Audio3d + +int PS4_SYSV_ABI sceAudio3dInitialize(s64 iReserved) { + LOG_INFO(Lib_Audio3d, "iReserved = {}", iReserved); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dTerminate() { + // TODO: When not initialized or some ports still open, return ORBIS_AUDIO3D_ERROR_NOT_READY + LOG_INFO(Lib_Audio3d, "called"); + return ORBIS_OK; +} + +void PS4_SYSV_ABI sceAudio3dGetDefaultOpenParameters(OrbisAudio3dOpenParameters* sParameters) { + if (sParameters != NULL) { + sParameters->szSizeThis = sizeof(OrbisAudio3dOpenParameters); + sParameters->uiGranularity = 256; + sParameters->eRate = ORBIS_AUDIO3D_RATE_48000; + sParameters->uiMaxObjects = 512; + sParameters->uiQueueDepth = 2; + sParameters->eBufferMode = ORBIS_AUDIO3D_BUFFER_ADVANCE_AND_PUSH; + sParameters->uiNumBeds = 2; + } else { + LOG_ERROR(Lib_Audio3d, "Invalid OpenParameters ptr"); + } +} + +int PS4_SYSV_ABI sceAudio3dPortOpen(OrbisUserServiceUserId iUserId, + const OrbisAudio3dOpenParameters* pParameters, + OrbisAudio3dPortId* pId) { + LOG_INFO(Lib_Audio3d, "iUserId = {}", iUserId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortClose(OrbisAudio3dPortId uiPortId) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortSetAttribute(OrbisAudio3dPortId uiPortId, + OrbisAudio3dAttributeId uiAttributeId, + const void* pAttribute, size_t szAttribute) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiAttributeId = {}, szAttribute = {}", uiPortId, + uiAttributeId, szAttribute); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortFlush(OrbisAudio3dPortId uiPortId) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortAdvance(OrbisAudio3dPortId uiPortId) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortPush(OrbisAudio3dPortId uiPortId, OrbisAudio3dBlocking eBlocking) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortGetAttributesSupported(OrbisAudio3dPortId uiPortId, + OrbisAudio3dAttributeId* pCapabilities, + unsigned int* pNumCapabilities) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortGetQueueLevel(OrbisAudio3dPortId uiPortId, unsigned int* pQueueLevel, + unsigned int* pQueueAvailable) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dObjectReserve(OrbisAudio3dPortId uiPortId, OrbisAudio3dObjectId* pId) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dObjectUnreserve(OrbisAudio3dPortId uiPortId, + OrbisAudio3dObjectId uiObjectId) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiObjectId = {}", uiPortId, uiObjectId); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dObjectSetAttributes(OrbisAudio3dPortId uiPortId, + OrbisAudio3dObjectId uiObjectId, + size_t szNumAttributes, + const OrbisAudio3dAttribute* pAttributeArray) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiObjectId = {}, szNumAttributes = {}", uiPortId, + uiObjectId, szNumAttributes); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dBedWrite(OrbisAudio3dPortId uiPortId, unsigned int uiNumChannels, + OrbisAudio3dFormat eFormat, const void* pBuffer, + unsigned int uiNumSamples) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiNumChannels = {}, uiNumSamples = {}", uiPortId, + uiNumChannels, uiNumSamples); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dBedWrite2(OrbisAudio3dPortId uiPortId, unsigned int uiNumChannels, + OrbisAudio3dFormat eFormat, const void* pBuffer, + unsigned int uiNumSamples, + OrbisAudio3dOutputRoute eOutputRoute, bool bRestricted) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiNumChannels = {}, uiNumSamples = {}, bRestricted = {}", + uiPortId, uiNumChannels, uiNumSamples, bRestricted); + return ORBIS_OK; +} + +size_t PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMemorySize(unsigned int uiNumSpeakers, bool bIs3d) { + LOG_INFO(Lib_Audio3d, "uiNumSpeakers = {}, bIs3d = {}", uiNumSpeakers, bIs3d); + return ORBIS_OK; +} + +int PS4_SYSV_ABI +sceAudio3dCreateSpeakerArray(OrbisAudio3dSpeakerArrayHandle* pHandle, + const OrbisAudio3dSpeakerArrayParameters* pParameters) { + if (pHandle == nullptr || pParameters == nullptr) { + LOG_ERROR(Lib_Audio3d, "invalid SpeakerArray parameters"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + LOG_INFO(Lib_Audio3d, "called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dDeleteSpeakerArray(OrbisAudio3dSpeakerArrayHandle handle) { + if (handle == nullptr) { + LOG_ERROR(Lib_Audio3d, "invalid SpeakerArrayHandle"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + LOG_INFO(Lib_Audio3d, "called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMixCoefficients(OrbisAudio3dSpeakerArrayHandle handle, + OrbisAudio3dPosition pos, float fSpread, + float* pCoefficients, + unsigned int uiNumCoefficients) { + LOG_INFO(Lib_Audio3d, "fSpread = {}, uiNumCoefficients = {}", fSpread, uiNumCoefficients); + if (handle == nullptr) { + LOG_ERROR(Lib_Audio3d, "invalid SpeakerArrayHandle"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMixCoefficients2(OrbisAudio3dSpeakerArrayHandle handle, + OrbisAudio3dPosition pos, float fSpread, + float* pCoefficients, + unsigned int uiNumCoefficients, + bool bHeightAware, + float fDownmixSpreadRadius) { + LOG_INFO(Lib_Audio3d, + "fSpread = {}, uiNumCoefficients = {}, bHeightAware = {}, fDownmixSpreadRadius = {}", + fSpread, uiNumCoefficients, bHeightAware, fDownmixSpreadRadius); + if (handle == nullptr) { + LOG_ERROR(Lib_Audio3d, "invalid SpeakerArrayHandle"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dAudioOutOpen(OrbisAudio3dPortId uiPortId, OrbisUserServiceUserId userId, + s32 type, s32 index, u32 len, u32 freq, u32 param) { + LOG_INFO(Lib_Audio3d, + "uiPortId = {}, userId = {}, type = {}, index = {}, len = {}, freq = {}, param = {}", + uiPortId, userId, type, index, len, freq, param); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dAudioOutClose(s32 handle) { + LOG_INFO(Lib_Audio3d, "handle = {}", handle); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dAudioOutOutput(s32 handle, const void* ptr) { + LOG_INFO(Lib_Audio3d, "handle = {}", handle); + if (ptr == nullptr) { + LOG_ERROR(Lib_Audio3d, "invalid Output ptr"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dAudioOutOutputs(::Libraries::AudioOut::OrbisAudioOutOutputParam* param, + s32 num) { + LOG_INFO(Lib_Audio3d, "num = {}", num); + if (param == nullptr) { + LOG_ERROR(Lib_Audio3d, "invalid OutputParam ptr"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortCreate(unsigned int uiGranularity, OrbisAudio3dRate eRate, + s64 iReserved, OrbisAudio3dPortId* pId) { + LOG_INFO(Lib_Audio3d, "uiGranularity = {}, iReserved = {}", uiGranularity, iReserved); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortDestroy(OrbisAudio3dPortId uiPortId) { + LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); + return ORBIS_OK; +} + +// Audio3dPrivate + +const char* PS4_SYSV_ABI sceAudio3dStrError(int iErrorCode) { + LOG_ERROR(Lib_Audio3d, "(PRIVATE) called, iErrorCode = {}", iErrorCode); + return "NOT_IMPLEMENTED"; +} + +// Audio3dDebug + +int PS4_SYSV_ABI sceAudio3dPortQueryDebug() { + LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortQueryDebug called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortGetList() { + LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortGetList called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortGetParameters() { + LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortGetParameters called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortGetState() { + LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortGetState called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortFreeState() { + LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortFreeState called"); + return ORBIS_OK; +} + +// Unknown + +int PS4_SYSV_ABI sceAudio3dPortGetBufferLevel() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dPortGetStatus() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dReportRegisterHandler() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dReportUnregisterHandler() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceAudio3dSetGpuRenderer() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +void RegisterlibSceAudio3d(Core::Loader::SymbolsResolver* sym) { + LIB_FUNCTION("-R1DukFq7Dk", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dGetSpeakerArrayMixCoefficients); + LIB_FUNCTION("-Re+pCWvwjQ", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dGetSpeakerArrayMixCoefficients2); + LIB_FUNCTION("-pzYDZozm+M", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortQueryDebug); + LIB_FUNCTION("1HXxo-+1qCw", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dObjectUnreserve); + LIB_FUNCTION("4uyHN9q4ZeU", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dObjectSetAttributes); + LIB_FUNCTION("7NYEzJ9SJbM", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dAudioOutOutput); + LIB_FUNCTION("8hm6YdoQgwg", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dDeleteSpeakerArray); + LIB_FUNCTION("9ZA23Ia46Po", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortGetAttributesSupported); + LIB_FUNCTION("9tEwE0GV0qo", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dBedWrite); + LIB_FUNCTION("Aacl5qkRU6U", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dStrError); + LIB_FUNCTION("CKHlRW2E9dA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetState); + LIB_FUNCTION("HbxYY27lK6E", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dAudioOutOutputs); + LIB_FUNCTION("Im+jOoa5WAI", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dGetDefaultOpenParameters); + LIB_FUNCTION("Mw9mRQtWepY", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortDestroy); + LIB_FUNCTION("OyVqOeVNtSk", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortClose); + LIB_FUNCTION("QfNXBrKZeI0", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dReportRegisterHandler); + LIB_FUNCTION("QqgTQQdzEMY", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortGetBufferLevel); + LIB_FUNCTION("SEggctIeTcI", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetList); + LIB_FUNCTION("UHFOgVNz0kk", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortCreate); + LIB_FUNCTION("UmCvjSmuZIw", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dInitialize); + LIB_FUNCTION("VEVhZ9qd4ZY", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortPush); + LIB_FUNCTION("WW1TS2iz5yc", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dTerminate); + LIB_FUNCTION("XeDDK0xJWQA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortOpen); + LIB_FUNCTION("YaaDbDwKpFM", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortGetQueueLevel); + LIB_FUNCTION("Yq9bfUQ0uJg", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortSetAttribute); + LIB_FUNCTION("ZOGrxWLgQzE", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortFlush); + LIB_FUNCTION("flPcUaXVXcw", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortGetParameters); + LIB_FUNCTION("iRX6GJs9tvE", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetStatus); + LIB_FUNCTION("jO2tec4dJ2M", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dObjectReserve); + LIB_FUNCTION("kEqqyDkmgdI", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dGetSpeakerArrayMemorySize); + LIB_FUNCTION("lvWMW6vEqFU", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dCreateSpeakerArray); + LIB_FUNCTION("lw0qrdSjZt8", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortAdvance); + LIB_FUNCTION("pZlOm1aF3aA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutClose); + LIB_FUNCTION("psv2gbihC1A", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dReportUnregisterHandler); + LIB_FUNCTION("uJ0VhGcxCTQ", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortFreeState); + LIB_FUNCTION("ucEsi62soTo", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutOpen); + LIB_FUNCTION("xH4Q9UILL3o", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dBedWrite2); + LIB_FUNCTION("yEYXcbAGK14", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dSetGpuRenderer); +}; + +} // namespace Libraries::Audio3d \ No newline at end of file diff --git a/src/core/libraries/audio3d/audio3d.h b/src/core/libraries/audio3d/audio3d.h new file mode 100644 index 0000000000..6cbe2d02f6 --- /dev/null +++ b/src/core/libraries/audio3d/audio3d.h @@ -0,0 +1,134 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "common/types.h" + +#include + +namespace Core::Loader { +class SymbolsResolver; +} + +namespace Libraries::Audio3d { + +class Audio3d; + +typedef int OrbisUserServiceUserId; +typedef unsigned int OrbisAudio3dPortId; +typedef unsigned int OrbisAudio3dObjectId; +typedef unsigned int OrbisAudio3dAttributeId; + +enum OrbisAudio3dFormat { + ORBIS_AUDIO3D_FORMAT_S16 = 0, // s16 + ORBIS_AUDIO3D_FORMAT_FLOAT = 1 // f32 +}; + +enum OrbisAudio3dRate { ORBIS_AUDIO3D_RATE_48000 = 0 }; + +enum OrbisAudio3dBufferMode { + ORBIS_AUDIO3D_BUFFER_NO_ADVANCE = 0, + ORBIS_AUDIO3D_BUFFER_ADVANCE_NO_PUSH = 1, + ORBIS_AUDIO3D_BUFFER_ADVANCE_AND_PUSH = 2 +}; + +enum OrbisAudio3dBlocking { ORBIS_AUDIO3D_BLOCKING_ASYNC = 0, ORBIS_AUDIO3D_BLOCKING_SYNC = 1 }; + +enum OrbisAudio3dPassthrough { + ORBIS_AUDIO3D_PASSTHROUGH_NONE = 0, + ORBIS_AUDIO3D_PASSTHROUGH_LEFT = 1, + ORBIS_AUDIO3D_PASSTHROUGH_RIGHT = 2 +}; + +enum OrbisAudio3dOutputRoute { + ORBIS_AUDIO3D_OUTPUT_BOTH = 0, + ORBIS_AUDIO3D_OUTPUT_HMU_ONLY = 1, + ORBIS_AUDIO3D_OUTPUT_TV_ONLY = 2 +}; + +enum OrbisAudio3dAmbisonics { + ORBIS_AUDIO3D_AMBISONICS_NONE = ~0, + ORBIS_AUDIO3D_AMBISONICS_W = 0, + ORBIS_AUDIO3D_AMBISONICS_X = 1, + ORBIS_AUDIO3D_AMBISONICS_Y = 2, + ORBIS_AUDIO3D_AMBISONICS_Z = 3, + ORBIS_AUDIO3D_AMBISONICS_R = 4, + ORBIS_AUDIO3D_AMBISONICS_S = 5, + ORBIS_AUDIO3D_AMBISONICS_T = 6, + ORBIS_AUDIO3D_AMBISONICS_U = 7, + ORBIS_AUDIO3D_AMBISONICS_V = 8, + ORBIS_AUDIO3D_AMBISONICS_K = 9, + ORBIS_AUDIO3D_AMBISONICS_L = 10, + ORBIS_AUDIO3D_AMBISONICS_M = 11, + ORBIS_AUDIO3D_AMBISONICS_N = 12, + ORBIS_AUDIO3D_AMBISONICS_O = 13, + ORBIS_AUDIO3D_AMBISONICS_P = 14, + ORBIS_AUDIO3D_AMBISONICS_Q = 15 +}; + +static const OrbisAudio3dAttributeId s_sceAudio3dAttributePcm = 0x00000001; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributePriority = 0x00000002; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributePosition = 0x00000003; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeSpread = 0x00000004; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeGain = 0x00000005; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributePassthrough = 0x00000006; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeResetState = 0x00000007; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeApplicationSpecific = 0x00000008; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeAmbisonics = 0x00000009; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeRestricted = 0x0000000A; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeOutputRoute = 0x0000000B; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeLateReverbLevel = 0x00010001; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeDownmixSpreadRadius = 0x00010002; +static const OrbisAudio3dAttributeId s_sceAudio3dAttributeDownmixSpreadHeightAware = 0x00010003; + +struct OrbisAudio3dSpeakerArray; +using OrbisAudio3dSpeakerArrayHandle = OrbisAudio3dSpeakerArray*; // head + +struct OrbisAudio3dOpenParameters { + size_t szSizeThis; + unsigned int uiGranularity; + OrbisAudio3dRate eRate; + unsigned int uiMaxObjects; + unsigned int uiQueueDepth; + OrbisAudio3dBufferMode eBufferMode; + char padding[32]; + unsigned int uiNumBeds; +}; + +struct OrbisAudio3dAttribute { + OrbisAudio3dAttributeId uiAttributeId; + char padding[32]; + const void* pValue; + size_t szValue; +}; + +struct OrbisAudio3dPosition { + float fX; + float fY; + float fZ; +}; + +struct OrbisAudio3dPcm { + OrbisAudio3dFormat eFormat; + const void* pSampleBuffer; + unsigned int uiNumSamples; +}; + +struct OrbisAudio3dSpeakerArrayParameters { + OrbisAudio3dPosition* pSpeakerPosition; + unsigned int uiNumSpeakers; + bool bIs3d; + void* pBuffer; + size_t szSize; +}; + +struct OrbisAudio3dApplicationSpecific { + size_t szSizeThis; + u8 cApplicationSpecific[32]; +}; + +void PS4_SYSV_ABI sceAudio3dGetDefaultOpenParameters(OrbisAudio3dOpenParameters* sParameters); + +void RegisterlibSceAudio3d(Core::Loader::SymbolsResolver* sym); +} // namespace Libraries::Audio3d \ No newline at end of file diff --git a/src/core/libraries/audio3d/audio3d_error.h b/src/core/libraries/audio3d/audio3d_error.h new file mode 100644 index 0000000000..ff9d9749cc --- /dev/null +++ b/src/core/libraries/audio3d/audio3d_error.h @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +constexpr int ORBIS_AUDIO3D_ERROR_UNKNOWN = 0x80EA0001; +constexpr int ORBIS_AUDIO3D_ERROR_INVALID_PORT = 0x80EA0002; +constexpr int ORBIS_AUDIO3D_ERROR_INVALID_OBJECT = 0x80EA0003; +constexpr int ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER = 0x80EA0004; +constexpr int ORBIS_AUDIO3D_ERROR_OUT_OF_MEMORY = 0x80EA0005; +constexpr int ORBIS_AUDIO3D_ERROR_OUT_OF_RESOURCES = 0x80EA0006; +constexpr int ORBIS_AUDIO3D_ERROR_NOT_READY = 0x80EA0007; +constexpr int ORBIS_AUDIO3D_ERROR_NOT_SUPPORTED = 0x80EA0008; diff --git a/src/core/libraries/audio3d/audio3d_impl.cpp b/src/core/libraries/audio3d/audio3d_impl.cpp new file mode 100644 index 0000000000..c267c096fc --- /dev/null +++ b/src/core/libraries/audio3d/audio3d_impl.cpp @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "audio3d_error.h" +#include "audio3d_impl.h" + +#include "common/logging/log.h" +#include "core/libraries/error_codes.h" +#include "core/libraries/kernel/libkernel.h" + +using namespace Libraries::Kernel; + +namespace Libraries::Audio3d {} // namespace Libraries::Audio3d diff --git a/src/core/libraries/audio3d/audio3d_impl.h b/src/core/libraries/audio3d/audio3d_impl.h new file mode 100644 index 0000000000..4e6342b1b2 --- /dev/null +++ b/src/core/libraries/audio3d/audio3d_impl.h @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "audio3d.h" + +namespace Libraries::Audio3d { + +class Audio3d { +public: +private: + typedef unsigned int OrbisAudio3dPluginId; +}; + +} // namespace Libraries::Audio3d diff --git a/src/core/libraries/avplayer/avplayer.cpp b/src/core/libraries/avplayer/avplayer.cpp index 23e1e987a2..60d68c4f70 100644 --- a/src/core/libraries/avplayer/avplayer.cpp +++ b/src/core/libraries/avplayer/avplayer.cpp @@ -166,8 +166,8 @@ s32 PS4_SYSV_ABI sceAvPlayerInitEx(const SceAvPlayerInitDataEx* p_data, bool PS4_SYSV_ABI sceAvPlayerIsActive(SceAvPlayerHandle handle) { LOG_TRACE(Lib_AvPlayer, "called"); if (handle == nullptr) { - LOG_TRACE(Lib_AvPlayer, "returning ORBIS_AVPLAYER_ERROR_INVALID_PARAMS"); - return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS; + LOG_TRACE(Lib_AvPlayer, "returning false"); + return false; } const auto res = handle->IsActive(); LOG_TRACE(Lib_AvPlayer, "returning {}", res); diff --git a/src/core/libraries/avplayer/avplayer.h b/src/core/libraries/avplayer/avplayer.h index 360f06b654..98e9320703 100644 --- a/src/core/libraries/avplayer/avplayer.h +++ b/src/core/libraries/avplayer/avplayer.h @@ -161,7 +161,20 @@ struct SceAvPlayerFileReplacement { SceAvPlayerSizeFile size; }; -typedef void PS4_SYSV_ABI (*SceAvPlayerEventCallback)(void* p, s32 event, s32 src_id, void* data); +enum SceAvPlayerEvents { + SCE_AVPLAYER_STATE_STOP = 0x01, + SCE_AVPLAYER_STATE_READY = 0x02, + SCE_AVPLAYER_STATE_PLAY = 0x03, + SCE_AVPLAYER_STATE_PAUSE = 0x04, + SCE_AVPLAYER_STATE_BUFFERING = 0x05, + SCE_AVPLAYER_TIMED_TEXT_DELIVERY = 0x10, + SCE_AVPLAYER_WARNING_ID = 0x20, + SCE_AVPLAYER_ENCRYPTION = 0x30, + SCE_AVPLAYER_DRM_ERROR = 0x40 +}; + +typedef void PS4_SYSV_ABI (*SceAvPlayerEventCallback)(void* p, SceAvPlayerEvents event, s32 src_id, + void* data); struct SceAvPlayerEventReplacement { void* object_ptr; @@ -275,18 +288,6 @@ enum SceAvPlayerAvSyncMode { typedef int PS4_SYSV_ABI (*SceAvPlayerLogCallback)(void* p, const char* format, va_list args); -enum SceAvPlayerEvents { - SCE_AVPLAYER_STATE_STOP = 0x01, - SCE_AVPLAYER_STATE_READY = 0x02, - SCE_AVPLAYER_STATE_PLAY = 0x03, - SCE_AVPLAYER_STATE_PAUSE = 0x04, - SCE_AVPLAYER_STATE_BUFFERING = 0x05, - SCE_AVPLAYER_TIMED_TEXT_DELIVERY = 0x10, - SCE_AVPLAYER_WARNING_ID = 0x20, - SCE_AVPLAYER_ENCRYPTION = 0x30, - SCE_AVPLAYER_DRM_ERROR = 0x40 -}; - void RegisterlibSceAvPlayer(Core::Loader::SymbolsResolver* sym); } // namespace Libraries::AvPlayer diff --git a/src/core/libraries/avplayer/avplayer_impl.h b/src/core/libraries/avplayer/avplayer_impl.h index 09989d3991..b6ad940c9f 100644 --- a/src/core/libraries/avplayer/avplayer_impl.h +++ b/src/core/libraries/avplayer/avplayer_impl.h @@ -40,8 +40,6 @@ class AvPlayer { bool SetLooping(bool is_looping); private: - using ScePthreadMutex = Kernel::ScePthreadMutex; - // Memory Replacement static void* PS4_SYSV_ABI Allocate(void* handle, u32 alignment, u32 size); static void PS4_SYSV_ABI Deallocate(void* handle, void* memory); diff --git a/src/core/libraries/avplayer/avplayer_source.cpp b/src/core/libraries/avplayer/avplayer_source.cpp index 99ba2e8b65..fcae180e75 100644 --- a/src/core/libraries/avplayer/avplayer_source.cpp +++ b/src/core/libraries/avplayer/avplayer_source.cpp @@ -7,6 +7,8 @@ #include "common/alignment.h" #include "common/singleton.h" +#include "common/thread.h" + #include "core/file_sys/fs.h" #include "core/libraries/kernel/time_management.h" @@ -20,6 +22,17 @@ extern "C" { #include } +// The av_err2str macro in libavutil/error.h does not play nice with C++ +#ifdef av_err2str +#undef av_err2str +#include +av_always_inline std::string av_err2string(int errnum) { + char errbuf[AV_ERROR_MAX_STRING_SIZE]; + return av_make_error_string(errbuf, AV_ERROR_MAX_STRING_SIZE, errnum); +} +#define av_err2str(err) av_err2string(err).c_str() +#endif // av_err2str + namespace Libraries::AvPlayer { using namespace Kernel; @@ -421,6 +434,8 @@ void AvPlayerSource::ReleaseAVFormatContext(AVFormatContext* context) { void AvPlayerSource::DemuxerThread(std::stop_token stop) { using namespace std::chrono; + Common::SetCurrentThreadName("shadPS4:AvDemuxer"); + if (!m_audio_stream_index.has_value() && !m_video_stream_index.has_value()) { LOG_WARNING(Lib_AvPlayer, "Could not start DEMUXER thread. No streams enabled."); return; @@ -428,7 +443,8 @@ void AvPlayerSource::DemuxerThread(std::stop_token stop) { LOG_INFO(Lib_AvPlayer, "Demuxer Thread started"); while (!stop.stop_requested()) { - if (m_video_packets.Size() > 30 && m_audio_packets.Size() > 8) { + if (m_video_packets.Size() > 30 && + (!m_audio_stream_index.has_value() || m_audio_packets.Size() > 8)) { std::this_thread::sleep_for(milliseconds(5)); continue; } @@ -487,7 +503,7 @@ void AvPlayerSource::DemuxerThread(std::stop_token stop) { } m_state.OnEOF(); - LOG_INFO(Lib_AvPlayer, "Demuxer Thread exited normaly"); + LOG_INFO(Lib_AvPlayer, "Demuxer Thread exited normally"); } AvPlayerSource::AVFramePtr AvPlayerSource::ConvertVideoFrame(const AVFrame& frame) { @@ -586,6 +602,8 @@ Frame AvPlayerSource::PrepareVideoFrame(FrameBuffer buffer, const AVFrame& frame void AvPlayerSource::VideoDecoderThread(std::stop_token stop) { using namespace std::chrono; + Common::SetCurrentThreadName("shadPS4:AvVideoDecoder"); + LOG_INFO(Lib_AvPlayer, "Video Decoder Thread started"); while ((!m_is_eof || m_video_packets.Size() != 0) && !stop.stop_requested()) { if (!m_video_packets_cv.Wait(stop, @@ -641,7 +659,7 @@ void AvPlayerSource::VideoDecoderThread(std::stop_token stop) { } } - LOG_INFO(Lib_AvPlayer, "Video Decoder Thread exited normaly"); + LOG_INFO(Lib_AvPlayer, "Video Decoder Thread exited normally"); } AvPlayerSource::AVFramePtr AvPlayerSource::ConvertAudioFrame(const AVFrame& frame) { @@ -706,6 +724,8 @@ Frame AvPlayerSource::PrepareAudioFrame(FrameBuffer buffer, const AVFrame& frame void AvPlayerSource::AudioDecoderThread(std::stop_token stop) { using namespace std::chrono; + Common::SetCurrentThreadName("shadPS4:AvAudioDecoder"); + LOG_INFO(Lib_AvPlayer, "Audio Decoder Thread started"); while ((!m_is_eof || m_audio_packets.Size() != 0) && !stop.stop_requested()) { if (!m_audio_packets_cv.Wait(stop, @@ -761,7 +781,7 @@ void AvPlayerSource::AudioDecoderThread(std::stop_token stop) { } } - LOG_INFO(Lib_AvPlayer, "Audio Decoder Thread exited normaly"); + LOG_INFO(Lib_AvPlayer, "Audio Decoder Thread exited normally"); } bool AvPlayerSource::HasRunningThreads() const { diff --git a/src/core/libraries/avplayer/avplayer_state.cpp b/src/core/libraries/avplayer/avplayer_state.cpp index a512063f2b..c4d666fce9 100644 --- a/src/core/libraries/avplayer/avplayer_state.cpp +++ b/src/core/libraries/avplayer/avplayer_state.cpp @@ -5,8 +5,11 @@ #include "avplayer_source.h" #include "avplayer_state.h" +#include "common/singleton.h" +#include "common/thread.h" #include "core/libraries/error_codes.h" #include "core/libraries/kernel/time_management.h" +#include "core/linker.h" #include @@ -14,8 +17,8 @@ namespace Libraries::AvPlayer { using namespace Kernel; -void PS4_SYSV_ABI AvPlayerState::AutoPlayEventCallback(void* opaque, s32 event_id, s32 source_id, - void* event_data) { +void PS4_SYSV_ABI AvPlayerState::AutoPlayEventCallback(void* opaque, SceAvPlayerEvents event_id, + s32 source_id, void* event_data) { auto const self = reinterpret_cast(opaque); if (event_id == SCE_AVPLAYER_STATE_READY) { @@ -88,7 +91,8 @@ void PS4_SYSV_ABI AvPlayerState::AutoPlayEventCallback(void* opaque, s32 event_i const auto callback = self->m_event_replacement.event_callback; const auto ptr = self->m_event_replacement.object_ptr; if (callback != nullptr) { - callback(ptr, event_id, 0, event_data); + auto* linker = Common::Singleton::Instance(); + linker->ExecuteGuest(callback, ptr, event_id, 0, event_data); } } @@ -178,6 +182,7 @@ bool AvPlayerState::Start() { void AvPlayerState::AvControllerThread(std::stop_token stop) { using std::chrono::milliseconds; + Common::SetCurrentThreadName("shadPS4:AvController"); while (!stop.stop_requested()) { if (m_event_queue.Size() != 0) { @@ -362,7 +367,8 @@ void AvPlayerState::EmitEvent(SceAvPlayerEvents event_id, void* event_data) { const auto callback = m_init_data.event_replacement.event_callback; if (callback) { const auto ptr = m_init_data.event_replacement.object_ptr; - callback(ptr, event_id, 0, event_data); + auto* linker = Common::Singleton::Instance(); + linker->ExecuteGuest(callback, ptr, event_id, 0, event_data); } } diff --git a/src/core/libraries/avplayer/avplayer_state.h b/src/core/libraries/avplayer/avplayer_state.h index a5a3bd689c..f50d1bc1fb 100644 --- a/src/core/libraries/avplayer/avplayer_state.h +++ b/src/core/libraries/avplayer/avplayer_state.h @@ -38,12 +38,9 @@ class AvPlayerState : public AvPlayerStateCallback { bool SetLooping(bool is_looping); private: - using ScePthreadMutex = Kernel::ScePthreadMutex; - using ScePthread = Kernel::ScePthread; - // Event Replacement - static void PS4_SYSV_ABI AutoPlayEventCallback(void* handle, s32 event_id, s32 source_id, - void* event_data); + static void PS4_SYSV_ABI AutoPlayEventCallback(void* handle, SceAvPlayerEvents event_id, + s32 source_id, void* event_data); void OnWarning(u32 id) override; void OnError() override; diff --git a/src/core/libraries/error_codes.h b/src/core/libraries/error_codes.h index 094ea66031..b9896b6c31 100644 --- a/src/core/libraries/error_codes.h +++ b/src/core/libraries/error_codes.h @@ -440,11 +440,47 @@ constexpr int ORBIS_USER_SERVICE_ERROR_BUFFER_TOO_SHORT = 0x8096000A; constexpr int ORBIS_SYSTEM_SERVICE_ERROR_PARAMETER = 0x80A10003; // NpTrophy library +constexpr int ORBIS_NP_TROPHY_ERROR_UNKNOWN = 0x80551600; +constexpr int ORBIS_NP_TROPHY_ERROR_NOT_INITIALIZED = 0x80551601; +constexpr int ORBIS_NP_TROPHY_ERROR_ALREADY_INITIALIZED = 0x80551602; +constexpr int ORBIS_NP_TROPHY_ERROR_OUT_OF_MEMORY = 0x80551603; constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT = 0x80551604; +constexpr int ORBIS_NP_TROPHY_ERROR_INSUFFICIENT_BUFFER = 0x80551605; +constexpr int ORBIS_NP_TROPHY_ERROR_EXCEEDS_MAX = 0x80551606; +constexpr int ORBIS_NP_TROPHY_ERROR_ABORT = 0x80551607; constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE = 0x80551608; -constexpr int ORBIS_NP_TROPHY_ERROR_HANDLE_EXCEEDS_MAX = 0x80551624; +constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_CONTEXT = 0x80551609; +constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_TROPHY_ID = 0x8055160A; +constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_GROUP_ID = 0x8055160B; +constexpr int ORBIS_NP_TROPHY_ERROR_TROPHY_ALREADY_UNLOCKED = 0x8055160C; +constexpr int ORBIS_NP_TROPHY_ERROR_PLATINUM_CANNOT_UNLOCK = 0x8055160D; +constexpr int ORBIS_NP_TROPHY_ERROR_ACCOUNTID_NOT_MATCH = 0x8055160E; +constexpr int ORBIS_NP_TROPHY_ERROR_NOT_REGISTERED = 0x8055160F; +constexpr int ORBIS_NP_TROPHY_ERROR_ALREADY_REGISTERED = 0x80551610; +constexpr int ORBIS_NP_TROPHY_ERROR_BROKEN_DATA = 0x80551611; +constexpr int ORBIS_NP_TROPHY_ERROR_INSUFFICIENT_SPACE = 0x80551612; constexpr int ORBIS_NP_TROPHY_ERROR_CONTEXT_ALREADY_EXISTS = 0x80551613; -constexpr int ORBIS_NP_TROPHY_ERROR_CONTEXT_EXCEEDS_MAX = 0x80551622; +constexpr int ORBIS_NP_TROPHY_ERROR_ICON_FILE_NOT_FOUND = 0x80551614; +constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_TRP_FILE_FORMAT = 0x80551616; +constexpr int ORBIS_NP_TROPHY_ERROR_UNSUPPORTED_TRP_FILE = 0x80551617; +constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_TROPHY_CONF_FORMAT = 0x80551618; +constexpr int ORBIS_NP_TROPHY_ERROR_UNSUPPORTED_TROPHY_CONF = 0x80551619; +constexpr int ORBIS_NP_TROPHY_ERROR_TROPHY_NOT_UNLOCKED = 0x8055161A; +constexpr int ORBIS_NP_TROPHY_ERROR_USER_NOT_FOUND = 0x8055161C; +constexpr int ORBIS_NP_TROPHY_ERROR_USER_NOT_LOGGED_IN = 0x8055161D; +constexpr int ORBIS_NP_TROPHY_ERROR_CONTEXT_USER_LOGOUT = 0x8055161E; +constexpr int ORBIS_NP_TROPHY_ERROR_USE_TRP_FOR_DEVELOPMENT = 0x8055161F; +constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_NP_SERVICE_LABEL = 0x80551621; +constexpr int ORBIS_NP_TROPHY_ERROR_NOT_SUPPORTED = 0x80551622; +constexpr int ORBIS_NP_TROPHY_ERROR_CONTEXT_EXCEEDS_MAX = 0x80551623; +constexpr int ORBIS_NP_TROPHY_ERROR_HANDLE_EXCEEDS_MAX = 0x80551624; +constexpr int ORBIS_NP_TROPHY_ERROR_INVALID_USER_ID = 0x80551625; +constexpr int ORBIS_NP_TROPHY_ERROR_TITLE_CONF_NOT_INSTALLED = 0x80551626; +constexpr int ORBIS_NP_TROPHY_ERROR_BROKEN_TITLE_CONF = 0x80551627; +constexpr int ORBIS_NP_TROPHY_ERROR_INCONSISTENT_TITLE_CONF = 0x80551628; +constexpr int ORBIS_NP_TROPHY_ERROR_TITLE_BACKGROUND = 0x80551629; +constexpr int ORBIS_NP_TROPHY_ERROR_SCREENSHOT_DISABLED = 0x8055162B; +constexpr int ORBIS_NP_TROPHY_ERROR_SCREENSHOT_DISPLAY_BUFFER_NOT_IN_USE = 0x8055162D; // AvPlayer library constexpr int ORBIS_AVPLAYER_ERROR_INVALID_PARAMS = 0x806A0001; diff --git a/src/core/libraries/gnmdriver/gnmdriver.cpp b/src/core/libraries/gnmdriver/gnmdriver.cpp index 6b8b070b84..fd4c261e96 100644 --- a/src/core/libraries/gnmdriver/gnmdriver.cpp +++ b/src/core/libraries/gnmdriver/gnmdriver.cpp @@ -499,7 +499,7 @@ int PS4_SYSV_ABI sceGnmDestroyWorkloadStream() { } void PS4_SYSV_ABI sceGnmDingDong(u32 gnm_vqid, u32 next_offs_dw) { - LOG_INFO(Lib_GnmDriver, "vqid {}, offset_dw {}", gnm_vqid, next_offs_dw); + LOG_DEBUG(Lib_GnmDriver, "vqid {}, offset_dw {}", gnm_vqid, next_offs_dw); if (gnm_vqid == 0) { return; @@ -650,12 +650,12 @@ s32 PS4_SYSV_ABI sceGnmDrawIndexAuto(u32* cmdbuf, u32 size, u32 index_count, u32 } s32 PS4_SYSV_ABI sceGnmDrawIndexIndirect(u32* cmdbuf, u32 size, u32 data_offset, u32 shader_stage, - u32 vertex_sgpr_offset, u32 instance_vgpr_offset, + u32 vertex_sgpr_offset, u32 instance_sgpr_offset, u32 flags) { LOG_TRACE(Lib_GnmDriver, "called"); if (cmdbuf && (size == 9) && (shader_stage < ShaderStages::Max) && - (vertex_sgpr_offset < 0x10u) && (instance_vgpr_offset < 0x10u)) { + (vertex_sgpr_offset < 0x10u) && (instance_sgpr_offset < 0x10u)) { const auto predicate = flags & 1 ? PM4Predicate::PredEnable : PM4Predicate::PredDisable; cmdbuf = WriteHeader( @@ -665,7 +665,7 @@ s32 PS4_SYSV_ABI sceGnmDrawIndexIndirect(u32* cmdbuf, u32 size, u32 data_offset, cmdbuf[0] = data_offset; cmdbuf[1] = vertex_sgpr_offset == 0 ? 0 : (vertex_sgpr_offset & 0xffffu) + sgpr_offset; - cmdbuf[2] = instance_vgpr_offset == 0 ? 0 : (instance_vgpr_offset & 0xffffu) + sgpr_offset; + cmdbuf[2] = instance_sgpr_offset == 0 ? 0 : (instance_sgpr_offset & 0xffffu) + sgpr_offset; cmdbuf[3] = 0; cmdbuf += 4; @@ -707,11 +707,11 @@ s32 PS4_SYSV_ABI sceGnmDrawIndexOffset(u32* cmdbuf, u32 size, u32 index_offset, } s32 PS4_SYSV_ABI sceGnmDrawIndirect(u32* cmdbuf, u32 size, u32 data_offset, u32 shader_stage, - u32 vertex_sgpr_offset, u32 instance_vgpr_offset, u32 flags) { + u32 vertex_sgpr_offset, u32 instance_sgpr_offset, u32 flags) { LOG_TRACE(Lib_GnmDriver, "called"); if (cmdbuf && (size == 9) && (shader_stage < ShaderStages::Max) && - (vertex_sgpr_offset < 0x10u) && (instance_vgpr_offset < 0x10u)) { + (vertex_sgpr_offset < 0x10u) && (instance_sgpr_offset < 0x10u)) { const auto predicate = flags & 1 ? PM4Predicate::PredEnable : PM4Predicate::PredDisable; cmdbuf = WriteHeader(cmdbuf, 4, PM4ShaderType::ShaderGraphics, @@ -721,7 +721,7 @@ s32 PS4_SYSV_ABI sceGnmDrawIndirect(u32* cmdbuf, u32 size, u32 data_offset, u32 cmdbuf[0] = data_offset; cmdbuf[1] = vertex_sgpr_offset == 0 ? 0 : (vertex_sgpr_offset & 0xffffu) + sgpr_offset; - cmdbuf[2] = instance_vgpr_offset == 0 ? 0 : (instance_vgpr_offset & 0xffffu) + sgpr_offset; + cmdbuf[2] = instance_sgpr_offset == 0 ? 0 : (instance_sgpr_offset & 0xffffu) + sgpr_offset; cmdbuf[3] = 2; // auto index cmdbuf += 4; @@ -1272,8 +1272,12 @@ int PS4_SYSV_ABI sceGnmRequestMipStatsReportAndReset() { return ORBIS_OK; } -int PS4_SYSV_ABI sceGnmResetVgtControl() { - LOG_ERROR(Lib_GnmDriver, "(STUBBED) called"); +s32 PS4_SYSV_ABI sceGnmResetVgtControl(u32* cmdbuf, u32 size) { + LOG_TRACE(Lib_GnmDriver, "called"); + if (cmdbuf == nullptr || size != 3) { + return -1; + } + PM4CmdSetData::SetContextReg(cmdbuf, 0x2aau, 0xffu); // IA_MULTI_VGT_PARAM return ORBIS_OK; } @@ -2054,7 +2058,7 @@ s32 PS4_SYSV_ABI sceGnmSubmitAndFlipCommandBuffers(u32 count, u32* dcb_gpu_addrs u32* dcb_sizes_in_bytes, u32* ccb_gpu_addrs[], u32* ccb_sizes_in_bytes, u32 vo_handle, u32 buf_idx, u32 flip_mode, u32 flip_arg) { - LOG_INFO(Lib_GnmDriver, "called [buf = {}]", buf_idx); + LOG_DEBUG(Lib_GnmDriver, "called [buf = {}]", buf_idx); auto* cmdbuf = dcb_gpu_addrs[count - 1]; const auto size_dw = dcb_sizes_in_bytes[count - 1] / 4; @@ -2078,7 +2082,7 @@ int PS4_SYSV_ABI sceGnmSubmitAndFlipCommandBuffersForWorkload() { s32 PS4_SYSV_ABI sceGnmSubmitCommandBuffers(u32 count, const u32* dcb_gpu_addrs[], u32* dcb_sizes_in_bytes, const u32* ccb_gpu_addrs[], u32* ccb_sizes_in_bytes) { - LOG_INFO(Lib_GnmDriver, "called"); + LOG_DEBUG(Lib_GnmDriver, "called"); if (!dcb_gpu_addrs || !dcb_sizes_in_bytes) { LOG_ERROR(Lib_GnmDriver, "dcbGpuAddrs and dcbSizesInBytes must not be NULL"); @@ -2154,7 +2158,8 @@ int PS4_SYSV_ABI sceGnmSubmitCommandBuffersForWorkload() { } int PS4_SYSV_ABI sceGnmSubmitDone() { - LOG_INFO(Lib_GnmDriver, "called"); + LOG_DEBUG(Lib_GnmDriver, "called"); + WaitGpuIdle(); if (!liverpool->IsGpuIdle()) { submission_lock = true; } @@ -2346,9 +2351,9 @@ s32 PS4_SYSV_ABI sceGnmUpdateVsShader(u32* cmdbuf, u32 size, const u32* vs_regs, return ORBIS_OK; } -int PS4_SYSV_ABI sceGnmValidateCommandBuffers() { - LOG_ERROR(Lib_GnmDriver, "(STUBBED) called"); - return ORBIS_OK; +s32 PS4_SYSV_ABI sceGnmValidateCommandBuffers() { + LOG_TRACE(Lib_GnmDriver, "called"); + return ORBIS_GNM_ERROR_VALIDATION_NOT_ENABLED; // not available in retail FW; } int PS4_SYSV_ABI sceGnmValidateDisableDiagnostics() { @@ -2666,6 +2671,10 @@ void RegisterlibSceGnmDriver(Core::Loader::SymbolsResolver* sym) { sdk_version = 0; } + if (Config::copyGPUCmdBuffers()) { + liverpool->reserveCopyBufferSpace(); + } + Platform::IrqC::Instance()->Register(Platform::InterruptId::GpuIdle, ResetSubmissionLock, nullptr); diff --git a/src/core/libraries/gnmdriver/gnmdriver.h b/src/core/libraries/gnmdriver/gnmdriver.h index 84872297e9..55a70cbf30 100644 --- a/src/core/libraries/gnmdriver/gnmdriver.h +++ b/src/core/libraries/gnmdriver/gnmdriver.h @@ -45,7 +45,7 @@ s32 PS4_SYSV_ABI sceGnmDrawIndex(u32* cmdbuf, u32 size, u32 index_count, uintptr u32 flags, u32 type); s32 PS4_SYSV_ABI sceGnmDrawIndexAuto(u32* cmdbuf, u32 size, u32 index_count, u32 flags); s32 PS4_SYSV_ABI sceGnmDrawIndexIndirect(u32* cmdbuf, u32 size, u32 data_offset, u32 shader_stage, - u32 vertex_sgpr_offset, u32 instance_vgpr_offset, + u32 vertex_sgpr_offset, u32 instance_sgpr_offset, u32 flags); int PS4_SYSV_ABI sceGnmDrawIndexIndirectCountMulti(); int PS4_SYSV_ABI sceGnmDrawIndexIndirectMulti(); @@ -53,7 +53,7 @@ int PS4_SYSV_ABI sceGnmDrawIndexMultiInstanced(); s32 PS4_SYSV_ABI sceGnmDrawIndexOffset(u32* cmdbuf, u32 size, u32 index_offset, u32 index_count, u32 flags); s32 PS4_SYSV_ABI sceGnmDrawIndirect(u32* cmdbuf, u32 size, u32 data_offset, u32 shader_stage, - u32 vertex_sgpr_offset, u32 instance_vgpr_offset, u32 flags); + u32 vertex_sgpr_offset, u32 instance_sgpr_offset, u32 flags); int PS4_SYSV_ABI sceGnmDrawIndirectCountMulti(); int PS4_SYSV_ABI sceGnmDrawIndirectMulti(); u32 PS4_SYSV_ABI sceGnmDrawInitDefaultHardwareState(u32* cmdbuf, u32 size); @@ -134,7 +134,7 @@ s32 PS4_SYSV_ABI sceGnmRegisterResource(void* res_handle, void* owner_handle, co int PS4_SYSV_ABI sceGnmRequestFlipAndSubmitDone(); int PS4_SYSV_ABI sceGnmRequestFlipAndSubmitDoneForWorkload(); int PS4_SYSV_ABI sceGnmRequestMipStatsReportAndReset(); -int PS4_SYSV_ABI sceGnmResetVgtControl(); +s32 PS4_SYSV_ABI sceGnmResetVgtControl(u32* cmdbuf, u32 size); int PS4_SYSV_ABI sceGnmSdmaClose(); int PS4_SYSV_ABI sceGnmSdmaConstFill(); int PS4_SYSV_ABI sceGnmSdmaCopyLinear(); @@ -223,7 +223,7 @@ s32 PS4_SYSV_ABI sceGnmUpdatePsShader(u32* cmdbuf, u32 size, const u32* ps_regs) s32 PS4_SYSV_ABI sceGnmUpdatePsShader350(u32* cmdbuf, u32 size, const u32* ps_regs); s32 PS4_SYSV_ABI sceGnmUpdateVsShader(u32* cmdbuf, u32 size, const u32* vs_regs, u32 shader_modifier); -int PS4_SYSV_ABI sceGnmValidateCommandBuffers(); +s32 PS4_SYSV_ABI sceGnmValidateCommandBuffers(); int PS4_SYSV_ABI sceGnmValidateDisableDiagnostics(); int PS4_SYSV_ABI sceGnmValidateDisableDiagnostics2(); int PS4_SYSV_ABI sceGnmValidateDispatchCommandBuffers(); diff --git a/src/core/libraries/kernel/cpu_management.cpp b/src/core/libraries/kernel/cpu_management.cpp index 93dc60bd02..3bf609dfe6 100644 --- a/src/core/libraries/kernel/cpu_management.cpp +++ b/src/core/libraries/kernel/cpu_management.cpp @@ -8,7 +8,7 @@ namespace Libraries::Kernel { int PS4_SYSV_ABI sceKernelIsNeoMode() { - LOG_INFO(Kernel_Sce, "called"); + LOG_DEBUG(Kernel_Sce, "called"); return Config::isNeoMode(); } diff --git a/src/core/libraries/kernel/event_flag/event_flag.cpp b/src/core/libraries/kernel/event_flag/event_flag.cpp index 0fd0c3bb75..c85aa0d906 100644 --- a/src/core/libraries/kernel/event_flag/event_flag.cpp +++ b/src/core/libraries/kernel/event_flag/event_flag.cpp @@ -78,7 +78,7 @@ int PS4_SYSV_ABI sceKernelCloseEventFlag() { return ORBIS_OK; } int PS4_SYSV_ABI sceKernelClearEventFlag(OrbisKernelEventFlag ef, u64 bitPattern) { - LOG_INFO(Kernel_Event, "called"); + LOG_DEBUG(Kernel_Event, "called"); ef->Clear(bitPattern); return ORBIS_OK; } @@ -97,7 +97,7 @@ int PS4_SYSV_ABI sceKernelSetEventFlag(OrbisKernelEventFlag ef, u64 bitPattern) } int PS4_SYSV_ABI sceKernelPollEventFlag(OrbisKernelEventFlag ef, u64 bitPattern, u32 waitMode, u64* pResultPat) { - LOG_INFO(Kernel_Event, "called bitPattern = {:#x} waitMode = {:#x}", bitPattern, waitMode); + LOG_DEBUG(Kernel_Event, "called bitPattern = {:#x} waitMode = {:#x}", bitPattern, waitMode); if (ef == nullptr) { return ORBIS_KERNEL_ERROR_ESRCH; @@ -137,7 +137,7 @@ int PS4_SYSV_ABI sceKernelPollEventFlag(OrbisKernelEventFlag ef, u64 bitPattern, auto result = ef->Poll(bitPattern, wait, clear, pResultPat); - if (result != ORBIS_OK) { + if (result != ORBIS_OK && result != ORBIS_KERNEL_ERROR_EBUSY) { LOG_ERROR(Kernel_Event, "returned {}", result); } @@ -145,7 +145,7 @@ int PS4_SYSV_ABI sceKernelPollEventFlag(OrbisKernelEventFlag ef, u64 bitPattern, } int PS4_SYSV_ABI sceKernelWaitEventFlag(OrbisKernelEventFlag ef, u64 bitPattern, u32 waitMode, u64* pResultPat, OrbisKernelUseconds* pTimeout) { - LOG_INFO(Kernel_Event, "called bitPattern = {:#x} waitMode = {:#x}", bitPattern, waitMode); + LOG_DEBUG(Kernel_Event, "called bitPattern = {:#x} waitMode = {:#x}", bitPattern, waitMode); if (ef == nullptr) { return ORBIS_KERNEL_ERROR_ESRCH; } diff --git a/src/core/libraries/kernel/file_system.cpp b/src/core/libraries/kernel/file_system.cpp index f7f58df592..45ebb4be89 100644 --- a/src/core/libraries/kernel/file_system.cpp +++ b/src/core/libraries/kernel/file_system.cpp @@ -89,6 +89,8 @@ int PS4_SYSV_ABI sceKernelOpen(const char* path, int flags, u16 mode) { } // RW, then scekernelWrite is called and savedata is written just fine now. e = file->f.Open(file->m_host_name, Common::FS::FileAccessMode::ReadWrite); + } else if (write) { + e = file->f.Open(file->m_host_name, Common::FS::FileAccessMode::Write); } else { UNREACHABLE(); } @@ -150,7 +152,6 @@ int PS4_SYSV_ABI posix_close(int d) { return -1; } return result; - return ORBIS_OK; } size_t PS4_SYSV_ABI sceKernelWrite(int d, const void* buf, size_t nbytes) { @@ -180,11 +181,16 @@ int PS4_SYSV_ABI sceKernelUnlink(const char* path) { auto* h = Common::Singleton::Instance(); auto* mnt = Common::Singleton::Instance(); - const auto host_path = mnt->GetHostPath(path); + bool ro = false; + const auto host_path = mnt->GetHostPath(path, &ro); if (host_path.empty()) { return SCE_KERNEL_ERROR_EACCES; } + if (ro) { + return SCE_KERNEL_ERROR_EROFS; + } + if (std::filesystem::is_directory(host_path)) { return SCE_KERNEL_ERROR_EPERM; } @@ -271,11 +277,18 @@ int PS4_SYSV_ABI sceKernelMkdir(const char* path, u16 mode) { return SCE_KERNEL_ERROR_EINVAL; } auto* mnt = Common::Singleton::Instance(); - const auto dir_name = mnt->GetHostPath(path); + + bool ro = false; + const auto dir_name = mnt->GetHostPath(path, &ro); + if (std::filesystem::exists(dir_name)) { return SCE_KERNEL_ERROR_EEXIST; } + if (ro) { + return SCE_KERNEL_ERROR_EROFS; + } + // CUSA02456: path = /aotl after sceSaveDataMount(mode = 1) if (dir_name.empty() || !std::filesystem::create_directory(dir_name)) { return SCE_KERNEL_ERROR_EIO; @@ -300,7 +313,8 @@ int PS4_SYSV_ABI posix_mkdir(const char* path, u16 mode) { int PS4_SYSV_ABI sceKernelStat(const char* path, OrbisKernelStat* sb) { LOG_INFO(Kernel_Fs, "(PARTIAL) path = {}", path); auto* mnt = Common::Singleton::Instance(); - const auto path_name = mnt->GetHostPath(path); + bool ro = false; + const auto path_name = mnt->GetHostPath(path, &ro); std::memset(sb, 0, sizeof(OrbisKernelStat)); const bool is_dir = std::filesystem::is_directory(path_name); const bool is_file = std::filesystem::is_regular_file(path_name); @@ -320,6 +334,10 @@ int PS4_SYSV_ABI sceKernelStat(const char* path, OrbisKernelStat* sb) { sb->st_blocks = (sb->st_size + 511) / 512; // TODO incomplete } + if (ro) { + sb->st_mode &= ~0000555u; + } + return ORBIS_OK; } @@ -367,8 +385,17 @@ s64 PS4_SYSV_ABI sceKernelPread(int d, void* buf, size_t nbytes, s64 offset) { int PS4_SYSV_ABI sceKernelFStat(int fd, OrbisKernelStat* sb) { LOG_INFO(Kernel_Fs, "(PARTIAL) fd = {}", fd); + if (fd < 3) { + return ORBIS_KERNEL_ERROR_EPERM; + } + if (sb == nullptr) { + return ORBIS_KERNEL_ERROR_EFAULT; + } auto* h = Common::Singleton::Instance(); auto* file = h->GetFile(fd); + if (file == nullptr) { + return ORBIS_KERNEL_ERROR_EBADF; + } std::memset(sb, 0, sizeof(OrbisKernelStat)); if (file->is_directory) { @@ -421,15 +448,24 @@ int PS4_SYSV_ABI sceKernelFtruncate(int fd, s64 length) { } static int GetDents(int fd, char* buf, int nbytes, s64* basep) { - // TODO error codes - ASSERT(buf != nullptr); + if (fd < 3) { + return ORBIS_KERNEL_ERROR_EBADF; + } + + if (buf == nullptr) { + return ORBIS_KERNEL_ERROR_EFAULT; + } auto* h = Common::Singleton::Instance(); auto* file = h->GetFile(fd); - + if (file == nullptr) { + return ORBIS_KERNEL_ERROR_EBADF; + } if (file->dirents_index == file->dirents.size()) { return ORBIS_OK; } - + if (!file->is_directory || nbytes < 512 || file->dirents_index > file->dirents.size()) { + return ORBIS_KERNEL_ERROR_EINVAL; + } const auto& entry = file->dirents.at(file->dirents_index++); auto str = entry.name; auto str_size = str.size() - 1; @@ -483,11 +519,18 @@ s64 PS4_SYSV_ABI sceKernelPwrite(int d, void* buf, size_t nbytes, s64 offset) { s32 PS4_SYSV_ABI sceKernelRename(const char* from, const char* to) { auto* mnt = Common::Singleton::Instance(); - const auto src_path = mnt->GetHostPath(from); + bool ro = false; + const auto src_path = mnt->GetHostPath(from, &ro); if (!std::filesystem::exists(src_path)) { return ORBIS_KERNEL_ERROR_ENOENT; } - const auto dst_path = mnt->GetHostPath(to); + if (ro) { + return SCE_KERNEL_ERROR_EROFS; + } + const auto dst_path = mnt->GetHostPath(to, &ro); + if (ro) { + return SCE_KERNEL_ERROR_EROFS; + } const bool src_is_dir = std::filesystem::is_directory(src_path); const bool dst_is_dir = std::filesystem::is_directory(dst_path); if (src_is_dir && !dst_is_dir) { diff --git a/src/core/libraries/kernel/libkernel.cpp b/src/core/libraries/kernel/libkernel.cpp index 2634e25c86..65d3dde14e 100644 --- a/src/core/libraries/kernel/libkernel.cpp +++ b/src/core/libraries/kernel/libkernel.cpp @@ -8,6 +8,7 @@ #include "common/assert.h" #include "common/debug.h" +#include "common/elf_info.h" #include "common/logging/log.h" #include "common/polyfill_thread.h" #include "common/singleton.h" @@ -243,8 +244,7 @@ int PS4_SYSV_ABI sceKernelConvertUtcToLocaltime(time_t time, time_t* local_time, } int PS4_SYSV_ABI sceKernelGetCompiledSdkVersion(int* ver) { - auto* param_sfo = Common::Singleton::Instance(); - int version = param_sfo->GetInteger("SYSTEM_VER"); + int version = Common::ElfInfo::Instance().RawFirmwareVer(); LOG_INFO(Kernel, "returned system version = {:#x}", version); *ver = version; return (version > 0) ? ORBIS_OK : ORBIS_KERNEL_ERROR_EINVAL; @@ -425,6 +425,7 @@ void LibKernel_Register(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("WFcfL2lzido", "libkernel", 1, "libkernel", 1, 1, sceKernelQueryMemoryProtection); LIB_FUNCTION("BHouLQzh0X0", "libkernel", 1, "libkernel", 1, 1, sceKernelDirectMemoryQuery); LIB_FUNCTION("MBuItvba6z8", "libkernel", 1, "libkernel", 1, 1, sceKernelReleaseDirectMemory); + LIB_FUNCTION("PGhQHd-dzv8", "libkernel", 1, "libkernel", 1, 1, sceKernelMmap); LIB_FUNCTION("cQke9UuBQOk", "libkernel", 1, "libkernel", 1, 1, sceKernelMunmap); LIB_FUNCTION("mL8NDH86iQI", "libkernel", 1, "libkernel", 1, 1, sceKernelMapNamedFlexibleMemory); LIB_FUNCTION("aNz11fnnzi4", "libkernel", 1, "libkernel", 1, 1, @@ -454,6 +455,8 @@ void LibKernel_Register(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("F6e0kwo4cnk", "libkernel", 1, "libkernel", 1, 1, sceKernelTriggerUserEvent); LIB_FUNCTION("LJDwdSNTnDg", "libkernel", 1, "libkernel", 1, 1, sceKernelDeleteUserEvent); LIB_FUNCTION("mJ7aghmgvfc", "libkernel", 1, "libkernel", 1, 1, sceKernelGetEventId); + LIB_FUNCTION("9bfdLIyuwCY", "libkernel", 1, "libkernel", 1, 1, sceKernelMTypeProtect); + LIB_FUNCTION("vSMAm3cxYTY", "libkernel", 1, "libkernel", 1, 1, sceKernelMProtect); LIB_FUNCTION("23CPPI1tyBY", "libkernel", 1, "libkernel", 1, 1, sceKernelGetEventFilter); // misc diff --git a/src/core/libraries/kernel/libkernel.h b/src/core/libraries/kernel/libkernel.h index c28a548ff8..73705cdc2b 100644 --- a/src/core/libraries/kernel/libkernel.h +++ b/src/core/libraries/kernel/libkernel.h @@ -33,6 +33,8 @@ typedef struct { } OrbisKernelUuid; int* PS4_SYSV_ABI __Error(); +int PS4_SYSV_ABI sceKernelConvertUtcToLocaltime(time_t time, time_t* local_time, + struct OrbisTimesec* st, unsigned long* dst_sec); int PS4_SYSV_ABI sceKernelGetCompiledSdkVersion(int* ver); void LibKernel_Register(Core::Loader::SymbolsResolver* sym); diff --git a/src/core/libraries/kernel/memory_management.cpp b/src/core/libraries/kernel/memory_management.cpp index a5288a6563..7853a77a41 100644 --- a/src/core/libraries/kernel/memory_management.cpp +++ b/src/core/libraries/kernel/memory_management.cpp @@ -7,6 +7,7 @@ #include "common/assert.h" #include "common/logging/log.h" #include "common/singleton.h" +#include "core/address_space.h" #include "core/libraries/error_codes.h" #include "core/libraries/kernel/memory_management.h" #include "core/linker.h" @@ -218,6 +219,18 @@ int PS4_SYSV_ABI sceKernelQueryMemoryProtection(void* addr, void** start, void** return memory->QueryProtection(std::bit_cast(addr), start, end, prot); } +int PS4_SYSV_ABI sceKernelMProtect(const void* addr, size_t size, int prot) { + Core::MemoryManager* memory_manager = Core::Memory::Instance(); + Core::MemoryProt protection_flags = static_cast(prot); + return memory_manager->Protect(std::bit_cast(addr), size, protection_flags); +} + +int PS4_SYSV_ABI sceKernelMTypeProtect(const void* addr, size_t size, int mtype, int prot) { + Core::MemoryManager* memory_manager = Core::Memory::Instance(); + Core::MemoryProt protection_flags = static_cast(prot); + return memory_manager->Protect(std::bit_cast(addr), size, protection_flags); +} + int PS4_SYSV_ABI sceKernelDirectMemoryQuery(u64 offset, int flags, OrbisQueryInfo* query_info, size_t infoSize) { LOG_WARNING(Kernel_Vmm, "called offset = {:#x}, flags = {:#x}", offset, flags); @@ -282,6 +295,12 @@ s32 PS4_SYSV_ABI sceKernelBatchMap2(OrbisKernelBatchMapEntry* entries, int numEn entries[i].operation, entries[i].length, result); break; } + case MemoryOpTypes::ORBIS_KERNEL_MAP_OP_PROTECT: { + result = sceKernelMProtect(entries[i].start, entries[i].length, entries[i].protection); + LOG_INFO(Kernel_Vmm, "entry = {}, operation = {}, len = {:#x}, result = {}", i, + entries[i].operation, entries[i].length, result); + break; + } case MemoryOpTypes::ORBIS_KERNEL_MAP_OP_MAP_FLEXIBLE: { result = sceKernelMapNamedFlexibleMemory(&entries[i].start, entries[i].length, entries[i].protection, flags, ""); @@ -292,11 +311,10 @@ s32 PS4_SYSV_ABI sceKernelBatchMap2(OrbisKernelBatchMapEntry* entries, int numEn break; } case MemoryOpTypes::ORBIS_KERNEL_MAP_OP_TYPE_PROTECT: { - // By now, ignore protection and log it instead - LOG_WARNING(Kernel_Vmm, - "entry = {}, operation = {}, len = {:#x}, type = {} " - "is UNSUPPORTED and skipped", - i, entries[i].operation, entries[i].length, (u8)entries[i].type); + result = sceKernelMTypeProtect(entries[i].start, entries[i].length, entries[i].type, + entries[i].protection); + LOG_INFO(Kernel_Vmm, "entry = {}, operation = {}, len = {:#x}, result = {}", i, + entries[i].operation, entries[i].length, result); break; } default: { diff --git a/src/core/libraries/kernel/memory_management.h b/src/core/libraries/kernel/memory_management.h index 9a447fe8bb..205b2274fe 100644 --- a/src/core/libraries/kernel/memory_management.h +++ b/src/core/libraries/kernel/memory_management.h @@ -56,7 +56,7 @@ struct OrbisVirtualQueryInfo { BitField<1, 1, u32> is_direct; BitField<2, 1, u32> is_stack; BitField<3, 1, u32> is_pooled; - BitField<4, 1, u32> is_commited; + BitField<4, 1, u32> is_committed; }; std::array name; }; @@ -95,6 +95,10 @@ s32 PS4_SYSV_ABI sceKernelMapFlexibleMemory(void** addr_in_out, std::size_t len, int flags); int PS4_SYSV_ABI sceKernelQueryMemoryProtection(void* addr, void** start, void** end, u32* prot); +int PS4_SYSV_ABI sceKernelMProtect(const void* addr, size_t size, int prot); + +int PS4_SYSV_ABI sceKernelMTypeProtect(const void* addr, size_t size, int mtype, int prot); + int PS4_SYSV_ABI sceKernelDirectMemoryQuery(u64 offset, int flags, OrbisQueryInfo* query_info, size_t infoSize); s32 PS4_SYSV_ABI sceKernelAvailableFlexibleMemorySize(size_t* sizeOut); diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index 74ef392fa2..b7a8f1533f 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -11,13 +11,13 @@ #include "common/logging/log.h" #include "common/singleton.h" #include "common/thread.h" -#include "core/cpu_patches.h" #include "core/libraries/error_codes.h" #include "core/libraries/kernel/libkernel.h" #include "core/libraries/kernel/thread_management.h" #include "core/libraries/kernel/threads/threads.h" #include "core/libraries/libs.h" #include "core/linker.h" +#include "core/tls.h" #ifdef _WIN64 #include #else @@ -52,11 +52,12 @@ void init_pthreads() { } void pthreadInitSelfMainThread() { + const char* name = "Main_Thread"; auto* pthread_pool = g_pthread_cxt->GetPthreadPool(); - g_pthread_self = pthread_pool->Create(); + g_pthread_self = pthread_pool->Create(name); scePthreadAttrInit(&g_pthread_self->attr); g_pthread_self->pth = pthread_self(); - g_pthread_self->name = "Main_Thread"; + g_pthread_self->name = name; } int PS4_SYSV_ABI scePthreadAttrInit(ScePthreadAttr* attr) { @@ -294,7 +295,7 @@ ScePthread PS4_SYSV_ABI scePthreadSelf() { int PS4_SYSV_ABI scePthreadAttrSetaffinity(ScePthreadAttr* pattr, const /*SceKernelCpumask*/ u64 mask) { - LOG_INFO(Kernel_Pthread, "called"); + LOG_DEBUG(Kernel_Pthread, "called"); if (pattr == nullptr || *pattr == nullptr) { return SCE_KERNEL_ERROR_EINVAL; @@ -386,7 +387,7 @@ int PS4_SYSV_ABI posix_pthread_attr_setstacksize(ScePthreadAttr* attr, size_t st } int PS4_SYSV_ABI scePthreadSetaffinity(ScePthread thread, const /*SceKernelCpumask*/ u64 mask) { - LOG_INFO(Kernel_Pthread, "called"); + LOG_DEBUG(Kernel_Pthread, "called"); if (thread == nullptr) { return SCE_KERNEL_ERROR_ESRCH; @@ -413,11 +414,6 @@ ScePthreadMutex* createMutex(ScePthreadMutex* addr) { if (addr == nullptr || *addr != nullptr) { return addr; } - static std::mutex mutex; - std::scoped_lock lk{mutex}; - if (*addr != nullptr) { - return addr; - } const VAddr vaddr = reinterpret_cast(addr); std::string name = fmt::format("mutex{:#x}", vaddr); scePthreadMutexInit(addr, nullptr, name.c_str()); @@ -583,8 +579,7 @@ int PS4_SYSV_ABI scePthreadMutexLock(ScePthreadMutex* mutex) { } int PS4_SYSV_ABI scePthreadMutexUnlock(ScePthreadMutex* mutex) { - mutex = createMutex(mutex); - if (mutex == nullptr) { + if (mutex == nullptr || *mutex == nullptr) { return SCE_KERNEL_ERROR_EINVAL; } @@ -657,7 +652,7 @@ int PS4_SYSV_ABI scePthreadCondInit(ScePthreadCond* cond, const ScePthreadCondat int result = pthread_cond_init(&(*cond)->cond, &(*attr)->cond_attr); if (name != nullptr) { - LOG_INFO(Kernel_Pthread, "name={}, result={}", (*cond)->name, result); + LOG_TRACE(Kernel_Pthread, "name={}, result={}", (*cond)->name, result); } switch (result) { @@ -987,7 +982,7 @@ static void cleanup_thread(void* arg) { destructor(value); } } - Core::CleanupThreadPatchStack(); + Core::SetTcbBase(nullptr); thread->is_almost_done = true; } @@ -995,13 +990,11 @@ static void* run_thread(void* arg) { auto* thread = static_cast(arg); Common::SetCurrentThreadName(thread->name.c_str()); auto* linker = Common::Singleton::Instance(); - Core::InitializeThreadPatchStack(); - linker->InitTlsForThread(false); void* ret = nullptr; g_pthread_self = thread; pthread_cleanup_push(cleanup_thread, thread); thread->is_started = true; - ret = thread->entry(thread->arg); + ret = linker->ExecuteGuest(thread->entry, thread->arg); pthread_cleanup_pop(1); return ret; } @@ -1018,7 +1011,7 @@ int PS4_SYSV_ABI scePthreadCreate(ScePthread* thread, const ScePthreadAttr* attr attr = g_pthread_cxt->GetDefaultAttr(); } - *thread = pthread_pool->Create(); + *thread = pthread_pool->Create(name); if ((*thread)->attr != nullptr) { scePthreadAttrDestroy(&(*thread)->attr); @@ -1060,11 +1053,11 @@ int PS4_SYSV_ABI scePthreadCreate(ScePthread* thread, const ScePthreadAttr* attr } } -ScePthread PThreadPool::Create() { +ScePthread PThreadPool::Create(const char* name) { std::scoped_lock lock{m_mutex}; for (auto* p : m_threads) { - if (p->is_free) { + if (p->is_free && name != nullptr && p->name == name) { p->is_free = false; return p; } @@ -1187,6 +1180,7 @@ int PS4_SYSV_ABI scePthreadCondattrDestroy(ScePthreadCondattr* attr) { int result = pthread_condattr_destroy(&(*attr)->cond_attr); LOG_DEBUG(Kernel_Pthread, "scePthreadCondattrDestroy: result = {} ", result); + delete *attr; switch (result) { case 0: @@ -1492,6 +1486,8 @@ int PS4_SYSV_ABI scePthreadOnce(int* once_control, void (*init_routine)(void)) { } [[noreturn]] void PS4_SYSV_ABI scePthreadExit(void* value_ptr) { + g_pthread_self->is_free = true; + pthread_exit(value_ptr); UNREACHABLE(); } diff --git a/src/core/libraries/kernel/thread_management.h b/src/core/libraries/kernel/thread_management.h index a2b2f6feaf..7385b55ce0 100644 --- a/src/core/libraries/kernel/thread_management.h +++ b/src/core/libraries/kernel/thread_management.h @@ -119,7 +119,7 @@ struct PthreadSemInternal { class PThreadPool { public: - ScePthread Create(); + ScePthread Create(const char* name); private: std::vector m_threads; diff --git a/src/core/libraries/kernel/threads/semaphore.cpp b/src/core/libraries/kernel/threads/semaphore.cpp index 63ca25338d..ff53680236 100644 --- a/src/core/libraries/kernel/threads/semaphore.cpp +++ b/src/core/libraries/kernel/threads/semaphore.cpp @@ -32,12 +32,20 @@ class Semaphore { return ORBIS_KERNEL_ERROR_EBUSY; } + if (timeout && *timeout == 0) { + return SCE_KERNEL_ERROR_ETIMEDOUT; + } + // Create waiting thread object and add it into the list of waiters. WaitingThread waiter{need_count, is_fifo}; - AddWaiter(&waiter); + const auto it = AddWaiter(&waiter); // Perform the wait. - return waiter.Wait(lk, timeout); + const s32 result = waiter.Wait(lk, timeout); + if (result == SCE_KERNEL_ERROR_ETIMEDOUT) { + wait_list.erase(it); + } + return result; } bool Signal(s32 signal_count) { @@ -129,11 +137,13 @@ class Semaphore { } }; - void AddWaiter(WaitingThread* waiter) { + using WaitList = std::list; + + WaitList::iterator AddWaiter(WaitingThread* waiter) { // Insert at the end of the list for FIFO order. if (is_fifo) { wait_list.push_back(waiter); - return; + return --wait_list.end(); } // Find the first with priority less then us and insert right before it. auto it = wait_list.begin(); @@ -141,9 +151,10 @@ class Semaphore { it++; } wait_list.insert(it, waiter); + return it; } - std::list wait_list; + WaitList wait_list; std::string name; std::atomic token_count; std::mutex mutex; diff --git a/src/core/libraries/kernel/time_management.cpp b/src/core/libraries/kernel/time_management.cpp index 7a6ba4f620..5e5e0ef27d 100644 --- a/src/core/libraries/kernel/time_management.cpp +++ b/src/core/libraries/kernel/time_management.cpp @@ -147,13 +147,20 @@ int PS4_SYSV_ABI sceKernelGettimeofday(OrbisKernelTimeval* tp) { } #ifdef _WIN64 - auto now = std::chrono::system_clock::now(); - auto duration = now.time_since_epoch(); - auto seconds = std::chrono::duration_cast(duration); - auto microsecs = std::chrono::duration_cast(duration - seconds); + FILETIME filetime; + GetSystemTimeAsFileTime(&filetime); - tp->tv_sec = seconds.count(); - tp->tv_usec = microsecs.count(); + constexpr u64 UNIX_TIME_START = 0x295E9648864000; + constexpr u64 TICKS_PER_SECOND = 1000000; + + u64 ticks = filetime.dwHighDateTime; + ticks <<= 32; + ticks |= filetime.dwLowDateTime; + ticks /= 10; + ticks -= UNIX_TIME_START; + + tp->tv_sec = ticks / TICKS_PER_SECOND; + tp->tv_usec = ticks % TICKS_PER_SECOND; #else timeval tv; gettimeofday(&tv, nullptr); diff --git a/src/core/libraries/kernel/time_management.h b/src/core/libraries/kernel/time_management.h index a28f8c1333..a28e6e5580 100644 --- a/src/core/libraries/kernel/time_management.h +++ b/src/core/libraries/kernel/time_management.h @@ -3,6 +3,8 @@ #pragma once +#include + #include "common/types.h" namespace Core::Loader { @@ -50,7 +52,10 @@ u64 PS4_SYSV_ABI sceKernelGetProcessTime(); u64 PS4_SYSV_ABI sceKernelGetProcessTimeCounter(); u64 PS4_SYSV_ABI sceKernelGetProcessTimeCounterFrequency(); u64 PS4_SYSV_ABI sceKernelReadTsc(); - +int PS4_SYSV_ABI sceKernelClockGettime(s32 clock_id, OrbisKernelTimespec* tp); +s32 PS4_SYSV_ABI sceKernelGettimezone(OrbisKernelTimezone* tz); +int PS4_SYSV_ABI sceKernelConvertLocaltimeToUtc(time_t param_1, int64_t param_2, time_t* seconds, + OrbisKernelTimezone* timezone, int* dst_seconds); void timeSymbolsRegister(Core::Loader::SymbolsResolver* sym); } // namespace Libraries::Kernel diff --git a/src/core/libraries/libs.cpp b/src/core/libraries/libs.cpp index e91a51e684..5b6c17b10e 100644 --- a/src/core/libraries/libs.cpp +++ b/src/core/libraries/libs.cpp @@ -6,6 +6,7 @@ #include "core/libraries/app_content/app_content.h" #include "core/libraries/audio/audioin.h" #include "core/libraries/audio/audioout.h" +#include "core/libraries/audio3d/audio3d.h" #include "core/libraries/avplayer/avplayer.h" #include "core/libraries/dialogs/error_dialog.h" #include "core/libraries/dialogs/ime_dialog.h" @@ -26,12 +27,12 @@ #include "core/libraries/playgo/playgo.h" #include "core/libraries/random/random.h" #include "core/libraries/rtc/rtc.h" +#include "core/libraries/save_data/dialog/savedatadialog.h" #include "core/libraries/save_data/savedata.h" #include "core/libraries/screenshot/screenshot.h" #include "core/libraries/system/commondialog.h" #include "core/libraries/system/msgdialog.h" #include "core/libraries/system/posix.h" -#include "core/libraries/system/savedatadialog.h" #include "core/libraries/system/sysmodule.h" #include "core/libraries/system/systemservice.h" #include "core/libraries/system/userservice.h" @@ -56,11 +57,11 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) { Libraries::Net::RegisterlibSceNet(sym); Libraries::NetCtl::RegisterlibSceNetCtl(sym); Libraries::SaveData::RegisterlibSceSaveData(sym); + Libraries::SaveData::Dialog::RegisterlibSceSaveDataDialog(sym); Libraries::Ssl::RegisterlibSceSsl(sym); Libraries::SysModule::RegisterlibSceSysmodule(sym); Libraries::Posix::Registerlibsceposix(sym); Libraries::AudioIn::RegisterlibSceAudioIn(sym); - Libraries::SaveDataDialog::RegisterlibSceSaveDataDialog(sym); Libraries::NpManager::RegisterlibSceNpManager(sym); Libraries::NpScore::RegisterlibSceNpScore(sym); Libraries::NpTrophy::RegisterlibSceNpTrophy(sym); @@ -75,6 +76,7 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) { Libraries::ErrorDialog::RegisterlibSceErrorDialog(sym); Libraries::ImeDialog::RegisterlibSceImeDialog(sym); Libraries::AvPlayer::RegisterlibSceAvPlayer(sym); + Libraries::Audio3d::RegisterlibSceAudio3d(sym); } } // namespace Libraries diff --git a/src/core/libraries/network/net.h b/src/core/libraries/network/net.h index 965b76809a..eababdb67a 100644 --- a/src/core/libraries/network/net.h +++ b/src/core/libraries/network/net.h @@ -10,8 +10,12 @@ class SymbolsResolver; } // Define our own htonll and ntohll because its not available in some systems/platforms +#ifndef HTONLL #define HTONLL(x) (((uint64_t)htonl((x) & 0xFFFFFFFFUL)) << 32) | htonl((uint32_t)((x) >> 32)) +#endif +#ifndef NTOHLL #define NTOHLL(x) (((uint64_t)ntohl((x) & 0xFFFFFFFFUL)) << 32) | ntohl((uint32_t)((x) >> 32)) +#endif namespace Libraries::Net { diff --git a/src/core/libraries/network/net_ctl_codes.h b/src/core/libraries/network/net_ctl_codes.h new file mode 100644 index 0000000000..a38565c1ec --- /dev/null +++ b/src/core/libraries/network/net_ctl_codes.h @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// error codes +constexpr int ORBIS_NET_CTL_ERROR_CALLBACK_MAX = 0x80412103; +constexpr int ORBIS_NET_CTL_ERROR_ID_NOT_FOUND = 0x80412104; +constexpr int ORBIS_NET_CTL_ERROR_INVALID_ID = 0x80412105; +constexpr int ORBIS_NET_CTL_ERROR_INVALID_ADDR = 0x80412107; +constexpr int ORBIS_NET_CTL_ERROR_NOT_CONNECTED = 0x80412108; +constexpr int ORBIS_NET_CTL_ERROR_NOT_AVAIL = 0x80412109; +constexpr int ORBIS_NET_CTL_ERROR_NETWORK_DISABLED = 0x8041210D; +constexpr int ORBIS_NET_CTL_ERROR_DISCONNECT_REQ = 0x8041210E; +constexpr int ORBIS_NET_CTL_ERROR_ETHERNET_PLUGOUT = 0x80412115; +constexpr int ORBIS_NET_CTL_ERROR_WIFI_DEAUTHED = 0x80412116; +constexpr int ORBIS_NET_CTL_ERROR_WIFI_BEACON_LOST = 0x80412117; + +// state codes +constexpr int ORBIS_NET_CTL_STATE_DISCONNECTED = 0; +constexpr int ORBIS_NET_CTL_STATE_CONNECTING = 1; +constexpr int ORBIS_NET_CTL_STATE_IPOBTAINING = 2; +constexpr int ORBIS_NET_CTL_STATE_IPOBTAINED = 3; + +// event type +constexpr int ORBIS_NET_CTL_EVENT_TYPE_DISCONNECTED = 1; +constexpr int ORBIS_SCE_NET_CTL_EVENT_TYPE_DISCONNECT_REQ_FINISHED = 2; +constexpr int ORBIS_NET_CTL_EVENT_TYPE_IPOBTAINED = 3; diff --git a/src/core/libraries/network/net_ctl_obj.cpp b/src/core/libraries/network/net_ctl_obj.cpp new file mode 100644 index 0000000000..8193c684e8 --- /dev/null +++ b/src/core/libraries/network/net_ctl_obj.cpp @@ -0,0 +1,80 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/singleton.h" +#include "core/linker.h" +#include "net_ctl_codes.h" +#include "net_ctl_obj.h" + +Libraries::NetCtl::NetCtlInternal::NetCtlInternal() { + callbacks.fill({nullptr, nullptr}); + nptoolCallbacks.fill({nullptr, nullptr}); +} + +Libraries::NetCtl::NetCtlInternal::~NetCtlInternal() {} + +s32 Libraries::NetCtl::NetCtlInternal::registerCallback(OrbisNetCtlCallback func, void* arg) { + std::unique_lock lock{m_mutex}; + + // Find the next available slot + int next_id = 0; + for (const auto& callback : callbacks) { + if (callback.func == nullptr) { + break; + } + next_id++; + } + + if (next_id == 8) { + return ORBIS_NET_CTL_ERROR_CALLBACK_MAX; + } + + callbacks[next_id].func = func; + callbacks[next_id].arg = arg; + return next_id; +} + +s32 Libraries::NetCtl::NetCtlInternal::registerNpToolkitCallback( + OrbisNetCtlCallbackForNpToolkit func, void* arg) { + + std::unique_lock lock{m_mutex}; + + // Find the next available slot + int next_id = 0; + for (const auto& callback : nptoolCallbacks) { + if (callback.func == nullptr) { + break; + } + next_id++; + } + + if (next_id == 8) { + return ORBIS_NET_CTL_ERROR_CALLBACK_MAX; + } + + nptoolCallbacks[next_id].func = func; + nptoolCallbacks[next_id].arg = arg; + return next_id; +} + +void Libraries::NetCtl::NetCtlInternal::checkCallback() { + std::unique_lock lock{m_mutex}; + auto* linker = Common::Singleton::Instance(); + for (auto& callback : callbacks) { + if (callback.func != nullptr) { + linker->ExecuteGuest(callback.func, ORBIS_NET_CTL_EVENT_TYPE_DISCONNECTED, + callback.arg); + } + } +} + +void Libraries::NetCtl::NetCtlInternal::checkNpToolkitCallback() { + std::unique_lock lock{m_mutex}; + auto* linker = Common::Singleton::Instance(); + for (auto& callback : nptoolCallbacks) { + if (callback.func != nullptr) { + linker->ExecuteGuest(callback.func, ORBIS_NET_CTL_EVENT_TYPE_DISCONNECTED, + callback.arg); + } + } +} diff --git a/src/core/libraries/network/net_ctl_obj.h b/src/core/libraries/network/net_ctl_obj.h new file mode 100644 index 0000000000..3178677f42 --- /dev/null +++ b/src/core/libraries/network/net_ctl_obj.h @@ -0,0 +1,40 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +#include "common/types.h" + +namespace Libraries::NetCtl { + +using OrbisNetCtlCallback = PS4_SYSV_ABI void (*)(int eventType, void* arg); +using OrbisNetCtlCallbackForNpToolkit = PS4_SYSV_ABI void (*)(int eventType, void* arg); + +struct NetCtlCallback { + OrbisNetCtlCallback func; + void* arg; +}; + +struct NetCtlCallbackForNpToolkit { + OrbisNetCtlCallbackForNpToolkit func; + void* arg; +}; + +class NetCtlInternal { +public: + NetCtlInternal(); + ~NetCtlInternal(); + s32 registerCallback(OrbisNetCtlCallback func, void* arg); + s32 registerNpToolkitCallback(OrbisNetCtlCallbackForNpToolkit func, void* arg); + void checkCallback(); + void checkNpToolkitCallback(); + +public: + std::array nptoolCallbacks; + std::array callbacks; + std::mutex m_mutex; +}; +} // namespace Libraries::NetCtl diff --git a/src/core/libraries/network/netctl.cpp b/src/core/libraries/network/netctl.cpp index a1c8e81c01..3ecdde7737 100644 --- a/src/core/libraries/network/netctl.cpp +++ b/src/core/libraries/network/netctl.cpp @@ -2,8 +2,10 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "common/logging/log.h" +#include "common/singleton.h" #include "core/libraries/error_codes.h" #include "core/libraries/libs.h" +#include "core/libraries/network/net_ctl_codes.h" #include "core/libraries/network/netctl.h" namespace Libraries::NetCtl { @@ -79,7 +81,8 @@ int PS4_SYSV_ABI sceNetCtlUnregisterCallbackV6() { } int PS4_SYSV_ABI sceNetCtlCheckCallback() { - LOG_TRACE(Lib_NetCtl, "(STUBBED) called"); + auto* netctl = Common::Singleton::Instance(); + netctl->checkCallback(); return ORBIS_OK; } @@ -143,7 +146,17 @@ int PS4_SYSV_ABI sceNetCtlGetIfStat() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNetCtlGetInfo() { +int PS4_SYSV_ABI sceNetCtlGetInfo(int code, OrbisNetCtlInfo* info) { + switch (code) { + case ORBIS_NET_CTL_INFO_DEVICE: + info->device = 0; + break; + case ORBIS_NET_CTL_INFO_LINK: + info->link = 0; // disconnected + break; + default: + LOG_ERROR(Lib_NetCtl, "{} unsupported code", code); + } LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); return ORBIS_OK; } @@ -173,8 +186,9 @@ int PS4_SYSV_ABI sceNetCtlGetNetEvConfigInfoIpcInt() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNetCtlGetResult() { - LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); +int PS4_SYSV_ABI sceNetCtlGetResult(int eventType, int* errorCode) { + LOG_ERROR(Lib_NetCtl, "(STUBBED) called eventType = {} ", eventType); + *errorCode = 0; return ORBIS_OK; } @@ -213,8 +227,8 @@ int PS4_SYSV_ABI sceNetCtlGetScanInfoForSsidScanIpcInt() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNetCtlGetState() { - LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); +int PS4_SYSV_ABI sceNetCtlGetState(int* state) { + *state = ORBIS_NET_CTL_STATE_DISCONNECTED; return ORBIS_OK; } @@ -248,8 +262,17 @@ int PS4_SYSV_ABI sceNetCtlIsBandwidthManagementEnabledIpcInt() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNetCtlRegisterCallback() { - LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); +int PS4_SYSV_ABI sceNetCtlRegisterCallback(OrbisNetCtlCallback func, void* arg, int* cid) { + if (!func || !cid) { + return ORBIS_NET_CTL_ERROR_INVALID_ADDR; + } + auto* netctl = Common::Singleton::Instance(); + s32 result = netctl->registerCallback(func, arg); + if (result < 0) { + return result; + } else { + *cid = result; + } return ORBIS_OK; } @@ -319,7 +342,8 @@ int PS4_SYSV_ABI Func_D8DCB6973537A3DC() { } int PS4_SYSV_ABI sceNetCtlCheckCallbackForNpToolkit() { - LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); + auto* netctl = Common::Singleton::Instance(); + netctl->checkNpToolkitCallback(); return ORBIS_OK; } @@ -328,8 +352,18 @@ int PS4_SYSV_ABI sceNetCtlClearEventForNpToolkit() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNetCtlRegisterCallbackForNpToolkit() { - LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); +int PS4_SYSV_ABI sceNetCtlRegisterCallbackForNpToolkit(OrbisNetCtlCallbackForNpToolkit func, + void* arg, int* cid) { + if (!func || !cid) { + return ORBIS_NET_CTL_ERROR_INVALID_ADDR; + } + auto* netctl = Common::Singleton::Instance(); + s32 result = netctl->registerNpToolkitCallback(func, arg); + if (result < 0) { + return result; + } else { + *cid = result; + } return ORBIS_OK; } diff --git a/src/core/libraries/network/netctl.h b/src/core/libraries/network/netctl.h index 0d6adf9c12..850650f974 100644 --- a/src/core/libraries/network/netctl.h +++ b/src/core/libraries/network/netctl.h @@ -4,6 +4,7 @@ #pragma once #include "common/types.h" +#include "net_ctl_obj.h" namespace Core::Loader { class SymbolsResolver; @@ -11,6 +12,45 @@ class SymbolsResolver; namespace Libraries::NetCtl { +constexpr int ORBIS_NET_ETHER_ADDR_LEN = 6; + +struct OrbisNetEtherAddr { + u8 data[ORBIS_NET_ETHER_ADDR_LEN]; +}; + +constexpr int ORBIS_NET_CTL_SSID_LEN = 32 + 1; +constexpr int ORBIS_NET_CTL_HOSTNAME_LEN = 255 + 1; +constexpr int ORBIS_NET_CTL_AUTH_NAME_LEN = 127 + 1; +constexpr int ORBIS_NET_CTL_IPV4_ADDR_STR_LEN = 16; + +typedef union OrbisNetCtlInfo { + u32 device; + OrbisNetEtherAddr ether_addr; + u32 mtu; + u32 link; + OrbisNetEtherAddr bssid; + char ssid[ORBIS_NET_CTL_SSID_LEN]; + u32 wifi_security; + u8 rssi_dbm; + uint8_t rssi_percentage; + u8 channel; + u32 ip_config; + char dhcp_hostname[ORBIS_NET_CTL_HOSTNAME_LEN]; + char pppoe_auth_name[ORBIS_NET_CTL_AUTH_NAME_LEN]; + char ip_address[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN]; + char netmask[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN]; + char default_route[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN]; + char primary_dns[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN]; + char secondary_dns[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN]; + u32 http_proxy_config; + char http_proxy_server[ORBIS_NET_CTL_HOSTNAME_LEN]; + u16 http_proxy_port; +} SceNetCtlInfo; + +// GetInfo codes +constexpr int ORBIS_NET_CTL_INFO_DEVICE = 1; +constexpr int ORBIS_NET_CTL_INFO_LINK = 4; + int PS4_SYSV_ABI sceNetBweCheckCallbackIpcInt(); int PS4_SYSV_ABI sceNetBweClearEventIpcInt(); int PS4_SYSV_ABI sceNetBweFinishInternetConnectionTestIpcInt(); @@ -38,13 +78,13 @@ int PS4_SYSV_ABI sceNetCtlEnableBandwidthManagementIpcInt(); int PS4_SYSV_ABI sceNetCtlGetBandwidthInfoIpcInt(); int PS4_SYSV_ABI sceNetCtlGetEtherLinkMode(); int PS4_SYSV_ABI sceNetCtlGetIfStat(); -int PS4_SYSV_ABI sceNetCtlGetInfo(); +int PS4_SYSV_ABI sceNetCtlGetInfo(int code, OrbisNetCtlInfo* info); int PS4_SYSV_ABI sceNetCtlGetInfoIpcInt(); int PS4_SYSV_ABI sceNetCtlGetInfoV6IpcInt(); int PS4_SYSV_ABI sceNetCtlGetNatInfo(); int PS4_SYSV_ABI sceNetCtlGetNatInfoIpcInt(); int PS4_SYSV_ABI sceNetCtlGetNetEvConfigInfoIpcInt(); -int PS4_SYSV_ABI sceNetCtlGetResult(); +int PS4_SYSV_ABI sceNetCtlGetResult(int eventType, int* errorCode); int PS4_SYSV_ABI sceNetCtlGetResultIpcInt(); int PS4_SYSV_ABI sceNetCtlGetResultV6IpcInt(); int PS4_SYSV_ABI sceNetCtlGetScanInfoBssidForSsidListScanIpcInt(); @@ -52,14 +92,14 @@ int PS4_SYSV_ABI sceNetCtlGetScanInfoBssidIpcInt(); int PS4_SYSV_ABI sceNetCtlGetScanInfoByBssidIpcInt(); int PS4_SYSV_ABI sceNetCtlGetScanInfoForSsidListScanIpcInt(); int PS4_SYSV_ABI sceNetCtlGetScanInfoForSsidScanIpcInt(); -int PS4_SYSV_ABI sceNetCtlGetState(); +int PS4_SYSV_ABI sceNetCtlGetState(int* state); int PS4_SYSV_ABI sceNetCtlGetState2IpcInt(); int PS4_SYSV_ABI sceNetCtlGetStateIpcInt(); int PS4_SYSV_ABI sceNetCtlGetStateV6IpcInt(); int PS4_SYSV_ABI sceNetCtlGetWifiType(); int PS4_SYSV_ABI sceNetCtlInit(); int PS4_SYSV_ABI sceNetCtlIsBandwidthManagementEnabledIpcInt(); -int PS4_SYSV_ABI sceNetCtlRegisterCallback(); +int PS4_SYSV_ABI sceNetCtlRegisterCallback(OrbisNetCtlCallback func, void* arg, int* cid); int PS4_SYSV_ABI sceNetCtlRegisterCallbackForLibIpcInt(); int PS4_SYSV_ABI sceNetCtlRegisterCallbackIpcInt(); int PS4_SYSV_ABI sceNetCtlRegisterCallbackV6IpcInt(); @@ -75,7 +115,8 @@ int PS4_SYSV_ABI sceNetCtlUnsetStunWithPaddingFlagIpcInt(); int PS4_SYSV_ABI Func_D8DCB6973537A3DC(); int PS4_SYSV_ABI sceNetCtlCheckCallbackForNpToolkit(); int PS4_SYSV_ABI sceNetCtlClearEventForNpToolkit(); -int PS4_SYSV_ABI sceNetCtlRegisterCallbackForNpToolkit(); +int PS4_SYSV_ABI sceNetCtlRegisterCallbackForNpToolkit(OrbisNetCtlCallbackForNpToolkit func, + void* arg, int* cid); int PS4_SYSV_ABI sceNetCtlUnregisterCallbackForNpToolkit(); int PS4_SYSV_ABI sceNetCtlApCheckCallback(); int PS4_SYSV_ABI sceNetCtlApClearEvent(); diff --git a/src/core/libraries/np_manager/np_manager.cpp b/src/core/libraries/np_manager/np_manager.cpp index a761caa739..e4c24cad34 100644 --- a/src/core/libraries/np_manager/np_manager.cpp +++ b/src/core/libraries/np_manager/np_manager.cpp @@ -874,8 +874,16 @@ int PS4_SYSV_ABI sceNpCheckCallback() { return ORBIS_OK; } +struct NpStateCallbackForNpToolkit { + OrbisNpStateCallbackForNpToolkit func; + void* userdata; +}; + +NpStateCallbackForNpToolkit NpStateCbForNp; + int PS4_SYSV_ABI sceNpCheckCallbackForLib() { - LOG_ERROR(Lib_NpManager, "(STUBBED) called"); + // LOG_ERROR(Lib_NpManager, "(STUBBED) called"); + NpStateCbForNp.func(0, ORBIS_NP_STATE_SIGNED_OUT, NpStateCbForNp.userdata); return ORBIS_OK; } @@ -2507,9 +2515,12 @@ int PS4_SYSV_ABI Func_FF966E4351E564D6() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit() { +int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit(OrbisNpStateCallbackForNpToolkit callback, + void* userdata) { LOG_ERROR(Lib_NpManager, "(STUBBED) called"); - return ORBIS_OK; + NpStateCbForNp.func = callback; + NpStateCbForNp.userdata = userdata; + return 1; } int PS4_SYSV_ABI sceNpUnregisterStateCallbackForToolkit() { diff --git a/src/core/libraries/np_manager/np_manager.h b/src/core/libraries/np_manager/np_manager.h index 5955a40b4b..fa0ac82f33 100644 --- a/src/core/libraries/np_manager/np_manager.h +++ b/src/core/libraries/np_manager/np_manager.h @@ -11,6 +11,15 @@ class SymbolsResolver; namespace Libraries::NpManager { +enum OrbisNpState { + ORBIS_NP_STATE_UNKNOWN = 0, + ORBIS_NP_STATE_SIGNED_OUT, + ORBIS_NP_STATE_SIGNED_IN +}; + +using OrbisNpStateCallbackForNpToolkit = PS4_SYSV_ABI void (*)(s32 userId, OrbisNpState state, + void* userdata); + constexpr int ORBIS_NP_ONLINEID_MAX_LENGTH = 16; typedef int OrbisUserServiceUserId; @@ -526,7 +535,8 @@ int PS4_SYSV_ABI Func_F91B5B25CC9B30D9(); int PS4_SYSV_ABI Func_FC335B7102A585B3(); int PS4_SYSV_ABI Func_FCEAC354CA8B206E(); int PS4_SYSV_ABI Func_FF966E4351E564D6(); -int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit(); +int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit(OrbisNpStateCallbackForNpToolkit callback, + void* userdata); int PS4_SYSV_ABI sceNpUnregisterStateCallbackForToolkit(); void RegisterlibSceNpManager(Core::Loader::SymbolsResolver* sym); diff --git a/src/core/libraries/np_trophy/np_trophy.cpp b/src/core/libraries/np_trophy/np_trophy.cpp index ed25322b48..c28e49dacf 100644 --- a/src/core/libraries/np_trophy/np_trophy.cpp +++ b/src/core/libraries/np_trophy/np_trophy.cpp @@ -2,15 +2,22 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include #include "common/logging/log.h" +#include "common/path_util.h" #include "common/slot_vector.h" #include "core/libraries/error_codes.h" #include "core/libraries/libs.h" #include "np_trophy.h" +#include "trophy_ui.h" namespace Libraries::NpTrophy { +static TrophyUI g_trophy_ui; + +std::string game_serial; + static constexpr auto MaxTrophyHandles = 4u; static constexpr auto MaxTrophyContexts = 8u; @@ -24,11 +31,70 @@ struct ContextKeyHash { struct TrophyContext { u32 context_id; }; -static Common::SlotVector trophy_handles{}; +static Common::SlotVector trophy_handles{}; static Common::SlotVector trophy_contexts{}; static std::unordered_map contexts_internal{}; -int PS4_SYSV_ABI sceNpTrophyAbortHandle() { +void ORBIS_NP_TROPHY_FLAG_ZERO(OrbisNpTrophyFlagArray* p) { + for (int i = 0; i < ORBIS_NP_TROPHY_NUM_MAX; i++) { + uint32_t array_index = i / 32; + uint32_t bit_position = i % 32; + + p->flag_bits[array_index] &= ~(1U << bit_position); + } +} + +void ORBIS_NP_TROPHY_FLAG_SET(int32_t trophyId, OrbisNpTrophyFlagArray* p) { + uint32_t array_index = trophyId / 32; + uint32_t bit_position = trophyId % 32; + + p->flag_bits[array_index] |= (1U << bit_position); +} + +void ORBIS_NP_TROPHY_FLAG_SET_ALL(OrbisNpTrophyFlagArray* p) { + for (int i = 0; i < ORBIS_NP_TROPHY_NUM_MAX; i++) { + uint32_t array_index = i / 32; + uint32_t bit_position = i % 32; + + p->flag_bits[array_index] |= (1U << bit_position); + } +} + +void ORBIS_NP_TROPHY_FLAG_CLR(int32_t trophyId, OrbisNpTrophyFlagArray* p) { + uint32_t array_index = trophyId / 32; + uint32_t bit_position = trophyId % 32; + + p->flag_bits[array_index] &= ~(1U << bit_position); +} + +bool ORBIS_NP_TROPHY_FLAG_ISSET(int32_t trophyId, OrbisNpTrophyFlagArray* p) { + uint32_t array_index = trophyId / 32; + uint32_t bit_position = trophyId % 32; + + return (p->flag_bits[array_index] & (1U << bit_position)) ? 1 : 0; +} + +OrbisNpTrophyGrade GetTrophyGradeFromChar(char trophyType) { + switch (trophyType) { + default: + return ORBIS_NP_TROPHY_GRADE_UNKNOWN; + break; + case 'B': + return ORBIS_NP_TROPHY_GRADE_BRONZE; + break; + case 'S': + return ORBIS_NP_TROPHY_GRADE_SILVER; + break; + case 'G': + return ORBIS_NP_TROPHY_GRADE_GOLD; + break; + case 'P': + return ORBIS_NP_TROPHY_GRADE_PLATINUM; + break; + } +} + +int PS4_SYSV_ABI sceNpTrophyAbortHandle(OrbisNpTrophyHandle handle) { LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); return ORBIS_OK; } @@ -83,8 +149,8 @@ int PS4_SYSV_ABI sceNpTrophyConfigHasGroupFeature() { return ORBIS_OK; } -s32 PS4_SYSV_ABI sceNpTrophyCreateContext(u32* context, u32 user_id, u32 service_label, - u64 options) { +s32 PS4_SYSV_ABI sceNpTrophyCreateContext(OrbisNpTrophyContext* context, int32_t user_id, + uint32_t service_label, uint64_t options) { ASSERT(options == 0ull); if (!context) { return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; @@ -107,7 +173,7 @@ s32 PS4_SYSV_ABI sceNpTrophyCreateContext(u32* context, u32 user_id, u32 service return ORBIS_OK; } -s32 PS4_SYSV_ABI sceNpTrophyCreateHandle(u32* handle) { +s32 PS4_SYSV_ABI sceNpTrophyCreateHandle(OrbisNpTrophyHandle* handle) { if (!handle) { return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; } @@ -122,55 +188,402 @@ s32 PS4_SYSV_ABI sceNpTrophyCreateHandle(u32* handle) { return ORBIS_OK; } -int PS4_SYSV_ABI sceNpTrophyDestroyContext() { - LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); +int PS4_SYSV_ABI sceNpTrophyDestroyContext(OrbisNpTrophyContext context) { + LOG_INFO(Lib_NpTrophy, "Destroyed Context {}", context); + + if (context == ORBIS_NP_TROPHY_INVALID_CONTEXT) + return ORBIS_NP_TROPHY_ERROR_INVALID_CONTEXT; + + Common::SlotId contextId; + contextId.index = context; + + ContextKey contextkey = trophy_contexts[contextId]; + trophy_contexts.erase(contextId); + contexts_internal.erase(contextkey); + return ORBIS_OK; } -s32 PS4_SYSV_ABI sceNpTrophyDestroyHandle(u32 handle) { - if (!trophy_handles.is_allocated({handle})) { +s32 PS4_SYSV_ABI sceNpTrophyDestroyHandle(OrbisNpTrophyHandle handle) { + if (handle == ORBIS_NP_TROPHY_INVALID_HANDLE) + return ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE; + + if (!trophy_handles.is_allocated({static_cast(handle)})) { return ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE; } - trophy_handles.erase({handle}); + trophy_handles.erase({static_cast(handle)}); LOG_INFO(Lib_NpTrophy, "Handle {} destroyed", handle); return ORBIS_OK; } -int PS4_SYSV_ABI sceNpTrophyGetGameIcon() { +int PS4_SYSV_ABI sceNpTrophyGetGameIcon(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + void* buffer, size_t* size) { LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceNpTrophyGetGameInfo() { - LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); - return ORBIS_OK; -} +int PS4_SYSV_ABI sceNpTrophyGetGameInfo(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyGameDetails* details, + OrbisNpTrophyGameData* data) { + LOG_INFO(Lib_NpTrophy, "Getting Game Trophy"); -int PS4_SYSV_ABI sceNpTrophyGetGroupIcon() { - LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); - return ORBIS_OK; -} + if (context == ORBIS_NP_TROPHY_INVALID_CONTEXT) + return ORBIS_NP_TROPHY_ERROR_INVALID_CONTEXT; -int PS4_SYSV_ABI sceNpTrophyGetGroupInfo() { - LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); - return ORBIS_OK; -} + if (handle == ORBIS_NP_TROPHY_INVALID_HANDLE) + return ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE; + + if (details == nullptr || data == nullptr) + return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; + + if (details->size != 0x4A0 || data->size != 0x20) + return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; + + const auto trophyDir = + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / game_serial / "TrophyFiles"; + + pugi::xml_document doc; + pugi::xml_parse_result result = + doc.load_file((trophyDir.string() + "/trophy00/Xml/TROP.XML").c_str()); + + if (result) { + + uint32_t numGroups = 0; + uint32_t numTrophies = 0; + uint32_t numTrophiesByRarity[5]; + numTrophiesByRarity[1] = 0; + numTrophiesByRarity[2] = 0; + numTrophiesByRarity[3] = 0; + numTrophiesByRarity[4] = 0; + uint32_t unlockedTrophies = 0; + uint32_t unlockedTrophiesByRarity[5]; + unlockedTrophiesByRarity[1] = 0; + unlockedTrophiesByRarity[2] = 0; + unlockedTrophiesByRarity[3] = 0; + unlockedTrophiesByRarity[4] = 0; + + auto trophyconf = doc.child("trophyconf"); + for (pugi::xml_node_iterator it = trophyconf.children().begin(); + it != trophyconf.children().end(); ++it) { + + if (std::string(it->name()) == "title-name") { + strncpy(details->title, it->text().as_string(), + ORBIS_NP_TROPHY_GAME_TITLE_MAX_SIZE); + } + + if (std::string(it->name()) == "title-detail") { + strncpy(details->description, it->text().as_string(), + ORBIS_NP_TROPHY_GAME_DESCR_MAX_SIZE); + } + + if (std::string(it->name()) == "group") + numGroups++; + + if (std::string(it->name()) == "trophy") { + std::string currentTrophyUnlockState = it->attribute("unlockstate").value(); + std::string currentTrophyGrade = it->attribute("ttype").value(); + + numTrophies++; + if (!currentTrophyGrade.empty()) { + int trophyGrade = GetTrophyGradeFromChar(currentTrophyGrade.at(0)); + numTrophiesByRarity[trophyGrade]++; + if (currentTrophyUnlockState == "unlocked") { + unlockedTrophies++; + unlockedTrophiesByRarity[trophyGrade]++; + } + } + } + } + + details->numGroups = numGroups; + details->numTrophies = numTrophies; + details->numPlatinum = numTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_PLATINUM]; + details->numGold = numTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_GOLD]; + details->numSilver = numTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_SILVER]; + details->numBronze = numTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_BRONZE]; + data->unlockedTrophies = unlockedTrophies; + data->unlockedPlatinum = unlockedTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_PLATINUM]; + data->unlockedGold = unlockedTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_GOLD]; + data->unlockedSilver = unlockedTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_SILVER]; + data->unlockedBronze = unlockedTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_BRONZE]; + + // maybe this should be 1 instead of 100? + data->progressPercentage = 100; + + } else + LOG_INFO(Lib_NpTrophy, "couldnt parse xml : {}", result.description()); -int PS4_SYSV_ABI sceNpTrophyGetTrophyIcon() { - LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceNpTrophyGetTrophyInfo() { +int PS4_SYSV_ABI sceNpTrophyGetGroupIcon(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyGroupId groupId, void* buffer, size_t* size) { LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); return ORBIS_OK; } -s32 PS4_SYSV_ABI sceNpTrophyGetTrophyUnlockState(u32 context, u32 handle, u32* flags, u32* count) { - LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); - *flags = 0u; - *count = 0; +int PS4_SYSV_ABI sceNpTrophyGetGroupInfo(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyGroupId groupId, + OrbisNpTrophyGroupDetails* details, + OrbisNpTrophyGroupData* data) { + LOG_INFO(Lib_NpTrophy, "Getting Trophy Group Info for id {}", groupId); + + if (context == ORBIS_NP_TROPHY_INVALID_CONTEXT) + return ORBIS_NP_TROPHY_ERROR_INVALID_CONTEXT; + + if (handle == ORBIS_NP_TROPHY_INVALID_HANDLE) + return ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE; + + if (details == nullptr || data == nullptr) + return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; + + if (details->size != 0x4A0 || data->size != 0x28) + return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; + + const auto trophyDir = + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / game_serial / "TrophyFiles"; + + pugi::xml_document doc; + pugi::xml_parse_result result = + doc.load_file((trophyDir.string() + "/trophy00/Xml/TROP.XML").c_str()); + + if (result) { + + uint32_t numGroups = 0; + uint32_t numTrophies = 0; + uint32_t numTrophiesByRarity[5]; + numTrophiesByRarity[1] = 0; + numTrophiesByRarity[2] = 0; + numTrophiesByRarity[3] = 0; + numTrophiesByRarity[4] = 0; + uint32_t unlockedTrophies = 0; + uint32_t unlockedTrophiesByRarity[5]; + unlockedTrophiesByRarity[1] = 0; + unlockedTrophiesByRarity[2] = 0; + unlockedTrophiesByRarity[3] = 0; + unlockedTrophiesByRarity[4] = 0; + + auto trophyconf = doc.child("trophyconf"); + for (pugi::xml_node_iterator it = trophyconf.children().begin(); + it != trophyconf.children().end(); ++it) { + + if (std::string(it->name()) == "group") { + numGroups++; + std::string currentGroupId = it->attribute("id").value(); + if (!currentGroupId.empty()) { + if (std::stoi(currentGroupId) == groupId) { + std::string currentGroupName = it->child("name").text().as_string(); + std::string currentGroupDescription = + it->child("detail").text().as_string(); + + strncpy(details->title, currentGroupName.c_str(), + ORBIS_NP_TROPHY_GROUP_TITLE_MAX_SIZE); + strncpy(details->description, currentGroupDescription.c_str(), + ORBIS_NP_TROPHY_GAME_DESCR_MAX_SIZE); + } + } + } + + data->groupId = groupId; + + if (std::string(it->name()) == "trophy") { + std::string currentTrophyUnlockState = it->attribute("unlockstate").value(); + std::string currentTrophyGrade = it->attribute("ttype").value(); + std::string currentTrophyGroupID = it->attribute("gid").value(); + + if (!currentTrophyGroupID.empty()) { + if (std::stoi(currentTrophyGroupID) == groupId) { + numTrophies++; + if (!currentTrophyGrade.empty()) { + int trophyGrade = GetTrophyGradeFromChar(currentTrophyGrade.at(0)); + numTrophiesByRarity[trophyGrade]++; + if (currentTrophyUnlockState == "unlocked") { + unlockedTrophies++; + unlockedTrophiesByRarity[trophyGrade]++; + } + } + } + } + } + } + + details->numTrophies = numTrophies; + details->numPlatinum = numTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_PLATINUM]; + details->numGold = numTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_GOLD]; + details->numSilver = numTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_SILVER]; + details->numBronze = numTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_BRONZE]; + data->unlockedTrophies = unlockedTrophies; + data->unlockedPlatinum = unlockedTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_PLATINUM]; + data->unlockedGold = unlockedTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_GOLD]; + data->unlockedSilver = unlockedTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_SILVER]; + data->unlockedBronze = unlockedTrophiesByRarity[ORBIS_NP_TROPHY_GRADE_BRONZE]; + + // maybe this should be 1 instead of 100? + data->progressPercentage = 100; + + } else + LOG_INFO(Lib_NpTrophy, "couldnt parse xml : {}", result.description()); + + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNpTrophyGetTrophyIcon(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyId trophyId, void* buffer, size_t* size) { + LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNpTrophyGetTrophyInfo(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyId trophyId, OrbisNpTrophyDetails* details, + OrbisNpTrophyData* data) { + LOG_INFO(Lib_NpTrophy, "Getting trophy info for id {}", trophyId); + + if (context == ORBIS_NP_TROPHY_INVALID_CONTEXT) + return ORBIS_NP_TROPHY_ERROR_INVALID_CONTEXT; + + if (handle == ORBIS_NP_TROPHY_INVALID_HANDLE) + return ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE; + + if (trophyId >= 127) + return ORBIS_NP_TROPHY_ERROR_INVALID_TROPHY_ID; + + if (details == nullptr || data == nullptr) + return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; + + if (details->size != 0x498 || data->size != 0x18) + return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; + + const auto trophyDir = + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / game_serial / "TrophyFiles"; + + pugi::xml_document doc; + pugi::xml_parse_result result = + doc.load_file((trophyDir.string() + "/trophy00/Xml/TROP.XML").c_str()); + + if (result) { + auto trophyconf = doc.child("trophyconf"); + for (pugi::xml_node_iterator it = trophyconf.children().begin(); + it != trophyconf.children().end(); ++it) { + + if (std::string(it->name()) == "trophy") { + std::string currentTrophyId = it->attribute("id").value(); + if (std::stoi(currentTrophyId) == trophyId) { + std::string currentTrophyUnlockState = it->attribute("unlockstate").value(); + std::string currentTrophyTimestamp = it->attribute("timestamp").value(); + std::string currentTrophyGrade = it->attribute("ttype").value(); + std::string currentTrophyGroupID = it->attribute("gid").value(); + std::string currentTrophyHidden = it->attribute("hidden").value(); + std::string currentTrophyName = it->child("name").text().as_string(); + std::string currentTrophyDescription = it->child("detail").text().as_string(); + + if (currentTrophyUnlockState == "unlocked") { + details->trophyId = trophyId; + if (currentTrophyGrade.empty()) { + details->trophyGrade = ORBIS_NP_TROPHY_GRADE_UNKNOWN; + } else { + details->trophyGrade = GetTrophyGradeFromChar(currentTrophyGrade.at(0)); + } + if (currentTrophyGroupID.empty()) { + details->groupId = ORBIS_NP_TROPHY_BASE_GAME_GROUP_ID; + } else { + details->groupId = std::stoi(currentTrophyGroupID); + } + if (currentTrophyHidden == "yes") { + details->hidden = true; + } else { + details->hidden = false; + } + + strncpy(details->name, currentTrophyName.c_str(), + ORBIS_NP_TROPHY_NAME_MAX_SIZE); + strncpy(details->description, currentTrophyDescription.c_str(), + ORBIS_NP_TROPHY_DESCR_MAX_SIZE); + + data->trophyId = trophyId; + data->unlocked = true; + data->timestamp.tick = std::stoull(currentTrophyTimestamp); + } else { + details->trophyId = trophyId; + if (currentTrophyGrade.empty()) { + details->trophyGrade = ORBIS_NP_TROPHY_GRADE_UNKNOWN; + } else { + details->trophyGrade = GetTrophyGradeFromChar(currentTrophyGrade.at(0)); + } + if (currentTrophyGroupID.empty()) { + details->groupId = ORBIS_NP_TROPHY_BASE_GAME_GROUP_ID; + } else { + details->groupId = std::stoi(currentTrophyGroupID); + } + if (currentTrophyHidden == "yes") { + details->hidden = true; + } else { + details->hidden = false; + } + + strncpy(details->name, currentTrophyName.c_str(), + ORBIS_NP_TROPHY_NAME_MAX_SIZE); + strncpy(details->description, currentTrophyDescription.c_str(), + ORBIS_NP_TROPHY_DESCR_MAX_SIZE); + + data->trophyId = trophyId; + data->unlocked = false; + data->timestamp.tick = 0; + } + } + } + } + } else + LOG_INFO(Lib_NpTrophy, "couldnt parse xml : {}", result.description()); + + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceNpTrophyGetTrophyUnlockState(OrbisNpTrophyContext context, + OrbisNpTrophyHandle handle, + OrbisNpTrophyFlagArray* flags, u32* count) { + LOG_INFO(Lib_NpTrophy, "GetTrophyUnlockState called"); + + if (context == ORBIS_NP_TROPHY_INVALID_CONTEXT) + return ORBIS_NP_TROPHY_ERROR_INVALID_CONTEXT; + + if (handle == ORBIS_NP_TROPHY_INVALID_HANDLE) + return ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE; + + if (flags == nullptr || count == nullptr) + return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; + + ORBIS_NP_TROPHY_FLAG_ZERO(flags); + + const auto trophyDir = + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / game_serial / "TrophyFiles"; + + pugi::xml_document doc; + pugi::xml_parse_result result = + doc.load_file((trophyDir.string() + "/trophy00/Xml/TROP.XML").c_str()); + + int numTrophies = 0; + + if (result) { + auto trophyconf = doc.child("trophyconf"); + for (pugi::xml_node_iterator it = trophyconf.children().begin(); + it != trophyconf.children().end(); ++it) { + + std::string currentTrophyId = it->attribute("id").value(); + std::string currentTrophyUnlockState = it->attribute("unlockstate").value(); + + if (std::string(it->name()) == "trophy") { + numTrophies++; + } + + if (currentTrophyUnlockState == "unlocked") { + ORBIS_NP_TROPHY_FLAG_SET(std::stoi(currentTrophyId), flags); + } + } + } else + LOG_INFO(Lib_NpTrophy, "couldnt parse xml : {}", result.description()); + + *count = numTrophies; return ORBIS_OK; } @@ -239,8 +652,16 @@ int PS4_SYSV_ABI sceNpTrophyNumInfoGetTotal() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNpTrophyRegisterContext() { +int PS4_SYSV_ABI sceNpTrophyRegisterContext(OrbisNpTrophyContext context, + OrbisNpTrophyHandle handle, uint64_t options) { LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); + + if (context == ORBIS_NP_TROPHY_INVALID_CONTEXT) + return ORBIS_NP_TROPHY_ERROR_INVALID_CONTEXT; + + if (handle == ORBIS_NP_TROPHY_INVALID_HANDLE) + return ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE; + return ORBIS_OK; } @@ -254,7 +675,8 @@ int PS4_SYSV_ABI sceNpTrophySetInfoGetTrophyNum() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNpTrophyShowTrophyList() { +int PS4_SYSV_ABI sceNpTrophyShowTrophyList(OrbisNpTrophyContext context, + OrbisNpTrophyHandle handle) { LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); return ORBIS_OK; } @@ -474,8 +896,165 @@ int PS4_SYSV_ABI sceNpTrophySystemSetDbgParamInt() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNpTrophyUnlockTrophy() { - LOG_ERROR(Lib_NpTrophy, "(STUBBED) called"); +int PS4_SYSV_ABI sceNpTrophyUnlockTrophy(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyId trophyId, OrbisNpTrophyId* platinumId) { + LOG_INFO(Lib_NpTrophy, "Unlocking trophy id {}", trophyId); + + if (context == ORBIS_NP_TROPHY_INVALID_CONTEXT) + return ORBIS_NP_TROPHY_ERROR_INVALID_CONTEXT; + + if (handle == ORBIS_NP_TROPHY_INVALID_HANDLE) + return ORBIS_NP_TROPHY_ERROR_INVALID_HANDLE; + + if (trophyId >= 127) + return ORBIS_NP_TROPHY_ERROR_INVALID_TROPHY_ID; + + if (platinumId == nullptr) + return ORBIS_NP_TROPHY_ERROR_INVALID_ARGUMENT; + + const auto trophyDir = + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / game_serial / "TrophyFiles"; + + pugi::xml_document doc; + pugi::xml_parse_result result = + doc.load_file((trophyDir.string() + "/trophy00/Xml/TROP.XML").c_str()); + + *platinumId = ORBIS_NP_TROPHY_INVALID_TROPHY_ID; + + int numTrophies = 0; + int numTrophiesUnlocked = 0; + + pugi::xml_node_iterator platinumIt; + int platinumTrophyGroup = -1; + + if (result) { + auto trophyconf = doc.child("trophyconf"); + for (pugi::xml_node_iterator it = trophyconf.children().begin(); + it != trophyconf.children().end(); ++it) { + + std::string currentTrophyId = it->attribute("id").value(); + std::string currentTrophyName = it->child("name").text().as_string(); + std::string currentTrophyDescription = it->child("detail").text().as_string(); + std::string currentTrophyType = it->attribute("ttype").value(); + std::string currentTrophyUnlockState = it->attribute("unlockstate").value(); + + if (currentTrophyType == "P") { + platinumIt = it; + + if (std::string(platinumIt->attribute("gid").value()).empty()) { + platinumTrophyGroup = -1; + } else { + platinumTrophyGroup = + std::stoi(std::string(platinumIt->attribute("gid").value())); + } + + if (trophyId == std::stoi(currentTrophyId)) { + return ORBIS_NP_TROPHY_ERROR_PLATINUM_CANNOT_UNLOCK; + } + } + + if (std::string(it->name()) == "trophy") { + if (platinumTrophyGroup == -1) { + if (std::string(it->attribute("gid").value()).empty()) { + numTrophies++; + if (currentTrophyUnlockState == "unlocked") { + numTrophiesUnlocked++; + } + } + } else { + if (!std::string(it->attribute("gid").value()).empty()) { + if (std::stoi(std::string(it->attribute("gid").value())) == + platinumTrophyGroup) { + numTrophies++; + if (currentTrophyUnlockState == "unlocked") { + numTrophiesUnlocked++; + } + } + } + } + + if (std::stoi(currentTrophyId) == trophyId) { + LOG_INFO(Lib_NpTrophy, "Found trophy to unlock {} : {}", + it->child("name").text().as_string(), + it->child("detail").text().as_string()); + if (currentTrophyUnlockState == "unlocked") { + LOG_INFO(Lib_NpTrophy, "Trophy already unlocked"); + return ORBIS_NP_TROPHY_ERROR_TROPHY_ALREADY_UNLOCKED; + } else { + if (std::string(it->attribute("unlockstate").value()).empty()) { + it->append_attribute("unlockstate") = "unlocked"; + } else { + it->attribute("unlockstate").set_value("unlocked"); + } + + Rtc::OrbisRtcTick trophyTimestamp; + Rtc::sceRtcGetCurrentTick(&trophyTimestamp); + + if (std::string(it->attribute("timestamp").value()).empty()) { + it->append_attribute("timestamp") = + std::to_string(trophyTimestamp.tick).c_str(); + } else { + it->attribute("timestamp") + .set_value(std::to_string(trophyTimestamp.tick).c_str()); + } + + g_trophy_ui.AddTrophyToQueue(trophyId, currentTrophyName); + } + } + } + } + + if (std::string(platinumIt->attribute("unlockstate").value()).empty()) { + if ((numTrophies - 2) == numTrophiesUnlocked) { + + platinumIt->append_attribute("unlockstate") = "unlocked"; + + Rtc::OrbisRtcTick trophyTimestamp; + Rtc::sceRtcGetCurrentTick(&trophyTimestamp); + + if (std::string(platinumIt->attribute("timestamp").value()).empty()) { + platinumIt->append_attribute("timestamp") = + std::to_string(trophyTimestamp.tick).c_str(); + } else { + platinumIt->attribute("timestamp") + .set_value(std::to_string(trophyTimestamp.tick).c_str()); + } + + std::string platinumTrophyId = platinumIt->attribute("id").value(); + std::string platinumTrophyName = platinumIt->child("name").text().as_string(); + + *platinumId = std::stoi(platinumTrophyId); + g_trophy_ui.AddTrophyToQueue(*platinumId, platinumTrophyName); + } + } else if (std::string(platinumIt->attribute("unlockstate").value()) == "locked") { + if ((numTrophies - 2) == numTrophiesUnlocked) { + + platinumIt->attribute("unlockstate").set_value("unlocked"); + + Rtc::OrbisRtcTick trophyTimestamp; + Rtc::sceRtcGetCurrentTick(&trophyTimestamp); + + if (std::string(platinumIt->attribute("timestamp").value()).empty()) { + platinumIt->append_attribute("timestamp") = + std::to_string(trophyTimestamp.tick).c_str(); + } else { + platinumIt->attribute("timestamp") + .set_value(std::to_string(trophyTimestamp.tick).c_str()); + } + + std::string platinumTrophyId = platinumIt->attribute("id").value(); + std::string platinumTrophyName = platinumIt->child("name").text().as_string(); + + *platinumId = std::stoi(platinumTrophyId); + g_trophy_ui.AddTrophyToQueue(*platinumId, platinumTrophyName); + } + } + + doc.save_file((trophyDir.string() + "/trophy00/Xml/TROP.XML").c_str()); + + } else + LOG_INFO(Lib_NpTrophy, "couldnt parse xml : {}", result.description()); + return ORBIS_OK; } diff --git a/src/core/libraries/np_trophy/np_trophy.h b/src/core/libraries/np_trophy/np_trophy.h index d05d353f1e..ae08b29698 100644 --- a/src/core/libraries/np_trophy/np_trophy.h +++ b/src/core/libraries/np_trophy/np_trophy.h @@ -4,6 +4,7 @@ #pragma once #include "common/types.h" +#include "core/libraries/rtc/rtc.h" namespace Core::Loader { class SymbolsResolver; @@ -11,7 +12,116 @@ class SymbolsResolver; namespace Libraries::NpTrophy { -int PS4_SYSV_ABI sceNpTrophyAbortHandle(); +extern std::string game_serial; + +constexpr int ORBIS_NP_TROPHY_FLAG_SETSIZE = 128; +constexpr int ORBIS_NP_TROPHY_FLAG_BITS_SHIFT = 5; + +constexpr int ORBIS_NP_TROPHY_GAME_TITLE_MAX_SIZE = 128; +constexpr int ORBIS_NP_TROPHY_GAME_DESCR_MAX_SIZE = 1024; +constexpr int ORBIS_NP_TROPHY_GROUP_TITLE_MAX_SIZE = 128; +constexpr int ORBIS_NP_TROPHY_GROUP_DESCR_MAX_SIZE = 1024; +constexpr int ORBIS_NP_TROPHY_NAME_MAX_SIZE = 128; +constexpr int ORBIS_NP_TROPHY_DESCR_MAX_SIZE = 1024; +constexpr int ORBIS_NP_TROPHY_NUM_MAX = 128; + +constexpr int ORBIS_NP_TROPHY_INVALID_HANDLE = -1; +constexpr int ORBIS_NP_TROPHY_INVALID_CONTEXT = -1; +constexpr int ORBIS_NP_TROPHY_INVALID_TROPHY_ID = -1; + +typedef int32_t OrbisNpTrophyHandle; +typedef int32_t OrbisNpTrophyContext; +typedef int32_t OrbisNpTrophyId; +typedef uint32_t OrbisNpTrophyFlagMask; + +struct OrbisNpTrophyFlagArray { + OrbisNpTrophyFlagMask + flag_bits[ORBIS_NP_TROPHY_FLAG_SETSIZE >> ORBIS_NP_TROPHY_FLAG_BITS_SHIFT]; +}; + +void ORBIS_NP_TROPHY_FLAG_ZERO(OrbisNpTrophyFlagArray* p); +void ORBIS_NP_TROPHY_FLAG_SET(int32_t trophyId, OrbisNpTrophyFlagArray* p); +void ORBIS_NP_TROPHY_FLAG_SET_ALL(OrbisNpTrophyFlagArray* p); +void ORBIS_NP_TROPHY_FLAG_CLR(int32_t trophyId, OrbisNpTrophyFlagArray* p); +bool ORBIS_NP_TROPHY_FLAG_ISSET(int32_t trophyId, OrbisNpTrophyFlagArray* p); + +struct OrbisNpTrophyData { + size_t size; + OrbisNpTrophyId trophyId; + bool unlocked; + uint8_t reserved[3]; + Rtc::OrbisRtcTick timestamp; +}; + +typedef int32_t OrbisNpTrophyGrade; +constexpr int ORBIS_NP_TROPHY_GRADE_UNKNOWN = 0; +constexpr int ORBIS_NP_TROPHY_GRADE_PLATINUM = 1; +constexpr int ORBIS_NP_TROPHY_GRADE_GOLD = 2; +constexpr int ORBIS_NP_TROPHY_GRADE_SILVER = 3; +constexpr int ORBIS_NP_TROPHY_GRADE_BRONZE = 4; + +typedef int32_t OrbisNpTrophyGroupId; +constexpr int ORBIS_NP_TROPHY_BASE_GAME_GROUP_ID = -1; +constexpr int ORBIS_NP_TROPHY_INVALID_GROUP_ID = -2; + +struct OrbisNpTrophyDetails { + size_t size; + OrbisNpTrophyId trophyId; + OrbisNpTrophyGrade trophyGrade; + OrbisNpTrophyGroupId groupId; + bool hidden; + uint8_t reserved[3]; + char name[ORBIS_NP_TROPHY_NAME_MAX_SIZE]; + char description[ORBIS_NP_TROPHY_DESCR_MAX_SIZE]; +}; + +struct OrbisNpTrophyGameData { + size_t size; + uint32_t unlockedTrophies; + uint32_t unlockedPlatinum; + uint32_t unlockedGold; + uint32_t unlockedSilver; + uint32_t unlockedBronze; + uint32_t progressPercentage; +}; + +struct OrbisNpTrophyGameDetails { + size_t size; + uint32_t numGroups; + uint32_t numTrophies; + uint32_t numPlatinum; + uint32_t numGold; + uint32_t numSilver; + uint32_t numBronze; + char title[ORBIS_NP_TROPHY_GAME_TITLE_MAX_SIZE]; + char description[ORBIS_NP_TROPHY_GAME_DESCR_MAX_SIZE]; +}; + +struct OrbisNpTrophyGroupData { + size_t size; + OrbisNpTrophyGroupId groupId; + uint32_t unlockedTrophies; + uint32_t unlockedPlatinum; + uint32_t unlockedGold; + uint32_t unlockedSilver; + uint32_t unlockedBronze; + uint32_t progressPercentage; + uint8_t reserved[4]; +}; + +struct OrbisNpTrophyGroupDetails { + size_t size; + OrbisNpTrophyGroupId groupId; + uint32_t numTrophies; + uint32_t numPlatinum; + uint32_t numGold; + uint32_t numSilver; + uint32_t numBronze; + char title[ORBIS_NP_TROPHY_GROUP_TITLE_MAX_SIZE]; + char description[ORBIS_NP_TROPHY_GROUP_DESCR_MAX_SIZE]; +}; + +int PS4_SYSV_ABI sceNpTrophyAbortHandle(OrbisNpTrophyHandle handle); int PS4_SYSV_ABI sceNpTrophyCaptureScreenshot(); int PS4_SYSV_ABI sceNpTrophyConfigGetTrophyDetails(); int PS4_SYSV_ABI sceNpTrophyConfigGetTrophyFlagArray(); @@ -22,18 +132,30 @@ int PS4_SYSV_ABI sceNpTrophyConfigGetTrophySetInfoInGroup(); int PS4_SYSV_ABI sceNpTrophyConfigGetTrophySetVersion(); int PS4_SYSV_ABI sceNpTrophyConfigGetTrophyTitleDetails(); int PS4_SYSV_ABI sceNpTrophyConfigHasGroupFeature(); -s32 PS4_SYSV_ABI sceNpTrophyCreateContext(u32* context, u32 user_id, u32 service_label, - u64 options); -s32 PS4_SYSV_ABI sceNpTrophyCreateHandle(u32* handle); -int PS4_SYSV_ABI sceNpTrophyDestroyContext(); -s32 PS4_SYSV_ABI sceNpTrophyDestroyHandle(u32 handle); -int PS4_SYSV_ABI sceNpTrophyGetGameIcon(); -int PS4_SYSV_ABI sceNpTrophyGetGameInfo(); -int PS4_SYSV_ABI sceNpTrophyGetGroupIcon(); -int PS4_SYSV_ABI sceNpTrophyGetGroupInfo(); -int PS4_SYSV_ABI sceNpTrophyGetTrophyIcon(); -int PS4_SYSV_ABI sceNpTrophyGetTrophyInfo(); -s32 PS4_SYSV_ABI sceNpTrophyGetTrophyUnlockState(u32 context, u32 handle, u32* flags, u32* count); +s32 PS4_SYSV_ABI sceNpTrophyCreateContext(OrbisNpTrophyContext* context, int32_t user_id, + uint32_t service_label, uint64_t options); +s32 PS4_SYSV_ABI sceNpTrophyCreateHandle(OrbisNpTrophyHandle* handle); +int PS4_SYSV_ABI sceNpTrophyDestroyContext(OrbisNpTrophyContext context); +s32 PS4_SYSV_ABI sceNpTrophyDestroyHandle(OrbisNpTrophyHandle handle); +int PS4_SYSV_ABI sceNpTrophyGetGameIcon(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + void* buffer, size_t* size); +int PS4_SYSV_ABI sceNpTrophyGetGameInfo(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyGameDetails* details, + OrbisNpTrophyGameData* data); +int PS4_SYSV_ABI sceNpTrophyGetGroupIcon(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyGroupId groupId, void* buffer, size_t* size); +int PS4_SYSV_ABI sceNpTrophyGetGroupInfo(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyGroupId groupId, + OrbisNpTrophyGroupDetails* details, + OrbisNpTrophyGroupData* data); +int PS4_SYSV_ABI sceNpTrophyGetTrophyIcon(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyId trophyId, void* buffer, size_t* size); +int PS4_SYSV_ABI sceNpTrophyGetTrophyInfo(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyId trophyId, OrbisNpTrophyDetails* details, + OrbisNpTrophyData* data); +s32 PS4_SYSV_ABI sceNpTrophyGetTrophyUnlockState(OrbisNpTrophyContext context, + OrbisNpTrophyHandle handle, + OrbisNpTrophyFlagArray* flags, u32* count); int PS4_SYSV_ABI sceNpTrophyGroupArrayGetNum(); int PS4_SYSV_ABI sceNpTrophyIntAbortHandle(); int PS4_SYSV_ABI sceNpTrophyIntCheckNetSyncTitles(); @@ -47,10 +169,12 @@ int PS4_SYSV_ABI sceNpTrophyIntGetTrpIconByUri(); int PS4_SYSV_ABI sceNpTrophyIntNetSyncTitle(); int PS4_SYSV_ABI sceNpTrophyIntNetSyncTitles(); int PS4_SYSV_ABI sceNpTrophyNumInfoGetTotal(); -int PS4_SYSV_ABI sceNpTrophyRegisterContext(); +int PS4_SYSV_ABI sceNpTrophyRegisterContext(OrbisNpTrophyContext context, + OrbisNpTrophyHandle handle, uint64_t options); int PS4_SYSV_ABI sceNpTrophySetInfoGetTrophyFlagArray(); int PS4_SYSV_ABI sceNpTrophySetInfoGetTrophyNum(); -int PS4_SYSV_ABI sceNpTrophyShowTrophyList(); +int PS4_SYSV_ABI sceNpTrophyShowTrophyList(OrbisNpTrophyContext context, + OrbisNpTrophyHandle handle); int PS4_SYSV_ABI sceNpTrophySystemAbortHandle(); int PS4_SYSV_ABI sceNpTrophySystemBuildGroupIconUri(); int PS4_SYSV_ABI sceNpTrophySystemBuildNetTrophyIconUri(); @@ -94,7 +218,8 @@ int PS4_SYSV_ABI sceNpTrophySystemRemoveTitleData(); int PS4_SYSV_ABI sceNpTrophySystemRemoveUserData(); int PS4_SYSV_ABI sceNpTrophySystemSetDbgParam(); int PS4_SYSV_ABI sceNpTrophySystemSetDbgParamInt(); -int PS4_SYSV_ABI sceNpTrophyUnlockTrophy(); +int PS4_SYSV_ABI sceNpTrophyUnlockTrophy(OrbisNpTrophyContext context, OrbisNpTrophyHandle handle, + OrbisNpTrophyId trophyId, OrbisNpTrophyId* platinumId); int PS4_SYSV_ABI Func_149656DA81D41C59(); int PS4_SYSV_ABI Func_9F80071876FFA5F6(); int PS4_SYSV_ABI Func_F8EF6F5350A91990(); diff --git a/src/core/libraries/np_trophy/trophy_ui.cpp b/src/core/libraries/np_trophy/trophy_ui.cpp new file mode 100644 index 0000000000..6f60e8f9af --- /dev/null +++ b/src/core/libraries/np_trophy/trophy_ui.cpp @@ -0,0 +1,74 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include +#include +#include "common/assert.h" +#include "imgui/imgui_std.h" +#include "trophy_ui.h" + +using namespace ImGui; +using namespace Libraries::NpTrophy; + +TrophyUI::TrophyUI() { + AddLayer(this); +} + +TrophyUI::~TrophyUI() { + Finish(); +} + +void Libraries::NpTrophy::TrophyUI::AddTrophyToQueue(int trophyId, std::string trophyName) { + TrophyInfo newInfo; + newInfo.trophyId = trophyId; + newInfo.trophyName = trophyName; + trophyQueue.push_back(newInfo); +} + +void TrophyUI::Finish() { + RemoveLayer(this); +} + +bool displayingTrophy; +std::chrono::steady_clock::time_point trophyStartedTime; + +void TrophyUI::Draw() { + const auto& io = GetIO(); + + const ImVec2 window_size{ + std::min(io.DisplaySize.x, 200.f), + std::min(io.DisplaySize.y, 75.f), + }; + + if (trophyQueue.size() != 0) { + if (!displayingTrophy) { + displayingTrophy = true; + trophyStartedTime = std::chrono::steady_clock::now(); + } + + std::chrono::steady_clock::time_point timeNow = std::chrono::steady_clock::now(); + std::chrono::seconds duration = + std::chrono::duration_cast(timeNow - trophyStartedTime); + + if (duration.count() >= 5) { + trophyQueue.erase(trophyQueue.begin()); + displayingTrophy = false; + } + + if (trophyQueue.size() != 0) { + SetNextWindowSize(window_size); + SetNextWindowCollapsed(false); + SetNextWindowPos(ImVec2(io.DisplaySize.x - 200, 50)); + KeepNavHighlight(); + + TrophyInfo currentTrophyInfo = trophyQueue[0]; + if (Begin("Trophy Window", nullptr, + ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoSavedSettings | + ImGuiWindowFlags_NoInputs)) { + Text("Trophy earned!"); + TextWrapped("%s", currentTrophyInfo.trophyName.c_str()); + } + End(); + } + } +} \ No newline at end of file diff --git a/src/core/libraries/np_trophy/trophy_ui.h b/src/core/libraries/np_trophy/trophy_ui.h new file mode 100644 index 0000000000..060d80dec5 --- /dev/null +++ b/src/core/libraries/np_trophy/trophy_ui.h @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include +#include + +#include "common/fixed_value.h" +#include "common/types.h" +#include "core/libraries/np_trophy/np_trophy.h" +#include "imgui/imgui_layer.h" + +namespace Libraries::NpTrophy { + +struct TrophyInfo { + int trophyId = -1; + std::string trophyName; +}; + +class TrophyUI final : public ImGui::Layer { + std::vector trophyQueue; + +public: + TrophyUI(); + ~TrophyUI() override; + + void AddTrophyToQueue(int trophyId, std::string trophyName); + + void Finish(); + + void Draw() override; +}; + +}; // namespace Libraries::NpTrophy \ No newline at end of file diff --git a/src/core/libraries/pad/pad.cpp b/src/core/libraries/pad/pad.cpp index cb0da552a2..6c3b1f56c6 100644 --- a/src/core/libraries/pad/pad.cpp +++ b/src/core/libraries/pad/pad.cpp @@ -250,7 +250,7 @@ int PS4_SYSV_ABI scePadOpen(s32 userId, s32 type, s32 index, const OrbisPadOpenP if (type != ORBIS_PAD_PORT_TYPE_SPECIAL) return ORBIS_PAD_ERROR_DEVICE_NOT_CONNECTED; } else { - if (type != ORBIS_PAD_PORT_TYPE_STANDARD) + if (type != ORBIS_PAD_PORT_TYPE_STANDARD && type != ORBIS_PAD_PORT_TYPE_REMOTE_CONTROL) return ORBIS_PAD_ERROR_DEVICE_NOT_CONNECTED; } return 1; // dummy @@ -263,7 +263,7 @@ int PS4_SYSV_ABI scePadOpenExt(s32 userId, s32 type, s32 index, if (type != ORBIS_PAD_PORT_TYPE_SPECIAL) return ORBIS_PAD_ERROR_DEVICE_NOT_CONNECTED; } else { - if (type != ORBIS_PAD_PORT_TYPE_STANDARD) + if (type != ORBIS_PAD_PORT_TYPE_STANDARD && type != ORBIS_PAD_PORT_TYPE_REMOTE_CONTROL) return ORBIS_PAD_ERROR_DEVICE_NOT_CONNECTED; } return 1; // dummy @@ -522,8 +522,8 @@ int PS4_SYSV_ABI scePadSetUserColor() { int PS4_SYSV_ABI scePadSetVibration(s32 handle, const OrbisPadVibrationParam* pParam) { if (pParam != nullptr) { - LOG_INFO(Lib_Pad, "scePadSetVibration called handle = {} data = {} , {}", handle, - pParam->smallMotor, pParam->largeMotor); + LOG_DEBUG(Lib_Pad, "scePadSetVibration called handle = {} data = {} , {}", handle, + pParam->smallMotor, pParam->largeMotor); auto* controller = Common::Singleton::Instance(); controller->SetVibration(pParam->smallMotor, pParam->largeMotor); return ORBIS_OK; diff --git a/src/core/libraries/pad/pad.h b/src/core/libraries/pad/pad.h index b18bbc3555..f94a642cfb 100644 --- a/src/core/libraries/pad/pad.h +++ b/src/core/libraries/pad/pad.h @@ -16,6 +16,7 @@ constexpr int ORBIS_PAD_MAX_DEVICE_UNIQUE_DATA_SIZE = 12; constexpr int ORBIS_PAD_PORT_TYPE_STANDARD = 0; constexpr int ORBIS_PAD_PORT_TYPE_SPECIAL = 2; +constexpr int ORBIS_PAD_PORT_TYPE_REMOTE_CONTROL = 16; enum OrbisPadDeviceClass { ORBIS_PAD_DEVICE_CLASS_INVALID = -1, diff --git a/src/core/libraries/rtc/rtc.cpp b/src/core/libraries/rtc/rtc.cpp index 387a8558b3..7a46a1e315 100644 --- a/src/core/libraries/rtc/rtc.cpp +++ b/src/core/libraries/rtc/rtc.cpp @@ -5,156 +5,827 @@ #include "common/logging/log.h" #include "core/libraries/error_codes.h" +#include "core/libraries/kernel/libkernel.h" +#include "core/libraries/kernel/time_management.h" #include "core/libraries/libs.h" #include "rtc.h" #include "rtc_error.h" namespace Libraries::Rtc { -int PS4_SYSV_ABI sceRtcCheckValid() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcCheckValid(OrbisRtcDateTime* pTime) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + if (pTime->year == 0 || pTime->year > 9999) + return ORBIS_RTC_ERROR_INVALID_YEAR; + + if (pTime->month == 0 || pTime->month > 12) + return ORBIS_RTC_ERROR_INVALID_MONTH; + + if (pTime->day == 0) + return ORBIS_RTC_ERROR_INVALID_DAY; + + using namespace std::chrono; + year chronoYear = year(pTime->year); + month chronoMonth = month(pTime->month); + int lastDay = + static_cast(unsigned(year_month_day_last{chronoYear / chronoMonth / last}.day())); + + if (pTime->day > lastDay) + return ORBIS_RTC_ERROR_INVALID_DAY; + + if (pTime->hour >= 24) + return ORBIS_RTC_ERROR_INVALID_HOUR; + + if (pTime->minute >= 60) + return ORBIS_RTC_ERROR_INVALID_MINUTE; + + if (pTime->second >= 60) + return ORBIS_RTC_ERROR_INVALID_SECOND; + + if (pTime->microsecond >= 1000000) + return ORBIS_RTC_ERROR_INVALID_MICROSECOND; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcCompareTick() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcCompareTick(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + if (pTick1->tick <= pTick2->tick) + return 1; + else + return 0; + + return ORBIS_FAIL; } -int PS4_SYSV_ABI sceRtcConvertLocalTimeToUtc() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcConvertLocalTimeToUtc(OrbisRtcTick* pTickLocal, OrbisRtcTick* pTickUtc) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTickLocal == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + time_t seconds; + Kernel::OrbisKernelTimezone timezone; + + int convertValue = Kernel::sceKernelConvertLocaltimeToUtc( + (pTickLocal->tick - UNIX_EPOCH_TICKS) / 1000000, 0xffffffff, &seconds, &timezone, 0); + + if (convertValue >= 0) { + convertValue = sceRtcTickAddMinutes( + pTickUtc, pTickLocal, -(((timezone.tz_dsttime * 60) - timezone.tz_minuteswest))); + } + + return convertValue; } -int PS4_SYSV_ABI sceRtcConvertUtcToLocalTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcConvertUtcToLocalTime(OrbisRtcTick* pTickUtc, OrbisRtcTick* pTickLocal) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTickUtc == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + Kernel::OrbisKernelTimezone timeZone; + int returnValue = Kernel::sceKernelGettimezone(&timeZone); + + sceRtcTickAddMinutes(pTickLocal, pTickUtc, + -(timeZone.tz_minuteswest - (timeZone.tz_dsttime * 60))); + + return 0; } int PS4_SYSV_ABI sceRtcEnd() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; + return SCE_OK; } -int PS4_SYSV_ABI sceRtcFormatRFC2822() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcFormatRFC2822(char* pszDateTime, const OrbisRtcTick* pTickUtc, + int iTimeZoneMinutes) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pszDateTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + OrbisRtcTick formatTick; + + if (pTickUtc == nullptr) { + sceRtcGetCurrentTick(&formatTick); + } else { + formatTick.tick = pTickUtc->tick; + } + + sceRtcTickAddMinutes(&formatTick, &formatTick, iTimeZoneMinutes); + + OrbisRtcDateTime formatTime; + sceRtcSetTick(&formatTime, &formatTick); + + int validTime = sceRtcCheckValid(&formatTime); + + std::string formattedString; + + if (validTime >= 0) { + int weekDay = sceRtcGetDayOfWeek(formatTime.year, formatTime.month, formatTime.day); + switch (weekDay) { + case 0: + formattedString = "Sun, "; + break; + case 1: + formattedString = "Mon, "; + break; + case 2: + formattedString = "Tue, "; + break; + case 3: + formattedString = "Wed, "; + break; + case 4: + formattedString = "Thu, "; + break; + case 5: + formattedString = "Fri, "; + break; + case 6: + formattedString = "Sat, "; + break; + } + + if (formatTime.day < 10) { + formattedString += "0" + std::to_string(formatTime.day) + " "; + } else { + formattedString += std::to_string(formatTime.day) + " "; + } + + switch (formatTime.month) { + case 1: + formattedString += "Jan "; + break; + case 2: + formattedString += "Feb "; + break; + case 3: + formattedString += "Mar "; + break; + case 4: + formattedString += "Apr "; + break; + case 5: + formattedString += "May "; + break; + case 6: + formattedString += "Jun "; + break; + case 7: + formattedString += "Jul "; + break; + case 8: + formattedString += "Aug "; + break; + case 9: + formattedString += "Sep "; + break; + case 10: + formattedString += "Oct "; + break; + case 11: + formattedString += "Nov "; + break; + case 12: + formattedString += "Dec "; + break; + } + + formattedString += std::to_string(formatTime.year) + " "; + + if (formatTime.hour < 10) { + formattedString += "0" + std::to_string(formatTime.hour) + ":"; + } else { + formattedString += std::to_string(formatTime.hour) + ":"; + } + + if (formatTime.minute < 10) { + formattedString += "0" + std::to_string(formatTime.minute) + ":"; + } else { + formattedString += std::to_string(formatTime.minute) + ":"; + } + + if (formatTime.second < 10) { + formattedString += "0" + std::to_string(formatTime.second) + " "; + } else { + formattedString += std::to_string(formatTime.second) + " "; + } + + if (iTimeZoneMinutes == 0) { + formattedString += "+0000"; + } else { + int timeZoneHours = iTimeZoneMinutes / 60; + int timeZoneRemainder = iTimeZoneMinutes % 60; + + if (timeZoneHours < 0) { + formattedString += "-"; + timeZoneHours *= -1; + } else { + formattedString += "+"; + } + + if (timeZoneHours < 10) { + formattedString += "0" + std::to_string(timeZoneHours); + } else { + formattedString += std::to_string(timeZoneHours); + } + + if (timeZoneRemainder == 0) { + formattedString += "00"; + } else { + if (timeZoneRemainder < 0) + timeZoneRemainder *= -1; + formattedString += std::to_string(timeZoneRemainder); + } + } + + for (int i = 0; i < formattedString.size() + 1; ++i) { + pszDateTime[i] = formattedString.c_str()[i]; + } + } + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcFormatRFC2822LocalTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcFormatRFC2822LocalTime(char* pszDateTime, const OrbisRtcTick* pTickUtc) { + LOG_TRACE(Lib_Rtc, "called"); + + Kernel::OrbisKernelTimezone timeZone; + Kernel::sceKernelGettimezone(&timeZone); + + return sceRtcFormatRFC2822(pszDateTime, pTickUtc, + -(timeZone.tz_minuteswest - (timeZone.tz_dsttime * 60))); } -int PS4_SYSV_ABI sceRtcFormatRFC3339() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcFormatRFC3339(char* pszDateTime, const OrbisRtcTick* pTickUtc, + int iTimeZoneMinutes) { + LOG_TRACE(Lib_Rtc, "called"); + return sceRtcFormatRFC3339Precise(pszDateTime, pTickUtc, iTimeZoneMinutes); } -int PS4_SYSV_ABI sceRtcFormatRFC3339LocalTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcFormatRFC3339LocalTime(char* pszDateTime, const OrbisRtcTick* pTickUtc) { + LOG_TRACE(Lib_Rtc, "called"); + + Kernel::OrbisKernelTimezone timeZone; + Kernel::sceKernelGettimezone(&timeZone); + + return sceRtcFormatRFC3339(pszDateTime, pTickUtc, + -(timeZone.tz_minuteswest - (timeZone.tz_dsttime * 60))); } -int PS4_SYSV_ABI sceRtcFormatRFC3339Precise() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcFormatRFC3339Precise(char* pszDateTime, const OrbisRtcTick* pTickUtc, + int iTimeZoneMinutes) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pszDateTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + OrbisRtcTick formatTick; + + if (pTickUtc == nullptr) { + sceRtcGetCurrentTick(&formatTick); + } else { + formatTick.tick = pTickUtc->tick; + } + + sceRtcTickAddMinutes(&formatTick, &formatTick, iTimeZoneMinutes); + + OrbisRtcDateTime formatTime; + + sceRtcSetTick(&formatTime, &formatTick); + + std::string formattedString; + formattedString = std::to_string(formatTime.year) + "-"; + + if (formatTime.month < 10) { + formattedString += "0" + std::to_string(formatTime.month) + "-"; + } else { + formattedString += std::to_string(formatTime.month) + "-"; + } + + if (formatTime.day < 10) { + formattedString += "0" + std::to_string(formatTime.day) + "T"; + } else { + formattedString += std::to_string(formatTime.day) + "T"; + } + + if (formatTime.hour < 10) { + formattedString += "0" + std::to_string(formatTime.hour) + ":"; + } else { + formattedString += std::to_string(formatTime.hour) + ":"; + } + + if (formatTime.minute < 10) { + formattedString += "0" + std::to_string(formatTime.minute) + ":"; + } else { + formattedString += std::to_string(formatTime.minute) + ":"; + } + + if (formatTime.second < 10) { + formattedString += "0" + std::to_string(formatTime.second); + } else { + formattedString += std::to_string(formatTime.second); + } + + if (formatTime.microsecond != 0) { + formattedString += "." + std::to_string(formatTime.microsecond / 1000).substr(0, 2); + } else { + formattedString += ".00"; + } + + if (iTimeZoneMinutes == 0) { + formattedString += "Z"; + } else { + int timeZoneHours = iTimeZoneMinutes / 60; + int timeZoneRemainder = iTimeZoneMinutes % 60; + + if (timeZoneHours < 0) { + formattedString += "-"; + timeZoneHours *= -1; + } else { + formattedString += "+"; + } + + if (timeZoneHours < 10) { + formattedString += "0" + std::to_string(timeZoneHours); + } else { + formattedString += std::to_string(timeZoneHours); + } + + if (timeZoneRemainder == 0) { + formattedString += ":00"; + } else { + if (timeZoneRemainder < 0) + timeZoneRemainder *= -1; + formattedString += ":" + std::to_string(timeZoneRemainder); + } + } + + for (int i = 0; i < formattedString.size() + 1; ++i) { + pszDateTime[i] = formattedString.c_str()[i]; + } + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcFormatRFC3339PreciseLocalTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcFormatRFC3339PreciseLocalTime(char* pszDateTime, + const OrbisRtcTick* pTickUtc) { + LOG_TRACE(Lib_Rtc, "called"); + + Kernel::OrbisKernelTimezone timeZone; + Kernel::sceKernelGettimezone(&timeZone); + + return sceRtcFormatRFC3339Precise(pszDateTime, pTickUtc, + -(timeZone.tz_minuteswest - (timeZone.tz_dsttime * 60))); } -int PS4_SYSV_ABI sceRtcGetCurrentAdNetworkTick() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetCurrentAdNetworkTick(OrbisRtcTick* pTick) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + Kernel::OrbisKernelTimespec clocktime; + int returnValue = Kernel::sceKernelClockGettime(Kernel::ORBIS_CLOCK_REALTIME, &clocktime); + + if (returnValue == SCE_OK) { + pTick->tick = clocktime.tv_nsec / 1000 + clocktime.tv_sec * 1000000 + UNIX_EPOCH_TICKS; + } else { + return ORBIS_RTC_ERROR_NOT_INITIALIZED; + } + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcGetCurrentClock() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetCurrentClock(OrbisRtcDateTime* pTime, int timeZone) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr) + return ORBIS_RTC_ERROR_DATETIME_UNINITIALIZED; + + Kernel::OrbisKernelTimespec clocktime; + int returnValue = Kernel::sceKernelClockGettime(Kernel::ORBIS_CLOCK_REALTIME, &clocktime); + + if (returnValue == SCE_OK) { + OrbisRtcTick clockTick; + clockTick.tick = clocktime.tv_nsec / 1000 + clocktime.tv_sec * 1000000 + UNIX_EPOCH_TICKS; + + sceRtcTickAddMinutes(&clockTick, &clockTick, timeZone); + sceRtcSetTick(pTime, &clockTick); + } + + return returnValue; } -int PS4_SYSV_ABI sceRtcGetCurrentClockLocalTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetCurrentClockLocalTime(OrbisRtcDateTime* pTime) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr) + return ORBIS_RTC_ERROR_DATETIME_UNINITIALIZED; + + Kernel::OrbisKernelTimezone timeZone; + int returnValue = Kernel::sceKernelGettimezone(&timeZone); + + if (returnValue >= 0) { + Kernel::OrbisKernelTimespec clocktime; + + // calculate total timezone offset for converting UTC to local time + uint64_t tzOffset = -(timeZone.tz_minuteswest - (timeZone.tz_dsttime * 60)); + + if (returnValue >= 0) { + OrbisRtcTick newTick; + sceRtcGetCurrentTick(&newTick); + sceRtcTickAddMinutes(&newTick, &newTick, tzOffset); + sceRtcSetTick(pTime, &newTick); + } + } + + return returnValue; } -int PS4_SYSV_ABI sceRtcGetCurrentDebugNetworkTick() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetCurrentDebugNetworkTick(OrbisRtcTick* pTick) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + Kernel::OrbisKernelTimespec clocktime; + int returnValue = Kernel::sceKernelClockGettime(Kernel::ORBIS_CLOCK_REALTIME, &clocktime); + + if (returnValue == SCE_OK) { + pTick->tick = clocktime.tv_nsec / 1000 + clocktime.tv_sec * 1000000 + UNIX_EPOCH_TICKS; + } else { + return ORBIS_RTC_ERROR_NOT_INITIALIZED; + } + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcGetCurrentNetworkTick() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetCurrentNetworkTick(OrbisRtcTick* pTick) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + Kernel::OrbisKernelTimespec clocktime; + int returnValue = Kernel::sceKernelClockGettime(Kernel::ORBIS_CLOCK_REALTIME, &clocktime); + + if (returnValue == SCE_OK) { + pTick->tick = clocktime.tv_nsec / 1000 + clocktime.tv_sec * 1000000 + UNIX_EPOCH_TICKS; + } else { + return ORBIS_RTC_ERROR_NOT_INITIALIZED; + } + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcGetCurrentRawNetworkTick() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetCurrentRawNetworkTick(OrbisRtcTick* pTick) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + Kernel::OrbisKernelTimespec clocktime; + int returnValue = Kernel::sceKernelClockGettime(Kernel::ORBIS_CLOCK_REALTIME, &clocktime); + + if (returnValue == SCE_OK) { + pTick->tick = clocktime.tv_nsec / 1000 + clocktime.tv_sec * 1000000 + UNIX_EPOCH_TICKS; + } else { + return ORBIS_RTC_ERROR_NOT_INITIALIZED; + } + + return SCE_OK; } int PS4_SYSV_ABI sceRtcGetCurrentTick(OrbisRtcTick* pTick) { - pTick->tick = std::chrono::duration_cast( - std::chrono::high_resolution_clock::now().time_since_epoch()) - .count(); - return ORBIS_OK; + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick == nullptr) + return ORBIS_RTC_ERROR_DATETIME_UNINITIALIZED; + + Kernel::OrbisKernelTimespec clocktime; + int returnValue = Kernel::sceKernelClockGettime(Kernel::ORBIS_CLOCK_REALTIME, &clocktime); + + if (returnValue >= 0) { + pTick->tick = clocktime.tv_nsec / 1000 + clocktime.tv_sec * 1000000 + UNIX_EPOCH_TICKS; + } + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcGetDayOfWeek() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetDayOfWeek(int year, int month, int day) { + LOG_TRACE(Lib_Rtc, "called"); + + int sdk_version = 0; + int sdkResult = Kernel::sceKernelGetCompiledSdkVersion(&sdk_version); + if (sdkResult != ORBIS_OK) { + sdk_version = 0; + } + + if (sdk_version < 0x3000000) { + if (year < 1) { + return ORBIS_RTC_ERROR_INVALID_YEAR; + } + if (month > 12 || month <= 0) { + return ORBIS_RTC_ERROR_INVALID_MONTH; + } + } else { + if (year > 9999 || year < 1) { + return ORBIS_RTC_ERROR_INVALID_YEAR; + } + if (month > 12 || month <= 0) { + return ORBIS_RTC_ERROR_INVALID_MONTH; + } + } + + int daysInMonth = sceRtcGetDaysInMonth(year, month); + + if (day <= 0 || day > daysInMonth) + return ORBIS_RTC_ERROR_INVALID_DAY; + + std::chrono::sys_days chrono_time{std::chrono::year(year) / std::chrono::month(month) / + std::chrono::day(day)}; + std::chrono::weekday chrono_weekday{chrono_time}; + + return chrono_weekday.c_encoding(); } -int PS4_SYSV_ABI sceRtcGetDaysInMonth() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetDaysInMonth(int year, int month) { + LOG_TRACE(Lib_Rtc, "called"); + + if (year <= 0) + return ORBIS_RTC_ERROR_INVALID_YEAR; + + if (month <= 0 || month > 12) + return ORBIS_RTC_ERROR_INVALID_MONTH; + + std::chrono::year chronoYear = std::chrono::year(year); + std::chrono::month chronoMonth = std::chrono::month(month); + int lastDay = static_cast(unsigned( + std::chrono::year_month_day_last{chronoYear / chronoMonth / std::chrono::last}.day())); + + return lastDay; } -int PS4_SYSV_ABI sceRtcGetDosTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetDosTime(OrbisRtcDateTime* pTime, unsigned int* dosTime) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr || dosTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + int isValid = sceRtcCheckValid(pTime); + if (isValid != SCE_OK) { + return isValid; + } + + *dosTime |= (pTime->second / 2) & 0x1F; + *dosTime |= (pTime->minute & 0x3F) << 5; + *dosTime |= (pTime->hour & 0x1F) << 11; + *dosTime |= (pTime->day & 0x1F) << 16; + *dosTime |= (pTime->month & 0x0F) << 21; + *dosTime |= ((pTime->year - 1980) & 0x7F) << 25; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcGetTick() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetTick(OrbisRtcDateTime* pTime, OrbisRtcTick* pTick) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr || pTick == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + int isTimeValid = sceRtcCheckValid(pTime); + if (isTimeValid != 0) + return isTimeValid; + + if (pTime->month > 2) { + pTime->month -= 3; + } else { + pTime->month += 9; + pTime->year -= 1; + } + + int c = pTime->year / 100; + int ya = pTime->year - 100 * c; + + u64 days; + u64 msec; + + days = ((146097 * c) >> 2) + ((1461 * ya) >> 2) + (153 * pTime->month + 2) / 5 + pTime->day; + days -= 307; + days *= 86400000000; + + msec = pTime->hour * 3600000000 + pTime->minute * 60000000 + pTime->second * 1000000 + + pTime->microsecond; + + pTick->tick = days + msec; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcGetTickResolution() { +unsigned int PS4_SYSV_ABI sceRtcGetTickResolution() { + LOG_TRACE(Lib_Rtc, "called"); + return 1000000; } -int PS4_SYSV_ABI sceRtcGetTime_t() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetTime_t(OrbisRtcDateTime* pTime, time_t* llTime) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr || llTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + int isValid = sceRtcCheckValid(pTime); + if (isValid != SCE_OK) { + return isValid; + } + + OrbisRtcTick timeTick; + sceRtcGetTick(pTime, &timeTick); + + if (timeTick.tick < UNIX_EPOCH_TICKS) { + *llTime = 0; + } else { + *llTime = (timeTick.tick - UNIX_EPOCH_TICKS) / 1000000; + } + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcGetWin32FileTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcGetWin32FileTime(OrbisRtcDateTime* pTime, uint64_t* ulWin32Time) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr || ulWin32Time == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + int isValid = sceRtcCheckValid(pTime); + if (isValid != SCE_OK) { + return isValid; + } + + OrbisRtcTick timeTick; + sceRtcGetTick(pTime, &timeTick); + + if (timeTick.tick < WIN32_FILETIME_EPOCH_TICKS) { + *ulWin32Time = 0; + } else { + *ulWin32Time = (timeTick.tick - WIN32_FILETIME_EPOCH_TICKS) * 10; + } + + return SCE_OK; } int PS4_SYSV_ABI sceRtcInit() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; + return SCE_OK; } -int PS4_SYSV_ABI sceRtcIsLeapYear() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcIsLeapYear(int yearInt) { + LOG_TRACE(Lib_Rtc, "called"); + + if (yearInt < 1) + return ORBIS_RTC_ERROR_INVALID_YEAR; + + using namespace std::chrono; + + year_month_day_last ymdl{year(yearInt) / February / last}; + return (ymdl.day() == 29d); } -int PS4_SYSV_ABI sceRtcParseDateTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int GetMonthFromString(std::string monthStr) { + if (monthStr == "Jan") + return 1; + + if (monthStr == "Feb") + return 2; + + if (monthStr == "Mar") + return 3; + + if (monthStr == "Apr") + return 4; + + if (monthStr == "May") + return 5; + + if (monthStr == "Jun") + return 6; + + if (monthStr == "Jul") + return 7; + + if (monthStr == "Aug") + return 8; + + if (monthStr == "Sep") + return 9; + + if (monthStr == "Oct") + return 10; + + if (monthStr == "Nov") + return 11; + + if (monthStr == "Dec") + return 12; + + return 1; } -int PS4_SYSV_ABI sceRtcParseRFC3339() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcParseDateTime(OrbisRtcTick* pTickUtc, const char* pszDateTime) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTickUtc == nullptr || pszDateTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + std::string dateTimeString = std::string(pszDateTime); + + char formatKey = dateTimeString[22]; + OrbisRtcDateTime dateTime; + + if (formatKey == 'Z' || formatKey == '-' || formatKey == '+') { + // RFC3339 + sceRtcParseRFC3339(pTickUtc, pszDateTime); + } else if (formatKey == ':') { + // RFC2822 + dateTime.day = std::stoi(dateTimeString.substr(5, 2)); + dateTime.month = GetMonthFromString(dateTimeString.substr(8, 3)); + dateTime.year = std::stoi(dateTimeString.substr(12, 4)); + dateTime.hour = std::stoi(dateTimeString.substr(17, 2)); + dateTime.minute = std::stoi(dateTimeString.substr(20, 2)); + dateTime.second = std::stoi(dateTimeString.substr(23, 2)); + dateTime.microsecond = 0; + + sceRtcGetTick(&dateTime, pTickUtc); + + if (dateTimeString[26] == '+') { + int timeZoneOffset = std::stoi(dateTimeString.substr(27, 2)) * 60; + timeZoneOffset += std::stoi(dateTimeString.substr(29, 2)); + sceRtcTickAddMinutes(pTickUtc, pTickUtc, timeZoneOffset); + } else if (dateTimeString[26] == '-') { + int timeZoneOffset = std::stoi(dateTimeString.substr(27, 2)) * 60; + timeZoneOffset += std::stoi(dateTimeString.substr(29, 2)); + timeZoneOffset *= -1; + sceRtcTickAddMinutes(pTickUtc, pTickUtc, timeZoneOffset); + } + + } else { + // asctime + dateTime.month = GetMonthFromString(dateTimeString.substr(4, 3)); + dateTime.day = std::stoi(dateTimeString.substr(8, 2)); + dateTime.hour = std::stoi(dateTimeString.substr(11, 2)); + dateTime.minute = std::stoi(dateTimeString.substr(14, 2)); + dateTime.second = std::stoi(dateTimeString.substr(17, 2)); + dateTime.year = std::stoi(dateTimeString.substr(20, 4)); + dateTime.microsecond = 0; + + sceRtcGetTick(&dateTime, pTickUtc); + } + + return SCE_OK; +} + +int PS4_SYSV_ABI sceRtcParseRFC3339(OrbisRtcTick* pTickUtc, const char* pszDateTime) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTickUtc == nullptr || pszDateTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + std::string dateTimeString = std::string(pszDateTime); + + OrbisRtcDateTime dateTime; + dateTime.year = std::stoi(dateTimeString.substr(0, 4)); + dateTime.month = std::stoi(dateTimeString.substr(5, 2)); + dateTime.day = std::stoi(dateTimeString.substr(8, 2)); + dateTime.hour = std::stoi(dateTimeString.substr(11, 2)); + dateTime.minute = std::stoi(dateTimeString.substr(14, 2)); + dateTime.second = std::stoi(dateTimeString.substr(17, 2)); + dateTime.microsecond = std::stoi(dateTimeString.substr(20, 2)); + + sceRtcGetTick(&dateTime, pTickUtc); + + if (dateTimeString[22] != 'Z') { + if (dateTimeString[22] == '-') { + int timeZoneOffset = std::stoi(dateTimeString.substr(23, 2)) * 60; + timeZoneOffset += std::stoi(dateTimeString.substr(26, 2)); + timeZoneOffset *= -1; + sceRtcTickAddMinutes(pTickUtc, pTickUtc, timeZoneOffset); + } else if (dateTimeString[22] == '+') { + int timeZoneOffset = std::stoi(dateTimeString.substr(23, 2)) * 60; + timeZoneOffset += std::stoi(dateTimeString.substr(26, 2)); + sceRtcTickAddMinutes(pTickUtc, pTickUtc, timeZoneOffset); + } + } + + return SCE_OK; } int PS4_SYSV_ABI sceRtcSetConf() { @@ -162,89 +833,294 @@ int PS4_SYSV_ABI sceRtcSetConf() { return ORBIS_OK; } -int PS4_SYSV_ABI sceRtcSetCurrentAdNetworkTick() { +int PS4_SYSV_ABI sceRtcSetCurrentAdNetworkTick(OrbisRtcTick* pTick) { LOG_ERROR(Lib_Rtc, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceRtcSetCurrentDebugNetworkTick() { +int PS4_SYSV_ABI sceRtcSetCurrentDebugNetworkTick(OrbisRtcTick* pTick) { LOG_ERROR(Lib_Rtc, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceRtcSetCurrentNetworkTick() { +int PS4_SYSV_ABI sceRtcSetCurrentNetworkTick(OrbisRtcTick* pTick) { LOG_ERROR(Lib_Rtc, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceRtcSetCurrentTick() { +int PS4_SYSV_ABI sceRtcSetCurrentTick(OrbisRtcTick* pTick) { LOG_ERROR(Lib_Rtc, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceRtcSetDosTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcSetDosTime(OrbisRtcDateTime* pTime, u32 dosTime) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + pTime->microsecond = 0; + pTime->second = (dosTime << 1) & 0x3e; + pTime->minute = (dosTime >> 5) & 0x3f; + pTime->hour = (dosTime & 0xf800) >> 0xb; + + int16_t days = dosTime >> 0x10; + + pTime->day = days & 0x1f; + pTime->month = (days >> 5) & 0x0f; + pTime->year = (days >> 9) + 1980; + return SCE_OK; } -int PS4_SYSV_ABI sceRtcSetTick() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcSetTick(OrbisRtcDateTime* pTime, OrbisRtcTick* pTick) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr || pTick == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + u32 ly, ld, lm, j; + u64 days, msec; + + days = pTick->tick / 86400000000; + msec = pTick->tick % 86400000000; + + days += 307; + + j = (days << 2) - 1; + ly = j / 146097; + + j -= (146097 * ly); + ld = j >> 2; + + j = ((ld << 2) + 3) / 1461; + ld = (((ld << 2) + 7) - 1461 * j) >> 2; + + lm = (5 * ld - 3) / 153; + ld = (5 * ld + 2 - 153 * lm) / 5; + ly = 100 * ly + j; + + if (lm < 10) { + lm += 3; + } else { + lm -= 9; + ly++; + } + + pTime->year = ly; + pTime->month = lm; + pTime->day = ld; + + pTime->hour = msec / 3600000000; + msec %= 3600000000; + pTime->minute = msec / 60000000; + msec %= 60000000; + pTime->second = msec / 1000000; + msec %= 1000000; + pTime->microsecond = msec; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcSetTime_t() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcSetTime_t(OrbisRtcDateTime* pTime, time_t llTime) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + int sdk_version; + int sdkResult = Kernel::sceKernelGetCompiledSdkVersion(&sdk_version); + if (sdkResult != ORBIS_OK) { + sdk_version = 0; + } + + OrbisRtcTick newTick; + if (sdk_version < 0x3000000) { + newTick.tick = (llTime & 0xffffffff) * 1000000; + } else { + if (llTime < 0) { + return ORBIS_RTC_ERROR_INVALID_VALUE; + } + newTick.tick = llTime * 1000000; + } + + newTick.tick += UNIX_EPOCH_TICKS; + sceRtcSetTick(pTime, &newTick); + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcSetWin32FileTime() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcSetWin32FileTime(OrbisRtcDateTime* pTime, int64_t ulWin32Time) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTime == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + u64 convertedTime = (ulWin32Time / 10) + WIN32_FILETIME_EPOCH_TICKS; + + OrbisRtcTick convertedTick; + convertedTick.tick = convertedTime; + + sceRtcSetTick(pTime, &convertedTick); + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddDays() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddDays(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + pTick1->tick = (lAdd * 86400000000) + pTick2->tick; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddHours() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddHours(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + pTick1->tick = (lAdd * 3600000000) + pTick2->tick; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddMicroseconds() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddMicroseconds(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, + int64_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + pTick1->tick = lAdd + pTick2->tick; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddMinutes() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddMinutes(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int64_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + pTick1->tick = (lAdd * 60000000) + pTick2->tick; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddMonths() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddMonths(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + if (lAdd == 0) { + pTick1->tick = pTick2->tick; + return SCE_OK; + } + + OrbisRtcDateTime time; + s64 s; + s64 tempMonth; + + sceRtcSetTick(&time, pTick1); + + if (lAdd >= 0) { + s = 1; + } else { + s = -1; + } + + time.year += (lAdd / 12); + tempMonth = time.month + (lAdd % 12) - 1; + + if (tempMonth > 11 || tempMonth < 0) { + tempMonth -= s * 12; + time.year += s; + } + + time.month = tempMonth + 1; + + using namespace std::chrono; + year chronoYear = year(time.year); + month chronoMonth = month(time.month); + int lastDay = + static_cast(unsigned(year_month_day_last{chronoYear / chronoMonth / last}.day())); + + if (time.day > lastDay) { + time.day = lastDay; + } + + int timeIsValid = sceRtcCheckValid(&time); + if (timeIsValid == SCE_OK) { + sceRtcGetTick(&time, pTick1); + } else { + return timeIsValid; + } + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddSeconds() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddSeconds(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int64_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + pTick1->tick = (lAdd * 1000000) + pTick2->tick; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddTicks() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddTicks(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int64_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + pTick1->tick = lAdd + pTick2->tick; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddWeeks() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddWeeks(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + pTick1->tick = (lAdd * 604800000000) + pTick2->tick; + + return SCE_OK; } -int PS4_SYSV_ABI sceRtcTickAddYears() { - LOG_ERROR(Lib_Rtc, "(STUBBED) called"); - return ORBIS_OK; +int PS4_SYSV_ABI sceRtcTickAddYears(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd) { + LOG_TRACE(Lib_Rtc, "called"); + + if (pTick1 == nullptr || pTick2 == nullptr) + return ORBIS_RTC_ERROR_INVALID_POINTER; + + OrbisRtcDateTime time; + + if (lAdd == 0) { + pTick1->tick = pTick2->tick; + return SCE_OK; + } + + sceRtcSetTick(&time, pTick1); + + time.year += lAdd; + + int timeIsValid = sceRtcCheckValid(&time); + if (timeIsValid == SCE_OK) { + sceRtcGetTick(&time, pTick1); + } else { + return timeIsValid; + } + + return SCE_OK; } void RegisterlibSceRtc(Core::Loader::SymbolsResolver* sym) { diff --git a/src/core/libraries/rtc/rtc.h b/src/core/libraries/rtc/rtc.h index ee6afa70e9..c41040863f 100644 --- a/src/core/libraries/rtc/rtc.h +++ b/src/core/libraries/rtc/rtc.h @@ -11,57 +11,81 @@ class SymbolsResolver; namespace Libraries::Rtc { +constexpr int ORBIS_RTC_DAYOFWEEK_SUNDAY = 0; +constexpr int ORBIS_RTC_DAYOFWEEK_MONDAY = 1; +constexpr int ORBIS_RTC_DAYOFWEEK_TUESDAY = 2; +constexpr int ORBIS_RTC_DAYOFWEEK_WEDNESDAY = 3; +constexpr int ORBIS_RTC_DAYOFWEEK_THURSDAY = 4; +constexpr int ORBIS_RTC_DAYOFWEEK_FRIDAY = 5; +constexpr int ORBIS_RTC_DAYOFWEEK_SATURDAY = 6; + +constexpr int64_t UNIX_EPOCH_TICKS = 0xdcbffeff2bc000; +constexpr int64_t WIN32_FILETIME_EPOCH_TICKS = 0xb36168b6a58000; + struct OrbisRtcTick { - u64 tick; + uint64_t tick; +}; + +struct OrbisRtcDateTime { + uint16_t year; + uint16_t month; + uint16_t day; + uint16_t hour; + uint16_t minute; + uint16_t second; + uint32_t microsecond; }; -int PS4_SYSV_ABI sceRtcCheckValid(); -int PS4_SYSV_ABI sceRtcCompareTick(); -int PS4_SYSV_ABI sceRtcConvertLocalTimeToUtc(); -int PS4_SYSV_ABI sceRtcConvertUtcToLocalTime(); +int PS4_SYSV_ABI sceRtcCheckValid(OrbisRtcDateTime* pTime); +int PS4_SYSV_ABI sceRtcCompareTick(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2); +int PS4_SYSV_ABI sceRtcConvertLocalTimeToUtc(OrbisRtcTick* pTickLocal, OrbisRtcTick* pTickUtc); +int PS4_SYSV_ABI sceRtcConvertUtcToLocalTime(OrbisRtcTick* pTickUtc, OrbisRtcTick* pTickLocal); int PS4_SYSV_ABI sceRtcEnd(); -int PS4_SYSV_ABI sceRtcFormatRFC2822(); -int PS4_SYSV_ABI sceRtcFormatRFC2822LocalTime(); -int PS4_SYSV_ABI sceRtcFormatRFC3339(); -int PS4_SYSV_ABI sceRtcFormatRFC3339LocalTime(); -int PS4_SYSV_ABI sceRtcFormatRFC3339Precise(); -int PS4_SYSV_ABI sceRtcFormatRFC3339PreciseLocalTime(); -int PS4_SYSV_ABI sceRtcGetCurrentAdNetworkTick(); -int PS4_SYSV_ABI sceRtcGetCurrentClock(); -int PS4_SYSV_ABI sceRtcGetCurrentClockLocalTime(); -int PS4_SYSV_ABI sceRtcGetCurrentDebugNetworkTick(); -int PS4_SYSV_ABI sceRtcGetCurrentNetworkTick(); -int PS4_SYSV_ABI sceRtcGetCurrentRawNetworkTick(); +int PS4_SYSV_ABI sceRtcFormatRFC2822(char* pszDateTime, const OrbisRtcTick* pTickUtc, int minutes); +int PS4_SYSV_ABI sceRtcFormatRFC2822LocalTime(char* pszDateTime, const OrbisRtcTick* pTickUtc); +int PS4_SYSV_ABI sceRtcFormatRFC3339(char* pszDateTime, const OrbisRtcTick* pTickUtc, int minutes); +int PS4_SYSV_ABI sceRtcFormatRFC3339LocalTime(char* pszDateTime, const OrbisRtcTick* pTickUtc); +int PS4_SYSV_ABI sceRtcFormatRFC3339Precise(char* pszDateTime, const OrbisRtcTick* pTickUtc, + int minutes); +int PS4_SYSV_ABI sceRtcFormatRFC3339PreciseLocalTime(char* pszDateTime, + const OrbisRtcTick* pTickUtc); +int PS4_SYSV_ABI sceRtcGetCurrentAdNetworkTick(OrbisRtcTick* pTick); +int PS4_SYSV_ABI sceRtcGetCurrentClock(OrbisRtcDateTime* pTime, int timeZone); +int PS4_SYSV_ABI sceRtcGetCurrentClockLocalTime(OrbisRtcDateTime* pTime); +int PS4_SYSV_ABI sceRtcGetCurrentDebugNetworkTick(OrbisRtcTick* pTick); +int PS4_SYSV_ABI sceRtcGetCurrentNetworkTick(OrbisRtcTick* pTick); +int PS4_SYSV_ABI sceRtcGetCurrentRawNetworkTick(OrbisRtcTick* pTick); int PS4_SYSV_ABI sceRtcGetCurrentTick(OrbisRtcTick* pTick); -int PS4_SYSV_ABI sceRtcGetDayOfWeek(); -int PS4_SYSV_ABI sceRtcGetDaysInMonth(); -int PS4_SYSV_ABI sceRtcGetDosTime(); -int PS4_SYSV_ABI sceRtcGetTick(); -int PS4_SYSV_ABI sceRtcGetTickResolution(); -int PS4_SYSV_ABI sceRtcGetTime_t(); -int PS4_SYSV_ABI sceRtcGetWin32FileTime(); +int PS4_SYSV_ABI sceRtcGetDayOfWeek(int year, int month, int day); +int PS4_SYSV_ABI sceRtcGetDaysInMonth(int year, int month); +int PS4_SYSV_ABI sceRtcGetDosTime(OrbisRtcDateTime* pTime, unsigned int* dosTime); +int PS4_SYSV_ABI sceRtcGetTick(OrbisRtcDateTime* pTime, OrbisRtcTick* pTick); +unsigned int PS4_SYSV_ABI sceRtcGetTickResolution(); +int PS4_SYSV_ABI sceRtcGetTime_t(OrbisRtcDateTime* pTime, time_t* llTime); +int PS4_SYSV_ABI sceRtcGetWin32FileTime(OrbisRtcDateTime* pTime, uint64_t* ulWin32Time); int PS4_SYSV_ABI sceRtcInit(); -int PS4_SYSV_ABI sceRtcIsLeapYear(); -int PS4_SYSV_ABI sceRtcParseDateTime(); -int PS4_SYSV_ABI sceRtcParseRFC3339(); +int PS4_SYSV_ABI sceRtcIsLeapYear(int yearInt); +int PS4_SYSV_ABI sceRtcParseDateTime(OrbisRtcTick* pTickUtc, const char* pszDateTime); +int PS4_SYSV_ABI sceRtcParseRFC3339(OrbisRtcTick* pTickUtc, const char* pszDateTime); int PS4_SYSV_ABI sceRtcSetConf(); -int PS4_SYSV_ABI sceRtcSetCurrentAdNetworkTick(); -int PS4_SYSV_ABI sceRtcSetCurrentDebugNetworkTick(); -int PS4_SYSV_ABI sceRtcSetCurrentNetworkTick(); -int PS4_SYSV_ABI sceRtcSetCurrentTick(); -int PS4_SYSV_ABI sceRtcSetDosTime(); -int PS4_SYSV_ABI sceRtcSetTick(); -int PS4_SYSV_ABI sceRtcSetTime_t(); -int PS4_SYSV_ABI sceRtcSetWin32FileTime(); -int PS4_SYSV_ABI sceRtcTickAddDays(); -int PS4_SYSV_ABI sceRtcTickAddHours(); -int PS4_SYSV_ABI sceRtcTickAddMicroseconds(); -int PS4_SYSV_ABI sceRtcTickAddMinutes(); -int PS4_SYSV_ABI sceRtcTickAddMonths(); -int PS4_SYSV_ABI sceRtcTickAddSeconds(); -int PS4_SYSV_ABI sceRtcTickAddTicks(); -int PS4_SYSV_ABI sceRtcTickAddWeeks(); -int PS4_SYSV_ABI sceRtcTickAddYears(); +int PS4_SYSV_ABI sceRtcSetCurrentAdNetworkTick(OrbisRtcTick* pTick); +int PS4_SYSV_ABI sceRtcSetCurrentDebugNetworkTick(OrbisRtcTick* pTick); +int PS4_SYSV_ABI sceRtcSetCurrentNetworkTick(OrbisRtcTick* pTick); +int PS4_SYSV_ABI sceRtcSetCurrentTick(OrbisRtcTick* pTick); +int PS4_SYSV_ABI sceRtcSetDosTime(OrbisRtcDateTime* pTime, u32 dosTime); +int PS4_SYSV_ABI sceRtcSetTick(OrbisRtcDateTime* pTime, OrbisRtcTick* pTick); +int PS4_SYSV_ABI sceRtcSetTime_t(OrbisRtcDateTime* pTime, time_t llTime); +int PS4_SYSV_ABI sceRtcSetWin32FileTime(OrbisRtcDateTime* pTime, int64_t ulWin32Time); +int PS4_SYSV_ABI sceRtcTickAddDays(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd); +int PS4_SYSV_ABI sceRtcTickAddHours(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd); +int PS4_SYSV_ABI sceRtcTickAddMicroseconds(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, + int64_t lAdd); +int PS4_SYSV_ABI sceRtcTickAddMinutes(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int64_t lAdd); +int PS4_SYSV_ABI sceRtcTickAddMonths(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd); +int PS4_SYSV_ABI sceRtcTickAddSeconds(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int64_t lAdd); +int PS4_SYSV_ABI sceRtcTickAddTicks(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int64_t lAdd); +int PS4_SYSV_ABI sceRtcTickAddWeeks(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd); +int PS4_SYSV_ABI sceRtcTickAddYears(OrbisRtcTick* pTick1, OrbisRtcTick* pTick2, int32_t lAdd); void RegisterlibSceRtc(Core::Loader::SymbolsResolver* sym); } // namespace Libraries::Rtc \ No newline at end of file diff --git a/src/core/libraries/rtc/rtc_error.h b/src/core/libraries/rtc/rtc_error.h index 04eecbbdfd..3af5a68fdd 100644 --- a/src/core/libraries/rtc/rtc_error.h +++ b/src/core/libraries/rtc/rtc_error.h @@ -3,6 +3,7 @@ #pragma once +constexpr int ORBIS_RTC_ERROR_DATETIME_UNINITIALIZED = 0x7FFEF9FE; constexpr int ORBIS_RTC_ERROR_INVALID_PARAMETER = 0x80010602; constexpr int ORBIS_RTC_ERROR_INVALID_TICK_PARAMETER = 0x80010603; constexpr int ORBIS_RTC_ERROR_INVALID_DATE_PARAMETER = 0x80010604; @@ -14,4 +15,18 @@ constexpr int ORBIS_RTC_ERROR_INVALID_DAYS_PARAMETER = 0x80010623; constexpr int ORBIS_RTC_ERROR_INVALID_HOURS_PARAMETER = 0x80010624; constexpr int ORBIS_RTC_ERROR_INVALID_MINUTES_PARAMETER = 0x80010625; constexpr int ORBIS_RTC_ERROR_INVALID_SECONDS_PARAMETER = 0x80010626; -constexpr int ORBIS_RTC_ERROR_INVALID_MILLISECONDS_PARAMETER = 0x80010627; \ No newline at end of file +constexpr int ORBIS_RTC_ERROR_INVALID_MILLISECONDS_PARAMETER = 0x80010627; +constexpr int ORBIS_RTC_ERROR_NOT_INITIALIZED = 0x80B50001; +constexpr int ORBIS_RTC_ERROR_INVALID_POINTER = 0x80B50002; +constexpr int ORBIS_RTC_ERROR_INVALID_VALUE = 0x80B50003; +constexpr int ORBIS_RTC_ERROR_INVALID_ARG = 0x80B50004; +constexpr int ORBIS_RTC_ERROR_NOT_SUPPORTED = 0x80B50005; +constexpr int ORBIS_RTC_ERROR_NO_CLOCK = 0x80B50006; +constexpr int ORBIS_RTC_ERROR_BAD_PARSE = 0x80B50007; +constexpr int ORBIS_RTC_ERROR_INVALID_YEAR = 0x80B50008; +constexpr int ORBIS_RTC_ERROR_INVALID_MONTH = 0x80B50009; +constexpr int ORBIS_RTC_ERROR_INVALID_DAY = 0x80B5000A; +constexpr int ORBIS_RTC_ERROR_INVALID_HOUR = 0x80B5000B; +constexpr int ORBIS_RTC_ERROR_INVALID_MINUTE = 0x80B5000C; +constexpr int ORBIS_RTC_ERROR_INVALID_SECOND = 0x80B5000D; +constexpr int ORBIS_RTC_ERROR_INVALID_MICROSECOND = 0x80B5000E; \ No newline at end of file diff --git a/src/core/libraries/save_data/dialog/savedatadialog.cpp b/src/core/libraries/save_data/dialog/savedatadialog.cpp new file mode 100644 index 0000000000..0ad7d7dc08 --- /dev/null +++ b/src/core/libraries/save_data/dialog/savedatadialog.cpp @@ -0,0 +1,164 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/elf_info.h" +#include "common/logging/log.h" +#include "core/libraries/libs.h" +#include "core/libraries/system/commondialog.h" +#include "magic_enum.hpp" +#include "savedatadialog.h" +#include "savedatadialog_ui.h" + +namespace Libraries::SaveData::Dialog { + +using CommonDialog::Error; +using CommonDialog::Result; +using CommonDialog::Status; + +static auto g_status = Status::NONE; +static SaveDialogState g_state{}; +static SaveDialogResult g_result{}; +static SaveDialogUi g_save_dialog_ui; + +Error PS4_SYSV_ABI sceSaveDataDialogClose() { + LOG_DEBUG(Lib_SaveDataDialog, "called"); + if (g_status != Status::RUNNING) { + return Error::NOT_RUNNING; + } + g_save_dialog_ui.Finish(ButtonId::INVALID); + g_save_dialog_ui = SaveDialogUi{}; + return Error::OK; +} + +Error PS4_SYSV_ABI sceSaveDataDialogGetResult(OrbisSaveDataDialogResult* result) { + LOG_DEBUG(Lib_SaveDataDialog, "called"); + if (g_status != Status::FINISHED) { + return Error::NOT_FINISHED; + } + if (result == nullptr) { + return Error::ARG_NULL; + } + g_result.CopyTo(*result); + return Error::OK; +} + +Status PS4_SYSV_ABI sceSaveDataDialogGetStatus() { + LOG_TRACE(Lib_SaveDataDialog, "called status={}", magic_enum::enum_name(g_status)); + return g_status; +} + +Error PS4_SYSV_ABI sceSaveDataDialogInitialize() { + LOG_DEBUG(Lib_SaveDataDialog, "called"); + if (!CommonDialog::g_isInitialized) { + return Error::NOT_SYSTEM_INITIALIZED; + } + if (g_status != Status::NONE) { + return Error::ALREADY_INITIALIZED; + } + if (CommonDialog::g_isUsed) { + return Error::BUSY; + } + g_status = Status::INITIALIZED; + CommonDialog::g_isUsed = true; + + return Error::OK; +} + +s32 PS4_SYSV_ABI sceSaveDataDialogIsReadyToDisplay() { + return 1; +} + +Error PS4_SYSV_ABI sceSaveDataDialogOpen(const OrbisSaveDataDialogParam* param) { + if (g_status != Status::INITIALIZED && g_status != Status::FINISHED) { + LOG_INFO(Lib_SaveDataDialog, "called without initialize"); + return Error::INVALID_STATE; + } + if (param == nullptr) { + LOG_DEBUG(Lib_SaveDataDialog, "called param:(NULL)"); + return Error::ARG_NULL; + } + LOG_DEBUG(Lib_SaveDataDialog, "called param->mode: {}", magic_enum::enum_name(param->mode)); + ASSERT(param->size == sizeof(OrbisSaveDataDialogParam)); + ASSERT(param->baseParam.size == sizeof(CommonDialog::BaseParam)); + g_result = {}; + g_state = SaveDialogState{*param}; + g_status = Status::RUNNING; + g_save_dialog_ui = SaveDialogUi(&g_state, &g_status, &g_result); + return Error::OK; +} + +Error PS4_SYSV_ABI sceSaveDataDialogProgressBarInc(OrbisSaveDataDialogProgressBarTarget target, + u32 delta) { + LOG_DEBUG(Lib_SaveDataDialog, "called"); + if (g_status != Status::RUNNING) { + return Error::NOT_RUNNING; + } + if (g_state.GetMode() != SaveDataDialogMode::PROGRESS_BAR) { + return Error::NOT_SUPPORTED; + } + if (target != OrbisSaveDataDialogProgressBarTarget::DEFAULT) { + return Error::PARAM_INVALID; + } + g_state.GetState().progress += delta; + return Error::OK; +} + +Error PS4_SYSV_ABI sceSaveDataDialogProgressBarSetValue(OrbisSaveDataDialogProgressBarTarget target, + u32 rate) { + LOG_DEBUG(Lib_SaveDataDialog, "called"); + if (g_status != Status::RUNNING) { + return Error::NOT_RUNNING; + } + if (g_state.GetMode() != SaveDataDialogMode::PROGRESS_BAR) { + return Error::NOT_SUPPORTED; + } + if (target != OrbisSaveDataDialogProgressBarTarget::DEFAULT) { + return Error::PARAM_INVALID; + } + g_state.GetState().progress = rate; + return Error::OK; +} + +Error PS4_SYSV_ABI sceSaveDataDialogTerminate() { + LOG_DEBUG(Lib_SaveDataDialog, "called"); + if (g_status == Status::RUNNING) { + sceSaveDataDialogClose(); + } + if (g_status == Status::NONE) { + return Error::NOT_INITIALIZED; + } + g_save_dialog_ui = SaveDialogUi{}; + g_status = Status::NONE; + CommonDialog::g_isUsed = false; + return Error::OK; +} + +Status PS4_SYSV_ABI sceSaveDataDialogUpdateStatus() { + LOG_TRACE(Lib_SaveDataDialog, "called status={}", magic_enum::enum_name(g_status)); + return g_status; +} + +void RegisterlibSceSaveDataDialog(Core::Loader::SymbolsResolver* sym) { + LIB_FUNCTION("fH46Lag88XY", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogClose); + LIB_FUNCTION("yEiJ-qqr6Cg", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogGetResult); + LIB_FUNCTION("ERKzksauAJA", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogGetStatus); + LIB_FUNCTION("s9e3+YpRnzw", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogInitialize); + LIB_FUNCTION("en7gNVnh878", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogIsReadyToDisplay); + LIB_FUNCTION("4tPhsP6FpDI", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogOpen); + LIB_FUNCTION("V-uEeFKARJU", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogProgressBarInc); + LIB_FUNCTION("hay1CfTmLyA", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogProgressBarSetValue); + LIB_FUNCTION("YuH2FA7azqQ", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogTerminate); + LIB_FUNCTION("KK3Bdg1RWK0", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, + sceSaveDataDialogUpdateStatus); +}; + +} // namespace Libraries::SaveData::Dialog diff --git a/src/core/libraries/save_data/dialog/savedatadialog.h b/src/core/libraries/save_data/dialog/savedatadialog.h new file mode 100644 index 0000000000..34afe98a74 --- /dev/null +++ b/src/core/libraries/save_data/dialog/savedatadialog.h @@ -0,0 +1,33 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "common/types.h" +#include "core/libraries/system/commondialog.h" + +namespace Core::Loader { +class SymbolsResolver; +} + +namespace Libraries::SaveData::Dialog { + +struct OrbisSaveDataDialogParam; +struct OrbisSaveDataDialogResult; +enum class OrbisSaveDataDialogProgressBarTarget : u32; + +CommonDialog::Error PS4_SYSV_ABI sceSaveDataDialogClose(); +CommonDialog::Error PS4_SYSV_ABI sceSaveDataDialogGetResult(OrbisSaveDataDialogResult* result); +CommonDialog::Status PS4_SYSV_ABI sceSaveDataDialogGetStatus(); +CommonDialog::Error PS4_SYSV_ABI sceSaveDataDialogInitialize(); +s32 PS4_SYSV_ABI sceSaveDataDialogIsReadyToDisplay(); +CommonDialog::Error PS4_SYSV_ABI sceSaveDataDialogOpen(const OrbisSaveDataDialogParam* param); +CommonDialog::Error PS4_SYSV_ABI +sceSaveDataDialogProgressBarInc(OrbisSaveDataDialogProgressBarTarget target, u32 delta); +CommonDialog::Error PS4_SYSV_ABI +sceSaveDataDialogProgressBarSetValue(OrbisSaveDataDialogProgressBarTarget target, u32 rate); +CommonDialog::Error PS4_SYSV_ABI sceSaveDataDialogTerminate(); +CommonDialog::Status PS4_SYSV_ABI sceSaveDataDialogUpdateStatus(); + +void RegisterlibSceSaveDataDialog(Core::Loader::SymbolsResolver* sym); +} // namespace Libraries::SaveData::Dialog diff --git a/src/core/libraries/save_data/dialog/savedatadialog_ui.cpp b/src/core/libraries/save_data/dialog/savedatadialog_ui.cpp new file mode 100644 index 0000000000..793b4dd38f --- /dev/null +++ b/src/core/libraries/save_data/dialog/savedatadialog_ui.cpp @@ -0,0 +1,849 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include +#include +#include + +#include "common/elf_info.h" +#include "common/singleton.h" +#include "common/string_util.h" +#include "core/file_sys/fs.h" +#include "core/libraries/save_data/save_instance.h" +#include "imgui/imgui_std.h" +#include "savedatadialog_ui.h" + +using namespace ImGui; +using namespace Libraries::CommonDialog; +using Common::ElfInfo; + +constexpr u32 OrbisSaveDataBlockSize = 32768; // 32 KiB + +constexpr auto SAVE_ICON_SIZE = ImVec2{152.0f, 85.0f}; +constexpr auto SAVE_ICON_PADDING = ImVec2{8.0f, 2.0f}; + +static constexpr ImVec2 BUTTON_SIZE{100.0f, 30.0f}; +constexpr auto FOOTER_HEIGHT = BUTTON_SIZE.y + 15.0f; +static constexpr float PROGRESS_BAR_WIDTH{0.8f}; + +static ::Core::FileSys::MntPoints* g_mnt = + Common::Singleton<::Core::FileSys::MntPoints>::Instance(); + +static std::string SpaceSizeToString(size_t size) { + std::string size_str; + if (size > 1024 * 1024 * 1024) { // > 1GB + size_str = fmt::format("{:.2f} GB", double(size / 1024 / 1024) / 1024.0f); + } else if (size > 1024 * 1024) { // > 1MB + size_str = fmt::format("{:.2f} MB", double(size / 1024) / 1024.0f); + } else if (size > 1024) { // > 1KB + size_str = fmt::format("{:.2f} KB", double(size) / 1024.0f); + } else { + size_str = fmt::format("{} B", size); + } + return size_str; +} + +namespace Libraries::SaveData::Dialog { + +void SaveDialogResult::CopyTo(OrbisSaveDataDialogResult& result) const { + result.mode = this->mode; + result.result = this->result; + result.buttonId = this->button_id; + if (mode == SaveDataDialogMode::LIST || ElfInfo::Instance().FirmwareVer() >= ElfInfo::FW_45) { + if (result.dirName != nullptr) { + result.dirName->data.FromString(this->dir_name); + } + if (result.param != nullptr && this->param.GetString(SaveParams::MAINTITLE).has_value()) { + result.param->FromSFO(this->param); + } + } + result.userData = this->user_data; +} + +SaveDialogState::SaveDialogState(const OrbisSaveDataDialogParam& param) { + this->mode = param.mode; + this->type = param.dispType; + this->user_data = param.userData; + if (param.optionParam != nullptr) { + this->enable_back = {param.optionParam->back == OptionBack::ENABLE}; + } + + const auto& game_serial = Common::ElfInfo::Instance().GameSerial(); + + const auto item = param.items; + this->user_id = item->userId; + + if (item->titleId == nullptr) { + this->title_id = game_serial; + } else { + this->title_id = item->titleId->data.to_string(); + } + + for (u32 i = 0; i < item->dirNameNum; i++) { + const auto dir_name = item->dirName[i].data.to_view(); + + if (dir_name.empty()) { + continue; + } + + auto dir_path = SaveInstance::MakeDirSavePath(user_id, title_id, dir_name); + + auto param_sfo_path = dir_path / "sce_sys" / "param.sfo"; + if (!std::filesystem::exists(param_sfo_path)) { + continue; + } + + PSF param_sfo; + param_sfo.Open(param_sfo_path); + + auto last_write = param_sfo.GetLastWrite(); +#ifdef _WIN32 + auto utc_time = std::chrono::file_clock::to_utc(last_write); +#else + auto utc_time = std::chrono::file_clock::to_sys(last_write); +#endif + std::string date_str = fmt::format("{:%d %b, %Y %R}", utc_time); + + size_t size = Common::FS::GetDirectorySize(dir_path); + std::string size_str = SpaceSizeToString(size); + + auto icon_path = dir_path / "sce_sys" / "icon0.png"; + RefCountedTexture icon; + if (std::filesystem::exists(icon_path)) { + icon = RefCountedTexture::DecodePngFile(icon_path); + } + + bool is_corrupted = std::filesystem::exists(dir_path / "sce_sys" / "corrupted"); + + this->save_list.emplace_back(Item{ + .dir_name = std::string{dir_name}, + .icon = icon, + + .title = std::string{param_sfo.GetString(SaveParams::MAINTITLE).value_or("Unknown")}, + .subtitle = std::string{param_sfo.GetString(SaveParams::SUBTITLE).value_or("")}, + .details = std::string{param_sfo.GetString(SaveParams::DETAIL).value_or("")}, + .date = date_str, + .size = size_str, + .last_write = param_sfo.GetLastWrite(), + .pfo = param_sfo, + .is_corrupted = is_corrupted, + }); + } + + if (type == DialogType::SAVE && item->newItem != nullptr) { + RefCountedTexture icon; + std::string title{"New Save"}; + + const auto new_item = item->newItem; + if (new_item->iconBuf && new_item->iconSize) { + auto buf = (u8*)new_item->iconBuf; + icon = RefCountedTexture::DecodePngTexture({buf, buf + new_item->iconSize}); + } else { + const auto& src_icon = g_mnt->GetHostPath("/app0/sce_sys/save_data.png"); + if (std::filesystem::exists(src_icon)) { + icon = RefCountedTexture::DecodePngFile(src_icon); + } + } + if (new_item->title != nullptr) { + title = std::string{new_item->title}; + } + + this->new_item = Item{ + .dir_name = "", + .icon = icon, + .title = title, + }; + } + + if (item->focusPos != FocusPos::DIRNAME) { + this->focus_pos = item->focusPos; + } else { + this->focus_pos = item->focusPosDirName->data.to_string(); + } + this->style = item->itemStyle; + + switch (mode) { + case SaveDataDialogMode::USER_MSG: { + this->state = UserState{param}; + } break; + case SaveDataDialogMode::SYSTEM_MSG: + this->state = SystemState{*this, param}; + break; + case SaveDataDialogMode::ERROR_CODE: { + this->state = ErrorCodeState{param}; + } break; + case SaveDataDialogMode::PROGRESS_BAR: { + this->state = ProgressBarState{*this, param}; + } break; + default: + break; + } +} + +SaveDialogState::UserState::UserState(const OrbisSaveDataDialogParam& param) { + auto& user = *param.userMsgParam; + this->type = user.buttonType; + this->msg_type = user.msgType; + this->msg = user.msg != nullptr ? std::string{user.msg} : std::string{}; +} + +SaveDialogState::SystemState::SystemState(const SaveDialogState& state, + const OrbisSaveDataDialogParam& param) { +#define M(save, load, del) \ + if (type == DialogType::SAVE) \ + this->msg = save; \ + else if (type == DialogType::LOAD) \ + this->msg = load; \ + else if (type == DialogType::DELETE) \ + this->msg = del; \ + else \ + UNREACHABLE() + + auto type = param.dispType; + auto& sys = *param.sysMsgParam; + switch (sys.msgType) { + case SystemMessageType::NODATA: { + return_cancel = true; + this->msg = "There is no saved data"; + } break; + case SystemMessageType::CONFIRM: + show_no = true; + M("Do you want to save?", "Do you want to load this saved data?", + "Do you want to delete this saved data?"); + break; + case SystemMessageType::OVERWRITE: + show_no = true; + M("Do you want to overwrite the existing saved data?", "##UNKNOWN##", "##UNKNOWN##"); + break; + case SystemMessageType::NOSPACE: + return_cancel = true; + M(fmt::format( + "There is not enough space to save the data. To continue {} free space is required.", + SpaceSizeToString(sys.value * OrbisSaveDataBlockSize)), + "##UNKNOWN##", "##UNKNOWN##"); + break; + case SystemMessageType::PROGRESS: + hide_ok = true; + show_cancel = state.enable_back.value_or(false); + M("Saving...", "Loading...", "Deleting..."); + break; + case SystemMessageType::FILE_CORRUPTED: + return_cancel = true; + this->msg = "The saved data is corrupted."; + break; + case SystemMessageType::FINISHED: + return_cancel = true; + M("Saved successfully.", "Loading complete.", "Deletion complete."); + break; + case SystemMessageType::NOSPACE_CONTINUABLE: + return_cancel = true; + M(fmt::format("There is not enough space to save the data. {} free space is required.", + SpaceSizeToString(sys.value * OrbisSaveDataBlockSize)), + "##UNKNOWN##", "##UNKNOWN##"); + break; + case SystemMessageType::CORRUPTED_AND_DELETED: { + show_cancel = state.enable_back.value_or(true); + const char* msg1 = "The saved data is corrupted and will be deleted."; + M(msg1, msg1, "##UNKNOWN##"); + } break; + case SystemMessageType::CORRUPTED_AND_CREATED: { + show_cancel = state.enable_back.value_or(true); + const char* msg2 = "The saved data is corrupted. This saved data will be deleted and a new " + "one will be created."; + M(msg2, msg2, "##UNKNOWN##"); + } break; + case SystemMessageType::CORRUPTED_AND_RESTORE: { + show_cancel = state.enable_back.value_or(true); + const char* msg3 = + "The saved data is corrupted. The data that was backed up by the system will be " + "restored."; + M(msg3, msg3, "##UNKNOWN##"); + } break; + case SystemMessageType::TOTAL_SIZE_EXCEEDED: + M("Cannot create more saved data", "##UNKNOWN##", "##UNKNOWN##"); + break; + default: + msg = fmt::format("Unknown message type: {}", magic_enum::enum_name(sys.msgType)); + break; + } + +#undef M +} + +SaveDialogState::ErrorCodeState::ErrorCodeState(const OrbisSaveDataDialogParam& param) { + auto& err = *param.errorCodeParam; + constexpr auto NOT_FOUND = 0x809F0008; + constexpr auto BROKEN = 0x809F000F; + switch (err.errorCode) { + case NOT_FOUND: + this->error_msg = "There is not saved data."; + break; + case BROKEN: + this->error_msg = "The data is corrupted."; + break; + default: + this->error_msg = fmt::format("An error has occurred. ({:X})", err.errorCode); + break; + } +} +SaveDialogState::ProgressBarState::ProgressBarState(const SaveDialogState& state, + const OrbisSaveDataDialogParam& param) { + static auto fw_ver = ElfInfo::Instance().FirmwareVer(); + + this->progress = 0; + + auto& bar = *param.progressBarParam; + + if (bar.msg != nullptr) { + this->msg = std::string{bar.msg}; + } else { + switch (bar.sysMsgType) { + case ProgressSystemMessageType::INVALID: + this->msg = "INVALID"; + break; + case ProgressSystemMessageType::PROGRESS: + switch (state.type) { + case DialogType::SAVE: + this->msg = "Saving..."; + break; + case DialogType::LOAD: + this->msg = "Loading..."; + break; + case DialogType::DELETE: + this->msg = "Deleting..."; + break; + } + break; + case ProgressSystemMessageType::RESTORE: + this->msg = "Restoring saved data..."; + break; + } + } +} + +SaveDialogUi::SaveDialogUi(SaveDialogState* state, Status* status, SaveDialogResult* result) + : state(state), status(status), result(result) { + if (status && *status == Status::RUNNING) { + first_render = true; + AddLayer(this); + } +} + +SaveDialogUi::~SaveDialogUi() { + Finish(ButtonId::INVALID); +} + +SaveDialogUi::SaveDialogUi(SaveDialogUi&& other) noexcept + : Layer(other), state(other.state), status(other.status), result(other.result) { + std::scoped_lock lock(draw_mutex, other.draw_mutex); + other.state = nullptr; + other.status = nullptr; + other.result = nullptr; + if (status && *status == Status::RUNNING) { + first_render = true; + AddLayer(this); + } +} + +SaveDialogUi& SaveDialogUi::operator=(SaveDialogUi other) { + std::scoped_lock lock(draw_mutex, other.draw_mutex); + using std::swap; + swap(state, other.state); + swap(status, other.status); + swap(result, other.result); + if (status && *status == Status::RUNNING) { + first_render = true; + AddLayer(this); + } + return *this; +} + +void SaveDialogUi::Finish(ButtonId buttonId, Result r) { + std::unique_lock lock(draw_mutex); + if (result) { + result->mode = this->state->mode; + result->result = r; + result->button_id = buttonId; + result->user_data = this->state->user_data; + if (state && state->mode != SaveDataDialogMode::LIST && !state->save_list.empty()) { + result->dir_name = state->save_list.front().dir_name; + } + } + if (status) { + *status = Status::FINISHED; + } + RemoveLayer(this); +} + +void SaveDialogUi::Draw() { + std::unique_lock lock{draw_mutex}; + + if (status == nullptr || *status != Status::RUNNING || state == nullptr) { + return; + } + + const auto& ctx = *GetCurrentContext(); + const auto& io = ctx.IO; + + ImVec2 window_size; + + if (state->GetMode() == SaveDataDialogMode::LIST) { + window_size = ImVec2{ + std::min(io.DisplaySize.x - 200.0f, 1100.0f), + std::min(io.DisplaySize.y - 100.0f, 700.0f), + }; + } else { + window_size = ImVec2{ + std::min(io.DisplaySize.x, 600.0f), + std::min(io.DisplaySize.y, 300.0f), + }; + } + + CentralizeWindow(); + SetNextWindowSize(window_size); + SetNextWindowCollapsed(false); + if (first_render || !io.NavActive) { + SetNextWindowFocus(); + } + if (Begin("Save Data Dialog##SaveDataDialog", nullptr, + ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoSavedSettings)) { + DrawPrettyBackground(); + + Separator(); + // Draw title bigger + SetWindowFontScale(1.7f); + switch (state->type) { + case DialogType::SAVE: + TextUnformatted("Save"); + break; + case DialogType::LOAD: + TextUnformatted("Load"); + break; + case DialogType::DELETE: + TextUnformatted("Delete"); + break; + } + SetWindowFontScale(1.0f); + Separator(); + + BeginGroup(); + switch (state->GetMode()) { + case SaveDataDialogMode::LIST: + DrawList(); + break; + case SaveDataDialogMode::USER_MSG: + DrawUser(); + break; + case SaveDataDialogMode::SYSTEM_MSG: + DrawSystemMessage(); + break; + case SaveDataDialogMode::ERROR_CODE: + DrawErrorCode(); + break; + case SaveDataDialogMode::PROGRESS_BAR: + DrawProgressBar(); + break; + default: + TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "!!!Unknown dialog mode!!!"); + } + EndGroup(); + } + End(); + + first_render = false; + if (*status == Status::FINISHED) { + if (state) { + *state = SaveDialogState{}; + } + state = nullptr; + status = nullptr; + result = nullptr; + } +} + +void SaveDialogUi::DrawItem(int _id, const SaveDialogState::Item& item, bool clickable) { + constexpr auto text_spacing = 0.95f; + + auto& ctx = *GetCurrentContext(); + auto& window = *ctx.CurrentWindow; + + auto content_region_avail = GetContentRegionAvail(); + const auto outer_pos = window.DC.CursorPos; + const auto pos = outer_pos + SAVE_ICON_PADDING; + + const ImVec2 size = {content_region_avail.x - SAVE_ICON_PADDING.x, + SAVE_ICON_SIZE.y + SAVE_ICON_PADDING.y}; + const ImRect bb{outer_pos, outer_pos + size + SAVE_ICON_PADDING}; + + const ImGuiID id = GetID(_id); + + ItemSize(size + ImVec2{0.0f, SAVE_ICON_PADDING.y * 2.0f}); + if (!ItemAdd(bb, id)) { + return; + } + + window.DrawList->AddRectFilled(bb.Min + SAVE_ICON_PADDING, bb.Max - SAVE_ICON_PADDING, + GetColorU32(ImVec4{0.3f})); + + bool hovered = false; + if (clickable) { + bool held; + bool pressed = ButtonBehavior(bb, id, &hovered, &held); + if (pressed) { + result->dir_name = item.dir_name; + result->param = item.pfo; + Finish(ButtonId::INVALID); + } + RenderNavHighlight(bb, id); + } + + if (item.icon) { + auto texture = item.icon.GetTexture(); + window.DrawList->AddImage(texture.im_id, pos, pos + SAVE_ICON_SIZE); + } else { + // placeholder + window.DrawList->AddRectFilled(pos, pos + SAVE_ICON_SIZE, GetColorU32(ImVec4{0.7f})); + } + + auto pos_x = SAVE_ICON_SIZE.x + 5.0f; + auto pos_y = 2.0f; + + if (!item.title.empty()) { + const char* begin = &item.title.front(); + const char* end = &item.title.back() + 1; + SetWindowFontScale(1.5f); + RenderText(pos + ImVec2{pos_x, pos_y}, begin, end, false); + pos_y += ctx.FontSize * text_spacing; + } + SetWindowFontScale(1.1f); + + if (item.is_corrupted) { + pos_y -= ctx.FontSize * text_spacing * 0.3f; + const auto bright = (int)std::abs(std::sin(ctx.Time) * 0.15f * 255.0f); + PushStyleColor(ImGuiCol_Text, IM_COL32(bright + 216, bright, bright, 0xFF)); + RenderText(pos + ImVec2{pos_x, pos_y}, "Corrupted", nullptr, false); + PopStyleColor(); + pos_y += ctx.FontSize * text_spacing * 0.8f; + } + + if (state->style == ItemStyle::TITLE_SUBTITLE_DATESIZE) { + if (!item.subtitle.empty()) { + const char* begin = &item.subtitle.front(); + const char* end = &item.subtitle.back() + 1; + RenderText(pos + ImVec2{pos_x, pos_y}, begin, end, false); + } + pos_y += ctx.FontSize * text_spacing; + } + + { + float width = 0.0f; + if (!item.date.empty()) { + const char* d_begin = &item.date.front(); + const char* d_end = &item.date.back() + 1; + width = CalcTextSize(d_begin, d_end).x + 15.0f; + RenderText(pos + ImVec2{pos_x, pos_y}, d_begin, d_end, false); + } + if (!item.size.empty()) { + const char* s_begin = &item.size.front(); + const char* s_end = &item.size.back() + 1; + RenderText(pos + ImVec2{pos_x + width, pos_y}, s_begin, s_end, false); + } + pos_y += ctx.FontSize * text_spacing; + } + + if (state->style == ItemStyle::TITLE_DATASIZE_SUBTITLE && !item.subtitle.empty()) { + const char* begin = &item.subtitle.front(); + const char* end = &item.subtitle.back() + 1; + RenderText(pos + ImVec2{pos_x, pos_y}, begin, end, false); + } + + SetWindowFontScale(1.0f); + + if (hovered) { + window.DrawList->AddRect(bb.Min, bb.Max, GetColorU32(ImGuiCol_Border), 0.0f, 0, 2.0f); + } +} + +void SaveDialogUi::DrawList() { + auto availableSize = GetContentRegionAvail(); + + constexpr auto footerHeight = 30.0f; + availableSize.y -= footerHeight + 1.0f; + + BeginChild("##ScrollingRegion", availableSize, ImGuiChildFlags_NavFlattened); + int i = 0; + if (state->new_item.has_value()) { + DrawItem(i++, state->new_item.value()); + } + for (const auto& item : state->save_list) { + DrawItem(i++, item); + } + if (first_render) { // Make the initial focus + if (std::holds_alternative(state->focus_pos)) { + auto pos = std::get(state->focus_pos); + if (pos == FocusPos::LISTHEAD || pos == FocusPos::DATAHEAD) { + SetItemCurrentNavFocus(GetID(0)); + } else if (pos == FocusPos::LISTTAIL || pos == FocusPos::DATATAIL) { + SetItemCurrentNavFocus(GetID(std::max(i - 1, 0))); + } else { // Date + int idx = 0; + int max_idx = 0; + bool is_min = pos == FocusPos::DATAOLDEST; + std::filesystem::file_time_type max_write{}; + if (state->new_item.has_value()) { + idx++; + } + for (const auto& item : state->save_list) { + if (item.last_write > max_write ^ is_min) { + max_write = item.last_write; + max_idx = idx; + } + idx++; + } + SetItemCurrentNavFocus(GetID(max_idx)); + } + } else if (std::holds_alternative(state->focus_pos)) { + auto dir_name = std::get(state->focus_pos); + if (dir_name.empty()) { + SetItemCurrentNavFocus(GetID(0)); + } else { + int idx = 0; + if (state->new_item.has_value()) { + if (dir_name == state->new_item->dir_name) { + SetItemCurrentNavFocus(GetID(idx)); + } + idx++; + } + for (const auto& item : state->save_list) { + if (item.dir_name == dir_name) { + SetItemCurrentNavFocus(GetID(idx)); + break; + } + idx++; + } + } + } + } + EndChild(); + + Separator(); + if (state->enable_back.value_or(true)) { + constexpr auto back = "Back"; + constexpr float pad = 7.0f; + const auto txt_size = CalcTextSize(back); + const auto button_size = ImVec2{ + std::max(txt_size.x, 100.0f) + pad * 2.0f, + footerHeight - pad, + }; + SetCursorPosX(GetContentRegionAvail().x - button_size.x); + if (Button(back, button_size)) { + result->dir_name.clear(); + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } + if (IsKeyPressed(ImGuiKey_GamepadFaceRight)) { + SetItemCurrentNavFocus(); + } + } +} + +void SaveDialogUi::DrawUser() { + const auto& user_state = state->GetState(); + const auto btn_type = user_state.type; + + const auto ws = GetWindowSize(); + + if (!state->save_list.empty()) { + DrawItem(0, state->save_list.front(), false); + } else if (state->new_item) { + DrawItem(0, *state->new_item, false); + } + + auto has_btn = btn_type != ButtonType::NONE; + ImVec2 btn_space; + if (has_btn) { + btn_space = ImVec2{0.0f, FOOTER_HEIGHT}; + } + + const auto& msg = user_state.msg; + if (!msg.empty()) { + const char* begin = &msg.front(); + const char* end = &msg.back() + 1; + if (user_state.msg_type == UserMessageType::ERROR) { + PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 0.0f, 0.0f, 1.0f)); + // Maybe make the text bold? + } + DrawCenteredText(begin, end, GetContentRegionAvail() - btn_space); + if (user_state.msg_type == UserMessageType::ERROR) { + PopStyleColor(); + } + } + + if (has_btn) { + int count = 1; + if (btn_type == ButtonType::YESNO || btn_type == ButtonType::OKCANCEL) { + ++count; + } + + SetCursorPos({ + ws.x / 2.0f - BUTTON_SIZE.x / 2.0f * static_cast(count), + ws.y - FOOTER_HEIGHT + 5.0f, + }); + + BeginGroup(); + if (btn_type == ButtonType::YESNO) { + if (Button("Yes", BUTTON_SIZE)) { + Finish(ButtonId::YES); + } + SameLine(); + if (Button("No", BUTTON_SIZE)) { + if (ElfInfo::Instance().FirmwareVer() < ElfInfo::FW_45) { + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } else { + Finish(ButtonId::NO); + } + } + if (first_render || IsKeyPressed(ImGuiKey_GamepadFaceRight)) { + SetItemCurrentNavFocus(); + } + } else { + if (Button("OK", BUTTON_SIZE)) { + if (btn_type == ButtonType::OK && + ElfInfo::Instance().FirmwareVer() < ElfInfo::FW_45) { + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } else { + Finish(ButtonId::OK); + } + } + if (first_render) { + SetItemCurrentNavFocus(); + } + if (btn_type == ButtonType::OKCANCEL) { + SameLine(); + if (Button("Cancel", BUTTON_SIZE)) { + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } + if (IsKeyPressed(ImGuiKey_GamepadFaceRight)) { + SetItemCurrentNavFocus(); + } + } + } + EndGroup(); + } +} + +void SaveDialogUi::DrawSystemMessage() { + const auto& sys_state = state->GetState(); + + if (!state->save_list.empty()) { + DrawItem(0, state->save_list.front(), false); + } else if (state->new_item) { + DrawItem(0, *state->new_item, false); + } + + const auto ws = GetWindowSize(); + const auto& msg = sys_state.msg; + if (!msg.empty()) { + const char* begin = &msg.front(); + const char* end = &msg.back() + 1; + DrawCenteredText(begin, end, GetContentRegionAvail() - ImVec2{0.0f, FOOTER_HEIGHT}); + } + int count = 1; + if (sys_state.hide_ok) { + --count; + } + if (sys_state.show_no || sys_state.show_cancel) { + ++count; + } + + SetCursorPos({ + ws.x / 2.0f - BUTTON_SIZE.x / 2.0f * static_cast(count), + ws.y - FOOTER_HEIGHT + 5.0f, + }); + BeginGroup(); + if (Button(sys_state.show_no ? "Yes" : "OK", BUTTON_SIZE)) { + if (sys_state.return_cancel && ElfInfo::Instance().FirmwareVer() < ElfInfo::FW_45) { + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } else { + Finish(ButtonId::YES); + } + } + SameLine(); + if (sys_state.show_no) { + if (Button("No", BUTTON_SIZE)) { + if (ElfInfo::Instance().FirmwareVer() < ElfInfo::FW_45) { + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } else { + Finish(ButtonId::NO); + } + } + } else if (sys_state.show_cancel) { + if (Button("Cancel", BUTTON_SIZE)) { + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } + } + if (first_render || IsKeyPressed(ImGuiKey_GamepadFaceRight)) { + SetItemCurrentNavFocus(); + } + EndGroup(); +} + +void SaveDialogUi::DrawErrorCode() { + const auto& err_state = state->GetState(); + + if (!state->save_list.empty()) { + DrawItem(0, state->save_list.front(), false); + } else if (state->new_item) { + DrawItem(0, *state->new_item, false); + } + + const auto ws = GetWindowSize(); + const auto& msg = err_state.error_msg; + if (!msg.empty()) { + const char* begin = &msg.front(); + const char* end = &msg.back() + 1; + DrawCenteredText(begin, end, GetContentRegionAvail() - ImVec2{0.0f, FOOTER_HEIGHT}); + } + + SetCursorPos({ + ws.x / 2.0f - BUTTON_SIZE.x / 2.0f, + ws.y - FOOTER_HEIGHT + 5.0f, + }); + if (Button("OK", BUTTON_SIZE)) { + if (ElfInfo::Instance().FirmwareVer() < ElfInfo::FW_45) { + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } else { + Finish(ButtonId::OK); + } + } + if (first_render) { + SetItemCurrentNavFocus(); + } +} + +void SaveDialogUi::DrawProgressBar() { + const auto& bar_state = state->GetState(); + + const auto ws = GetWindowSize(); + + if (!state->save_list.empty()) { + DrawItem(0, state->save_list.front(), false); + } else if (state->new_item) { + DrawItem(0, *state->new_item, false); + } + + const auto& msg = bar_state.msg; + if (!msg.empty()) { + const char* begin = &msg.front(); + const char* end = &msg.back() + 1; + DrawCenteredText(begin, end, GetContentRegionAvail() - ImVec2{0.0f, FOOTER_HEIGHT}); + } + + SetCursorPos({ + ws.x * ((1 - PROGRESS_BAR_WIDTH) / 2.0f), + ws.y - FOOTER_HEIGHT + 5.0f, + }); + + ProgressBar(static_cast(bar_state.progress) / 100.0f, + {PROGRESS_BAR_WIDTH * ws.x, BUTTON_SIZE.y}); +} +}; // namespace Libraries::SaveData::Dialog \ No newline at end of file diff --git a/src/core/libraries/save_data/dialog/savedatadialog_ui.h b/src/core/libraries/save_data/dialog/savedatadialog_ui.h new file mode 100644 index 0000000000..3f414470f7 --- /dev/null +++ b/src/core/libraries/save_data/dialog/savedatadialog_ui.h @@ -0,0 +1,319 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include +#include + +#include "core/file_format/psf.h" +#include "core/libraries/save_data/savedata.h" +#include "core/libraries/system/commondialog.h" +#include "imgui/imgui_layer.h" +#include "imgui/imgui_texture.h" + +namespace Libraries::SaveData::Dialog { + +using OrbisUserServiceUserId = s32; + +enum class SaveDataDialogMode : u32 { + INVALID = 0, + LIST = 1, + USER_MSG = 2, + SYSTEM_MSG = 3, + ERROR_CODE = 4, + PROGRESS_BAR = 5, +}; + +enum class DialogType : u32 { + SAVE = 1, + LOAD = 2, + DELETE = 3, +}; + +enum class DialogAnimation : u32 { + ON = 0, + OFF = 1, +}; + +enum class ButtonId : u32 { + INVALID = 0, + OK = 1, + YES = 1, + NO = 2, +}; + +enum class ButtonType : u32 { + OK = 0, + YESNO = 1, + NONE = 2, + OKCANCEL = 3, +}; + +enum class UserMessageType : u32 { + NORMAL = 0, + ERROR = 1, +}; + +enum class FocusPos : u32 { + LISTHEAD = 0, + LISTTAIL = 1, + DATAHEAD = 2, + DATATAIL = 3, + DATALTATEST = 4, + DATAOLDEST = 5, + DIRNAME = 6, +}; + +enum class ItemStyle : u32 { + TITLE_DATASIZE_SUBTITLE = 0, + TITLE_SUBTITLE_DATESIZE = 1, + TITLE_DATESIZE = 2, +}; + +enum class SystemMessageType : u32 { + NODATA = 1, + CONFIRM = 2, + OVERWRITE = 3, + NOSPACE = 4, + PROGRESS = 5, + FILE_CORRUPTED = 6, + FINISHED = 7, + NOSPACE_CONTINUABLE = 8, + CORRUPTED_AND_DELETED = 10, + CORRUPTED_AND_CREATED = 11, + CORRUPTED_AND_RESTORE = 13, + TOTAL_SIZE_EXCEEDED = 14, +}; + +enum class ProgressBarType : u32 { + PERCENTAGE = 0, +}; + +enum class ProgressSystemMessageType : u32 { + INVALID = 0, + PROGRESS = 1, + RESTORE = 2, +}; + +enum class OptionBack : u32 { + ENABLE = 0, + DISABLE = 1, +}; + +enum class OrbisSaveDataDialogProgressBarTarget : u32 { + DEFAULT = 0, +}; + +struct AnimationParam { + DialogAnimation userOK; + DialogAnimation userCancel; + std::array _reserved; +}; + +struct SaveDialogNewItem { + const char* title; + void* iconBuf; + size_t iconSize; + std::array _reserved; +}; + +struct SaveDialogItems { + OrbisUserServiceUserId userId; + s32 : 32; + const OrbisSaveDataTitleId* titleId; + const OrbisSaveDataDirName* dirName; + u32 dirNameNum; + s32 : 32; + const SaveDialogNewItem* newItem; + FocusPos focusPos; + s32 : 32; + const OrbisSaveDataDirName* focusPosDirName; + ItemStyle itemStyle; + std::array _reserved; +}; + +struct UserMessageParam { + ButtonType buttonType; + UserMessageType msgType; + const char* msg; + std::array _reserved; +}; + +struct SystemMessageParam { + SystemMessageType msgType; + s32 : 32; + u64 value; + std::array _reserved; +}; + +struct ErrorCodeParam { + u32 errorCode; + std::array _reserved; +}; + +struct ProgressBarParam { + ProgressBarType barType; + s32 : 32; + const char* msg; + ProgressSystemMessageType sysMsgType; + std::array _reserved; +}; + +struct OptionParam { + OptionBack back; + std::array _reserved; +}; + +struct OrbisSaveDataDialogParam { + CommonDialog::BaseParam baseParam; + s32 size; + SaveDataDialogMode mode; + DialogType dispType; + s32 : 32; + AnimationParam* animParam; + SaveDialogItems* items; + UserMessageParam* userMsgParam; + SystemMessageParam* sysMsgParam; + ErrorCodeParam* errorCodeParam; + ProgressBarParam* progressBarParam; + void* userData; + OptionParam* optionParam; + std::array _reserved; +}; + +struct OrbisSaveDataDialogResult { + SaveDataDialogMode mode{}; + CommonDialog::Result result{}; + ButtonId buttonId{}; + s32 : 32; + OrbisSaveDataDirName* dirName; + OrbisSaveDataParam* param; + void* userData; + std::array _reserved; +}; + +struct SaveDialogResult { + SaveDataDialogMode mode{}; + CommonDialog::Result result{CommonDialog::Result::OK}; + ButtonId button_id{ButtonId::INVALID}; + std::string dir_name{}; + PSF param{}; + void* user_data{}; + + void CopyTo(OrbisSaveDataDialogResult& result) const; +}; + +class SaveDialogState { + friend class SaveDialogUi; + +public: + struct UserState { + ButtonType type{}; + UserMessageType msg_type{}; + std::string msg{}; + + UserState(const OrbisSaveDataDialogParam& param); + }; + struct SystemState { + std::string msg{}; + bool hide_ok{}; + bool show_no{}; // Yes instead of OK + bool show_cancel{}; + + bool return_cancel{}; + + SystemState(const SaveDialogState& state, const OrbisSaveDataDialogParam& param); + }; + struct ErrorCodeState { + std::string error_msg{}; + + ErrorCodeState(const OrbisSaveDataDialogParam& param); + }; + struct ProgressBarState { + std::string msg{}; + u32 progress{}; + + ProgressBarState(const SaveDialogState& state, const OrbisSaveDataDialogParam& param); + }; + + struct Item { + std::string dir_name{}; + ImGui::RefCountedTexture icon{}; + + std::string title{}; + std::string subtitle{}; + std::string details{}; + std::string date{}; + std::string size{}; + + std::filesystem::file_time_type last_write{}; + PSF pfo{}; + bool is_corrupted{}; + }; + +private: + SaveDataDialogMode mode{}; + DialogType type{}; + void* user_data{}; + std::optional enable_back{}; + + OrbisUserServiceUserId user_id{}; + std::string title_id{}; + std::vector save_list{}; + std::variant focus_pos{std::monostate{}}; + ItemStyle style{}; + + std::optional new_item{}; + + std::variant state{ + std::monostate{}}; + +public: + explicit SaveDialogState(const OrbisSaveDataDialogParam& param); + + SaveDialogState() = default; + + [[nodiscard]] SaveDataDialogMode GetMode() const { + return mode; + } + + template + [[nodiscard]] T& GetState() { + return std::get(state); + } +}; + +class SaveDialogUi final : public ImGui::Layer { + bool first_render{false}; + SaveDialogState* state{}; + CommonDialog::Status* status{}; + SaveDialogResult* result{}; + + std::recursive_mutex draw_mutex{}; + +public: + explicit SaveDialogUi(SaveDialogState* state = nullptr, CommonDialog::Status* status = nullptr, + SaveDialogResult* result = nullptr); + + ~SaveDialogUi() override; + SaveDialogUi(const SaveDialogUi& other) = delete; + SaveDialogUi(SaveDialogUi&& other) noexcept; + SaveDialogUi& operator=(SaveDialogUi other); + + void Finish(ButtonId buttonId, CommonDialog::Result r = CommonDialog::Result::OK); + + void Draw() override; + +private: + void DrawItem(int id, const SaveDialogState::Item& item, bool clickable = true); + + void DrawList(); + void DrawUser(); + void DrawSystemMessage(); + void DrawErrorCode(); + void DrawProgressBar(); +}; + +}; // namespace Libraries::SaveData::Dialog \ No newline at end of file diff --git a/src/core/libraries/save_data/error_codes.h b/src/core/libraries/save_data/error_codes.h deleted file mode 100644 index a4a1b7a5a9..0000000000 --- a/src/core/libraries/save_data/error_codes.h +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -constexpr int ORBIS_SAVE_DATA_ERROR_PARAMETER = 0x809F0000; -constexpr int ORBIS_SAVE_DATA_ERROR_NOT_INITIALIZED = 0x809F0001; -constexpr int ORBIS_SAVE_DATA_ERROR_OUT_OF_MEMORY = 0x809F0002; -constexpr int ORBIS_SAVE_DATA_ERROR_BUSY = 0x809F0003; -constexpr int ORBIS_SAVE_DATA_ERROR_NOT_MOUNTED = 0x809F0004; -constexpr int ORBIS_SAVE_DATA_ERROR_NO_PERMISSION = 0x809F0005; -constexpr int ORBIS_SAVE_DATA_ERROR_FINGERPRINT_MISMATCH = 0x809F0006; -constexpr int ORBIS_SAVE_DATA_ERROR_EXISTS = 0x809F0007; -constexpr int ORBIS_SAVE_DATA_ERROR_NOT_FOUND = 0x809F0008; -constexpr int ORBIS_SAVE_DATA_ERROR_NO_SPACE_FS = 0x809F000A; -constexpr int ORBIS_SAVE_DATA_ERROR_INTERNAL = 0x809F000B; -constexpr int ORBIS_SAVE_DATA_ERROR_MOUNT_FULL = 0x809F000C; -constexpr int ORBIS_SAVE_DATA_ERROR_BAD_MOUNTED = 0x809F000D; -constexpr int ORBIS_SAVE_DATA_ERROR_FILE_NOT_FOUND = 0x809F000E; -constexpr int ORBIS_SAVE_DATA_ERROR_BROKEN = 0x809F000F; -constexpr int ORBIS_SAVE_DATA_ERROR_INVALID_LOGIN_USER = 0x809F0011; -constexpr int ORBIS_SAVE_DATA_ERROR_MEMORY_NOT_READY = 0x809F0012; -constexpr int ORBIS_SAVE_DATA_ERROR_BACKUP_BUSY = 0x809F0013; -constexpr int ORBIS_SAVE_DATA_ERROR_NOT_REGIST_CALLBACK = 0x809F0015; -constexpr int ORBIS_SAVE_DATA_ERROR_BUSY_FOR_SAVING = 0x809F0016; -constexpr int ORBIS_SAVE_DATA_ERROR_LIMITATION_OVER = 0x809F0017; -constexpr int ORBIS_SAVE_DATA_ERROR_EVENT_BUSY = 0x809F0018; -constexpr int ORBIS_SAVE_DATA_ERROR_PARAMSFO_TRANSFER_TITLE_ID_NOT_FOUND = 0x809F0019; diff --git a/src/core/libraries/save_data/save_backup.cpp b/src/core/libraries/save_data/save_backup.cpp new file mode 100644 index 0000000000..8f7e0d69ab --- /dev/null +++ b/src/core/libraries/save_data/save_backup.cpp @@ -0,0 +1,248 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include +#include +#include + +#include + +#include "save_backup.h" +#include "save_instance.h" + +#include "common/logging/log.h" +#include "common/logging/log_entry.h" +#include "common/polyfill_thread.h" +#include "common/thread.h" + +constexpr std::string_view sce_sys = "sce_sys"; // system folder inside save +constexpr std::string_view backup_dir = "sce_backup"; // backup folder +constexpr std::string_view backup_dir_tmp = "sce_backup_tmp"; // in-progress backup folder +constexpr std::string_view backup_dir_old = "sce_backup_old"; // previous backup folder + +namespace fs = std::filesystem; + +namespace Libraries::SaveData::Backup { + +static std::jthread g_backup_thread; +static std::counting_semaphore g_backup_thread_semaphore{0}; + +static std::mutex g_backup_running_mutex; + +static std::mutex g_backup_queue_mutex; +static std::deque g_backup_queue; +static std::deque g_result_queue; + +static std::atomic_int g_backup_progress = 0; +static std::atomic g_backup_status = WorkerStatus::NotStarted; + +static void backup(const std::filesystem::path& dir_name) { + std::unique_lock lk{g_backup_running_mutex}; + if (!fs::exists(dir_name)) { + return; + } + + const auto backup_dir = dir_name / ::backup_dir; + const auto backup_dir_tmp = dir_name / ::backup_dir_tmp; + const auto backup_dir_old = dir_name / ::backup_dir_old; + + fs::remove_all(backup_dir_tmp); + fs::remove_all(backup_dir_old); + + std::vector backup_files; + for (const auto& entry : fs::directory_iterator(dir_name)) { + const auto filename = entry.path().filename(); + if (filename != ::backup_dir) { + backup_files.push_back(entry.path()); + } + } + + g_backup_progress = 0; + + int total_count = static_cast(backup_files.size()); + int current_count = 0; + + fs::create_directory(backup_dir_tmp); + for (const auto& file : backup_files) { + fs::copy(file, backup_dir_tmp / file.filename(), fs::copy_options::recursive); + current_count++; + g_backup_progress = current_count * 100 / total_count; + } + bool has_existing_backup = fs::exists(backup_dir); + if (has_existing_backup) { + fs::rename(backup_dir, backup_dir_old); + } + fs::rename(backup_dir_tmp, backup_dir); + if (has_existing_backup) { + fs::remove_all(backup_dir_old); + } +} + +static void BackupThreadBody() { + Common::SetCurrentThreadName("SaveData_BackupThread"); + while (g_backup_status != WorkerStatus::Stopping) { + g_backup_status = WorkerStatus::Waiting; + + bool wait; + BackupRequest req; + { + std::scoped_lock lk{g_backup_queue_mutex}; + wait = g_backup_queue.empty(); + if (!wait) { + req = g_backup_queue.front(); + } + } + if (wait) { + g_backup_thread_semaphore.acquire(); + { + std::scoped_lock lk{g_backup_queue_mutex}; + if (g_backup_queue.empty()) { + continue; + } + req = g_backup_queue.front(); + } + } + if (req.save_path.empty()) { + break; + } + g_backup_status = WorkerStatus::Running; + + LOG_INFO(Lib_SaveData, "Backing up the following directory: {}", req.save_path.string()); + try { + backup(req.save_path); + } catch (const std::filesystem::filesystem_error& err) { + LOG_ERROR(Lib_SaveData, "Failed to backup {}: {}", req.save_path.string(), err.what()); + } + LOG_DEBUG(Lib_SaveData, "Backing up the following directory: {} finished", + req.save_path.string()); + { + std::scoped_lock lk{g_backup_queue_mutex}; + g_backup_queue.front().done = true; + } + std::this_thread::sleep_for(std::chrono::seconds(10)); // Don't backup too often + { + std::scoped_lock lk{g_backup_queue_mutex}; + g_backup_queue.pop_front(); + g_result_queue.push_back(std::move(req)); + if (g_result_queue.size() > 20) { + g_result_queue.pop_front(); + } + } + } + g_backup_status = WorkerStatus::NotStarted; +} + +void StartThread() { + if (g_backup_status != WorkerStatus::NotStarted) { + return; + } + LOG_DEBUG(Lib_SaveData, "Starting backup thread"); + g_backup_status = WorkerStatus::Waiting; + g_backup_thread = std::jthread{BackupThreadBody}; +} + +void StopThread() { + if (g_backup_status == WorkerStatus::NotStarted || g_backup_status == WorkerStatus::Stopping) { + return; + } + LOG_DEBUG(Lib_SaveData, "Stopping backup thread"); + { + std::scoped_lock lk{g_backup_queue_mutex}; + g_backup_queue.emplace_back(BackupRequest{}); + } + g_backup_thread_semaphore.release(); + g_backup_status = WorkerStatus::Stopping; +} + +bool NewRequest(OrbisUserServiceUserId user_id, std::string_view title_id, + std::string_view dir_name, OrbisSaveDataEventType origin) { + auto save_path = SaveInstance::MakeDirSavePath(user_id, title_id, dir_name); + + if (g_backup_status != WorkerStatus::Waiting && g_backup_status != WorkerStatus::Running) { + LOG_ERROR(Lib_SaveData, "Called backup while status is {}. Backup request to {} ignored", + magic_enum::enum_name(g_backup_status.load()), save_path.string()); + return false; + } + { + std::scoped_lock lk{g_backup_queue_mutex}; + for (const auto& it : g_backup_queue) { + if (it.dir_name == dir_name) { + LOG_TRACE(Lib_SaveData, "Backup request to {} ignored. Already queued", dir_name); + return false; + } + } + g_backup_queue.push_back(BackupRequest{ + .user_id = user_id, + .title_id = std::string{title_id}, + .dir_name = std::string{dir_name}, + .origin = origin, + .save_path = std::move(save_path), + }); + } + g_backup_thread_semaphore.release(); + return true; +} + +bool Restore(const std::filesystem::path& save_path) { + LOG_INFO(Lib_SaveData, "Restoring backup for {}", save_path.string()); + std::unique_lock lk{g_backup_running_mutex}; + if (!fs::exists(save_path) || !fs::exists(save_path / backup_dir)) { + return false; + } + for (const auto& entry : fs::directory_iterator(save_path)) { + const auto filename = entry.path().filename(); + if (filename != backup_dir) { + fs::remove_all(entry.path()); + } + } + + for (const auto& entry : fs::directory_iterator(save_path / backup_dir)) { + const auto filename = entry.path().filename(); + fs::copy(entry.path(), save_path / filename, fs::copy_options::recursive); + } + + return true; +} + +WorkerStatus GetWorkerStatus() { + return g_backup_status; +} + +bool IsBackupExecutingFor(const std::filesystem::path& save_path) { + std::scoped_lock lk{g_backup_queue_mutex}; + const auto& it = + std::ranges::find(g_backup_queue, save_path, [](const auto& v) { return v.save_path; }); + return it != g_backup_queue.end() && !it->done; +} + +std::filesystem::path MakeBackupPath(const std::filesystem::path& save_path) { + return save_path / backup_dir; +} + +std::optional PopLastEvent() { + std::scoped_lock lk{g_backup_queue_mutex}; + if (g_result_queue.empty()) { + return std::nullopt; + } + auto req = std::move(g_result_queue.front()); + g_result_queue.pop_front(); + return req; +} + +void PushBackupEvent(BackupRequest&& req) { + std::scoped_lock lk{g_backup_queue_mutex}; + g_result_queue.push_back(std::move(req)); + if (g_result_queue.size() > 20) { + g_result_queue.pop_front(); + } +} + +float GetProgress() { + return static_cast(g_backup_progress) / 100.0f; +} + +void ClearProgress() { + g_backup_progress = 0; +} + +} // namespace Libraries::SaveData::Backup \ No newline at end of file diff --git a/src/core/libraries/save_data/save_backup.h b/src/core/libraries/save_data/save_backup.h new file mode 100644 index 0000000000..e49c69f607 --- /dev/null +++ b/src/core/libraries/save_data/save_backup.h @@ -0,0 +1,67 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +#include "common/types.h" + +namespace Libraries::SaveData { + +using OrbisUserServiceUserId = s32; + +namespace Backup { + +enum class WorkerStatus { + NotStarted, + Waiting, + Running, + Stopping, +}; + +enum class OrbisSaveDataEventType : u32 { + UMOUNT_BACKUP = 1, + BACKUP = 2, + SAVE_DATA_MEMORY_SYNC = 3, +}; + +struct BackupRequest { + bool done{}; + + OrbisUserServiceUserId user_id{}; + std::string title_id{}; + std::string dir_name{}; + OrbisSaveDataEventType origin{}; + + std::filesystem::path save_path{}; +}; + +// No problem calling this function if the backup thread is already running +void StartThread(); + +void StopThread(); + +bool NewRequest(OrbisUserServiceUserId user_id, std::string_view title_id, + std::string_view dir_name, OrbisSaveDataEventType origin); + +bool Restore(const std::filesystem::path& save_path); + +WorkerStatus GetWorkerStatus(); + +bool IsBackupExecutingFor(const std::filesystem::path& save_path); + +std::filesystem::path MakeBackupPath(const std::filesystem::path& save_path); + +std::optional PopLastEvent(); + +void PushBackupEvent(BackupRequest&& req); + +float GetProgress(); + +void ClearProgress(); + +} // namespace Backup + +} // namespace Libraries::SaveData diff --git a/src/core/libraries/save_data/save_instance.cpp b/src/core/libraries/save_data/save_instance.cpp new file mode 100644 index 0000000000..2624ca363a --- /dev/null +++ b/src/core/libraries/save_data/save_instance.cpp @@ -0,0 +1,228 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include + +#include + +#include "common/assert.h" +#include "common/config.h" +#include "common/path_util.h" +#include "common/singleton.h" +#include "core/file_sys/fs.h" +#include "save_instance.h" + +constexpr u32 OrbisSaveDataBlocksMax = 32768; // 1 GiB +constexpr std::string_view sce_sys = "sce_sys"; // system folder inside save +constexpr std::string_view max_block_file_name = "max_block.txt"; + +static Core::FileSys::MntPoints* g_mnt = Common::Singleton::Instance(); + +namespace fs = std::filesystem; + +// clang-format off +static const std::unordered_map default_title = { + {"ja_JP", "セーブデータ"}, + {"en", "Saved Data"}, + {"fr", "Données sauvegardées"}, + {"es_ES", "Datos guardados"}, + {"de", "Gespeicherte Daten"}, + {"it", "Dati salvati"}, + {"nl", "Opgeslagen data"}, + {"pt_PT", "Dados guardados"}, + {"ru", "Сохраненные данные"}, + {"ko_KR", "저장 데이터"}, + {"zh_CN", "保存数据"}, + {"fi", "Tallennetut tiedot"}, + {"sv_SE", "Sparade data"}, + {"da_DK", "Gemte data"}, + {"no_NO", "Lagrede data"}, + {"pl_PL", "Zapisane dane"}, + {"pt_BR", "Dados salvos"}, + {"tr_TR", "Kayıtlı Veriler"}, +}; +// clang-format on + +namespace Libraries::SaveData { + +std::filesystem::path SaveInstance::MakeTitleSavePath(OrbisUserServiceUserId user_id, + std::string_view game_serial) { + return Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / std::to_string(user_id) / + game_serial; +} + +std::filesystem::path SaveInstance::MakeDirSavePath(OrbisUserServiceUserId user_id, + std::string_view game_serial, + std::string_view dir_name) { + return Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / std::to_string(user_id) / + game_serial / dir_name; +} + +int SaveInstance::GetMaxBlocks(const std::filesystem::path& save_path) { + Common::FS::IOFile max_blocks_file{save_path / sce_sys / max_block_file_name, + Common::FS::FileAccessMode::Read}; + int max_blocks = 0; + if (max_blocks_file.IsOpen()) { + max_blocks = std::atoi(max_blocks_file.ReadString(16).c_str()); + } + if (max_blocks <= 0) { + max_blocks = OrbisSaveDataBlocksMax; + } + + return max_blocks; +} + +std::filesystem::path SaveInstance::GetParamSFOPath(const std::filesystem::path& dir_path) { + return dir_path / sce_sys / "param.sfo"; +} + +void SaveInstance::SetupDefaultParamSFO(PSF& param_sfo, std::string dir_name, + std::string game_serial) { + std::string locale = Config::getEmulatorLanguage(); + if (!default_title.contains(locale)) { + locale = "en"; + } + +#define P(type, key, ...) param_sfo.Add##type(std::string{key}, __VA_ARGS__) + // TODO Link with user service + P(Binary, SaveParams::ACCOUNT_ID, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + P(String, SaveParams::MAINTITLE, default_title.at(locale)); + P(String, SaveParams::SUBTITLE, ""); + P(String, SaveParams::DETAIL, ""); + P(String, SaveParams::SAVEDATA_DIRECTORY, std::move(dir_name)); + P(Integer, SaveParams::SAVEDATA_LIST_PARAM, 0); + P(String, SaveParams::TITLE_ID, std::move(game_serial)); +#undef P +} + +SaveInstance::SaveInstance(int slot_num, OrbisUserServiceUserId user_id, std::string _game_serial, + std::string_view _dir_name, int max_blocks) + : slot_num(slot_num), user_id(user_id), game_serial(std::move(_game_serial)), + dir_name(_dir_name), max_blocks(max_blocks) { + ASSERT(slot_num >= 0 && slot_num < 16); + + save_path = MakeDirSavePath(user_id, game_serial, dir_name); + + const auto sce_sys_path = save_path / sce_sys; + param_sfo_path = sce_sys_path / "param.sfo"; + corrupt_file_path = sce_sys_path / "corrupted"; + + mount_point = "/savedata" + std::to_string(slot_num); + + this->exists = fs::exists(param_sfo_path); + this->mounted = g_mnt->GetMount(mount_point) != nullptr; +} + +SaveInstance::~SaveInstance() { + if (mounted) { + Umount(); + } +} +SaveInstance::SaveInstance(SaveInstance&& other) noexcept { + if (this == &other) + return; + *this = std::move(other); +} + +SaveInstance& SaveInstance::operator=(SaveInstance&& other) noexcept { + if (this == &other) + return *this; + slot_num = other.slot_num; + user_id = other.user_id; + game_serial = std::move(other.game_serial); + dir_name = std::move(other.dir_name); + save_path = std::move(other.save_path); + param_sfo_path = std::move(other.param_sfo_path); + corrupt_file_path = std::move(other.corrupt_file_path); + corrupt_file = std::move(other.corrupt_file); + param_sfo = std::move(other.param_sfo); + mount_point = std::move(other.mount_point); + max_blocks = other.max_blocks; + exists = other.exists; + mounted = other.mounted; + read_only = other.read_only; + + other.mounted = false; + + return *this; +} + +void SaveInstance::SetupAndMount(bool read_only, bool copy_icon, bool ignore_corrupt) { + if (mounted) { + UNREACHABLE_MSG("Save instance is already mounted"); + } + this->exists = fs::exists(param_sfo_path); // check again just in case + if (!exists) { + CreateFiles(); + if (copy_icon) { + const auto& src_icon = g_mnt->GetHostPath("/app0/sce_sys/save_data.png"); + if (fs::exists(src_icon)) { + fs::copy_file(src_icon, GetIconPath()); + } + } + exists = true; + } else { + if (!ignore_corrupt && fs::exists(corrupt_file_path)) { + throw std::filesystem::filesystem_error( + "Corrupted save data", corrupt_file_path, + std::make_error_code(std::errc::illegal_byte_sequence)); + } + if (!param_sfo.Open(param_sfo_path)) { + throw std::filesystem::filesystem_error( + "Failed to read param.sfo", param_sfo_path, + std::make_error_code(std::errc::illegal_byte_sequence)); + } + } + + if (!ignore_corrupt && !read_only) { + int err = corrupt_file.Open(corrupt_file_path, Common::FS::FileAccessMode::Write); + if (err != 0) { + throw std::filesystem::filesystem_error( + "Failed to open corrupted file", corrupt_file_path, + std::make_error_code(std::errc::illegal_byte_sequence)); + } + } + + max_blocks = GetMaxBlocks(save_path); + + g_mnt->Mount(save_path, mount_point, read_only); + mounted = true; + this->read_only = read_only; +} + +void SaveInstance::Umount() { + if (!mounted) { + UNREACHABLE_MSG("Save instance is not mounted"); + return; + } + mounted = false; + const bool ok = param_sfo.Encode(param_sfo_path); + if (!ok) { + throw std::filesystem::filesystem_error("Failed to write param.sfo", param_sfo_path, + std::make_error_code(std::errc::permission_denied)); + } + param_sfo = PSF(); + + corrupt_file.Close(); + fs::remove(corrupt_file_path); + g_mnt->Unmount(save_path, mount_point); +} + +void SaveInstance::CreateFiles() { + const auto sce_sys_dir = save_path / sce_sys; + fs::create_directories(sce_sys_dir); + + SetupDefaultParamSFO(param_sfo, dir_name, game_serial); + + const bool ok = param_sfo.Encode(param_sfo_path); + if (!ok) { + throw std::filesystem::filesystem_error("Failed to write param.sfo", param_sfo_path, + std::make_error_code(std::errc::permission_denied)); + } + + Common::FS::IOFile max_block{sce_sys_dir / max_block_file_name, + Common::FS::FileAccessMode::Write}; + max_block.WriteString(std::to_string(max_blocks == 0 ? OrbisSaveDataBlocksMax : max_blocks)); +} + +} // namespace Libraries::SaveData \ No newline at end of file diff --git a/src/core/libraries/save_data/save_instance.h b/src/core/libraries/save_data/save_instance.h new file mode 100644 index 0000000000..f07011047c --- /dev/null +++ b/src/core/libraries/save_data/save_instance.h @@ -0,0 +1,138 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include + +#include "common/io_file.h" +#include "core/file_format/psf.h" + +namespace Core::FileSys { +class MntPoints; +} + +namespace Libraries::SaveData { + +// Used constexpr to easily use as string +namespace SaveParams { +constexpr std::string_view ACCOUNT_ID = "ACCOUNT_ID"; +constexpr std::string_view ATTRIBUTE = "ATTRIBUTE"; +constexpr std::string_view CATEGORY = "CATEGORY"; +constexpr std::string_view DETAIL = "DETAIL"; +constexpr std::string_view FORMAT = "FORMAT"; +constexpr std::string_view MAINTITLE = "MAINTITLE"; +constexpr std::string_view PARAMS = "PARAMS"; +constexpr std::string_view SAVEDATA_BLOCKS = "SAVEDATA_BLOCKS"; +constexpr std::string_view SAVEDATA_DIRECTORY = "SAVEDATA_DIRECTORY"; +constexpr std::string_view SAVEDATA_LIST_PARAM = "SAVEDATA_LIST_PARAM"; +constexpr std::string_view SUBTITLE = "SUBTITLE"; +constexpr std::string_view TITLE_ID = "TITLE_ID"; +} // namespace SaveParams + +using OrbisUserServiceUserId = s32; + +class SaveInstance { + int slot_num{}; + int user_id{}; + std::string game_serial; + std::string dir_name; + + std::filesystem::path save_path; + std::filesystem::path param_sfo_path; + std::filesystem::path corrupt_file_path; + + Common::FS::IOFile corrupt_file; + + PSF param_sfo; + std::string mount_point; + + int max_blocks{}; + bool exists{}; + bool mounted{}; + bool read_only{}; + +public: + // Location of all save data for a title + static std::filesystem::path MakeTitleSavePath(OrbisUserServiceUserId user_id, + std::string_view game_serial); + + // Location of a specific save data directory + static std::filesystem::path MakeDirSavePath(OrbisUserServiceUserId user_id, + std::string_view game_serial, + std::string_view dir_name); + + static int GetMaxBlocks(const std::filesystem::path& save_path); + + // Get param.sfo path from a dir_path generated by MakeDirSavePath + static std::filesystem::path GetParamSFOPath(const std::filesystem::path& dir_path); + + static void SetupDefaultParamSFO(PSF& param_sfo, std::string dir_name, std::string game_serial); + + explicit SaveInstance(int slot_num, OrbisUserServiceUserId user_id, std::string game_serial, + std::string_view dir_name, int max_blocks = 0); + + ~SaveInstance(); + + SaveInstance(const SaveInstance& other) = delete; + SaveInstance(SaveInstance&& other) noexcept; + + SaveInstance& operator=(const SaveInstance& other) = delete; + SaveInstance& operator=(SaveInstance&& other) noexcept; + + void SetupAndMount(bool read_only = false, bool copy_icon = false, bool ignore_corrupt = false); + + void Umount(); + + [[nodiscard]] std::filesystem::path GetIconPath() const noexcept { + return save_path / "sce_sys" / "icon0.png"; + } + + [[nodiscard]] bool Exists() const noexcept { + return exists; + } + + [[nodiscard]] OrbisUserServiceUserId GetUserId() const noexcept { + return user_id; + } + + [[nodiscard]] std::string_view GetTitleId() const noexcept { + return game_serial; + } + + [[nodiscard]] const std::string& GetDirName() const noexcept { + return dir_name; + } + + [[nodiscard]] const std::filesystem::path& GetSavePath() const noexcept { + return save_path; + } + + [[nodiscard]] const PSF& GetParamSFO() const noexcept { + return param_sfo; + } + + [[nodiscard]] PSF& GetParamSFO() noexcept { + return param_sfo; + } + + [[nodiscard]] const std::string& GetMountPoint() const noexcept { + return mount_point; + } + + [[nodiscard]] int GetMaxBlocks() const noexcept { + return max_blocks; + } + + [[nodiscard]] bool Mounted() const noexcept { + return mounted; + } + + [[nodiscard]] bool IsReadOnly() const noexcept { + return read_only; + } + + void CreateFiles(); +}; + +} // namespace Libraries::SaveData diff --git a/src/core/libraries/save_data/save_memory.cpp b/src/core/libraries/save_data/save_memory.cpp new file mode 100644 index 0000000000..6a685ee391 --- /dev/null +++ b/src/core/libraries/save_data/save_memory.cpp @@ -0,0 +1,287 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "save_memory.h" + +#include +#include +#include +#include +#include + +#include + +#include "common/assert.h" +#include "common/logging/log.h" +#include "common/polyfill_thread.h" +#include "common/singleton.h" +#include "common/thread.h" +#include "core/file_sys/fs.h" +#include "save_instance.h" + +using Common::FS::IOFile; +namespace fs = std::filesystem; + +constexpr std::string_view sce_sys = "sce_sys"; // system folder inside save +constexpr std::string_view DirnameSaveDataMemory = "sce_sdmemory"; +constexpr std::string_view FilenameSaveDataMemory = "memory.dat"; + +namespace Libraries::SaveData::SaveMemory { + +static Core::FileSys::MntPoints* g_mnt = Common::Singleton::Instance(); + +static OrbisUserServiceUserId g_user_id{}; +static std::string g_game_serial{}; +static std::filesystem::path g_save_path{}; +static std::filesystem::path g_param_sfo_path{}; +static PSF g_param_sfo; + +static bool g_save_memory_initialized = false; +static std::mutex g_saving_memory_mutex; +static std::vector g_save_memory; + +static std::filesystem::path g_icon_path; +static std::vector g_icon_memory; + +static std::condition_variable g_trigger_save_memory; +static std::atomic_bool g_saving_memory = false; +static std::atomic_bool g_save_event = false; +static std::jthread g_save_memory_thread; + +static std::atomic_bool g_memory_dirty = false; +static std::atomic_bool g_param_dirty = false; +static std::atomic_bool g_icon_dirty = false; + +static void SaveFileSafe(void* buf, size_t count, const std::filesystem::path& path) { + const auto& dir = path.parent_path(); + const auto& name = path.filename(); + const auto tmp_path = dir / (name.string() + ".tmp"); + + IOFile file(tmp_path, Common::FS::FileAccessMode::Write); + file.WriteRaw(buf, count); + file.Close(); + + fs::remove(path); + fs::rename(tmp_path, path); +} + +[[noreturn]] void SaveThreadLoop() { + Common::SetCurrentThreadName("SaveData_SaveDataMemoryThread"); + std::mutex mtx; + while (true) { + { + std::unique_lock lk{mtx}; + g_trigger_save_memory.wait(lk); + } + // Save the memory + g_saving_memory = true; + std::scoped_lock lk{g_saving_memory_mutex}; + try { + LOG_DEBUG(Lib_SaveData, "Saving save data memory {}", g_save_path.string()); + + if (g_memory_dirty) { + g_memory_dirty = false; + SaveFileSafe(g_save_memory.data(), g_save_memory.size(), + g_save_path / FilenameSaveDataMemory); + } + if (g_param_dirty) { + g_param_dirty = false; + static std::vector buf; + g_param_sfo.Encode(buf); + SaveFileSafe(buf.data(), buf.size(), g_param_sfo_path); + } + if (g_icon_dirty) { + g_icon_dirty = false; + SaveFileSafe(g_icon_memory.data(), g_icon_memory.size(), g_icon_path); + } + + if (g_save_event) { + Backup::PushBackupEvent(Backup::BackupRequest{ + .user_id = g_user_id, + .title_id = g_game_serial, + .dir_name = std::string{DirnameSaveDataMemory}, + .origin = Backup::OrbisSaveDataEventType::SAVE_DATA_MEMORY_SYNC, + .save_path = g_save_path, + }); + g_save_event = false; + } + } catch (const fs::filesystem_error& e) { + LOG_ERROR(Lib_SaveData, "Failed to save save data memory: {}", e.what()); + MsgDialog::ShowMsgDialog(MsgDialog::MsgDialogState{ + MsgDialog::MsgDialogState::UserState{ + .type = MsgDialog::ButtonType::OK, + .msg = fmt::format("Failed to save save data memory.\nCode: <{}>\n{}", + e.code().message(), e.what()), + }, + }); + } + g_saving_memory = false; + } +} + +void SetDirectories(OrbisUserServiceUserId user_id, std::string _game_serial) { + g_user_id = user_id; + g_game_serial = std::move(_game_serial); + g_save_path = SaveInstance::MakeDirSavePath(user_id, g_game_serial, DirnameSaveDataMemory); + g_param_sfo_path = SaveInstance::GetParamSFOPath(g_save_path); + g_param_sfo = PSF(); + g_icon_path = g_save_path / sce_sys / "icon0.png"; +} + +const std::filesystem::path& GetSavePath() { + return g_save_path; +} + +size_t CreateSaveMemory(size_t memory_size) { + size_t existed_size = 0; + + static std::once_flag init_save_thread_flag; + std::call_once(init_save_thread_flag, + [] { g_save_memory_thread = std::jthread{SaveThreadLoop}; }); + + g_save_memory.resize(memory_size); + SaveInstance::SetupDefaultParamSFO(g_param_sfo, std::string{DirnameSaveDataMemory}, + g_game_serial); + + g_save_memory_initialized = true; + + if (!fs::exists(g_param_sfo_path)) { + // Create save memory + fs::create_directories(g_save_path / sce_sys); + + IOFile memory_file{g_save_path / FilenameSaveDataMemory, Common::FS::FileAccessMode::Write}; + bool ok = memory_file.SetSize(memory_size); + if (!ok) { + LOG_ERROR(Lib_SaveData, "Failed to set memory size"); + throw std::filesystem::filesystem_error( + "Failed to set save memory size", g_save_path / FilenameSaveDataMemory, + std::make_error_code(std::errc::no_space_on_device)); + } + memory_file.Close(); + } else { + // Load save memory + + bool ok = g_param_sfo.Open(g_param_sfo_path); + if (!ok) { + LOG_ERROR(Lib_SaveData, "Failed to open SFO at {}", g_param_sfo_path.string()); + throw std::filesystem::filesystem_error( + "failed to open SFO", g_param_sfo_path, + std::make_error_code(std::errc::illegal_byte_sequence)); + } + + IOFile memory_file{g_save_path / FilenameSaveDataMemory, Common::FS::FileAccessMode::Read}; + if (!memory_file.IsOpen()) { + LOG_ERROR(Lib_SaveData, "Failed to open save memory"); + throw std::filesystem::filesystem_error( + "failed to open save memory", g_save_path / FilenameSaveDataMemory, + std::make_error_code(std::errc::permission_denied)); + } + size_t save_size = memory_file.GetSize(); + existed_size = save_size; + memory_file.Seek(0); + memory_file.ReadRaw(g_save_memory.data(), std::min(save_size, memory_size)); + memory_file.Close(); + } + + return existed_size; +} + +void SetIcon(void* buf, size_t buf_size) { + if (buf == nullptr) { + const auto& src_icon = g_mnt->GetHostPath("/app0/sce_sys/save_data.png"); + if (fs::exists(src_icon)) { + fs::copy_file(src_icon, g_icon_path); + } + IOFile file(g_icon_path, Common::FS::FileAccessMode::Read); + size_t size = file.GetSize(); + file.Seek(0); + g_icon_memory.resize(size); + file.ReadRaw(g_icon_memory.data(), size); + file.Close(); + } else { + g_icon_memory.resize(buf_size); + std::memcpy(g_icon_memory.data(), buf, buf_size); + IOFile file(g_icon_path, Common::FS::FileAccessMode::Append); + file.Seek(0); + file.WriteRaw(g_icon_memory.data(), buf_size); + file.Close(); + } +} + +void WriteIcon(void* buf, size_t buf_size) { + if (buf_size != g_icon_memory.size()) { + g_icon_memory.resize(buf_size); + } + std::memcpy(g_icon_memory.data(), buf, buf_size); + g_icon_dirty = true; +} + +bool IsSaveMemoryInitialized() { + return g_save_memory_initialized; +} + +PSF& GetParamSFO() { + return g_param_sfo; +} + +std::span GetIcon() { + return {g_icon_memory}; +} + +void SaveSFO(bool sync) { + if (!sync) { + g_param_dirty = true; + return; + } + const bool ok = g_param_sfo.Encode(g_param_sfo_path); + if (!ok) { + LOG_ERROR(Lib_SaveData, "Failed to encode param.sfo"); + throw std::filesystem::filesystem_error("Failed to write param.sfo", g_param_sfo_path, + std::make_error_code(std::errc::permission_denied)); + } +} +bool IsSaving() { + return g_saving_memory; +} + +bool TriggerSaveWithoutEvent() { + if (g_saving_memory) { + return false; + } + g_trigger_save_memory.notify_one(); + return true; +} + +bool TriggerSave() { + if (g_saving_memory) { + return false; + } + g_save_event = true; + g_trigger_save_memory.notify_one(); + return true; +} + +void ReadMemory(void* buf, size_t buf_size, int64_t offset) { + std::scoped_lock lk{g_saving_memory_mutex}; + if (offset > g_save_memory.size()) { + UNREACHABLE_MSG("ReadMemory out of bounds"); + } + if (offset + buf_size > g_save_memory.size()) { + UNREACHABLE_MSG("ReadMemory out of bounds"); + } + std::memcpy(buf, g_save_memory.data() + offset, buf_size); +} + +void WriteMemory(void* buf, size_t buf_size, int64_t offset) { + std::scoped_lock lk{g_saving_memory_mutex}; + if (offset > g_save_memory.size()) { + UNREACHABLE_MSG("WriteMemory out of bounds"); + } + if (offset + buf_size > g_save_memory.size()) { + UNREACHABLE_MSG("WriteMemory out of bounds"); + } + std::memcpy(g_save_memory.data() + offset, buf, buf_size); + g_memory_dirty = true; +} + +} // namespace Libraries::SaveData::SaveMemory \ No newline at end of file diff --git a/src/core/libraries/save_data/save_memory.h b/src/core/libraries/save_data/save_memory.h new file mode 100644 index 0000000000..04eeaa6526 --- /dev/null +++ b/src/core/libraries/save_data/save_memory.h @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include "save_backup.h" + +class PSF; + +namespace Libraries::SaveData { +using OrbisUserServiceUserId = s32; +} + +namespace Libraries::SaveData::SaveMemory { + +void SetDirectories(OrbisUserServiceUserId user_id, std::string game_serial); + +[[nodiscard]] const std::filesystem::path& GetSavePath(); + +// returns the size of the existed save memory +size_t CreateSaveMemory(size_t memory_size); + +// Initialize the icon. Set buf to null to read the standard icon. +void SetIcon(void* buf, size_t buf_size); + +// Update the icon +void WriteIcon(void* buf, size_t buf_size); + +[[nodiscard]] bool IsSaveMemoryInitialized(); + +[[nodiscard]] PSF& GetParamSFO(); + +[[nodiscard]] std::span GetIcon(); + +// Save now or wait for the background thread to save +void SaveSFO(bool sync = false); + +[[nodiscard]] bool IsSaving(); + +bool TriggerSaveWithoutEvent(); + +bool TriggerSave(); + +void ReadMemory(void* buf, size_t buf_size, int64_t offset); + +void WriteMemory(void* buf, size_t buf_size, int64_t offset); + +} // namespace Libraries::SaveData::SaveMemory \ No newline at end of file diff --git a/src/core/libraries/save_data/savedata.cpp b/src/core/libraries/save_data/savedata.cpp index d5ea76e08a..d62c1b9a1b 100644 --- a/src/core/libraries/save_data/savedata.cpp +++ b/src/core/libraries/save_data/savedata.cpp @@ -4,30 +4,552 @@ #include #include +#include +#include + #include "common/assert.h" +#include "common/cstring.h" +#include "common/elf_info.h" +#include "common/enum.h" #include "common/logging/log.h" #include "common/path_util.h" -#include "common/singleton.h" +#include "common/string_util.h" #include "core/file_format/psf.h" #include "core/file_sys/fs.h" #include "core/libraries/error_codes.h" #include "core/libraries/libs.h" #include "core/libraries/save_data/savedata.h" -#include "error_codes.h" +#include "core/libraries/system/msgdialog.h" +#include "save_backup.h" +#include "save_instance.h" +#include "save_memory.h" + +namespace fs = std::filesystem; +namespace chrono = std::chrono; + +using Common::CString; +using Common::ElfInfo; namespace Libraries::SaveData { -bool is_rw_mode = false; -static constexpr std::string_view g_mount_point = "/savedata0"; // temp mount point (todo) -std::string game_serial; + +enum class Error : u32 { + OK = 0, + USER_SERVICE_NOT_INITIALIZED = 0x80960002, + PARAMETER = 0x809F0000, + NOT_INITIALIZED = 0x809F0001, + OUT_OF_MEMORY = 0x809F0002, + BUSY = 0x809F0003, + NOT_MOUNTED = 0x809F0004, + EXISTS = 0x809F0007, + NOT_FOUND = 0x809F0008, + NO_SPACE_FS = 0x809F000A, + INTERNAL = 0x809F000B, + MOUNT_FULL = 0x809F000C, + BAD_MOUNTED = 0x809F000D, + BROKEN = 0x809F000F, + INVALID_LOGIN_USER = 0x809F0011, + MEMORY_NOT_READY = 0x809F0012, + BACKUP_BUSY = 0x809F0013, + BUSY_FOR_SAVING = 0x809F0016, +}; + +enum class OrbisSaveDataSaveDataMemoryOption : u32 { + NONE = 0, + SET_PARAM = 1 << 0, + DOUBLE_BUFFER = 1 << 1, + UNLOCK_LIMITATIONS = 1 << 2, +}; + +using OrbisUserServiceUserId = s32; +using OrbisSaveDataBlocks = u64; + +constexpr u32 OrbisSaveDataBlockSize = 32768; // 32 KiB +constexpr u32 OrbisSaveDataBlocksMin2 = 96; // 3MiB +constexpr u32 OrbisSaveDataBlocksMax = 32768; // 1 GiB + +// Maximum size for a mount point "/savedataN", where N is a number +constexpr size_t OrbisSaveDataMountPointDataMaxsize = 16; + +constexpr size_t OrbisSaveDataFingerprintDataSize = 65; // Maximum fingerprint size + +enum class OrbisSaveDataMountMode : u32 { + RDONLY = 1 << 0, + RDWR = 1 << 1, + CREATE = 1 << 2, + DESTRUCT_OFF = 1 << 3, + COPY_ICON = 1 << 4, + CREATE2 = 1 << 5, +}; +DECLARE_ENUM_FLAG_OPERATORS(OrbisSaveDataMountMode); + +enum class OrbisSaveDataMountStatus : u32 { + NOTHING = 0, + CREATED = 1, +}; + +enum class OrbisSaveDataParamType : u32 { + ALL = 0, + TITLE = 1, + SUB_TITLE = 2, + DETAIL = 3, + USER_PARAM = 4, + MTIME = 5, +}; + +enum class OrbisSaveDataSortKey : u32 { + DIRNAME = 0, + USER_PARAM = 1, + BLOCKS = 2, + MTIME = 3, + FREE_BLOCKS = 5, +}; + +enum class OrbisSaveDataSortOrder : u32 { + ASCENT = 0, + DESCENT = 1, +}; + +struct OrbisSaveDataFingerprint { + CString data; + std::array _pad; +}; + +struct OrbisSaveDataBackup { + OrbisUserServiceUserId userId; + s32 : 32; + const OrbisSaveDataTitleId* titleId; + const OrbisSaveDataDirName* dirName; + const OrbisSaveDataFingerprint* param; + std::array _reserved; +}; + +struct OrbisSaveDataCheckBackupData { + OrbisUserServiceUserId userId; + s32 : 32; + const OrbisSaveDataTitleId* titleId; + const OrbisSaveDataDirName* dirName; + OrbisSaveDataParam* param; + OrbisSaveDataIcon* icon; + std::array _reserved; +}; + +struct OrbisSaveDataDelete { + OrbisUserServiceUserId userId; + s32 : 32; + const OrbisSaveDataTitleId* titleId; + const OrbisSaveDataDirName* dirName; + u32 _unused; + std::array _reserved; + s32 : 32; +}; + +struct OrbisSaveDataIcon { + void* buf; + size_t bufSize; + size_t dataSize; + std::array _reserved; + + Error LoadIcon(const std::filesystem::path& icon_path) { + try { + const Common::FS::IOFile file(icon_path, Common::FS::FileAccessMode::Read); + dataSize = file.GetSize(); + file.Seek(0); + file.ReadRaw(buf, std::min(bufSize, dataSize)); + } catch (const fs::filesystem_error& e) { + LOG_ERROR(Lib_SaveData, "Failed to load icon: {}", e.what()); + return Error::INTERNAL; + } + return Error::OK; + } +}; + +struct OrbisSaveDataMemoryData { + void* buf; + size_t bufSize; + s64 offset; + u8 _reserved[40]; +}; + +struct OrbisSaveDataMemoryGet2 { + OrbisUserServiceUserId userId; + std::array _pad; + OrbisSaveDataMemoryData* data; + OrbisSaveDataParam* param; + OrbisSaveDataIcon* icon; + std::array _reserved; +}; + +struct OrbisSaveDataMemorySet2 { + OrbisUserServiceUserId userId; + std::array _pad; + const OrbisSaveDataMemoryData* data; + const OrbisSaveDataParam* param; + const OrbisSaveDataIcon* icon; + std::array _reserved; +}; + +struct OrbisSaveDataMemorySetup2 { + OrbisSaveDataSaveDataMemoryOption option; + OrbisUserServiceUserId userId; + size_t memorySize; + size_t iconMemorySize; + // +4.5 + const OrbisSaveDataParam* initParam; + // +4.5 + const OrbisSaveDataIcon* initIcon; + std::array _reserved; +}; + +struct OrbisSaveDataMemorySetupResult { + size_t existedMemorySize; + std::array _reserved; +}; + +struct OrbisSaveDataMemorySync { + OrbisUserServiceUserId userId; + std::array _reserved; +}; + +struct OrbisSaveDataMount2 { + OrbisUserServiceUserId userId; + s32 : 32; + const OrbisSaveDataDirName* dirName; + OrbisSaveDataBlocks blocks; + OrbisSaveDataMountMode mountMode; + std::array _reserved; + s32 : 32; +}; + +struct OrbisSaveDataMount { + OrbisUserServiceUserId userId; + s32 : 32; + const OrbisSaveDataTitleId* titleId; + const OrbisSaveDataDirName* dirName; + const OrbisSaveDataFingerprint* fingerprint; + OrbisSaveDataBlocks blocks; + OrbisSaveDataMountMode mountMode; + std::array _reserved; +}; + +struct OrbisSaveDataMountInfo { + OrbisSaveDataBlocks blocks; + OrbisSaveDataBlocks freeBlocks; + std::array _reserved; +}; + +struct OrbisSaveDataMountPoint { + CString data; +}; + +struct OrbisSaveDataMountResult { + OrbisSaveDataMountPoint mount_point; + OrbisSaveDataBlocks required_blocks; + u32 _unused; + // +4.5 + OrbisSaveDataMountStatus mount_status; + std::array _reserved; + s32 : 32; +}; + +struct OrbisSaveDataRestoreBackupData { + OrbisUserServiceUserId userId; + s32 : 32; + const OrbisSaveDataTitleId* titleId; + const OrbisSaveDataDirName* dirName; + const OrbisSaveDataFingerprint* fingerprint; + u32 _unused; + std::array _reserved; + s32 : 32; +}; + +struct OrbisSaveDataDirNameSearchCond { + OrbisUserServiceUserId userId; + int : 32; + const OrbisSaveDataTitleId* titleId; + const OrbisSaveDataDirName* dirName; + OrbisSaveDataSortKey key; + OrbisSaveDataSortOrder order; + std::array _reserved; +}; + +struct OrbisSaveDataSearchInfo { + u64 blocks; + u64 freeBlocks; + std::array _reserved; +}; + +struct OrbisSaveDataDirNameSearchResult { + u32 hitNum; + int : 32; + OrbisSaveDataDirName* dirNames; + u32 dirNamesNum; + // +1.7 + u32 setNum; + // +1.7 + OrbisSaveDataParam* params; + // +2.5 + OrbisSaveDataSearchInfo* infos; + std::array _reserved; + int : 32; +}; + +struct OrbisSaveDataEventParam { // dummy structure + OrbisSaveDataEventParam() = delete; +}; + +using OrbisSaveDataEventType = Backup::OrbisSaveDataEventType; + +struct OrbisSaveDataEvent { + OrbisSaveDataEventType type; + s32 errorCode; + OrbisUserServiceUserId userId; + std::array _pad; + OrbisSaveDataTitleId titleId; + OrbisSaveDataDirName dirName; + std::array _reserved; +}; + +static bool g_initialized = false; +static std::string g_game_serial; +static u32 g_fw_ver; +static std::array, 16> g_mount_slots; + +static void initialize() { + g_initialized = true; + g_game_serial = ElfInfo::Instance().GameSerial(); + g_fw_ver = ElfInfo::Instance().FirmwareVer(); +} + +// game_00other | game*other + +static bool match(std::string_view str, std::string_view pattern) { + auto str_it = str.begin(); + auto pat_it = pattern.begin(); + while (str_it != str.end() && pat_it != pattern.end()) { + if (*pat_it == '%') { // 0 or more wildcard + for (auto str_wild_it = str_it; str_wild_it <= str.end(); ++str_wild_it) { + if (match({str_wild_it, str.end()}, {pat_it + 1, pattern.end()})) { + return true; + } + } + return false; + } + if (*pat_it == '_') { // 1 character wildcard + ++str_it; + ++pat_it; + } else if (*pat_it != *str_it) { + return false; + } + ++str_it; + ++pat_it; + } + return str_it == str.end() && pat_it == pattern.end(); +} + +static Error setNotInitializedError() { + if (g_fw_ver < ElfInfo::FW_20) { + return Error::INTERNAL; + } + if (g_fw_ver < ElfInfo::FW_25) { + return Error::USER_SERVICE_NOT_INITIALIZED; + } + return Error::NOT_INITIALIZED; +} + +static Error saveDataMount(const OrbisSaveDataMount2* mount_info, + OrbisSaveDataMountResult* mount_result) { + + if (mount_info->userId < 0) { + return Error::INVALID_LOGIN_USER; + } + if (mount_info->dirName == nullptr) { + LOG_INFO(Lib_SaveData, "called without dirName"); + return Error::PARAMETER; + } + + // check backup status + { + const auto save_path = SaveInstance::MakeDirSavePath(mount_info->userId, g_game_serial, + mount_info->dirName->data); + if (Backup::IsBackupExecutingFor(save_path) && g_fw_ver) { + return Error::BACKUP_BUSY; + } + } + + auto mount_mode = mount_info->mountMode; + const bool is_ro = True(mount_mode & OrbisSaveDataMountMode::RDONLY); + + const bool create = True(mount_mode & OrbisSaveDataMountMode::CREATE); + const bool create_if_not_exist = + True(mount_mode & OrbisSaveDataMountMode::CREATE2) && g_fw_ver >= ElfInfo::FW_45; + ASSERT(!create || !create_if_not_exist); // Can't have both + + const bool copy_icon = True(mount_mode & OrbisSaveDataMountMode::COPY_ICON); + + const bool ignore_corrupt = + True(mount_mode & OrbisSaveDataMountMode::DESTRUCT_OFF) || g_fw_ver < ElfInfo::FW_16; + + const std::string_view dir_name{mount_info->dirName->data}; + + // find available mount point + int slot_num = -1; + for (size_t i = 0; i < g_mount_slots.size(); i++) { + const auto& instance = g_mount_slots[i]; + if (instance.has_value()) { + const auto& slot_name = instance->GetDirName(); + if (slot_name == dir_name) { + return Error::BUSY; + } + } else { + slot_num = static_cast(i); + break; + } + } + if (slot_num == -1) { + return Error::MOUNT_FULL; + } + + SaveInstance save_instance{slot_num, mount_info->userId, g_game_serial, dir_name, + (int)mount_info->blocks}; + + if (save_instance.Mounted()) { + UNREACHABLE_MSG("Save instance should not be mounted"); + } + + if (!create && !create_if_not_exist && !save_instance.Exists()) { + return Error::NOT_FOUND; + } + if (create && save_instance.Exists()) { + return Error::EXISTS; + } + + bool to_be_created = !save_instance.Exists(); + + if (to_be_created) { // Check size + + if (mount_info->blocks < OrbisSaveDataBlocksMin2 || + mount_info->blocks > OrbisSaveDataBlocksMax) { + LOG_INFO(Lib_SaveData, "called with invalid block size"); + } + + const auto root_save = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir); + fs::create_directories(root_save); + const auto available = fs::space(root_save).available; + + auto requested_size = mount_info->blocks * OrbisSaveDataBlockSize; + if (requested_size > available) { + mount_result->required_blocks = (requested_size - available) / OrbisSaveDataBlockSize; + return Error::NO_SPACE_FS; + } + } + + try { + save_instance.SetupAndMount(is_ro, copy_icon, ignore_corrupt); + } catch (const fs::filesystem_error& e) { + if (e.code() == std::errc::illegal_byte_sequence) { + LOG_ERROR(Lib_SaveData, "Corrupted save data"); + return Error::BROKEN; + } + if (e.code() == std::errc::no_space_on_device) { + return Error::NO_SPACE_FS; + } + LOG_ERROR(Lib_SaveData, "Failed to mount save data: {}", e.what()); + return Error::INTERNAL; + } + + mount_result->mount_point.data.FromString(save_instance.GetMountPoint()); + + if (g_fw_ver >= ElfInfo::FW_45) { + mount_result->mount_status = create_if_not_exist && to_be_created + ? OrbisSaveDataMountStatus::CREATED + : OrbisSaveDataMountStatus::NOTHING; + } + + g_mount_slots[slot_num].emplace(std::move(save_instance)); + + return Error::OK; +} + +static Error Umount(const OrbisSaveDataMountPoint* mountPoint, bool call_backup = false) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (mountPoint == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "Umount mountPoint:{}", mountPoint->data.to_view()); + const std::string_view mount_point_str{mountPoint->data}; + for (auto& instance : g_mount_slots) { + if (instance.has_value()) { + const auto& slot_name = instance->GetMountPoint(); + if (slot_name == mount_point_str) { + if (call_backup) { + Backup::StartThread(); + Backup::NewRequest(instance->GetUserId(), instance->GetTitleId(), + instance->GetDirName(), + OrbisSaveDataEventType::UMOUNT_BACKUP); + } + // TODO: check if is busy + instance->Umount(); + instance.reset(); + return Error::OK; + } + } + } + return Error::NOT_FOUND; +} + +void OrbisSaveDataParam::FromSFO(const PSF& sfo) { + memset(this, 0, sizeof(OrbisSaveDataParam)); + title.FromString(sfo.GetString(SaveParams::MAINTITLE).value_or("Unknown")); + subTitle.FromString(sfo.GetString(SaveParams::SUBTITLE).value_or("")); + detail.FromString(sfo.GetString(SaveParams::DETAIL).value_or("")); + userParam = sfo.GetInteger(SaveParams::SAVEDATA_LIST_PARAM).value_or(0); + const auto time_since_epoch = sfo.GetLastWrite().time_since_epoch(); + mtime = chrono::duration_cast(time_since_epoch).count(); +} + +void OrbisSaveDataParam::ToSFO(PSF& sfo) const { + sfo.AddString(std::string{SaveParams::MAINTITLE}, std::string{title}, true); + sfo.AddString(std::string{SaveParams::SUBTITLE}, std::string{subTitle}, true); + sfo.AddString(std::string{SaveParams::DETAIL}, std::string{detail}, true); + sfo.AddInteger(std::string{SaveParams::SAVEDATA_LIST_PARAM}, static_cast(userParam), true); +} int PS4_SYSV_ABI sceSaveDataAbort() { LOG_ERROR(Lib_SaveData, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataBackup() { - LOG_ERROR(Lib_SaveData, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataBackup(const OrbisSaveDataBackup* backup) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (backup == nullptr || backup->dirName == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + + const std::string_view dir_name{backup->dirName->data}; + LOG_DEBUG(Lib_SaveData, "called dirName: {}", dir_name); + + std::string_view title{backup->titleId != nullptr ? std::string_view{backup->titleId->data} + : std::string_view{g_game_serial}}; + + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetUserId() == backup->userId && + instance->GetTitleId() == title && instance->GetDirName() == dir_name) { + return Error::BUSY; + } + } + + Backup::StartThread(); + Backup::NewRequest(backup->userId, title, dir_name, OrbisSaveDataEventType::BACKUP); + + return Error::OK; } int PS4_SYSV_ABI sceSaveDataBindPsnAccount() { @@ -50,15 +572,55 @@ int PS4_SYSV_ABI sceSaveDataChangeInternal() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataCheckBackupData(const OrbisSaveDataCheckBackupData* check) { - auto* mnt = Common::Singleton::Instance(); - const auto mount_dir = mnt->GetHostPath(check->dirName->data); - if (!std::filesystem::exists(mount_dir)) { - return ORBIS_SAVE_DATA_ERROR_NOT_FOUND; +Error PS4_SYSV_ABI sceSaveDataCheckBackupData(const OrbisSaveDataCheckBackupData* check) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (check == nullptr || check->dirName == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; } - LOG_INFO(Lib_SaveData, "called = {}", mount_dir.string()); + LOG_DEBUG(Lib_SaveData, "called with titleId={}", check->titleId->data.to_view()); - return ORBIS_OK; + const std::string_view title{check->titleId != nullptr ? std::string_view{check->titleId->data} + : std::string_view{g_game_serial}}; + + const auto save_path = + SaveInstance::MakeDirSavePath(check->userId, title, check->dirName->data); + + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetSavePath() == save_path) { + return Error::BUSY; + } + } + + if (Backup::IsBackupExecutingFor(save_path)) { + return Error::BACKUP_BUSY; + } + + const auto backup_path = Backup::MakeBackupPath(save_path); + if (!fs::exists(backup_path)) { + return Error::NOT_FOUND; + } + + if (check->param != nullptr) { + PSF sfo; + if (!sfo.Open(backup_path / "sce_sys" / "param.sfo")) { + LOG_ERROR(Lib_SaveData, "Failed to read SFO at {}", backup_path.string()); + return Error::INTERNAL; + } + check->param->FromSFO(sfo); + } + + if (check->icon != nullptr) { + const auto icon_path = backup_path / "sce_sys" / "icon0.png"; + if (fs::exists(icon_path) && check->icon->LoadIcon(icon_path) != Error::OK) { + return Error::INTERNAL; + } + } + + return Error::OK; } int PS4_SYSV_ABI sceSaveDataCheckBackupDataForCdlg() { @@ -96,9 +658,14 @@ int PS4_SYSV_ABI sceSaveDataCheckSaveDataVersionLatest() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataClearProgress() { - LOG_ERROR(Lib_SaveData, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataClearProgress() { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + LOG_DEBUG(Lib_SaveData, "called"); + Backup::ClearProgress(); + return Error::OK; } int PS4_SYSV_ABI sceSaveDataCopy5() { @@ -146,15 +713,35 @@ int PS4_SYSV_ABI sceSaveDataDebugTarget() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataDelete(const OrbisSaveDataDelete* del) { - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(1) / game_serial / std::string(del->dirName->data); - LOG_INFO(Lib_SaveData, "called: dirname = {}, mount_dir = {}", (char*)del->dirName->data, - mount_dir.string()); - if (std::filesystem::exists(mount_dir) && std::filesystem::is_directory(mount_dir)) { - std::filesystem::remove_all(mount_dir); +Error PS4_SYSV_ABI sceSaveDataDelete(const OrbisSaveDataDelete* del) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); } - return ORBIS_OK; + if (del == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + const std::string_view dirName{del->dirName->data}; + LOG_DEBUG(Lib_SaveData, "called dirName: {}", dirName); + if (dirName.empty()) { + return Error::PARAMETER; + } + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetDirName() == dirName) { + return Error::BUSY; + } + } + const auto save_path = SaveInstance::MakeDirSavePath(del->userId, g_game_serial, dirName); + try { + if (fs::exists(save_path)) { + fs::remove_all(save_path); + } + } catch (const fs::filesystem_error& e) { + LOG_ERROR(Lib_SaveData, "Failed to delete save data: {}", e.what()); + return Error::INTERNAL; + } + return Error::OK; } int PS4_SYSV_ABI sceSaveDataDelete5() { @@ -177,46 +764,123 @@ int PS4_SYSV_ABI sceSaveDataDeleteUser() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataDirNameSearch(const OrbisSaveDataDirNameSearchCond* cond, - OrbisSaveDataDirNameSearchResult* result) { - if (cond == nullptr) - return ORBIS_SAVE_DATA_ERROR_PARAMETER; - LOG_INFO(Lib_SaveData, "called"); - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(cond->userId) / game_serial; - if (!mount_dir.empty() && std::filesystem::exists(mount_dir)) { - if (cond->dirName == nullptr || std::string_view(cond->dirName->data) - .empty()) { // look for all dirs if no dir is provided. - for (int i = 0; const auto& entry : std::filesystem::directory_iterator(mount_dir)) { - if (std::filesystem::is_directory(entry.path()) && - entry.path().filename().string() != "sdmemory") { - // sceSaveDataDirNameSearch does not search for dataMemory1/2 dirs. - // copy dir name to be used by sceSaveDataMount in read mode. - strncpy(result->dirNames[i].data, entry.path().filename().string().c_str(), 32); - i++; - result->hitNum = i; - result->dirNamesNum = i; - result->setNum = i; - } - } - } else { // Need a game to test. - LOG_ERROR(Lib_SaveData, "Check Me. sceSaveDataDirNameSearch: dirName = {}", - cond->dirName->data); - strncpy(result->dirNames[0].data, cond->dirName->data, 32); - result->hitNum = 1; - result->dirNamesNum = 1; - result->setNum = 1; +Error PS4_SYSV_ABI sceSaveDataDirNameSearch(const OrbisSaveDataDirNameSearchCond* cond, + OrbisSaveDataDirNameSearchResult* result) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (cond == nullptr || result == nullptr || cond->key > OrbisSaveDataSortKey::FREE_BLOCKS || + cond->order > OrbisSaveDataSortOrder::DESCENT) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called"); + const std::string_view title_id{cond->titleId == nullptr + ? std::string_view{g_game_serial} + : std::string_view{cond->titleId->data}}; + const auto save_path = SaveInstance::MakeTitleSavePath(cond->userId, title_id); + + if (!fs::exists(save_path)) { + result->hitNum = 0; + if (g_fw_ver >= ElfInfo::FW_17) { + result->setNum = 0; + } + return Error::OK; + } + + std::vector dir_list; + + for (const auto& path : fs::directory_iterator{save_path}) { + auto dir_name = path.path().filename().string(); + // skip non-directories, sce_* and directories without param.sfo + if (fs::is_directory(path) && !dir_name.starts_with("sce_") && + fs::exists(SaveInstance::GetParamSFOPath(path))) { + dir_list.push_back(dir_name); + } + } + if (cond->dirName != nullptr) { + // Filter names + const auto pat = Common::ToLower(std::string_view{cond->dirName->data}); + if (!pat.empty()) { + std::erase_if(dir_list, [&](const std::string& dir_name) { + return !match(Common::ToLower(dir_name), pat); + }); + } + } + + std::unordered_map map_dir_sfo; + std::unordered_map map_max_blocks; + std::unordered_map map_free_size; + + for (const auto& dir_name : dir_list) { + const auto dir_path = SaveInstance::MakeDirSavePath(cond->userId, title_id, dir_name); + const auto sfo_path = SaveInstance::GetParamSFOPath(dir_path); + PSF sfo; + if (!sfo.Open(sfo_path)) { + LOG_ERROR(Lib_SaveData, "Failed to read SFO: {}", sfo_path.string()); + ASSERT_MSG(false, "Failed to read SFO"); } + map_dir_sfo.emplace(dir_name, std::move(sfo)); + + size_t size = Common::FS::GetDirectorySize(dir_path); + size_t total = SaveInstance::GetMaxBlocks(dir_path); + map_free_size.emplace(dir_name, total - size / OrbisSaveDataBlockSize); + map_max_blocks.emplace(dir_name, total); + } + +#define PROJ(x) [&](const auto& v) { return x; } + switch (cond->key) { + case OrbisSaveDataSortKey::DIRNAME: + std::ranges::stable_sort(dir_list); + break; + case OrbisSaveDataSortKey::USER_PARAM: + std::ranges::stable_sort( + dir_list, {}, + PROJ(map_dir_sfo.at(v).GetInteger(SaveParams::SAVEDATA_LIST_PARAM).value_or(0))); + break; + case OrbisSaveDataSortKey::BLOCKS: + std::ranges::stable_sort(dir_list, {}, PROJ(map_max_blocks.at(v))); + break; + case OrbisSaveDataSortKey::FREE_BLOCKS: + std::ranges::stable_sort(dir_list, {}, PROJ(map_free_size.at(v))); + break; + case OrbisSaveDataSortKey::MTIME: + std::ranges::stable_sort(dir_list, {}, PROJ(map_dir_sfo.at(v).GetLastWrite())); + break; + } +#undef PROJ + + if (cond->order == OrbisSaveDataSortOrder::DESCENT) { + std::ranges::reverse(dir_list); + } + + size_t max_count = std::min(static_cast(result->dirNamesNum), dir_list.size()); + if (g_fw_ver >= ElfInfo::FW_17) { + result->hitNum = dir_list.size(); + result->setNum = max_count; } else { - result->hitNum = 0; - result->dirNamesNum = 0; - result->setNum = 0; + result->hitNum = max_count; } - if (result->infos != nullptr) { - result->infos->blocks = ORBIS_SAVE_DATA_BLOCK_SIZE; - result->infos->freeBlocks = ORBIS_SAVE_DATA_BLOCK_SIZE; + + for (size_t i = 0; i < max_count; i++) { + auto& name_data = result->dirNames[i].data; + name_data.FromString(dir_list[i]); + + if (g_fw_ver >= ElfInfo::FW_17 && result->params != nullptr) { + auto& sfo = map_dir_sfo.at(dir_list[i]); + auto& param_data = result->params[i]; + param_data.FromSFO(sfo); + } + + if (g_fw_ver >= ElfInfo::FW_25 && result->infos != nullptr) { + auto& info = result->infos[i]; + info.blocks = map_max_blocks.at(dir_list[i]); + info.freeBlocks = map_free_size.at(dir_list[i]); + } } - return ORBIS_OK; + + return Error::OK; } int PS4_SYSV_ABI sceSaveDataDirNameSearchInternal() { @@ -279,15 +943,30 @@ int PS4_SYSV_ABI sceSaveDataGetEventInfo() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataGetEventResult(const OrbisSaveDataEventParam* eventParam, - OrbisSaveDataEvent* event) { - // eventParam can be 0/null. - if (event == nullptr) - return ORBIS_SAVE_DATA_ERROR_NOT_INITIALIZED; +Error PS4_SYSV_ABI sceSaveDataGetEventResult(const OrbisSaveDataEventParam*, + OrbisSaveDataEvent* event) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (event == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_TRACE(Lib_SaveData, "called"); - LOG_INFO(Lib_SaveData, "called: Todo."); - event->userId = 1; - return ORBIS_OK; + auto last_event = Backup::PopLastEvent(); + if (!last_event.has_value()) { + return Error::NOT_FOUND; + } + + event->type = last_event->origin; + event->errorCode = 0; + event->userId = last_event->user_id; + event->titleId.data.FromString(last_event->title_id); + event->dirName.data.FromString(last_event->dir_name); + + return Error::OK; } int PS4_SYSV_ABI sceSaveDataGetFormat() { @@ -300,65 +979,119 @@ int PS4_SYSV_ABI sceSaveDataGetMountedSaveDataCount() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataGetMountInfo(const OrbisSaveDataMountPoint* mountPoint, - OrbisSaveDataMountInfo* info) { - LOG_INFO(Lib_SaveData, "called"); - info->blocks = ORBIS_SAVE_DATA_BLOCKS_MAX; - info->freeBlocks = ORBIS_SAVE_DATA_BLOCKS_MAX; - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataGetMountInfo(const OrbisSaveDataMountPoint* mountPoint, + OrbisSaveDataMountInfo* info) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (mountPoint == nullptr || info == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called"); + const std::string_view mount_point_str{mountPoint->data}; + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetMountPoint() == mount_point_str) { + const u32 blocks = instance->GetMaxBlocks(); + const u64 size = Common::FS::GetDirectorySize(instance->GetSavePath()); + info->blocks = blocks; + info->freeBlocks = blocks - size / OrbisSaveDataBlockSize; + return Error::OK; + } + } + return Error::NOT_MOUNTED; } -int PS4_SYSV_ABI sceSaveDataGetParam(const OrbisSaveDataMountPoint* mountPoint, - const OrbisSaveDataParamType paramType, void* paramBuf, - const size_t paramBufSize, size_t* gotSize) { - - if (mountPoint == nullptr) - return ORBIS_SAVE_DATA_ERROR_PARAMETER; - - auto* mnt = Common::Singleton::Instance(); - const auto mount_dir = mnt->GetHostPath(mountPoint->data); - Common::FS::IOFile file(mount_dir / "param.txt", Common::FS::FileAccessMode::Read); - OrbisSaveDataParam params; - file.Read(params); - - LOG_INFO(Lib_SaveData, "called"); +Error PS4_SYSV_ABI sceSaveDataGetParam(const OrbisSaveDataMountPoint* mountPoint, + OrbisSaveDataParamType paramType, void* paramBuf, + size_t paramBufSize, size_t* gotSize) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (paramType > OrbisSaveDataParamType::MTIME || paramBuf == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called: paramType = {}", magic_enum::enum_name(paramType)); + const PSF* param_sfo = nullptr; + + const std::string_view mount_point_str{mountPoint->data}; + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetMountPoint() == mount_point_str) { + param_sfo = &instance->GetParamSFO(); + break; + } + } + if (param_sfo == nullptr) { + return Error::NOT_MOUNTED; + } switch (paramType) { - case ORBIS_SAVE_DATA_PARAM_TYPE_ALL: { - memcpy(paramBuf, ¶ms, sizeof(OrbisSaveDataParam)); - *gotSize = sizeof(OrbisSaveDataParam); - } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_TITLE: { - std::memcpy(paramBuf, ¶ms.title, ORBIS_SAVE_DATA_TITLE_MAXSIZE); - *gotSize = ORBIS_SAVE_DATA_TITLE_MAXSIZE; - } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_SUB_TITLE: { - std::memcpy(paramBuf, ¶ms.subTitle, ORBIS_SAVE_DATA_SUBTITLE_MAXSIZE); - *gotSize = ORBIS_SAVE_DATA_SUBTITLE_MAXSIZE; - } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_DETAIL: { - std::memcpy(paramBuf, ¶ms.detail, ORBIS_SAVE_DATA_DETAIL_MAXSIZE); - *gotSize = ORBIS_SAVE_DATA_DETAIL_MAXSIZE; - } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_USER_PARAM: { - std::memcpy(paramBuf, ¶ms.userParam, sizeof(u32)); - *gotSize = sizeof(u32); + case OrbisSaveDataParamType::ALL: { + const auto param = static_cast(paramBuf); + ASSERT(paramBufSize == sizeof(OrbisSaveDataParam)); + param->FromSFO(*param_sfo); + if (gotSize != nullptr) { + *gotSize = sizeof(OrbisSaveDataParam); + } + break; + } + case OrbisSaveDataParamType::TITLE: + case OrbisSaveDataParamType::SUB_TITLE: + case OrbisSaveDataParamType::DETAIL: { + const auto param = static_cast(paramBuf); + std::string_view key; + if (paramType == OrbisSaveDataParamType::TITLE) { + key = SaveParams::MAINTITLE; + } else if (paramType == OrbisSaveDataParamType::SUB_TITLE) { + key = SaveParams::SUBTITLE; + } else if (paramType == OrbisSaveDataParamType::DETAIL) { + key = SaveParams::DETAIL; + } else { + UNREACHABLE(); + } + const size_t s = param_sfo->GetString(key).value_or("").copy(param, paramBufSize - 1); + param[s] = '\0'; // null terminate + if (gotSize != nullptr) { + *gotSize = s + 1; + } } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_MTIME: { - std::memcpy(paramBuf, ¶ms.mtime, sizeof(time_t)); - *gotSize = sizeof(time_t); + case OrbisSaveDataParamType::USER_PARAM: { + const auto param = static_cast(paramBuf); + *param = param_sfo->GetInteger(SaveParams::SAVEDATA_LIST_PARAM).value_or(0); + if (gotSize != nullptr) { + *gotSize = sizeof(u32); + } } break; - default: { - UNREACHABLE_MSG("Unknown Param = {}", paramType); + case OrbisSaveDataParamType::MTIME: { + const auto param = static_cast(paramBuf); + const auto last_write = param_sfo->GetLastWrite().time_since_epoch(); + *param = chrono::duration_cast(last_write).count(); + if (gotSize != nullptr) { + *gotSize = sizeof(time_t); + } } break; + default: + UNREACHABLE(); } - return ORBIS_OK; + return Error::OK; } -int PS4_SYSV_ABI sceSaveDataGetProgress() { - LOG_ERROR(Lib_SaveData, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataGetProgress(float* progress) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (progress == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called"); + *progress = Backup::GetProgress(); + return Error::OK; } int PS4_SYSV_ABI sceSaveDataGetSaveDataCount() { @@ -366,44 +1099,56 @@ int PS4_SYSV_ABI sceSaveDataGetSaveDataCount() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataGetSaveDataMemory(const u32 userId, void* buf, const size_t bufSize, - const int64_t offset) { - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(userId) / game_serial / "sdmemory/save_mem1.sav"; - - Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Read); - if (!file.IsOpen()) { - return false; - } - file.Seek(offset); - size_t nbytes = file.ReadRaw(buf, bufSize); - LOG_INFO(Lib_SaveData, "called: bufSize = {}, offset = {}", bufSize, offset, nbytes); - - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataGetSaveDataMemory(const OrbisUserServiceUserId userId, void* buf, + const size_t bufSize, const int64_t offset) { + LOG_DEBUG(Lib_SaveData, "Redirecting to sceSaveDataGetSaveDataMemory2"); + OrbisSaveDataMemoryData data{}; + data.buf = buf; + data.bufSize = bufSize; + data.offset = offset; + OrbisSaveDataMemoryGet2 param{}; + param.userId = userId; + param.data = &data; + param.param = nullptr; + param.icon = nullptr; + return sceSaveDataGetSaveDataMemory2(¶m); } -int PS4_SYSV_ABI sceSaveDataGetSaveDataMemory2(OrbisSaveDataMemoryGet2* getParam) { - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(getParam->userId) / game_serial / "sdmemory"; - if (getParam == nullptr) - return ORBIS_SAVE_DATA_ERROR_PARAMETER; - if (getParam->data != nullptr) { - Common::FS::IOFile file(mount_dir / "save_mem2.sav", Common::FS::FileAccessMode::Read); - if (!file.IsOpen()) { - return false; - } - file.Seek(getParam->data->offset); - file.ReadRaw(getParam->data->buf, getParam->data->bufSize); - LOG_INFO(Lib_SaveData, "called: bufSize = {}, offset = {}", getParam->data->bufSize, - getParam->data->offset); +Error PS4_SYSV_ABI sceSaveDataGetSaveDataMemory2(OrbisSaveDataMemoryGet2* getParam) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); } - - if (getParam->param != nullptr) { - Common::FS::IOFile file(mount_dir / "param.txt", Common::FS::FileAccessMode::Read); - file.ReadRaw(getParam->param, sizeof(OrbisSaveDataParam)); + if (getParam == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + if (!SaveMemory::IsSaveMemoryInitialized()) { + LOG_INFO(Lib_SaveData, "called without save memory initialized"); + return Error::MEMORY_NOT_READY; + } + if (SaveMemory::IsSaving()) { + LOG_TRACE(Lib_SaveData, "called while saving"); + return Error::BUSY_FOR_SAVING; + } + LOG_DEBUG(Lib_SaveData, "called"); + auto data = getParam->data; + if (data != nullptr) { + SaveMemory::ReadMemory(data->buf, data->bufSize, data->offset); + } + auto param = getParam->param; + if (param != nullptr) { + param->FromSFO(SaveMemory::GetParamSFO()); + } + auto icon = getParam->icon; + if (icon != nullptr) { + auto icon_mem = SaveMemory::GetIcon(); + size_t total = std::min(icon->bufSize, icon_mem.size()); + std::memcpy(icon->buf, icon_mem.data(), total); + icon->dataSize = total; } - return ORBIS_OK; + return Error::OK; } int PS4_SYSV_ABI sceSaveDataGetSaveDataRootDir() { @@ -431,25 +1176,22 @@ int PS4_SYSV_ABI sceSaveDataGetUpdatedDataCount() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataInitialize() { - LOG_INFO(Lib_SaveData, "called"); - static auto* param_sfo = Common::Singleton::Instance(); - game_serial = std::string(param_sfo->GetString("CONTENT_ID"), 7, 9); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataInitialize(void*) { + LOG_DEBUG(Lib_SaveData, "called"); + initialize(); + return Error::OK; } -int PS4_SYSV_ABI sceSaveDataInitialize2() { - LOG_INFO(Lib_SaveData, "called"); - static auto* param_sfo = Common::Singleton::Instance(); - game_serial = std::string(param_sfo->GetString("CONTENT_ID"), 7, 9); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataInitialize2(void*) { + LOG_DEBUG(Lib_SaveData, "called"); + initialize(); + return Error::OK; } -int PS4_SYSV_ABI sceSaveDataInitialize3() { - LOG_INFO(Lib_SaveData, "called"); - static auto* param_sfo = Common::Singleton::Instance(); - game_serial = std::string(param_sfo->GetString("CONTENT_ID"), 7, 9); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataInitialize3(void*) { + LOG_DEBUG(Lib_SaveData, "called"); + initialize(); + return Error::OK; } int PS4_SYSV_ABI sceSaveDataInitializeForCdlg() { @@ -467,100 +1209,69 @@ int PS4_SYSV_ABI sceSaveDataIsMounted() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataLoadIcon(const OrbisSaveDataMountPoint* mountPoint, - OrbisSaveDataIcon* icon) { - auto* mnt = Common::Singleton::Instance(); - const auto mount_dir = mnt->GetHostPath(mountPoint->data); - LOG_INFO(Lib_SaveData, "called: dir = {}", mount_dir.string()); - - if (icon != nullptr) { - Common::FS::IOFile file(mount_dir / "save_data.png", Common::FS::FileAccessMode::Read); - icon->bufSize = file.GetSize(); - file.ReadRaw(icon->buf, icon->bufSize); - } - return ORBIS_OK; -} - -s32 saveDataMount(u32 user_id, char* dir_name, u32 mount_mode, - OrbisSaveDataMountResult* mount_result) { - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(user_id) / game_serial / dir_name; - auto* mnt = Common::Singleton::Instance(); - switch (mount_mode) { - case ORBIS_SAVE_DATA_MOUNT_MODE_RDONLY: - case ORBIS_SAVE_DATA_MOUNT_MODE_RDWR: - case ORBIS_SAVE_DATA_MOUNT_MODE_RDWR | ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF: - case ORBIS_SAVE_DATA_MOUNT_MODE_RDONLY | ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF: { - is_rw_mode = (mount_mode == ORBIS_SAVE_DATA_MOUNT_MODE_RDWR) ? true : false; - if (!std::filesystem::exists(mount_dir)) { - return ORBIS_SAVE_DATA_ERROR_NOT_FOUND; - } - mount_result->mount_status = 0; - g_mount_point.copy(mount_result->mount_point.data, 16); - mnt->Mount(mount_dir, mount_result->mount_point.data); - } break; - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE | ORBIS_SAVE_DATA_MOUNT_MODE_RDONLY: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE | ORBIS_SAVE_DATA_MOUNT_MODE_RDWR: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE | ORBIS_SAVE_DATA_MOUNT_MODE_RDWR | - ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE | ORBIS_SAVE_DATA_MOUNT_MODE_RDWR | - ORBIS_SAVE_DATA_MOUNT_MODE_COPY_ICON: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE | ORBIS_SAVE_DATA_MOUNT_MODE_COPY_ICON: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE | ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF | - ORBIS_SAVE_DATA_MOUNT_MODE_COPY_ICON: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE | ORBIS_SAVE_DATA_MOUNT_MODE_RDWR | - ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF | ORBIS_SAVE_DATA_MOUNT_MODE_COPY_ICON: { - if (std::filesystem::exists(mount_dir)) { - return ORBIS_SAVE_DATA_ERROR_EXISTS; - } - if (std::filesystem::create_directories(mount_dir)) { - g_mount_point.copy(mount_result->mount_point.data, 16); - mnt->Mount(mount_dir, mount_result->mount_point.data); - mount_result->mount_status = 1; - } - } break; - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE2: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE2 | ORBIS_SAVE_DATA_MOUNT_MODE_RDWR: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE2 | ORBIS_SAVE_DATA_MOUNT_MODE_RDWR | - ORBIS_SAVE_DATA_MOUNT_MODE_COPY_ICON: - case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE2 | ORBIS_SAVE_DATA_MOUNT_MODE_RDWR | - ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF | ORBIS_SAVE_DATA_MOUNT_MODE_COPY_ICON: { - if (!std::filesystem::exists(mount_dir)) { - std::filesystem::create_directories(mount_dir); +Error PS4_SYSV_ABI sceSaveDataLoadIcon(const OrbisSaveDataMountPoint* mountPoint, + OrbisSaveDataIcon* icon) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (mountPoint == nullptr || icon == nullptr || icon->buf == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called"); + std::filesystem::path path; + const std::string_view mount_point_str{mountPoint->data}; + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetMountPoint() == mount_point_str) { + path = instance->GetIconPath(); + break; } - g_mount_point.copy(mount_result->mount_point.data, 16); - mnt->Mount(mount_dir, mount_result->mount_point.data); - mount_result->mount_status = 1; - } break; - default: - UNREACHABLE_MSG("Unknown mount mode = {}", mount_mode); } - mount_result->required_blocks = 0; + if (path.empty()) { + return Error::NOT_MOUNTED; + } + if (!fs::exists(path)) { + return Error::NOT_FOUND; + } - return ORBIS_OK; + return icon->LoadIcon(path); } -s32 PS4_SYSV_ABI sceSaveDataMount(const OrbisSaveDataMount* mount, - OrbisSaveDataMountResult* mount_result) { - if (mount == nullptr) { - return ORBIS_SAVE_DATA_ERROR_PARAMETER; +Error PS4_SYSV_ABI sceSaveDataMount(const OrbisSaveDataMount* mount, + OrbisSaveDataMountResult* mount_result) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); } - LOG_INFO(Lib_SaveData, "called: dirName = {}, mode = {}, blocks = {}", mount->dir_name->data, - mount->mount_mode, mount->blocks); - return saveDataMount(mount->user_id, (char*)mount->dir_name->data, mount->mount_mode, - mount_result); -} - -s32 PS4_SYSV_ABI sceSaveDataMount2(const OrbisSaveDataMount2* mount, - OrbisSaveDataMountResult* mount_result) { - if (mount == nullptr) { - return ORBIS_SAVE_DATA_ERROR_PARAMETER; + if (mount == nullptr && mount->dirName != nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called dirName: {}, mode: {:0b}, blocks: {}", + mount->dirName->data.to_view(), (int)mount->mountMode, mount->blocks); + + OrbisSaveDataMount2 mount_info{}; + mount_info.userId = mount->userId; + mount_info.dirName = mount->dirName; + mount_info.mountMode = mount->mountMode; + mount_info.blocks = mount->blocks; + return saveDataMount(&mount_info, mount_result); +} + +Error PS4_SYSV_ABI sceSaveDataMount2(const OrbisSaveDataMount2* mount, + OrbisSaveDataMountResult* mount_result) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); } - LOG_INFO(Lib_SaveData, "called: dirName = {}, mode = {}, blocks = {}", mount->dir_name->data, - mount->mount_mode, mount->blocks); - return saveDataMount(mount->user_id, (char*)mount->dir_name->data, mount->mount_mode, - mount_result); + if (mount == nullptr && mount->dirName != nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called dirName: {}, mode: {:0b}, blocks: {}", + mount->dirName->data.to_view(), (int)mount->mountMode, mount->blocks); + return saveDataMount(mount, mount_result); } int PS4_SYSV_ABI sceSaveDataMount5() { @@ -593,9 +1304,44 @@ int PS4_SYSV_ABI sceSaveDataRegisterEventCallback() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataRestoreBackupData() { - LOG_ERROR(Lib_SaveData, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataRestoreBackupData(const OrbisSaveDataRestoreBackupData* restore) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (restore == nullptr || restore->dirName == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + + const std::string_view dir_name{restore->dirName->data}; + LOG_DEBUG(Lib_SaveData, "called dirName: {}", dir_name); + + std::string_view title{restore->titleId != nullptr ? std::string_view{restore->titleId->data} + : std::string_view{g_game_serial}}; + + const auto save_path = SaveInstance::MakeDirSavePath(restore->userId, title, dir_name); + + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetSavePath() == save_path) { + return Error::BUSY; + } + } + if (Backup::IsBackupExecutingFor(save_path)) { + return Error::BACKUP_BUSY; + } + + const auto backup_path = Backup::MakeBackupPath(save_path); + if (!fs::exists(backup_path)) { + return Error::NOT_FOUND; + } + + const bool ok = Backup::Restore(save_path); + if (!ok) { + return Error::INTERNAL; + } + + return Error::OK; } int PS4_SYSV_ABI sceSaveDataRestoreBackupDataForCdlg() { @@ -608,17 +1354,41 @@ int PS4_SYSV_ABI sceSaveDataRestoreLoadSaveDataMemory() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataSaveIcon(const OrbisSaveDataMountPoint* mountPoint, - const OrbisSaveDataIcon* icon) { - auto* mnt = Common::Singleton::Instance(); - const auto mount_dir = mnt->GetHostPath(mountPoint->data); - LOG_INFO(Lib_SaveData, "called = {}", mount_dir.string()); +Error PS4_SYSV_ABI sceSaveDataSaveIcon(const OrbisSaveDataMountPoint* mountPoint, + const OrbisSaveDataIcon* icon) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (mountPoint == nullptr || icon == nullptr || icon->buf == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called"); + std::filesystem::path path; + const std::string_view mount_point_str{mountPoint->data}; + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetMountPoint() == mount_point_str) { + if (instance->IsReadOnly()) { + return Error::BAD_MOUNTED; + } + path = instance->GetIconPath(); + break; + } + } + if (path.empty()) { + return Error::NOT_MOUNTED; + } - if (icon != nullptr) { - Common::FS::IOFile file(mount_dir / "save_data.png", Common::FS::FileAccessMode::Write); - file.WriteRaw(icon->buf, icon->bufSize); + try { + const Common::FS::IOFile file(path, Common::FS::FileAccessMode::Write); + file.WriteRaw(icon->buf, std::min(icon->bufSize, icon->dataSize)); + } catch (const fs::filesystem_error& e) { + LOG_ERROR(Lib_SaveData, "Failed to load icon: {}", e.what()); + return Error::INTERNAL; } - return ORBIS_OK; + + return Error::OK; } int PS4_SYSV_ABI sceSaveDataSetAutoUploadSetting() { @@ -631,50 +1401,59 @@ int PS4_SYSV_ABI sceSaveDataSetEventInfo() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataSetParam(const OrbisSaveDataMountPoint* mountPoint, - OrbisSaveDataParamType paramType, const void* paramBuf, - size_t paramBufSize) { - if (paramBuf == nullptr) - return ORBIS_SAVE_DATA_ERROR_PARAMETER; - - auto* mnt = Common::Singleton::Instance(); - const auto mount_dir = mnt->GetHostPath(mountPoint->data) / "param.txt"; - OrbisSaveDataParam params; - if (std::filesystem::exists(mount_dir)) { - Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Read); - file.ReadRaw(¶ms, sizeof(OrbisSaveDataParam)); +Error PS4_SYSV_ABI sceSaveDataSetParam(const OrbisSaveDataMountPoint* mountPoint, + OrbisSaveDataParamType paramType, const void* paramBuf, + size_t paramBufSize) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (paramType > OrbisSaveDataParamType::USER_PARAM || mountPoint == nullptr || + paramBuf == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + LOG_DEBUG(Lib_SaveData, "called: paramType = {}", magic_enum::enum_name(paramType)); + PSF* param_sfo = nullptr; + const std::string_view mount_point_str{mountPoint->data}; + for (auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetMountPoint() == mount_point_str) { + param_sfo = &instance->GetParamSFO(); + break; + } + } + if (param_sfo == nullptr) { + return Error::NOT_MOUNTED; } - - LOG_INFO(Lib_SaveData, "called"); switch (paramType) { - case ORBIS_SAVE_DATA_PARAM_TYPE_ALL: { - memcpy(¶ms, paramBuf, sizeof(OrbisSaveDataParam)); - } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_TITLE: { - strncpy(params.title, static_cast(paramBuf), paramBufSize); + case OrbisSaveDataParamType::ALL: { + const auto param = static_cast(paramBuf); + ASSERT(paramBufSize == sizeof(OrbisSaveDataParam)); + param->ToSFO(*param_sfo); + return Error::OK; } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_SUB_TITLE: { - strncpy(params.subTitle, static_cast(paramBuf), paramBufSize); + case OrbisSaveDataParamType::TITLE: { + const auto value = static_cast(paramBuf); + param_sfo->AddString(std::string{SaveParams::MAINTITLE}, {value}, true); } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_DETAIL: { - strncpy(params.detail, static_cast(paramBuf), paramBufSize); + case OrbisSaveDataParamType::SUB_TITLE: { + const auto value = static_cast(paramBuf); + param_sfo->AddString(std::string{SaveParams::SUBTITLE}, {value}, true); } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_USER_PARAM: { - params.userParam = *(static_cast(paramBuf)); + case OrbisSaveDataParamType::DETAIL: { + const auto value = static_cast(paramBuf); + param_sfo->AddString(std::string{SaveParams::DETAIL}, {value}, true); } break; - case ORBIS_SAVE_DATA_PARAM_TYPE_MTIME: { - params.mtime = *(static_cast(paramBuf)); + case OrbisSaveDataParamType::USER_PARAM: { + const auto value = static_cast(paramBuf); + param_sfo->AddInteger(std::string{SaveParams::SAVEDATA_LIST_PARAM}, *value, true); } break; - default: { - UNREACHABLE_MSG("Unknown Param = {}", paramType); - } + default: + UNREACHABLE(); } - Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Write); - file.WriteRaw(¶ms, sizeof(OrbisSaveDataParam)); - - return ORBIS_OK; + return Error::OK; } int PS4_SYSV_ABI sceSaveDataSetSaveDataLibraryUser() { @@ -682,90 +1461,134 @@ int PS4_SYSV_ABI sceSaveDataSetSaveDataLibraryUser() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory(const u32 userId, const void* buf, - const size_t bufSize, const int64_t offset) { - LOG_INFO(Lib_SaveData, "called"); - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(userId) / game_serial / "sdmemory/save_mem1.sav"; - - Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Write); - file.Seek(offset); - file.WriteRaw(buf, bufSize); - - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataSetSaveDataMemory(OrbisUserServiceUserId userId, void* buf, + size_t bufSize, int64_t offset) { + LOG_DEBUG(Lib_SaveData, "Redirecting to sceSaveDataSetSaveDataMemory2"); + OrbisSaveDataMemoryData data{}; + data.buf = buf; + data.bufSize = bufSize; + data.offset = offset; + OrbisSaveDataMemorySet2 setParam{}; + setParam.userId = userId; + setParam.data = &data; + setParam.param = nullptr; + setParam.icon = nullptr; + return sceSaveDataSetSaveDataMemory2(&setParam); } -int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory2(const OrbisSaveDataMemorySet2* setParam) { - LOG_INFO(Lib_SaveData, "called: dataNum = {}, slotId= {}", setParam->dataNum, setParam->slotId); - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(setParam->userId) / game_serial / "sdmemory"; - if (setParam->data != nullptr) { - Common::FS::IOFile file(mount_dir / "save_mem2.sav", Common::FS::FileAccessMode::Write); - if (!file.IsOpen()) - return -1; - file.Seek(setParam->data->offset); - file.WriteRaw(setParam->data->buf, setParam->data->bufSize); +Error PS4_SYSV_ABI sceSaveDataSetSaveDataMemory2(const OrbisSaveDataMemorySet2* setParam) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (setParam == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + if (!SaveMemory::IsSaveMemoryInitialized()) { + LOG_INFO(Lib_SaveData, "called without save memory initialized"); + return Error::MEMORY_NOT_READY; + } + if (SaveMemory::IsSaving()) { + LOG_TRACE(Lib_SaveData, "called while saving"); + return Error::BUSY_FOR_SAVING; + } + LOG_DEBUG(Lib_SaveData, "called"); + auto data = setParam->data; + if (data != nullptr) { + SaveMemory::WriteMemory(data->buf, data->bufSize, data->offset); + } + auto param = setParam->param; + if (param != nullptr) { + param->ToSFO(SaveMemory::GetParamSFO()); + SaveMemory::SaveSFO(); + } + auto icon = setParam->icon; + if (icon != nullptr) { + SaveMemory::WriteIcon(icon->buf, icon->bufSize); } - if (setParam->param != nullptr) { - Common::FS::IOFile file(mount_dir / "param.txt", Common::FS::FileAccessMode::Write); - file.WriteRaw((void*)setParam->param, sizeof(OrbisSaveDataParam)); + SaveMemory::TriggerSaveWithoutEvent(); + return Error::OK; +} + +Error PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory(OrbisUserServiceUserId userId, size_t memorySize, + OrbisSaveDataParam* param) { + LOG_DEBUG(Lib_SaveData, "called: userId = {}, memorySize = {}", userId, memorySize); + OrbisSaveDataMemorySetup2 setupParam{}; + setupParam.userId = userId; + setupParam.memorySize = memorySize; + setupParam.initParam = nullptr; + setupParam.initIcon = nullptr; + OrbisSaveDataMemorySetupResult result{}; + const auto res = sceSaveDataSetupSaveDataMemory2(&setupParam, &result); + if (res != Error::OK) { + return res; + } + if (param != nullptr) { + OrbisSaveDataMemorySet2 setParam{}; + setParam.userId = userId; + setParam.data = nullptr; + setParam.param = param; + setParam.icon = nullptr; + sceSaveDataSetSaveDataMemory2(&setParam); } + return Error::OK; +} - if (setParam->icon != nullptr) { - Common::FS::IOFile file(mount_dir / "save_icon.png", Common::FS::FileAccessMode::Write); - file.WriteRaw(setParam->icon->buf, setParam->icon->bufSize); +Error PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory2(const OrbisSaveDataMemorySetup2* setupParam, + OrbisSaveDataMemorySetupResult* result) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (setupParam == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; } + LOG_DEBUG(Lib_SaveData, "called"); - return ORBIS_OK; -} + SaveMemory::SetDirectories(setupParam->userId, g_game_serial); -int PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory(u32 userId, size_t memorySize, - OrbisSaveDataParam* param) { + const auto& save_path = SaveMemory::GetSavePath(); + for (const auto& instance : g_mount_slots) { + if (instance.has_value() && instance->GetSavePath() == save_path) { + return Error::BUSY; + } + } - LOG_INFO(Lib_SaveData, "called:userId = {}, memorySize = {}", userId, memorySize); + try { + size_t existed_size = SaveMemory::CreateSaveMemory(setupParam->memorySize); + if (existed_size == 0) { // Just created + if (g_fw_ver >= ElfInfo::FW_45 && setupParam->initParam != nullptr) { + auto& sfo = SaveMemory::GetParamSFO(); + setupParam->initParam->ToSFO(sfo); + } + SaveMemory::SaveSFO(); - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(userId) / game_serial / "sdmemory"; + auto init_icon = setupParam->initIcon; + if (g_fw_ver >= ElfInfo::FW_45 && init_icon != nullptr) { + SaveMemory::SetIcon(init_icon->buf, init_icon->bufSize); + } else { + SaveMemory::SetIcon(nullptr, 0); + } + } + if (g_fw_ver >= ElfInfo::FW_45 && result != nullptr) { + result->existedMemorySize = existed_size; + } + } catch (const fs::filesystem_error& e) { + LOG_ERROR(Lib_SaveData, "Failed to create/load save memory: {}", e.what()); - if (std::filesystem::exists(mount_dir)) { - return ORBIS_SAVE_DATA_ERROR_EXISTS; - } - std::filesystem::create_directories(mount_dir); - std::vector buf(memorySize); - Common::FS::IOFile::WriteBytes(mount_dir / "save_mem1.sav", buf); - return ORBIS_OK; -} + const MsgDialog::MsgDialogState dialog{MsgDialog::MsgDialogState::UserState{ + .type = MsgDialog::ButtonType::OK, + .msg = "Failed to create or load save memory:\n" + std::string{e.what()}, + }}; + MsgDialog::ShowMsgDialog(dialog); -int PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory2(const OrbisSaveDataMemorySetup2* setupParam, - OrbisSaveDataMemorySetupResult* result) { - if (setupParam == nullptr) { - return ORBIS_SAVE_DATA_ERROR_PARAMETER; - } - LOG_INFO(Lib_SaveData, "called"); - // if (setupParam->option == 1) { // check this later. - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(setupParam->userId) / game_serial / "sdmemory"; - if (std::filesystem::exists(mount_dir) && - std::filesystem::exists(mount_dir / "save_mem2.sav")) { - Common::FS::IOFile file(mount_dir / "save_mem2.sav", Common::FS::FileAccessMode::Read); - if (!file.IsOpen()) - return -1; - // Bunny - CUSA07988 has a null result, having null result is checked and valid. - if (result != nullptr) - result->existedMemorySize = file.GetSize(); // Assign the saved data size. - // do not return ORBIS_SAVE_DATA_ERROR_EXISTS, as it will not trigger - // sceSaveDataGetSaveDataMemory2. - } else { - std::filesystem::create_directories(mount_dir); - std::vector buf(setupParam->memorySize); // check if > 0x1000000 (16.77mb) or x2? - Common::FS::IOFile::WriteBytes(mount_dir / "save_mem2.sav", buf); - std::vector paramBuf(sizeof(OrbisSaveDataParam)); - Common::FS::IOFile::WriteBytes(mount_dir / "param.txt", paramBuf); - std::vector iconBuf(setupParam->iconMemorySize); - Common::FS::IOFile::WriteBytes(mount_dir / "save_icon.png", iconBuf); + return Error::INTERNAL; } - return ORBIS_OK; + + return Error::OK; } int PS4_SYSV_ABI sceSaveDataShutdownStart() { @@ -783,14 +1606,44 @@ int PS4_SYSV_ABI sceSaveDataSyncCloudList() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataSyncSaveDataMemory(OrbisSaveDataMemorySync* syncParam) { - LOG_ERROR(Lib_SaveData, "(STUBBED) called: option = {}", syncParam->option); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataSyncSaveDataMemory(OrbisSaveDataMemorySync* syncParam) { + if (!g_initialized) { + LOG_INFO(Lib_SaveData, "called without initialize"); + return setNotInitializedError(); + } + if (syncParam == nullptr) { + LOG_INFO(Lib_SaveData, "called with invalid parameter"); + return Error::PARAMETER; + } + if (!SaveMemory::IsSaveMemoryInitialized()) { + LOG_INFO(Lib_SaveData, "called without save memory initialized"); + return Error::MEMORY_NOT_READY; + } + LOG_DEBUG(Lib_SaveData, "called"); + bool ok = SaveMemory::TriggerSave(); + if (!ok) { + return Error::BUSY_FOR_SAVING; + } + return Error::OK; } -int PS4_SYSV_ABI sceSaveDataTerminate() { - LOG_ERROR(Lib_SaveData, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataTerminate() { + LOG_DEBUG(Lib_SaveData, "called"); + if (!g_initialized) { + return setNotInitializedError(); + } + for (auto& instance : g_mount_slots) { + if (instance.has_value()) { + if (g_fw_ver >= ElfInfo::FW_40) { + return Error::BUSY; + } + instance->Umount(); + instance.reset(); + } + } + g_initialized = false; + Backup::StopThread(); + return Error::OK; } int PS4_SYSV_ABI sceSaveDataTransferringMount() { @@ -798,19 +1651,9 @@ int PS4_SYSV_ABI sceSaveDataTransferringMount() { return ORBIS_OK; } -s32 PS4_SYSV_ABI sceSaveDataUmount(const OrbisSaveDataMountPoint* mountPoint) { - LOG_INFO(Lib_SaveData, "mountPoint = {}", mountPoint->data); - if (std::string_view(mountPoint->data).empty()) { - return ORBIS_SAVE_DATA_ERROR_NOT_MOUNTED; - } - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(1) / game_serial / mountPoint->data; - auto* mnt = Common::Singleton::Instance(); - const auto& guest_path = mnt->GetHostPath(mountPoint->data); - if (guest_path.empty()) - return ORBIS_SAVE_DATA_ERROR_NOT_MOUNTED; - mnt->Unmount(mount_dir, mountPoint->data); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataUmount(const OrbisSaveDataMountPoint* mountPoint) { + LOG_DEBUG(Lib_SaveData, "called"); + return Umount(mountPoint); } int PS4_SYSV_ABI sceSaveDataUmountSys() { @@ -818,37 +1661,9 @@ int PS4_SYSV_ABI sceSaveDataUmountSys() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataUmountWithBackup(const OrbisSaveDataMountPoint* mountPoint) { - LOG_INFO(Lib_SaveData, "called mount = {}, is_rw_mode = {}", std::string(mountPoint->data), - is_rw_mode); - auto* mnt = Common::Singleton::Instance(); - const auto mount_dir = mnt->GetHostPath(mountPoint->data); - if (!std::filesystem::exists(mount_dir)) { - return ORBIS_SAVE_DATA_ERROR_NOT_FOUND; - } - // leave disabled for now. and just unmount. - - /* if (is_rw_mode) { // backup is done only when mount mode is ReadWrite. - auto backup_path = mount_dir; - std::string save_data_dir = (mount_dir.string() + "_backup"); - backup_path.replace_filename(save_data_dir); - - std::filesystem::create_directories(backup_path); - - for (const auto& entry : std::filesystem::recursive_directory_iterator(mount_dir)) { - const auto& path = entry.path(); - if (std::filesystem::is_regular_file(path)) { - std::filesystem::copy(path, save_data_dir, - std::filesystem::copy_options::overwrite_existing); - } - } - }*/ - const auto& guest_path = mnt->GetHostPath(mountPoint->data); - if (guest_path.empty()) - return ORBIS_SAVE_DATA_ERROR_NOT_MOUNTED; - - mnt->Unmount(mount_dir, mountPoint->data); - return ORBIS_OK; +Error PS4_SYSV_ABI sceSaveDataUmountWithBackup(const OrbisSaveDataMountPoint* mountPoint) { + LOG_DEBUG(Lib_SaveData, "called"); + return Umount(mountPoint, true); } int PS4_SYSV_ABI sceSaveDataUnregisterEventCallback() { diff --git a/src/core/libraries/save_data/savedata.h b/src/core/libraries/save_data/savedata.h index 9b3cf900fc..13b3dd59e0 100644 --- a/src/core/libraries/save_data/savedata.h +++ b/src/core/libraries/save_data/savedata.h @@ -3,259 +3,81 @@ #pragma once +#include "common/cstring.h" #include "common/types.h" namespace Core::Loader { class SymbolsResolver; } +class PSF; + namespace Libraries::SaveData { -constexpr int ORBIS_SAVE_DATA_DIRNAME_DATA_MAXSIZE = - 32; // Maximum size for a save data directory name -constexpr int ORBIS_SAVE_DATA_MOUNT_POINT_DATA_MAXSIZE = 16; // Maximum size for a mount point name +constexpr size_t OrbisSaveDataTitleMaxsize = 128; // Maximum title name size +constexpr size_t OrbisSaveDataSubtitleMaxsize = 128; // Maximum subtitle name size +constexpr size_t OrbisSaveDataDetailMaxsize = 1024; // Maximum detail name size -struct OrbisSaveDataDirName { - char data[ORBIS_SAVE_DATA_DIRNAME_DATA_MAXSIZE]; -}; +enum class Error : u32; +enum class OrbisSaveDataParamType : u32; -struct OrbisSaveDataMount2 { - s32 user_id; - s32 unk1; - const OrbisSaveDataDirName* dir_name; - u64 blocks; - u32 mount_mode; - u8 reserved[32]; - s32 unk2; -}; +using OrbisUserServiceUserId = s32; -struct OrbisSaveDataMountPoint { - char data[ORBIS_SAVE_DATA_MOUNT_POINT_DATA_MAXSIZE]; -}; - -struct OrbisSaveDataMountResult { - OrbisSaveDataMountPoint mount_point; - u64 required_blocks; - u32 unused; - u32 mount_status; - u8 reserved[28]; - s32 unk1; -}; +// Maximum size for a title ID (4 uppercase letters + 5 digits) +constexpr int OrbisSaveDataTitleIdDataSize = 10; +// Maximum save directory name size +constexpr int OrbisSaveDataDirnameDataMaxsize = 32; -constexpr int ORBIS_SAVE_DATA_TITLE_ID_DATA_SIZE = 10; struct OrbisSaveDataTitleId { - char data[ORBIS_SAVE_DATA_TITLE_ID_DATA_SIZE]; - char padding[6]; + Common::CString data; + std::array _pad; }; -constexpr int ORBIS_SAVE_DATA_FINGERPRINT_DATA_SIZE = 65; -struct OrbisSaveDataFingerprint { - char data[ORBIS_SAVE_DATA_FINGERPRINT_DATA_SIZE]; - char padding[15]; -}; - -struct OrbisSaveDataMount { - s32 user_id; - s32 pad; - const OrbisSaveDataTitleId* titleId; - const OrbisSaveDataDirName* dir_name; - const OrbisSaveDataFingerprint* fingerprint; - u64 blocks; - u32 mount_mode; - u8 reserved[32]; +struct OrbisSaveDataDirName { + Common::CString data; }; -typedef u32 OrbisSaveDataParamType; - -constexpr int ORBIS_SAVE_DATA_TITLE_MAXSIZE = 128; -constexpr int ORBIS_SAVE_DATA_SUBTITLE_MAXSIZE = 128; -constexpr int ORBIS_SAVE_DATA_DETAIL_MAXSIZE = 1024; struct OrbisSaveDataParam { - char title[ORBIS_SAVE_DATA_TITLE_MAXSIZE]; - char subTitle[ORBIS_SAVE_DATA_SUBTITLE_MAXSIZE]; - char detail[ORBIS_SAVE_DATA_DETAIL_MAXSIZE]; + Common::CString title; + Common::CString subTitle; + Common::CString detail; u32 userParam; int : 32; time_t mtime; - u8 reserved[32]; -}; - -struct OrbisSaveDataIcon { - void* buf; - size_t bufSize; - size_t dataSize; - u8 reserved[32]; -}; - -typedef u32 OrbisSaveDataSaveDataMemoryOption; -#define ORBIS_SAVE_DATA_MEMORY_OPTION_NONE (0x00000000) -#define ORBIS_SAVE_DATA_MEMORY_OPTION_SET_PARAM (0x00000001 << 0) -#define ORBIS_SAVE_DATA_MEMORY_OPTION_DOUBLE_BUFFER (0x00000001 << 1) - -struct OrbisSaveDataMemorySetup2 { - OrbisSaveDataSaveDataMemoryOption option; - s32 userId; - size_t memorySize; - size_t iconMemorySize; - const OrbisSaveDataParam* initParam; - const OrbisSaveDataIcon* initIcon; - u32 slotId; - u8 reserved[20]; -}; - -struct OrbisSaveDataMemorySetupResult { - size_t existedMemorySize; - u8 reserved[16]; -}; - -typedef u32 OrbisSaveDataEventType; -#define SCE_SAVE_DATA_EVENT_TYPE_INVALID (0) -#define SCE_SAVE_DATA_EVENT_TYPE_UMOUNT_BACKUP_END (1) -#define SCE_SAVE_DATA_EVENT_TYPE_BACKUP_END (2) -#define SCE_SAVE_DATA_EVENT_TYPE_SAVE_DATA_MEMORY_SYNC_END (3) - -struct OrbisSaveDataEvent { - OrbisSaveDataEventType type; - s32 errorCode; - s32 userId; - u8 padding[4]; - OrbisSaveDataTitleId titleId; - OrbisSaveDataDirName dirName; - u8 reserved[40]; -}; - -struct OrbisSaveDataMemoryData { - void* buf; - size_t bufSize; - off_t offset; - u8 reserved[40]; -}; - -struct OrbisSaveDataMemoryGet2 { - s32 userId; - u8 padding[4]; - OrbisSaveDataMemoryData* data; - OrbisSaveDataParam* param; - OrbisSaveDataIcon* icon; - u32 slotId; - u8 reserved[28]; -}; - -struct OrbisSaveDataMemorySet2 { - s32 userId; - u8 padding[4]; - const OrbisSaveDataMemoryData* data; - const OrbisSaveDataParam* param; - const OrbisSaveDataIcon* icon; - u32 dataNum; - u8 slotId; - u8 reserved[24]; -}; - -struct OrbisSaveDataCheckBackupData { - s32 userId; - int : 32; - const OrbisSaveDataTitleId* titleId; - const OrbisSaveDataDirName* dirName; - OrbisSaveDataParam* param; - OrbisSaveDataIcon* icon; - u8 reserved[32]; -}; - -struct OrbisSaveDataMountInfo { - u64 blocks; - u64 freeBlocks; - u8 reserved[32]; -}; - -#define ORBIS_SAVE_DATA_BLOCK_SIZE (32768) -#define ORBIS_SAVE_DATA_BLOCKS_MIN2 (96) -#define ORBIS_SAVE_DATA_BLOCKS_MAX (32768) - -// savedataMount2 mountModes (ORed values) -constexpr int ORBIS_SAVE_DATA_MOUNT_MODE_RDONLY = 1; -constexpr int ORBIS_SAVE_DATA_MOUNT_MODE_RDWR = 2; -constexpr int ORBIS_SAVE_DATA_MOUNT_MODE_CREATE = 4; -constexpr int ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF = 8; -constexpr int ORBIS_SAVE_DATA_MOUNT_MODE_COPY_ICON = 16; -constexpr int ORBIS_SAVE_DATA_MOUNT_MODE_CREATE2 = 32; -typedef struct _OrbisSaveDataEventParam OrbisSaveDataEventParam; - -typedef u32 OrbisSaveDataSortKey; -#define ORBIS_SAVE_DATA_SORT_KEY_DIRNAME (0) -#define ORBIS_SAVE_DATA_SORT_KEY_USER_PARAM (1) -#define ORBIS_SAVE_DATA_SORT_KEY_BLOCKS (2) -#define ORBIS_SAVE_DATA_SORT_KEY_MTIME (3) -#define ORBIS_SAVE_DATA_SORT_KEY_FREE_BLOCKS (5) - -typedef u32 OrbisSaveDataSortOrder; -#define ORBIS_SAVE_DATA_SORT_ORDER_ASCENT (0) -#define ORBIS_SAVE_DATA_SORT_ORDER_DESCENT (1) - -struct OrbisSaveDataDirNameSearchCond { - s32 userId; - int : 32; - const OrbisSaveDataTitleId* titleId; - const OrbisSaveDataDirName* dirName; - OrbisSaveDataSortKey key; - OrbisSaveDataSortOrder order; - u8 reserved[32]; -}; - -struct OrbisSaveDataSearchInfo { - u64 blocks; - u64 freeBlocks; - u8 reserved[32]; -}; - -struct OrbisSaveDataDirNameSearchResult { - u32 hitNum; - int : 32; - OrbisSaveDataDirName* dirNames; - u32 dirNamesNum; - u32 setNum; - OrbisSaveDataParam* params; - OrbisSaveDataSearchInfo* infos; - u8 reserved[12]; - int : 32; -}; - -struct OrbisSaveDataDelete { - s32 userId; - int : 32; - const OrbisSaveDataTitleId* titleId; - const OrbisSaveDataDirName* dirName; - u32 unused; - u8 reserved[32]; - int : 32; -}; - -typedef u32 OrbisSaveDataMemorySyncOption; - -#define SCE_SAVE_DATA_MEMORY_SYNC_OPTION_NONE (0x00000000) -#define SCE_SAVE_DATA_MEMORY_SYNC_OPTION_BLOCKING (0x00000001 << 0) - -struct OrbisSaveDataMemorySync { - s32 userId; - u32 slotId; - OrbisSaveDataMemorySyncOption option; - u8 reserved[28]; -}; - -constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_ALL = 0; -constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_TITLE = 1; -constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_SUB_TITLE = 2; -constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_DETAIL = 3; -constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_USER_PARAM = 4; -constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_MTIME = 5; + std::array _reserved; + + void FromSFO(const PSF& sfo); + + void ToSFO(PSF& sfo) const; +}; + +struct OrbisSaveDataBackup; +struct OrbisSaveDataCheckBackupData; +struct OrbisSaveDataDelete; +struct OrbisSaveDataDirNameSearchCond; +struct OrbisSaveDataDirNameSearchResult; +struct OrbisSaveDataEvent; +struct OrbisSaveDataEventParam; +struct OrbisSaveDataIcon; +struct OrbisSaveDataMemoryGet2; +struct OrbisSaveDataMemorySet2; +struct OrbisSaveDataMemorySetup2; +struct OrbisSaveDataMemorySetupResult; +struct OrbisSaveDataMemorySync; +struct OrbisSaveDataMount2; +struct OrbisSaveDataMount; +struct OrbisSaveDataMountInfo; +struct OrbisSaveDataMountPoint; +struct OrbisSaveDataMountResult; +struct OrbisSaveDataRestoreBackupData; int PS4_SYSV_ABI sceSaveDataAbort(); -int PS4_SYSV_ABI sceSaveDataBackup(); +Error PS4_SYSV_ABI sceSaveDataBackup(const OrbisSaveDataBackup* backup); int PS4_SYSV_ABI sceSaveDataBindPsnAccount(); int PS4_SYSV_ABI sceSaveDataBindPsnAccountForSystemBackup(); int PS4_SYSV_ABI sceSaveDataChangeDatabase(); int PS4_SYSV_ABI sceSaveDataChangeInternal(); -int PS4_SYSV_ABI sceSaveDataCheckBackupData(const OrbisSaveDataCheckBackupData* check); +Error PS4_SYSV_ABI sceSaveDataCheckBackupData(const OrbisSaveDataCheckBackupData* check); int PS4_SYSV_ABI sceSaveDataCheckBackupDataForCdlg(); int PS4_SYSV_ABI sceSaveDataCheckBackupDataInternal(); int PS4_SYSV_ABI sceSaveDataCheckCloudData(); @@ -263,7 +85,7 @@ int PS4_SYSV_ABI sceSaveDataCheckIpmiIfSize(); int PS4_SYSV_ABI sceSaveDataCheckSaveDataBroken(); int PS4_SYSV_ABI sceSaveDataCheckSaveDataVersion(); int PS4_SYSV_ABI sceSaveDataCheckSaveDataVersionLatest(); -int PS4_SYSV_ABI sceSaveDataClearProgress(); +Error PS4_SYSV_ABI sceSaveDataClearProgress(); int PS4_SYSV_ABI sceSaveDataCopy5(); int PS4_SYSV_ABI sceSaveDataCreateUploadData(); int PS4_SYSV_ABI sceSaveDataDebug(); @@ -273,13 +95,13 @@ int PS4_SYSV_ABI sceSaveDataDebugCreateSaveDataRoot(); int PS4_SYSV_ABI sceSaveDataDebugGetThreadId(); int PS4_SYSV_ABI sceSaveDataDebugRemoveSaveDataRoot(); int PS4_SYSV_ABI sceSaveDataDebugTarget(); -int PS4_SYSV_ABI sceSaveDataDelete(const OrbisSaveDataDelete* del); +Error PS4_SYSV_ABI sceSaveDataDelete(const OrbisSaveDataDelete* del); int PS4_SYSV_ABI sceSaveDataDelete5(); int PS4_SYSV_ABI sceSaveDataDeleteAllUser(); int PS4_SYSV_ABI sceSaveDataDeleteCloudData(); int PS4_SYSV_ABI sceSaveDataDeleteUser(); -int PS4_SYSV_ABI sceSaveDataDirNameSearch(const OrbisSaveDataDirNameSearchCond* cond, - OrbisSaveDataDirNameSearchResult* result); +Error PS4_SYSV_ABI sceSaveDataDirNameSearch(const OrbisSaveDataDirNameSearchCond* cond, + OrbisSaveDataDirNameSearchResult* result); int PS4_SYSV_ABI sceSaveDataDirNameSearchInternal(); int PS4_SYSV_ABI sceSaveDataDownload(); int PS4_SYSV_ABI sceSaveDataGetAllSize(); @@ -292,70 +114,70 @@ int PS4_SYSV_ABI sceSaveDataGetClientThreadPriority(); int PS4_SYSV_ABI sceSaveDataGetCloudQuotaInfo(); int PS4_SYSV_ABI sceSaveDataGetDataBaseFilePath(); int PS4_SYSV_ABI sceSaveDataGetEventInfo(); -int PS4_SYSV_ABI sceSaveDataGetEventResult(const OrbisSaveDataEventParam* eventParam, - OrbisSaveDataEvent* event); +Error PS4_SYSV_ABI sceSaveDataGetEventResult(const OrbisSaveDataEventParam* eventParam, + OrbisSaveDataEvent* event); int PS4_SYSV_ABI sceSaveDataGetFormat(); int PS4_SYSV_ABI sceSaveDataGetMountedSaveDataCount(); -int PS4_SYSV_ABI sceSaveDataGetMountInfo(const OrbisSaveDataMountPoint* mountPoint, - OrbisSaveDataMountInfo* info); -int PS4_SYSV_ABI sceSaveDataGetParam(const OrbisSaveDataMountPoint* mountPoint, - const OrbisSaveDataParamType paramType, void* paramBuf, - const size_t paramBufSize, size_t* gotSize); -int PS4_SYSV_ABI sceSaveDataGetProgress(); +Error PS4_SYSV_ABI sceSaveDataGetMountInfo(const OrbisSaveDataMountPoint* mountPoint, + OrbisSaveDataMountInfo* info); +Error PS4_SYSV_ABI sceSaveDataGetParam(const OrbisSaveDataMountPoint* mountPoint, + OrbisSaveDataParamType paramType, void* paramBuf, + size_t paramBufSize, size_t* gotSize); +Error PS4_SYSV_ABI sceSaveDataGetProgress(float* progress); int PS4_SYSV_ABI sceSaveDataGetSaveDataCount(); -int PS4_SYSV_ABI sceSaveDataGetSaveDataMemory(const u32 userId, void* buf, const size_t bufSize, - const int64_t offset); -int PS4_SYSV_ABI sceSaveDataGetSaveDataMemory2(OrbisSaveDataMemoryGet2* getParam); +Error PS4_SYSV_ABI sceSaveDataGetSaveDataMemory(OrbisUserServiceUserId userId, void* buf, + size_t bufSize, int64_t offset); +Error PS4_SYSV_ABI sceSaveDataGetSaveDataMemory2(OrbisSaveDataMemoryGet2* getParam); int PS4_SYSV_ABI sceSaveDataGetSaveDataRootDir(); int PS4_SYSV_ABI sceSaveDataGetSaveDataRootPath(); int PS4_SYSV_ABI sceSaveDataGetSaveDataRootUsbPath(); int PS4_SYSV_ABI sceSaveDataGetSavePoint(); int PS4_SYSV_ABI sceSaveDataGetUpdatedDataCount(); -int PS4_SYSV_ABI sceSaveDataInitialize(); -int PS4_SYSV_ABI sceSaveDataInitialize2(); -int PS4_SYSV_ABI sceSaveDataInitialize3(); +Error PS4_SYSV_ABI sceSaveDataInitialize(void*); +Error PS4_SYSV_ABI sceSaveDataInitialize2(void*); +Error PS4_SYSV_ABI sceSaveDataInitialize3(void*); int PS4_SYSV_ABI sceSaveDataInitializeForCdlg(); int PS4_SYSV_ABI sceSaveDataIsDeletingUsbDb(); int PS4_SYSV_ABI sceSaveDataIsMounted(); -int PS4_SYSV_ABI sceSaveDataLoadIcon(const OrbisSaveDataMountPoint* mountPoint, - OrbisSaveDataIcon* icon); -int PS4_SYSV_ABI sceSaveDataMount(const OrbisSaveDataMount* mount, - OrbisSaveDataMountResult* mount_result); -s32 PS4_SYSV_ABI sceSaveDataMount2(const OrbisSaveDataMount2* mount, - OrbisSaveDataMountResult* mount_result); +Error PS4_SYSV_ABI sceSaveDataLoadIcon(const OrbisSaveDataMountPoint* mountPoint, + OrbisSaveDataIcon* icon); +Error PS4_SYSV_ABI sceSaveDataMount(const OrbisSaveDataMount* mount, + OrbisSaveDataMountResult* mount_result); +Error PS4_SYSV_ABI sceSaveDataMount2(const OrbisSaveDataMount2* mount, + OrbisSaveDataMountResult* mount_result); int PS4_SYSV_ABI sceSaveDataMount5(); int PS4_SYSV_ABI sceSaveDataMountInternal(); int PS4_SYSV_ABI sceSaveDataMountSys(); int PS4_SYSV_ABI sceSaveDataPromote5(); int PS4_SYSV_ABI sceSaveDataRebuildDatabase(); int PS4_SYSV_ABI sceSaveDataRegisterEventCallback(); -int PS4_SYSV_ABI sceSaveDataRestoreBackupData(); +Error PS4_SYSV_ABI sceSaveDataRestoreBackupData(const OrbisSaveDataRestoreBackupData* restore); int PS4_SYSV_ABI sceSaveDataRestoreBackupDataForCdlg(); int PS4_SYSV_ABI sceSaveDataRestoreLoadSaveDataMemory(); -int PS4_SYSV_ABI sceSaveDataSaveIcon(const OrbisSaveDataMountPoint* mountPoint, - const OrbisSaveDataIcon* icon); +Error PS4_SYSV_ABI sceSaveDataSaveIcon(const OrbisSaveDataMountPoint* mountPoint, + const OrbisSaveDataIcon* icon); int PS4_SYSV_ABI sceSaveDataSetAutoUploadSetting(); int PS4_SYSV_ABI sceSaveDataSetEventInfo(); -int PS4_SYSV_ABI sceSaveDataSetParam(const OrbisSaveDataMountPoint* mountPoint, - OrbisSaveDataParamType paramType, const void* paramBuf, - size_t paramBufSize); +Error PS4_SYSV_ABI sceSaveDataSetParam(const OrbisSaveDataMountPoint* mountPoint, + OrbisSaveDataParamType paramType, const void* paramBuf, + size_t paramBufSize); int PS4_SYSV_ABI sceSaveDataSetSaveDataLibraryUser(); -int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory(const u32 userId, const void* buf, - const size_t bufSize, const int64_t offset); -int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory2(const OrbisSaveDataMemorySet2* setParam); -int PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory(u32 userId, size_t memorySize, - OrbisSaveDataParam* param); -int PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory2(const OrbisSaveDataMemorySetup2* setupParam, - OrbisSaveDataMemorySetupResult* result); +Error PS4_SYSV_ABI sceSaveDataSetSaveDataMemory(OrbisUserServiceUserId userId, void* buf, + size_t bufSize, int64_t offset); +Error PS4_SYSV_ABI sceSaveDataSetSaveDataMemory2(const OrbisSaveDataMemorySet2* setParam); +Error PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory(OrbisUserServiceUserId userId, size_t memorySize, + OrbisSaveDataParam* param); +Error PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory2(const OrbisSaveDataMemorySetup2* setupParam, + OrbisSaveDataMemorySetupResult* result); int PS4_SYSV_ABI sceSaveDataShutdownStart(); int PS4_SYSV_ABI sceSaveDataSupportedFakeBrokenStatus(); int PS4_SYSV_ABI sceSaveDataSyncCloudList(); -int PS4_SYSV_ABI sceSaveDataSyncSaveDataMemory(OrbisSaveDataMemorySync* syncParam); -int PS4_SYSV_ABI sceSaveDataTerminate(); +Error PS4_SYSV_ABI sceSaveDataSyncSaveDataMemory(OrbisSaveDataMemorySync* syncParam); +Error PS4_SYSV_ABI sceSaveDataTerminate(); int PS4_SYSV_ABI sceSaveDataTransferringMount(); -int PS4_SYSV_ABI sceSaveDataUmount(const OrbisSaveDataMountPoint* mountPoint); +Error PS4_SYSV_ABI sceSaveDataUmount(const OrbisSaveDataMountPoint* mountPoint); int PS4_SYSV_ABI sceSaveDataUmountSys(); -int PS4_SYSV_ABI sceSaveDataUmountWithBackup(const OrbisSaveDataMountPoint* mountPoint); +Error PS4_SYSV_ABI sceSaveDataUmountWithBackup(const OrbisSaveDataMountPoint* mountPoint); int PS4_SYSV_ABI sceSaveDataUnregisterEventCallback(); int PS4_SYSV_ABI sceSaveDataUpload(); int PS4_SYSV_ABI Func_02E4C4D201716422(); diff --git a/src/core/libraries/system/commondialog.cpp b/src/core/libraries/system/commondialog.cpp index e32e3bb3f1..cb9ce0442d 100644 --- a/src/core/libraries/system/commondialog.cpp +++ b/src/core/libraries/system/commondialog.cpp @@ -8,6 +8,9 @@ namespace Libraries::CommonDialog { +bool g_isInitialized = false; +bool g_isUsed = false; + int PS4_SYSV_ABI _ZN3sce16CommonDialogUtil12getSelfAppIdEv() { LOG_ERROR(Lib_CommonDlg, "(STUBBED) called"); return ORBIS_OK; @@ -83,14 +86,19 @@ int PS4_SYSV_ABI _ZTVN3sce16CommonDialogUtil6ClientE() { return ORBIS_OK; } -int PS4_SYSV_ABI sceCommonDialogInitialize() { - LOG_ERROR(Lib_CommonDlg, "(DUMMY) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceCommonDialogInitialize() { + if (g_isInitialized) { + LOG_INFO(Lib_CommonDlg, "already initialized"); + return Error::ALREADY_SYSTEM_INITIALIZED; + } + LOG_DEBUG(Lib_CommonDlg, "initialized"); + g_isInitialized = true; + return Error::OK; } -int PS4_SYSV_ABI sceCommonDialogIsUsed() { - LOG_ERROR(Lib_CommonDlg, "(STUBBED) called"); - return ORBIS_OK; +bool PS4_SYSV_ABI sceCommonDialogIsUsed() { + LOG_TRACE(Lib_CommonDlg, "called"); + return g_isUsed; } int PS4_SYSV_ABI Func_0FF577E4E8457883() { diff --git a/src/core/libraries/system/commondialog.h b/src/core/libraries/system/commondialog.h index 110e9cc99e..6b8ea3d953 100644 --- a/src/core/libraries/system/commondialog.h +++ b/src/core/libraries/system/commondialog.h @@ -11,9 +11,44 @@ class SymbolsResolver; namespace Libraries::CommonDialog { -struct OrbisCommonDialogBaseParam { +enum class Status : u32 { + NONE = 0, + INITIALIZED = 1, + RUNNING = 2, + FINISHED = 3, +}; + +enum class Result : u32 { + OK = 0, + USER_CANCELED = 1, +}; + +enum class Error : u32 { + OK = 0, + NOT_SYSTEM_INITIALIZED = 0x80B80001, + ALREADY_SYSTEM_INITIALIZED = 0x80B80002, + NOT_INITIALIZED = 0x80B80003, + ALREADY_INITIALIZED = 0x80B80004, + NOT_FINISHED = 0x80B80005, + INVALID_STATE = 0x80B80006, + RESULT_NONE = 0x80B80007, + BUSY = 0x80B80008, + OUT_OF_MEMORY = 0x80B80009, + PARAM_INVALID = 0x80B8000A, + NOT_RUNNING = 0x80B8000B, + ALREADY_CLOSE = 0x80B8000C, + ARG_NULL = 0x80B8000D, + UNEXPECTED_FATAL = 0x80B8000E, + NOT_SUPPORTED = 0x80B8000F, + INHIBIT_SHAREPLAY_CLIENT = 0x80B80010, +}; + +extern bool g_isInitialized; +extern bool g_isUsed; + +struct BaseParam { std::size_t size; - u8 reserved[36]; + std::array reserved; u32 magic; }; @@ -32,8 +67,8 @@ int PS4_SYSV_ABI _ZNK3sce16CommonDialogUtil6Client8getAppIdEv(); int PS4_SYSV_ABI _ZNK3sce16CommonDialogUtil6Client8isFinishEv(); int PS4_SYSV_ABI _ZNK3sce16CommonDialogUtil6Client9getResultEv(); int PS4_SYSV_ABI _ZTVN3sce16CommonDialogUtil6ClientE(); -int PS4_SYSV_ABI sceCommonDialogInitialize(); -int PS4_SYSV_ABI sceCommonDialogIsUsed(); +Error PS4_SYSV_ABI sceCommonDialogInitialize(); +bool PS4_SYSV_ABI sceCommonDialogIsUsed(); int PS4_SYSV_ABI Func_0FF577E4E8457883(); int PS4_SYSV_ABI Func_41716C2CE379416C(); int PS4_SYSV_ABI Func_483A427D8F6E0748(); diff --git a/src/core/libraries/system/msgdialog.cpp b/src/core/libraries/system/msgdialog.cpp index 452feec934..7d924e4ad8 100644 --- a/src/core/libraries/system/msgdialog.cpp +++ b/src/core/libraries/system/msgdialog.cpp @@ -1,79 +1,152 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include +#include + +#include "common/assert.h" #include "common/logging/log.h" -#include "core/libraries/error_codes.h" #include "core/libraries/libs.h" #include "core/libraries/system/msgdialog.h" - -#include +#include "imgui_internal.h" +#include "msgdialog_ui.h" namespace Libraries::MsgDialog { -int PS4_SYSV_ABI sceMsgDialogClose() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +using CommonDialog::Error; +using CommonDialog::Result; +using CommonDialog::Status; + +static auto g_status = Status::NONE; +static MsgDialogState g_state{}; +static DialogResult g_result{}; +static MsgDialogUi g_msg_dialog_ui; + +Error PS4_SYSV_ABI sceMsgDialogClose() { + LOG_DEBUG(Lib_MsgDlg, "called"); + if (g_status != Status::RUNNING) { + return Error::NOT_RUNNING; + } + g_msg_dialog_ui.Finish(ButtonId::INVALID); + return Error::OK; } -int PS4_SYSV_ABI sceMsgDialogGetResult() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceMsgDialogGetResult(DialogResult* result) { + LOG_DEBUG(Lib_MsgDlg, "called"); + if (g_status != Status::FINISHED) { + return Error::NOT_FINISHED; + } + if (result == nullptr) { + return Error::ARG_NULL; + } + *result = g_result; + return Error::OK; } -int PS4_SYSV_ABI sceMsgDialogGetStatus() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +Status PS4_SYSV_ABI sceMsgDialogGetStatus() { + LOG_TRACE(Lib_MsgDlg, "called status={}", magic_enum::enum_name(g_status)); + return g_status; } -int PS4_SYSV_ABI sceMsgDialogInitialize() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceMsgDialogInitialize() { + LOG_DEBUG(Lib_MsgDlg, "called"); + if (!CommonDialog::g_isInitialized) { + return Error::NOT_SYSTEM_INITIALIZED; + } + if (g_status != Status::NONE) { + return Error::ALREADY_INITIALIZED; + } + if (CommonDialog::g_isUsed) { + return Error::BUSY; + } + g_status = Status::INITIALIZED; + CommonDialog::g_isUsed = true; + + return Error::OK; } -s32 PS4_SYSV_ABI sceMsgDialogOpen(const OrbisMsgDialogParam* param) { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - switch (param->mode) { - case ORBIS_MSG_DIALOG_MODE_USER_MSG: - LOG_INFO(Lib_MsgDlg, "sceMsgDialogOpen userMsg type = %s msg = %s", - magic_enum::enum_name(param->userMsgParam->buttonType), param->userMsgParam->msg); - break; - case ORBIS_MSG_DIALOG_MODE_PROGRESS_BAR: - LOG_INFO(Lib_MsgDlg, "sceMsgDialogOpen progressBar type = %s msg = %s", - magic_enum::enum_name(param->progBarParam->barType), param->progBarParam->msg); - break; - case ORBIS_MSG_DIALOG_MODE_SYSTEM_MSG: - LOG_INFO(Lib_MsgDlg, "sceMsgDialogOpen systemMsg type: %s", - magic_enum::enum_name(param->sysMsgParam->sysMsgType)); - break; - default: - break; - } - return ORBIS_OK; +Error PS4_SYSV_ABI sceMsgDialogOpen(const OrbisParam* param) { + if (g_status != Status::INITIALIZED && g_status != Status::FINISHED) { + LOG_INFO(Lib_MsgDlg, "called without initialize"); + return Error::INVALID_STATE; + } + if (param == nullptr) { + LOG_DEBUG(Lib_MsgDlg, "called param:(NULL)"); + return Error::ARG_NULL; + } + LOG_DEBUG(Lib_MsgDlg, "called param->mode: {}", magic_enum::enum_name(param->mode)); + ASSERT(param->size == sizeof(OrbisParam)); + ASSERT(param->baseParam.size == sizeof(CommonDialog::BaseParam)); + g_result = {}; + g_state = MsgDialogState{*param}; + g_status = Status::RUNNING; + g_msg_dialog_ui = MsgDialogUi(&g_state, &g_status, &g_result); + return Error::OK; } -int PS4_SYSV_ABI sceMsgDialogProgressBarInc() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceMsgDialogProgressBarInc(OrbisMsgDialogProgressBarTarget target, u32 delta) { + LOG_DEBUG(Lib_MsgDlg, "called"); + if (g_status != Status::RUNNING) { + return Error::NOT_RUNNING; + } + if (g_state.GetMode() != MsgDialogMode::PROGRESS_BAR) { + return Error::NOT_SUPPORTED; + } + if (target != OrbisMsgDialogProgressBarTarget::DEFAULT) { + return Error::PARAM_INVALID; + } + g_state.GetState().progress += delta; + return Error::OK; } -int PS4_SYSV_ABI sceMsgDialogProgressBarSetMsg() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceMsgDialogProgressBarSetMsg(OrbisMsgDialogProgressBarTarget target, + const char* msg) { + LOG_DEBUG(Lib_MsgDlg, "called"); + if (g_status != Status::RUNNING) { + return Error::NOT_RUNNING; + } + if (g_state.GetMode() != MsgDialogMode::PROGRESS_BAR) { + return Error::NOT_SUPPORTED; + } + if (target != OrbisMsgDialogProgressBarTarget::DEFAULT) { + return Error::PARAM_INVALID; + } + g_state.GetState().msg = msg; + return Error::OK; } -int PS4_SYSV_ABI sceMsgDialogProgressBarSetValue() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceMsgDialogProgressBarSetValue(OrbisMsgDialogProgressBarTarget target, + u32 value) { + LOG_DEBUG(Lib_MsgDlg, "called"); + if (g_status != Status::RUNNING) { + return Error::NOT_RUNNING; + } + if (g_state.GetMode() != MsgDialogMode::PROGRESS_BAR) { + return Error::NOT_SUPPORTED; + } + if (target != OrbisMsgDialogProgressBarTarget::DEFAULT) { + return Error::PARAM_INVALID; + } + g_state.GetState().progress = value; + return Error::OK; } -int PS4_SYSV_ABI sceMsgDialogTerminate() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +Error PS4_SYSV_ABI sceMsgDialogTerminate() { + LOG_DEBUG(Lib_MsgDlg, "called"); + if (g_status == Status::RUNNING) { + sceMsgDialogClose(); + } + if (g_status == Status::NONE) { + return Error::NOT_INITIALIZED; + } + g_status = Status::NONE; + CommonDialog::g_isUsed = false; + return Error::OK; } -int PS4_SYSV_ABI sceMsgDialogUpdateStatus() { - LOG_ERROR(Lib_MsgDlg, "(STUBBED) called"); - return ORBIS_OK; +Status PS4_SYSV_ABI sceMsgDialogUpdateStatus() { + LOG_TRACE(Lib_MsgDlg, "called status={}", magic_enum::enum_name(g_status)); + return g_status; } void RegisterlibSceMsgDialog(Core::Loader::SymbolsResolver* sym) { diff --git a/src/core/libraries/system/msgdialog.h b/src/core/libraries/system/msgdialog.h index 28d379138c..b8a1f3f079 100644 --- a/src/core/libraries/system/msgdialog.h +++ b/src/core/libraries/system/msgdialog.h @@ -3,7 +3,6 @@ #pragma once -#include "common/types.h" #include "core/libraries/system/commondialog.h" namespace Core::Loader { @@ -12,95 +11,23 @@ class SymbolsResolver; namespace Libraries::MsgDialog { -using OrbisUserServiceUserId = s32; - -enum OrbisCommonDialogStatus { - ORBIS_COMMON_DIALOG_STATUS_NONE = 0, - ORBIS_COMMON_DIALOG_STATUS_INITIALIZED = 1, - ORBIS_COMMON_DIALOG_STATUS_RUNNING = 2, - ORBIS_COMMON_DIALOG_STATUS_FINISHED = 3 -}; - -enum OrbisMsgDialogMode { - ORBIS_MSG_DIALOG_MODE_USER_MSG = 1, - ORBIS_MSG_DIALOG_MODE_PROGRESS_BAR = 2, - ORBIS_MSG_DIALOG_MODE_SYSTEM_MSG = 3, -}; - -enum OrbisMsgDialogButtonType { - ORBIS_MSG_DIALOG_BUTTON_TYPE_OK = 0, - ORBIS_MSG_DIALOG_BUTTON_TYPE_YESNO = 1, - ORBIS_MSG_DIALOG_BUTTON_TYPE_NONE = 2, - ORBIS_MSG_DIALOG_BUTTON_TYPE_OK_CANCEL = 3, - ORBIS_MSG_DIALOG_BUTTON_TYPE_WAIT = 5, - ORBIS_MSG_DIALOG_BUTTON_TYPE_WAIT_CANCEL = 6, - ORBIS_MSG_DIALOG_BUTTON_TYPE_YESNO_FOCUS_NO = 7, - ORBIS_MSG_DIALOG_BUTTON_TYPE_OK_CANCEL_FOCUS_CANCEL = 8, - ORBIS_MSG_DIALOG_BUTTON_TYPE_2BUTTONS = 9, -}; - -enum OrbisMsgDialogProgressBarType { - ORBIS_MSG_DIALOG_PROGRESSBAR_TYPE_PERCENTAGE = 0, - ORBIS_MSG_DIALOG_PROGRESSBAR_TYPE_PERCENTAGE_CANCEL = 1, -}; - -enum OrbisMsgDialogSystemMessageType { - ORBIS_MSG_DIALOG_SYSMSG_TYPE_TRC_EMPTY_STORE = 0, - ORBIS_MSG_DIALOG_SYSMSG_TYPE_TRC_PSN_CHAT_RESTRICTION = 1, - ORBIS_MSG_DIALOG_SYSMSG_TYPE_TRC_PSN_UGC_RESTRICTION = 2, - ORBIS_MSG_DIALOG_SYSMSG_TYPE_CAMERA_NOT_CONNECTED = 4, - ORBIS_MSG_DIALOG_SYSMSG_TYPE_WARNING_PROFILE_PICTURE_AND_NAME_NOT_SHARED = 5, -}; - -struct OrbisMsgDialogButtonsParam { - const char* msg1; - const char* msg2; - char reserved[32]; -}; - -struct OrbisMsgDialogUserMessageParam { - OrbisMsgDialogButtonType buttonType; - s32 : 32; - const char* msg; - OrbisMsgDialogButtonsParam* buttonsParam; - char reserved[24]; -}; - -struct OrbisMsgDialogProgressBarParam { - OrbisMsgDialogProgressBarType barType; - int32_t : 32; - const char* msg; - char reserved[64]; -}; - -struct OrbisMsgDialogSystemMessageParam { - OrbisMsgDialogSystemMessageType sysMsgType; - char reserved[32]; -}; - -struct OrbisMsgDialogParam { - CommonDialog::OrbisCommonDialogBaseParam baseParam; - std::size_t size; - OrbisMsgDialogMode mode; - s32 : 32; - OrbisMsgDialogUserMessageParam* userMsgParam; - OrbisMsgDialogProgressBarParam* progBarParam; - OrbisMsgDialogSystemMessageParam* sysMsgParam; - OrbisUserServiceUserId userId; - char reserved[40]; - s32 : 32; -}; - -int PS4_SYSV_ABI sceMsgDialogClose(); -int PS4_SYSV_ABI sceMsgDialogGetResult(); -int PS4_SYSV_ABI sceMsgDialogGetStatus(); -int PS4_SYSV_ABI sceMsgDialogInitialize(); -s32 PS4_SYSV_ABI sceMsgDialogOpen(const OrbisMsgDialogParam* param); -int PS4_SYSV_ABI sceMsgDialogProgressBarInc(); -int PS4_SYSV_ABI sceMsgDialogProgressBarSetMsg(); -int PS4_SYSV_ABI sceMsgDialogProgressBarSetValue(); -int PS4_SYSV_ABI sceMsgDialogTerminate(); -int PS4_SYSV_ABI sceMsgDialogUpdateStatus(); +struct DialogResult; +struct OrbisParam; +enum class OrbisMsgDialogProgressBarTarget : u32; + +CommonDialog::Error PS4_SYSV_ABI sceMsgDialogClose(); +CommonDialog::Error PS4_SYSV_ABI sceMsgDialogGetResult(DialogResult* result); +CommonDialog::Status PS4_SYSV_ABI sceMsgDialogGetStatus(); +CommonDialog::Error PS4_SYSV_ABI sceMsgDialogInitialize(); +CommonDialog::Error PS4_SYSV_ABI sceMsgDialogOpen(const OrbisParam* param); +CommonDialog::Error PS4_SYSV_ABI sceMsgDialogProgressBarInc(OrbisMsgDialogProgressBarTarget, + u32 delta); +CommonDialog::Error PS4_SYSV_ABI sceMsgDialogProgressBarSetMsg(OrbisMsgDialogProgressBarTarget, + const char* msg); +CommonDialog::Error PS4_SYSV_ABI sceMsgDialogProgressBarSetValue(OrbisMsgDialogProgressBarTarget, + u32 value); +CommonDialog::Error PS4_SYSV_ABI sceMsgDialogTerminate(); +CommonDialog::Status PS4_SYSV_ABI sceMsgDialogUpdateStatus(); void RegisterlibSceMsgDialog(Core::Loader::SymbolsResolver* sym); } // namespace Libraries::MsgDialog diff --git a/src/core/libraries/system/msgdialog_ui.cpp b/src/core/libraries/system/msgdialog_ui.cpp new file mode 100644 index 0000000000..15d6f4dbd5 --- /dev/null +++ b/src/core/libraries/system/msgdialog_ui.cpp @@ -0,0 +1,294 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include + +#include +#include "common/assert.h" +#include "imgui/imgui_std.h" +#include "msgdialog_ui.h" + +using namespace ImGui; +using namespace Libraries::CommonDialog; +using namespace Libraries::MsgDialog; + +static constexpr ImVec2 BUTTON_SIZE{100.0f, 30.0f}; +static constexpr float PROGRESS_BAR_WIDTH{0.8f}; + +struct { + int count = 0; + const char* text1; + const char* text2; +} static constexpr user_button_texts[] = { + {1, "OK"}, // 0 OK + {2, "Yes", "No"}, // 1 YESNO + {0}, // 2 NONE + {2, "OK", "Cancel"}, // 3 OK_CANCEL + {}, // 4 !!NOP + {1, "Wait"}, // 5 WAIT + {2, "Wait", "Cancel"}, // 6 WAIT_CANCEL + {2, "Yes", "No"}, // 7 YESNO_FOCUS_NO + {2, "OK", "Cancel"}, // 8 OK_CANCEL_FOCUS_CANCEL + {0xFF}, // 9 TWO_BUTTONS +}; +static_assert(std::size(user_button_texts) == static_cast(ButtonType::TWO_BUTTONS) + 1); + +MsgDialogState::MsgDialogState(const OrbisParam& param) { + this->mode = param.mode; + switch (mode) { + case MsgDialogMode::USER_MSG: { + ASSERT(param.userMsgParam); + const auto& v = *param.userMsgParam; + auto state = UserState{ + .type = v.buttonType, + .msg = std::string(v.msg), + }; + if (v.buttonType == ButtonType::TWO_BUTTONS) { + ASSERT(v.buttonsParam); + state.btn_param1 = std::string(v.buttonsParam->msg1); + state.btn_param2 = std::string(v.buttonsParam->msg2); + } + this->state = state; + } break; + case MsgDialogMode::PROGRESS_BAR: { + ASSERT(param.progBarParam); + const auto& v = *param.progBarParam; + this->state = ProgressState{ + .type = v.barType, + .msg = std::string(v.msg), + .progress = 0, + }; + } break; + case MsgDialogMode::SYSTEM_MSG: { + ASSERT(param.sysMsgParam); + const auto& v = *param.sysMsgParam; + this->state = SystemState{ + .type = v.sysMsgType, + }; + } break; + default: + UNREACHABLE_MSG("Unknown dialog mode"); + } +} + +MsgDialogState::MsgDialogState(UserState mode) { + this->mode = MsgDialogMode::USER_MSG; + this->state = mode; +} + +MsgDialogState::MsgDialogState(ProgressState mode) { + this->mode = MsgDialogMode::PROGRESS_BAR; + this->state = mode; +} + +MsgDialogState::MsgDialogState(SystemState mode) { + this->mode = MsgDialogMode::SYSTEM_MSG; + this->state = mode; +} + +void MsgDialogUi::DrawUser() { + const auto& [button_type, msg, btn_param1, btn_param2] = + state->GetState(); + const auto ws = GetWindowSize(); + if (!msg.empty()) { + DrawCenteredText(&msg.front(), &msg.back() + 1, + GetContentRegionAvail() - ImVec2{0.0f, 15.0f + BUTTON_SIZE.y}); + } + ASSERT(button_type <= ButtonType::TWO_BUTTONS); + auto [count, text1, text2] = user_button_texts[static_cast(button_type)]; + if (count == 0xFF) { // TWO_BUTTONS -> User defined message + count = 2; + text1 = btn_param1.c_str(); + text2 = btn_param2.c_str(); + } + const bool focus_first = button_type < ButtonType::YESNO_FOCUS_NO; + SetCursorPos({ + ws.x / 2.0f - BUTTON_SIZE.x / 2.0f * static_cast(count), + ws.y - 10.0f - BUTTON_SIZE.y, + }); + BeginGroup(); + if (count > 0) { + // First button at the right, so we render the second button first + if (count == 2) { + PushID(2); + if (Button(text2, BUTTON_SIZE)) { + switch (button_type) { + case ButtonType::OK_CANCEL: + case ButtonType::WAIT_CANCEL: + case ButtonType::OK_CANCEL_FOCUS_CANCEL: + Finish(ButtonId::INVALID, Result::USER_CANCELED); + break; + default: + Finish(ButtonId::BUTTON2); + break; + } + } + if ((first_render || IsKeyPressed(ImGuiKey_GamepadFaceRight)) && !focus_first) { + SetItemCurrentNavFocus(); + } + PopID(); + SameLine(); + } + PushID(1); + if (Button(text1, BUTTON_SIZE)) { + Finish(ButtonId::BUTTON1); + } + if ((first_render || IsKeyPressed(ImGuiKey_GamepadFaceRight)) && focus_first) { + SetItemCurrentNavFocus(); + } + PopID(); + SameLine(); + } + EndGroup(); +} + +void MsgDialogUi::DrawProgressBar() { + const auto& [bar_type, msg, progress_bar_value] = + state->GetState(); + DrawCenteredText(msg.c_str()); + const auto ws = GetWindowSize(); + SetCursorPos({ + ws.x * ((1 - PROGRESS_BAR_WIDTH) / 2.0f), + ws.y - 10.0f - BUTTON_SIZE.y, + }); + const bool has_cancel = bar_type == ProgressBarType::PERCENTAGE_CANCEL; + float bar_width = PROGRESS_BAR_WIDTH * ws.x; + if (has_cancel) { + bar_width -= BUTTON_SIZE.x - 10.0f; + } + BeginGroup(); + ProgressBar(static_cast(progress_bar_value) / 100.0f, {bar_width, BUTTON_SIZE.y}); + if (has_cancel) { + SameLine(); + if (Button("Cancel", BUTTON_SIZE)) { + Finish(ButtonId::INVALID, Result::USER_CANCELED); + } + if (first_render) { + SetItemCurrentNavFocus(); + } + } + EndGroup(); +} + +struct { + const char* text; +} static constexpr system_message_texts[] = { + "No product available in the store.", // TRC_EMPTY_STORE + "PSN chat restriction.", // TRC_PSN_CHAT_RESTRICTION + "User-generated Media restriction", // TRC_PSN_UGC_RESTRICTION + nullptr, // !!NOP + "Camera not connected.", // CAMERA_NOT_CONNECTED + "Warning: profile picture and name are not set", // WARNING_PROFILE_PICTURE_AND_NAME_NOT_SHARED +}; +static_assert(std::size(system_message_texts) == + static_cast(SystemMessageType::WARNING_PROFILE_PICTURE_AND_NAME_NOT_SHARED) + 1); + +void MsgDialogUi::DrawSystemMessage() { + // TODO: Implement go to settings & user profile + const auto& [msg_type] = state->GetState(); + ASSERT(msg_type <= SystemMessageType::WARNING_PROFILE_PICTURE_AND_NAME_NOT_SHARED); + auto [msg] = system_message_texts[static_cast(msg_type)]; + DrawCenteredText(msg); + const auto ws = GetWindowSize(); + SetCursorPos({ + ws.x / 2.0f - BUTTON_SIZE.x / 2.0f, + ws.y - 10.0f - BUTTON_SIZE.y, + }); + if (Button("OK", BUTTON_SIZE)) { + Finish(ButtonId::OK); + } + if (first_render) { + SetItemCurrentNavFocus(); + } +} + +MsgDialogUi::MsgDialogUi(MsgDialogState* state, Status* status, DialogResult* result) + : state(state), status(status), result(result) { + if (status && *status == Status::RUNNING) { + first_render = true; + AddLayer(this); + } +} +MsgDialogUi::~MsgDialogUi() { + Finish(ButtonId::INVALID); +} +MsgDialogUi::MsgDialogUi(MsgDialogUi&& other) noexcept + : Layer(other), state(other.state), status(other.status), result(other.result) { + other.state = nullptr; + other.status = nullptr; + other.result = nullptr; +} +MsgDialogUi& MsgDialogUi::operator=(MsgDialogUi other) { + using std::swap; + swap(state, other.state); + swap(status, other.status); + swap(result, other.result); + if (status && *status == Status::RUNNING) { + first_render = true; + AddLayer(this); + } + return *this; +} + +void MsgDialogUi::Finish(ButtonId buttonId, Result r) { + if (result) { + result->result = r; + result->buttonId = buttonId; + } + if (status) { + *status = Status::FINISHED; + } + state = nullptr; + status = nullptr; + result = nullptr; + RemoveLayer(this); +} + +void MsgDialogUi::Draw() { + if (status == nullptr || *status != Status::RUNNING) { + return; + } + const auto& io = GetIO(); + + const ImVec2 window_size{ + std::min(io.DisplaySize.x, 500.0f), + std::min(io.DisplaySize.y, 300.0f), + }; + + CentralizeWindow(); + SetNextWindowSize(window_size); + SetNextWindowCollapsed(false); + if (first_render || !io.NavActive) { + SetNextWindowFocus(); + } + KeepNavHighlight(); + if (Begin("Message Dialog##MessageDialog", nullptr, + ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoSavedSettings)) { + switch (state->GetMode()) { + case MsgDialogMode::USER_MSG: + DrawUser(); + break; + case MsgDialogMode::PROGRESS_BAR: + DrawProgressBar(); + break; + case MsgDialogMode::SYSTEM_MSG: + DrawSystemMessage(); + break; + } + } + End(); + + first_render = false; +} + +DialogResult Libraries::MsgDialog::ShowMsgDialog(MsgDialogState state, bool block) { + DialogResult result{}; + Status status = Status::RUNNING; + MsgDialogUi dialog(&state, &status, &result); + if (block) { + while (status == Status::RUNNING) { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } + } + return result; +} diff --git a/src/core/libraries/system/msgdialog_ui.h b/src/core/libraries/system/msgdialog_ui.h new file mode 100644 index 0000000000..d24ec067c5 --- /dev/null +++ b/src/core/libraries/system/msgdialog_ui.h @@ -0,0 +1,181 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +#include "common/fixed_value.h" +#include "common/types.h" +#include "core/libraries/system/commondialog.h" +#include "imgui/imgui_layer.h" + +namespace Libraries::MsgDialog { + +using OrbisUserServiceUserId = s32; + +enum class MsgDialogMode : u32 { + USER_MSG = 1, + PROGRESS_BAR = 2, + SYSTEM_MSG = 3, +}; + +enum class ButtonId : u32 { + INVALID = 0, + OK = 1, + YES = 1, + NO = 2, + BUTTON1 = 1, + BUTTON2 = 2, +}; + +enum class ButtonType : u32 { + OK = 0, + YESNO = 1, + NONE = 2, + OK_CANCEL = 3, + WAIT = 5, + WAIT_CANCEL = 6, + YESNO_FOCUS_NO = 7, + OK_CANCEL_FOCUS_CANCEL = 8, + TWO_BUTTONS = 9, +}; + +enum class ProgressBarType : u32 { + PERCENTAGE = 0, + PERCENTAGE_CANCEL = 1, +}; + +enum class SystemMessageType : u32 { + TRC_EMPTY_STORE = 0, + TRC_PSN_CHAT_RESTRICTION = 1, + TRC_PSN_UGC_RESTRICTION = 2, + CAMERA_NOT_CONNECTED = 4, + WARNING_PROFILE_PICTURE_AND_NAME_NOT_SHARED = 5, +}; + +enum class OrbisMsgDialogProgressBarTarget : u32 { + DEFAULT = 0, +}; + +struct ButtonsParam { + const char* msg1{}; + const char* msg2{}; + std::array reserved{}; +}; + +struct UserMessageParam { + ButtonType buttonType{}; + s32 : 32; + const char* msg{}; + ButtonsParam* buttonsParam{}; + std::array reserved{}; +}; + +struct ProgressBarParam { + ProgressBarType barType{}; + s32 : 32; + const char* msg{}; + std::array reserved{}; +}; + +struct SystemMessageParam { + SystemMessageType sysMsgType{}; + std::array reserved{}; +}; + +struct OrbisParam { + CommonDialog::BaseParam baseParam; + std::size_t size; + MsgDialogMode mode; + s32 : 32; + UserMessageParam* userMsgParam; + ProgressBarParam* progBarParam; + SystemMessageParam* sysMsgParam; + OrbisUserServiceUserId userId; + std::array reserved; + s32 : 32; +}; + +struct DialogResult { + FixedValue mode{}; + CommonDialog::Result result{CommonDialog::Result::OK}; + ButtonId buttonId{ButtonId::INVALID}; + std::array reserved{}; +}; + +// State is used to copy all the data from the param struct +class MsgDialogState { +public: + struct UserState { + ButtonType type{}; + std::string msg{}; + std::string btn_param1{}; + std::string btn_param2{}; + }; + struct ProgressState { + ProgressBarType type{}; + std::string msg{}; + u32 progress{}; + }; + struct SystemState { + SystemMessageType type{}; + }; + +private: + OrbisUserServiceUserId user_id{}; + MsgDialogMode mode{}; + std::variant state{std::monostate{}}; + +public: + explicit MsgDialogState(const OrbisParam& param); + + explicit MsgDialogState(UserState mode); + explicit MsgDialogState(ProgressState mode); + explicit MsgDialogState(SystemState mode); + + MsgDialogState() = default; + + [[nodiscard]] OrbisUserServiceUserId GetUserId() const { + return user_id; + } + + [[nodiscard]] MsgDialogMode GetMode() const { + return mode; + } + + template + [[nodiscard]] T& GetState() { + return std::get(state); + } +}; + +class MsgDialogUi final : public ImGui::Layer { + bool first_render{false}; + MsgDialogState* state{}; + CommonDialog::Status* status{}; + DialogResult* result{}; + + void DrawUser(); + void DrawProgressBar(); + void DrawSystemMessage(); + +public: + explicit MsgDialogUi(MsgDialogState* state = nullptr, CommonDialog::Status* status = nullptr, + DialogResult* result = nullptr); + ~MsgDialogUi() override; + MsgDialogUi(const MsgDialogUi& other) = delete; + MsgDialogUi(MsgDialogUi&& other) noexcept; + MsgDialogUi& operator=(MsgDialogUi other); + + void Finish(ButtonId buttonId, CommonDialog::Result r = CommonDialog::Result::OK); + + void Draw() override; +}; + +// Utility function to show a message dialog +// !!! This function can block !!! +DialogResult ShowMsgDialog(MsgDialogState state, bool block = true); + +}; // namespace Libraries::MsgDialog \ No newline at end of file diff --git a/src/core/libraries/system/savedatadialog.cpp b/src/core/libraries/system/savedatadialog.cpp deleted file mode 100644 index d842fd11ae..0000000000 --- a/src/core/libraries/system/savedatadialog.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "common/logging/log.h" -#include "core/libraries/error_codes.h" -#include "core/libraries/libs.h" -#include "core/libraries/system/savedatadialog.h" - -namespace Libraries::SaveDataDialog { - -int PS4_SYSV_ABI sceSaveDataDialogClose() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogGetResult() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogGetStatus() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogInitialize() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogIsReadyToDisplay() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogOpen() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogProgressBarInc() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogProgressBarSetValue() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogTerminate() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceSaveDataDialogUpdateStatus() { - LOG_ERROR(Lib_SaveDataDialog, "(STUBBED) called"); - return 3; // SCE_COMMON_DIALOG_STATUS_FINISHED -} - -void RegisterlibSceSaveDataDialog(Core::Loader::SymbolsResolver* sym) { - LIB_FUNCTION("fH46Lag88XY", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogClose); - LIB_FUNCTION("yEiJ-qqr6Cg", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogGetResult); - LIB_FUNCTION("ERKzksauAJA", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogGetStatus); - LIB_FUNCTION("s9e3+YpRnzw", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogInitialize); - LIB_FUNCTION("en7gNVnh878", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogIsReadyToDisplay); - LIB_FUNCTION("4tPhsP6FpDI", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogOpen); - LIB_FUNCTION("V-uEeFKARJU", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogProgressBarInc); - LIB_FUNCTION("hay1CfTmLyA", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogProgressBarSetValue); - LIB_FUNCTION("YuH2FA7azqQ", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogTerminate); - LIB_FUNCTION("KK3Bdg1RWK0", "libSceSaveDataDialog", 1, "libSceSaveDataDialog", 1, 1, - sceSaveDataDialogUpdateStatus); -}; - -} // namespace Libraries::SaveDataDialog diff --git a/src/core/libraries/system/savedatadialog.h b/src/core/libraries/system/savedatadialog.h deleted file mode 100644 index e8fe7c75f7..0000000000 --- a/src/core/libraries/system/savedatadialog.h +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "common/types.h" - -namespace Core::Loader { -class SymbolsResolver; -} - -namespace Libraries::SaveDataDialog { - -int PS4_SYSV_ABI sceSaveDataDialogClose(); -int PS4_SYSV_ABI sceSaveDataDialogGetResult(); -int PS4_SYSV_ABI sceSaveDataDialogGetStatus(); -int PS4_SYSV_ABI sceSaveDataDialogInitialize(); -int PS4_SYSV_ABI sceSaveDataDialogIsReadyToDisplay(); -int PS4_SYSV_ABI sceSaveDataDialogOpen(); -int PS4_SYSV_ABI sceSaveDataDialogProgressBarInc(); -int PS4_SYSV_ABI sceSaveDataDialogProgressBarSetValue(); -int PS4_SYSV_ABI sceSaveDataDialogTerminate(); -int PS4_SYSV_ABI sceSaveDataDialogUpdateStatus(); - -void RegisterlibSceSaveDataDialog(Core::Loader::SymbolsResolver* sym); -} // namespace Libraries::SaveDataDialog diff --git a/src/core/libraries/system/systemservice.cpp b/src/core/libraries/system/systemservice.cpp index d99ec7c7cf..8002e2bfc1 100644 --- a/src/core/libraries/system/systemservice.cpp +++ b/src/core/libraries/system/systemservice.cpp @@ -1717,7 +1717,7 @@ int PS4_SYSV_ABI sceSystemServiceGetAppType() { s32 PS4_SYSV_ABI sceSystemServiceGetDisplaySafeAreaInfo(OrbisSystemServiceDisplaySafeAreaInfo* info) { - LOG_INFO(Lib_SystemService, "called"); + LOG_DEBUG(Lib_SystemService, "called"); if (info == nullptr) { LOG_ERROR(Lib_SystemService, "OrbisSystemServiceDisplaySafeAreaInfo is null"); return ORBIS_SYSTEM_SERVICE_ERROR_PARAMETER; diff --git a/src/core/libraries/system/userservice.cpp b/src/core/libraries/system/userservice.cpp index 8c48b3111c..cd7a721c0f 100644 --- a/src/core/libraries/system/userservice.cpp +++ b/src/core/libraries/system/userservice.cpp @@ -565,7 +565,7 @@ int PS4_SYSV_ABI sceUserServiceGetLoginFlag() { } s32 PS4_SYSV_ABI sceUserServiceGetLoginUserIdList(OrbisUserServiceLoginUserIdList* userIdList) { - LOG_INFO(Lib_UserService, "called"); + LOG_DEBUG(Lib_UserService, "called"); if (userIdList == nullptr) { LOG_ERROR(Lib_UserService, "user_id is null"); return ORBIS_USER_SERVICE_ERROR_INVALID_ARGUMENT; diff --git a/src/core/libraries/videoout/driver.cpp b/src/core/libraries/videoout/driver.cpp index 91694cfafc..fa7577907b 100644 --- a/src/core/libraries/videoout/driver.cpp +++ b/src/core/libraries/videoout/driver.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include #include #include "common/assert.h" @@ -160,13 +161,7 @@ int VideoOutDriver::UnregisterBuffers(VideoOutPort* port, s32 attributeIndex) { return ORBIS_OK; } -std::chrono::microseconds VideoOutDriver::Flip(const Request& req) { - if (!req) { - return std::chrono::microseconds{0}; - } - - const auto start = std::chrono::high_resolution_clock::now(); - +void VideoOutDriver::Flip(const Request& req) { // Whatever the game is rendering show splash if it is active if (!renderer->ShowSplash(req.frame)) { // Present the frame. @@ -202,9 +197,11 @@ std::chrono::microseconds VideoOutDriver::Flip(const Request& req) { port->buffer_labels[req.index] = 0; port->SignalVoLabel(); } +} - const auto end = std::chrono::high_resolution_clock::now(); - return std::chrono::duration_cast(end - start); +void VideoOutDriver::DrawBlankFrame() { + const auto empty_frame = renderer->PrepareBlankFrame(false); + renderer->Present(empty_frame); } bool VideoOutDriver::SubmitFlip(VideoOutPort* port, s32 index, s64 flip_arg, @@ -260,8 +257,13 @@ void VideoOutDriver::SubmitFlipInternal(VideoOutPort* port, s32 index, s64 flip_ } void VideoOutDriver::PresentThread(std::stop_token token) { - static constexpr std::chrono::milliseconds VblankPeriod{16}; + static constexpr std::chrono::nanoseconds VblankPeriod{16666667}; + const auto vblank_period = VblankPeriod / Config::vblankDiv(); + Common::SetCurrentThreadName("PresentThread"); + Common::SetCurrentThreadRealtime(vblank_period); + + Common::AccurateTimer timer{vblank_period}; const auto receive_request = [this] -> Request { std::scoped_lock lk{mutex}; @@ -273,18 +275,22 @@ void VideoOutDriver::PresentThread(std::stop_token token) { return {}; }; - auto vblank_period = VblankPeriod / Config::vblankDiv(); auto delay = std::chrono::microseconds{0}; while (!token.stop_requested()) { - // Sleep for most of the vblank duration. - std::this_thread::sleep_for(vblank_period - delay); + timer.Start(); // Check if it's time to take a request. auto& vblank_status = main_port.vblank_status; if (vblank_status.count % (main_port.flip_rate + 1) == 0) { const auto request = receive_request(); - delay = Flip(request); - FRAME_END; + if (!request) { + if (!main_port.is_open) { + DrawBlankFrame(); + } + } else { + Flip(request); + FRAME_END; + } } { @@ -303,6 +309,8 @@ void VideoOutDriver::PresentThread(std::stop_token token) { Kernel::SceKernelEvent::Filter::VideoOut, nullptr); } } + + timer.End(); } } diff --git a/src/core/libraries/videoout/driver.h b/src/core/libraries/videoout/driver.h index 6fc74e012d..2e478b9ee6 100644 --- a/src/core/libraries/videoout/driver.h +++ b/src/core/libraries/videoout/driver.h @@ -101,7 +101,8 @@ class VideoOutDriver { } }; - std::chrono::microseconds Flip(const Request& req); + void Flip(const Request& req); + void DrawBlankFrame(); // Used when there is no flip request to keep ImGui up to date void SubmitFlipInternal(VideoOutPort* port, s32 index, s64 flip_arg, bool is_eop = false); void PresentThread(std::stop_token token); diff --git a/src/core/libraries/videoout/video_out.cpp b/src/core/libraries/videoout/video_out.cpp index a6c1a76235..631f77732f 100644 --- a/src/core/libraries/videoout/video_out.cpp +++ b/src/core/libraries/videoout/video_out.cpp @@ -140,8 +140,8 @@ s32 PS4_SYSV_ABI sceVideoOutSubmitFlip(s32 handle, s32 bufferIndex, s32 flipMode return ORBIS_VIDEO_OUT_ERROR_INVALID_INDEX; } - LOG_INFO(Lib_VideoOut, "bufferIndex = {}, flipMode = {}, flipArg = {}", bufferIndex, flipMode, - flipArg); + LOG_DEBUG(Lib_VideoOut, "bufferIndex = {}, flipMode = {}, flipArg = {}", bufferIndex, flipMode, + flipArg); if (!driver->SubmitFlip(port, bufferIndex, flipArg)) { LOG_ERROR(Lib_VideoOut, "Flip queue is full"); diff --git a/src/core/linker.cpp b/src/core/linker.cpp index a4d7345501..4e4fa28d20 100644 --- a/src/core/linker.cpp +++ b/src/core/linker.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "common/alignment.h" +#include "common/arch.h" #include "common/assert.h" #include "common/config.h" #include "common/logging/log.h" @@ -27,6 +28,7 @@ static PS4_SYSV_ABI void ProgramExitFunc() { } static void RunMainEntry(VAddr addr, EntryParams* params, ExitFunc exit_func) { +#ifdef ARCH_X86_64 // reinterpret_cast(addr)(params, exit_func); // can't be used, stack has to have // a specific layout asm volatile("andq $-16, %%rsp\n" // Align to 16 bytes @@ -46,6 +48,9 @@ static void RunMainEntry(VAddr addr, EntryParams* params, ExitFunc exit_func) { : : "r"(addr), "r"(params), "r"(exit_func) : "rax", "rsi", "rdi"); +#else + UNIMPLEMENTED_MSG("Missing RunMainEntry() implementation for target CPU architecture."); +#endif } Linker::Linker() : memory{Memory::Instance()} {} @@ -70,10 +75,14 @@ void Linker::Execute() { // Configure used flexible memory size. if (const auto* proc_param = GetProcParam()) { - if (proc_param->entry_count >= 3) { + if (proc_param->size >= + offsetof(OrbisProcParam, mem_param) + sizeof(OrbisKernelMemParam*)) { if (const auto* mem_param = proc_param->mem_param) { - if (const auto* flexible_size = mem_param->flexible_memory_size) { - memory->SetupMemoryRegions(*flexible_size); + if (mem_param->size >= + offsetof(OrbisKernelMemParam, flexible_memory_size) + sizeof(u64*)) { + if (const auto* flexible_size = mem_param->flexible_memory_size) { + memory->SetupMemoryRegions(*flexible_size); + } } } } @@ -82,8 +91,7 @@ void Linker::Execute() { // Init primary thread. Common::SetCurrentThreadName("GAME_MainThread"); Libraries::Kernel::pthreadInitSelfMainThread(); - InitializeThreadPatchStack(); - InitTlsForThread(true); + EnsureThreadInitialized(true); // Start shared library modules for (auto& m : m_modules) { @@ -103,7 +111,7 @@ void Linker::Execute() { } } - CleanupThreadPatchStack(); + SetTcbBase(nullptr); } s32 Linker::LoadModule(const std::filesystem::path& elf_name, bool is_dynamic) { @@ -324,6 +332,17 @@ void* Linker::TlsGetAddr(u64 module_index, u64 offset) { return addr + offset; } +thread_local std::once_flag init_tls_flag; + +void Linker::EnsureThreadInitialized(bool is_primary) { + std::call_once(init_tls_flag, [this, is_primary] { +#ifdef ARCH_X86_64 + InitializeThreadPatchStack(); +#endif + InitTlsForThread(is_primary); + }); +} + void Linker::InitTlsForThread(bool is_primary) { static constexpr size_t TcbSize = 0x40; static constexpr size_t TlsAllocAlign = 0x20; diff --git a/src/core/linker.h b/src/core/linker.h index ed1fe400c8..18454f602a 100644 --- a/src/core/linker.h +++ b/src/core/linker.h @@ -98,7 +98,6 @@ class Linker { } void* TlsGetAddr(u64 module_index, u64 offset); - void InitTlsForThread(bool is_primary = false); s32 LoadModule(const std::filesystem::path& elf_name, bool is_dynamic = false); Module* FindByAddress(VAddr address); @@ -109,8 +108,17 @@ class Linker { void Execute(); void DebugDump(); + template + ReturnType ExecuteGuest(PS4_SYSV_ABI ReturnType (*func)(FuncArgs...), CallArgs&&... args) { + // Make sure TLS is initialized for the thread before entering guest. + EnsureThreadInitialized(); + return func(std::forward(args)...); + } + private: const Module* FindExportedModule(const ModuleInfo& m, const LibraryInfo& l); + void EnsureThreadInitialized(bool is_primary = false); + void InitTlsForThread(bool is_primary); MemoryManager* memory; std::mutex mutex; diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 18535a6e84..ebda00357c 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -7,6 +7,7 @@ #include "core/libraries/error_codes.h" #include "core/libraries/kernel/memory_management.h" #include "core/memory.h" +#include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_rasterizer.h" namespace Core { @@ -57,9 +58,11 @@ PAddr MemoryManager::Allocate(PAddr search_start, PAddr search_end, size_t size, auto dmem_area = FindDmemArea(search_start); const auto is_suitable = [&] { - const auto area_addr = dmem_area->second.base; - const auto aligned_addr = alignment > 0 ? Common::AlignUp(area_addr, alignment) : area_addr; - const auto remaining_size = dmem_area->second.size - (aligned_addr - area_addr); + const auto aligned_base = alignment > 0 ? Common::AlignUp(dmem_area->second.base, alignment) + : dmem_area->second.base; + const auto alignment_size = aligned_base - dmem_area->second.base; + const auto remaining_size = + dmem_area->second.size >= alignment_size ? dmem_area->second.size - alignment_size : 0; return dmem_area->second.is_free && remaining_size >= size; }; while (!is_suitable() && dmem_area->second.GetEnd() <= search_end) { @@ -99,7 +102,7 @@ void MemoryManager::Free(PAddr phys_addr, size_t size) { } } for (const auto& [addr, size] : remove_list) { - UnmapMemory(addr, size); + UnmapMemoryImpl(addr, size); } // Mark region as free and attempt to coalesce it with neighbours. @@ -122,7 +125,7 @@ int MemoryManager::Reserve(void** out_addr, VAddr virtual_addr, size_t size, Mem const auto& vma = FindVMA(mapped_addr)->second; // If the VMA is mapped, unmap the region first. if (vma.IsMapped()) { - UnmapMemory(mapped_addr, size); + UnmapMemoryImpl(mapped_addr, size); } const size_t remaining_size = vma.base + vma.size - mapped_addr; ASSERT_MSG(vma.type == VMAType::Free && remaining_size >= size); @@ -231,7 +234,10 @@ int MemoryManager::MapFile(void** out_addr, VAddr virtual_addr, size_t size, Mem void MemoryManager::UnmapMemory(VAddr virtual_addr, size_t size) { std::scoped_lock lk{mutex}; + UnmapMemoryImpl(virtual_addr, size); +} +void MemoryManager::UnmapMemoryImpl(VAddr virtual_addr, size_t size) { const auto it = FindVMA(virtual_addr); const auto& vma_base = it->second; ASSERT_MSG(vma_base.Contains(virtual_addr, size), @@ -287,6 +293,61 @@ int MemoryManager::QueryProtection(VAddr addr, void** start, void** end, u32* pr return ORBIS_OK; } +int MemoryManager::Protect(VAddr addr, size_t size, MemoryProt prot) { + std::scoped_lock lk{mutex}; + + // Find the virtual memory area that contains the specified address range. + auto it = FindVMA(addr); + if (it == vma_map.end() || !it->second.Contains(addr, size)) { + LOG_ERROR(Core, "Address range not mapped"); + return ORBIS_KERNEL_ERROR_EINVAL; + } + + VirtualMemoryArea& vma = it->second; + if (vma.type == VMAType::Free) { + LOG_ERROR(Core, "Cannot change protection on free memory region"); + return ORBIS_KERNEL_ERROR_EINVAL; + } + + // Validate protection flags + constexpr static MemoryProt valid_flags = MemoryProt::NoAccess | MemoryProt::CpuRead | + MemoryProt::CpuReadWrite | MemoryProt::GpuRead | + MemoryProt::GpuWrite | MemoryProt::GpuReadWrite; + + MemoryProt invalid_flags = prot & ~valid_flags; + if (u32(invalid_flags) != 0 && u32(invalid_flags) != u32(MemoryProt::NoAccess)) { + LOG_ERROR(Core, "Invalid protection flags: prot = {:#x}, invalid flags = {:#x}", u32(prot), + u32(invalid_flags)); + return ORBIS_KERNEL_ERROR_EINVAL; + } + + // Change protection + vma.prot = prot; + + // Set permissions + Core::MemoryPermission perms{}; + + if (True(prot & MemoryProt::CpuRead)) { + perms |= Core::MemoryPermission::Read; + } + if (True(prot & MemoryProt::CpuReadWrite)) { + perms |= Core::MemoryPermission::ReadWrite; + } + if (True(prot & MemoryProt::GpuRead)) { + perms |= Core::MemoryPermission::Read; + } + if (True(prot & MemoryProt::GpuWrite)) { + perms |= Core::MemoryPermission::Write; + } + if (True(prot & MemoryProt::GpuReadWrite)) { + perms |= Core::MemoryPermission::ReadWrite; + } + + impl.Protect(addr, size, perms); + + return ORBIS_OK; +} + int MemoryManager::VirtualQuery(VAddr addr, int flags, ::Libraries::Kernel::OrbisVirtualQueryInfo* info) { std::scoped_lock lk{mutex}; @@ -303,15 +364,20 @@ int MemoryManager::VirtualQuery(VAddr addr, int flags, const auto& vma = it->second; info->start = vma.base; info->end = vma.base + vma.size; + info->offset = vma.phys_base; + info->protection = static_cast(vma.prot); info->is_flexible.Assign(vma.type == VMAType::Flexible); info->is_direct.Assign(vma.type == VMAType::Direct); - info->is_commited.Assign(vma.type != VMAType::Free); + info->is_stack.Assign(vma.type == VMAType::Stack); + info->is_pooled.Assign(vma.type == VMAType::Pooled); + info->is_committed.Assign(vma.type != VMAType::Free && vma.type != VMAType::Reserved); vma.name.copy(info->name.data(), std::min(info->name.size(), vma.name.size())); if (vma.type == VMAType::Direct) { const auto dmem_it = FindDmemArea(vma.phys_base); ASSERT(dmem_it != dmem_map.end()); - info->offset = vma.phys_base; info->memory_type = dmem_it->second.memory_type; + } else { + info->memory_type = ::Libraries::Kernel::SCE_KERNEL_WB_ONION; } return ORBIS_OK; @@ -353,9 +419,9 @@ int MemoryManager::DirectQueryAvailable(PAddr search_start, PAddr search_end, si const auto aligned_base = alignment > 0 ? Common::AlignUp(dmem_area->second.base, alignment) : dmem_area->second.base; + const auto alignment_size = aligned_base - dmem_area->second.base; const auto remaining_size = - dmem_area->second.size - (aligned_base - dmem_area->second.base); - + dmem_area->second.size >= alignment_size ? dmem_area->second.size - alignment_size : 0; if (remaining_size > max_size) { paddr = aligned_base; max_size = remaining_size; diff --git a/src/core/memory.h b/src/core/memory.h index c8638626a3..73ffab503b 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -30,6 +30,7 @@ enum class MemoryProt : u32 { GpuWrite = 32, GpuReadWrite = 38, }; +DECLARE_ENUM_FLAG_OPERATORS(MemoryProt) enum class MemoryMapFlags : u32 { NoFlags = 0, @@ -163,9 +164,12 @@ class MemoryManager { int QueryProtection(VAddr addr, void** start, void** end, u32* prot); - int VirtualQuery(VAddr addr, int flags, Libraries::Kernel::OrbisVirtualQueryInfo* info); + int Protect(VAddr addr, size_t size, MemoryProt prot); - int DirectMemoryQuery(PAddr addr, bool find_next, Libraries::Kernel::OrbisQueryInfo* out_info); + int VirtualQuery(VAddr addr, int flags, ::Libraries::Kernel::OrbisVirtualQueryInfo* info); + + int DirectMemoryQuery(PAddr addr, bool find_next, + ::Libraries::Kernel::OrbisQueryInfo* out_info); int DirectQueryAvailable(PAddr search_start, PAddr search_end, size_t alignment, PAddr* phys_addr_out, size_t* size_out); @@ -214,11 +218,13 @@ class MemoryManager { DMemHandle Split(DMemHandle dmem_handle, size_t offset_in_area); + void UnmapMemoryImpl(VAddr virtual_addr, size_t size); + private: AddressSpace impl; DMemMap dmem_map; VMAMap vma_map; - std::recursive_mutex mutex; + std::mutex mutex; size_t total_direct_size{}; size_t total_flexible_size{}; size_t flexible_usage{}; diff --git a/src/core/module.cpp b/src/core/module.cpp index f48848bbd3..e62c57785a 100644 --- a/src/core/module.cpp +++ b/src/core/module.cpp @@ -1,16 +1,15 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include #include "common/alignment.h" +#include "common/arch.h" #include "common/assert.h" #include "common/logging/log.h" -#ifdef ENABLE_QT_GUI -#include "qt_gui/memory_patcher.h" -#endif +#include "common/memory_patcher.h" #include "common/string_util.h" #include "core/aerolib/aerolib.h" #include "core/cpu_patches.h" +#include "core/linker.h" #include "core/loader/dwarf.h" #include "core/memory.h" #include "core/module.h" @@ -71,8 +70,9 @@ Module::~Module() = default; s32 Module::Start(size_t args, const void* argp, void* param) { LOG_INFO(Core_Linker, "Module started : {}", name); + auto* linker = Common::Singleton::Instance(); const VAddr addr = dynamic_info.init_virtual_addr + GetBaseAddress(); - return reinterpret_cast(addr)(args, argp, param); + return linker->ExecuteGuest(reinterpret_cast(addr), args, argp, param); } void Module::LoadModuleToMemory(u32& max_tls_index) { @@ -93,9 +93,11 @@ void Module::LoadModuleToMemory(u32& max_tls_index) { LoadOffset += CODE_BASE_INCR * (1 + aligned_base_size / CODE_BASE_INCR); LOG_INFO(Core_Linker, "Loading module {} to {}", name, fmt::ptr(*out_addr)); +#ifdef ARCH_X86_64 // Initialize trampoline generator. void* trampoline_addr = std::bit_cast(base_virtual_addr + aligned_base_size); - Xbyak::CodeGenerator c(TrampolineSize, trampoline_addr); + RegisterPatchModule(*out_addr, aligned_base_size, trampoline_addr, TrampolineSize); +#endif LOG_INFO(Core_Linker, "======== Load Module to Memory ========"); LOG_INFO(Core_Linker, "base_virtual_addr ......: {:#018x}", base_virtual_addr); @@ -134,9 +136,11 @@ void Module::LoadModuleToMemory(u32& max_tls_index) { LOG_INFO(Core_Linker, "segment_mode ..........: {}", segment_mode); add_segment(elf_pheader[i]); +#ifdef ARCH_X86_64 if (elf_pheader[i].p_flags & PF_EXEC) { - PatchInstructions(segment_addr, segment_file_size, c); + PrePatchInstructions(segment_addr, segment_file_size); } +#endif break; } case PT_DYNAMIC: @@ -196,7 +200,6 @@ void Module::LoadModuleToMemory(u32& max_tls_index) { const VAddr entry_addr = base_virtual_addr + elf.GetElfEntry(); LOG_INFO(Core_Linker, "program entry addr ..........: {:#018x}", entry_addr); -#ifdef ENABLE_QT_GUI if (MemoryPatcher::g_eboot_address == 0) { if (name == "eboot") { MemoryPatcher::g_eboot_address = base_virtual_addr; @@ -204,7 +207,6 @@ void Module::LoadModuleToMemory(u32& max_tls_index) { MemoryPatcher::OnGameLoaded(); } } -#endif } void Module::LoadDynamicInfo() { diff --git a/src/core/signals.cpp b/src/core/signals.cpp new file mode 100644 index 0000000000..87f56c85ad --- /dev/null +++ b/src/core/signals.cpp @@ -0,0 +1,146 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/arch.h" +#include "common/assert.h" +#include "common/decoder.h" +#include "common/signal_context.h" +#include "core/signals.h" + +#ifdef _WIN32 +#include +#else +#include +#ifdef ARCH_X86_64 +#include +#endif +#endif + +namespace Core { + +#if defined(_WIN32) + +static LONG WINAPI SignalHandler(EXCEPTION_POINTERS* pExp) noexcept { + const auto* signals = Signals::Instance(); + + bool handled = false; + switch (pExp->ExceptionRecord->ExceptionCode) { + case EXCEPTION_ACCESS_VIOLATION: + handled = signals->DispatchAccessViolation( + pExp, reinterpret_cast(pExp->ExceptionRecord->ExceptionInformation[1])); + break; + case EXCEPTION_ILLEGAL_INSTRUCTION: + handled = signals->DispatchIllegalInstruction(pExp); + break; + default: + break; + } + + return handled ? EXCEPTION_CONTINUE_EXECUTION : EXCEPTION_CONTINUE_SEARCH; +} + +#else + +static std::string DisassembleInstruction(void* code_address) { + char buffer[256] = ""; + +#ifdef ARCH_X86_64 + ZydisDecodedInstruction instruction; + ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT]; + const auto status = + Common::Decoder::Instance()->decodeInstruction(instruction, operands, code_address); + if (ZYAN_SUCCESS(status)) { + ZydisFormatter formatter; + ZydisFormatterInit(&formatter, ZYDIS_FORMATTER_STYLE_INTEL); + ZydisFormatterFormatInstruction(&formatter, &instruction, operands, + instruction.operand_count_visible, buffer, sizeof(buffer), + reinterpret_cast(code_address), ZYAN_NULL); + } +#endif + + return buffer; +} + +static void SignalHandler(int sig, siginfo_t* info, void* raw_context) { + const auto* signals = Signals::Instance(); + + auto* code_address = Common::GetRip(raw_context); + + switch (sig) { + case SIGSEGV: + case SIGBUS: { + const bool is_write = Common::IsWriteError(raw_context); + if (!signals->DispatchAccessViolation(raw_context, info->si_addr)) { + UNREACHABLE_MSG("Unhandled access violation at code address {}: {} address {}", + fmt::ptr(code_address), is_write ? "Write to" : "Read from", + fmt::ptr(info->si_addr)); + } + break; + } + case SIGILL: + if (!signals->DispatchIllegalInstruction(raw_context)) { + UNREACHABLE_MSG("Unhandled illegal instruction at code address {}: {}", + fmt::ptr(code_address), DisassembleInstruction(code_address)); + } + break; + default: + break; + } +} + +#endif + +SignalDispatch::SignalDispatch() { +#if defined(_WIN32) + ASSERT_MSG(handle = AddVectoredExceptionHandler(0, SignalHandler), + "Failed to register exception handler."); +#else + struct sigaction action {}; + action.sa_sigaction = SignalHandler; + action.sa_flags = SA_SIGINFO | SA_ONSTACK; + sigemptyset(&action.sa_mask); + + ASSERT_MSG(sigaction(SIGSEGV, &action, nullptr) == 0 && + sigaction(SIGBUS, &action, nullptr) == 0, + "Failed to register access violation signal handler."); + ASSERT_MSG(sigaction(SIGILL, &action, nullptr) == 0, + "Failed to register illegal instruction signal handler."); +#endif +} + +SignalDispatch::~SignalDispatch() { +#if defined(_WIN32) + ASSERT_MSG(RemoveVectoredExceptionHandler(handle), "Failed to remove exception handler."); +#else + struct sigaction action {}; + action.sa_handler = SIG_DFL; + action.sa_flags = 0; + sigemptyset(&action.sa_mask); + + ASSERT_MSG(sigaction(SIGSEGV, &action, nullptr) == 0 && + sigaction(SIGBUS, &action, nullptr) == 0, + "Failed to remove access violation signal handler."); + ASSERT_MSG(sigaction(SIGILL, &action, nullptr) == 0, + "Failed to remove illegal instruction signal handler."); +#endif +} + +bool SignalDispatch::DispatchAccessViolation(void* context, void* fault_address) const { + for (const auto& [handler, _] : access_violation_handlers) { + if (handler(context, fault_address)) { + return true; + } + } + return false; +} + +bool SignalDispatch::DispatchIllegalInstruction(void* context) const { + for (const auto& [handler, _] : illegal_instruction_handlers) { + if (handler(context)) { + return true; + } + } + return false; +} + +} // namespace Core \ No newline at end of file diff --git a/src/core/signals.h b/src/core/signals.h new file mode 100644 index 0000000000..6ee525e101 --- /dev/null +++ b/src/core/signals.h @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include "common/singleton.h" + +namespace Core { + +using AccessViolationHandler = bool (*)(void* context, void* fault_address); +using IllegalInstructionHandler = bool (*)(void* context); + +/// Receives OS signals and dispatches to the appropriate handlers. +class SignalDispatch { +public: + SignalDispatch(); + ~SignalDispatch(); + + /// Registers a handler for memory access violation signals. + void RegisterAccessViolationHandler(const AccessViolationHandler& handler, u32 priority) { + access_violation_handlers.emplace(handler, priority); + } + + /// Registers a handler for illegal instruction signals. + void RegisterIllegalInstructionHandler(const IllegalInstructionHandler& handler, u32 priority) { + illegal_instruction_handlers.emplace(handler, priority); + } + + /// Dispatches an access violation signal, returning whether it was successfully handled. + bool DispatchAccessViolation(void* context, void* fault_address) const; + + /// Dispatches an illegal instruction signal, returning whether it was successfully handled. + bool DispatchIllegalInstruction(void* context) const; + +private: + template + struct HandlerEntry { + T handler; + u32 priority; + + std::strong_ordering operator<=>(const HandlerEntry& right) const { + return priority <=> right.priority; + } + }; + std::set> access_violation_handlers; + std::set> illegal_instruction_handlers; + +#ifdef _WIN32 + void* handle{}; +#endif +}; + +using Signals = Common::Singleton; + +} // namespace Core \ No newline at end of file diff --git a/src/core/tls.cpp b/src/core/tls.cpp index 3216d0fe43..eb07e7a72c 100644 --- a/src/core/tls.cpp +++ b/src/core/tls.cpp @@ -2,13 +2,19 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include "common/arch.h" #include "common/assert.h" #include "common/types.h" #include "core/tls.h" #ifdef _WIN32 #include -#elif defined(__APPLE__) +#elif defined(__APPLE__) && defined(ARCH_X86_64) +#include +#include +#include +#include +#elif !defined(ARCH_X86_64) #include #endif @@ -16,12 +22,20 @@ namespace Core { #ifdef _WIN32 +// Windows + static DWORD slot = 0; +static std::once_flag slot_alloc_flag; static void AllocTcbKey() { slot = TlsAlloc(); } +u32 GetTcbKey() { + std::call_once(slot_alloc_flag, &AllocTcbKey); + return slot; +} + void SetTcbBase(void* image_address) { const BOOL result = TlsSetValue(GetTcbKey(), image_address); ASSERT(result != 0); @@ -31,28 +45,103 @@ Tcb* GetTcbBase() { return reinterpret_cast(TlsGetValue(GetTcbKey())); } -#elif defined(__APPLE__) +#elif defined(__APPLE__) && defined(ARCH_X86_64) -static pthread_key_t slot = 0; +// Apple x86_64 -static void AllocTcbKey() { - ASSERT(pthread_key_create(&slot, nullptr) == 0); +// Reserve space in the 32-bit address range for allocating TCB pages. +asm(".zerofill TCB_SPACE,TCB_SPACE,__guest_system,0x3FC000"); + +static constexpr u64 ldt_region_base = 0x4000; +static constexpr u64 ldt_region_size = 0x3FC000; +static constexpr u16 ldt_block_size = 0x1000; +static constexpr u16 ldt_index_base = 8; +static constexpr u16 ldt_index_total = (ldt_region_size - ldt_region_base) / ldt_block_size; + +static boost::icl::interval_set free_ldts{}; +static std::mutex free_ldts_lock; +static std::once_flag ldt_region_init_flag; + +static u16 GetLdtIndex() { + sel_t selector; + asm volatile("mov %%fs, %0" : "=r"(selector)); + return selector.index; +} + +static void InitLdtRegion() { + const void* result = + mmap(reinterpret_cast(ldt_region_base), ldt_region_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + ASSERT_MSG(result != MAP_FAILED, "Failed to map memory region for LDT entries."); + + free_ldts += + boost::icl::interval::right_open(ldt_index_base, ldt_index_base + ldt_index_total); +} + +static void** SetupThreadLdt() { + std::call_once(ldt_region_init_flag, InitLdtRegion); + + // Allocate a new LDT index for the current thread. + u16 ldt_index; + { + std::unique_lock lock{free_ldts_lock}; + ASSERT_MSG(!free_ldts.empty(), "Out of LDT space."); + ldt_index = first(*free_ldts.begin()); + free_ldts -= ldt_index; + } + const u64 addr = ldt_region_base + (ldt_index - ldt_index_base) * ldt_block_size; + + // Create an LDT entry for the TCB. + const ldt_entry ldt{.data{ + .base00 = static_cast(addr), + .base16 = static_cast(addr >> 16), + .base24 = static_cast(addr >> 24), + .limit00 = static_cast(ldt_block_size - 1), + .limit16 = 0, + .type = DESC_DATA_WRITE, + .dpl = 3, // User accessible + .present = 1, // Segment present + .stksz = DESC_DATA_32B, + .granular = DESC_GRAN_BYTE, + }}; + int ret = i386_set_ldt(ldt_index, &ldt, 1); + ASSERT_MSG(ret == ldt_index, + "Failed to set LDT for TLS area: expected {}, but syscall returned {}", ldt_index, + ret); + + // Set the FS segment to the created LDT. + const sel_t sel{ + .rpl = USER_PRIV, + .ti = SEL_LDT, + .index = ldt_index, + }; + asm volatile("mov %0, %%fs" ::"r"(sel)); + + return reinterpret_cast(addr); +} + +static void FreeThreadLdt() { + std::unique_lock lock{free_ldts_lock}; + free_ldts += GetLdtIndex(); } void SetTcbBase(void* image_address) { - ASSERT(pthread_setspecific(GetTcbKey(), image_address) == 0); + if (image_address != nullptr) { + *SetupThreadLdt() = image_address; + } else { + FreeThreadLdt(); + } } Tcb* GetTcbBase() { - return reinterpret_cast(pthread_getspecific(GetTcbKey())); + Tcb* tcb; + asm volatile("mov %%fs:0x0, %0" : "=r"(tcb)); + return tcb; } -#else - -// Placeholder for code compatibility. -static constexpr u32 slot = 0; +#elif defined(ARCH_X86_64) -static void AllocTcbKey() {} +// Other POSIX x86_64 void SetTcbBase(void* image_address) { asm volatile("wrgsbase %0" ::"r"(image_address) : "memory"); @@ -64,13 +153,32 @@ Tcb* GetTcbBase() { return tcb; } -#endif +#else + +// POSIX non-x86_64 +// Just sets up a simple thread-local variable to store it, then instruction translation can point +// code to it. +static pthread_key_t slot = 0; static std::once_flag slot_alloc_flag; -u32 GetTcbKey() { +static void AllocTcbKey() { + ASSERT(pthread_key_create(&slot, nullptr) == 0); +} + +pthread_key_t GetTcbKey() { std::call_once(slot_alloc_flag, &AllocTcbKey); return slot; } +void SetTcbBase(void* image_address) { + ASSERT(pthread_setspecific(GetTcbKey(), image_address) == 0); +} + +Tcb* GetTcbBase() { + return static_cast(pthread_getspecific(GetTcbKey())); +} + +#endif + } // namespace Core diff --git a/src/core/tls.h b/src/core/tls.h index 9829c8d9a4..f5bf331841 100644 --- a/src/core/tls.h +++ b/src/core/tls.h @@ -22,8 +22,10 @@ struct Tcb { void* tcb_thread; }; +#ifdef _WIN32 /// Gets the thread local storage key for the TCB block. u32 GetTcbKey(); +#endif /// Sets the data pointer to the TCB block. void SetTcbBase(void* image_address); diff --git a/src/emulator.cpp b/src/emulator.cpp index 85a4d745a4..4a2e38ff8a 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -8,8 +8,10 @@ #include "common/logging/backend.h" #include "common/logging/log.h" #ifdef ENABLE_QT_GUI -#include "qt_gui/memory_patcher.h" +#include "common/memory_patcher.h" #endif +#include "common/assert.h" +#include "common/elf_info.h" #include "common/ntapi.h" #include "common/path_util.h" #include "common/polyfill_thread.h" @@ -19,14 +21,15 @@ #include "core/file_format/playgo_chunk.h" #include "core/file_format/psf.h" #include "core/file_format/splash.h" +#include "core/file_format/trp.h" #include "core/file_sys/fs.h" #include "core/libraries/disc_map/disc_map.h" #include "core/libraries/kernel/thread_management.h" #include "core/libraries/libc_internal/libc_internal.h" #include "core/libraries/libs.h" #include "core/libraries/ngs2/ngs2.h" +#include "core/libraries/np_trophy/np_trophy.h" #include "core/libraries/rtc/rtc.h" -#include "core/libraries/videoout/video_out.h" #include "core/linker.h" #include "core/memory.h" #include "emulator.h" @@ -41,9 +44,10 @@ Emulator::Emulator() { const auto config_dir = Common::FS::GetUserPath(Common::FS::PathType::UserDir); Config::load(config_dir / "config.toml"); - // Initialize NT API functions + // Initialize NT API functions and set high priority #ifdef _WIN32 Common::NtApi::Initialize(); + SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS); #endif // Start logger. @@ -64,7 +68,8 @@ Emulator::Emulator() { LOG_INFO(Config, "Vulkan vkValidationSync: {}", Config::vkValidationSyncEnabled()); LOG_INFO(Config, "Vulkan vkValidationGpu: {}", Config::vkValidationGpuEnabled()); LOG_INFO(Config, "Vulkan rdocEnable: {}", Config::isRdocEnabled()); - LOG_INFO(Config, "Vulkan rdocMarkersEnable: {}", Config::isMarkersEnabled()); + LOG_INFO(Config, "Vulkan rdocMarkersEnable: {}", Config::vkMarkersEnabled()); + LOG_INFO(Config, "Vulkan crashDiagnostics: {}", Config::vkCrashDiagnosticEnabled()); // Defer until after logging is initialized. memory = Core::Memory::Instance(); @@ -87,24 +92,40 @@ void Emulator::Run(const std::filesystem::path& file) { // Certain games may use /hostapp as well such as CUSA001100 mnt->Mount(file.parent_path(), "/hostapp"); + auto& game_info = Common::ElfInfo::Instance(); + // Loading param.sfo file if exists std::string id; std::string title; std::string app_version; + u32 fw_version; + std::filesystem::path sce_sys_folder = file.parent_path() / "sce_sys"; if (std::filesystem::is_directory(sce_sys_folder)) { for (const auto& entry : std::filesystem::directory_iterator(sce_sys_folder)) { if (entry.path().filename() == "param.sfo") { auto* param_sfo = Common::Singleton::Instance(); - param_sfo->open(sce_sys_folder.string() + "/param.sfo", {}); - id = std::string(param_sfo->GetString("CONTENT_ID"), 7, 9); + const bool success = param_sfo->Open(sce_sys_folder / "param.sfo"); + ASSERT_MSG(success, "Failed to open param.sfo"); + const auto content_id = param_sfo->GetString("CONTENT_ID"); + ASSERT_MSG(content_id.has_value(), "Failed to get CONTENT_ID"); + id = std::string(*content_id, 7, 9); + Libraries::NpTrophy::game_serial = id; + const auto trophyDir = + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / id / "TrophyFiles"; + if (!std::filesystem::exists(trophyDir)) { + TRP trp; + if (!trp.Extract(file.parent_path())) { + LOG_ERROR(Loader, "Couldn't extract trophies"); + } + } #ifdef ENABLE_QT_GUI MemoryPatcher::g_game_serial = id; #endif - title = param_sfo->GetString("TITLE"); + title = param_sfo->GetString("TITLE").value_or("Unknown title"); LOG_INFO(Loader, "Game id: {} Title: {}", id, title); - u32 fw_version = param_sfo->GetInteger("SYSTEM_VER"); - app_version = param_sfo->GetString("APP_VER"); + fw_version = param_sfo->GetInteger("SYSTEM_VER").value_or(0x4700000); + app_version = param_sfo->GetString("APP_VER").value_or("Unknown version"); LOG_INFO(Loader, "Fw: {:#x} App Version: {}", fw_version, app_version); } else if (entry.path().filename() == "playgo-chunk.dat") { auto* playgo = Common::Singleton::Instance(); @@ -125,13 +146,20 @@ void Emulator::Run(const std::filesystem::path& file) { } } + game_info.initialized = true; + game_info.game_serial = id; + game_info.title = title; + game_info.app_ver = app_version; + game_info.firmware_ver = fw_version & 0xFFF00000; + game_info.raw_firmware_ver = fw_version; + std::string game_title = fmt::format("{} - {} <{}>", id, title, app_version); std::string window_title = ""; if (Common::isRelease) { window_title = fmt::format("shadPS4 v{} | {}", Common::VERSION, game_title); } else { - window_title = - fmt::format("shadPS4 v{} {} | {}", Common::VERSION, Common::g_scm_desc, game_title); + window_title = fmt::format("shadPS4 v{} {} {} | {}", Common::VERSION, Common::g_scm_branch, + Common::g_scm_desc, game_title); } window = std::make_unique( Config::getScreenWidth(), Config::getScreenHeight(), controller, window_title); @@ -194,7 +222,7 @@ void Emulator::Run(const std::filesystem::path& file) { } void Emulator::LoadSystemModules(const std::filesystem::path& file) { - constexpr std::array ModulesToLoad{ + constexpr std::array ModulesToLoad{ {{"libSceNgs2.sprx", &Libraries::Ngs2::RegisterlibSceNgs2}, {"libSceFiber.sprx", nullptr}, {"libSceUlt.sprx", nullptr}, @@ -203,8 +231,11 @@ void Emulator::LoadSystemModules(const std::filesystem::path& file) { {"libSceLibcInternal.sprx", &Libraries::LibcInternal::RegisterlibSceLibcInternal}, {"libSceDiscMap.sprx", &Libraries::DiscMap::RegisterlibSceDiscMap}, {"libSceRtc.sprx", &Libraries::Rtc::RegisterlibSceRtc}, - {"libSceJpegEnc.sprx", nullptr}}, - }; + {"libSceJpegEnc.sprx", nullptr}, + {"libSceFont.sprx", nullptr}, + {"libSceRazorCpu.sprx", nullptr}, + {"libSceCesCs.sprx", nullptr}, + {"libSceRudp.sprx", nullptr}}}; std::vector found_modules; const auto& sys_module_path = Common::FS::GetUserPath(Common::FS::PathType::SysModuleDir); diff --git a/src/images/play_icon.png b/src/images/play_icon.png index c67831a1e47bae69506b469b6fd2c2ca9a5f1c83..2815be39d8594b213fad22e68c7e8ac16872d639 100644 GIT binary patch literal 1150 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 diff --git a/src/images/themes_icon.png b/src/images/themes_icon.png index 822ef3af0c61e8ec9f0e13e93634273901fa06ed..cc711011e53f54f032735b712d3485f2513cfb91 100644 GIT binary patch literal 1413 zcmai!{Xf$Q0LQ;OHf!_zkQq5NytN8Tx-o^S_&tO$m5*y zSn|9pQPk#X(@mJC45#F9UZ;oCA8@bx;r)5P|AJ3C#l>C$hJ*nCpy230cH43Acc74+ zjhe}I-_fop2cJs-09X4C2q@qn003;|NG7^p=ByMsruo^bryOfnQ+5_t!&T&T8YyN> zW?BZKN5a4>A3A_c*Y<*;(w+|Dm{61h6hS=0D=I0`W6COoKT=SvPE)ys%w_LYg#Qi| zI~E#L2)7curn`JST3jZ4kBwGpew;iywS68RSEJiZ9pUZcy=n+R-|P<5fyi!IlZIqS z=ITjUG-*ig|H5278T((*ltO6wnIfA-S=J|mRoH6w>_Q@pLp~9x^JK~?59m^SC;wA} z;E!og{Y?Md*ya_HRk6;Pw_%Y!cK62IJ--n@KekllB$%Mjmc%;our!#p z6$&rMNM&&K1?>WhEIZ<24r}P)GGm38%JY{v)8SEX0Q>c&FTimmD5Om(6HF)ZLj9GY zc5BobK7+dwN%!F`uq_lH_ZpRnv~2YZ`+)9I0BvL#;w5R~#RvqG6t&FYwz_C9Npfga zhr5Nc(1lx2Sg;|@kx^k($7Y<5tXY-hRNSFgU&^Q>2Tns@0EFRq!>*<$$p$%f1~Ta| zj619|iqU8b$}*(bdl?*YrJqKBBv?q2 z>j12QT97BG@Q2RrYS|ji3B`plXw@m2ZzgiFOnfB-4f2QI>PR669C1gxIElCIdZtxKA%qoNIIqWOqa(-i%R!T z>}OLf4}$IdFjlIFeplXeOib)jAi}Q>U|x>tU*vUKUMNP(|4Eaa0xS279KzUDR3x+( zFDqjxNRYwVMpx_j01wzR;gT8nx~5zeu2<`3n>}%`;sF&opP7{!R1T@a@wLQG7lY-i zaKl=5ULZLQSz7P8_CnY!yTF8krkv<1ENE_zpoQP>DaCxu{OfvxhOC?TL#76=Okwc> zIwZ8VK7X){zv7rO6tM8aDGdI`-MxgMVgJcB8VM5NsF6ar((D>7@)YA30R%d!G7KAO z-}Tul<=_yJrVs< zZ;1)mPiTDmTQ=eAXR?=;G|`xk71xyfCf3D{#j8bGrb|`9VOb=ePlHUUEmEXCenyUX z)07I#QsVo%#a!U!le7Q_4;r^;PiU_qYxkQRc`>I`Gr09a3vksMbmdUIGH$WyF7~yD zR;T&3@daqmWO2*OMtHqB(SnaC53|=hyKObF^x-a1+f(J}JTR+tm3?Gj$w%op`x4Md z$lj`(G}XdW2eA&z#?RhrN_&gTJuL5>%RsV!jPi385+~+z8-HH^f&g)vWVUiHEbGwk z1?}=lT2G#p=Q@qMuBCd?xGmu+fw1MZr)K2B^Q=#(sP+21SN|;Ro3pv$U2hA0Ps^xP zJ=it{VKq$Yh72G{%Q6i78MTzN<2aKT1(9j{bnd*juuC|ka(LyD-adX$ASbr!2q8E5*cb5QdGBnO#BKGRUj-a(UC57Y H=*)isKd*71 literal 3395 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 diff --git a/src/imgui/imgui_config.h b/src/imgui/imgui_config.h new file mode 100644 index 0000000000..2094d56bc9 --- /dev/null +++ b/src/imgui/imgui_config.h @@ -0,0 +1,32 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// WARNING: All includes from this file must be relative to allow Dear_ImGui project to compile +// without having this project include paths. + +#include + +extern void assert_fail_debug_msg(const char* msg); + +#define ImDrawIdx std::uint32_t + +#define IM_STRINGIZE(x) IM_STRINGIZE2(x) +#define IM_STRINGIZE2(x) #x +#define IM_ASSERT(_EXPR) \ + ([&]() { \ + if (!(_EXPR)) [[unlikely]] { \ + assert_fail_debug_msg(#_EXPR " at " __FILE__ ":" IM_STRINGIZE(__LINE__)); \ + } \ + }()) + +#define IMGUI_USE_WCHAR32 +#define IMGUI_ENABLE_STB_TRUETYPE +#define IMGUI_DEFINE_MATH_OPERATORS + +#define IM_VEC2_CLASS_EXTRA \ + constexpr ImVec2(float _v) : x(_v), y(_v) {} + +#define IM_VEC4_CLASS_EXTRA \ + constexpr ImVec4(float _v) : x(_v), y(_v), z(_v), w(_v) {} \ No newline at end of file diff --git a/src/imgui/imgui_layer.h b/src/imgui/imgui_layer.h new file mode 100644 index 0000000000..a6c7e2a4a7 --- /dev/null +++ b/src/imgui/imgui_layer.h @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +namespace ImGui { + +class Layer { +public: + virtual ~Layer() = default; + static void AddLayer(Layer* layer); + static void RemoveLayer(Layer* layer); + + virtual void Draw() = 0; +}; + +} // namespace ImGui \ No newline at end of file diff --git a/src/imgui/imgui_std.h b/src/imgui/imgui_std.h new file mode 100644 index 0000000000..ec1e2f79d7 --- /dev/null +++ b/src/imgui/imgui_std.h @@ -0,0 +1,69 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +#include "imgui_internal.h" + +#define IM_COL32_GRAY(x) IM_COL32(x, x, x, 0xFF) + +namespace ImGui { + +namespace Easing { + +inline float FastInFastOutCubic(float x) { + constexpr float c4 = 1.587401f; // 4^(1/3) + constexpr float c05 = 0.7937f; // 0.5^(1/3) + return std::pow(c4 * x - c05, 3.0f) + 0.5f; +} + +} // namespace Easing + +inline void CentralizeWindow() { + const auto display_size = GetIO().DisplaySize; + SetNextWindowPos(display_size / 2.0f, ImGuiCond_Always, {0.5f}); +} + +inline void KeepNavHighlight() { + GetCurrentContext()->NavDisableHighlight = false; +} + +inline void SetItemCurrentNavFocus(const ImGuiID id = -1) { + const auto ctx = GetCurrentContext(); + SetFocusID(id == -1 ? ctx->LastItemData.ID : id, ctx->CurrentWindow); + ctx->NavInitResult.Clear(); + ctx->NavDisableHighlight = false; +} + +inline void DrawPrettyBackground() { + const double time = GetTime() / 1.5f; + const float x = ((float)std::cos(time) + 1.0f) / 2.0f; + const float d = Easing::FastInFastOutCubic(x); + u8 top_left = ImLerp(0x13, 0x05, d); + u8 top_right = ImLerp(0x00, 0x07, d); + u8 bottom_right = ImLerp(0x03, 0x27, d); + u8 bottom_left = ImLerp(0x05, 0x00, d); + + auto& window = *GetCurrentWindowRead(); + auto inner_pos = window.DC.CursorPos - window.WindowPadding; + auto inner_size = GetContentRegionAvail() + window.WindowPadding * 2.0f; + GetWindowDrawList()->AddRectFilledMultiColor( + inner_pos, inner_pos + inner_size, IM_COL32_GRAY(top_left), IM_COL32_GRAY(top_right), + IM_COL32_GRAY(bottom_right), IM_COL32_GRAY(bottom_left)); +} + +static void DrawCenteredText(const char* text, const char* text_end = nullptr, + ImVec2 content = GetContentRegionAvail()) { + auto pos = GetCursorPos(); + const auto text_size = CalcTextSize(text, text_end, false, content.x - 40.0f); + PushTextWrapPos(content.x); + SetCursorPos(pos + (content - text_size) / 2.0f); + TextEx(text, text_end, ImGuiTextFlags_NoWidthForLargeClippedText); + PopTextWrapPos(); + SetCursorPos(pos + content); +} + +} // namespace ImGui diff --git a/src/imgui/imgui_texture.h b/src/imgui/imgui_texture.h new file mode 100644 index 0000000000..1a38066d01 --- /dev/null +++ b/src/imgui/imgui_texture.h @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +namespace ImGui { + +namespace Core::TextureManager { +struct Inner; +} // namespace Core::TextureManager + +class RefCountedTexture { + Core::TextureManager::Inner* inner; + + explicit RefCountedTexture(Core::TextureManager::Inner* inner); + +public: + struct Image { + ImTextureID im_id; + u32 width; + u32 height; + }; + + static RefCountedTexture DecodePngTexture(std::vector data); + + static RefCountedTexture DecodePngFile(std::filesystem::path path); + + RefCountedTexture(); + + RefCountedTexture(const RefCountedTexture& other); + RefCountedTexture(RefCountedTexture&& other) noexcept; + RefCountedTexture& operator=(const RefCountedTexture& other); + RefCountedTexture& operator=(RefCountedTexture&& other) noexcept; + + virtual ~RefCountedTexture(); + + [[nodiscard]] Image GetTexture() const; + + explicit(false) operator bool() const; +}; + +}; // namespace ImGui \ No newline at end of file diff --git a/src/imgui/layer/video_info.cpp b/src/imgui/layer/video_info.cpp new file mode 100644 index 0000000000..55cfaf895d --- /dev/null +++ b/src/imgui/layer/video_info.cpp @@ -0,0 +1,123 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include + +#include "common/config.h" +#include "common/types.h" +#include "imgui_internal.h" +#include "video_info.h" + +using namespace ImGui; + +struct FrameInfo { + u32 num; + float delta; +}; + +static bool show = false; +static bool show_advanced = false; + +static u32 current_frame = 0; +constexpr float TARGET_FPS = 60.0f; +constexpr u32 FRAME_BUFFER_SIZE = 1024; +constexpr float BAR_WIDTH_MULT = 1.4f; +constexpr float BAR_HEIGHT_MULT = 1.25f; +constexpr float FRAME_GRAPH_PADDING_Y = 3.0f; +static std::array frame_list; +static float frame_graph_height = 50.0f; + +static void DrawSimple() { + const auto io = GetIO(); + Text("Frame time: %.3f ms (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); +} + +static void DrawAdvanced() { + const auto& ctx = *GetCurrentContext(); + const auto& io = ctx.IO; + const auto& window = *ctx.CurrentWindow; + auto& draw_list = *window.DrawList; + + Text("Frame time: %.3f ms (%.1f FPS)", io.DeltaTime * 1000.0f, io.Framerate); + + SeparatorText("Frame graph"); + const float full_width = GetContentRegionAvail().x; + { // Frame graph - inspired by + // https://asawicki.info/news_1758_an_idea_for_visualization_of_frame_times + auto pos = GetCursorScreenPos(); + const ImVec2 size{full_width, frame_graph_height + FRAME_GRAPH_PADDING_Y * 2.0f}; + ItemSize(size); + if (!ItemAdd({pos, pos + size}, GetID("FrameGraph"))) { + return; + } + + float target_dt = 1.0f / (TARGET_FPS * (float)Config::vblankDiv()); + float cur_pos_x = pos.x + full_width; + pos.y += FRAME_GRAPH_PADDING_Y; + const float final_pos_y = pos.y + frame_graph_height; + + draw_list.AddRectFilled({pos.x, pos.y - FRAME_GRAPH_PADDING_Y}, + {pos.x + full_width, final_pos_y + FRAME_GRAPH_PADDING_Y}, + IM_COL32(0x33, 0x33, 0x33, 0xFF)); + draw_list.PushClipRect({pos.x, pos.y}, {pos.x + full_width, final_pos_y}, true); + for (u32 i = 0; i < FRAME_BUFFER_SIZE; ++i) { + const auto& frame_info = frame_list[(current_frame - i) % FRAME_BUFFER_SIZE]; + const float dt_factor = target_dt / frame_info.delta; + + const float width = std::ceil(BAR_WIDTH_MULT / dt_factor); + const float height = + std::min(std::log2(BAR_HEIGHT_MULT / dt_factor) / 3.0f, 1.0f) * frame_graph_height; + + ImU32 color; + if (dt_factor >= 0.95f) { // BLUE + color = IM_COL32(0x33, 0x33, 0xFF, 0xFF); + } else if (dt_factor >= 0.5f) { // GREEN <> YELLOW + float t = 1.0f - (dt_factor - 0.5f) * 2.0f; + int r = (int)(0xFF * t); + color = IM_COL32(r, 0xFF, 0, 0xFF); + } else { // YELLOW <> RED + float t = dt_factor * 2.0f; + int g = (int)(0xFF * t); + color = IM_COL32(0xFF, g, 0, 0xFF); + } + draw_list.AddRectFilled({cur_pos_x - width, final_pos_y - height}, + {cur_pos_x, final_pos_y}, color); + cur_pos_x -= width; + if (cur_pos_x < width) { + break; + } + } + draw_list.PopClipRect(); + } +} + +void Layers::VideoInfo::Draw() { + const auto io = GetIO(); + + const FrameInfo frame_info{ + .num = ++current_frame, + .delta = io.DeltaTime, + }; + frame_list[current_frame % FRAME_BUFFER_SIZE] = frame_info; + + if (IsKeyPressed(ImGuiKey_F10, false)) { + const bool changed_ctrl = io.KeyCtrl != show_advanced; + show_advanced = io.KeyCtrl; + show = changed_ctrl || !show; + } + + if (show) { + if (show_advanced) { + if (Begin("Video debug info", &show, 0)) { + DrawAdvanced(); + } + } else { + if (Begin("Video Info", nullptr, + ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoDecoration | + ImGuiWindowFlags_AlwaysAutoResize)) { + DrawSimple(); + } + } + End(); + } +} diff --git a/src/imgui/layer/video_info.h b/src/imgui/layer/video_info.h new file mode 100644 index 0000000000..8a8af554e3 --- /dev/null +++ b/src/imgui/layer/video_info.h @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "imgui/imgui_layer.h" + +namespace Vulkan { +class RendererVulkan; +} +namespace ImGui::Layers { + +class VideoInfo : public Layer { + ::Vulkan::RendererVulkan* renderer{}; + +public: + explicit VideoInfo(::Vulkan::RendererVulkan* renderer) : renderer(renderer) {} + + void Draw() override; +}; + +} // namespace ImGui::Layers diff --git a/src/imgui/renderer/CMakeLists.txt b/src/imgui/renderer/CMakeLists.txt new file mode 100644 index 0000000000..b5f51ef625 --- /dev/null +++ b/src/imgui/renderer/CMakeLists.txt @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +project(ImGui_Resources) + +add_executable(Dear_ImGui_FontEmbed ${CMAKE_SOURCE_DIR}/externals/dear_imgui/misc/fonts/binary_to_compressed_c.cpp) + +set(FONT_LIST + NotoSansJP-Regular.ttf +) + +set(OutputList "") +FOREACH (FONT_FILE ${FONT_LIST}) + string(REGEX REPLACE "-" "_" fontname ${FONT_FILE}) + string(TOLOWER ${fontname} fontname) + string(REGEX REPLACE ".ttf" "" fontname_cpp ${fontname}) + set(fontname_cpp "imgui_font_${fontname_cpp}") + + MESSAGE(STATUS "Embedding font ${FONT_FILE}") + set(OUTPUT "generated_fonts/imgui_fonts/${fontname}") + add_custom_command( + OUTPUT "${OUTPUT}.g.cpp" + COMMAND ${CMAKE_COMMAND} -E make_directory "generated_fonts/imgui_fonts" + COMMAND $ -nostatic "${CMAKE_CURRENT_SOURCE_DIR}/fonts/${FONT_FILE}" ${fontname_cpp} > "${OUTPUT}.g.cpp" + DEPENDS Dear_ImGui_FontEmbed "fonts/${FONT_FILE}" + USES_TERMINAL + ) + list(APPEND OutputList "${OUTPUT}.g.cpp") +ENDFOREACH () + +add_library(ImGui_Resources STATIC ${OutputList}) +set(IMGUI_RESOURCES_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/generated_fonts PARENT_SCOPE) diff --git a/src/imgui/renderer/fonts/NotoSansJP-Regular.ttf b/src/imgui/renderer/fonts/NotoSansJP-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b2dad730d76d876ea9e4d0c5ec89ac699512f00f GIT binary patch literal 5733060 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 z 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

>td2BO60QM1hRUQmI+(Je^r8 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

o_l1Ii9axx< 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%0DJBE`!z!qruO|CnDa~}};PFu~yd5}O) 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
J2RWDNU69DH9wd|fXOc<^hr_Fv4%%Dn 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 z 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≧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
7<(IdA|2@$_;QH^VuG_&i@*Vl*cC}~g zWUfv)ZgaHN)nC?l)%k9xgw=E5ev714=2EoXeDe75?@pc^xcARFsH0rPlAiVIxvgTS zz_I_)ZRsVq?F9&kTF`vPT3@1adF`N<4~Ww5EDK3-N{~>Tq@SWQtUOT39N5RxWSr=>d6<((KMzoihvS&Kn<{OU=CRhSI$i zLsFlRIqlEKEroFH0Rs5$p5MKW}^e^N(+5 z{*dt$o5PBO^f>Doy=SaR1FokPOix1N)}>M(c7aax$x2nuRAxD#fVJkkE><9jj8;|jqP+O_(H7w=AKgjsJ+8bc0n9@rFmV$X} z1F(rb_}cb^6~>={PLvfrjb%IjR~VLAMPC3DlrThtkGT{OLrp`DVR963Qdg9?N++O1 z0NU>m-0|?k4}Xn>Jqi;3E<@y5p5@w<$jJt!b7s2 z6*fz#1ECoax!kBps4eRBuGvTIKuy_t(~8Frx6hq3)dST^=g_1H9EKIlZP)mP9fH>CUFa1Vk?qTXPy7NPnhMf0!lXM)axdSyfV2iqYokMi zYWoLE>>M;o^%X09{v7PC!G-n7BHPBqUB~)Ol4OmDGg$tw~17pc4oQG^_>J$_PfcmbYcoN z!#O#^@_}Yw2U{U%Uovx2i*M`xEL+7-??1^La%l!CG`& z=ecmnlBot=phYY&aRrXnsKwEpR0=HuNx1Vfg)Qlq@hm*Cv%S~hUATCnMkXd=fT~h# zzBn^9Vc*z;iw%I93_iav(P0cJTEtE_ll>h7lK#=O#5LF{!p~z+@oF%@jNFc&SMuuq z3q$EfN`u?E7Oemvb$Bz^s$9%MLuV7-g4PDSmNSHn9^i-A=~=KEAxn8O0df67?6L`| zN{)_Zs>Na{mAW{crs+e6g5*njT%NpCHwm;5cNuyJ~u};oIhjM_w@dI8Pd5wQTtoyk25fzGLHU6YeW?=V1*En zolq?`$}L0ZHJ{cJZDw4~3oz{71I^!tXRj5SP|Bdjc>)>o;-9${bk?|K@j}tmD(j6G zX07TAF%mP^(vwEv=@+Mc4W%m0OU+5mDJ-ELtaf$QG$1!^s(yjWw`KAJNNL_jkA0=5 z=kBC5+7@lD1>E6fPIZB<_5jK?n>l69Y#dG(Xqm_JaZem)dS zULONGx_^al+d|K4Rd-A``?TYgLR+6fVjQq2EIoR)zTaWgL?Up&qj93_LG?Acs_cYW z6GSL=K=uD2mg8rBX!LXvj%G47BQ%V-JdA7Z zHFZNayDF0j(f@fNn_ZpF!i%+y7jI^t%fR&@zTrf}U!w={0&_|&w8OBSi8vSw1;3*f z1NPc=!CW&$A;Z@OuSXBXjFb_7e#aYd7_uL8c@Y(;{y~63xnC6uuAZJr#aqkt%RCqg zeE=TY2(XZCs0hpn;JH@w{9!%s!?Jg61aL3>$a30%nLDZ>h0lk~{q!VtF^C%FR0(CK zM12d|xiK;({2Tfy>YuxKPdxD@{a!k~B$;flQn%9&qz;_6Cjy~hQ)uJ%Z87>nt*Z<1 z?i^K;s&o-!^(>91>?%0AjAQN6=4ORk-qOmLl{-%W#nkS789L4l6$8}B+j*j+L=OmN z-h{?y~iKxoha5MuG{_910-TW66S5Pl9?c`r17-Ikt!SLoUCUEVlUVyH1q~ zWEQr7YO{*0=3^k_yYJxM7z)ycHgDe=A!ESZ_8DZlqLtnl2u$thX#NvQYI>@>6qd2W3QX#khMOzkPt+@iE} z*K>=={NEkxB4_zS3oHrKEc&}1O$Th#79g>dLO~G9dhsj9OM8!iW>1KIr>!MGe9gY* z?eGBo>o>^nLZR8gVB07Awn9{S1E{yKIxu$L;4oDzc5~Ncm93yt>boc*M$S+^&Dl$~ zJf`E$pYDN}q`RJu*VG(;jnHc2FXIyIuWNu`B@Tgygz|VHn!s2BKG7(0aO(k_7J2WZ zXuUA5sa40}HH6sQdYFx%WF{1W9|GBY{rf^Vce9{eULQR?z|2^lV_sf1kDETp%Hng0 zdF+Hi^T0-rK4S40bEckvIV}xIQmq}j5Uuc9 zI~>l{c4dxY!Mb9J8u*!NguCc;AuF!;fG}jK*Hs(!)i_g-PGOba`oarj{j0Cir@r|n z+40Uh+k1MN%H^zK`pyABMQypEl~_amHEqr2uF{SrbanAh^RGpm@fQQdhqgmmns?GM znnCzreF>F$`Y!Aw>hhC|o8~;+y|7iCXN}3y?}S33AUvq-TKZ2{Sqdu$l|q-qea%LW z-5wE4`R(9=&T<1?ImXweu4$?k4o1v*s^mKW=ztA%z&PVN-Hh(_#+Anhc(~!vt|s#gyZYxg zx(P$4`FJkGpRSLt>g(ZmcFa{5e&FHwZQi^c95ZIe+ZCe zZz1zBvMoSU2Nof(a6hDT4fNZwizteL|Bv)vL5&t{UY80X3xVj#?1H{ z?KD2{b>r^TDj3+4tfAv;_Xv#=-lOQR+@jhDt{iU-9F!nU&o7tPM$R9UR-nSaA36uH z%C|8Dx?6wx3E){Mr}6yrr1ZfDZ@>Nd=k%k`Jtq!}R8)+T-xwF^MC}6YlmEOa_hL>c zlZ8B>%V=!nO16~68ji_f;mU=S&?)7(S~-qpJIB=`L+QL{o}ng|q2Rw(pvWMDwVwL& zwA23Y{Os7=wVjVd_e9c>Y;-U}g{Ag!X1RHMSm7Bm$t;tJ%z6pRw@T7 zmDZG@&&4wfT&1^Kt$9Veyz?KVoqp}(kC&2n3iP!(@&U|~?DvwV>2w=*3@+&Ex>zjn zo7W$n2nD^t)0gSqHqPBU1ZHdesSB<2lPr|dWIDSh<$k|^4l8?@Ahm<9YR=;Q? zw}j|veirv$`a=42YKF|+W8mqynl#s{2&r6}=mYfK;g88Z7tEebf0)0c!0Ip1H`7a4 zK}x>n#*>_4hrqPr$gIe~o;f-Il~|S^n(~8G71$JlT8)2gNS8|M1KLbRTR#|2u<~`6 z+sLYFfeMO1%Z#?7pBPN#kj5jPgTnrfD_vbSB3(9*! z5YG4uI3qCWfF6Q*HG&^vXvY?p%O^#TjFnanrO5ivKL>C~Qe%^iA{oU3m0k|vL|BVuThb9F)g16;jD&o=X1F5#;so<7(NihMjz zn}$mif!0k?;BK>5vIIb)J79X0?d;9VC9UnM|A)3Ok8A2m|MuLQecuBlgd_w)2!thM zA%TPd*$4zsP;o;PP(;Li-`Bd;wQ6m(YHO>uYWGFE+S+}euCsL7&adsXotd^XUFO%4 z>-(IW1hBKbpZAYfJ`qJQ_nh;bXZ=3khpXnui!CC|R%TCZ70SGZTEHTsD=wD{hF*Q+ zC+-PQZt9Ki{!Tm!Gwjw-n|_w$w?#97tW8-}pDoRAYsiG|Nrf*=FjX2Avs_qMz(Yam zg73!t+ucy?C!OoIZ1N;5DkG1Z30aB^p+%Jof8?>185i{tp8^1U8R2*?eQ+54{A;{_ z0i?jvT|VhVST|;%2&C=I;Dbvi3Px(5Nv9s~Jd+NLp;U}*Ha_Ik=QJ_{A2_Wc zQ;CRV33(#XmAFkt)F&QS5V?szl;9LC5;ZmgWzSb3V30D+TH=N-K&EqE*T$TkeUMY0 zw=WlQi}I%CnKC_Ys%F{!-+qgxu6zjmqSpftcaa_Ug&=~2_QUx=`eT|h%OMZ%^`bpc z@g%t(>L+`Jz0yVOn)wBc^n!WOB=C2XNB}^=6y=pFCaurl83cy?eL0p)tJuub>CtcE z@se|^@NbC(Pb;nz>jcDcT;*J;#B&+~z<#XG72FBiYrOUd1e?iwk#>lZt%Yu=5Jdpi zGLbGT<1ypFXV#Ot16bvxRS*7roqW5nCl6l)O9J2SuqSyIq0XH0Fw>uZos38q_^`nq zZIy^^Fq-yfq9XBX1ief-YjA+tLbv*0hktA>H><*mM=Du>{`!6}v70eA{Bi}WhIOV? zSg5mUtx=OWlabHJkd^X9$c}`wZQ^XEjiu=?(l~@RVTI2EJQsRFcA|tXI@i}PcOGt% zg!XtZzfabB6Z1Ba ztP1srpdUyI2=m9dYPVdVbgRXx3Z+a5?U?E+wI;)dw#hO|WnzU>8HBiCjZon;)MChp z60G;#kRJO_@f4;zz%m~OMTM#H=>x&?j;#h(N_e-iB~I>N^3V9|*n(pPh3^4;FKs(; z9DvUVA~BpXz{+g|;|Lj}(au(K>h$%F!bAelo^}jNL?>Q=Uwm*~r{lj4oH~_p`7(;$ zbr*X2>Dht6KDYY@Vzr+dQ(g5IaPa{tzSX(X^#!W-ijvsr{5<}19==5CvH+4<2jeqY zLoW^u(dmPI4U+opm88Z=oiDEOG&x$GxppF2Xf0d^FR)2hk5cPN#*RsosFQAY!FJTX zapU=em&z9o76Y3LSva%1=n^$9Bb#Pl6+&Md?#&0oFO<2pfozW&jDh3Y7v#gK?lykX zJH@++Rr&xaANs2sV}#L7EiL6SBDVo;8G2|8V@&zAw@0zUXI=keP##Uu*eoNNL%#&c zEkmo&k>+MJt|olnb1!uQ-w$Kz)ytX70L7EMRSNMT~4T8W73527(ToRfqO{e8bg17$}B_dQeew4e= zoFL(Vr`cU+7&oaSp9A9pi~DDp3Bz~w@HE+QCr+iv*7y)RCy5s61Tog}wC_WAS%CH) zc^14uSnNaOl%YGSiGL)70gU=W#Iac7LQw-h$6164^Ia8EWN&OFfRf~g+8F`rg8=li zK7d62&Bc9ld#r#yW;j-@azO9epEi6A2UC0PvFmuKaS37gQ9utS-7tY%>9g*g`)Kn<)cGII*c3)r?Y#ZPgzzJA#>QY7V!pX<#cJ`48LwLHCQ z6)~N9^9$-Hr9kGcWC^%reS-#Cbr7#<)wH0Rm!W3M-OaOL#+L&g|DIuI0DEybFAfcV z<3JR!IN+Cg_#Cj>8&+$0nlY^>|HHccM^ZBsAOj7vRFXUjv!URBjtGpR*p%>%C}01@4Z3K{jPiNoI4kN_XG9h z^wQ~VIxb#CNx4%qEfDxd&J&fC;!~=s$&wc4!^)gMCh@@V%EUkqm8^^muMA5x?R};k zmUQoU8ul0kZX8&)F!1t57snyQTloQMGR8UlFo6ZGdA>@^RSK| zpFDW*=+Xzjy0P&pdMoi~T=wj!lV-ESK(ah7Cdm;8xN;c@PDrhfc-Vcm;?BF^oPYln zb)uugaYZarSE{5ck438YXGo-0EAU1B>n4sACtOL{O+WZ(9fB9(ptDIJ$Dmr|_ys!6 zOj~+`qn7L)Iw~LD*jlo!F%gKO4e@v%rb&DL`AB3-Fc^Ln`cI#E2K=WVeTlI(#EI(K z+hBKxsKh@$ubQ{#IQsh5TdDg`oIvrDIaTwjKBtM>FF>nX6&)*K^OH432mC@lAl7cD zi6(%Z9J?J%cozKJ_+wNmoC$(Tvj)*R4zgsx9X;G ztG(<%^TK$R2A!pjhtbxESg8zEfW8FI11Z#^vZ&ATJZ|&M1#S_vk&~I#lReY}j;NFP z4Gev3(#SIEb!zH^uWMKJI!?gxiWh;;7CWCfMVd?-r4vLh z9Ebht(90cZ9fqA$yx=Bs?9hcg^2pF^HCZ$C^myXQM6HLYNjx1VK1*m&BYKl6MX?wH zCfj3tA+XE~d>jQQA+4-Uafs}q3hI_?*DhTmg%wm|C7R&A z*}lKnUUJe&ym|G3c^?zJg0VWGwjr0=_#^Z!T+7q|ZGw=-6HGJ#K%+qI+5DDcHh6pm zV0V&fH3`h9DoM&e-I@sLT`2jhR17-!H|3k@uAnrLA&iKH*21cmf?3OJSs9tU+9h3D z$3qC6<|^gvvlMly3jISQa#;^v`O_)}P~|WB-Q`_*#EJNis_x4tsyQkZ%YD%mH17Do|3I4Yv0)iZn-(~sW1+(N>uNCbM_|<)G)XKfwV!zI-9CnbH}loY2aBjZ zl}~-U8PC<3dHK#8%EqG}s{2Q>b?72`0Whh*1Jb6yM#*?)_25(^2jIBbL))gV zTDd4+AofmN9I-YGHb^+I6%t2$wtrk8@nJ0ttl^`(YHkNBh*$D5*)*(qv@nkmQzH&r zK`deTantkafdTpYwWT?3@Y-%C9!rG9#F518ezI%mHnbxabJbdxZmGq!wE7K$s8uX1 zwI6%x%~=dNuj|E!_gSf~5PMv^YCLr9zH6gDZB%dwtE-V6uwAnNAaDW`Y*2fB>$M z#_d3>2v!1E_U+ecLp$`1VZSAHdZZ&=njOg&$x~-YnCS}!hn!4zUnhLDaYHvYHEoN+ z@S0FLDPZMQK^yAZVZJfsWdUuEvqr~7aj&7iO6He%>Jy(u^gS+Kjv%+zvDNX&kNep& z5%bXhK2g1@#eHEV3?}0&J|zS~_cnAyDk>|z>4|selR^<^-fQ=7HxvI8I=7zsUu_PT zLyGgncs3aly7R|R9G3^yl9dx_jN~*KwV|MZX#h$Nd~?F zqzl?%fax;YQoiNrSQdDtZHL!fu6YOPF2b9!9;7~bFG4hm#IB;lS3X^i8KD+_@c3>s zaZBSrHGNN?tm3HEY}b(ojHjtj-+`uxEWYoLsQ3X1BkRD|53DuwwJ?oq@m=q2q#dRU zkwy=QLga0KdD`-VL%j?bZWV$P;Ps10kzSd1{roR8jbb@r3&FR!tX{Yv4 zuQ#ctZfM5c;SEd2{ScGs*=FFZlt}?el_y~+EGCwr(5h$I?23bt{JEt)rBK7IkDMcHQr3Ad%Sm-ln0Hkz^z~AQi$`7rVM|7yB?$XHStbgbu~lZ zzHWj`EQU$orHum-eaoV-n46U)kdNIw1-7>iR7EvNJz9RxSGzbe5o_@GYno-O;{Pr zkI(hV=d zft0ulDKcUuk_u#`c?!BBhqq2SEMZu!UMGBLa#S5?EWp9Ew_A%YP-Rx!7YMJt=n*Qq zw!V08j0vhHwyki-{WG~zF{}H5-L?=Act3>fVo^!%;I89inF?Ox!A(8cWP_q|-n3ji z;<#$^Qt_ZwIT?(xbmj?!TQQdG9xt5>=c6v7TAJQ zJfLy&z*fIR!%{JCEH17m(`FbtLu*{DJd>4?>sCT*S6Y+Ol^4*c7!@>{F$TLhjbzKv zy$RP7zwCov+5?HJHRvUYsKkEa`48rjQf|*1mk(H}+nOpb(B^!}9UI5Fc!!1Qnj{NistStHqvZl9$3p{CYP=@)(%VGg-%gloT?T?0w*cUY?58`{Kig z9q3K5*j9f0$~&_eV(!eB9@$q&U1{{48{}vN{U`X1_QSnc+jj0=LtJb~d>XzJXd4@i zK)8SS^#W6CEXxce+~1==0v$j7O8kz_;@CXm*z_`1Ca-i--8zY&OjV=hW%D!2M7vDx zd=*1r5;C>LwZ)YTV`WQuHVcY%47D{-(jak8FbQ-VZ6mQ=5?E0VhKXqzSa5XqZ0gox z;$X!gJsy#l%gSE`}VX8~Ee zLgoznD@6d&!c-s~poV6_M6$s#i|9h@ao}Q2`Y>Sa0YgNmV{ytgm10TOBhm!LBekIG z1r!d$h3Qyn^`#!(a-7OdLpm_4d>UMUU2g1ETO_%Vup595*uH9ao;|v zn%gvEIy+|FVyRf z)^(I|VEzlga#pjK)P%chVSuNB&oOw~t9TV(S2R{YFA_&!@r)OQ7Fqb&?A%_|P+UCT zX1lwn$VR=w;29uM4|8l6oG*=+d@JJ6q{{X@T@mtefJmLEa>5B0f|+@Sj)l{@6X#_D zbO{}IXD+4?b?$J{VxFPt!7ZgB4mj25A*h1j=a!Yipzd<0e?5W)X{IrX&CnhU{D zV9(Ci-%fmV@giZla3S&Nd+%My%bSv?%Ye2|Tu}dw53IhW+zL$91RtPgCOF~B5*7@z zzEttZH{1A1)(wAuvKnm>3oOO^9(lEolyJJAJ-;oVdJ}4R+gfXs<8GKm%DJ7Zqnx_3 zv+IE(W5sQyBPYBf$XE06(TQZ#-B~EFlA8S$@TD*FpofZ;27Vz&tr5AXON}CqNDDO9 zHl4tbbF!wrl*=~?`R7Xr4y-R|K#zH>G^C43;luvASHhF25`v>el1 z)K*l457TNbrCvZ=lSk$Px2ptP#K%D)l3?!A8LKKVb(qt(4=yC0h_nuvXm$cgGA2k) zy5aabfzD^9YE-z6f-fq5{r|eCd8rKk|I?iQApKu2c48A_p%n0xD5UXE*{pe94G0Z*-PF*B4E3XQ_`xAH^OZ-%HJwKeoj z7LfE!-sfv7Um83Q>sWOKHhtJfM#hl!dS4;db?Lf!jYKt9$z%07gzXO@9 z*4EttM(3E=ZD5b@zRHoe=x7BVPdCN>dloxw69%RKUnM{{2I%>99R#(b+%l z7BxUNKI_{3vwOy&UU-$t5gt_J8bpxqUj>u(sc zhaPHbN_oFB zO#j_Wvxtk~KMwU1gi{S8-h5epAG#pvdf<>7&xx+sb>^UV;jFP57)Qd_PoBRf0G`gX z)E{1|2D(sYx zrO@H&6c((j(J_2366Ku@()GAV(sD+oe)59CLWrrrrrmtOOLcf z>aHVY;qE}cA0488tUY?_W*FitW>oLFX^#)_CSShy$f7_;tysqmH0RYUIr+?o<0VV3 zLVJ{qS@m!pDc<`0W-~WK#nvsqchNqJ!fscUs2on%lK`mLa}ZB(Q@P;^ngXpIgf}I$ z|LVA;HULnP|MzeC#h%w1Ry$Oo7IYR;G-XFFzcLeIgw8AX@3sKuxr@53p*{54PNq!3 zoxFcuf!o~Pkl|HD+t8yD$V(i5^~;rz&{_P)XATsA;{e2FEp3f|JIw%o*}i+$68%L$ z=%y@FmX+N?W>47NA5)3VLg1!Z-5{trBx~90=Bnf@eapneAFK+8E3-7y<-SO222Kpr z%fuFesCvfkX@bCU`NZQMnDxOjj-LS;I0x*T^6+<|v^|e61rU#}eQEHCDK4PXlJk z4R4>1S|p-!>ka3hp98bJ*t4I$eNFBUMJiWiMtP>kdnoX1&1+RJQLp~+gVxhONzVn9 zls$I3lgyd6r?+0g&CKA)ypz|Ag-6bShkuRMLg}d_m`O7RLQbdou{Vmf4&<6rwvjGF zfqfjwNzi~NTBJuU2SzWuz#$?G(8qL2ZN2f*AXhGB&3}Af$wr%@PF^mpP5hNyFti8V z7?0l*HFV5!Vqtd97>i09v&YY=VnH#pvbzZti$tY{`3Emf$DQnJ-#?b0SP>x_2)(~y z=9yInTzoTcdu*OEFS91YnpKOYL>|4#sEQw0Uy9YRb;-7{GQ4+VIY%yM6|dY#uys(~XK5f2GCJeajNA1Ht)=&}gT zH{kdQEf5Hch` zxVj?!!D#de^gQK>;$Dm;=ys}xI712^p+0^)z=J6>&gYQengUzRpP$+^j(zgf_L$!5`5^WGK?&Xy92bJ*q_Qok zyO54sz#9f7|8KwLG%nF3LM*;eArcugRQ0(CsEz|-p@c1v3i(Xx>t~+Xx;3}Dx~W0a z0c>q*Zbd6037QtR!$^SUe$Mm1d?^sxj4N(#!+6Af^R?8U%QEdHq6(qSzCB{y-VN@G ze`b_;m7=}^^gp>|17UH3Mgk+$t|Ffiubkdx}e) zSfgNyQ=HYuL}qvb4$dfc!x;^4Hg;C8+evonrjBg(zkEyD^w8OK5K~+Tpsg7VrjX|T zC1@NR$JPqsy~Lw`dQ&JU&RMjt6@t0w_P(qiZMjiJi99+rWLh;9Hq+bTXFmS<+d^TH zZs{!@EH!`Z{((&D`?4%oi5M8loak?{*cPma#}QzamDtW@ptCXR>nIr!gm$`t52Spp z8In2j>HB->K^c&uT$HD*RGZbF4T9!VHT-N={?zGSua}T6Jh#{=0N`ie;ptoRaTAbL zX0;OQsJYbqAn{S~=HP5jMXxMB&b9k|VYOn+^_Sh?NJaTlP}7?|PGXJW=05 zj*lihVSv0>+_@a+z!u(uN<_jU%f?d=Ok&8m?RVe2%n0qihETQAsi+P{P>k9@{X)(i zI*4+cHC~8xDv;csKQ@-(Qb)!nJ{kMbFYCxvKmEQPO@=XR{{sb1_*Hhsy0@cau_!QL z7HGNp=^12JU|MYMbKNZ!?ZEqDmYQV+d2=g>7I%)^;8!a$>oRj?C8f%IMOnEX zF_?sdBX-|j!n040ya#IHva2j@PlUjas!W1tbqJ|_AVp#Lh zfjPaWY0E*o1Ecph?GmBapo&Js5)YXOGLeASgT&!PAIgLFqK#xMl+PkUwJ7tldBEPn)f&irMR^G3pK#^giCVtS zAl8Wt`qr{CQtyn}GMU000YhP~E*hdNd|i&XL})Z%zaKU&NdPMb{|A%hxIts#W||o^ zSaC7rO4g?=%kbu?A*7*4QVi>||86*F9|K1RqtqQ3qmM-M*$btcw0FFos39YB8 znoAX#vGIj07}V7oo+9?tx&_7J3a?X!PDFASjpyiut^M+=-~3J_D$y-DHVG@Ry>m0E zzuGmGU<`l{WKqhN% z;Pn9R$va)m3^P%4eQsvuve`y)p(wkfSH>+UweYINr4=?2u~rb-Qz_80%Qh;jsz~{~ zTW9A8^}NifJEtrGgMpP>VbSfvrh{JaotVb9iFUuAl&?C|mkq?mlIqDT;%f_JB{rp1 zQCfj++3BNhfU4zl(5Nc~0k%Sj`6R6lfO{*s`+36-9cfpH7_@zcn$-NEz32<$ z;K^CIA~yH*;(SpnJHyp=Xn<=F&)GMnT)`wPO|}(p-CBeTU=`;+-HMt6x7~gIbB!~nano*YYB586Ss8(S!gL~Lg9_47~7ZG@Tg|&&FrPTUx(PUjSbfLl8cJZ})id@yI*$~H*}dntO;Qk9A+(rVzFVm=O-=R6Iz?^c4#WJDb8w_G@ATq4Bb=0TI-HbVGH2hUawUWC zHBz?~X@fzHLmQ5wGiyJ*-Nwnt;ydp9Y8R@mKY7pj+it+8R=obEQzs9>1DWB}(tSg6 zaDZvch`m=R|E11~hIps9ghrdy6JI4%XlKcX_hR8(`M|0?)FQRdJOymB39-0j$J3WiQvcIJic7lAY-DRiYmZMV z5TG+>e_M!U#JJ(<^+k>7;ea$#!bZHTEC5W3m94$cJ#g#lLUFzzf5D#97;kKa=SmJ; z;sfHbaAb4vV91fnblm|}U{KpU;+}ZouQ9a2_M0$&@2XK3KEeLaNc2pDw`MHx!}m8yAQ9lh)jF{s4QBI1finZWz#f( z;^FE0wnm@g#g5##suW@@mUZFA9iY>6Z~#dvM_|1HomQG!^Qfi3vgrs2aI=7O8U@~P zVE!n=Z|K_`#UdKJVP4*B))I^fe+;_G1*zfbIL!cNBqsSyR^2GqnKgXk+X6iI$YcO+TFiN}lQY=c#+^qstEe z;TAbDO!VQnqOv}ZqtWopbroDR&t#AATeUJHHNN9 z8g?!(h9SZX>w-;F8{fm13nWLkl)hXq1$S=6Hyk75HL+3_9o@;aM5ADqR5H}8B6^5N9| z;h(`>dZT6kLL*0&$tzfQa?g|(9n0osWTR8HzSpVbT zoql`5X6U~mh7+gp9fNt@jlSRBir@F) z;;J)P&A^rWR`{0)TpTPy$>rnsFQ#Me-8AhwaIOI!D0P?+VyAo^ zJGp6S4H3}yZj9n9(73hFv^G}x{xK|9H@_Nblx3)6E>glR3JV47mmAczkvu$4+SQHD z1#-ha8St(~i2EWXwF@U?0wRO2>)zD(tmFwQ(E^*suK)Whl-FQ_krk360Q0bU$fd04 z=`iB-LhRK=9u|O}W${Eb3?iiRMMx3Iq+JvRDOI zA!E7XWn!YK5mo+W?1hVWMmb73v;OGG+hUG2zrV8>t`pz+&^OzC@b75@V?k)xsX)ncx zb)DwJ1EH|uBQVWR8lVHkcUXHBxp3%4w5w54)^&0PWbQaij&u|XAXhyt(FF!|0&#l` zrU$4be2rA>&?7E8yBMYm^QG*BuK_Yzyav8ff%a?q&n*XR33J;1{#XX}3=A~LCO)q} zO-=AEo7dHxjjvv2eOu>jSN0U&2hB>(gf=n2%>k_{G73n<;Wfk$7j%r(GYzfn8^kvqRcts^F-E}W{6#5$|7`M6G0GCbB4s2rEIYw0k>$J1QLF7y(F;| zJ6i;R(^l7FFj?K&zFgqbd6vpO)}kA@eE|#Hje%Rb2)4hoCfB{HSZG}m7fP5tvlT)- zL6a1jMGTT;iKk8@xb-Ejo+dS0rRHlVE%H-Ee&TV#_%jC~>8oUwZ@U@f*#`OkODRPq zg}aJt`t;$`3BA7d7V5rixp;N8i?!$S)o;4 zB`+{hLoJ+w&bzl`FKOe+3AxO%C9mIt&GW$NrFq2t(O+UnBhv)~S<0;1uw7+{)Mm&v z!6=gM`{~u&mlr@g1jjUR(-VKDPHnrChoO|Z1t(|IhjvfOHe+ZU?vp9`_i83}DT%bA zQ>ViBv}#E&E`R~%gwr@@V;$H6W^l`(c|)^q!MSCSh~+Lk)w>0kyiO8Sf>1QQ_1C4u zg3n)XK`;3&t#z`Xw5FN*%Q%=XsR}5I3W&$+$~^sTnYiAR-MPH>A^zkCZ>!?LxH-px zJE(61vueK}1tL}*?)~{kj%CL50;9RBd#|#jXBu=5clE-tU-)p22oF&n33VW&C zDYrYH?5in);edM^;@B6jH{u$5Yh5>4S|9yIsR-b)>l!AFB(eB4Bgi zHhLIPiE?7O9qB;=YAEomUD$;tT&DS3gB*o~72Lk4U{#A@>BZ#$_2e$TbM9rrkoe=5 zkdpWzDs$Myp-Gcta;sI&;ALs};E&aFU9qt-2RA;!SWLKMlpIdE)Ya3h=71{$x6Aj4 zpyS?Ky*$v}jy*mfNWrgOLkM^xbu3Ounn8?ZRDf}02Pca6Nht9O4)>8+oRs+=hh|_iB;Siu_>-VmYMp)(XDJ3cyLtqp! zvkG$qOQ(8?_v;JGJL-T%5_*-Idn@k{jy<-uoTrBB!>XNBSAhB^a5qb);@9w1&=d8J zikgpp>ym2aER1kaW>wBS0}LCkI-ZQ-4{FElzXC^|3yo$kk&Un$d{97mHa8yJLaQMc zW&wZ?@S5o3#f8T7DpO$5bWV3f{fLo&*jr_GeLEb~evl>lJ2X3J9TD z!pyLju&r*lmF@IqP~S(RH_$P7rEy?WJ&u5bTjrbBHtQFiTZBFB1*c}CM$fy{PX7;k z6F)0e9J!;MDCyo=f-!$%v3n11G}09K-PYiH%&-mIH<$0D3>9k`{N z`i5i={jVKUX->yPZ&+zr8ybjL>xzn-y;7Jv24jAwxy}e$j%+OD0sPdubX$T~OH|ZO z`LbrtqZA(=(*ZW&;Z&g>cf;fZTOHK5@ng~@p3(lA%83Eo_z2PjY-l)K1jR$=yBs(= zD<^Y?J|UJjDK*;85O`|&LD)N9;)!tBK~I*z?3L^$RbKZ#L4LBeG<2riL z1+S^GPFbS}#3-sYd;a+qFpHP7)JidiQcJsvFb%1wWNAl4FS&ktQ>qpObc%s{~Q${Z(>b;?BWqG zIJHdYji>Jc?Wl))l1u?yKm5e;>$}2)r=_15o^$k{(*XpGXC?cF4ihdz|E6FvcAlS4 zeT<%>0^5i;5@pB>y~AG+HzpSLk`sr{pmmLn*{!Pkv7-EzE{gSCT^=!$UyKaFBqX z72~T?JIZjV!Hoi!5`+q0_VhudU1$Qc{HHb_Y0*7Y+dRxih_Zr0OUsrX>`qTx6U!5{ zn(ti)tP35xdvw%9eA(s_=M&>{iJucJ^kvSh9j#nY6>Yowa|au_p59yg82}}ieN$IC zn(A$@eju0|Z3y}@ISSyRaC)n&wW0PtDNrRz>t+R!!~cr!#pHO`yGXLZhvD$j0mj#bZ{CR;brzprVmyoV)cu3RYxPAt(g@^dH~rj> z-XA8!Ojl&^j$#mIE5`dTgFVD*7)MuF=FzYxj_jpyhTt#YAjLQmo`A!Eu+sov2IZXE zMevu{P<_CnNN1}Yeq4v*pxw{{bO%ka*9V!z-RKSLn`bbPeaVF-Mzk@Em;#xQuT@E_ z42Z|oI|bm#az%XR(0h*UH#ZUUe?OL}2{R3Ct*k6TG@_*zg+jk?lvQ+}SO%?&gNLS+ zND~2~x@t;bg_nA2a8QDil;Y5eNklDQ!dQEAvqU6>z(|rWVju>GAKt%=x{)PQ@~Wgc z0(5rvspS@-o@<=F_XIVG-#X6N5Uq2=&_kiD)a9wnf}P8OLUJ-YgrN<&DQ}_%f;ku~ zo3^v53zrIR(&dySK-foMO^BhaG-w5H4LzxsE*v;b&Jm5D^e4T!gPZGw*_`^Vi!9XK z3iJ4Qrd!_zBx>RKF}jm0>fJ9u(7@ky=CHm*j_%NMB{yPVWHtE{9PH^!g9W-iYjqO((r{6r7E6x?_XWd9dL{0lv+pxViFW3ZL zmLB#g8S-NP6LW1=!CVbYusjMuTzb6J0`Uq5>(w4n%XB}bn5-F$|WJLkP_>%m&>!@P}zTOD!Tt?$EQsbN1 z=#)TlN>ozcZs)tGPmQ`*v!OuW(sGQ{cC4S^5Q|MPs=8@GBj1a{mAK1l3xMZSyzSvgNGNWeBJSis&TJu6nClJdv zvZ+664O|XWV#cl(bol8yEfdGZbkL&0()dGRgGBD^HnOBLhOQl^F4Wg+^R&SbC?V~& zJBFPAeBfHBMJ8uZq`XZvoGt#i-r2%p09+cNsj&{H(?_6uM$}VsFMULWoHTUjhnSQW zzy5~~2>iym>i`WUW%)PEGlN6?SE{pdW&Hi`R}xG9`tI0A+r@eL(vT!K2bKFxEn#)7 zGT8EQ+_>cILfnrsaB>duNzEUeHO{&k!e^h>sA2;&P18Qtv$~3U=y3*D#H!+mg-qCk zyymc$pB-x|(PxLlntV;Pf%s7vKeDA9=PZj??10r50p4o#Kr0L-NaA^*{|Xx~?CIdO z;unnPO_pRCBhr$ld;z^OLec}m0zyP5@KGCKPJ9US7Jy0}%|$;^Tvwc{uby@5d{W8l z+dI{%8C&$$2@Z6%&cA1A?h%OS?~Ful4G8irEIDSu=d0@uy!UNA`mwgGDpH#hSu&-* zR01*}EbugS*L2SmLUxcR^bd?BwnKUQodorPNf!-ebEFcc+U-%H%H>{IrtaF)aLCc& zm=(jyu!Ww2dAYEq!Obbdk!w0HL0^eO~wBSY%Z2KNKdCFEwz`VnUvPFyzqVxjOU9UJ+K~{ z(+sm*7@z3uoK|=Dv#<9sHd8-*J0(^I)6KKWvf>ladAntNgQ`N^(9ZRkqSe3*S{0_= zuFfdp1vrJKx`L?%_AHO{e|+{;t6jy;RZ9||)7yJXoNM&=9+}Hf@_KhoacO(B1Gmow z0cA|s+252&hAU(m8B>tUX9y&Ue0lTUay-zfXaltqkqjnTg?IC_Vp(~G(ynq;_{|x< znyg}NZ4C9pcfIaUI!`v!;FdZ;HaEC!VL^A3Vd=fgF}W+)DC(!rK11s)Gqwj=bkGHh0xlNxS+`gs*7D&Z{#CMM5YX+{693zLr z5WxgqCkLnA-zE#5aSc)I?zp2zYJZXLh~EATDt|(vpgqMg(gNNDpkxw3OR)# zzJN=;5ehB9U=!d~9Lfm>i9f;qjIWpT^F-?A9``q9zaR|0zOK z9gqe)yxxYZA(lnksN>XBqFRyPsFCYhK5>opOsGd+cz}@Svyx59(1yW6aOs%&Jxc*H zmjixKx(J<}O5@e0h?IK)`IW*H|2zLJO(vTLt^SK|P%f*o!ME!jz_Rdt zkfSsk@Q~d+6QB6BrntDZTEYQjH%>P06*k_u97d$T4IEfU4OoR1d8xd3msL`tfYt=m z?DHkQ$jZSt&IAlIVj}Zh+nl+*Rt|Vp6>HWx?S;Z3MTx?;(<&)bma6RZ4}6xTXLA`4 z`X#eq_-Fd&&MIWX&p6hsb%J5RRlVoPa=5c{$YC03oI7T8X@(oy2W@f5)WnEY0Mn7Y zzjQ?b1d;v>HxlFP{$sKNrG5xX)%IZq1A5kf8udD6}`u%M0`zngxMO*Y?RC z-9X{%#{?Oy!Ly5vucA}bv~7r_67Le>#A6zmEO>#qHPMY0c?BxyG}E#1AT$l1$j)Kr z78;qxd=d3S(7GdvXHSRLqrFY)_)I%?_U%2bnX+H1Rkd{-4c}KKd#Gwpbyrhmfl!#o z=NU@;EzSwe9KKo1t(ew8m@CeCsNF@E|M3qPUWYDUhU^8&WD^n*Pm_u2lnv_&K_#+s z2WpFA9vNyjE)Q1wVkU04I^PjH+1LR9hLW^YG2~TYhx0gcCQ)lBv)$^c;XOfz)-Sm-cUr1OB=TURdYRx(_cq6)=I@kM$tDh;o}Tt}azKCBDRo zE+VL(wXP1xhC>_s^G-D644$43^m6R}qdnB!xOjIzIzSCHLL#A@K(A62(;^XM@V5S8 zXgvcqXZ=6lrEVci4b(swwdRQnC55tLbf3>^4OfVHCb7I`f_;s!e(mgh4j4=Qv_a|? z|Lb1rfMaYG@g(*06Z)x#msntieJ#W`5x|HVuAl~Gh-90=YbT4FFS1)Zf*58tt)Uws9G!)4Up@cc&sGEje{7UNkr zZ@!ry45FK$wWOv3LSjyhPlj|+u}T?n5<+%C4Nt&MG!WMk$V-QoYvW>f_if8yY$m;&6s@*fu2ME)(UL^2R_2}7Wt<$HC&&6;GYwtkW6{;j# z4aZ7b1y|Lp|iO zq3ypzPf&FaH1kaU?t`e*J z%h>tnO!{z*G7kXP?pARoKPt$SmZ)lDCN?C5BQ?Zd6MsaXQ5s_{np|3VvPP1*Dam^5_uNIGqrA|QtgN3RH`%?mA4pVHk&+O4v5}cd4_5gH?xj< zL2imv%b~YKQsD;?Gt*gzksZTDvq}&!OoiMDXzSrU!?N_$(_@$9k^qjFq1uT*PM8!u&U~0xhP9m zD9EDTFA=DiWu)@3A+If-Y0PYD^R$Yy1z}+(QJT>(*38b}np;BGjINtbL=cDRTr__M z@z2E1cnFrJ22C%2*xMDavWoCt@^j1mt=V<$HrQ1uFTZB8A8Hs6p<-!9u~aH6=ZK+7 zFOwGS$d{EAON${*h#uqXD^)_ZkGfZx8}`b9en?{XeQf24IKV+oFgbj1V=#G0GMyu* z5fsIM`NvaCu-D%W8@u9PjAZKi!FIw{r>D~~QzGa}eI9Xbl5xQGu76T+At-}7F4p+N zHEfdhdC{R}4g^a#<6x<0Hv~()+WtERaIiFSXMbbnCSqdZ4E3Q~Q^u?2+EAWTZQ*!0 z`THsrxy&k-euu*tl(;3eA48Nt0TrIAwu}(7^Q#~&)L4@f%5f-)3ln23i>hT6b8IA8 zR)60U6A2!(X8Wea@7A2G9hgXmNifvj8J$uW7+1u`VG=j5dQvr-=RtxD^HhV@I9;aD zHE7gY;9Sr*Y8Be}m%7Y)O|B+{P5@DP(?2y@D9{1&2s8qdiw@)zw&i3i-5%;?nN#Q0 zx-!rgcCkv#;OqG$Pb3AEV7m6yaLPn6su?c^&dL-l-bo8FQkP>wKn1lE=ICO0ifPLKM zS4@HH%vs~-*E~Ws6`2u}fY1|q%CZA4loN{;-QF^8obAGT{2QqS_`tSuY;lWL?*^H~ z(7`Jt<}*k;6#2A*#GD50U{7F9$+Gk{htJr8;%g7Y6Qe>*x+pzTqy;Gh^j4~vnL-_o zgcvxt0^b2T7XB0XubkxSq0J(4#?bMX2~FZNA^MqO3GtuMs;D$0v&Bb>fp){f5pt*w zXO_EE>=u={kRmKKimSvqhWh$j0=b=YoS1fP>`im(3YP6{V#ws|#+`%6mos&q6Rfvu z!Av8yJVe+MyY8(bR#(4Mw6FAVQTMmm-~|(+Tyb zxXI53S1qu0aly8R^7k*0!2C4t_WoGCq};&*q*19&l#AUJbUqk7<=t`h2G29w_P^}e zi?lD@=%v_&hM=rSR=?6}YJ@SR4H`{dINPT22Xw@DfxH~2g^#^AaYfL)OW1p^0>>FS z9dq9Lxna*{H;i~i&(D~7X#C+n0n|<%U@B8-J(|-TcL_>)T@+oT9N}Jr1VbAnZ z`%FCx9L41Wvx^|iPwGaT-%IO8JVbab^ps74#?d998`q7w@xSXwb!uCZRTCJAn9A|t zvfK4K5#QKk+7tFI>FSU!IwcM^h#okCOH#1c^pDcA3IjyxdOW)Mzv|0ABAB>bXE%mq z4r$O@km<0A3Kel*J`4#4uCX%rV_}g(>9;YYoIEd&$4dC|c#Ka%A)-nov;YYCNSq<# zME0zmp?#^g;&2bNVs-8TW~W!EK+R3>%IZa?Toz>Y40`_CHFx}1_1RLHXHZpT0`D0r z0N=wF8bODJ zoJP>mK4l6)2S-5LBfQ^OX+qS8ab>ido{CJa`}+6!Dp%+JUO^@sz;r$U)8+c6ZWs^! zp|kdNxl~ji)*>7S)#o3dC9U&GBGnW-t!F1ILr5dCKH?7J6-UFyJzBfC84I_O5v9sS4_Y z3q?rvFJA%)#$7JICN?z;XJ@dLZ-VC9Ve69i&#^YeA0wT7SU)870#>2;;zLNB>idJQ z;|+uFXS-5PDeZKI$q7SeuM(`p&v=$%5uP({CYB|(7AY`%Xf>dKk1)B|H+ zy~}!yn?oTU)U{q9uEY{=gwV{WD3kByDlehGCq5~RL>{g$xpEXd&Kdh>5whZf4y3Pk%3btpY+JQ5xSk1z9XIEmsooF)5 zUghIuv3zUinjQ*PymE}0!RtOU`)rU=SU0X1I<^IRAxm9gsOfJly`d1MA{Rd~*zp_sslR)&r!MjVW`tEeIN>Fis5q0O<7Js=lairtqd;2l%x&1@p~t`enp#ya zwpuU*)C>uk@zLm&aJZwglDOtELXsEwl32Fjz}JWrapm)fLmgd_$%>Fu^6Xv}UuRkQV&NRcc3a z=UvVRx0fwkP|T7`$-?Pfh3M?nW5?dTY5|@*}gwhTX6N@Z91K4IP(g4!W9q|d+I0}Q0^ze=m7Cn4!w4MNe z0Y;tu0Y^S>1Of|?g?b-eM}UTTf@S>ft5=b=WA95ZB{tw0nHA^(s%h>ozo4NZx7Yia z+qQOZBMB!FyK&j4sJix2;NC)c0k@EsPf9ENIlK&xA>fk#4?0P8KIGRd84J8S?07%S zSG_lJ0iADc-P+Pp2}I(W!NH0T?ttIkFLyOnerOLli38uAkT-0aV}`lxtlSyP--V>F zocbDV)d)>uoj4!esdX2NI9k5US*tJd9^?1lT82ls7w&|{D?4BU9!pgLvd6#-1nhT$ zcTPeH1*$Mh2uW0_tv}5z98TC{-MrHsYRq}-|_sT9&OY3NtTdh%A^+X z`${3F@HUNBOWNKt0OUh9IRMXtkq4tmcHmj?g(S`RJcrvZQ-&6gh{E4Y8&R1Hy^kSO zXg@IRXf{8)8e_Z`U0R<(y{o92x^22h$Cnm$dsJ3vD^^rNL#la}*}G=I zVAaoA^Mz1olT1D|o0BQ*+&Mu+{2U6AqK~LczxVSpRcyy=sO)NB-RpPl^6?GQ`Xdj1 zxHTt?WW0tm=Wg|x-3RZuog&@(aqW4v`4cCgqXhRQ>Z=DFqC9@#X*A|OKz(C^y(E1u zZYsu&2x-`5>J-3}p!a^%!obzSKJajP9mG)AbidsQ-hgHcgpz?3HBt{AjfnFs1ya8> zKR>sl&@nJgTdbWj@CvM2G;Z58;A3oG8y7Ut$kX=ShXIj{m_o5a2m~C;PyrBd6x2zC zGPX!1Wm9LPh%L{rE$13VrB%5S=6gYgK*$bp#C&397%908=k7V~GgcnH>oi3;bg>p= zwP|cKx{2Ukq5kry3%ELq&s{rrNBx`i_0XoV@!_TQBDsiwS&w3i7(h;3aqp{lBJR{D zA3eLTQmElnY(H_~!TJ8Z+sawxTlTlEC5xVlkDvLn>B zFj_G53h@FgmJ=IUEa@<`cbNYVXWs$dW_7*K{bcREm$jEIZ(Fh?ThrF`jCZ`U>}+T6 zMFJ#bK?n&MgfPR%V((R2XepE(+R{OxlhQKEuh7zAef-b;B-u`!;r_#;CK#uWzx&;L z?t9+zp7#U_`g_q)g8c*Xv&_Su`R){mUa*8Mx0Q3Ry&XotP2r_0VI*xP+nA{6KfiKr zff7+}KQJtK&sX9*I7ll%1>`TTkMWIGtFTsRGU;2KRf`9-rJBA)5Apd$-1vrW5b`xI zt7k{hmm*SzIML|$5*)pr?eutyx!|}<RL=npPO(BxpIDZ-RydS!AOVPTcd>rSuxw!zYdlY zH*w<`Ib6Uf*s!M*Jd2{ZPb-p*3;;H=LeX4&#=sTl6+i@15j>~eIzM(0Ln)!Xus{+K zI~XEnJ!YFKUJ^|C{j;s(&Vhc1M9YD2AQW zSLj_c*HEk5-a3s(t7kQyeejN;2_nY>57Br2^sco|Y{X<)c<`0C zODr9|(+jE`y#w9o5SUsZC9B~yEFc`C`|pKgWNd4<`K{eu=oT91`{Wl-R`YF~;*+DN zvgaW)Fd9qz3ZONn1B7c+*jH2w0gPvuNSb7Zyii&j3brEHdqtBEhj;B$C-I(>u}O^H0#y^ng*OsSmQHdC6{@!c$J;`81_A0pG@hk?UlCTf75y1r80l+1Z&x zhD|7Nrx1Sc@EN-m;NcVs50nY<+lS1YdRWgD?o1pvUP8~1Ni$(j|LXHb3EU2TnwVAI z#OJf$mk2BMEnS5yE!)}j@PI_J_DdDf!dX$G#A zscmdA?V0jgWf$TUAVfXDmW%^3ZkU<{3z3n;PQEy3p792$v6GQKF_*uSXfqq|T_G2W ztXg$D_+PNgrbz@cCSNMx(aGO8>1M)|4mGE?*Amfti#Q2(VYLt?$=gZAJYlUc6<3Ez53TuT=HHZs~iX<7V zQCKlQhc*7g=a-2FFxKGBys=v_kRX0Mng+id7x8!sDYE#&cl6}_B(qu_j7AM1Lo5+N zHz5p=0AE;n&U?RmEPM1{11v!YTrn{QQY8~i{Dbl&rzs!n0n0ebU+_GXkYe-jCENH0-0B$zx7t*zfGb(Im#2_(hn z;doH*I|}F_uUbE?(-yLK!^i=G{ThJ7YK*M_96kaMUkZmkH=GDRycYz!aMUqK2X2VU zA1_V`<18oFPwmezCyc*4q{mDE(d$jZW~Y!bU-)tFPV5_SNgx z(QX`Fh1weojVVLI0RB(0lz!x%kM`$@IlJFGGDP+j_CIy%7GGtk$fivph@HllmH?{;KWk|CRXBX&kxl|Mja$~uAN^|bp}a(}7sk^1%_Y+y__WCFGi@>Z}O#BXuJal3GP=Adx4 z{F0rpnz``v-1r3-;@PxE69SvV0if4rGf#I`FP)()(+n>C9ypcpr(N3*ptpTvBX1S@ zkhCI|Br>}WI(F#sdG&Hdl4A%jY-NaK?B?Mb4f79#A^p3H-BvBrtO09R8-QEZ4*=YH z1r|=pS@M)6_F>PF6-K543R+uF4na!%Sk0C#8WOIymZxys(Eqh&E`NMhO$^` zhGns_%zcHQA_x02dLd|}zrwM_H`G&@pH~v*^hZD$r9MgV&GjJSQ*f$+Mh+>2*0ASq zO;EW&5a$AYg`SmjbS3$-SG~`?5 z@gW57cp}WFx%4gVmVm9Z9m9OUCr^98UZePQ`eb(dX2f(Cc}To{Cp{!aX_tTb=s9pG z;j0LJ`uAvdL&K*jo;6y7B^lKrcu3LYJ?vRM2PT2eS@GlZ0Sir(AU{f?!=umB>c~^! z9oMX`U`j;vl94s*ydO{A$Sv&vPP#hqL!Jlk@erO9wD+iu47TvVDPr|&JHBp#beTwG zL8g<%8dx1eQD;{^uf&&$#Fq(aD2ksjSR+2JnKtYJGd}Ndn<`=KpAT-!EZ4m5^m5#G zvn$Cr*{q@M=)QZGCKUK z$urceK1;j*yyNTzUH_DhGrq0HDxX=k2atnIa9p4YR6y?+p*r$=hv7&UIK)Ab-Dc@6 zbd3yXi?#iWe#Ga&k>1e{P`h(e6YpuX9&E6BYTY~b)q^4{eEoVbFF&3j&lm^bhS7OT z=n@6TTP372m5Bh9sLD?@n`1S$X~{YdY{~y&x1I})0=+<>Wajl z^&A@crf2K+tKE2-K;+ir@oa{l32J!5<6#?4sk%+nC`5k)l*OkAx9Yk)-yMI+f)=&8)5Rb-> zMbY!*U@=X8%e&XxI2skxwD#$1T!(&HiszMhzPz9O-wwpXv=h`;z<>%{fni6u%z>cb z2`m79<#;hJpO9@yrOu&$rO2ZRGkS!a2EC+H-Q~38=tAOWWF@+uT(vEM_Wv(i8LRd) z-LWD{Er;<%0_Rou6^<7Osh=Gu4^y~y0hQp*OntW--9trampCvx3SK45#8623)0(oi z*Igfk9UIuTY4PZ%lU^Rg>e)C}FaI$dXMWp`L8g}9xw(ml?2Yok`eBYqG;5Vlg5HTc z=RLC1fjxvu552Mi-Qkz$6e27RWQgS27ve~f+4Cmfk(0pDxb)3!R=>5g4JVhGYb=wU z?-*^o?Z^#&zMkv7cJChS3{nJ?==t|`IprNYh5H(Bdwiu`Bmz=77?qQIE|P0j<7d{* zTK3xcq5B2oAzyDsyUBHbRyWOXfrYDUR*N!W?3hu)RkMrxTUT@V)dEXFp)4gUEHq`f zsflNu=7#6C1gxFYE{x|x(fM)o$Fh;R1wt#&x^PvMdttwUZx>qz=92sK1VxKhEUyq% ztXMu|h9$uqCGLB`#y$?J#)gGBU=R+mpQ>s);DrMlgI#NH2zU|c}$7EmC-fNBcSgHyDrwb|HUgy`Hf zT^g8s{NrPUkagg_8+)tBGGF_XkKW<;_>MpJ%zrYSQXo(YG!e^MM!!XU&CTdFnRm;Y z5@qq)ErZb&)9Z`5fKD}$lHI%C`sQ7Dxn`<&XClp1 z34{Xl?Od8>!aq56rDw1HvFi(P0Hh^EUrJW)s#HW3m6c`hHVXoa?p}%cr6osZyUCZT zg4b=DYxWt3)?WvXH|b}{hsOpe(?$6zXhUP`G6R%p^_=DhAHFN3t37`9)Eo3&?;Kua zg)wSO-HhGed$z*R+B4nhDd_8KL+cXH#E2Rgu)M3z*xozc#^CevO7VbY8#Q1VdzU{& z%LfDw&d_6;;7k^UcPV~5I6h}$T!wBZCf1QCGXvC{GPk#x66Urx6iOMF-v?Qch_n0L zvH9dQ=ZqJio4u;(y>C`wQXM`I6L*8jSTOXEw0hI3VpY+qjotF;TiVLGVjCzDlS_wP zlHv-Ns>T$HpihQ|?wm6xL|zSh2Xm<7zC@*zFlda|07(yY@IncSDnQ`jb>$O>-hbo~TQWJl_Cz#{;G9aZyIr)dGj_ z%U;$%k3qT5g#JP*(W6pPg??I(lP(r9ZB6wu^0~6Yu10l*s<8_tcmlURW(-IQ9l~^j zNTq7^!AaJ;3s_us`jJWZp7RnZC@nwsT^#M9+Z^plElVV(tLoy0qh+c`i0yMu<XU#1=WS^WX3kKNYym+foQfwz? zU4Rz_E-S=OzkQ$|?Y|)P!IlrXmN5+a3ondK4tQXUfGAh}T%pEHK?4OSwDz>l}v`JmaG zROq?{zM>^Rs7M^8YIJK(Eb{Zk;C@eli9HRpvb?@04u5aOd(RxM2KRxAJ!f8CHt8^3 z3R}Sr!r>`X3S)wp;R4nJ=Yg;@vN>N)b})tga*9x;Ki!5}$j2(1Rk6VU1IQO}rmsc& zn?{qQVe)fdDyDGa>3MOQkhkuGC!#P3h7mmVlV6c6^ca~U-k9{5m*lqaZG{JGOyst( zDg&2#r-+uJ(KDmXlsLwCu3Tp)c!FfRHw$n&l-u(nGoZYp%7uN}a&_+lyytnzu{}RX z*wVj7yHmE?uA@ujtgSbn%^x~22g_aO9vn8@U9Rzz3aa>}?iav`RZ-p4u-*z8+3(JSgM>O7UsIM`vwdrFLM89 ziSI0`DMU5ot49(->li^;STT3Hx>(aS_xqS2Y}wY!*6`cbHSq4hJpwTJcCRJQQkB~2 zN^rz=%9&de5+kdiqL>3s6$H;NqRWd47^Whao?2WfLv~luy!pii#q;M(A{p{r+IZ6B zH#Ih(n`yw7eg3Rh03^fN?@m5Jei_|cPrett<<b9H6D&jn3>-T*8e-e;LiJHw%7T5kMPTso?$24~`8eDDCX79cJ_u{OY>(gdx0+~<~Lu{$I|lKHl(<#(H~OenV1Q8YvIoWiNqw1G_T6k(G4-P zw+9`;%piVN5CFil3e!>0zFoH|j+VrTiqU5Q-(}<;8R=P$4bC*qOko>f!-#Qn4UBMd z8E4_d6C%WUP>Bol594{z*a<=AhK5FPX9?T!%rASejE#OkhIV3=B7w)MPd*8d^x(=i zTnRUwe-f1GGMFX>PH--!P)IM^dT=;?WAsoo`@V8TN-3C)WDMSb8<`6~^OXY~9yx&E zLv`WpB5Kn=BJaY%?aqYIQRsvYY)65$ugJY@2E4L?B^2M;zJpRPY-;AehlQ2!c?caN z=SkzlgAmZz4W~ekWA+}t{{$p)#%UckzYQubdnUdv^3=ni(iHyWC$aRc05I{3%JfNO zwp=B!e06{VW?r>uD%%c{JPIo1dIdpUjbGPTdJNle9C||LoT<`cTngxZ(%bAPE}Pw{ zE?2eBhI3oQOKqAC__}pfi~}xPsv-+J#xgm{FO!;1FH@yvJNzXGZ6@bPvcwH53#n1AE)tN3PFK$Op(^uGC3=8g`CeBC|xeS@9_l3c83Ay5B8R=IL% zv7&hCYV-+z(}#@=p)jv>%l`S`c{h00Pv`UVymupA`c8wH!(s@F@Q7>ZIU1P>QfnI2`6GBI9jhla}w2hoKeQa<71v z>K1ua94>~5WULb3(G=HIx3q&Umb2Ox`tzABlJF21iHRA>`SsFC%Y`|Ciyx0)#!y}K z9CzMRA-aH{S9|(;@{yX&SFc}Mf^Uw3IZIY8ckS*wyc|j>3XWsT$+_9}$@Cawgr%Yy z3|+ACCRmB#_%$8_@GgT*1FLamK!qMhACYDoE{T1SN&y$pGSkffi^HnH<^$^HzEZw{ zQ`*<8NnbZPmQ>8|)mEsd&wJr~gh`xC+@C=2L*o5=$+W|poY2w1v@G8htGjlYg<}>J zZaR=0z3^Ujn>#y!k?NUruVx=V11B!}_?UKpSN{L|_-C<;jttjRV33W{pWiv(hacZN zw{5?=xxY+c6&tN&+rA0kDiL7s>Em1<98g};>4D4mX$Xoqq|mG zITm5jw!@8+AK%o`VGclI3k=eQrG-)mIk{?YX0WFTvM}I~s7fI`JdXbeZZS9fgBRnX zxfd07N^#vbpVm71DB1#ULGKeM)9u7?`ks+YJvXUO#Pu;fXmFYm#^v|_W?!C=wewwI zGJ0(r|NhhFqNcaMBnUt9_;->zq$1z)zCyknI3_DyFw3sC&Yo8%Ze5ymutgR=!{DDa zP%U-W>il|tHN3(CFhQRPaxiy+n@+$Mj(UpArq&ljG#N&N+VPmt$c5GH?;z*^ttS-> zBn7C1e4j#zHemotL;6-HuoCJLRo5IqiAB7IO_&R8T@~kimJn(g28W3$#zW!3R##eR zXWELb%)(Of$^cz%RMjetGPFFRD$vnmdHHto=arU*khEG7NFs5vV$aiS@$kZRPj1hK zgOgA@vUv~PcMr*}GJVQm#Gvp~o`enUX83}U4d5JcYw6X-fC~&P> z;K;WPEh&(ejm$5U7AzP+%kWG-X#Vw8GlY+kZ+$y}@p;#m$N`Ic{sxhQ853@9ufcZY zxh;ZknTu`b%`fIRH@}ro*w{@h3)WMFQxfIYyr`EO9DoO^;3S}Ua4FIQsL&f!! z%%cTC1l&oDyw4^~nJMnJOKW_fPY#6Lnb~bu4vGY?QR=R@GgKNBR`uaYi+UyAN=?EdER`P>dC2UO&G;(Tlz#k(2PIUqf}j`yF`B z{@^0`7>W=r+2YFuMdkYv>5c^YFbN6^I+36LOLhljl&|ARALC;@c@wtwFM)dIzKVG8{JR#p;>@G(ND?Zjm4|3i7@+~ zNJQiDj}o+!fL0)&arOK>g;nc}xlNgHFhMVy=gLntngV8^^ADV#2R%)GT6d5<44DvH ztrtd=MPl0U=*JwQ;Q4=SEDHlY8VD)d?)(&v0;Yt2lx3s1P+Y)zKP(^_xN08u?ZccD zz6|h3ic@B28>fzk96}>wvU*zL$(e)a3Nu#*;H5oxQ1NrqtP&j)g*QdL#NckzlUoE6&YGCoWwbf-VSW701! z*nJfEV{T$Y59r2Pme+G=`St0Cqv${s?MdBt`rZRRhVQ_MllLY>GWt34caO~iLu@!i zNC-?d0rb$|<4E)7)h1bGh0HFmbd&F!71eHq9R}heT;#vBU>6tpbAnxJ7d}FJ=R95m zXPk{NUV93=Fqe~IsB+Ot;CaX&EDs9DE-tKTI4^m7oC+n>#Wih3jQs*?B_ExI-XqJ- zrc&LSwz*g$;hEQ=ikm%?bJUG}^3#$Gr09H^c1HK2LEvOr&)epxU zWFM{By$n^ljzbFk88?NW|JYNJ`P@uRMoGf2*TB>IKpY)S@+4x9156$AoowFd2N%ZRO9Fl3 zwdfDeaMF5WC`xWXZ;;oh4fsi*5-32Eg6$;{eKsw8a%^Yl;4tE*I_!qH6rLKtaePnV zN)oOqQMDz!AMk<9%?@H@DNzL;9mLFDYZ=3`%ZE2&Zz}Z%pYP_|k~HW=IJlj>AqHJS z>;zjPW}#=v2)ZvpWAiv%rHJoTAvQ~HWQkY|Hk0;GUw+5jYCL7yJ=C85$>dclpVy-< z({vAA0C2ImfL2l?F{;=+3y-5Vcc*8e=*VRn=5IyQFTBazruH^-(9+d42>`Px8^L$r`p2H|a*$I@(0gLyfYPbL zR>Gkj+a>0}AmuSNC3ylNLNmyF?C4A*`Drrdzx~l()OGr{5UTf^!!BNgR~bCrA&0VD zNNhFf({E$W;b;PDczz3YbcCHkS&uV8UP`}RQ)l67us=9yw>5xE42*@uWA z(A115L%^Ybt}mQDXtUa8&H0nWzw7F9iEUu+?E9dk%x*Yy_V!>-nP8aKY4_WDy3ir4 zOu!8l8D#<-Fx=akp;2--dnKrBY9RVgF%030FoT9LB7#qba{#xjq!9Q zldzU=Flgh>iupaNQdQU7J8&H@w6qPno|5xwSqWlh`tAVwIk}|%7LVr!k7r+uD-<~N zh|Olmbdcs}`ytLA&-Fu8S)d=H#s;NwXdeJl>=~cH%q@P9JoRc6JsTPQ1+8)PRay;v zrjPzf33Yh}N2O-*DVp?Apw1hp;!7qAvOskYzzp63_<`_0myj%9L_>+z5KZYP?!X=f z_+vx68oo^cdV^PcED3#5PH9N&#A06W>S0}}ZqBNA0pbX{axD!4Zk(7Fe=$xZM$Zv{ zPOFI{nGFqelF@e<`W6IkLwhICNj;rtZ-!0+O#rv}EY%T%q1m`D5ce=^c$1F6&#=&1(s!z9@{W!|4y7Ek{>P8&&oqatU4!OcA| z0(i<5LcARxq%5kL5bN>O7j(ks(ap@ z=U1a2mii2JhFVp!0LWT%skwK6U}{XQjXJ%)Y1)(M)~~;RaA^T33|OW)yPo*t_31k_ z=rALU`nmzDh2fI=plx=sBuwa%pb*Iz^lfY8r}j| z&QZ`m8f4KjVD>oW!IO=Rub^{eX$-r8u0W5Hm1NuGczy})mnP#c`7zuXLVD=g{V*_l zB=N5V@jw!W@}6J&xby|chPfRNLrh9gVhT;x0jmZI#od{hG%5ESGqc4n9}^f5t#h^0 zY{>_vMvZ-q%0@wIVQg+PCX7wZl+@zHFZa+SoJYRBgIr+W1pGv4(_4Qd-=`|Z2OApf z0rTME6&?u1)yo(3Jn7tei1Ih_tXMo?L1J(H$>(02jyUx0XCFI;9N{xE*XkvO>cWv# z?eg|DO~sI$3OIqajUIVTNFOpr{6uN^RdVIOG|uLTTLMJBu%xEmQqmCu12iRDTp4aG z__kW86tQU_l0;mg4Bj?I=sEjaJf9AGX=Z3UTt3gf=W)`GS|bV~fB=Cq8@T+jS5iaf z6}XXAfi{xY*CdsZ&MLZ4$SiH}qU-C*w(N?~M9kpTOSUGHU?E44b(Mue zo|!8yEbmHd2>@O)2K2h!fnz&_JXWQ(uisu{ADjU#OpKSv&z|!^$SZm9y9bajFD;=K zBs1(%1V_LO*&EK`r$e9iQp)BPv$mPyC(WG;6trvrxw5Dw_cyK_ObAs>SPF9oWioc6 zvq*5SPf=iG1zCDWsbjfMUNKaJym3gh6dDzs$IBylR$-plYM|#EwRDSJ_;SdQGC(cQ zxwTv$^oXlO)q%8b%Atl9BV&!bHq0-Ck=6`b|Kg4HNTSjw>= z(LWj`N?#Rp(FaooX;mq4v$=A_q1VP!VhlP-EwnLJT-+0nwgwd!kM!8`DH)ns4;SWyA;R!tWYPtu1g? zTU$^=%Czc%-|nM{*-w0T57}$q{LRndtiJPq3mO}Lo06BvLee6#GoUWxggGV15&C%u zH3d_FH8R&KIFSV-tES02)-@M%;6$?h>s!3?nxG+Q4A&5|VNT3rN@GYNSH+N89aibo zby+MvkuJ7PypeLp4nM~D(ZjT1X77zF73p|6E`RUtB?{9Y45A0fUbuG^eqHyxY6e)Z zR}Xg{RyXyP;%PsneNCDd<3bM@5i2>43bJu>R4yCt1{%3@=tW5CxRg+x(rKXEVyHTX z5b((FN}3ODD8w|ndC87&c-x4XDN}F?H|$HG$GNi}4bX)Gn(yAGN%7j$)@}loXU9b_ zwG$vn#z-NDAv49(@Ki7)-YIyOCl5b>Lk%{#=3`cN( zEG{NZxz8M@s8j|9=~|8z$;l63OJo%q)ENQH93(CxL;!hyez|5~5p*9+B>fVEC;j^0 z8XBZ2RdqFtc6XKisNB&SRa7XVt^cX9cQ&blipGwzWYOj$T?`n3(0*|B#s<$_uP)CM ziC81wKRh{YcUgP7FWQvQ82j0Cc_vdbqS0&OsUwx@K&`4)9S)OkIE_uo{PO(9R`iOx zY5&GzCM0DAD|al^_TRI;l%-HGotuxsIl?IQ4Jz&8L(Rzo5?|a;nUg%h66JgbDJK(( zYzN&&mUhQsSV^f5r&fg`wly`asm=G5@}`Uxq=5U8Zf6znojJ_{WSWjFv<{J^yk8Lv)! z9Zi3CvE>AKjBKS9Pq z;iM_7*PX!K?@<$h^ed0UM7xT3=)rf_<$-Kv&71c^lB963D{8CwP-%q`a6-DGteEMj ztg$4U61}q=FbrFor*d82Cy?r z@6J9cNfuWvpJOUB%wC54A)-l9ws^=cwa*(NcL}OiFNGr6l2w(0>J6)k@yVk1!$A#V+b3I6(9 zdqHk4qsyAN&wsvH>h^)*f2{}Z7CfmScf>OY$^wTRd%;o3ZUhz#A9I|^;l-mw#uILk zY}XUDbEzS*m;Z*((a*>tJyxrnNTt#{(H8Q$AH`K(uQH_cxSJiGC9_PG#{Pxxf;pRN z$z2Pe8aHroSVrzc`^c4VCRF|!07Nz3X@#N9BX*Z{!Mb+^0;hV_$;EUDXZEp$3iN0a zolH1KU!eIycL*y+<`t;y!;3zzfHI@TrS-VqBUo#1X_rH$BZzOAO%8?c7ea>QR27V@ z__j(F3LB~ok;63NS(zH|?CCMfjP6ZlxMJYp7j01jl@H=Ac8WhXi|*6i}@g(~E*}0kw8lKxR9Ls`Oh3Y#7b{!3YrGk->nO z$*@I+<9SfCiw{Mtg8R@mDB*lT`qWV<_yUn25lUeSb18bI9;{fPp%;vh#fZfasTh3t zacQIAv3g-48B1(Sz)$2c>?e}k&^YR#*_-p9a^yjibqA{ulwY(>kY(&zTqSrc+=ZZp3;@ zHPMoO%!~d;ir;N$C~B9Ll`2B=V*8W9d!Fh;(;vAjf}(y)v_>2ed86sFDF;xRB$^Jz zP%!orvV*2jlr5NLl{tnMd<^1SdYH~-<^9xP@98qzEIs{&QxBRsi5*@YT$GSQ{)3&Z zs-S9?r4Yvj6qpmu6e;jIzQR`fGaj7E#4U-q9$17vCkIo%#>I*B-YGw`Jwb%Yml98+ z%J}GCX|BKghx~3b(z`VMlDS|rp@|Jj{fj(arrLrZOAH@c*41#Tk7uQx>I?i-mdE~% zo2$|v{tpjFE1@3iWAgL=Lx29@gBW=ydiZ~Nbr^|eh?Mh_mH(-fEyc>gta`8rCCFzd znjZB#tC!Exfzos7tJ(fS+)oSrg`MEQ|Ba4trQf^_?9;x0&%HR`o0O*HxecvtxFfy; z-Ew}5^oe-7Ifky^zyFPW`y!-;N>Fo?A#;y|?~o|S8J15a`@(D)byY*0%n_@Uz5_xl z*gj->4yc6I;>^lqa8#u(@r!8Ss+QnB>4C);;27kEs#3G0&?&8v*ezs71P}C%(bc9x zq9Xkcs!6a#bS+T)TsmSY)X-jH(J@r{O1jx5c(5_g+1r!{6P8lbEEn6yJy^8R-*=&K z^f%;UG)-C9-)WSad-~aOTW6b5W$ftwCN3cNNO=IB7(6yDoYYC2cC>EOvpdW2R07BP z2eN*jlS{K+z?cKz6TEsV>x#2l>i&k`v-c0<;v*Do*&*1{gaTAbo|`C2 zZ!4)0rD{iY-Oj>Ga+W-+_5W7!7 z+Xm%9M!8Rsr-$pwKSkaPe;kRZSS@qC0v;ESi^roD!CazFYEm#HQ$+;1K(esbli zCa(ADt5=og7cJkoaZ%KoxAdNsEgFE8OwGJAvr08}v8c|iizcI4(D*#fKY*4ZJ9&n^c>xNKG~Kl&jD}*<0cRWP$L(!)npI8t#gSu@D>wfuw}FxMpvW0lo4=x z5{PpYNtu?P_|;x8X?f(|can2$o4(F)=3hmlpT=NLP|6J+RYg%Amrd>$@QW=w&d#RG zIK6jo(39)2w`FsMzOGhUDXERreMNrQ8!p`23}arH&D)VPe7CG})nee!7p-Un{=B)E zi}`c^+E%aJ7t{w0z}CG(zK1%4&actaDe_lIa?X^mJ@j>yTpFe6-D{RPp@q0$#nryR z#)W2Kfw*ANYH|~~7V3`A5U)@D9>ljiHZ`8uSA$7A?ENz}*RyPZ!sEx`(QIay1Ry24v-*?)e^Z?&|_q+wSiU?8eCr?|N3+_ za4*nKeil5@W8_(DVhf(wBDVlin6XIV_xJMSvDF&bKg5H@kORv3f<6IIF-w@w6 z&&bmAtgH4lQHU#7iQ_}*$qLKifx;6`OS3kVmkGh+l;&71N`8?PmWs-dCjuDokGK$G}m|GA4C8mnBcisyHg!*DWoc`G^3eXvOsy`hFEv2)FJBW+*< z+%yukG3mD0NGqP-)4n8P;vznu?}0H`A&HZpMs`zUz1%L3G@?#)C#Zgk!VgTSX?8$O zGZT~7O{i)9SKPF>oGB9L6>lbAQYP(wYf6uj9)5Xkzym|!_|lrXkWv|}tC8a71gR(J zui$&MdD5~uX0@TG(CFe>Y+|3-VPglgC-C(P!c!6mfc`1;#$eYqd<1dqK~;?NeYEr7 zpl4%KZe|)-!H#=m7vK)1jd7lVYCJdUwTYslfmUUiqPg!LKHtd>ujpW@d8q{f)*$x4 z7vT{>s3e61`Sv0umTDS#47p8j^OuG5`Rbn}@vKl!cTCGyigmQ2oUMNITNqq-gjsK!4zRk!C_9~10!Dpzgr!Ghx1a<9Vx zj7;ZsA;kI+r1FihptzfT(kcO?M=4!!2*c}`<(Ft!4UZvJwPbAd;J;328YJ9cLy@h% z6C+JXm|x^EN+fwai-4glww5GZHYJz5%UnF8Lu*xc4o*Y!$y-HeFS+K1I%#>C+#@iV z4e0NQl1FZ)%jB$^PSzLM+Epcrw)8DD_2{1q;!K&t2tGe7hn0iYMcCH(%IORRw_{Pr zNK5Sd?)_t3T{B@ed;6e0y7~0me@?$&CG+^yHR{?LbSyAC_$Vi^_u4AGrFYKk8223c zvq4xmMmy4=w~M4OO(|h!Rv-U5c(;F;uLVhd)O0Gfd#NqT+uR7!&r$%_?5nAGWC9mzFXq^ zQF2EVS)zbjY1_zE9s$5E+jyHodFTp&~aqRp;|}~F*%kKV_@=D3R)!tlm^E; z31B5Aas;?S%*-Zw7p8;utX31m<5S}!ug4o>HEIJ_lQwb${gQON8jsISi5#N1#HI#f z@o7|V*CBvF@gn~Xpe$nCKb-{ z!d|wJPHc|HcT)!3{p4))38?{ER_df0Jnx&*H2zTzN0gFJT zE)brpFtC74m0@p6X;4|d3;)-KTH0hhplFIAUQ$o`S-iWx`=5BrjSQ#?lGeN`~Qe!kVfMGo@s*1AUHgg7#k@y zLh6&9vOOutjiu2z$YCr-2c{dtIV#YdmsaCW+wpoVl(EMPwS+qh;TnvT+i7D8B>=*m z_~mXWxjgjkUF2-XhOf>wmqPm!SnWZT2EB_OBs)k;<+hts#KO0y5%;H3BrPSBN<(D? zk7;sq*bHL5r*iA{A%f2cY+X)1KR`&hI!`eaCfQY0BBTr7C97CEzd+?!up}jKTiJlc zFMLkT>PD~J6VQbWK_79#UmD^wgfe!GP{&>^)|Xgi8vLJ6y=8O5s2QJ<(*SRG9lTQq*R z*eY`QEjEp>N@NpN*3{W%7Z*5sov0vkm$Y)l!UDBp;j(6V+p5N5Y{0~>UDGtqSA6$x zwUz~Qh)ghth+imcUs5L#TKN3xnZFf<))X>?qCDF|gE2oA)0y+*i9|VDlh1ea_4#|s z@Sj}pCvwEP%u`aev=k_Ltl2)FEz4x5J&=VggAue_r@~O;YX}DzN=yL1BM3CmKajDs zo)~Gs(i#K02{m1qrJ8N=rrFkA*Y<=DK$j`t1=>kc2?RYiC0I(!HP#J=T2Hf)bwbqo1B zqpVtKQF-1ms)8D`Is$hYR%cFB3Sr+3+_bS^>TEG?xSar_!FvNd~KjBuG}ff z(wgIzrQOA)vpZE~s`i(SmN`k}GZK zZ4Oy=TU4L~LoNdo*iGyWlqazn!JNy&usOvi!)5EY1;FLFX6*uM#U~n?2wbN2cCh`- zG+y8V1sVU^?@mAdRb*M1d?j%6k$rv)t3B84*ryyZyPRocA zU~_xUv#@7E(pW?D!1`M7>?Ox|JTLg?KNr?>G&&u>23)*VA!kW%N>(aMPCvxs!pz9| zjVu+fex`?+I&lITf1n*egqgr6Hg87ZSnNM+Zn?OuN*$IuYzB^w%PZj43`W6pv9`OK zJzrMWzdX$K*4GLc9ANNoY2G%sQAu#TMI)=d(2wLEnMrJnA_)V$y>Aa0VKNBJgeU{k z47ny&+E|k`bY@Xq>mF<=kcnp*-;}XnlsdGAipM< zM}BpvoM&J=cE5J*=4HE58pKv>*oMyAx1f(*5`&Trb0nc{5JEc!YMFk?9M*N5r-H=Y zk5tFFI3wi4OPixN##CEy4FaDrl@=uQdLm&(`^n|tZvPAo56!s&W-WggerzVA`*ai; zjQdt##a8Q@X-Xt<7tAXx(T0Pg-CHaERZN^Xia%VF=B+E#1MjO6sIm0lN2^ zmz^wt`IZeQ=2RBiVwyrxX$4yTzaT$6QR8HmF3T(zHaUxcy+RMB=p#7dPADGY!~jFQ zi`Rxg!H~_Q@xHyx_6971j-p?awpmmk=`0Wc!dAp(nf*MT zkjdtA>7O^y^Mfk~=o((ve2*gi?3C9JIqFgCiWR4pE)9~4&~@Zp+f=N1+oD1N4`!A? zmt-E1$KV9k&)(2~bOZQ(S~=R*Mb{(G|F(z|+fjv3V8^Uu6=b0)JX&rpECzzAGxlzQ zkck~|q4c91TdZ-d;1rf^3sDc#RblKciBja#*VWfs(18T`Yq^yJb;B@8&7s($O!7!kbdt|0k`Psz>|pWau}uz9#q!#A@P;jWSD_T>uf2rO${ z90je@|CC%jM0;Uuixq+Bx(;~zc1SN4Uv+b4i{b16r%O`mQpW}+aQeoDFF1dYxS=y3 zmq36cI{XbxR9`WQW(!7euqnvKWMtA;56)iQE@(=mc~A@DkpC2nj&iZB+NU7|Sp<`( zkx47G1e>KT<+DKq!^%T92e_u73)HC0a<7(+*zX?8(3;?-9R;iSjpp*3Cw13wF!ykY>iNB0y1ByR;+wA6R)G`)L zUUxe3aD>naVC+Tu(N!V7OayZ;pt+PlOdfCgLrD7$k9^U;bMLj)EQvI)a`l!?UNqz% z{TcE4q&RDw)@t&Y+dIIon~JkFe2B9TA$0OVT7LPGk&?v5>f(AKi%rl7z72OOA`Yim zTeiBspl5osj;bm@L}3IjbnWP`!Z}AZytr22G-pEAu^wLB80e*fCEPkt3(f+p9N5Jh zI!nb7(4|0$?%>}uQGz01E*~XmjY0Qydm?aw2d`a4KGh&{gP2^!v6UYSidgALOk0`$jAtfwj&%c2}wvRY!)aG>vlqcxQA`|tNbi%FjARv=b~t>BaH z*I7HJ8I7j)PV(20AMk@W?x<9kU%Q+9xLoEA1oJ(*aLDr(uV?$5s9b2_DW>0qZoc5; z2r2>aIcjkI=ODoX5B+C>K*g?LrzpzdA=CGA3Rq3t-znMwauw`>Pq5G(9_TA?< zD=w3MF`ws4{!Cr8lZ9A{?y2%B6F-Io~iH&^p_RI%1TbMA~!MXS8#o;1L zOl`xH&Qq|Q6H9447uc>?YcsYh=X=FwM#Mfu?JV3@tOj;H3^g)592VQ}ZG`2-VDsX_ zL`JS_JC}7)UEB1rXpke?sZlhQTE@?0lYgq<3Ads(=$_IZ!O2D3|*MdTp99 zS+iK4wfcLKQlpG(7I&u|gl9`69V%Hc%f_(|4qp$PA+vLV2dErGfR_Rv0wjl3I}PXzuK=)IysA9-DBUWDzTwbKXYS zgE`}mT??3@o~m=e*nms2*O{K)?1snw^01ew`ajIIqCx?6G2;9IpN0&D)0s3hBy~vx zD8Z8n{gQh?3n5_dc=OOO*;laX|K4xH7B)8Q{iVk?zT~T6j={__@^xC)8Tc#x4Grnf z!(rXiPeaj${5O(^kIKpx4cV2pp@kuF`-+A_j>yVqn1Vwypnl=kd-XvtF|Yp7x+kpq zczr%s!&10GR~~^$B>zXYpgUjd2qXe-Cd!gi= z)QVuxFd;5NtzTNjkeu&*l9#)!3dZ^b^@0G^CsaTO$sr{1r_)e)p%Hr z$;3ezUK6}OEL_R310cSbgjX-2)B6DF$=lIsvir*fM@-innAjZ{6nPvPZd%mn)O3qO za4f|rnBE2he_5#}gZT5$Jq^m{60U_;6#u4G>oTPvPK55RqN39;U)lP4qO z&t>FS5{|^{WAIqu(3vlGS`oYFhJ_Xm2=nr%uOoV6Y-!CVCr8b+FW*)kMxKpKPqQpICLc*vehp2zdeeH_0>;HR)HsPNmjneOKdaC5!!N;|++I zO$F^{W*{N84aT&a+5Lp~%6T0GQ@B$0#q!jVs~5p}ox8SH-U^d4+M$XqV^uU(kHq*2 zy2hB#6!NLY7@l$HZt&#-!6m3ZYn z1(XP7xd3bvB&QT+w*+Yp*kzc1lEP=w?&>UaEt{ENr5#){uAimm4DCS=C&`cFQgm;E zJaI>gtIOv%a1;vJ1L#|lZ6!kKA1uU^<0fr2q02Tfn4v&HvpI3f5cxQH1X;-sh@X7@ z=s9L!-*siyS&J6LBjj6A^66+6A5N@bVbdKf4#RtI(N$}wvI052|H7Vt3E2&-Lgw6! zm9l{M9OH}%kdyp*PBn(}iuU5FMFWsm^eudv>TeyBzanw7q@-Bx2a~;r0>>YnPIRBW zEr^=DrifP@5LQRXZ{ms=_>?Ny1tB#$N;WUX7E|ejG_YY_o>0P?xy&O<>35Fc9KU&G z(?!&;?(9zK!#ianwfP&Fy|YCp)wgv%Owj1Ga2}IEJZv<#HtDT~mbQK3g6@5 zl02b^>F*&IUPw%o&S;gFDw+oOoli`pD{oAS!rQ9<;?=?6Uq82~`j%>$L(iyX=bS-{)jDG?`iH^{W+Q4{)3g`Qke~nJK0kE6GF(UBLiFS5yY%SAYI@q3 zWz;h`aa_Y9 zP(86cy&v`b^AdY&2q~ZMkY2NZE|D^a*NJzEy!~}N9V<4Y zMx5S~c?UY3zzf{FGE`hL&?GCDHTE9l@d{bKVIYTi^*|2MRFQ=ddFWUO{cQA6T620C zUk0pvNTB8rA%ac*hkUdP%1QKQRQaWE(}!m&I3_{OGoS646GZ|BcGe3!D745eD;%0r zP+d4Y58XyEzEA%3`5K;?UG^{{PQemlTKq>e~vt}KgInz(>e|hS$3zr3RBO2Hcy{aH?U0|w+&sL^E44*AZ zPoPj_YT>vX4s@yl=2~F(DTC_ix$FxL8WhUm>)1@wT{Q*XmS{)I$eTaCe~IsJhleZs zIIJSRQDQL(#Y_p0rQkA|ED4>@WHXS?D%G=5Yfvbc$6biUVHDN#c&ufW#}}njQ;dN$ zbzLMp`T=oAkX%gMk*BOZ)DoRv;)n^EEJ&UBz_}nMt4!^j73;n;AWE|hHa45i)@V7v z3b1%Ygj^OvTc;ieVMAqde|&R}=l&J2oiJd#YTf0}RF?On$}&_%0lon5#SOp>i#xLE zeiTO2>SHjZ7PUo9EARjHo;(3-`#ZNSBwI|I{{FKTNAufX9V6P(i-?cX=GlZPeT;Z8 z-Ld!x(R%1m`q3kByC(nQ-zRepbepB->4UZ6=`J0jB$1aIgS$B-cjSLoTUS;iZVr0KgCgombHWZXmXyP z^$I#p4$nak0a-UQAT5xTaFwz<>gs9}`WdxM(D2y8l_{54&+yRmZ+GMeJ(2>6C-4u< z;c>(~fnFgCnm{pO_VS^w$Ki8WdE~iDMP0Ls2#xv>LyTo!4R6RrvAq{8|UfZ#6A0zJ+dsoad@bny*0|HKE&M|5Z?_ONaE1`Pb zaXAn7)UCQ|d*-&p`x9pbImeXAS71h%Y`5oj__zu01Q9o;>Tsb7u2xKjjCUGP)vN5K z>dBsLYRndxTPE_7x_C4{ri(^VN5Zt?f#2Q)l-{oQ;f!~Vd6tteS+uoPB8$35X3=^p z#a3aJuMzx{^1<)TnU2Y7JfMnWyQ(B#C6kEDhU@X`S3EvQwaA5`;uHI~C z)PyANQY9)1PUAz90ftiuJ=Z1@KMJ_6*%ik1sjVx>7n;OA2TZ+Z7gQY#!x@Oub$9!< zOs1MTX8q_cr=)ajhiLl1O3;W#ROKUuMVY(JC`P!)l zFMLJe$d6AARfK_Mhq_^A^HY@V1aO|EhQ>yT0mjI-_2R!S^}ySu{`y$>nlOED2$xve z=Uh-?K`p7&Yq+7W9Ct&!UT@u!1Ti)gxzoO!wKVqo4Tb|pXA#IyZ%;0L6a~{~{ z{4mN9G4w_TmqSN@9rKJ12G|PWX5S-7K)%O|Gpl?3G-ym|2EEJVB1|_FVeooV;p?+8 zOXZKqKmH&zBYcgxXMY*ku`vp-*3jhJo-gGax!QpZF-vr$LCUf5m0g=!kbi}c#W7h} zd|G{pz+%|pN0lhpQzK;p(L}VH_d2FpA#hsa%Li6G%9i&i#_|g;&W(LmRBz@kgt|$UC*}@8RI>HeOOU#JNRGAo@(-E#5Mlq@x zd_EmRUN^i_vVH5Viyl&8xbq-%Rfl(erD-PLjpE=vYS@Tws0bOL_ z@9{$+f^+*Px0bNL{=}dD>C45?i7BcQJDuNGZ92H+$?P7^&p+vr@ zxRB_d^v*5Qdu+9U0&ou-=3d5ZwE0)r;0#?jO4kLT507cYjzAmWUV-;Mx@RJ^UOBW2B&D}XU{uI(*e8OlRra}T~Hs;<5N5Pk0&a2~SK*8X{0n*pOK;7i&>!Z=QGxFm{=-slnhe zwzT47@;&mij4TYx6GlKAq`Y<}}$H+U4%D);)t##Brr)5IIm z59{h6Uw(@mTFf)DOAh?-tKIcS$iJTpvd#R&$N!JA?*MGGy4uctW$nH9mTbvWwya@I z%aUw)k9a4}a-2;T2_%F~*kKc(5N3doKmq{@lwHawbTUg@Xc=wc<71W%euysrx$i4^ z#2NmQzHyS;X?@>&&pqck&v_nX-b-Uv4;9#9#UMs(0m$$+JtKH>pp*nK<>W0f9eyWo zWQqyQz@;q(jw6vUuORW9n5H}hZC_!ohz1H!qPcm@(7m8aWEND8b(;KX=mTu4 zAo>d*1daVmeSDMHx1{$Ns44N+h!=d>=z(o0d@JwA2W~sE51krVJ!}-%#J2I%A}Ba9 zaohNK5}z}iv8Vvqv5W0|)9~6tzCNW=MP?fuknuzc&=uWXCuf{Ila>O0dD#?*2Nx&7 z@F5}t1F--MoM0Cd2H0j2f{_KWa324e8p`kYqffDpc#8e1rDb1>G#4R^{a`X`7}(s* zt8S~Ady0w4jQajM?W_8tl6ZCN(Kl-?TmB9Q2S{Z)+s0aBKv9Kv)TK!b%{|>iE84R^J^>NYPB`J+%gjm=b{p zgW73~EeL#wo@&K!xA4H*=E{c9t{ZZch?BYM>^ysRJL5Pixzv^f-Vz>*qF1?kNdj0) z=$4)f7S(yGK+&rOTc}R)b6ID4ljU_e|Y*u*WQK3!)LRGD;g|k`E zGT(O(p654rbi#aOPd6Ch@t(zBJPDfLz<2#|--a}PCA~3?UP?>Uwoa4I+#S=Fc9~SF z`XE}2fAb1nMF*?mTsOnbBojv!u+O4!V-yFP3q`~9K*Wac5AJ%xfuZ9)G-Xe^pDv*q z@~`|bAhAo50`0|UIo<=$Fi|){+P1b_Mo~M~$<+&62g*hH`{ulHp373d6}VaqVpAJ_ zb7Er8_;?&&RDuUt;wQYrgIzYEjb~_TYjbXy`z|5a!b7axbdQmU{TM+6u55d}Xd~6j#>ro#Lu;k(G2v(cX0W&d3$7?2J5q)@3h7 zE<=)EUlYxrj?DPu9b`P72*=wjrd$QM(QB$TU8DCy^~6tYp3gG~+g8WY<;1%mDSqnL{j_>{*nlh%(}ZI^`(mzmBq@IE(QAAv_2KS z|FhB2>qkf9_(p08{tCZ~Z)1g0`LEJ|oslx+FkSfx=^;Gxbgpd*{@;RnJk4BUTA3ud zh2sE!Pbl;ZSV;zVNJh)BjL7|%$^2)KYRo^s2AztpxT>v<-PrgGbRz~yz6)B!N>#!K zb7GDFpU*99mKnwA;2;!JBO{Ce+!s&MuA(3ScXcG*kdEOa3F=wAXVqJuHiDM_2Y9p5 z25Gy5=&f*gusU|wIMZjo2&a`yA~gccO{BQ#)tS}Im@!F5wi2BKk;5^W1hN@oD`Z1O zxPksxNbIG2tV@n;Lqk)F(3w^nt$`pHJbdJKyl7Gp8ovc;?$Sr#k`|$-aCUD?%ZNJF zTOl&>s`|28yiw!}RST*_m9^DUb4Z=)DC3)jrEQJq(FS$0vz%uVdD;@FGI`IGbhK*z zX~1-$#oSK^F`A-u^d-s1Kst6M{cBh4;!YjkCN_<%ZLsj1SEwFp*`^pO~)11=mt8{9{JdSW0;cagvebOLq_Ic`(w3>>h+O;q&$ zEHZ`br*N^t%AVjblALiL!k97<(G~Q345-0PFh-a>Z)+@;yz^i$zf0B@?sg&wAPz@(EVOP~*V6q*U^Zg~tpsEaYLr`W^a|za>HsHeng$YIrouU$v zOoe>Hq1%IOv4mBBomvdgi`Y4y(%afw%w|h#2XyXQsO#r`wK0o39X4kswWqUwi;GKc zFA~?_DpN8YJ9!A209yFFfIr}z!;OD2Rh55JPtDICM2pkuY<4W0z2b`3UQ6Hc=9|}E zdn{A+<0OYHTQ*;vWu^a(-}!MKLh#H(EvbK`(5gRt_uU`xO{sreKKCVHZuhBi0n%-A z&$!)5Od<~~0JqQzfu7}52~3lpi=m&K)f4O}I=o*-gq0i7op|y7*47osfcK(%@PY%t zf!1W|AgY(f1Oo2YRCN>XZv+LrGW^Hs)PnhyfsISRRd~^cgS0ZxHd+XCLz+*0n#3Im z>Y6jJ8XgY4{N6hz3y()hU}^_`aCqp<7%v z1$ob_tmdPdMr6pOA7*tngUskf^R7Kk6eFSsH0^?{2#M`vgAj?^Vx}}Ham${f${bW>~AnrlVbtaZaZf4PzX)UShY;sPfzt?+jI z_AC5v;y+YDmYnjEVarEA{kC*<9Y@16!w@U}tD|hV$LKP24I`CMSS9ml>J<**-k4A! z3zt(uj;#iIacD3D_RUVdMdXN9l~f!)1E9OJAFKISi|g@g*&6;u2l8J>jGZG@Y-k@g z?Lg+lBB4DpBTUxKIkD4Q3+)4d4cwXrK__-{br(Mt2av>}# z*F(&;$tt9FTV08?wAZKtlQI5pw0bUwB{IRNEJAE9dR9@rWY_^S-PXS0O>1tk@m&(n zp)*{fv!1RI+4<%BC}mY&v!0_+u(3qqeMyiVj_AZ zCZk8^Lx&Lk8}~M&x0*!?WkWgeT&*=c>Hj2?>wPjar;cNMyFuoV0>Dk*X1wpW?eU@@sr`92I^`2TX$praq80it45-JB_^{2Qk2BEpzkG?oKC54 z_bVK2dYP#c`Zc6+O)OT4$BYG#3lB8aQgAL7&?-k~&AWKs4Fmy&6Toaxnj|s>)sSU_ zy-v5br{_0h$qL;9Zs8++0GN{mmplDWO#W#OR1#`Y&bnwrfIyDn4NIMheZT+x{(9@; z^7SYxE;na zO{41{iw=fi=;J%wr7^;My@(8ii%_{;;*plhD$cMes+2CJ57mpEy?yTTv3{GzxnSJq z9UZVsT)jQ6a?rEXI~Odk@hlkp>;IuaPTuH)1=C!ne@rm#TEMiY8a!uBQGV#;9^N70 zsz6MlTWD|(mNAeN{0#$1k=H!?RGhR1fY(g_vvgns?<`gRb5#1$OHZJU_-gvOS|F|w z=tU8}ii3a5W>;uimnV32@qm~sqAJenIJMtw1yS^eThO+gM5St~g@fX507CeYf6vCS zj$_mGbVig*vca__o?tm+!wvZHhFp|-12E|hgG8UUYVpTc)zvA4F0nqFdOZsBlpo@a zCM!vQ$&JJ1%{qc2C?t;U+O&+l@}@f2p`7xI3$&r>41H#FpFvDJ0JJWo%_q2IVf`5J z1x!=OL4$`B7$jcNm096rfl+6n(K&Usc##kPzR0K~I($8q#FW%$7+OipC4_Bf693|! z&EWd}QJcyuZ;-k0MU*)It&s}ke}xEiT8lo$=9gPqZjGv3yd>9gX*1iBK4YA%7cAHq z)3=x|UJG}{mMd(tN>gz?f$?Juj6Z{n`o7NIq|+F3rzAdVT;7OIi#-a2o&8!<+F$@p zkCD+U)_3b+j#QIgbY^1l4wzPx*stA0S7(PpCJmrH%Ntl%0BY&o^KPIEeRAzdkDIk@!oOEcV1a z%L+-)lmsHISq;R2r&z9OIS--9G|*!*&kOx5#%F0@rgW1jXHKV4Z;R=az3*QMVxbrP?#6LETCwBXce?7@ zfA@7b61n%@wQE<^)vby|{)Fzw*C)|~U_|zMv%gqUZ&Diw>A{AVk0l#B}mX51RNoej1JDAKm02$Ceyg(yRSHBot&F04^gxnZsJR zKw)daZiL7RJM$POP;FK%>N6b+0swtT@DiWZpWfJn&q$#SQPhOT(XH4e1lfqJx?$~*87#cG z+V({?RSVj+;6ZO0T3JsYMgo;gahD0SO4K5W(@Pux0lJJO2ax1abet+&Ez^P4IaFEO z$oJe#a6<#iW7Z$q+IWLvi?~ssTo2jI&*3=({T}=9hNF*LU*&OlNxa4n6Mt&7<5yS< z`Oap&$dtpM4-8z{-yg?&|9RBek{+Lo#88!sW>KUWW(FjccsdX-J`M+XmGl? znpD6JsZ6n$3emU{+yF(@tTMl)M5`&7cb8R{c)s~&ZAxGSo^gZNWYjf!JbhVJr83=n zJt%hYA}iVhk^6}5sJKu8AuO{Y_#yl0X*NU4Fxr|x`qa{mG>(C z%?hBhuoDO0MT(}5(1H*M=l(Tt)_L3NI1&k!x_M6;akt)cij50=mx_mP-NXr>b9%L* z{M2n|%&ck9+O@IR*3aMBzlzK1OB3zTK9yX$`H>Hbq{Kaw7qF5xC1e0V#<3GNJGmCf z1ARFfLk4bL@ujd}bda>&nK_x0Y_4W{>(J#{e548BUjzQfQ5}S_Zf&);Yji(xDQtocf|2eZ7!q&9e;21L7&o5Zh~G)< zzHN7c11-P!<=5_tBIzsZ^6wKL8R|8%%V#zadU|Xz$NWB`);VeLO&SPH#!V7E5%g5d zfVnWfx(QkdWC1WqHqAR1V!~wnr;$9^lSLoAP$7+*L_S$Xq=95K1r-Jw5e4=^F_6q* z5mh;HXhAavj3%3heJImxOd9JIE(cx~(v(8=^JN5oo$>=N8;Y zne!hTh|ldED2n%?j6_^++IamSTO;VYbfxb5+TUF%GVrc_Gl})hUchXnzXX5}68r8|{nbVqm7U z?6L(0kyD`RKD|e~=5m7&(!x7-psScjG^v0LW824J48fZr*z5EOO)}-gP!|YM8#;pX zVXaRPgkV?Fy8ZAT2m;GguH-^v!-L=<)0-sb6H4inZ0@hv|KxI5CitUBKO38AwUo?Yl!-1H8~I-PB8vl4Bo-#Ikmj+O#n27FznPkrV8 z>nd+I04r0M<#^P!K9xu1t3_*vhOU7YfMaklfd$lgjkn={)AxCClDL>$6V!A%g@Jr~ zg>RA6AaJLb(G?;UoMJ7I{BVlXFo*5QMq&I*crHLM;#i2_(*Mrob{IytHu1c5RfMoW zIal>uIAQzqmtVfoB5jG1gCA|gW2geZJzasUtGtdRO;Fi9Lf9cK+lR=-wlOWBmJAJD z-rwJV59U&Ce3t2{&Tb_b?9d)S%oX{_ck$wrVY9^06 zpe%*;nm#bcv_eR~Fauj@;as*7$%^RAh^!_&B(a7+lb^sxE5=97bpdfCA7HLcZ z-rCs;P!K0Jtc&k~04GRq8G!G(eQhJ})^z&*Tj0Tf`NTAWg zYxs{4cMtwJPaRy@XMn+eO>U&R66_ve$i_H-!cUjL4}rw&RH{fWjvBfOnK67s;#{$~ zg=QmNU2w=)1e`WnC9ufR4hESLgj^?c$RIBv)PtLeergwbA3L?sgxpC#tt}!I5t}Ev ziac4q#k!>rAOc?ZnnAc{e%kV8Hk-d{dRBQtA$#iMcs$%4ekhO*0mto916UO>a*7gG zr|8^YXP}~EN1wubLU;>x@0Ab3R+}!RCOxi}XXL+`PnGXIi|08NQr!sk;(Ak;89i9Ym_D_$1KRIec651X(Wf%nDMH z`m#k!%Hp2!Wdxa@9;DvGP7v%EMax6&p^g}<7cLtM{^<2!XRy$#K16@(DiAGk!3e~( zd?N+tWM)GZ07o(!Ln_b7?+^Yw*?ooY^Tg4e@&tn@l@%)#p>i-GF#C8?{NC%Y-+c2L zbXf-fkh01@17lj{4mU14VGSqXGS2Hru-AsvLIQ?=YvrSOv6Y}-9H1D zP+l-{XvaVON9eFU36tY=x-mVe4nXJue@?Jq0hD)E{9)!K37MFwya;`&=&`vJQjOz8 z5mrG-t2jUo>W;81bC@V%JfnY+$(ZVu(OendC@gJ`T%v5qI)o;^GaXiKc^`j>Ch#o_ zGulLVH7EvflZ(2EEDqMs5lYRV5X5P;gaF!f(4zB&sqjV51Qw?fij5`4Td}nC7zeS~I6TS__9LR}SVL?g z)}m|hh7p3<{Wq6;0brJ^GnqHrsxMy5H;WdWTa(haxxgJjP?kk?5>d5d&CcuEIch=n z@-vqKoaHfuYN07p6FR3-S6?NrQn$}Ky~mdp`gI)L7S4CZkv;J;-g4jPpZ^bQwq1A4-SXkm*f<{X8xziS=)IiXdNBUOAJM1#ASMCCWaL_9Alq;NuY$1!D z{#MAAj)J5M;RJ4j40`9hOXl)M=NC-mfB;WSS-T9B(^3T zf`&7FQn`ILO}@N#c|Y`e<}W*%GdUEf+!|nsxsGfMFMsJJTPD*MxqUvbh*WEsKjy*T6_$ zCsCd_)@?mFzZSV90D87lqDXWo<$>8*gIyvk|; zIG2z|tn<9k)FCt6owTUjDfFo^gsW&gn(nmF>M*)HJ0?5duRkeua``&Ya8YOZ|=HYe|v`Zurk zYC#tIs~SThY4n?tjrR+hSGCp3K$1?9Tt^q6hh_-H7gIT61KSTGFLStTpu{5cs!Xa( z*JE(`kN^k8DUlU*7t7M=;NmO-;`|Ddtkf75tY(Izb__%5KnRH2o6y26HdhdBn>A=D z6k5P3{|%(VjrTq|MvXptPYRtKF@|bj%B?DRS4L6QlO(e{k!Ba;ZZb2g1qC2bELgCh zprQe&Adu}2;QJrnwd=KI$;;QTk9-6mk6%l%IVFh_&^EupWJo3SR(-OGHSbQK5mZXK zN)=!M-b!uZc3=?K;_w04{3QDHg5=dw=vIUD+I)!kC&=;$kO&v^w8jvbNB}6-9{`Y^ zoSLF+1kJ{$FA=E9xKngBxJM`&xd-?5Pd}YV3G_y@I4m+4v~h1~XQQG@p6s|nBq-ws z7B};>qQtPDgWmgJ{DV6s_5|G}ayi#tW5?fy!`lKc1o4|{)P*0uy>wMb=v!RADM6`f zs<;Lr49{E;kH0UEElP{b{Oppr;-QozwS5IkD&s8K)G!Mm6jfQ<+pGb5XD1=IK7+q_ zxr%c0(41l0Yc>?#h1ZcqojLDYBs`J^<#a#uvKh?w!aGa5efW4&3o^md16tSb?XiD z*$RHgu66pqSXW)#3A3EtyH0W7?HF5Q(&{R(m*aZN#0w(V@9U>}_g)u8eJQ?J;x!=< z%{QzJoiVMwzCmr-ZTICPL~h*WC$1>{}5Rs8nG_%pAfP}4pFl9 zwP}UeE)<1^W8UhP8WBt<%Ay0IAH(5?Yu2tP=gK4{rNaxoA{Ivg*)Pa#{TE-L(SZb@ z$O3!>KB`cw>XcfQ|N5jM(V*e$xQeQ3W#VixmuIzcMJ0)HOEvC~U8*c!H0)5rG<%)A z3mm0@^CK>?M8-zyRP`Z4$QTY33brY$6g4f&7l3XfQJJJ$LQ1(^PHUVM!xX`Tr~N$n zeNQ*T;hjUJ)D)#|#h(7#e6p`p-F0>(RL&$%2MogA-u1Q%=;*p#@bi*j*_Z`PplwG)uNm`}m27wj| zATdlY6hEGPS<#2+I_NON<0M!dw7fU8yx!dWUKXJefm8%~zKR5h_4Djukx&%Cakx4BZ)cbU^GAZhe#8_f+iqbaW zR)G3_dL3`mu2u=COjESw3|N8iQx~iomjRv4Vls8iR|#s?c?4yrgruG&PK9e(NN#O~ zf%Og=#+z{q1#IB46?gRa%}S^k)P5#mlxbwT>AIr@?v*7>IyD`gqAv-!G|08fg@=Ko zj)o%ULW}{#){y^)ftibm=3iQX&co-dB(VF9nap3(=}no;3&5=0n?aX0gEJzSfJnGR z43Tr>(>cQr)OW#DusQr>pe;^)gYO|;IYLlJ(SubKki6F$tvo;_2+M`TFV+=PeZAvD z5M=ER9_4~iKaT*QZ3W`pN+M5vlIoehji;slMT9vt$z~}I9&w>&P{Z9&+|i_oN=i2^ zkxZ%cGj>YwIZSf|K9LMNlMA2>Dml;W)gmnWYW?u4!f-etV}M}-A4Pf~DyD>*9g|ap zAZE8PQ=;+BZ{iq)v39Q#X~JTgw1TgYwRo0>Ye&4>DwH-(HOB%1PpY(#D+i*bL~P)2 z1uTk%gf@mT&`2Yld`qd0->aYRl?)(ofU;@?v(;M>jZc$2H8{}JxxpSj|=8q#q57_ zakD^ynqF6WQE9E3U?>=@W_Wz`rLCR1*(d2XTKfIc&00ofh2#Mzp3a;6SAeh%eZLpl z+E&zuo1K(itFE$0%2c5Jt?`Hz29Zp`wj`1<`_gqmA}k(QHA2;x2bWZEw1SGU{+kqy zOOjl04`^DNQhiukI_P$3!+tEK>YMRk1|KAM!)eVTv)wL@aq*nySkk41nX}5<)%KLHLYf3k(#+m zTn)QHxK!Y`cK3j_28=3!{`jP9#{>8PzTH~8s9O*8LRHI9;r0D;2DoklQdETQuQM9) zG!j?_Yfdme0!fv@tR!8_LCG)^ikf_7FaiW9s+=BPI`ONbHa0i^4ZV#k(CDsR_|3~M zb2K*ITH~JYu&e9qP`Ol6?L76m`$pJm{`}i7TW!Wqc`rIN&QnM^%OBoV{G=CO4hAS6LX-AawCX z(9k`(q$>$-1Ye)g1fM=9MxP8gH&bp$4CIucCW~)6=LKBbgJk&Y={}Xs<>f=|no3RU z&|PAYm!H_!0}(8@GRC`^jCeRQe4WojD(JE*4d-cEbeM~uAij&HMor4W1%`qXdfgGV z$IegiY^B%sh)tq6S1e>@MG6H_!$ll(HBUmFkwwZGJ@7iPgSJNO-92!dk^w51&UXl^ zV1Vkt;dC1RDS7?PSI2>Az=~XQ<)yLSfq}~g2BP@>ur$8a! zEi3CW%hdHj+>75d5C&(^n!LBAMKa;ez6K_lc$daJNCDDgY7bk-X zt(Hrd8AULpsFwscIUS-r$cf)C5+`Yi`ziooY4YBEB4#R!XApM+Z{}C11^;Y&F4q;c zE+z)HwZoSi`<4fRH6NVl(`6i^E9!)5Zr$=Bd$lDMmigqNB%tJ1wPKuUqEyXzE8}D| zJz){mmn|Wl#z5%1o?=w53!3)%gDKXg>-vp#%UnRsurIv2a#6ok;uM+ZFZ0#IB$B99 zYVKb6OSdi-(N*Z;3H(QJ@)O{1SrvPiFNZBXT{4?^*%D8J4D^u5hF%BJ{!He+o>eVP z&Tuhd0}#fSA#RU+{662wpI3~L&amV~V_O8r7-iD}fjrgJK!9uK@fZ}~@Urwu1H5P=ne zw&g5oWrxnD&Q$3wajjOHIj2%pA5i->!SLU5rw%o0KtT{bZE1irbH zHAVGY?Z&@q*m=o00T5CxsoQ$i_Q2Pwsx@U=V>*j>DFT+TF{DF36Lw!+S0Wab)Ldw7 zbnLHLziDli(9HKNo>=N_8sA&Sw~K2Y-;6fTY7DtXN8O>)g=5f%oN4Sq_k<3y_S2WC z9mo$gGXV^X{AX=)C9Q%|Kv*V(i!sYE%f01&xi8<^%m{$I=g*`ZPE6D+$Y% z{z%KvofN^E%Cja3Llj*D(qPEc-=XUdAHF%sV)I0Np+PCDGl2tuv05k)Lj}iW?T?p; zMBErxBt(g)pWdHBfNP2PQ0mD;7AW;Ben=HLz_e#QlVphmoCHV6$N#t&BIBA!J(8F_f)VG$c&$2UBAM{!fjz zrQ5|fh+Vxo)K#rXcR2Zak+U<6UQQ%LQuZ19)<(oKr~;AHEoLD$PdNIsJr8>p4A^+K z`9o(P^*O-$rBDe^H1e}sCO@b2%=mxe@N{I53gkXPG{xR<15oOOHMY)9dl1le!saT9 zrqGDlKh63`Kn2RQc{#hdADfec(s zksP$NhY@koogrv3y>x_2hvvw^J;sc8PUCtMsfxvLN@Hgy&Y9N{jbjnDG=KZusni{y zu=fR6p^5;C?>jwc=p3yAg}CbBw(s=00WXj~yz_JVALm6?PHvoMM@=mX=rBoL`O;&I z;g9tY65YZBGf8yRtFh1HU^S+ozJ%u@d_%*3@t5lQ75ygAj?uO)sHz;wX+b!~G%!(1 zEzsx_T7#~!PGyT|l-kr|glaQ`S;zQb_w~?DmuWk;Q zFJQP(u*1Qk&m=RfL+i@86|CBBx3A~fH|5P3vkyrHQ8T#E!Euo?z_9wF9`(DaMe{+C}E39%`P};a*I$Q z6!N`Q`Z7uW<@%et`Ps`G+CTX4&O7|oj#Rz4UR2k3UbQ8lF-z<)4wgo8PTT$mZcW%= zC*KV_nb;~9-HM(CSGX{Y%2hvz=H0h4-%jZwsQvP>o+vj&}_g8l)z`Cde zhP$OOb;lLdn|vF4#tvrlB59RArt_<)@9}vF#KNl`70Va9y=BWLmed&&N}H^@2HH?l zm4A^erUmlB)K=dDTJ={j_ZI=4+<>i@k%zG3=(2sv0j-p#_dp3>Fu5%rg*n_-5ano} zN+?SiM-MW-1QCo5fgx0nZ1@ATm~iOu7q7nh>W?UhUpu$9_S7gU0k27cMj`fU5g%-B zd3+I@C*YUtN|cz}JHP`ho7UkoKK^)NlCLuuMM0rnrw(~N^Rw`3Gd(*+!ZNOZVV0{C z#s_LR6qOVhEoO00WHRWRD(e<^D(h73V;7MC7+cp1pOqVL;Gps-x;$O7Y14fhHpGCe zz76lcP|aO?VMZ(#Kx~sZAZ`IX8$WZ!xu-pIb&b%-D?k4rYNlT_C=@41$hsR#s@)@l zj-YE~Az`FFgFk;dBC_&)4}tyPdz|(M4&Bk{YPj(Lgtp4S8K?Q`d}o{q11#)c;I9t{ z#ddzh-A4|>B}YcXm@$4XVEM!f$Tg3dn=CeRClvshfsf**r(+Ratq{PABqnq;EA*hW z1dN|S*D4&elT)-PdpdnbIvov}LNy?tSslX9r;UB(ghlOb>m=N@CiH7upCh=~a?t4Y zQS$s(A2y4?*0mh0LTt5sNjem|J`~EYJOT2LZ$@H4rGLW7 zmC4waLF%alz9yQBq5V5{gg<-Z1Ew%>0dGf4UHts>&x51RQBFa?6NEO`?B;ucC&&Pd ze7GeD+RF?IxM|e4ZED;ff(v~_U{%RSk`5F;&H=l9fKuoG*F`z7tNGtIzJql5Q$_#I z#~wqv!AqWgI^R5dRgN!OrO4mtsIYjl#0MQ<*-oefK2hXufU0>VJBMh6G8|4fhK7%pblY4 zS^(7X5gj{iKMdpoRM1F39Z@S3%6}j-_wZZ_Zh$G&vJxLzftTJ!>GGe-iNYcJtz2AP zz4y19SYjD>{V#UA@r#~|4=v@%rR?#CcU2d$(#bUu`)S=e!o!8b3A%NUgK#Z9lxvB_ z)<&a#{Lhs`^pD^#suKxHzhHZ-k`E&A(!@ktd3Z1)=4rG7d3GXAui^2PNC@w*XKrdF zw8(K`4VlZ2L95BZC5M<{p%eIlX&2Bq={3z_2+FdA%;mHXl^0c=9)s&&)V2f0^Tl18 zn}x4J*X3Dw&LAiAIS@b1*# zB9aFVpr$Z-rt=|9ATuTflVtKulYm6$Q}A&{!;!w5NHPXDJ0#OZI>TgoRt$v23ulT; zq@4sAfD%o94;%3=7VpS+&FFl5Hu?@EsqV~wL9BLeqF%@+MqA{*8d6wQc*Hxi*|&4% zY}%AEH8mlW(+*$s09+{13%8AR?fOzjvH#_^j$u)eMN@Q-1P8%FHq)|La5yY^HrBIi%gC^jR3=fksF4t zB4M)^n_KQ_*0h{LHq0buY_h3IMhve;%_Xuk|L6YV#grre7bVr1e+1Qi{BcDt_h34$ zXaP zX}PMPh}eVvg9UYs_dmac8hh%#G}_cGR;hq1FX1?X0s#lVU+2my1Bxsvuhj!-v|iPI z1e3JmY%-qUkjAA}o3XVL#uMP;?Ok#ofcS#+)IKO2q$SBa#brnvy~Y-#wGdWJsxgA4NCR4{{k(?0<;{xRZsU5kE>cV^N4W*Ba+cf%Zl(E|#t zcyVFW9$lPKSHL2dfh5{o;|?qLGKjqmQr|tceYv8h8bRq{ADO7OuZ_D5l$X~POGk zE!B!(rnE%GvnT7j1*KJPZaLrOb&K#PpP;PJQRe{D8J@MmbZJ5u-Mpj(?Bzx`geN!# zUvC1MhU{do&%nvA`SQ!9Nj{-?1w{tEHsh_9A-@A8Ko5YJKR)+Z%R62`H{{_V+nLu7M%a z8GH`^?~@UcjYmvs4ir*v#=D(Ky{iEzNkBuFT(nyNDA_gdrjxehA-Iq?M-(2(uhaS` zg(L?)VKUvBN_+_Skg2?hP7Iv_(W?IR-%Y`lQ@`^dEBUs=c132e#G4-xbHGOmvA zZqLQ7V^#3G^8Q_bIt4juerQF%vB|Y?q88GWn&l(bfT69YjH?m3yE1DUT;rP~Ts7#% zEIu<)b;ZLgAa`1F;KD*)e}G=`8}GdbOZ=oWA0?f62rtvccAf_J#IhJrjC?}1yG6@4 zaMiIz>Z&1=z`&DN`FE?GS;D4LMZ48y9Xi6aZhX|9jq9K+P{&)G?zCSH{Vrv=sZMPU zR>}A(p4970>fB8M1^f%LnrMw7IuwWQu}~W9g38?ml{+Ktb?m~5j4&>on^_xaOBO45 za{CkZFPGGu@DQa>$dTz-NOl6(&)ofN!ajoE!hamovI9s8JjD3>v@A?F+a%x}YcXaj zs>ZrBK268yH6--M*L8zhCsD@z6LWnm3( za8Mx-AVj9NfVNR0YVW3zt_NAKA0yl`*7OTuKIBqb8wr+hZsBe&xE8EG>ES^9BgcqU z29*ejh$VplJ;@Hghv`#>L%XXQnr%ki2J+v zPOpPk0lqtS0iJ&}uH|Zt17$UyyL2Y5g=|M1Z=(Zg!K%7%bOCtsOns{YFVkkDRM7aHfS{UFJ0{6 zfl`WReATiJ^^2eK=ihp1fDQF|>l-PG?;Y;72+W=HorTxpL6WZVnkj#u69g;c}pXq5bcLoiQfhb8n20;}L47dQFmZeq0pzyF7o6Cv% zcD1g5{3cp8Y+Vn;zLtq7_fL(M(EwTG`o1+(fBpfmOUgg@TqtyYIJ`3!!xuM*Yb*Sv zwWkFo5)?(^^+A=39pTtkhcp!~evD@?$B&~|a6`O;>Eusm9Kqc15WrT9IyW&_ZXlif zgMb>pFB`o#LL}DeZ@?d=_BVm@h8}$akjUS$Ii?J4aJp<0#*)ev4z6=$jksb0u8GyP zdRwm9Xfn36QLEFq3H{bzSodGk$7g!PB4eLSb+Q(0O}EZz-N{OmpY%$TcK|zo>NFH5 zbx2uqymf~v5x(AoKoR4p!Qs^-ptdryYCln1DXPmh@t-G>hA^7A@R3ZWzEf4MY7pvF zuVmGcW={#2)rA1^6IVLJ_Nr|SLMe(N@wx`J9UPo&tD>562OmW9J@^?gA*+^W(F4Fa zDtKE=aqH?`3r0#~rHjT2B5qSsv92D zd+hLyH@@}Lj995?@KRu5W~t-zxJO}IXSk4N6_3WY+?Mc$5})+1k;02*NnjG*4m6;K;y zHI|R-+gQlUZl6(wSONcK{K^QYg|=8t!S*al!<=w&Nt=qUM961PO^VOqYAF~G!rMV_ zqH%oda#+`Q-`%qZpkn{iPyh6`+y4A)Mxu~Mya21y%lfZatfW#NYIH!ZWlsk4@62_T z_sRTG6AW0HqIGgK*nlv-qK}2%>kR|~&xGC!p|&HRnrvWTRRlmD!yYs$^RFB-3yoaR z%|+|yzQp(?Z-0vxLMDhGRl=?>gG_05+zEr&Lk`G|YkYV-PG!PfR*!~Z8Y<+08&>}FQVJ5V>gpFYvYDqPb8`^Cfqrf?`jrNCOk`6xXiK#*9I)x55gkyE5~u&g0Oe+h zl>h2N&)Y%Y3Rcw4#TMWSJLjNdRI?Sn*H72@%fIz+hof z$1@8E7P*Byv=#H5(ZmSDUD@uIBO~wA>@$YX2?m9W1!Y(As+QLUxL%jZi%bQptPV$0N@nbDAzl8&& zL`&7pF{y!-Wa)kqGSpWHBSJ5DW0SiHA<#usqGxbgnG{+Zs@N(euQFidqo>jUi%CQR zgF+fGL*LR^BLEr)PslI9r`534x*Cmcv|1=+)w1|Km2wNahHY#wReJ?xd{5pmn}_dT z1GScM!Rn)&x6uPh#AP+IIlYY(mz`vDSuH-fMavUf1w5U}C(B$=!;y;F<=cc(YllH$ z>|7I>}7>O)yK+8uXyRHWgpiIh&TzKjE!8bI##ak2be;fcc;HuGhT6q2F zuqe0*1l!hDu`8C_c+TZMk)zivGxt|1^n^&&h&}~aVmd8O8i0I-xOdZ@%+ngLI(Cki`NRQaT07qzmR00N`4q3nUUM=uQgBL8f2~ zaC>65hO+RHi4cIP7Lt@AqmxyridoR10>>88p>hE2nC?(j)GX=KRD+JkPoVGx$yj0* zNF-y&pMU;5k|`dfR^@NH8C8Q|=3}_+0$?C&`_{&Y=IOEy<;&%kjJ!h8)R$CQIhhhO zT3l<(n%s(t@_|}so7JVNsod3}ECZJfwaRJhS{xP|xm8`+h@qGfPB#l2patTGm?>hQ z!xm&^A5A>ih|MW<*Sd9yPpDy*d}Q|qC$O5$%g=AUph6V{)?EXxQaT2$YU?0%ug@4z zdL*Tu@mix_Q6_PhVXekHXi;gx5o*uc%NIDIL14};Ie(CU303ssqB)IppqM@HT|u`JXIo-H zmj|oKjDbCuy9TH?kD-@wr25M*DXKjGj)H2-KenNHFsbZ#F|sgQui$Ic9Em5?1}O>&z|7?R6sN-o zBqpLyUzC-YM5O6%4YQ(?D&ny6G-Oab2yXfSz?2sGyc1rsXdUV7i>dMatv*VU|7Qd& z+gII{%bkwm_*}A*JOs|84`zZ8GQl-Qhm1`!yCf{Jl@C*aXOZjV1<$q?* zAn_#`>d?lG;lJ)9zkJ)%v$MOq0aVu9`KO8+BvaYIab<1`%{>NfB;UN8?z&b(kZn17 zl1&S3d(w3!hx4dLUR|gzKtLw|Jm`u7da5i!2}-bN;E}o53!#%LquaJ8-b-7_-1!r) z;{Sk)%0m^(8KM@Q%KKS6k0c5TBoxby;I3?i3&O2-EA2Qa< z#!F-h?$|lcshfJdgoM+V(dL)Vd10x24O<2W{ZH3M@d1$Jc&b2YCyFnB`1{|VsvDy2 z^a*7`4qT=bM<8hsoOUnB#;Um9Yk96rNXEBH;D5KA^?$+RZE$R#q7?yVIw3Ox-ei1j zIWf~BnJ&!=g|d0FwLLimOO7+SzT2aa2A)Cd<}3Bl&2Q>a45toPYmYZ`I=0ejbS|4~MJ&Uje+CE%EB5yOe4A zkk9DelW!JgASV?bLxpdgPJrM<6MqA^c zb3e>q$MSufY}#1L({b%fgTmx`=qGR-<3LpkDgh(X zI6*$bqfU;@{SXsM9&x6~fvm@|a-eS7U1t@{1e|Q|kBWNVrf{X`jQGoKvEAoIZ>p!O_sG0Keft8=e|RU# z;O*!)*pIS{z8d>%_y!QjVxv-Z+p46{z#G5Z`M*I|x5KOP*L)RnuH4$dH3&kRmoIH< z8b}-f*S)>qT1|$Grny!N>uguHU^NW4H&lNhi)E8*!S5s6U%?gpM8A7DK{Yo&?iQx0GO;!J%O z6q-c902~kI!?8WVt|TX&EO)5zkR=YlPeMm24$7com6{=VPb62JT76PGFlU2#Ga&U| zco#Iv9MY9s1-&pC$j6AQ!p7CRi~_6JdE0i2TU#!*%IjX^Tckm$ zS%k&{19suFkbulSM?|%oOgN3wPQDk+yAxz74if<3B<~j95V;g#^_e!$ z-W}xpuvnxfoYeH1OjzhbkxpVD!I>e6M8=bkC5Z$x`*h+A?ToxILh=fjwJhLi$ znYyAUV<260`@~(uB;sSlqT;eYY2K2QLA4zZ^=@gd)1bB-5iUc)<4l0j2`H-F!PJR(u zMC9~)5yC&7(kwJtEt0s{V$!E72p_#hnd#j_0K@32E&vR(OG4aX!m!d%8}nD&i14MF z*g5ezBQuWs3s_G?x_tUd)ut~Ksaw@2R) z#>&Q@Eh!m#FpCAV0Z(%uJr5W)mqv+Y++kx4?{`#9L~Fo zyxx5mMeu?EvIdg%=wD}F$p|@1)ZUhmiVG|ariC!E5*2z!$eM|y}+`zrZSjme+U20 z32q6}p#2CP!hPr=+=GY$sj^ue%>rpt;B2fn5R-$f@4d9#Aqz;XmDw!*=7-pG$c#|@ z#ixV1Hb`WIWtqO9dyOA7WcJOE!spA>>{_%Xt?6IBN)x$*JU?q`; zou++_xWR0&IY!Bp)yqa4P~up7heJ`k0`09^q_W1;a$VCnzMfS9v%>Na`GqZUH|sbm zjy95!2PT|6J;yeDoy48ha?~7kLsDM9%mEw+%bx_nw5m<|i#X>8*yb<6nZh#>Y`qh!P9n<;)C=QNOF(^-a1tj!BludwW zHkqjcjhT=fDi;XDB;TBT<#T`{z93~|QP%X_wl-Ee{RLH?!b6SQ8q6bJ2)X4wXdvd@ zdg)bJB7Bv-;`~zp?%4=r=u1HsG=o?HXKRzT#WMbfMsv@wmuC`s2U@|Fc{YP<<)FSs zH!yKDP;pf~{;D?Wqi$Zi>;Njia%jjVw>@(~u9q0!OT7;~;j^dpN;PS{anB6H|kQ7h8v z4~Y9^6`?6Ez4&4zhuMv{_U=WM_uYqgQ~fDinZ)f9t0W}QMq{yCqEY+`Ou=W<;H@Q) z$|~*PatOUy{*kxm*uG+MfYoz(6z_^4w$JDD!-M8sF*Nj~#MNn#Sh_djkBCYws*m6w zQ1W}N5gLgSV(uiQcFw(PMdzc;9I$L2na8e%dF&Ld^8hqv32A*hosC{PZ}+_0=N+O~ zeX21F4CnxjH6InCiX`=7iB&u$MWw#d(&ATnkElN$t_JiTW8Ni74?cJ_%|Eft#YFx z*Xq$^%7Lk3tSMV&(${%~W_b&$@~AUjj)G^XDP3XkbSO=t%K8zHCQE;!uXMQ?^aF)v zk+%*G-@kBY%1CwR4_4H&$s`^Rq=2|+92ly2bE zw=9qG04sWeZdQp&vr0mJWb-d`3-x@*qL-Bo8!Na{ws#|9+jWVUt_(E&j+l*Ev)$Z! zl`?*Yj|;Ox?Y&l$vc{*fS-Mb{vf)(n6{c*51MG{<4wbLwI%Q%*^&zvH#|{uCtV95yIv1 z3i$yTT{k{Vof*&veX@w8I(Sb)-&4l3i#)By*T@h2Et(H1E%Nxqs>3@$46GvkOOkO_ra zxwJxucwAj6pHCWw!jfweCDz_Pj!w{)GvRG)7n1U-R7#MjEn zfFzHjaq;=068JjSg>jZ45r@80IHY>xt+$3_0GK??ZvW6 z_waxNMzUZU3za;Lzj&%aXyG@b%n^9i#L4(&RvZ1Qb&xj_N33`ODqROS%a(b2=G`%m zw3=bopN39h`GIUP6@7tzF^v_Ipa_ON<(iIYXdkXersiV<5vJfa<1A;>(!%6@lE_N( z8S;^|sfd6W$XU^9Rw4KT;My?70U!fVEjka0N&y#iJ9RuB7rQ?Ea2!VA98$m3VXL(TSK7*~6I+E~@DW|q2x=em z*GgI9(3XYxO1zCwawwq{fB+G?U1C zc}A;%DQ1~j06JSruLD0^UmrRpG~v(I!SL^$at*75O$i0UY710?=9ow%W3xd=j&H9< z&frzt`qMX7=sasTf91CJIK8gkPY`?4tt-p|6VG|znnG)GO3aX9yA!Q-;&H`e0#5cF_T#p{Xoq8hv4NoJ*&j0X! zw@@!g@MLSV+{%%z5{)q3>DrpftOaPj`xuGmsv$@`XLZQ#ZlH8tZ*N7#ogPmme*a)? z?TF7;@d34!ZKzfXRJHkRs3#x?*%Prlf(Bmt|D=5fd|TDozR$hdlC}5VvLsuwHEqkb zEXlGpJmbVkoW1wnWKReXAP@*7VTF;fSAkMyDU?kqwD2)LMhmnbtF#noOYY78Jy()P zX#4g1{T+mzM0U zM~?9@uu-jK*(%otFt;P#$bS$v00RIXAXUIvtLNL>dG)+@Uh08Qv6WjLR5SsMQ^|9r zV>!OlXXknOHkVz9ZfhYhGoDH+@~gmPs-Yzu8k5L-PvDO?k%Ip6#+We)vNd3+em+C zm$hzR?tn1DJYyxv^VE6x5pi9}Cn9_bZgz5=5YXua0-jd_@pyxC=x|5J=FZMPWioMk zrd?+#8qKCY;!lmUyA6P!v#z8rHF=8AlfYAD2?&IMFk&o^fMe1GYs?N!B!KZ62eW3N zSa*{Tj~xG~+QY;BFd87qplHTXm10$f?;;#NW6tn>#D9hhiTGY(pd!w%RBj)*GUa<( zX#c&} zQVVTQEb+=BZB`)iH8+O}Jd4xJadM4Tv*0FVYQHW?-T2j4>(WBF@K7KyoAn)jcYj76 zkf(Yt!~6}S1U96j`PRTY%^wCX3(#MNbCF_Z|2Z84Qq{%8^FTjSqWCM(&+zK4y^uAt^$*}P7)L(?*{v{K!Jm-U zG0rH?aFtG=H0UD%yw|v`hw)FC{fB+Vu0#}G_#(oEEXCp2)x>{y&Sy59*S{_aA0XbP zT#2{eR)769y7v3;-+zA_6d-qz1D#Y;$Kdjt-+vzstUC44N2quGou7V6T}$phvlA7v zFz3^dGj(K8SH`^J+Sm55#Jp|4xO_gnz`gOaSMtH!v!9aI*kPaF=kx9Ky-Pp+#f__1 zUtTQwZrC{Tzm}%`O3%bTi_|hK5MWz;`|YT6KYQ zDI07u=~A`6$$4eHvTNx0m~8N@M(%Sph76h8_zwLko{mRY;`H|o$79zuq!gZXSb>KU ziM?^_tn-1My4rqx?N2W)ovsF-5}%uzYMjfXjMm|_h_3FitBFMEK+h9CTI&JE`= zm>&k>P?iAZD^%FL`H#DIf3ji2=jWaG=WW}*xagw45$97|(4S)3Aiq&iOHXkrydn>z z7ZQn0&CO>b=U>xMvhXFbM7saM>zx&v{fdWX7NObE@Zp;XU-(L4azq z3*Vtz?S{0*qs!iW1x>wi^&o1^303UYoH@1S^eg|qs+imvN)&p&A`~3dK*4ERlt-rE+7uFaJsU+>deR1eb+6P2IFbGC#(Q`yXHsV_# z&EaO7oo2S(DW>0x9O@xDFNn9cS38}+B+GMH1sueR9*>|9;zq9zS0gw5&SpO}`@V;F9I9zWQpyqlU5>UvK)& zouS;;C#5_A5Wx${cCW~8k+bE3ut3Qp0&hlkY-!+BSCfGitLo8D@87fMet02Cbj1?L zW_khB@C&&6T);G7+l5tgjH$C@?vmL|eiK*K_Cp69uD4%VbxqZ^Ri~;Rta=iT9asl2 zJUd>##}!Yol(2NWE1+6NapN!;6#HnV%Ju*C-Pp6l+6VhCxTIgf?)`gvS>Jd?KkB|D z!E;#B;QpqL`L!V+3T+Str6x{2$2c{n4yk=&3w&W{Z#UH#lZi|s(cdU=D0vp4%0yH* z9vvjQFHdmoFb>5bPhIOXwTSDg6P%#N#}DzmOXHe|+Ap!1=EqE#4oi(WlPn|>6XQag z3Q}q+GySKx-Xh+G52nLu#_Cfad_dpBj1}naG{wH@pR8eEh>J9qbPMNMvt=6`q6KY2%P{0QpG6s7w ztJfIvJrC0VcwAIB-NKQxEq(jo`$-P@e2uzE71Xq*be4kAWa`%M z-=8qrdpZpoW1;s^`X7&p{1eR_DbQ}Aowa-YKL0!QG=s58HttaPW(?Ui_MvI@(&D0w zi!ZSOC2iC2P)O0xXpEa0BULOIZ+;h`-?-ofVC(NMIYZF5%p__&pt#lLmVG$KaeP6g z!Q?meYK+EtIYL;?smVtHnMXfQTuiMe)+uC7b(?lJb7auxwSJ)$9V~u9{lN|SGnma} z0KJI_zL@xPvB-ix*9m4k7uir8aKM5Zz;C-B79?c6wJ^23Oj2nu zMJaCse+V|LVZyJ!{M#0^<=g-H)dY0af4a7H9H~Mr>=9~|axUUie}rZ7I6|XQ2+;x( zh>1V_lVu(}ci&R5LEtq0ult7nfPO>Qdhy!k=Ev;YOT?wr8e$9VTVV6<1hfwF;+q#+ z(dEV8|0ny#uCgaU--GfunKJ!8f~(i%w`dx4?EANUbegVe6|dzPZ3W5#FS3oW6Xe)J`ty;OSM zl4A^cjUT z=m%gH^y6fjyNWFIm z$A2V0P&zwDfN&bl7QgIdKfC+*rOgtwjy`m<2%=Jmf~a^iLJ{{TGD%pU$vfCGIoFbm zOBbLm^!Yaz$$eXQm`&B)V$8{~=W=xUYIv(Z@^p)CTlU7nTMq0{i)uKm=n zY%YLWN$R8!$O{OHW%mvBn0az3N1rWNr65|bJMkN&by&27#19}^ldx#XIJ#`XLf@UM z;#75=y`Q|foWVB0SWH|wWFkQv(o__ngV8lir{K7j6&#&cqQn1z84%W!np#%LY zgMKhcf;P0b)$zsrPZhET>!cY0uAX1h->LayUmv}n%=J)x1;UekD0c;YmCY&OlR|?Y z1Go4BLd$YH^C=CSwW_7vh(aeLU)+2%cmP)L1s*R4Yv36GK|L<4l!_?lo{pN)jpNpf zJvSy&#kU=hR*)s=BUVzEPeLc?`M>Cv>vWS+Buu?Y`1#emXBCoqQ*pq}gDPIOO-?Du zlQsvCFiC5$u;Sw&SuQ(JG(aj&(bS@Q zF87jR-ABL33G{ki{mv_{r5~gT5KDZO?3naKv~r-H2wx3EOc>{GS{%KG=#_Hj^9ATxcMR zXCAy34}kdZg502+(m_c1&h{X`TJW(#+F+YJvlb-NGni9<0=bC`$#jt#$bAHv*!0(} z{qzS`2e1f9Jj~;9h3GDp+nS6i0r7(M5Ez3G>`(9B4Tot4)AJ(P1z(Av^ANAQ4Gt5= z6)^?~bncH0P#moHI0?m%H)@X{;us~dA@Bja-Gs*++I~qVfBp+SBD99S^xA?!U_b0|rVozGu~;E&PmhW@ z-WePZVWt?!ldxDgi4t?h#+S;*s@szIM{v4m0_i{V+x3`dY7LR49z{aHi=Il(r_a#u zT*H*+Jld@eUQVL@-VNK8@I|XkYqX`Wd8l zZhq-xGaoPwvE$FsQ|Z53Y*+@|z$C@vqf1#erbI{q+DRG+YvB1jXMYJ0G7C5y7}VYh z(2Fdb`ywU@@gskN#nkO80|P4M@k#;>?*cY7IJji0b?~5S7)yiQyphrzTzup&XuN`k zmPj=;ffCgoDNEB(%kzXI9!?~oE`(j(DP>&VUPSfn?p%{3TOIGB9?giH5ogj7aZD%Y zoVk7`1AnjSk!du&Ezsy|ih8(09&#w<4c42`ib^%j!Ho z1Z4GLU053pd#sL0Lv9Dm=8LETGY8FHLvb=X)OMx~=Kh&sDwxEMnYRRJC+RgtYGtrr z;+lX8j85Izmw|uA#i%{(Z~I`+#@ukA1c3Os@+$c=%%vzD`nft0wx*7}^voJLR?v%y z6ZzepyE}JwS_m8U0iltKgYLOYBQTCDIA=&tf7_?j>jzrcfb?$h3&cE0hS-w&nttbx z%m*26Z)Z8-dgH^D)yH%P=^rds+=C294_+|1A>cxoL2Exvc9gYtsl~VriW<{O4^i?H z#vI?MiW+geu%Cd19Ux^DtgpGkQiVI0;G%<0Phe!kDfAI-`Ldue=%=JfDG%!{G5Z4p0t{}j9h=_VsyAraJM*SE?LkGyX54|Fvt zflyNxZqGTK*_L`K9ta|jXM4SDyruiC;Y*>Xx6SM`_nt5U#d-_jv z=uiewr^63)(Hn4`W?L7YdQ}fnZjbZihh>tGsqCB)LWPH(aM7J?xg}uZtCd_w&@AT^8st_3C&JNLcel5r9o24ShpI+GL2p2t z)FdJeU3;nL%yt2vjUZEokd!1@Ht)o46Gjy4vN?0MQEpaqMNSbq^LoH#k&^W5*dChJF;hiE;B3$Nfe#lFhE@D@HVL!83%B z6-}W}(-Cw5y%`+`J*%CN1Ua>V6D8t*uaE^DQ)UG~&(=)LYv@P@a3A_MU26-m9I)e- zjn_?MtA&G?uh7v$;%c99)6Mgt;y>-!a_uwzpKJ$6#-2wS=%Jd(y2bWd>%z6aO#RS~ ze%r20(oiR1E+!IVr3}%*PL|gYt&{O}T!}BBL~ltO)-0`2*DPMeB4vxOoNa`@57ngI zLpDOZ=ExMS$RUvT?3yW9evK7S-<~_ST_2Lvg|v;DNCW8e7P#Q|kv$`BSpzc%2{@Jq zVK>J)##m$_t~%F@SG1hV{bVawyXqcL1DFmL527yHIm0a3j zpE@@PE}3s~K}%gh_7|y4j(DlhTC}t%>%7$YNmE>u7R5eI>4JhzULE=_ePh?9^gVVb zj+T6kpTZZQ&sk2!4b$-yktY4mJ_N|cE<<3Z4W^4Gc_vE_3={5;>70`-M(b4YSlnQv zA0vItGYiZ9O9nEjlc4KwBSVdkC8_)xYn}e7M8W&UU27o2KR5Io^Oh2I`$&8-q9xg2 z=&;u_g=|0b6gq_7qP_H=F-`$h<>gv!e=FplY>f~w@xE5d0`^J6wHz(i)t6NR2W5zU z^}wNPy!%`%%w{LruhiBz-7J9BvCeYBcgVgcw3FOt$J}d9}eBF#wmVonAS8 zL9&H@*JR;yStYrIQF!Qjmc!F+0Nyx>uU1jbya6l&j3F`>JKRYivuZ` zq)4sg!!^g66pt<{Ih28N-m?IKE7qp}+O1TN2@}AN!kY-2%@jfKZo(f_hU$zeS53*g z9P@Y9`tvT#vS&YC6rmvf>)kntN|_13PB{_+0rxrxP&I8C3kRZDLsPvtgj)o@E)+yv zx~67*i>^8LQqWaM!8p)V9?i*w51pFIGm0kNbivki^Qq@n@C@Rm&z#)Z>>ey=+cdce zXft1D5@*zq1bL@(AN7*e0Sr0PS{dFU0dbb?@J_;!EzXJL&57(QrzJLfS4wYz-yUl) zw6|#!`gCTcvH!A-KB#NER-V7sI(+SRKQOSl*I#jKy(!zFZ!~n~At!_*$k)jjh&gU^ zEzKRzfbE{bP~2_;SY8Q}44a0TJw|OYx3qO6lO2X_s=#9_#-|c(F%TWtb?8#W8~@MT z{vV$Yu`!>g(|0^RlbH7KsZR8HFt~2l?iNDGY2LAAnJZPlZeuj;o;=ihDCZh-H|nCH zn_3Mqzc4NIMx2e7WCTcu!)^55fTNI9)GLxXOP8^)hNA`NHct=#U(OL_fo$y-f(28Q zIl!Sx)U-m|3?$z>(-Hlt<_?_0lY18)GLQC9ceKtq^&S>xJu~^K#6A-{xi+PjF zT3bCIJ8L--3Cp|g-T%WWGxC4$n9d9Z0Q>Rit~8`>CYPOS1}lIS zGB}B)8ui$CnaOuC=T$n7ay;xR`ykk{9H*o(7H^#IL9EN?kD>GFEi*7#nv`&K(Th9& zkP|Ca=`bncI$L0*&B-o(w-0D(_`WXG*QO161Zjb*?hM`W%*>V@=QGsd zn!%muceMHYf>f*NYXN0#j(fR6{<|`1UHzUGuA1j4rd8LXsq`s&8>U@FGWt)uQ}BUi z`tI8Ssgu1A2D5<6o?NC5Y(k;cH`oM@>Y4|34K~t17TXD0R*g=nDhi#5gg*e55jtyj0Vy3bmL?BeCib#x-*@=Ini|F)L{R~D-uT3LqBkR zUaVBMhk$*+-prF-E0ff@7C;2cGsGJtlVHU9^+JDm$z)xFcG5zmF2blzwn!;vbJz&V z4;)f%u*-EerGWTZm$YH-1ddA0@0(dCCO%5tcK)T)ro~^R*&+!y!IO%iL9ZqC4cIvz z=B)-eJ6g$dfQ(~i_+Uyv4#rAF_q8Jfd*kxRT8!y`9{SbId9Ddrkx2WS|Jr#Jz1qGhA z&dr7NiPNv-)Durp?Zjs4f>Y=ay>326yCOTfhF-+(sFo{QgM^4}i}Ls!`ufZxbBO6b z=_2%Ek<-5xxEHy>g(h0?{r9Ufz|$P}mL?`ydz-xlhK(BH(+H5Y5t9Du6o zp|r%|e#X^`!eSi|CXps{NXnJ7C3PzLt8n0X9mGP5^6&An;sS0ZMyZ(Jibt&}_h#Yu;iE&kj{WpU|gQk{l#HB z8TFKpvJ(7YYy|_K8h3+7dXT_7#Xo{E*(E8cObG}O`1&&{VC0fxKW(hdhuaI8GSuc@ z79u6wx@lK;vm{M^&*DaYXm0J@jUs1P3rEjyOj`vLy;248A^Cs%lqObyFm^t$wec_z zM@sxwB;;zGkjdWLmbkt^NH~F6gP$gaek;)4am|ipjS@N0Dqj?G#|4dSQ_T+;D`8=V zo_i(LbrxWj*1^zJZ}ou=u}YB!4n3}`NdVqdZ=F4*6B-4&bf=z6P~QpoMro_mR81J^ zuhV;WtPk_Gocd+!HzyAB>z29&o~8A|;7X6kv+DZ}ibJ+hFKcmDL5w3j5phY-6p#S) zU0|?8guR!CG4>{~TU+g(ZWG(47Yu>5wPtg!@J8~s6htZJz%&^0%vID!)Vt^hOcqFK zF@ZA(8V@ctPP#udQdcQ~-_qrIp15ndM4N~476060P>)n5O7Z}wQt^k+y~veBXXzpX zKS9|m8+ji-(H~u8@TTGDu?2R)s~u!D|Ne5dQ;J4G@-C4Z~pb)b)mR7Y=+cCRF;_=98*~!J)W%}} z6#Q<5HhV>K=X1|J3Fp`b=XeL1EPH$2au;(JuI>b;+&L41`L!^e6*|!W7taq|5+>;u zucR^{uHh=6wFLeGU~>2lmk{w7GgHFo;*-H&k7BDUevf8UO_Wc&ja+f&iu=&7=!OsB z1T|1XmT<9iDB`~_hc?T>DL&A|?w$@cbsafWq*`+=GgwkZC$TR_@&ue5SHQdRsi)|d zJ>ErLyD^>I{qVzVpdNkcfd|<4-#;9&FAM`WNO;a>m$^MIbHk|I-7&|qC|56x&EMiS zw>QbX(#H0mB>&XZ{w3T6$W&t&62kfUEVm&HnQASNnFSOVKfHZA`U}v5(=Vc#O}o#l zt=qag9vSe-jr4_^l_)MHRISKk9#pcy=Tb?-LyAA8w+ZdTQF$@KSjF z?ZSx@9~8QJ3_|n3N| zzl4IunfpmhD*`46#Q=ULs(UqTvJV)i7$>9II zhgk8l=LZZVOvlcsWneZN49qA$Q7Mu>r!#U~HU>?=SdC3v@W%sx`V*SI6MsDN?YA2` zb&zao*EThB{R)quPT>AcPLf!5$4*ktn|0yrHfJuN3s={R!t^FrCT@0>oYq7Q;|abtUhg&Y5&ahX|?Y&(G_UC=_j#s?k=tBrI=;=`biw<#!3s zwxE|A8y7Y;z0}y)Kp%T;%-3t>wR5LAG>+lfTTC*)%q|Pw(y^!*5(8fv-{foR`qZFL zX>Hmp{mYQh=J6|=lzyKB?bg}zYMz>-&X}~$oQ9|3syl2Vx1vMomZ0Bu?xCJFmrC-b zsuJ7gpEhWLx)H}%=(FO!e>mM|Ad68!%6h>5M*$y$(eZdR!6MLa8vqu)7qXleRb2`p z+Hq(>zNzY=s%IeN1{;C>u8~tLpB=aSxrCI3c@dQqGF&Idhht9B_5bzV6{IXSZP>HG z*A;(_OTcV=b>TH$)BYIB=8j(0OJpx-V%cpSV1Y9?)v0QD0lr%tl$lr|wti+@U9a>j z>!!waiG;y#XpS`}5`_|MR-iHxHL)Z82t<(BJxiL5#X4L+Ym{FSX}ZK9^j3u)wFh~ z^l7b5+p$${F6h;UZgi2xmewfsxq7{=6MnF+BX{37_gB{pm^ccyu@lYp?eM+rf7ka$ z;N=r**4^Lyt9bP1CL5 zZZ$|WnG~m*Pj*kTD?_!g&Y`ofkcVNNLZ+i70qYzo$S@0om9fUIY)toeIrUAvlFZ!p z&{PnwN%tJ5i@lOszbMhu-7a-|WGtcHAmo}mQ@miZGa2Az`>cO}Gde^jda0R3^qYjO zHL3xxN)vCLM<)RArR_*@L;|vBibLHJBmR2Q@yYSyRqU#IIKzjTI1!(rmBHSPIe2VR z<6$v_-f4pd8D>L?vCA$Il`$K7n2hyO^NMbwje45yV@YfJcFzUURQ~iWose|Y_6d|g zZOp5#=HPwhlX8!fZL}GN2MH^C+kcwxvb4~Vz&r5yFK(H^Ro+qa;>0J^E7E#G@mR^va8|^r21s@e_eJNgU-B{ zys^CB3XlxUE-+4lHH=q@wPQW#?$UpDH!k!;w-R(OfLaD9FH`fwhlB8a+C~odP_2dI z1WCOL9H93Tg!1@YQY^bxp58uM_r)3|cO+joLuwF0OrI z)28EV(%&u+$=IvcYovJ8k+eoaLfbx9wsi5mwR5LCg^sB+cVuAmbIheLb=Q?T-bZTa z6;whAT*_Q`*_iEqlW3-Xc?mh~%q?h7pW0}c)`3ytPFy1w!b9vP2YaZF0%7es1|$Dy zxf4LtSju5FfFP|V8&8Bjx$ZhxK{FV|dzdX$gTOi=U&*YXqHIc~X9ihT;Yk~N=*_rB zPk6dj2E+6mA>+F;pmRj@#Dpys6DP&dA?vr*CZd&BYhPp*BHT_r9`9(m+wm3r2d}p+bs;nMcmXpK)P;02zcP=8_YI zUW9-0A~MrQP3cCxJ%$vp=Jy&?9Z6&#G_Shx_1z>evEBaN3F-TpKLa z4NHBFS*o&3%G_AmKF9-3y{YjBa&s>EL_H&fsIX9d~O60tCN2k`x zX6YB5-ojH#IkPTX+@;ZgDmq9Od#Iiw0pN$uHbq3_r+g7c+g%a57a9gR1Nj8V$9fIAp}#wao0f2uyWv~5hr*< zp=et{Ta8_HoILN$0d%CNrzTyy^U7{EVA2~`E*yHuGIh!7Ccaw1ZCtZ-*b##LKS1XC zsKIXZNd9wb68azA(2aY2d{9Hi!G)`%@#S;-VDgAoXqmcfV;g$)WbloPE`qh$VK?z; z3LJx~0cVYCnIqSMLEJNI``3nO>{>r2tkj2h;sg}p4)7e=jnh~X8Gq8!79%3NWfq<* z;N=6~F~QU71uS)~ms=aD^W9(p;B zkr1ojF=H8k3w8X)g_BWJOK8O`Q%aTW>3e`#SfP&^=q6^rYR?U7JGLzaPFxk&F?)^N zA6&EC7qRwDo=EIG87S>%1Hho3EMFuERP5?tM=J|rs=?T+7_H#5vCM*IY-3eq7N*zW z%e0N0(?i7yh@5@q2IAdt>hxnz4g=N6l*fK@E&X{P*ASn3d@WlmT7LPIdd*bhvYS?d z&&}R&+ZsEWKiu&A?p?0~Wl@{Ts;(x*?rN4;WgZ?lvTNA{qr@%J=4Y+jvv~S}Aq74M z-Mr(=;Ore|Z!bffC1tiQ+-zKuQb7Ecu6)_gCP|zRg}trZsIlAH#2kNPZ|$uYbJRNi zj6Fj)_o<_C9W>>-ZC~e~d2a==^v$Qb(G@K<109OAEZz5aIEP*2S*y9UVoUiWJkU1ZAA6T66K+b+I%M+2*2 z=S3F|Brm&kSAA&DrH3vJ%jz4{jcUMhaUdmnJ9%nkvDgCCj29BPZVY2iS$?5j0qbTY z2Mg^sa%KzD4D;||M-?Id8&nYhJHJ_ zdHD<%56YAFfticq$2zXdz?RjVeUvOwU<<(l;r7J>gkBym4RZ$gex66p>ZKCh==@@lzK8fLB|-!6)oa9~RCY1B z=gbZ=e`VmAZQEwv?M@qj9@Cb75O292T7K?gv~4BRVW}8@98*GXW!#3d8SwR3i$AK! znix>6fFLM3Uypt$7OAs@h5G1LSkXZ;)dxF`^aHLH7f-@nU;X>%61?2yS^9a@-9R5) z(@8Ge>wI+m`ex0fTP_asH9%Oh=P00KyFrPTYyci~fLYft`e-u4xHe84FpotPlDaS| z6C@LRc8ps$GGPd&i!g2-2m^D&u%5s=xZ=g&-Gr2}4ZX}<`GIaKTUd%bT_3*F1)-5# zEvdF@6l-YoCUp!+totpO8f+ zY{M$X4dAzPgSYZEJ=c?i`X58o3APlfMiqU7IlmtCTKlchTZA_w<3{>4itQhRHbNlU7yfV4yk%HaHXjmchAT5})u$mKo%b zv00x2h#UQl<}pmKM5IV-5TT&Hd;-?Lk1Tdm#R5^J77~!2O>d`vN5Ayv0~vD3k=Fk@ zd>H=CA&7Rb0GS`9vVc1_h-DpK;Bb%Lt1-s;4&rDxh&Zyrr8-MYp-v;rFM+DyU%Z%X z?V*MX=r!th7<@_GMO}sXsjE84MJMY&f`|~?vOCBp%03Mqxm9l08N~M(UVv`#FqtFf zG{EbEFe?sH>Hr1>f*ILddG0re9Q9Mc5)aV#czS!k>Q&91i04}kPEG13uH4@v3?RI{KR8rfO~G%URi8t0EjE8s%%BYR9|Q ze26Px)^kG zV49zQDsFaV& zxu%_X_A>Jums|q>Mj8?&r$z)0^FNp%hJvFj2{(2;u;Hj&{ITv5dJ%s9Tg0u@u%6gR zUATo@aOODSjF^&9X-pbzeFP+`Y(mk;w3v`|9_@Ou^8=4E)S#?Yg(Ad#C;e|g1jmJx z!rf&IOvSX=&vk&}<#piCaBgKp1FS|Vt_w9XkZc?=v4JS1#VF5_u$w?#+Yf z_J4#IFPt^W!Gk!&Qk*z-*bm5ICupHxz;+2R^ojxN;POfbY}hEs0&f@YEvj^)u*)GG z;VG#opud2(j5U&I^Fa9cN{&p)TYOlLX3#6pc1d+Obo{ZG7qHcW+0Q(1sgFL9c>+zW73YbglKjCqUjV=AAozD>cWD%|Q^IiJVjKR&Jjvx`Lm#9_ZA{ERSWG;>9Z#R%`M3Sx6oVk&it zkWhbS5qDD)zJm?kOZFA1Y@Vop{K4ml$sN?4=o9)M={>->N3P%Qd-dQ!*vAkUzDLRq zEe?N@FwzGX&&KWJzcU^s@u*mfIC%f?C)k9*T*-31zM{mK-Q7k`@1~ma=##wC#`8z& z1Tf1P426WHs`YRjb+vX5CKuqQfI-(1vvg&so?3e@sR+v3y57#K+qN!Z0akz3nkG5@ ztJskq5tK>@i>G$pu*qwjI+x6E_1wK=MFaJi3Gf$QX!eV?=@g+lg6-BvgHTTi$EJSv>i6%g~ZF&5#V?G_P4Q#R@@twT9uO}qM9*I!FYdO5jL{`8H}rK91Z}3D{%;L6_zV-j1=s| zaG19IOoF0FJ{qQPbruEsdJkS-I4Jq53$b|BLZMC}iJQUx8|(3CPY(F2y9#`3L$aq% zrsjy8Vo_@}F*_e~AzePOU%B~$Qje&8hl>24ts)NeAxqC8#G2_jy1$FgNBTIfY> z#8$z@zqvYsEoJ)q59s?6Z`0S)zx(JTSlxuP50J;0)s@Pq<*aoITN7AA1y9Om)&VS) zc$H(EY19Oq51qJ2>Fpt*oS)(d=#PnGJrrHE;}J)H2N6C<=DMk#JR#k;ukCD=Q{o#k zi|s)C_w<>wRm;-kiVHlyyY^Zz*f^E>z?gk1h0L`eZ9PBUEi7qxE!g~Eq{B#Vfa#(h z1C|E8eJ%?KvzJ@R;chCCuf{3R0aAYEt5q1hP#|2?yI(;=_0GhMf6%|b0%rxTLdL)R zt{~N5RW60V$pfnVeIWh_A7}?Kx~sQCP3Bj7?_RQGYum?dAGV+gt>=CIs(tD0y8^J^ z+?uT?>0kT>1NQ-3&Qul!XqZ*wY*zz55h{zAqoWC)e5{$pV4ZR*7rW>fJcA7nepU~D z-tq-0AvjhB(+k-J|<8hJFP1}w;^JAlV8 zrpQHSu0a>VMs6nOcT)}d4!IMjyv&NnwA67HTE$DDd&7^KkT9u#pUO}u>v<9G+ z#vJ8Kkv&5!-BI(?jT<#vwzT~DHjRH`mmUZP*v=(Zi=|L7IiZa56}`uRn?9f;2^tgN zK@#vFqkIuqA6IVdm~a>C5-cs6iuM@ufaqn2d%q(VQP((#`>Ebe!cM(^J1+ZNLd+@B zp&Y{Eb1~W0O-%-Wl|G8BEtv#;UMt$t-a>!!-yf1!U*NoN`ubHGy2{IK2Q~7EJs0Sl&5t(AMb~oIpQOY8{1z zZ6~J|sHWWUz^2b$&LujY`4mme+t%Lv*7+@&?0!00WjWIGu{>0yK>zO`-!O$$%dT- z!#zd-nD)(zKUlF@l`Dx+9hJ}z!H`k<8zN2fi-fBOqt_C+H7JVFpEMg&vf>v%p$qbp zyjt{pRvXbIBzE%`@VE!at{$qtKwS3wnhflUla5&J&}~^_W)Px8+oUA=R%hup8I66d zdRMnWs|ZEj-s6T06+Bf03I-+m7;L%yPz=V@r?ab;jyx4(Td*F*eFde58=H5F#R8=) z8+J_qrw$$)J}43{M>%*>jKofi0mp}kqx}oX_HJsZu#1RLFYg1=6p!7kt9Qujv`8Q@ zHprAViCRrM^V5=%!#DL}cA1`QFMtUaoA)$x)I#5^=>rQRp5@ziw{TUWmYwG<+GUt` z*({z?&Y63~d<#l8+Xp5%>Ky~UWNv@$b9?rf(u0nME!);iRx2=V0g%!VB)3}9F>Ud} z2lSzdX$|zNaTW3W5r@62RaI>li5zwH{T@$mu2~5@Ez&47ZMLs|=5h~LqZQQM@Z0Sz zAwzRm5m3fjU>7~*kh0?c*nqzw1d`D|eitig+|dF|39X8qJaBSg)F%x$iHVAU!XwH)2kh1MiQDyfjfBg92g#R9!=s#U9L zYE|f=ermA{9n?n`4j1*<|5Ils%%~3xPe{X;z~ob$Ha`q@*#_7A=OYmmR-G8Rh$8^# z5FeXDV&n*9iP8O|ULXlxpbR^^j4#2M0Qe2`k(UE5^a?1XZRF$}74O_kTu!YVBJ|X! zlZf{yr>j$7i~^I3n(qy1`8RfTt!mhDC`T@Ov4@z^Xzt9K{ibZ{Z^2(5hu*nmr#Hca z@ABWbYLz_G-Q1f(Q(la2+qEUcm59muRU1|}Y@k1f`O#8^ASH!Ppir&K=McLk-rBa! z*BV7Gv3BO68Q>7%4#MZ)aj`}Vmg(xd;6X=BS0zfpQ7&^Y;$d?s=SN~M38xBjruHVUMS~X2IG`%_11`xM}qq`US$< zO)tyY(eG&!w$+d)g4|!8*sS#rb{QaKC~;+}OHhUV&P}b1&c02p)V| zBX&y-T@!|m0T`7}f3qM%ZrbC1Xw4e1Amhu3C6@B$ADt!R|CP=XOEx?WuGah$a0?{f zNB#Y>Yc-=lMY=vi7t!^EmipseOz?6jm-{>~kaA2GnBUDt&|fAX<#sbiXVP(;ZVBzr zOMQJQwp7mREoi~M`<~dooi%@c^V_W{AN@4Sekq4(hIJefk8Enw%Dm36@-Q?J&uDY#%LPlo&7gkx-L=7utbjs|X5 zpXFxE&2)cnU|rW%c&TT;eGyOPhu*)c5LB~Uk@G|E>3 zEJIua<`FCY^T})vHKBl5L?`vL3FuaO7{6@j^E`cP?)eE~b9EXzF6k$-mdW!X5TWxz z(|ViI>@K*uzME$)=V$2OCHJJzL$n)u4CfQe6oHv`xwb92MV;Nhww4FD4cCGVThb(T z4-+xmU5-pKz`(_D5oN3Lz~TU{zJsuG$VXrhM0v*9XlOl3BUb9C3qTdWq@%~)TIRgr zhR0%USSh1J#iF^@F>BeHC=A}?$5t&HzSBBw$?6zSCFMrfES>52S)_LL*6q!Nh}*Pz z!vc1jHPs|bOXDf}FC8j3H^;S$;3DrJr*u=T`G@nWc&mk{)d?CVAy;}I-GyctYA5Cs zN(}FkMcVUrS3U`f6HJmak)K$LPBw~xSddk16S2i|^)jn5n=!Zy9bHIeA2eyr6Va+Y z?#H)o4XA=MCRi|caP2nOBR8nCr^op0rTz;KSg_9Vmjdf7?9Sj9i5c2JKYd!g__ zPQO0SQL6d*r4jd*o8}859oc4JB_diLUH`z|dNRMod+VY_(k6O#6S7BRO?S|r#_#-| zYSlaDYw2sD)fi}LIyh82JZ0lj2M^F@ir#sn*rmDCu1=6CnjV9e+)k$ zsIoCG9PXnXt=3dTU>xrhcf`LL8)bdp+4(%?|NH#4*S=@iV7|?YRm%1TLd0`616{=K zjJ(Bx2Z36nh}&$6irNHW^k8*$z_9tY#W1*H_6@5wALxfKn9fzoII}ODX<7(^v6Y-s z1b6_ki+!7V_MzH1FtHEt&PBH z5y0#f&`3$+m++xw-B{uBD&3W_JHjN?D?L=qI2TABph+1q*`YUAhEPu4($_w>U( zJab~<_3K$0!HOd@BD$`e+QqAj*NY%lB1CQpOI_#Xy6S^YPAIP2=6ChN;MSh6V0X%i zAVf)pK}l^;C9nt;UWb6bpAb>E6DO&e#Ep{1bxQ*{?^QEaxvtS2B%9j55 zoA}v#hP`wr2EP!;aRXoT;|UFwPxgAra&uzQx|Z1CLck z-%?K#2dPcy+Pda-i`>ojxvL+CGlc?g57k{j!Vb@hO^q-jCboV)(MqS$`$_u0r%%6p z>eN>HnrKK>>yt-iwE;4?H}L4jjkGUd2zgjP*}S0^`F9w z#;F=)Qmv3-{x|XrmmFNV$`e(}={U0jfC+fvlr4mFRQ`?c_pl(fwD+4At^xh| zTgcfg1iZylI4Vah*qJ?Ke>c@xAiSFRGP~D2C-V!XsM-&+0m)d4Mq1-KTU+gN%Nk@} z_ac`e(*Zf{Z08ZvoU2y4cz|rPF1U#Poc`twrj_jXt2)UQd+VOrwF~yj4%VPjzQ(zO zQjRSR?UK`hSe$W^z*)!HCMGh(8Ufn^Mv~!coC5h54pUicf{_46zp|4I7MJ-W>?d6Z zW0gL@W#CL9ihzxX(0uXsOT6>EdmfW({ z4*?O!x#Uu~7R= zC^it`+5O1SqYNrrs|^~+5)4zf7Q%lAb{sshlbA)_$ic9m_ZX2Vl@PB`C724v0`*Rpi&#coiHOD2)rb%4JU|u- zR4zx;-xHU_R}T$EpK7F!BR~D?4E z`7iHmrJXu{4pt0%FHFvS45K2WWVe!2yQomdHyvshKiC)&DS?S!=z?mJ-_3P5G`KkR zG3Bg;rl&pB-1A7l)|ph*E89AeHtNi^%9~_~95o%M-Io!!(?c4+T^-aFhOO^;u z$%R6XhbLx*8kLe7*Ku9b8fVZvZ?jMA^2ma6uP5&?c6OO+%w2iv>kN1cuYAXR06^ab z0n5!}PDT&>5>6(v&M;G0nBBmQlgxCe(x9Mn&3{Y8(Sr1xde4IN@2<^YZlo;}K!z2!5vMS)#8 z((24+c?piSHOkS5f-%DlOaMO&`$qTB%1`P;(Ov}`T8;>H+uL<5(hm)nP7*es!< z8x7#n06Q+EGbJePwRYzWL1VE8IZvzE6L!q7R$F-bzLn^`b#+%xng<#y3VT#S;bNPl zfs$G~==Wh5^tu?DyT(Zi*3cCR2Fb0U3$bSpV*o2d<8kQ5n5c^9HAwfVjAmqB3ZC3rzbkSdCnf0P(FbcEZZGxvgxcOMG<;VeZPX zmHg&bZExOpU>4@UPR!~=CaI`F3{BDkt4JReQ-5W!S!WyLE9W_jmftbw} zQW9P{8;T3QpR8RQZ0@5ULtOgr$h@|ig9wh0P|1W=^Xk;(Myb%utFFl+ZFTomtvrR4 z?VL2sC$0L%kOEjv^xbB9Fx~3YM8X=MCKO3oY%O6K6f-$eUj%$Y2kdYKLSC}_8pi75 zea1Cj*yB+dEbTGu5bVtRMp{j324^+lFlALc-r9i}sW)LrC^LxQ_Y2w|O07wolju2WmB|W}&DEHK4q8ilo7c@U!@zXM^4+Qb z$Jl!SwpE?&hy*M}uz2}_wy!(BgKGv!uF@n|=yyg*Y_s(Tj zsaxDUV-*$O1 z%^Y-Eq7R(Y5O^?Pi)x&!2>ZLH;-?C9O@>-&FTU- zm;{iM973}6GnEk$3fLYd`!~@Q0z4#>MWKa^fWspr6i@T1UsN}isRzqqz~6&_itFeA zED?OPRQfsa=S-zWj~+~*`4MfR3!;uuh|1+|vpb7+9wZ8XTTy*4elOq_AQGT&#&A zK+P#SW6k6$fMaxKkW9xXf@IQJ4IE&-&;a)?x)m>i$4HuR?qH7j1e%ZU@bvZlveL4p zj}6mNmDLI7p8FO{x(AC&o|JAszWM1ZLv(qE7m66Gy1Un=({1?gaiB4|7yn%Hk#zon z02gqn-RDWt85MwfNSj6mL2}z5c4-W+5l@dShGbNUU08iZ8KHGrGr|R1Xq;i^o#2@8pVjY^Ox-Fuo z%j+FC&zon)e~;eX(SGBVQ>K|aJ84bNysTR&wu`uy*kHRq+S|$(LeW1yGmCx@Pyzpo zHgRJ}-KlGrxg0>Rykvd5JG^SS4_d@hAl&!Ep_7_Ci5)6XYbF?=gsX8K*cSo>Lu^dL zmN5MaBuiL}gulxRfe4~L$wc%5sZSG+ipi=FT`@T(94{l0pHC_pg|j*@Kib_XQmgrt zz$#&>ybi864wxa4xO!m>z2;?L2#*~*PTGJez_-A!mdi-o3!~mWQQ&vCCIHnB{v?Ze6-2{*+EY6~YTE&Y zP+)>=E$s`)B@XL_TK`y+SJOY+0jx%nR;kr8U{mosJsHdC@@Up!v=o4$# zEyo5CpVhfz>k9m0vUSa-Fjp^#tY5YdcJU&*)LZQ3W9iGGIIE|%Oerltn*rhaskEH^C_-ST)o?;_E=F~b7;AeF&obj}`(u>MfUlBb$MkzQ7TQf_c;#tgm zG{lk{JuTuEUTd3y8;%9f*_8nC>pW*g^@EO%OU5WUSLHGTfIZJ)6E?T)DX@~8BS;YQ zt>4-KpNp+qoCzvStTtMvLf(#!)saietjxL5hl6qhtBn#X@WzOuMazz}w9Vj}`)`{& z*VrVae(YPhZcUIYm$JGp*xPYx{u4*{wt|~_W2ez z0B$vpG{xc4l8npbmhy>3#Q@Fcv;`5p$LK$JadLqtUt$=YZe-@aQ^PWT_xbc_rJ5?v zqHe7&y1!8PPqB!(@bcEIMiSdj%M4?udog5=o&rRk2i7%UMt!x7JJPrF1~({Vl5{W3qK$h0YFCpXU&Qw)J59;vgdR2}3gXb% zlnLL7Bo3Jd3Q~w6nGj;$h$u`J0cHx6=pb4<9y(0+4UbdTRadSg&C5vL-TmKe7C#QX z>P_h5>MyB{)%{3Z7DbjE*}+orH(fW&x5~QZ=2<`lI`_yfrxmWnE_$?FO%|y&3A`dj zbwB#(qmY6+r%(vv52eNB<)8#00ECXtDGp!S&J#K$!q8xx`qj?X2cW%03PgMaUZe~e z6!Cc4hwvzoT-j2j+DLE+=Mz<7$-#x~W>~jJQ>Zi9*Q-VST5iguz8_ zWE>}&jcP7dppIPabP|cF{r^CEjnM=R5mROzyXJEAf@zy|5B<+8BC*H5_vm!CmY>?P zVnp-Qr=Q|Kq3QVEM@Yjxy0Gn?TSW%$kzd8N6{%KJ0YWcsa|n>Yx%c;&rji1+idVP@ z?P_aXJhLU*G-DyQIqm%#x7Zii;MDOJI`*-nj+me!+CbF<4}P zw{e5cQB0`8RB@U{kx$bJ*!0>&5bbg9uH_#) z1Gg_+2+l(cPOC9xK9SiZODeKB^eUh!o&`dcUvS^`>CyT$d` zjj?ij=ux2bEojM*?~l>ntFKUds(Tz%ym}$^qiO=h%jMC6sZwq!nJT?#akp*j-M`q& z67lZ&-+QV@9;B>y-dTPB!S99p@4NT<&Opb(;}6i4)!swXr{hW-{m=gWzE9^yqrNNA z+qlTp+4@UHRdacuOOYInws0jTA;&d>PO{liHXFx%LX+Jg3&|aJ3kWJ9q5 zy&`az)()}Mg8Az^fU&m~{L1#&6|OJ45X%)zqMPI`9V(eNUBn;!>t8~3>rhf5wg@EQ ztizsbm+>tURc6TBtKrX`B^UCcBtnVJBAVihMy5;K`Z}BvkwqZ(6_{k*1B^N#ZL+l{ zm>RNlHzJv5p*fuj7s>K zQ7TvcL7r4u(PD|v+cbCUWfiuPmpgymR9)4+^R9V97+pGczUSRS;a147+t2*ae`_RG=44!~mAA(^5(z7G4fRMZS5nJo*6__H%s{P2v<(_*zS%Ey#`=llLxhmI zo#ZCkptFG4h4DVd`p!Z2lStPEbh)=$fuW`1qq&^tfd^)iTqfF#9>zm)f)7293RZvm zd>N*41r?D-vkzTY!VinlgBAQ?5kEhX^8~T+9$mOF45`aQ_&@8jvkK@)y87!h+R=^j zoZ!kucIVR79nbE4AAkIt4^eI+tqFQ302l7rdVSqizh-2>bx|F9^0e#5Zg||#GE|cS zdc3KQ(vJJ%6Td^`4#EutfvK68`e)##edA9WpJBFU2R*x34HeL_){AZ#0rsCMx9s)i zIHg8-a@31di72&A`p=ERTCfcq%I?7cFhHk$2-gMV9f4+z%7wq}y;p&&j zn0@cuHruiQTg&s!FSi@YLk^Bk5MTFK6zuuSp0If?K*969(|}ramYWMOkz;gaLjbbk zpSp&6bP(}rx`#Z${tlVg1`bMl(xW#99b&$kE3&m_o9uCqSZEXoY~e_AXRlubpXWKV zR1}|jm8USJ)jT6t9x5oBI)Vzmk*n!>41e?yR|fFCTpbq%H00KtmZ#;Yqi_mA2qPb> zpF*RmMRY#_1k0Y;Kki`K7eLg{@JAb2U&OTl3@EqOjSt%nJ&lvB0JFUp(%?fE3TSUP zE#P!>1aA|}yxLQJnYy^T1MLZ?cC2-GJC<(64=B+Ogjh_a)zuTnGp-H06Fj3Zv1=v% z!`tZfci+YBZwi^GBSC%`X#63~_9MfE6^Aa(ahuI2no$J?Zw$Fu08~5DHp~No81( z$isE@fQ+4-!~6{KEPJof@+Oxsc*4GEzCFfCJ1EpIMo-1LO zbTNEG0xb=9Lkc)JvkaF~pv(*%GWe(DRbs19-dXOhUSk?hWVB3p6>G?XYS(jUg?Z`c#^1^I(|R|Mlzf$ISN z>$nAMwA|E+r*I=D+r2l-@C*N$+S!XW<=yo9Q&%4&ZQ;x#@WijU@o*Ul*rgi|?ZqE; zS?8@<7bW~wrEB-T>fU{*S7hW@4(;{h*Rz0FmggAJXMGBXyi02SH^?aDC@a-$iJFCf z=*3?lH@*X&Ur?5A{Gae>2lc}!UkWXXfHqBW1d^AVoR#i&QZV5ud&UC(p`;u*l+?w! z?c1b)x}i{aMKq=)K#BLDrrp8EHf@3|jSuc)qq|PSOdUEQR}%*(tOiWDu7-F!Vda?} zU~~-^TIr&|I36X_H)KEHVT=T`cZ{qN=L;+eDEx8fOT$cBGgTLooPorwn%lq;cRCvr zBaH6aO;0ITy9#Jwux(c-E#%ny3UB6MjN&Z>=)<}{{R#Da^2twg)}`m9*ua|DwQi0G zw)}c(xECR|SS}JbtCcwi67ub7u~-V+2O?JWa7yI&bU6GMBxLHea(7JU zuwB>&Z7HNHcc@Ki6$+XJe6`Lc#a~&UjpKJ7iO1t}Rq^@#fF}%H+L@8IbXvokzB(a+ zp(_AYkUAtRz}w>TBTGkS1K5VuYFcFGdKTIEw#7l2eX3bup5f8yQhK9418UF>m-*?s z8JHXdxWEh$%-hq9F}cEIgPADp3{$|QCdhHn@TaF~!HMMW_@)xAx1;7xm8n;&v6pHo ziW8)DxAs)up|(~py>VFBI=EvNODh~%leho2Pif_OBR(PYa8n|?lvaD0xkea(kE*wY zZ6n%t^)OvIzxDWr4aSbGFTecbz47?cj*eGiu`s@=IXaT?N+b}!w)j)d>lFe?z{eHS z@q||Fur6>b+ciFQ2VCFQ@z|WWWJX9<1R-5Pm_G81lLEX-XT}4JzYoF&Vl;kH8!ha$ ziwXu2_RB$@nvhPIjv6`GM8BY8a%S*6dZ1FxmDZBY_^M*vddFfG1f18r_Ks=gWrGlx zj$FCUhDXC@fK^cxs0Y%PK2uN?XvJrt3-B&@;*`Al`A2=gu2PQEQhrO=0g>yEO7`_p zGHMfDjt(YmfT5jL_4I+v1s`0yR-L+0vi!!?b}o$A`X6ZOTu@NJ-PI1S&2_ufotjon zBI{`BRGFnN5B@Tj+my}5@CWv%Y9QI9?T)0Zcj-d2OgtrYiS+Vp>S$c+*2X(wZ`(mN z-ti4-Bf|j%S$4EmI-R)UB+eq{mV9S}+%fL|xI^1ef#7OP+D!^1y-<|1#S=aj0!{Bg=({TZT$st+UPcUwREY=5QlldNY~4EJ9JwDdUJk=9#T%d z2}l){?7(Gx%9fZ~sYzkeiw0&YsSb+FdvWpNn{Q6MO>uU~-t z_-FO!D)baC9}OBtX8XBDfq&M}`AuUB{30XIw_s{>cnC0^Gd%gVpa<(=C1h$9Xg$7~ zI!x;Db27r@%!xuf%7(-9!r`ae+QRt3*(%>yQ7ts_6^V+|R_s*p%_4PS#6z(KhOkno zjy+t9F6EHnA+@>*p(5p3LW!LQfok;ok=dp#-&ASj%5g!T5ylkQ%bEazdT&f7PP%eX zkArkvBbFN1@n>vx!{eQB`xxniMre?}LXn_e15qUYu)Fx9vlqWuxj&OZiG;2Y;^~F{ zZh#QSk6f4$%H-`X;5;*e;yydBPFr|Jfi?bNu%#Os`_k190cc)Xd#bNed#k(Axsk4| ztDITeqD}bAjC;*Ck|&98Sx#5h25y-@-xF-}62l!pgy%&f-w%cS_=FW`gBK z+>(<3Ek|IsX?PlD<=ZDt7$_*lS0ddgj7DJojX8oH^t^I4ROFFDvyvp6PQdl;>FE*r zBdvU|&=YKxT$PaNS!r7Lei77ShuHYpo8%Y%DLWvFEf-Q!^4-3jv~eIa2i`=w@Z1@M8+2KD5&mAotB%E z3rc#C8MxF3&P^HQzUdV$bigQ5{eU7*?!mW3EVYtS1WqFdb?jM?f!I?!34q0_6^`l| zC2}HU=Sck0_#*#KzKHMM5cV`I8_dprJjAm|VIpA2S#Xj|vCB3-9Ss_t?tn&K*{CiP4dGHS>0ZF(bcnutwM zttNC(do$sqR(xC|HUzk0R@yK1IN>ftA=^Az7uC8eYWap5A2#VEm=653r~3TC z*`SYz3;(V9h`@p~M*qy3*>@-&Xdy3EWBD}X2TzEQ55I#3(Oq~p-dcQhC0g=w@gFpkstBJ~eFJTkE>JukQFq0v`tA17K&ZJ=GtR@DuHxtZBS!x5jwTo4w_1NK-^E z9~jVuLcX9s%@T1UJTd#vKj0w5x95PblC4jueTJVDK%3kj3e5?Ho(Kej_y-oB#A=m+ zMzM8y)GiZAUhqMq&B<2Rk zGGc`U`!mi;N|u)<%G9P_WIFY$K&yby5w(~=*&(q4?RGh4%>XW{nR5WVDFT664VRCE z`-Dok4vdyiA-5ZhD1s|i9CHPWv(80P{4FwdC-gCfA$ zq`5mL&5GMIbf!zHS4r8>Zo`(Tv^y=fu`#Q|GIhF8ZYuQ{R6zN>PZ>XFl}D)OLE02Q zTzU>m><;L^lX(bAut5B!vjqwxtu2*)Sh*Pv^8P z2Uy^ECmrMYz$YLu`6H<<-~p(d1gMvLRa(tRhT;j>!G5t=i2paG3)px)JWDICL<94t z7h(J^KXvY=a(QD#KjX5+Y=xS)VDBh3y?n6r=TmPwTmk`G*wief;H}Z-ChIV;2%82+ zm$io0u3rI|G^;jlK*!%~7hM1M6FoeLxD)sN4wlpkEgH3CWKG5_;M&!3gd4_?Q38_> zjaeEvYZOyniNzF+9^Un|_|!jL)N|GBBKo{j=gaB2r;bvq`W1Tp)C?u#MTW&<{y#?y z3+}pr1Bk18Z=bb1rH=+BS&2VF{UbY?nclNB_b}dVwhQWH$vh$5$vcUk`f?f%l6U=| zp$;r^YGP5fPZRBgVy6Qz^%^4rjT=G^1+WqthcfA|)WnXttjsi3BiyT}gh;lBcx*SfuW3$5*7Z@4%YdD$%8r#@VQ*+DEbo45|JdV%f^K?y;qPSTv zgw7%|2H)VqAuZMo;uVGyiWtFhr2`i#TpQ9M!C9kcljMmT!7ihO^z`Vd2LLz}xWA`% z!zhjwxWC2xXL@_Tj<=+uvZOSU5|PpaJeQG~xc9rMnHjtX|HMp~kYzS0LF*ULMU39} zC_`=PfI1RJ3#LrDcyzP_KLuw{QwPM=C6}V{#tfGGR(Rht-&yl5?+hO!UyW8hc0D)8 zyuXf~a_W0j65d}wr3ZpROTtIqzf$=;){=?K6Vh191*nUU69gCZu+=$5Z_`bI`GWf^ z)sIVmNK(lzyc_=<76V8Ggt(PiO`-b1t#0TCgMqC`JG!F1D~ew92pqDY!gV{on{XOI zlcg4Xm**KDo@5i%Oge%jBc?DDo8YGqqSbNIpl|ve4E1<}-idL(nOh$xE3IEA*SMx= zT%n_1!LRvKB_>H;s6QV$ew#3QF;po{b2OYWFK(h}2e zIe!^?6NizuSEiv9xBqv?Q_TJJ`_w6-k)|)Nk`{=uyW%vtDrpjKpg2 zpA;&tBGwKauGvzPBIKi`)y)>d_=2Q_^AE7koElSasoBt6>08_Cn6qS|mk*$gjuofzDRK%UPSu8-v+^nyQ+tU~5-|0azktvyRL>ks57m3X_!q*NlXKjh``s zMvTi;X4K^dh8rmf3pT|)z@@n)T0ZgeJS67iufA+M9!SfZwd@?%^}U?DiB+Nux2KHl zK2a9PYJXFyyyDrK(nVK=3@M%8!O!w-KH8r*bZ478o4QkIRpAgGvDz3_Era|g(GsbI z+TJXX*n~W_uIYIdu)pc_julg+zNI#WZ8=_UF{IOar@lK&U3_W<;%SPGw6oVlrJGHa zQj-m~E@Jb}7&TkWQ)fYjlyI#7fUfa^>BsrNYoj--A$(&tP6@@Y(|w@Yq%0_M=DIan z0UHP|4Mj<$lF+h|%2DI9(Ebe;pzg(x&K0=eXbV-Up7;}z%JGL!mStMaKnieq{S}a& zHD#!nb+ZA|KfPi0gI%_wJS}hqMm(nO4!Ktz>ptjfNw-S_()JXdO{O6}E0rF~aiq;q z2UPQ$41DSfi8x?h4Y^j1M$mU)&k|$xte&Hvp#B{Cd;DLx(=^T~1bwY3b!5Rv3s)v* z8~dkMk6A6FW~VwDLw|F?w4utQ3I@BZpr17kKzRFOj_QE@-Iq0w&Ya=oip8wJs^u=~ zELuCVXHi}QWfggP#)g9b?|Bf-TGwA~mnZZ$5ztDF*z21byygIWht*-%%_=(#_LR$E zfs;Tw`kLv|sS{MZB7>1oMjT-zRLpxE>`;44rc)jRB0!S6Cnb~p)HBsQ`rPLp>(}}8 zy;G}q7w-Sz$>sFL_@Dor|7Mz6mBd5%A222XjI4}G=K&yo^|PP&<9QhJ#~@jgoZQLY#xGG9e%X%p;@wBH0;Rmu3rxZ-A+B^& zhd#hf@IClZ;&-5aKvmCkWELZ7gRq+TyOWY|Gv6$1X+=xWMfltg%LU*+VeIJWud87T9edc$f5t;P_UB7q1UPy@BON#8O&2CAKi%J&)MXQJqdsVB}B zG4*pv-L_%wiNHXc?xYQ17(~Xse5MoM>1^18T80#QcqXbBjo6$fbNf+zvV{$Nh$Gas)w97LdJ=u_Q^<;L#h2no39#x?v<6@6CYKR{Pq|J%h4_P(1gUQ0 zVySdj@EO4B zJ$o%h^F-`UzMQk)C-eH0ZOVWTgu?-$(u=401Oz6Itda>93D&j?Rz+fqM($i&my22| z2PWO>{`fcU6GJf8uy-OXx_r_X-=yz+YBn|Fkt133WRE7SiHKW_14Wr#nh>a!RHC@M`=;(? z8EXHj*KBq^kHcWFgQK`tV<-B1<;rW6O-URi-|p);NF)pTC8#r`?}dPjXdy zVUI|!;nQOV_jHq1)0y~0W$!i0m2IR%<7d=$Z#~2yVnpC_hzC`K;uQhU*fybkPA^KG zp?RQ42yQ{6luz0!CwKU|po`5GZB(}!DMiu^tI@y?!`@0Lrh|~|GWcDLVf!z^3_)wl z#IU6&)KD%0<1W&;q^;wwh&~z+N5#H&)Rj_Lxmm6WU=<xKA#8w>a$-SPF}}tiYobV1!!&*vaP zGs*o!_FqcbjK$k;N?MYKkIs=)?l{x|_*ksy{_BC1jnE(c2%JL&VBnE%h4I%RH;2J~ ziZ)z6$hg#fI%YzIaSPEK14@H_4AK$;D-%(^oA*sCD*NR5G3}sj>kzShy8qjfbtEd=n`g;#28!Vlkr4oi7mWkbHEcgXUF@xmA7u}Rm;6nd3Nd5=rUFE z{H=a2;GcNcZG*QZc%iS-MF^06jH_{0w(&|6fLzdwKgndqA)7b>O4+cT=x;4ESMTiR z8bv+3*Uo6}cP-s~Zc3sTBzJ6BQ0fP~zJVAm=ld#R5%;Bvp)lkIs7ZcuHM%?PnOaol zl({L?e?!Zc&2|7Hg?--2HSLKFOQ$r8Z8FQW#VdY*DJ$eESg->T(at9!*7VD2I?13!S+SOH!DL0Imb*ncK=s|WccodVk(i#5PvAuegCGotK% zF`#ZT%q;+Umpw`Li(bsTdXtiVac8-TsTZqh z>YVDWPNI5|%r7U=2k4qxl)2rjJY0pG6Tb`nOFeY``E6XNg!{K$fv;5xP>H*}fdsrQpPFqt4Qd9KIw1GnDM$?rZRQrr`QjUb|=YCN$LB%TlM$Z`B)1 zgEm+q0aL1>4QU{A90n&1An=H9dzy*S#E76V8QR)GONASZN4WO5hn3^&%^2q&)pF>rH}nafD)gLr;Boo)H+8jwPxShru`ul6>Wl*K02sZjb10`ODzXFBjZA~!lV}IN*fB5w zRic?zh}2jzCJ`V+F?C}7LI+PS=U8SgZ?d#5T?AKR$=Pp|p^5GzJO|vqAiVHBjB~`V zBcis|$OCK0E#ItPF@wqD?u}%Ms2G8!9x6hW-XusMBp+WLG$qM zvNxlrye<9ZmUduJ$s1dz^*4)50z+W{ma`o$(AQw_Cv7p7k7J{KZsF7kY%-H7o;zS(Y+pf{bm5*;jO z|9l%sKi&MhH|-m*sPL3>PXAR~+&B`|g#F?e470qOwGNouR6##5zTAQr!($|w+rRa} zfe&=TcuY&XgD2$uu56kg0KG2=&OpCOn(|3iR?(HCKJK|!e&3%m>e zX$IeENTswsT{;W7nij|bzFg1MG)nF^FbloV%Ql~YxK4q1##JwulUN3#YZqx1nJAEJ zfq^C*j=^1pO}1GG3C(G$iiF@yi%9JN>Q|U4r+~?i#lH8_OD_TB1YCp!dI_gq$!5*3 zymD8DR(Tv?FU?k2*f_Rn|Cl5{b9Pz5m9g^p>-o2wI~Q2BdW3R$#DT;-gO@AWl2vqC zIRJNKjeHd++0z8qi@9FD{#_o@Ba_9ssRffwFBggxBFoj&3g$*~mE8g=gqC4N>5bwmJhT1l-d}N{&=PNLWt3 znBSB5i`-9mxMaVX9fb2xX|x(R1%{s#{=+2ZV4M=D{@Sco2**K}MX6`Y5~VWfg{-1E z3?AEU1^vRC*2Dbi%ByGpw9F-rE8l=gqEDe4v}Tet>{|O)LT0^V0Xg%qfO4~Q?1R`sWZ29Q_R%hCWdJidR`<73ev}nXv`naRPcii^tK)pdnjf<3ZvL;&>ilO@ROF zWb)j3_?;cjrIySkzcw3NLS#8~S=7OF>Va?@&jBw0z`y58QLZ z?x55zYTa_hEl2MF-_i%x(Qrpra`7jrwD;^dDN_G^P#(!esBLer^F$&EZTDux?7*Sc&ncfE_>GPRJdAKtPc47 zYt}Lz{X@`*SEz30@E8JqS2`kq+(L0k)=X=H<(HCdtB!#{4S!3BPOFpdq9im&vHVMn|4zLLb(3P`RaIa!NILX+x;u`|jG<$H4>Uarq{OIa350w99W8u#3pY-;xi zvV3%WKPPzQ!LFkp%yPYJa}( z)*Es_tIbaCyE6MC76U1@*lvZ|NGPUJ$J?o|B!(rlSFt5+;% zUG>9rb5ezbhIVOSjbR}+U)a6i0K+=G-KpOam zU}kMeO(c|X@O7RhlKB6QeVqUUXjq8!q;ZGF$ZCMF+#D;g72duCf%@zy0U`HTS?2eN zQ$wRYGKWJ(OWXw8EzJw%Dm@`CV7pPK9`D-CQGT-|vS~%6$G_!*46j*|-m{@67r5y5 zX*{EN%HchjAGG(XBO-4bwI+{D8{d8P(d#-0;A7;9W6z!Z98b|1c*>3#Uq<&-TGa6{ z^&hjdl+uWRu)d@FM`r(&f?jMEsxy7BnG!$(E4GO=`B~^ApEhj>DcoKVJw1rt1lo@Q z#4ih|WMrlt9g`b z$$y$h4?Nd*+qfY0yub*O#N{CPWL;V!NOx3Upf1z3E?MAgaV}b(lFmNTL2y+g2N(%? z7%U~JTPP=4Nk(ZXCxV#o77$_%8@ogbK>^}4JXAz%m2V)$w@SJy9tFDq;K)I7cIxz! z92yN-VmDwyrxUzLd9W1WmWNGG0dP!@jKJgs(3e>7i&BZ&mq+y3Z@+rtmZYeKA3ylO z3qSrC7vP4-T0H=X7*Fff9TDpL`Bw@bLkv`X0anrsHUF2XDy*bdKW%}7B;n|!7bHOn zvCcL3^Z)xO;otz;nMX*p9OyUL290b_;>ygTti6K`#iwvU@*F^hcnR!tR@Tx2rw1!D zc13w@xk@g?oZjO8e(F@|#lpuWYDbCp=b6u)7~{j<_aDE16j%2)nM7iT1+IKBuG1wu zs4J^4LL{b!tnZu5nJ6Fz@PkM$V9XIyWgCBYWy4n)pDd(EH4f$&#^GGQ^IB7X%jaLu zlVt$-M#v|*Ojn)>Tz-Pk?20DWGBPhHRPzFJ2CGZaop{diGfp#ImWP6p-1O;XKtPf~ z-CM?O>B;b-<-u}<52W-|2W~;Xy*{yhV~A+C)`iR4(A?m{X=bQsnx-#}#Fvj5Ay;CW zx;T@^r=Rgh;OQ9!iuN|xl1#yu=w7hQB=J3wvxLxS(x67&ZKzpj24sL3 z4Z7j7k?-VoHrzF;+^1;f+I$YaQcVO^N?D#If{jnni%xN0)aQssyjC zkNRs>k)Rizx(!|2+xt_XjJXRQ*}v36MP~;=DKGQ_owVz(<@IApl|ZNC%0jt0D3L>k z9KIz-O~J>uL0M`5Kg<+mNk`|I*KQQ**ejtVdwD}e|Nl5jaskO~K~1(vCAJ|Kgs7n= zEfcL{O5&x0mp^%$+X~Joq#h%r(;^;3kKzHK5MZmkeO-LJw4>x!uv6sz!imo;%gyGx zlqX~SXl1B3!Y>V*A4g979%{Pe68r)>g<0?B^8;CSOEw9fetTU1fUYp=5;pPNBSl?4 zqAgGH!cd!Mw756RRq!%A#lCJt@e~q)PA2keVbELa;>mdeDTlhUh|Ze#`fJbKl@>u$ z?ahz9^!#6N9uh$!vk7#7KcZ5_Bh>HGzBK-C<^Wzny*s#XwL@s+ndd{X#?_xzL1VeD zcZOe~Y@0V|5V!C(xhV*T&USL0OHwM{tQis^9~@(eMNC7Qu8-8_jLg+5jw=z;t8a%8 z!dJh9u-QbC;^dhWp^lqL8q$x2{_mId7p3O`n z%29vv)_Vsi0lRbimSs=n^VJ8?YJBk4lE^vK!*I=1?1HwUEE18H=PejgTCAX4T~c;a zs*~3>IBh7-?;EpFk91;v*F(`?rqioZsStp4vceLjm^3mGr$b8d=V9BTi6}K3-Kz1RSgxZguNl%;Dj0OT%w{N5GCSB zo_dgadil4}X%APE0AJK*NgEAIq(E6q1^_`EV@V+kha~@$Ui z&pti~cth;UeUIK>c@PhC`80=O(PF-|$16~^thf1eEw?>K(h1j_-FIH(s$iOnX@BnNt2ZA|(ZQ6!9e z?LjN>^;hSGmOOZRYJR-CMbJ@@McScVXml_wvsk1+5ijE!lW~66@XVo3e%}=9os_2f zM+KFxzUYEhO%JgBEZ>;PT$9Nh460LQJI^2l#MM7&vb|P86VF=7YI1G1*$e!%knNo{ z^m#0}GXbrvwn~=T3h1m~jePIHV*|jt$tvG^^!C14xEEq9sCDo}EKg9Wjzy?tv3q0p z;7_6tA$HY3y-{sPI(cAbuTI#^Q)LG{wo+2bYY}OSQ(TnUBX8F5`33=BXAryfZVBJW zhe8T8E+?X`_g$?Og}v(W&T%|jxd`E}>TKvbhwz+L>CqkhB{ytl6PN=w28A}o5m{lPaJg|NG zuaAMuc7n{xncjxl_#u(oQK;B1B{;5R`xxy|m#ir452Gc?_K{7PpymMgn}A~wHyjLj zt!1!o*kMe8lyIYwC_@NWODlpcgc9V$(~73x?-ep4ub*cUd2GV{-Lkf@sB>U!C?)lq z*pO%97`meTu8|od9sJUW8NK1gGpMR*W*9VdH$&}p@B1S|3hP_rMk>yljxy+h<5rFnsg_+ zF0F~7aORqAySL$wI;nTtVFn@kK)Clw;n#y&ofDUp6)cTmH1QIGUhZ=|TJsvBrIem8UQrfX6R!{H@Y?Ms5K zz8v{ZR3KLnfmF;1TEgga0>j6g3GwDh#&BE}*M__!^u?!k3{sa=wnhi|_=4Xh`u#J;PqNI{j&0s8X|S_V6)gDPi&Dd0?AUn7%F zJSnED@>@x7z^|%9mmR3>wMN5pv}!m3>Zxj(j2y<$Kd=Oy?1gC}V>4F-)8z1KKzQRY zvvts{W_8N&080lzw1n_x=JJS=mf`m^2XDSM1!)|1=S7!aoIqCmLGgNgBTUacp%SWl zdN?8h-9Khg_+03d)lVMW=n@bXprsex1&2rY?QWvA%(4j5&o@Ma+119SVlk$m?j+ZT zb;h%u$NTxZHaFDR_%6SO6C$H$0BiKhMZIFDUD(#0jY=$LF$)xTklb<{5CRcfoA^bU%xATUr?YwK(l9I!_=EVnr=%Qjr?OzyjAORLwt`J#Q4 zarm0eR+7ed?>RCHY4BU6Bc&%2m+rr$1JHBX?b~;6kK%W`#16NzTj_QGF(I;fTGctV zuhj{`nh8=Y4})A2>FR_|3X)(x^C&>s!xyd>;e@Lbf-)B5bB zQfKq1IPIjBkJ?bZ3i*4Xv&7LBb_4U1kb>M4TifR2dI|SHdqVqprsw_>GXOdbm^u%aX|PkL-G2W}nj}mxTg+8LKO6P`3He zKiV|z7I6Ha`BdNh$*k0zMXOS4A*43Lh{H3qxqgetcmrXUJ9DMAt4uU9xk-$xMuH2b z*NAbFAw%aHKUx4bohSue+{e}W92`9?*{$M6sVAzvr1v)R=9|dVFV(8^?NFU^W&}bm zN_JZY2CQLgfBC)UCHtoEp~y3J-%`{05{cKicMcipn6XU@ZCAg^96Ee$8U&K)0$8#Q ze^uCxAL@A#pJlc{tx@U*cMag7A8)l3x^+%{zO0^p(|zqyM=O3{bd0+CE4F>BRj51=u)a}o(8*yUn2 zt-?6FC;NH!@X^Cr;=(7dI1c*dg# znS*^86tkv&ux7|Ow14Npf>+L%TL%6YTtcSlknsy4uAay+*M++li|_B_>4I)@u1=qt z>!)6*W(YU^hH^Rh;fL1+w_loPEqK0Ml1cgRO9u7BC7A(u(m_+nK4b)6GKd+7h$CJj8tig9|7fHZTFY5GYJo zlV8JaqaLab6TGuFa!===zhVV2ZhlU6_TgD&T0z9H_QI^hrB@L#{35pwe~`!b=cr+P zLWiII8h;IW4$>HO@uY*O#hsz=x?}KK?LJX0QERK$oFpx4_94gDXop+qyl`yC*f0iP=Dz{k2T%Z%kHGrk6StN$f@zl^XvNbiFy zP_w0G<`R7K4JU0Jyb)-E`rEsZVZ@8Tpcp&1%e}fnES1Q#n3h2&q^&|-QuQP{k zxi&=%OZ~*Z&h4m{ve4xG*?ageNQwVKwcdH>M{ulUwruxldq{@;PCwSVj;ik;vv-Ui z_07E_mL0HE_fTd)9EImofK&Z9wXA}@rEitPFAIAxJH00dgZ2LaVpub&FEjI1gyvX% z+NL%7R8N1k+QtzNtdUb?juomJ1pTGa(y6VNBoDyN3IH*-Uf}SlIUec<)f|Dyv{O%3 zD*?hQ(og-fDn>)_)}I!>|Ff0UvNunZf85uUYwl9I?QeECM@ldaR~V+%_z&3|Zo59i zk%{T#{%iNAkoMEe*?&m?C%q;GjRJ3?S)eXhooqgb{;fW^#HIr_@q|O$l{9$tX+oH3 z0_X0%-a3!N&n5zit z#Yg?P+DYxKUTCFWueP86+G|K%k{UP`x1B4M!Z^HB#!|YhTvx!w@%R;AcAM7bfJB{_ zTS}dkjO@$OQm%WXjDI2)dG(7g9bsz)mGkDPzdp-n=m<#y;$WQEQMfG!8|vqBxGkUe ztp0bduVX*nt`ST9K46;xiav$Ujc$_6y{VlemvQ`;3q!7Q6J%VJ{x%UUUU$bD6QB(0 z7hE;>LYKtpRVf$+%^0(%W0N5rB(^f@0&mPec;(_M5TY7$` zx6QINS!U;qt+P#9Z6Xb8HbL6{kx8Oshqj{>V_3iKYBZE_O{Yw92piY}jRiAe;UW$c zu{yqn1LdTCR`oX%sAO~uuEiH+iEmn&tx)iL23(>P0bnn1J!n&}DxmBZHyPl#-y_Fe zQ;wGr<>-Xt#;hz7cKZSA=eJh{=FJ?m@KtJdbG~=LiR5Zy&Y(5qJG7RZRwefbpi|w% zl$dHRVvTB;V50Ov(hLwJ&rnXaqa_(Mq5+6njU`~e&=eDk$dpH zt|gh~!5Kc5Ou@};i?=IFy=li9Aa0a%Ba0@)UnXI7G1k}dNoIL9wIBsn+^Fw$KDRGh~-{S`GAz z&MwBs5_ma!2k&Syb4k+*VWSXG(bukZLa|%t)y3n#jg~vnNlkcxnIi}6iBaYnkVf3e zGD7-RGT*g)5R=L2qgwYA96t%^;9HtHT`i6;^;vWj&#gZiLe_@*!;$5)E&1lD3x8d* zEnE>|l0!>pPMmbj&mxNM)1Jk6Wj?>HQ21Le7sK;C9=XQ@RA+8ar;+fp@!)txCKn^| z1Y%FeBo=CYOvJycAptQ-hKASDD94c4XguLS4mS#4O3-LT+9!aN8Cw9W`(Nr%b(INP z*KAJ|3bA4l<$-AIb7Bd`PuIuvw*u@`pl$Dg3cdW~Ae!6y>^_l!xBta3ig$XJdPBx+ z3ccLDtOxbsp9_GBD}aAVeansiGP}9z<0`e{9tEU=%c~DG3GGtbJ-eIT=A_yoWy;88 zQsYqwVQY?&9h#|0%8S(6zinmA{f4{Eq^&??&lKf4i3${Rm<<4Ew|e`KtDTf;;>=Ji z{1!H7XN9YDn!x_?TWsL?H{5H~K?=ntmR91(6{3d>6BdBgnykrbQqMML=27>QGWI}lhaP7hVbt@ z?tLXueVZD*np#r*U6JZ4NmQzQ2!a$R zq5P~Kqrka_i}HTv&`l7K5S6&^s!Nl|`ayc}7uB~>!Y1`9+)Dpet30H1DIj}9<%7}M}D0IwJ!ai}?qfDc7rBM9J48InYG zbq7U`aVL=kqTkdcuqi~VkWpW-spQM%U>Ji{jh{X>#T-umz2lN}*$&vCmNRuk;2kg!nCtg5V8M zT;LfN&{S(cAcHx1VKW~A8Ydo*Xu=@{RB_uu9BiODzF$|gEvKQVefthU%7Pqz16+sv z9v-r96IF5IH^T;j;oR2?NhmmX9m%_~gVf8_E)q=~D4^obvGwf3mb1@I14LSS=L#Fqo^beN{fzbmz2JB=G2O}iGPU6S@s__kHl+d^;ZO^+LJrM~o|0vSK{<@NUYTTyOf^DKGvt*|DTa^H51aQIf zh$s;Mk$g2cyqWYH;~O;8C%OF)Ka$K$D>?p#r|2k^eniIHlGJ-u=SyfG-bS7f`g1S7 ztAt)j554oZa|x06uFqdv?QBXbT=FEW_Py@wZ#l%oMajz!Tmi1oTj{CS{Nq^XNZ0G( zTsx4}{s_hjzoIT|nSa|ZAD|*|-RE5YyhCJ#88-)Heoav4c#77K$3A2}EeV&L%=Rz) z&Onl!C0Q(qgP8LKlL(z^4LKjra8I0YL-rfCq!uv5VplNU19KOc&8Xjn6k$^ zsH0ShXAP-@p&R~zdsL%)9tJLE?#d(Q^gSG~E;}dA)e1T`F1g;ad|N`G<0N;iu>X%| z(euYr?OjKnxrQL4#)KhsJfmw@M>P>zk3Z|HgZ~tNHV(Oi zw{%M9lz|p?%fOTruV+rmE|6M<97Edx@~NDq4uHkyi9^X2OP5asH7!}J=)#ACGJjYX z)`$J*Uq)3F25LKEIsm#-Ym%_PHrU_eG{IovLQSp#Fhb^z>+I=S*h1o$G@uXIjcpuf z$!#c_#;7T1({HL;(ozXo9!Qg^ZIlx7Os_%-HiA&rkVzU+hEx*C(z@9fKenDF;qHI! zeEg7Q@e9Y(-sI8eW}`#cLmDCc==+#Wct;ObnA-@x4WxuQF2w3AnEQ4!_vx)r2&yE=savhx^r`V9>LND&U`k%YG=$ zhFh7u;+o4-sP(RJ&*yA*8=DPvOEXj=eh5-H(cz$l$*dTZS4ivR0tQ!`>=7)Gz#4$D z0lQu+N@@vDI@5h)gWd!ukS*0z3Lw{i+def~hhbuy7@~HgMtN%vYpZw%!Kl5a> zR5p8SD&^Ib7bkiC&Nd+=VJPQ@-c3^s+^jIs#e$F>&|z=u<78& zlg8drFAcPkUF+L}^6p~Nx;R8=!U8kVg5;0me@)zvj~l7ZuU>!iV6m)+#5dnEd-?{> z+WWf*i)Z^`>YTb3<4VPl9c0q2Z>MJBm(||Uk`dy1j&<>j5C?Ch&Qk@ZHFE&0LtkJz zMINHJ)o(Ka2B=NAH>$w@kFfUuY^%Ed$GPum?=4%lJS1E4mWO0nmbI*5S@MdL*s-&n zz4x9ZWHLe^p%7?E*n|-%WfL}(JI0>$s;cg~Y!$qD`cZC<8{-@W(T zGe75ZeqMQHD&LtKiFHSmBCM5XT0wB*IXef3kaAvxd62BH(FvEIbrK$|O=ByQ3L32hP$R4EM zt0H^Z&7@8)uYjb?-WaVFhqf*s$YZ}N+jRXzi9tB|S34@EdF>n9ARi?3uLMRL_P_8v zj{lpp&D38*D9Ntk2;Dr#)2I%|+suP7tX?Cm>VewJN8B|7v6dUC|czC~$V6IyIiX^BKs>~^hIdqyk*rHWrPu(_dOz~QL) zkgV0VuCfWB@>x1GUtc}36PTm(gqGPe8wBh;>WH>xvRMFKefeR~auzPtQku>q7y$?t+TGLxu&Mz@K5+gF(AucYCgdRH_#RDnqL z+R~*^&qoC&grE$}1{&H|+a}${e&HljpLq0}8(Yb4*Bk78XEfCl+I7GnsdUH6$|6oB z?5{33p_-TtnVV}JnNrVZ7gAT{+*~DSzE~GYbHpxZ!{8V_HBn z1_E5|>uH7CSlw5C~M%}nSAvV^*6pB1?S(Oe7?zpd@+{hd# z=$*jU{Av<~KjJN@GpLKO#qM+wD+>Zm-&eO zX>ao5&6}&<=&r7=+(wSDTUzUvDC*{vYs%;BFOyfo_&$AI^&)q&zCa`?7W1^_UUC&h z)j<=uF0{2;pwkJ;7r(Bromvd>fu_O5vf%hn1X?UC{rq;!?5LsBv<`~NVaO5og3(FA zye@%w2c;5#br~1$JZ~TRjksoKbp3(7AeAbF4dsyN@MkHueatx^i01#tDrF-oPPLFn zuZ@SUtmqVle4l=$>ovm(F&GOp>BDXG6UzNM380;Pu)M z7B~DK$^S$L%(fIV+e)cqrC26_@rgtrU0M}W0-vtD-fx*Kj_s&}*`oGU?9KZtS}Ja% zyDn7lXvSXEIfi?SFfD0c`8$36EDPK~ozug>vCIOTN)c$2E6yw2)Qq!bvmnK@5N^bl zi+2C7JAoDp9?VRpLeLa7EB+atW$suG=vf(~`5#{;=8}D=qtbCM93>Woz{AL7`uBB; zjI}nnB$Bc!y}-fMLAEoy$c$L5B@}w^z4xY)b1a$u;fLf>&_Z8)VcWw#v73E<+Y_jw zsIDk9Y{^tG7*VCD%O@hC5!&-*JR!i5Ann=0UV&sEy|J=Iono^zGP11onmZ3moF(@Nqm5y^1tS6fTdyanaUuv?Q{d)tk*w@-^_MS%W!@kpM5RPp0 z%VkLV4+EGeLJP#6)zelw9JVb$0^(j&3!N|J)7ft*o`B~NN_m5MI+xz0YXOW1`m&GE zwsATtiwy7Li2r8;$_(dYZny{$l0WBxp_a-fQ6XzGwzo)1j1P8NLdmz(IQBQG<_?%n zn#n-@&#%mQGyAhfA=iifn9N~+nSO?_V*Jads!dMNKCab=?#7QVNfrBkN0WKL4)oiV zeWcrA@9i*!N|&%qg~_9KDH}e9>2?o1aF#gP*ScHq4~cLPz&l zgXceHbELR-soi#@gsXSj%`f%4B9wEJ8L8xJyzNf(UI#wnZ= zIN7l%nWV1m>SFKj)(5sOfNLn3z0Rv86O!a57*DHbzM}TB!@XB-Ur+&fGNET z7C^I`$l>$V3EjbbvZbx_$#;Lh5VHC6-+T2GQOC(twgV#MWz@r?qlHCMKu1f|Jb!0N zp3hCa;wz{u)(N2jKqS-`+aTPU2tmaS9F{cInPP+rX+!FzQyL+?KWUlDl(2-kLOYS} z9DR5P)y+I$gL$3uaVK>x`|wr`e-{rGsIZzo!-IJc;2ZIKM^bo}hQpO=ICt zs{1^Bewbq-FZcAY$Dya?^{y^vhp_@j3f&IDnE=uP@%oH33u-uTTvf1H4(!F^&=n#4yz-IY*i<8v0p3yJK2prHB+Bo`mYBWiN zYNJYNE65*eA_}Q?(V({6|FgS>OVkb|L+$%JLPKr z&KoCd)N-)Hw7OEor$DiFU%UC(j2rhX?kkYy=ZTEb>FW={23P>i^{cU$FV21S)L_RP zm=ERJ+C|OoW(1@UTJ1l>TDt{sA+_azPn6Wv$m!CfM?WIu<4y7SZ)@hxpJ^9pRQ!gu z8=GL093T?gIFTs5D8*>c$#6Ls0BBmw*%$~av1t*AF}OWcb9*Qp+oZ|VSw=zqz6W@d zbOjoX-JCzOky1#@!%i8Xpj1Y!i0SR3CigNb($n4TnkXu84(y&mD>dRNo4RZBun4LE z&Z+xn>NK!B6b*#EH1rb+6+?IJCl^2aEc-ohb${{8_AN`N#`7hxQ3ikS^hHpw>O6Nk zJv%*h&RUS^XgV*&-FCe7=%-+WlZkcxlr~k+Q1GyGCkLGl5wpvg>elJ>dWp>AIT#Gi zBTDvLa)bogr#m_g-iRH6pZ4}smGFA&6+*z2SiVc>6v>bHx)`WDqWx*5ag34 z6*g6?%Dgi!Crx3H-~`-<=V|ZQeb8T&k0dQ%PB_p!`nTMz;P4}OmofW%KA<6`dlI1# z;5v_oLhRp=yN+B-E{(IND~O+cwm5FIi5uFSvOJ@hmQ^TuhK4$!y~$}4)VuSj-OK^n z0YH?Cm|ONosk_(^*~GGd5S?XK8A1WTG zvJ`Yrh4blz>-rM6Vl`09=5s?^yVHJhW-KM0!V2W99?xieYl#bdW$X&%{>y1DxrI_O zXV%4ttZGV+$SjLbD3h=aAfGCa=dxgM0m>(}F2>_Y=H4M3v@Tec-r3b%w@L+?iL|nW5j^AzLr1K$alo_!AgB)|2P(ll7nx~McVl@&C zzrbB5)#eL@Lg1p%looP}#h$U;<3*Z~pFLa@MJxh!!l9Y{{==crQetNROa>{!oU>rc z1IU))7=A%5g5FT>7)Wc39ElZ;z5(B<0sP*Jp=}tiwi+;A$Z|hUjf3k7-yvnvan~^7 zXiQPfa(r{Jk6H-axJVhLh}xK-X7(^*G7%^r$Q1T$f;f}N0t)lMMdl`(P$nAvsp*oV zNx|ZGCwQT&P8+J6yQl%OtF^Nx)B1x4-yr0(O;N}S2HAZ@99t>}-4sKirAQSu)~U&x z3aHV4;?$It$N}}ID6w!#3c2I5JBA`+&s^a1FGNaRLH0A9hJnkSEu?S-S0HdBra<7z zP-qEv1#W=u(4&!FO2&Lgnp=zdX3T8>A!!(y*3%MG>-BLLEUqFfk%_2-An@~GOyED6 zk&1TeNEl{rM63qy>V<>F@)Aiw@9f3oC}ZN7a5>61pb>`6-wnrb1ky^`WF)p)U1*ab zk^mVW>zz2Sc>-m@1)tf&cn5Ut-FpR{nx{vJe$M9LSS)~$| zbc7{s{X_k&;t5l2HPp4hg9wfX@v=`r8t6XK&)&ZwOqZN`iG9!r9l4HL=+^WGP0)=; zl4k;IVB-tG2S8#g8e?1V0qQ|~Qq}=pCWr0Gn2T)zzb6e|K;g<_nILlFaD$lp3sH-i zYp6c4tXW#3j7#-u!R<taq1Ui-HF`nuX-#=ljJe}P{Y~#} z6KPd~9UtA^{Be?+-IKD}l)Am0Cvk6Sl2|7sOpns}Q}@pBs+AQonRCM0o=1c)!fXm) zOb6Dk-!_Lz`*%#%icBU+-mJqjDCvO%uYdOzCt~*jZX+vV*f3~I7illBgP6I@9fAI{ zdI)t8Ua7GbxAP6+CUPI!SA$979gw@L8|(n52k=W3s^c-5FIEEkhe*xi3kgL@EJ`Ba z0r5u(D55-p+A0%*BD$Cp#^>Cz?3~{4yW@CP%TI2ylVu8pqiEs5Tc^SZmdQ8lo|QlPBWPbWr+pW3+V@oC z`Y;g94{NXcuuf!v;P>K(S5KfdEAQPgRG_d)4Sj2m&3cMk@Uzr^nc3DLoS6}tlinM9 z{nXUBGE{JwU%@lNj4Y-|P~yPvf`?;<0X^oX)3s%4tm~R496jVVYKXa=!pWDmM1ndA zgOP3pRx5){-lB85O-WNrqw;Lc!CMA+N`+|3E&Ho_JV$TsmFI~)n>Q>VyZqC`i# zM@Ron3O;1l)9RYVOX~G?%jQ@}$T4%EL;|qzqDgZaJhPHUd4*Ej(%uORiNiH}gGMTq zj1y*r0y)t3ql0q3e#3=jdd6YKT_(qj9vP@S2#MTr&~JG@ADH+h&;{`&c@WyjUJ2pY z;g5{T=`MhZ**Zf`b+o8|TAd_MTsyUUnMCH4m6qEyajm_)STbI;$jE-{+T~R+ zwXUdd>a;4)x;YlPO>LjMjJ=$eRxen-v|j00zHF8Ss+|@{JibQT$1MiOV|7E)aU3Zw z=XH%OuztM1%=IzDIdN4ih$FDo8I}jX0=5=hbn5)9_hNHY1Nn}XJ&TlH)o@;?!6d>M zwaIb9lPYC0vr!YV0nENUB+ruwrD7htu(N1*u^RwV;{HQd$0b#rYbWs(N>T5kP}v`Q z^CvHHiw#<#d(mKl&Jv||gorG}I@rH_#r~Ff*f*#<48r~eEijV;Y1&j}3LYgE*U#*J zS?`*bGzs;3p=Ige){)*eofy&$>iS?WQPmH$>wzXhl;1Jb2uEB7*Df_FUHf+OwZdqc7W<} zz@d%tjkt_sD8{(YM`V8gfk0qB_BoJ^$-(+lt4_8CA(%2TcHfFomd6_Davj^(#i~(6k}6OqsWMY2&qPPuV18^7`lYaN7E9 zh+4*LYh+scnO9F~0hF~&e;7JbVEzvUgUd((`xi(*f5{r;6wNT5(WsrwVvnO&0Ji=B zwUIeR(-3xqs9(gGWR$j#j#4e`iRk;FJcr=Y9;LMq1meb}hGiqAZ90vSb*k*(Ii)*i za064DI7VQQ$v|bY1w*u&Y3ZcSCNxGvR{-euY7#QJgxQCb#Z!gHJN`A~=)Zf|FI z`UO&l&xJ?xSwbedYF zw+xo%l}-uhtAC6B$O#BFe%{~a(-=!o8ePO}O1g#X=VotG2#(a=WZbJ%&co)^z!x%tD*&o<%gI7Gy z7FsM~AeDxO54cvq@;HlqjQll5W^dZ`Bqi1Skjhxi{&DI7SJq@1s!Tbg(hSnduqG zRQJ<`7f2`Ij5Ywx;;0!j9UeV>d(2Q)AV~5}R&uOQTj$V6^mP@?r(M*%ZiXTg!Kft? z#yI&yyh>X&Yg(D1eERI5-o0UYmA-oQ26FD&Yd;~PPm_1TD`AJ?>U0=^R<-~Tpkcgg zS$_^KEk0x8-Z2B74#aHS1>i`Vpd`c}i{~~asaZXYkWB3A`kL}Ezg>#}gHGz|BuhG} z#JmUlhYIi(t zzVO3;sg(xN@UTiQ2K7uUN)>#H=F55~shWm5nl*B(L{ZxsS{%G5KZq+3+h- zdU*7C>IX&y*9|+kGhpD5Ui4#ggdAWu;A0_gN7;wN08hP^TF9J+6yGZ9j?qV- z41OB>dyF~)t)T0eOE^)ypT70ytXT+mGyUY|d~#obx(dGW!{_DNE+v<!@S2Vn$i3kQ!&DV>GnLPL4jMKNcl=d)JYh-!iNM5eA&RELc%lNm2%ad7^g8W)*Wc$3} zJ(UGMm%2vf^0K^6lAt!$L~0q}p4$&TkeFjbzmq;{i0oWaB?33nb@TA-J9fl~Gbq*Y zd|^}n)z7rnNr5KD36p)U?4;N&AV!!rd^tyqQZo%XMV(sNm zKM)m|WP$Dq_4q6yk+YZTq#Ad#M9B+u6soJrs7KhdL=j;Zs|T*$G_w@)DCYj9yWz}S zfDpZ(Zp%3{bhI$b&RIh|GgOrb@5qLtID;zl?tDmH-G>R1EvPS_2Ue~%Z$lB{Nr(@Q zbaoy|Bz87=FF$reC$N&lVZa`9rn9p#M)pRDGyDbn>1W`9bg)lQ*ZoNTuT82`OL@Q& z&R3|kb`{VTi!bUp_d1AFrbd>TSEJJPR z=y(suKklbO%v0pmVAGDh0qD#3ZClCy7GC>u?iM^weanp4f~1pmkZ&UFvIxDV*-%xc zl$FX94#kjVxWH-S z!+RifC-eQe@;I1~^X=@_WIOm`@D!7$JWl*Bkz{?zf+2ps;I;PLs9_k=l z!(0SQg&2Ke zEhm)}0gXV;aHCNdv)7Qf*!uN>`=|3JpNz22fKH}cTj6MDqjlDh?w&+O0gevNW@N3_H zf0h_N=&YLBUjoz%BJ+f4HI2jZJh@G!YYs-|whu;YAv-$sMnNeM6|1-zHv$P{H9F6| z3ife)iUzNf^_ADU|W_mcp9$+WfSYd<H%QMKbDKBTOWdNlT=%B5UX@`@%6}OC#h3BOQ5U{tLv)T@W1ecYb7TgUs*P zrOjLlPI94kFe$JgtZ@Ng2Tq`#D164M5@AqS zQUMBXKLp(;sW(SY(wB32&FdrV$|(7Tvh#4GK(64`Us9{H4G&n1)`6*M*XhY|b{%bm z730>dH6OEk>6guD8ERK7#{70n)p4#o6lh`i_ub?Yc54ZFxr2Q+LdTi^k`Sj}(z=d} zh8ZRbbEgtyHG2SrBLOL|H_v+uZ2N0V_rG#+=GeA@E02C85?H2_khF_K0m1LM3M(kS zOqiGOco?^v+yg$|TRz_mh9Q+y1@qx0F=fqA5-^&gXkUeFci^UnrcwjJ{^AL_ok=F?IGF2jrLq zVqSRcoC&XL?adSF+er)YS(&T>$FlUG9FTC^ItnDK6RSPA??u2GSYS zFRCDvka2m~asu-SU#mWF^8hB^rrff(vZv+9ExoclQS0XQ^VwUe9o=kRqJpYqJ_uz} zv2gF%TOevZ=>OC?f3OI$Ya;XD!e;-1Ez zhYbSsim)nACIMP<3YHcS#^Hi!hT6>}fzb?{M6{%Q%)kFY)^IZ?TrwgR`CHRm2>er)tp zdg17|#W*Af5M~mhr$)l_*uMpC@UwSO>T!oA13^7M0>gK&252nuAEuDV<6jA08IKLK zTI0|<5O@9$YzD|~)^o_9Xt8Dhwl-Dz;f~qek+Tl67gk;o`TTSLzy5VgL}aKaYC18rJ=5aQY{ErUhCMC9TR3b!j?OC!DPJ2DgS+hp8I&RwZjMF2M#_&Z`nh ze^+F5w-_weVbIOXK{~dNY3bB-;U>gFf0wt3~#pL@HvPkOw~n(dfS#A`!Y`%a$kp@WkI+ zp9nFpK~ma}M`s0sZQ6}cE`25Fig8`ov#^hvX-}r0}OxZelkWJ7fzTN)8!18)+ zW23Ga@T%m++&F=AL+;Kg=ceKU3v{qM)2wnATrV_v<*7IZw$hFv4V--@wG8i?E%l@v zkxTsk>EMHeuvnr;0wNMB+%{VT{C@Lxmb?$+ZUugUg=~l^ic1t8h1v96r_>r-KZNYm zgDZn@8!$mW4-({~%&ZbW<%zIAMs1s)tP|>?vFh1v@@O%cxlQQDb3M`sIH%I9Pov_Y=ar-!%Z zxMEq9Jt8d#cpXnbQs+tlTl^Ap32W&Eqt{WpTgnmvZJWl|d3#);(}x?8ZNe*-2;Yh6 zn`b6@YOSbauwH#4T0Fl6kk-x_kQ@02?L5rJp|ie^ePC0V`cHIPnJE-5v=xNI*R!t{ z;MGv#WE6pzxaL<+8|o{8>X*PAO>~usHSUELNrA{b70e%M((%J(3ZPcg2)V4OI71PW z593rjEM1t6XS1#h=g4r{P&jTo+>OBBDbVDExRCVXxznQ2;dX!RbZ%*DoATwC#Ejg6 zQqRp3h27T$$tS_;Bl95bES!DW8$SEU!bVyys+&1!7zP}uy)`&m(wEH~!COEFZR*N~eR} ztb&yLbDZO#2Nj9^fXOt*oJ+i;VFA}D({c@gCwL1SVjvs5aUJ-aMWG=xIF<*<%?xHr zGKf0x&>KhhztyQW8WSE`gS9-V_%rYI_Y6`K@4U_rEk4eDS4LpwZRp@;a$_j;$>rF> zvj3e|I!T#-QlmiwDMPs+4_uAq$*P0Zp!&5n+O{xrAVFQ*J^D6T*40JUg`Q?rIG&!5 z)id}INp2Bo^JD>8oB3G({MmsgQN)PP z%MPp#EcH`Qv3HUZjekS6P@&}6mp&b0KBVIX#o#}dz^JdMnJ){$i1C$nkO`rb+A_{o zVD>T#Ld5D*ro|2>`OM>v5}YqCA*O~*Mylw=C00T7VFEj-7+hUuWmGW~?bKD_ui1I+P&f&3)&CFaNy6#R zJbc_MgpmU+*WB}99rxldP~W3B0iA(maED*c$unuk3@~CFdqFZ$-=!Y{zk-9Y(h#^o z)Kf>>(Syi@qIf~Gje-0WfQDP3`wOIr3sSc*(`M3hM{gk2WVw_bxu&!8fa9{epPDT- z3Pzqfbyf3XB#o_t#OxE0^S{2k+Z3+Zc_bk$5O-X;iL|I>)$ZfZygrYX$^~;?e)#G- zVs3103N%yg&ZpP`YEyO0X%Wk;3TcJ6ui?qIo8N!`gR}RGOpZzI21$un+m@)ItlnwS zdKH%HWL5sYMp!={+#6$}noa)I1DOU6gCBP@QzDqkH{hONFg|Xodv>^q5gb3<;QOIhGN46e}2@T@V?zO|F_X4(cK^~x7 zg3Fa=Aeua8)Q+s6BrgiL(rSQaYl0sN zy!&_5TBpsQ+rbmK4_xl!*DhW>y@c&!?40 zr@)UMHrU5Z;KVt7zl12=S^g{8Sfn4xOEAv{1P${W<17Y98B3K4RVhxUGl}P!}ZvvcxjdrSorIXu&$twB@9(L0b%$r&KC56taI7 zS2`*r9%Wrqt(^1b?-^GxL!ycx_>kE0eNhM^3hXK)@T5v&IYl$LE68e|Dw@H}zI3td ze2q_;flck>^m7f)HTZXjSivtS6i9(q8tG|iwbjheGa31oa>cPI-{hPU;pazRt>1^1421H4e?;q!PbH71{iy#i zBUQn)&-e_dH8E_-11vZ)|7MoU892BIsWyGkiWy#5xGEVaFP?BtViK1+&dWSVxtLd# zls?XGib0~};)Wepbdm)x_cX=|RxLq07oX9xw^LJ7tM}-tY_oj@O_kzyv8{or@OaL; z-P`>BA<#0PMM(2qixv^r7}d4i)MjPKR|b-ixJ2+gbE{-7vqYDs0cA807BpY(W#lDT7sNk zx-5jDB_A&YXFkw`JV@QmOsb^bW2y;4$Ek%0LJ5^xh0Lti#O#1*C=bXKDuGxf7qA-! z!L<)c^FP4p35Zs#0&x7n7)!{b-vA9;H2Uw>(_Z3s0uoy^u+#_WLYPm-x-1ePkvy zaL;6CAh8~83iNW)_YgohW?2Gjm+v%S#?pLrCsod_axI!St=o(gb9v#u;Tevm*|V>k zHOtE$0@e<+Z7)E*P|Wd%qdlJr-JdHiS_Ao^EztkD8x{l}IW|^tt(;)25Eq)0tIbj_ zz|^Y@#VBNj{ztj{JfXf|r%*!n`ABrZyJ%AgmZ7*YOiP)ly^r2Mv1q*`1W>*Mo>~Jlu86dY*j$P+{7;^HVNRu zuS#mFt95=|rS0Y>OSDzptoB40@QcUNrR06U>Ayi8ruahI#}f&uJ5*DysK@MS)pi4I z=-)m)q?46N)Smto5mVQe$$CgrnPy))NGADahK|)hP%vv3#5w4TJqheH^VDpm;;DFHla@ zjd@j|0O2hBJeNAhJswLZq}+-uZ2fN14bAW5 zslYQ${mAtBfG30C@b$8?w zHfHReK6{EqUao)vd{c^w21lk@Mc`3chh|Uj$pem>Gvb*yy3y&VKjbYlCkiSHyYChc zUem+}Cgr+){>nVJOJ8Sjd(Nb_%zrSI2SQo`;)+p&gzJnzg0B==$Pnxh2qi2V6OTd= zKiDXc#yZ+QwozQ~KNnkaLYx~jVkm{CRtTbw{|G%p{R0~0&l3eAvuwqKZsilaeM=vcJ0kcc~!W*B#UzE)PF0kL_7q z13626+bL4GVZ$RIJ^gCrudGlcE3ME*io7@yB6<#Sx#O#(sRBEapK-1!8jeidfKC1{4^Z0bL@O^(>I{{u(s|n7Pz+vylc5hnG&wdrLUh-` zsN~P7lW)K+vcMP>UVEL=TJm~uPL~_WzEst|evkww1j@IMx8ldraw_r;9?eXNi91s&{U`Z~zQ zq$WSF*GFr_rJib$T=ZtVa;;ln$P>3Lo0&#@_CxLL8gDm%r>@qbu`q{F;TX82xZFc!R(1=r{v};U~MOMLnYo8R+h&n*7rO z-}vA1L$v%H@j*#G#9T>lTD|&#cTYhm5QTSn>pWnIg{yxBKu=8>9|WPT&bY5x^^{G8 z@iU4l9m!*rFQu}w!C}7^nuqbYZ#+x(DJbU2PuUfXYupd(|`9BV5*y+UKq2!o0>w#ti=1a-|x#7C1TO2*u zN(#ebwV=3EfUr43cnMG?DHp^#cN z0Sz!}e#jowNfq`A7z>(osVd5d!%-5@+m$uQQ0+SRV7jwJ&NX|c>cL2Q1|vQ;;IV>D z(Ss?1Tlqg~XawV(bj$;(VPu=+9RJ*V{4~x9ytL)YTPF71c&L?pn$(wx>RRe$I<1(< zZA#iuQz0mCs4o{Zxb^Jo=t{zK1=7Cppr`6NXYJBuj_SG)CjF$BDXOZVAJOGCsw-{eXe_oq8f|3%XkkAT5PhSztVmifE3r`>OO~8` z;Q?5B3#f#9bMitaZUPND!8kk=l`kkIG&ryjCbgB_UKtj^z~}IMvOQ9?C5d#)$<^$MI+LeKU9W2NkdV7H88x=* z!%602+BEuCMS_~q!$`2_VVM2mn|AV_CFSx-JFBpdy=--dd~ipl09pkstBNWVWo4>5 zmCZ(%tLtjCRT_umopv&`YuEFjhH(nggRstw5>AOXlBq(uA65k}2RaaVfAN!x$2k`R zom;%wkj#V3MrvJn>#6nueZ4NEu>;l-3DqF~eiibhIua#=b6`ZRL6qD_Bsd2HXlOda z$J0kP3zYPrrmQPpUD)?G-_*95e(GXlXzSt%A+#AeZw#<5^3Nbkk)OiEm1?rY+!fME zH;iG#aDr3@Cx+4JxZG7nZDY9xohM8@x-u39{UclqW^eG(4A?ER5Ts$`tReSa@NTGO z&?3TOvWvi7N7ljID|HJ^M$eh4?-*GJ6v(bGpl)Pl*H9hIqcY74Twwzu8SxBk}i;wuenHm!C569}(n-lBOmTfeILiJq`x#i`ex z28*x?ZpbCvOQVBQK86{{aa6`@d;s>l#2UZ6HYmQ-Ma}O4Tn)GY zWVz=Y^KMB>_ooUQGV+GT*aCD1o*HeTTdy|wX9k%kppW@`BK|jtpS!52mHKA&>ige$ zJZ%7T6Q!8p#^%;EHfAD74XT7pR7^m|xC~adr4sKDKJbO`BN~K^HEiTC73qIrO!j6m z4AolDKerhs@HWq%lpnB6Ti7Tu3LEDQJ_J>XXQq&M*yTYp+6HoUPy$nqiYXaz%kZV_ zAHCi~UT@k7eE>QImRJMSp2nr~Dq!q&`NFj>&zjjKkSZ>pv+P%GvwiFUvG~C4ond#aeuuXb zTmpM3~|og*+t^%vAv?a!S#^Cb~I1}Ovt!M_EImjDXF4i(`{%$i9OuS}~+P9=^@ z9SFw~;6I-_KyHa_AOgELCO+uua{H0qSyWQgq+r?hIA5(5cB~y$C~8ZV9Q@@(zFypY zWapd$rflPhnK0mXK`l6-xx5LmmbFn}w;iHpKV&~_Z^Z6F5g4x#6 z@-Hq)MxKa9nJ>W!os3}PYRb-hbO&@?zD)M0`gd0g)zIX<#>mt6tRL{IzBj*X%w&wbDNn z_|C&!ru)IVI>!`VwpSc;h(D{hT`4?9uG&i>%+lM%8CKk?aYf~6v!qt{TU3&;!dnU|?An8F}EYxFqT4~FY~yzz+S zz6${6xApXptJ;3&n9)}##=JxC%=(t;5gklERyPLX>@jt566k=tTxwggPy@i$nf`kN zAQ~H}`y;QV@tp_;ybrLqxsaR`01Bbmfa=dx^SSp_i!LrcklrmHyZPCGFXr|B*X!K@ zr}!Kcz&`!yC&KkIFHDbhUQOPH<_k^X#F=$6v!r(BM01_nJY`|Cs8H&hKahKT)X7m` zI0#VFg6!W01}>XCxs|=kTt9b`Nn9!`nz_=g)B4s-E0O~NO8t`ZcG{`7~P_2a-qTmbV2qHqGvIQCbn5%0{pLwPh4;Cz&a~!}kuBTd&I?d=+c7IEor=A`rV*ZrV5B-v^Si1C%mwv-0J^S^x$$iDzlD>hUVPJ8KQ~|U@b<>=+ zng(}4ePMGGIni=8`{4toLRYO7<~vG6W?M~uUUgZaSX?TXT56gK-);adH4yfa zgHR#7;q+L#!~j~(0a`o5Yz#t$J^`xYRK$>pjWV%=ADP3sVjkR}apL951Qd9+#(7hR zV0PL&$FR{4pOR?t>VBR^C+c3v1R4(hvIofkdam8YK2_;nzhiE+;3ggifb%Q^g|0Q#}YhLD(CpfXTer z_nvYQCjd4GQ@OA!Tpl*%GK}epOkoI>B`p1da5~*l$N2{5ZO+A5EBi23vUef!+|Azj zu)cj_t;{TPOpY2q$Eg&6W4TR4wz0d9Mbw2tOSMe|z$yyb2YK4cazSN%rJ%A-^9Y10 zSLfVZ>aEbD(!=jZf$B!+eOg^NC8iUXD)Rg1xn5y!_kYsYOccz2O)x;QNu=WWVrETU z70i}iPqlH^G@bbbX(>K;Clr)2!Hp55r4}@43|y(^2 zCzWF0s-$@Ba^mew3Y62dP*2Q_fm+Ba_7J6f?m6~QJkE1!TO#FRv%D}O&)~${uJw^%x1v5^g$cpJ<|zjCdvRl;5{c!i!rugnd`qP@(mS0QA=F2 zdrW+tPE>Pvf>zbBs}@MDd6nzfv-uU%hpk1{;aRV!-5Xa`t83P6r0DhQAN~Ag*hA!> zznGILjML3y$(SUE(ObZ&D$bX1p>*ZmDgzgFWy3{^n+byV?1C>%qm0HPOA6>1vI_79 z@H@E7IAq5^LH8n1Pbowe4}cWeb08%45FbV;q%Y9QmYF!(F#$S zR{{fu&P1V4tP~tE{8~1iptf|6eodxBfAs&^{~2=@z>6@2H3dHtiYeLqwTqT5 zsOGxGw(V$sFTnoC_ZRrOf0+?in}Q^XDf!vzx$|b(MOrnle$DzO!e(G+HfYJ-0X8s` z;y`D!o-0?6)9{G#OnD}p`<-<((KmC!C-`e)PUhN9YJC^5@=Qr4--$-4#(13lBRqRM z#HM;^Y%qw*s&N45oy;ILlR427C8wdQT84Eg+OcrqZBO3GeEI(S?}63dKn*zA!w?s)cn@9Za6thnPktec^Q+7AbxdiPSO3}t&V#=X5Ur7^SWlsourIw}RZ ztfOc^`XYxd{*2Db(oSky_vk;#tYq?FJpT7iKw&3Z!EdbSkjli&&X{>>4WMbowG;1Y zEsN{?va0$AzQGR&5q7dW>GHK}AN=s4_0U-HDf4OxA}3NrWq=x-0nD34La4HvI;ABg z-Gz1?^bPnDiHo6BP2zD6i^S|USl@G?9B_RWuI`0x)Hr%#GL&l9jJLtYrXrk@jNS&< zJWXf7a${a}I=Pr#c4nLhMxHrI6Uvpt8_@}+c7~71k6j(aXmff?v?`vgM8VIiC~ce= ztTVBv%c_R@^6h!OQznuj_I3jfOx+XI)YRyl>Z%Iz`$*+=tN37!Rvc=oE%2%9)L!N( zT08nrdrYLmdtngS%OqsPFDZ{M>*pK9-ShmVbj6}YcfN9W(emeSS|1D~q#AyEvZ!;< zZ$4mGIW!GUqs!RrByo4xbETwd<)X?$+q@VX@`7sAzX0!ini>8n!?{US4J!+@J_D-afi2Yvb6yMaWPxc`9M77TW3?DR zwZ>ka-yZ+dgbDk4dc5odq>cR}WHGS5^(^ff3%7Gym8-!NBg`?SKeG8N&<|X!mi`&t z5`6IFIo=Kk{lKvkSnR24PMWtP9rZzd>-&}#2zRDI{&eTU6Q6uSx|iMd=Rg00+|CZQ z<3!(sKp=Y`@pe$O#0cc#MFw@qMkM00kQ@-pnqmd}r>MF{6Ok7bre)zFfNY{HEZVls zbLL_EA>!{0#Qgp|QPVO zAIiF_xHddW03CD6J{!7aySQ@Gl7!=H@Is^bHa&uHtPq}TB%037PXV_2e~_7L+!!uM z^xB0cNm(N32$u}Zbnp}kVa=4T4PDfdp3$Gk6rczG0}Rq654%sfeJzlkjZjK!D9LEXOhBzvP%zz%W%ms0>?%+OF2fL%jov;-&O zGg8h~2yU`HeQx6vAXkV1AC&XPp-HC>2PCC)mOuBa^IdZ4P%QR)>LT_cBRR_|O4~(x zdl4EwyG;%~l{H%rw(|kc6W+I$JzLhcdmZ$Ftljnd*3ub^oIpI-FmFn~$F^vbUuclF zuA4XDtJ-t>bb&!SbmR8XuX21)I=-u{?LD7wTix)h9v z6NNpr!QFV0L#Ch&LfODM=Tl)o%N!VLv4m?SLz#yMFp^%cNJ_#d9T zHmyo=AJNn0eujTE`wx16urNZN#vjjic0SnXI(Q@kToR$nwqKzH9Wn^z()umWcg@yaUrh&9!t5rzrpNPHYvUAO#ml;Jh$tlr#Y{4 za+TODtC|SyP5x!!9ju$mYf%`LVEANwmEi|rQCX45D=V+CN=fsLjf)qfXQknnPo6fd zYTDB(k+h;hsN^-d^~!P!Ia*-!8jFp7wwV3=4EqR4u#avGQ|t6i3nmvr1sNz=V51Ac z4NHOI(a>kxO3~EM0aO;u!r|h^|BoF6<&1@!+zrPl5zi&FotS?|cL1<3>7YBi!5IiC zxs-A+Z=VY*^7+N(B_gFZ)Hk>(+1cLSKE$hQ(D9dtJGx zRt%%2Wz^F?)#Dn8qPj+;pqpEbN?R#eR3R-XRn#i2mZqJK`SWK~h%{<}b@I?q1-p@b z|4V4^>0uw*7N+UZ)6~{jwa&F_#cT`YI*KNZ%p;RqH6=y>%*Z5p#q1ujy|zN^Rn|Fc zsQEL6>ia>hKO$B>0~ za=`aA%+n1H!FR2#+XDeaW3Iwdg#)oC_X1r(@>RVaFuT$cnZRJKGPLhx$I-7 zfD(_=pQ$)eLXT(j(W4aAz`XfwG|E~hH3%!a%l_#qp0Uy^DwMUZm`-d}B@?W)ln;Y7 zU3Ker?eRh4t!>Aa#Xh%C&NCSKQ2inBrJz6rW;4ICAY_`dq!s2Zwk{boGtcEHW~zdH z_J`)*`5%>zo+SH)TBx2I#ZGNx%iI!Kskm@x1zTybE5vysRRx*VtjyQScru{7k*kgD zw`Ub1adELwN_#8K)l}>9DKN)PQ8W)IR)#J}rQAo~M%SO`x1fe@`MELyI{6sY;xlH) zAsB{@MngwKD;m`5F|i4sr;MLrK zon9-IIuxZUkD^d~yiAV@e>N`bep-Xt0(4eS%(v;2;&S;N4G z6*>nYp$mxNM*oGt3i1UlbFYPFsAcu0y=q@qU!p)-CNp*Q#-Ve+ zH(7||Tg{0HU2U4Z<$ho2pzm;qiZkk+{Ng=rZE01*HJ?%|S@%9a zc|8NMNrVBj^B{X&K`~50<|g<;QAKhEPcC$el!D{3+9h_med&(pXb8}XAh+`o=bp-8 z{$fp9J*Qj{bU;!7fOHlN^}?7qXA{frCf)cJODZ$ZG8Lv^N)cqn>O#3ew9Z%?^l2pN zvG|WaI6URP8-x9ENujG65;>5)$`evLTh-!q8=8rP?^?5Z?BXJ?Wf!MEqo})-U-F`ZitE|0kk9OXD>n)055WaP}|>j zZrrxMUZmIZYZoqC>{#6-R^VXQA}R2O$md`D(ea^aVc>L)^joLj`#t+>eL>KdZ_EpX z-WwTlzCt{EuD$jb$9Z(!f(5rfdy-Scr|44`#5Y)>?*N?WFpLTvN!dEQEu6jtfyou1 zoP;d=4aPSY5LElZEuF2=^>8D(E!wI$JtqvgT-^)h~{ga zN|SXk1%7Kg;ftjTiPWT3G!_uCz*HrX$oXQ0oc~U%BI2T9`i8^HFE8!T+O)Cv1Azhn zEj|Z)JVyXi^9Z!FB45|16DI8M?QLUE6{z|SH9-8&uh~)F)@BqfylPsLOerG(z69TZ zCVY{!_r%^dVQjGl$2Xd%)R!5(`YNM;I{WcF%rZ>@Ak7ila={hE@+F7!0*M)OTDg6L z6=N0&wNZKc=Tp>`%t~U0svNqSSA)x01bj9S;4#ePkJ-9Ur**H-t8bSkk!f0;_OszRXN09wzphYO{JH%RB!M}oT7hppnkJ_uJ z_2*aSPndebW!=&ZjPIRmM-=kv@+%%+%+pFb_pgO%j+Y0>%n)08=tuSs_Xou=P_bAj zkpPMiz|5sE;TQk{rB?YB*0slmCHcbXH*T^`ij{4gCMu8(tQ5EN0V&KgO8n6xIBaaK z{tXgQR0XK{Wro&P_||RSrN-_(K)NWZx|l7dH1iKmG{{S(vigpZAZ1~{fd>5he%nS$ z7RZI7LbDL!xe7&T@k4=;uu5u`>w8uwu9w9xcT3H}hHbC<23xf<@XxEmU_DE@97ZM+ ziWv+nJK+gLpp-B!p#wNW&Mu-~nr$V^c>hKqXv}!9sap)-yfJ4CX7|kOW<*GR`iG7V zN}fo-h+m+fC-eQz-Iuik04cb8txs0pTq~)URyEWro+Mw%SV)FfOf)zReUZkhN&05F z1K_4j#&DMn`p<0LVcNcC%>%!CWF>PYbvrXe-ft&Xm#!pF41Hvh{37;au?;+Tm$Igz zT7E-cxQ~2VWr`I#%$;{um^zATb@g@Cnzqdgtk8p2IDHx1R|lBPr^n)cWYEQ%+6q%$ zVkvX+|9JcE__nGuY@d6z_uj)A)|RZjr!DW9={Qc}?7b5b5&{`O*qcBD31K8aAY}(A zg|bH}qb-D8plk}I1X)&k;a1av3iZgVc5^sQTW$CG!!C3nLmzm@ik_$^l16j%~F0i0vp znF?=mLM})Eop}7u$2lOzs_+dHD=?`AHMt3E)p@$vNu7(hqvN3tZA*`v0hGyfHzN9%!VOTUIm%*nZGnPO%NgAPNrW;-ynR1(6DBV>WFwf zd81t#pg=U{GZ76MYeQ7iOeLHIwk4DQN+!3a(^#(|mEC{GFfskseR(xjZa{xbLnR-? z2iT?ECsX%BCBG3W`P{}RGKWq1s3b0mWN%K3HH;jo+LM5GJ${cA2q5tJHNyjE0ty z-lA_U4;t*q+X3PrsBp$akDD!#m?^-uKuK*YWC{FW&U87Q-U8LPS z0@un1F5wZ_pVi_FCT#}59CgrbP0JciYS`6qNyAkQ2Y+UqU^8OF1Q^hGu?9+SW14Mr zVu&MtLW->teevjvLqCRNjT4@#O2AWpr0sy)0A0WCiG(ahWcXq&VeQdp6D`(H^(NCKf z;6l4fVD40-{PnV-ppVKN)@!4d&LYfnEOe0JsZ-Cp{-S)G`Z|-L9@UvRY=+P#L1_yJLnGT0b;~X?7mC;1N1naD{Lo*oI zrFJmCe;I=e#Wk@5oU72p_+Nl3b!R<+3JUfYAJhrviv)GeD)fv65+H@8!%Fb)-=|X0 z4*@_r(W)Dm8v%?dI)9S3#X4htkf-JZ=1n{A^;2C2L^w>PpZ)2?U zwYK@j`U z_5D!ip4HcP#q%KiUV&r8CPkP5gV|PB9Sn5sNm8E@sIM<@7-=)RRv^xT1=k$i2Z?PP zyra9vqLguIi6)vt-118ohO-R(R`C2={6_Ez`FUCoh7!LwT%e4B_#70Pen_QuWV5qD z=}^sd(IY?ASHejGcuqD@%bL z{mf2de%0t`;<-egPGir}8rYaMj17jU^5vJ0g>f|%ha^wXCcoMRUhnT8gn9v;tS_oT z4)|n4K#wJT>ILhuqGDASt9~x3_rR3Imyf=LW78a~$PYO&t|8VnZ!V$in(*p&jf)q~ z#RcGG2|*J~2lTnvE&z$xk)-OUpvujQaGlh((?mu=k*7c?D=~|G9I1qIVDKAm=isgk z6z}f7V1VmvUk?;aDW`vNuJI4!%$5;?MfzAg<{#fw3Iq-ZH2sESN@xpEtEWvnd&-m);MUF5KZMzZgIOh4qh?D(r9ooJ%9X!;{s^6~ zANiT$B936aU_dcNYBq517FCM@^(c-;FRHua1e;QyatwXW$)(&b#JKEJPHVF#?J@r9Rq-L~|N)+irBv;56 z7?iSd6XJ7hc>zduuy`Ee`yQ4qJcRYh^L;)A1!Jhj1PF+K|6Kup8*aHQ~};*c2MGhrd{g4CnJdQePnN;>p7fy`MT zIF;`=VCKg(T>jvq?_+$y0i+Zosuy#6T`%GOn zcHpWk+@xS?egO)fQ~&q7238ck8UPv4Hj@sia3W4%zf|QY(u~dOV`F6xT){}C zPR(XV04lT-naYz~%tgE`m%FS`0E*M!DHxYZjc$x6%aa2f9p5*pzCVxW*Tyx*0H1j;AjCEEBA6 zhI)R4<4U|)Ft$8i8lGr*j+f+3+%}FKUDYSEOIjqB$~9PxEJ#|8zhfs}uQ=BcM=L!u zVLtO`>w9_@Lj&%2y~g3S1r~_cWtUC5rk7aWfBZPzjk{h6J(e)H+b1@}Nz{Ni97BK)xF1i*V;ll#RLIJ(g@Q{w z>b3y~OTlmIFNeIw*(>901uwQ@1a%fjCQKX?=oFHa8J=v8@D)4`k4^qA%is%G8J2*5 zy+_kIsRmF%Z>w%>SdI&m-GL5+T-k$ys5toFy&fOPE{%kMV4oArP?2Yysc;#BN$&PvF}bkyt0V_-EWeWc{K~N#KY+C70UKOP3+S)t{FS!LW6(8lCU!KO+i+>a6<`E^vHB$Y|GxS-T%}cVjgs^e^98*G*+8xYMsa(^E=bc6}dQ zmE_4A7xQD@^{1rSN`7L?>I>tM^Y`_#<-E?lXC2DrAN}MshKzUeyZ2Wfp8WQIPi36^ zpSOm>iA(#t&rhRLx1p#{%N(}*^YVbaS)fzT2&$Z%5XXtyqr1CMc}JovFL%oPJhft8 zz?2k*1o3}_d@~2NAzlAS<+E;L8%=oyBI;Fv8QnVQiPUuBe!#p`U=@i2>9(lOk`79_ z8m`C}D;n%MzXXhz&>hd1W8DFv&?ewP{pB-60_MnOptDFm3x?gY&=R$^MXi*11N&r- zKD`w9iBY*WuU2XEW`fTI)(7i;nY~jhl?6jljlRvG(|5e=kOre_uO=ROZu;~K4qXJk zJWjVY*I}i)9x$Gwl>=rhbly+2cTDix5Za7qhBS*Chj(hY08E@u;2Q)zRh@x&d;(Zh zyH<;#Ev4`H2WT-Qe9O@y>gxS4=t2Q=ibWh}i3bX!s6vqokQ-*BS8o^NezW@rgj#-@ zBbi(_^iFC5N;@~P@tK6FTm(g~T$%J^k9~MaQA?2^xWHvd@MLBdk4R@fD3vy}w0u}9 z#h`!ZJF&G@BhhzITAk9{Bx1t|0ckU^7Gee_piJ{;a)O{b3PlKd>z z1rtQp-Z)-}dODfFyB}}Yu~SgzcGf~2I=z5yEvTvhjdcW27j?0?36hyh5scS$1J1G- zmx;a5=J3Ryit2bwomRynf6l2^+;$2n;jBL}pZdCSaR0d>Z}7~$w=YJsPCAJ?xVXk) ztTjat&s4rZdk-EAQ{OLaX$jwyNuDKk&6sRan(i{729z^isn(#$#Zpc*reEb)dE0zRcb3!J={LPVRN5@HRZ4v05{7Gy|D@Cxd6JcDiYOQdo$LkssBiR5Q#dZS1^glv; zI;jENz=?0L+v{!wA^|mvJ;nin88)yMI2XV%8~qRNTcgoeBatOn-vC8fwzVyH=Kumw(P3doBc=I1KkrMk7~70N>}h6x!L7+An>=lZ=O6iRzn ztd9e^EwXG*We@@54{nFhZ=n175U`HOGBeFAm-qG%r}tM)3Yt?w+!VDngDP4caWt@e z_3{9;axmjNb|jHBDl@4#0yCehF;GwDa!a$>AobsU)Jo#MKmX+~FHxV8JE0o%>`^d_ zm~Hh48Jkd~#M?2Zn0VK1RcAFWP0O-F#a*47W;F^799{n+^qep`-^DYqEkhham7CWQ z67x+wfwwR@0$alatB$p#a3Q8DIf{9XEn|fL6ILA6A{V^!zx15gER1`|dUR7oBB6o^ z&%yuj{qiniXYcWUp!v|uIVX2`h%<0q3l|GdUj!Xb@HQ>G;Qegi=o7S! zIs;{>C(UhbX7nZn`hh?RHKQriZ_)NPK$Jo6l5dd9@;1=Bv?eja#uJNJRA-de)D*Tk zUhET@1qHsY@@7@Snx@+@sN?A7pg9jl~4CR~u6pcU$% zk2^g+2PQ_rDq;#Fz7}{j@z*iy%~eN9o6aHZ{W^p}{*%TI8<4@?mngsnU^ zx~La6jaVuWn3XaZN6lk{jHs5&6$%)Y4bXH4nxkIg<%*9WOqKVDzRKMMs{EAC31wsp zA^A;OW@Z%@`yW}9|;qY4&5r_K{oIEJu{r;1Wh6}xqMNFcz2 zQwadhVUjt=Gf+U+Q$y1D{wNjLQwd#7MfpwB3}W+im$&1TV812jw$V14PdGl8Cmkk@to57e=_ZEe%N=if5S*RY0fyCk#~*GqPx z5$cc~9j1n;1Fv3I=Jnus`aO&fY-;oEnhE5YX{W&OV1diA_N+ZUq(H>#x@gDZM(S`@ zRk8w_*OaY#Tm2#8Wj<{T@kuQS=d1Q^qEC%i?VRTLS3+gVS!`l%Q@GU}d zdP=PFp9DHH_}gZ}n63PV+_HT6O^+Ydh*FE)d;`liQ$!k~lk)%<0){4V#M->nJ2LM~ zGe^lXPC|=GLwJ2SI@4*7i-io50E0|$*d~Q_O4u=VzzEg@``hQnNOg6R38t>5Pw4fA zb;juhj;oxt7_(|NG2H|rEV$vF3>SnZ=1cK$ppoUKT7?=`7?V*>j6mOqM!VJMc`EWu zBC*i}S^z#$`C&+G2JIFDl&cT5Qy;Y2(H!dfmN(yQ!S^LiA6=q$wWky=UM19IloD0eD>UcTLT&43)P9`YycH#0DO3z;QX^?O1+=sz zOvj4tFiTbo3bFja#RJtLm3Rm<43vOH!gP&lvv-vQU;sIBT)PW`|7nBhtXj?ZMQAb> zn9-6rI2={Ot?uBfAUuv->#ltqqNeG~wI#)#2nt|dCX=URGQ*#JMtm2{9XLDysb*^H zrX|#D49tI7E)&J#(Ui=>$+697UaP_@i}AIZ7sL9=qXCYd7nnVGg|=sg2k>goP@nz_ z^d!uhY_VXBAK%6TABbpedE$?8sb0nce1jpB%D*i9o0=4){z^Qp(B{-?b)ijTZP!Be zGkCqcc~*}`XyPhLgKlSkQNe8#YI=wLA5y2I67{<;<1@2x;7#D4o~JWAeuEO=J=`mg z37fb8vXUE5a})Wd5+pIpe|XkPo&q=g#hwmwYU>mg7sKqJSR~I~8e( zg+>rA2(o>7zYoqWJ-RP zuTpT3QfBYgN#vpM7pXO^mb0Y!zQHa%ze%X?8SK(%ItPJ-4e|ws?n!-l*;&^L7TsTD zfeK#wRx2sYoa$9LH$?K(3gB6teDd$#c-A6O22P6b^lbmyusWFp5?d;*gq@8^4p09g z?Y7gMb2ysCjg+9>I|cUbMAwhwSo{yivUO!cx|fc=4t3v$U6_&`oe&^^DTj5(&xSAr zK0^wQ$V}$UVsRem%O6KqqN}Mz_;#qJCEBC#$x|?oQLo?EWX}uu&%UleM=pD$FhLXv$#p>SQ?Tyc6S<7FbS5(79`Z!`5Jxe zadKR5MGdqyTq(x1And_#Pub}}3;Gp{P~D&P0vx?}VZYYDZyF2p$G>9M@S8f73lbh0 zzQEDx#2(GD=z``jk5@#&c6^acZUH(Ml(t5EOr_c-QzMZdIzc>2Wmj0*C~^pmNFSD3 z#ZIA>x**BW6>>}^FOg6pQG(Frb1Vfn9#>MI*cE=4&>?X7{^Qan!q5XAOi&vLU5Q$h z=i^)w-BboOa|u>6S4eUe#N}A3(VaxZdcDljWtL6>q58f#5%r0+F=D&0sRN*)QX}8l zsnIJ+euW_gN^J$T%9K;dHLb&QE?R1Zh91+bom1yrwAjkkvP?5~T+$?V+QlBR!!5BZ z!Xdc_ptv)xoj>20&#O3dHWfv{VuuJ2svH1*vv}z>!z(AByJo5pG)}Z#3$`>!!TaIZ zxn60M!w46wEQq6LJPNU1q+W(w)Jw3{X+!~*y&jv5neg!t1^nL$Q{&imX9-uW%6k~^ zRKqFy34jc?UbKZGPAiq}1i)bto+#pp=>ohI&xZQ2*fh zH(k!>Hz}s9EkQvjyR=XGkkgolcFFvwNceIpk2yoExPB6J`0Mzd;l9c@6C5QvGpU^t zU>kUW9f z`h+B{F*~hB48Wd&20dt#PMei+_c#&V!d?M_xvJi581rSu9YQ^){)Hal#D$0Ji7v(K z{9dbN_fnWT#$I&F#me>>L1;0Jz?9#MY0Jcb&Y^Rt%?H{Aayh8Y2-v0oOqk!@q8o6s zV1%Em1KARqphu7b-Ck;!TNf32gc0<3M4!^Q)v4oe134|7-idXm!Ojuy6c2N+{-_Jj zrYgR~NG_YI1sNXm=%ymIr?c~vj*d9>7w!AHy1X*fey);-=3Ci7ax_hon6#Oc+6Dz6 z^rJ@}QZy^0C6_TGw<~f&I-kK4Q}Eau32g7DLD#Nr0+>>dw{dj`YeNmeAe3dlVy9pm zWBWqm7If%`Z9VOktC8~fwP4mZcs*~ad+n+dfN?3bOU@G~Fbq0>``e|6N&R>`j;jwM zElefaOD)+X5P0N0^HTsjgh$Gf^Hp7o3j!UCN9@&5UsxJjr50JsKoa8rEJ#9jHk(R1 z8_2xou{LCqr&3-SXe=8nGOv5gxKuem2eS`nDP0j=zjkfzQ(_4z9=>dq6*Q0x^LBLl z2QFS?hOO<`x_`z2uRN*^Z*THI>(crKe*B$Bbn%>Z~833HK8g_%F z7~kZznTyp54IV6B3m`$33hW1cRMhYq)kXt+b?O3yv9@^pi&zX0?-`$chBjj@)5#d& zJ_A{(ciJ9!fFFx(h{aY1oiUb%8@9}V;CvZ+m2#t4yHKGhG=s*HJqbc{)F&}RTAUCk z|I;pswpiFwpoxy^r0*AWL!h<~%GUjViLwO@jg~1UIT}8x(J~YoCF#@yaEjXren@mvI-7N$F2Dyq`rFg*(zCd|tx$?op-pm^^Z#7F*LK0wAf+LXJVJSu=T$4yq=yOs}gI*l6yn#BY z`!qDctr4hv!Z&Yg9z>J-`y)ruWxS5}g1s)r3gQ2(Y1f~8O%n89eyE7jDS2Vh< zn)Qg=+rJH;-HlpLPlVC4RJ`ef573HIY3RTIRUjAj8fX!LL?Vlp4==WZA|~#5;j<7M z5JHns=&9zTXx4bE_N^?_jE~SF z=+9b4?mWI-L@qjhHM$R-4SnXb(Ol|UbOw5o$^gRfM#X`Oot;lYlY4J_`*mG^U5l2# z(1(8PkXzWUke4r&fEb)Z%uu-OOsmIhVK#>q-*xkxT_??8sCfO$iZ(JlefmW=UPSS; zXj42M2m}g2baHItBkIQ=e-JT+oMsrqlf6>H<272K6W$+|iJi9J#3tvxBB7nnvozzq zhBNC&$KZ!LmOj2_*otDx^)L1sUa2}3gwG+iob()3IG6AReZ!A4Y4-ylMa@k?H2gIX zy>dC+O4SE#pfU+AaXIjeGAWU+JoOb+!P?H6_x0#MN3KLaQcSeGB(?~nLId^BgjmZ= zu~e{Us?&L4QjMdaNTFlN_cL#%e|&cz^){JULVu+H_MzOER7%wa1meR=l`;d-CVsOo zj6q*Nf3wwomnvTSi?@q62Y$QQDdQWCMB#|g4ub}=t8RHL4y|Lh?AqI}!;Yy^D2=ul=4L&BeQhQ@64>!SeYRa?tL8O z+A{LM%q}&s-=u|pw-Y*v!40cAX9S6}RF)QvOxJaXvayKClh3L2C9PIlzC*4rs@0lS zI&QxW=Cjv9M7)xATIvXoQyHvTcTCg;+DfUmV%PxT8%C(0b?gLp3MI5!URK*B^?;FC zw`OA)4ZWXeAB*$h6QXzU#5LV2crj}LMu8Cg$~Q_py{s9#SpwH(zVGNbwFpe*xCaK6 z8Jjs`m(nh|R;)Q52bvTYb|9TF!U885Q!C_!t zw}_moFvb*eRfbfk;B6~Y)FO*4tgtJh->_A}xIn{0%bEpB5sPQwu_W?0rIUBKajS)G zExfJj0r(b|$xze9Pb_c*xe`We6gAH{Vvc?AkBa5Y3wKf^pJ0-zAUL{W^hMLdJ;01RI~H& zH9I?%xS(Zz?;(_h?!KkaoZ zV+yDTDgDZL48WH}YM&5>GGXM=v!h=)d~pE2WVyD(2&*#qknxoC=SBki-vLNW7l7!* z84VW!4e}SJ0wd!%mc(U4>_^7T1iksII1Xk~W4T3G;ECE!0KC=7v6w*uKc&M^`nb@M zB}_$xD@LCk{38{eZ`GBr<8fydfUDY~awPIrG`b;`8U!w4`T6J33-E!gUw%n#+ji`; z&p24(b5}Y|z2)(sU1HBJhkedX=R(2W9E7D z!KlFAgb#q#%zZJ&mq?;+D0rBH94>2LilGX6p?N0ZdQix9h+J}xj>lKYnZ&-zWyC5d z*}qxYV#%UEWKYU$$^Jf#9*xgSSN@tsBbE1wozy;}OU|CYEH2>j;e}u+U8>!clXYGuD=06cU>EtMKRqg z!$>1Ev$@VGkQ(273royYCNpZf;(t52`ve1q5hSeI(n048AR#&ht{3)T*xZBfhwC`8 zW=ZdLK#t&QkDD_3a=I<){v5hfl~^{@ip86nceg6d8I?j^qJj_U@%o5yNYCaxxN+l= zBbgUK4eOIAF}PsCf%~t5h`l%o$!$0!)~%}^t%?Qgutv3sl! z5~htjUbpeq#=0qS;x(*e#Px_kUBlPvsO1EAI%f6JpP!^Hia zm1Av-agg;gdW*6jXp`m^T(+1Y=Zu~;Gxn5z$pzE-D%QxJm5n{w?DY|eS>zF#sn`5M zEhE5C?>E@`JJd#XM}KiL^dPhfGz=dIYc#=JRNw=DVvU@0c`M>DS}xl4_NUi=_~D0( zv!sn$iLo3*0vVgnj`pXVFwL6FGx>5xyH`m71CeDdgn-xeZ%V55$)vI{UnccRlrrB! zD`d$Mm&D^mD|yC{La2&S5S^rgBIx}VI71J*co6Gx)m(xjf}}P8O0Eyn7eETkiyQ!& zv+1Un>O{R=z`nkuVJ{e-BMtXgHz}SCTQwD6KgQB20wBfeK5sS&nt0Qv8Iik% zsSP-|27%orLzyI+MVgz33_J~65{Re;0kKxWhH4^5sdXHb@wrALTR^(}5>bQ|CidA-8${R8zpu(wm(+J@vJZsn$Ey>JF#5BymX#U%7RO zki;trCM%!@x6O}}>i-@sjco@B?Gv-xFb-PAu$SLLO@=*82nME~E$5tf!m$Y_o z9ENZ7YOiBclr+e->?KE_D0Zd!MhxjaG2sGhuj>w(d7{^h$ zeFD*oB!bjv2$e%9{`j5qk+1n2AN6Axv3ws9Tx*wxr)o7)SA6~TAA`#lP@iiwY!<;c zg41VmR_WC#rAe8ATo6kL*4I(ep#15`gq*`Lp?MP{*O+TF40aM%3SfsQQtibqe(W2+{wh)w(U4Xd!RZww_)jtF)+@{aQuto0=z%* zJ-!_H9>>BshoHAOuqfs58(3)xMtEcR4hL9u|57(B^{}9`-dcn9q*6pEMCl={owj~G z>RY>(x*OlGUd`OHW&gz&e@Bc|4!Nh0Qb8WwTOvs&2^~EoqQ2S}S=QR>J-vW4iu~3u zGL0QYWdZVx_adeeOjIp`?a<_k#HT*3Pt+ufLe0en zB&MoDdn4q^3CNTup8TZ^n}B$;s~T3}Emz&QkRdp$fqpyzG?}QwG0v%`O)?$p;{m#` zim)^5l`*{V*eKuy$2SN_Y0el8+l(3d6SnzED3QDqn%t*R7`QsIDq%tb(3KF&1X7{8 zV@^`rHPFNX5wgB=D&;x73wrRHhr5X=&t8B!y@VAhHSsz_>Hsgo^HK4?{q6eeMSuI7 z=o|R3K|}MOkQ0~iH@6ae=-gn#5XF+2Q#rMVIJf`!-!LQormu)I9J$la>6&(yl`kY2 z2ubWB0y>|%aiwmWp=?PueKTE z`P#p>#Y?qjj~#f6kH`o8I=20zkqCkHj#)3^KP`vobc!xGGQ; zK(24`y1fRL%85p6@%TbfCt*J0G+HAbS8&j+Sn`R5(olK#Qpd1>RpmWAjQ%N5&LYqMmAwgb8lw$L8ihs2QDP+^ z+o4t21DZo=uf*j*l*AC1i&R;LSOpbjW%>^49*v$|13^SUNNJ;w#ds}W-rxr7f(iCj z3MDQTEQhwk2~CGne(ui_YPLMWl1;#WY}Nn)?FTRj9S%rbR_FZS3y1wBZGZ5QfR(Nu z90*zy@G`h|Tn&uq5x_OEsQTr?+K`S|9b&JawfZx#E5XLCEfRSt99|iV_5b!H z-#b%?B~h8Ad;!7La#?1FEohc-HYd!hr?HH@X-ky>rIQ_E+hM|3BlYgN2M#R3hza0- zXC_z*yBRC|I_$i{YpmBk=J6aH885^UF@Kw6ix?UW3$&`?Sds<<%WP&DO#Hs&-pOR| zr8!SCAW>l?J~zRabNp=SnzJAN{(C@9s!sL2$`V@!oo|cV(Yh=z1FeVyM{mFPR43TlQF{>6r)om>#{CI!hO%)%14E_YzfH)MZXJYVlY<5q0 zpd%W6I~?ASPEP{Qwf2rX1ZXxjA3B@OX&9l=kG`dNNK_Ii8M;P2OUfg-W_s{(qoa{& zcZ$^oiH_Cif|1}N(9tyuNr}bCb_AR(r&rS0%5nFfzJQ_R&N{i>_I2X2!S0JvXuTZ< z+S(ChU(0gNp%x0_OMO87Y?}S%%^Y-<-%lD1NjY1>l13F&hu_aI88R|9#57SQAQpJW zF%GcD!)rV!vD(3bYwTF}lcr!#G~pQd#JdLX9=uxsse#YfOylpc>%_JKUqdkD6RdFr z#w)-tgEg z_y`OF#6$XRpgQ^_SL>7V6u}sE?^i5|l9z(hiFy*z1KRik_StCo*4EB82qukq2!zeTCBm9%C-v}koW7H%>!|L$(#tRL zU7wdE7IrJht9AFPqcC44P`QLOAOHIR&UT`2z{hkvaUxYHyiq8uE*4Rur0!{ED!_V{ zA8a*Ue>RLi;+(Ok(h0LXdSRH#ENE;zJ5Bu=_H-Q5BVzR1=9TM~`9MX15#M=wk~Qhv zC3?{NvuwC}1kF?^!g94dY7i--3aKLAtgz(Oa&37=J`g_aOZgFsTdChMpy6vKA=`LR zIP*{%kG7BQ39xT{Igh26Vvi9shlek_`CM?B?w@{3x219c3aAcD#6r_pv#feqsy+Ib z&<6ANhWi?R4+ay*hk(q~3o3OTv+?rzIJu-|ILC`A_3AJ()wI}aMzPL}t78gvjDTiM z&{h~a#Ne{x+=@9CbYct;zN@#>ObDx9Ey%n+c|zuK5i#q4pYU|sEB?d<*G@tM`_4~3 z7Erejy4V`7tH1o9BXG)@S%Sk%@7RC}1-_EyaB?J|nQDP4%?_s7ZerS-MAT+MC=uY> zh5l%>n3(Do>zQ7Lu3~ce=g%~{jYA92JADE@zra&o5#cF$PLA{kJR=!yS7Go7`bG8u zU2y@##gCP^?%pjk8A{&Nb*;9A`8?_>F)jV=(3DeXHBe1G#Krx`Uqve*fAfl5LsJ@6 zrb*LpCAkb2htE0+ZbHc7M5h#_1gxz^G$Qp!k5# zeSJI7XT9oOA)2Zu==5vXN`csDWAh9dO`XIrF+2m6Hn0|8mCK>fv!T$ENTeI89t}7p zT+!L7^!a+-ZsZR0Rcxn+BjF>ijz=1-jK(H2qtPln*}mh*LY|7fob&Ax$p1nr_uqlSBkv-*#}iaf66>VZAa$?glZ|1 zr{l4us6}eoP`Wk({Y}rkZ+)XWC?U~vOyh|xdlWVmAD2s);o|#aCt@lwj)1?&L zSX%84tB=4q2}0Z(f8~6Q#hchu;^YOx^N9%Ta{8Q%$D_aga~zxEXcoT=8;tVAX7#!O z$E&VVLt_-(jgx@irt?$Wq{FgVt&sJ=<*c48_&@Ums6u?4NNh@{r$Hp!6Xu!}Y&}n@ zRlNA#c?(+htJ*KfH!8Z|X` zc}YjBRg6;9)3w{_crG%M`kK1SnzXXeUWy~c;4omuE|Ua9ir7jXVlbefC*!cxEWR34 zuYbzBPR#*R%QaB0aUUKdeuRFC9Pu#EJH^BjF^yfC$SKE+QEqOInWtf?dJzx*gek^9 z32*(YF3QVK(*e>iFSVX3P%%VoKUc!JHLO-PfD#EA&Vqnk##02;jrhWd^3;V=mdVP4Oq@ko={S=K$05*?6*u){BgtTN|0IE z2Avq^HeBBDn}&T2*Mg$u&5-WU06soD7*@mQ2xp&gS=e<62zAXFvupQN`q~L1DvpV-(i5iS6_Zf!#Tm9m9dZlp0(bC8KpTQF2+h0@h%vlBtHFA_3*>0Pd{~{Aob_QZ!^16fSmm6E$FGXP#?^1 zC3+Bpj4(Ll8y>OCB?(I1o>9+k%TS9bF-+RZTBf1nyUxxn-Q8bxbVR9HS-m2mFe(#axvi*#p%V;6 z*wd&AIH7#YmFLk;>e(ppMyznP#xtj;3D>MXgr_>16t`Wi1ofC|nWAuL{b;YGdnGCp_U* zhwsNP5O%`Y?BTSv>Wr()UU#$LPOB^jx>PhC(&87z16RR%2T11$aL|^OHv$eYY0cpe zKcv1SRF!{NGc1W&i+kD42JZBC-m#qzA7xOi_|O}RT^fr$>EBo&GOL@{#bPhTgaJEl zcQxBrBxEyZu(aH%Q#y}6tK=AbMK2VMy+yx?L!3buHy$HC1L!YHtnKd)-@Oxm@?|p5 z2REK_QW$tNWMR)`xfQ_!{-poMkePat2YrOSyBT7(pC@CZ7gk@z8#$7Lf)q1;Wt6%1 zooYrF!wGF@qkcWQl3HVO}N3?JOX>a;-3LJJ5D$b4i)4ESb@3WXq*2lgA)qdLvpVE5UM5=cZC-zyI1W zLj?Q+Jy)k@H-h3e0Q>?D&&Cq6d`u4cU<80)1AuE>I-$@R7;3$m;nq)fFxaGmAs|?C z4$DHq^a-83W8+m$hO0@wKBwlX5?cRq0gJC-aR{qM(?s2v*O)W*P<$ovs>{ICeFj*AfYuYt6bEoBIN=!Y8Q_p|N)><%<_CiB7cq&A6X!OTYe{TSpklc^TnUeW9F){qm}ZBW88B~a z+IeI?Pr+Jr``K<37YW?fWxMzEGi2PZ3r?M{fA3rB_13U3F|&ms<>V%Xg$38yi=f?P z&W?#WY?2)w^`d*ma#%S-z(x?`(>bhWLJnJbaYC9+{4=`UkFqL#R1UOOLavG{)QZ$j z>ho9rAt(zVr)6>ouSw&$I^GxL@l1SSYNU`PRhb!iHwY*2IJQ`KkQe;eQ}BwR*N|@s zPU00$@&hF7Scc*r&t$Lnpv&c^-cfRmk`OcqqqZBoeclfRY?TiJ@Pt$6MgfsF04Z&x zo!&mrz%sjoc@lz{|M^{IQ0fVV)aF7mAet)l zrb;$_JmN-%L0KRg)mmB$Vaaq+FxSy!$i)4qX^K3YOzG?$EeYu~alED1WzMHVq(Rd> zciwD&blsZ8F0*&#<}K;qs+IE{+UC)@v;5(8YZkiAo)w$6rh+S1&UfnlqjP6_!)sPA zbT)ZcY}!IU3U9&i)6L{5q@q@-#5l~jN5X~(-wyO~O{p**sGUhlP#)&34EFbvQtC+O zh3A}>{ ztB*`j&-U%#dtsidRI-vg&%Lk>H6DMNY&*V-*dy~TnqxEAhUYQVu36JyPQcJ?zri_U zn#E!n8Ud6)_S4%iYgbfr@&@>uafC(V5*Wh=t6kNl0tmWFN29}4{2lEZXkdBlXZY>S zC7X}`B}BYhanHhZLi9klzQbZng(aPmSkb0WG=I{iFE{EF0ZEr?D5Q@D2zHOD+iK3m zrJd4ro5Pq6Q(yG;k)n2LZuyaR;ze~+pG})dsPx)=xzU)+CY5;SHu3({h-7dX<&ljk{90908P`zyoi__{F6!r;UYLc5rOk@ zCr$$4fw37>*e{N~FF@FS@g3gpn4b4-*Y;;@yJmP!K4Y7o0n*Bz4cj)l7o6X0X=`#? z`mEbh=0Z%I6Gd}qTBp<>R9lKsQHL<^K8f0jv9!kWak`Jj7M+fBx5}JV-$xLI((yb|2i1R#Z7-rL~&1Kr9 zvGwbsncZ7`=J2kITar7r_+-)bYonPnw)#z>T^GS4C;Q~^NW?#H-jJoS_Ddk=j>n2V zR>N3SQ1q!LN(G>)j?_mg(Wp~R;yW=GJRl5D*C1*dwua@c`gD4G{EzQaSc(^2*4wMk z+eTNdi$i$EjjvrX^Tx*EW$VEKN?FMbD`#7&ZwPtipK!a5xUDjId9NXBw6!S9>dDPc zKpgrEz!+^)m9?W;Jd6!qxLG{XC_S% zeg=zW1sD1x*+ZWj6$E5>))Ss6fOQ6H^QTT+tU9S=;$l_ZC?029U86+pK1Z%Uej&Q3 zr$?8wkFH*yU`Z96`1%#IulMZQ+lyDG@9NzF>feMFs592e9^&3gH?gtT)M3iXy{^jc zyg4f@3DaM+sJ)zaj_Ze3^j<}cd`5Rq3#fRiRUEND-C_?8waD2T4Nu*_FpW$L7F;!N zUY0tKAocEPMh%eqSw=&b(PHfJsZ2cvt)UmpT7afAS34n;@TRL;hL|meiOg8Yb2D_Q zTn^^r|9Llz3y0KkG>9o+?3%=nvSdS8) zR@7TMG%=keBP%J|J(d#EbZQgY#;m-g?DW`LkiJ8k&|7lyqN>YhZyWF@_gvG#*6@0+ zxrBNukUjHcx8JpS_aC9=XDpYg<)!=PlEZhmp{Xqo%_nEw+i^bhe99cMqPxjlkUFFV zB(XKN$?fu1huzYqa7o*)Z9`m{P6}=Oe3OtNw`d&^vxrFV-yfrXK<_FvKD@tlnw$}K zn^FxsF{Bv#&WCrRPLnknGhb><39p2sWr-Xiu0_%uRyC=k!K2g>5p=}eC=>%jpd`}s zN?fBjFM?X+9GA$efQb`posxjUqX=H=68mL7S#Z5m7EyW>v6rWuIVa=}@T80&=vS}Z z2Rl0YQ-!>bc(vveXkUO+2W;J!l7{0SM9I^SpNcM@GKF}xuL9cpcUQK6l{NhIJm`6k zx5=2QUIZt6^=Cu2Q8ON`@vfUx}d3-rhg-D>BozPJxVw+rMEjN?g|Y zNGJ7D7urwlB4_b8e*VrA{alrb)$zMy?}Fp901o&7$*=v9iUurVQ*&H6%cmn!aIkpi zAY3kk@nzVVVUY16qzx)vG-{*GA90qL;J$*kp8kfCumu zzh9u&sd;FWIv-8x14As(nN?DkQ9C_Ii1?9Vg+#@b8MJ)j(eBH8q?8h_vR&4xiz$g6 z@y(l8c!cid8#a8})dgen_CK*)B^QyUik2y21di_5I^iErSO)xbYMc; z5xjN~&B6`OkW*T2A-=8%og}l;)$bwp_f_s7iOrRB0-dC{^Z2L4R%#0>K8c5%Gy=o( zrP}&b0}?lofar^f`|a5EwSkw!{{>FoU{$b7!(j@G1=byVNbrFo!Wm%rF(32nuC6`J zThA%;M<4A)GtdEQo)p&Ox(ho+fmu-4QE)n^dIYGU4|FP6LY0)khL%;CjK$En^j43G zjff}P15_hlU~wqgj7b%7DRd=upv3Fti_SkI1@os^(UZ6D$f4ZQM{l`cNrs7<`+OXw zj4?C%ZqEA>k=ZRoXL?Se^6m?qjkA`ZKzbSY!XjwxhA zS7mb#@l(Y@tmPe`rs3JT-Jeg3z(9L_4kigAl7Hn_gSg1t{%(K3HD|<{w9lCj4#No! z;|{XB_J`LQayFX1NdNgXW>~u#_|V`4hR(HW_N`j$&lBTsW)Yru79t+2b zJ5(LPuKcjIuWu4){Qae<4e-i5AG&Qo6;u?21}!yjz`SiH8)Dj->xf5NW)vxV3wom5 z+k!r#9^CN-nbm<@hDqO*)!5o~Dp_-o$_Ow1TPMCY`RCzpKmVtvK(q|L*mDPE5d{gu0-#9afG{lY#)Iw9_!JAXjw3>!d2UT@&D)&AZb zFFi0ckm637pk{HpPMZ zrNrBZ^~i~~S#gc7C66X|Lkau;5cVB_ZB^Ib-1n@#w`5tvk|kTV<)tlaTC#>`5@+v_ z9WqD=gzQNmKuCZj?7jC&*`<_G%4pfU{3*}^1zISp6s*U0&U=#WfYZ;Z>JbOMd+)ht z{LVSQ(?NE_Gwgu~=$>P@fxDsgqfb-5Jlr<4P=ULl#ppsp9qKPVQki9Tv_)xJl&)uk~>B+*m(1UXu;DP+$ zZ`(n8JxOOE?%~=ayP?7b6D}38fX4tY2P|?~EMUXf5}^>{2_WwfSd5b1f(}AkfiVV6 z8j4D9vn(+ z=GOR|@i@672Ll>_fy$KZ1dk>=(WwvnsAm~BIaE3&LopwPnGG;N>h{E2M45%j9)%A< zGkbo199Vk2U|g_r*$Q-Feh3$fkQUmCt~?$FJT|;IH--%c+2EJ0Y6UlfqwCR!koXpU zt)i$$K`#N;XmG|AnobO~;0xq84eCUgwnAUcO#b zKe3?yS5dCjCcHrG>ktC_#E7ZMKxXDqaTs*u#%mTd2) z<#IuK!yMC-MQt=J>+GL8F%7&jDv%NYF0(0dZ1U{MG0~*iuItj#qtx#r%#EGo&s7bk zmIg$QWOW|(;wQ~!oT0@|mVyx*_eHifLu$vRZs{-wXCxF*nWZf*OYtaOa&}S+15kL% zKyN$4->Ove51y=h2U^T_A+6=zR`o6MiQe{~)6VvoYpAPwZYqY5Wn6&Wa# zns`_g>FW)Px_YePw5b(MCMD{JTxeVlRhWIi^?Et`3LY>zUV5box(<6vseYqhccIvr}aSJkk{+rxB7Gr zf9Ix^_1U^br!YTsH?KcEAhyXvr?0v*^L^$DXtDJ(FHnjJktZVClwy(11|{#_R<*p| zxeb4|RdvkI7)6J=(WCZj8XLPi46SY%45gL1n_=rVz$R{IV-OJ#<*?~~)H&>?jpiMo z(;KcT`P0OS%&pXirB#E}BmLUynprtoC31CvO_0!q;U(0c`xq&eVjNDFSVSuuVHN;@ z>M}6BJ_v&!D7$hp@IXi22VJ;dy%+LfljjBofWu_Z@RlXig{233VT7~NWSS6zVePh1 zgHR@@h<9TRyh8D@7NIplh3{5YI?)) zzPZ$;rF;9R_4tlM@QxyT*dvsQsF#QTkDgFCzlZ6jc+8wySY(y58QxJSfnd%D3D^hd z{<1WxAhv=7qs09c!<*Y+wRe;gUbxy8PCFo~Kh9}#jN>e#3YIlN$LW)Y50b}0 zdOrYqruTZO{$8cgFqEPcLVE;P&MfM$TXo429^_K<>t|=EyNYe4jnoNwpoG7c`K{F< z5>_c)xDjINFY5IlJzWqRjDohEN3MpOnSp-dO6EicwxX4#FJO%y)|GI^3~uO%uwgok zr5P9#T!E1+*9Qeb5K$Jv3SgxcYfHEiA@I{GSS0xwW;wjfyqHd(1BK2^C$UF`a#_8F zNCjFePrNlRt<8jaz}x1JTSdf~r9ozR5rVym2nue2hQOk@@+EMk}u_-dyq z*s4g$y?)x6TRFU(dOO2}C@GWIS>Y&vwOdS0U}i+OZC&dXK)YMx;x%i7fM_^dQg^PvfXpF?j9c>yMe{RvnZ?kG~H!W+(&NBP_K3-FTM57iIkW(;ihZP{Vp$zPn+w}LJJYp+Zr3}k<*qI zpmDT??CkoPq(3#+ia{RTsC@(?>Mb2}$?M7e00@fX5`#ua-t)<{Kn)H(0aaqTI@hy( zUVte*!ay89oUft4e39=q?d*P&+VD>$qldZ>07+o|h~Lf>XnMk*1O&gqzV z^xi9?;ov2AKX5~z>y(S<@*x>N^THK`$&dq{mVs1<24^lRTVe%fCnF~ZvrsEBm8r3d zgfx4Wu=b~0w4p@85;UjM(Ji`p_g)kb!H~Z8{Wn7Jfx}%-Wyt|WP{r+GSuc-wzHB=$ z3q`Tv1#fKJ0gX$b-q3VXDmc`CQ4>o)6shJO91)Dn5w0ju##JY}uDR#v6bL4U?z;Jc z($V=uD>Sy%15_YxYnC=qkCeLEiL84VFWH`ENb)n5{ZQ^iGJGM$L>1L~1y5Ed<0-W! ze~px4zKxuDU|*+5tLEizzNL8Yx2aRWBj|v0d#r5CIMOmN$Sv0qKK+pod znK|Q;ZX?X51`5wGwMs7cnpYl~!8b@IoU=&JOq9z!##L9G$kT{toWDr>LgPI<1!@Iv z?*pyOOmD|Y3v6wcc`L~VCPMZknIB2_zu>}(*hA)vsOM9H)LpXBmi1mk)4EMGtz38Y zax0AcHO$#RuZ5CqykfRd=8$Lx&st2KcC!c_GD)`2x+VrV&V}H$ACok}!YVO@VgSxDAXOY_8qc9r!qC_UN z_*_D%pmckl6d*biP#*;2k;lD4qervQt(q z`ZSw;zDsEEx_L0`wa%l3`ioPUbI1yrtl7T#`Z)rVB)xHIpO*R9amtkoWHrJguY{TB z(&^o#?fWQEM}#t2T{RSIXsSUb?#N_lsc*GQ;audsiJ4Ah%+KLHXYCB~6*AhtVe2Np zuB(ey?s;y1qs%EWO+EGeDb|HIZ+3|56rJDPNS*)_@lKWrgLTVktzsch?t*J5W^MW1 z^x0)MP5}v9WL5+mWicK;yebqdTq6byyXDsZO9u}$WPlPP42mx+xjN5$(S3Kn+^*;n zX;n-#m)lQzn6G1`F(#7B8?4aiueI>S-aOfoA*Yn;s3WCC^rh0^x&|rGGS}eKW|$x) zV={Uh+Tw;WPx~m1t(_vMf<+EUgjv`Qf^qC9J{6c*fWEj$yAr;>bezZ8POd4ya~~)c z{jk5^Tnyv>Zm09(Kg=H)8vtPo=)+JWZqJqe*$sP{1EITa#PPO+Uxck<$7rchpGaSJ z*}$O`AT-aqZ2$xPDwN?G2|<-{Y#VUzm}jVaOBeT0`+8I+F-|y zLxJuR6vuT#HFA$u3COWTfLyERn1uF=>w&7FL|!?cXCUH z`5T3ek!!I0x|W|Ir7fAJpqkauNTOhqJ3?*t3_f5a{o2AYZPwBN7v6^2HGYA zC_BdokEg<&Nelwo|8*{Gn-HuSSgAnF@MK2o*x1X+?MPMNg>-r!&}K4_o{ONzSA!lO z$jAsPO5Aey+8vu($=l4Mo!fS9 zUE7938Jd=^JMEMJ7+gQAX5Fkfa+8n&i>)|#zi_CyaH|aWp$cIe{$Sm#vH66WSNg0- z#e3uiT^^=12|X!^SWtSBT2wkh*-D=*rY99kiF`G^V|WLcjVM`=_>{QcG275JK$D6# z^`9^U=sD*14{h8?j&_1Po({HiGu;PYRl3nFfa^e6FL>Fw@nGXC8Ed@P$9g{XpzZW} z&I^2HCQJ+KlbGJ6q@{1+bq94tX(13%^fR|pZZev&z{}M98ob=vLOfNGxu*xEs#tQ=+;DcP7DIn3;TFw*<4AWZUm_~8o|u7 z?ip8&2RE2~>;zSd_8Js3z>Dl2qPG5}okG&+1+)hmsFn{7Qhj~z^r=1SjHKGY%*h#D zf?i(TALyYT*wB^Kl+w3F%HN~V>x;k_BW&!FNCebhv$vnke92T%|JKzNt2LVTcD1$7 zqPGk#cxKlwX$E>UCX_4?Bhd=>rU*eDwZmptrlw=OhSMZEAQ{)sNdzV`c)xy9*kFu| zK?$I*Qt>~qf(*_GRRRU%*JV3Ik>`7RH{|oo5NAajEeR!w6nd(s7$u`^cfsgB3b9`dbT)*uAW%r$kEr%LC{#`Vw_qz%U4@XmsTFBtJU zu>^ptj2*cM;~fqgsiJX(VHr3zhkdc=4(;RS+2=w5xbHk;i(N$FO{z!s7x3WeVTj&@NuIX5R&tAY)%l$s_;#@@?( zmOjM1z`UBijoe?Vp*Kmq^J-7%5ips z(kYcnp3fNin!s@qHga65B$-vyx{M+N zw9p3&v(rDHVBu9!5d2I1PM{HXq-8Z?9#1G1JDaIzmFW#0zDmJ!E!*aw+h^kI4C0o9 z6I>Y(>pM~_E+RXP}9s8@yi18XI4Otf`H_@H%Xi4IpoGzB0BsCb!`^V3-Fk# z?ZC7M6Y0?;z$$D2Vm(;atsDe_H9DzLI|V)mh&Y#5|CP?#O!z`|yLiM(}c9$5sl z(6%Qp{`qI-sR>=55YKBhFkX%ea-mJJc3&M-m%JZ6``}p-I2<~-bXP z3Ft8dkG==OnuVODz=RX)yO$kww(bFVQ1yJa(1FjHG!|_F-Wxcm5L{tg6YJ#%D!AUU zo6v#IeK634sWm0}jM2N;G}6CG?b`*SR>=G{XpHuV#^)jSn4J9! zvH#gzJAxOWhtC1E90nyTk2L`gAKer*N+`I;uDFapmCY;sPOS=F^{AHt;~@ZWd`s*dMgX){$eSUKRZuu>nS~T10uaJVWFPBn0c4^J^}M4U#dY^O3C^w zAf4p&XZG!*3K0MDncx03#a=m_63+f)O2dm9kA7xYsseplfba*@#tHAGm z0Ry0EEiYq2Dn${xa=%`?tOmFNhJpnfDBVt(_b(TcDe zu8+qjXI#H*8F*e@U>~`PLiCPt7&?vwM)FH!Yx-Y$8iP&NPX$%vq7+>e>UPLHZ(n-C$3R*4jTFN~B;yaPI^!e*<5?U!It}{dPeU?{(XD`6ID*ZxXgX?TNNd3rW;=#h zPuNgSWOhO!BliYMDXA6+`OSQodr!npIjwS9`PMoM&*4_yo)W3# zZ4M&iS33n_Mk=XS_N?mzq-@Dq+C52azN1Q`5w<5Pf)=5~OpgXZ3Yl9bBA!@lj9hqe z&5er}f8L;KZc?`ZE#e!DSua(#W933;ms#1=00ieB8!QmIa>FGg1c;Fizjtw))Fz6N z6P{WqS$cmGrYTlMZUQaS35NXvI$AdDZD0(uU`7BK8Y(LbkRJTQ;)iG=AiId&93$C9 zj-#-tDE_rd7cH1k94ziOFZzqk))JXS%8km1|**{ zM%XQL=W%F?KV}tw1D5vh)WXuoMJk8BaBl>XI2NB9c$&!Xe!puM6=l9766WFe;x{ut zD}@r5TPUk)4d@guJ0ZKQ>15adG-pb$-)CT6Vd}}U#J@@F`{vpadn+uvl24C_B8p*U zCT5wb|2Ux6Xc&*`7oe69-pk4#+?0y9d>p;>akn8=^zfk6qH}=;sUkB$71__6!oKcf z`tM4oC+GA*V?`*1j^BX0gn$}sAMaDj&o@Dk(tbm@LE7VVN5mT{vz{s&VkLe zmDll3ikvfX;=YL!qs%=?2-0q1rjdoA-cVnxY$ks{B7qfX52Y{xm-BxuqEh>eo(w)b zYZ>rsI8b)%BE~=l{s~+>eViqcZB3T6+N(-3f5f4nC*hV3EmV32y5CN6CHXMedgS`%F4zXuJX#z&;w-}tFrOPSycq1F7ena z_n2Id<1bv~Kc$}-W?Y+gMwdV(>JmY%#?9T#6+x=0^!gw3d@x7_u|_>3mpcM}(fQ;k z)Aw~`ZYN#Ofx*X`s8)XCj9Px}ENa{RTV^JRjqjN=t=2hn9wTFRQOXlf486>*`6i%4 zLC>~=#o58PMWiGSDDk|q`hjHx;18}HVNpEwivC3Z4okKxnVZp5|JB~$58yWuKB5EE zRoUztNW_a8RYBfoYO5)_RElEZ@~J&A(mE_P8@3c)T1{p5ZSfIRz|`iEM8x%Nr7OqX zu#>w*rgjg|Vu|X#dOi^`@6q9R6Z7ATGl}>=Vq}r7X@*^Eh{jH(1XU4Qz@yGFL6*!| zV}QYsPmi~KRFSzkzW>6r!+e#T4sPGOD_T})5B@@-A=Dp)wC(@W1$h4r?ET>M0H+H^ zQvk=g{j(@h=|87JFZ6ZfYG%HKJj~<>d6dc4lJ9fOq3o;a^zp7bl}_$jzrORcf5(@` zp`>s&Xuu;-n0F@}c{4<-50o`pWxi}PE9Mhef@bz&j~9M%m>{eKu`pagJ-m2j*pmlg zE6TyKx*P#dbP2J6oCTC$rVf{m7O7K;EHDf92U7%4_VF*MtjRO8$U5dc1v$X1)u3#X zPop(qX0Zsyb?fG8@m6+2~q%r@@}H#nbu++XRJkHXARtd(Mn0BWqk5S!@qLKc zqIXh?!m=(E3}BE4Cr28avt9`lbSlC_0dhh(d{66&B_8C5a7~}-kx&9rRgfnU(%&LUZT<30%{=xS;FT>tRMD3 zn86K2OrR42;M2x9qGdae8X#1@{S{wxg#3<;bbsxfvo?}#L?4B9gJW=A_RvRwU21Qk zumcjb_rvQHv=uHKp5=}j8bt|V1C(!Q+q4n6)eL06fa6Z>f?;ceLr&(BF{tktZ-Hzn z(mcLWXcP(6G&E=fz$*qd!RJ+}rHJrCiHpi9kx9r8fc$J69NaTF7-W9;YWfqMW0KWq zog6bZOtk8?!N{MJi~1v4nM170E~c&<&#^GPE>luGilW3KaiawaeriHesgeip3VF&# zFtu?&KmT})*)>Cujm}0Ct{Z4zmKcJIo^iX!Y`LL)dBE;gI%r08(yvS|wIi4NCuPYq zYq~dLp&Gmnkl!%9amrtM;lhk-LkwUQL3H)IowjUDlT<}BrN_oKucUh~HT}jVD{dbg z+%+%|VjiE;Wz$C&J21GhOx9RUsf5X4N~Wpd@oXs!YC^pCS$4$&5G@-x8SO0C)X%Dx zl|aC^8`cdXg<^$u#+-_P*uPSnU0!X);0Vg12WS&QDizOSbZ*edBt=#mfyw}{tgNDs zjiEp&!Ad;??12;eseI`nvQe8DYL}Qr{%Kv>fo{{bjaAS-1!?O$!^ZXoS*Nt2t#qo# z)}?Mzr)rz*8R*#SYJ2wC+AhArYU1nlqS_ka!x_0s6>6d+0^n^^{;5l!af_`|X97Tq z-;j%$+cIQbR;*Nd?UYQQcL0g(f#ibJ1BtcMt8qT-;_bPw1b<-uHUsCj`Y(AVZ>f$) z4Gv>0`9!lepzY8_UTo4w4eiDRc^44r%cFbG-4gttaDpNg+8WJTAOxHcKp-qQDN--HHKR9!WpZgr8gin z`l*vt$AnPMVIg9^riL$K_I0~f2CEcMQJ)UGGnSr79vbRP!>gQG(oGkBy14WcJ?)xn z{?Z+PBSnOwx%XTe6Trap;JMd4JLjHDPIJQ8T~Wi%>wmi>$h)faL=Hy{#qa-WWt1tA z_pP6A6F)?|#i>^vZ60V;K%90Qgf*huug%jG|uM^P^Sfp5llx-qi@h7TE9;B^7s zd(yd_8D3IacqLB55R*rkZgPuK-qL#AE9!F2Y+_gjA~Mw{kt>(h#idVwmnVnCftTN?4R>)G045<=cHC5ud51#HH`ybtje>tiV~9e=inEALJckaUl#9epNc->Q3;j zc#dfc8l9P|(QTOhKOIlhYV2#IX@Jw6qctpeTe<8ih!LXmV|}aRc%nZ>BKsqeP{;(c zra|SkGH+(8d)?UKRG&>^!9_E9jDd1rRq4w~P(Rj3zGEb>bxTyLjylkKCZu>R*C_o8 z7i(hvj5FDoJ7K_d*yuEN#(nAz99pKRvQ4J$jx$%p@(FUo>eb=*|MH;;X7kcA^yekz z82u^`m(ki09B1Z*`;&*N;U#E7xTuPaQDNE01c!h$#;GVl6?6&u>W;DFvWD?qhO^Zdu5_evbn z=29=Ao)7&aD3nO81|ktD^}MR8)8kZxqL#MS?3%^b3a4+L;}>hp8iAY^7z7f#8kmw) zLTKZ@oOTYszBWyr8dksNpnxnI~d$nlh>K1 z2CB96^64ZD7#H{2O`c+6MD26r(uOWwH2p-%I$^p;WRZBL^c*WyRuL2pVm-N-I+c0p zzkXkPAn;~7y{@b4qg2YzoZ@wB8XKTvprNVLZG>(VNsU0y8as5}Sm;ATMLuOelfUmOhnK9$-*JYPnMC?b$cYfX^3K#Hm$&c$;g z?xCQ(rB^@4P<9hL;UdcHf$ob`Bq7z(DOy8>-M|;nDXkv6dMKH!l!}Q8aq6Dl87KpOfSY4r^e3?y2VBpu zZU}2o*r2U^_AdBbIdd{b4q!{h=okb6#^i9~@l8bkUSv2T;tELxYBLB#GN1n*r^D`q zF>3ozvygbm9PUs?740G5ujGP&wKydF>6}EXih3ZTv$eudrZc;&Gn@EO$?BcVZB7y@ zG(}907D`ge^`xY0QB7?5+_`~2hRiy@Pixn~c=d21u_hk(F<&rOJ!GnZK^-#epyLU4 zXJ$Pns&inO$GL7pbAFE6=ec11*>^LCLla@Rxn^g*;z$$ z8&0o`;Ai+fxTcUm9nIQ|+Vin+3g@RDz>!vJRKOP8FK7p3I@YIBhtp~1CBMEw7!tZt zor-E+f@gfKX6HPZytibp{q4A>S=%nHHVtK!wX%r3=3rJA+c2MBEt$P4paKXoxfSzj z5K{`FVao`$j7lR3lx+1dONxUdsCnwqCQjrvC}0Icd-uGR&dA#af9&X5KQJ zI$)|Rnsl1>j#o7>zEoxE-f>s+oEa1CzzkcH9T=#ivZG-^K~u(Gi3s8XjD%h<+keg} z!mzU$?jbieXg*G0#CV9+H}DzldBx%dz&qk-_gkP~i`z($$+3zZ3M#k?mx^Mqgsi-B zf-ymXf>*=2=qs(*Ei^@b$Yw8x((&!LM~{+CQAF}mCc=Qt%%N_`MdP1L8>m!ywB#Cu8aPIJg9G4?5;MYvpK1=*DSG2@MM{0%E*K? zc2?;_^%$uAfWi1Kq=^% zRJhL6Go=BB8+oSoR{u4oaEcNlJDHKxx9d7&)*5C%c`m~|oCcG_q{dGe(5aAEDFt85 zE`>?<@=p`Y0sn$1-3ZN9pXyp>^cZD!kv2KtbQNM6iCtkVOl`VFWlrn$#tig`PPOXv zkxphYvxDRSlUTyMO3xoJ`e&sYtqWH$QgQXsQNbFg3b@WnHETFvTT!}MPnF$bu9CE3 zJjfW$iiLi^R?IA{LYDo=!l0uhttXl;Ad`a;k<4c} z;1gbpaAx#(<3{{+ehu>p)M8i1RwPPa#Gme@mOx3DPHl)ca0AB^%mw-UsomWj%wMT9 zMz8m1jvV%3X4%T}pt%VP#b^Un7>~H26%iiFrIqmPEvId5Z(6)}a(v zaz9Ku`z>=pM(7igohid)KLW7rz03qJ-=GHKQLSoWK-VCO2;J0+nYuf7(sBj=^s6s7 z&)m`jD)-czn*ZgN>*z*GGnCYMwJj=-9`fZc!r-;L3e;&mDuZbv)L03i=}{yVQP=vI zH{mq?sWaigC>#$cA(LX){vO7O1)h*iII~rtQu90;9u~CBuvN)u`{0j8Q_@glOm~XU zzO7vVW$^V!mKV3oGQwo@<_ESc5!?EzWi`FTV6vqRI#ZqrF!RZR^uI{!{{i9+&Ei-J zBtZ4sRz4ukAH=#Q4wfkZK?D-`E`_NGtf1D9e@K;39*DHzs9;n9JF=kS{-8-@y>9k+ zMv*J1;4U8{%JXp#hDbA+yU14Nw^6b@3iD#TwGh!8oO}uMmri}w3H9>=M?Buv_T-Zn zTyR&1J+1Vs67S&nHB+i)YAbTyv<|$Gb=|Q84o7hMRae*Fuoh6=({A?eIR07C*{3aj z=2Ozgl(g(=SYbA^gd9}43ML3pc>2gI7hG^{OOEiY`k2vfjGH@eP!`T;5rD_w+0ZTC zcWb*4h>+?JFFWaKCmcu9J*P8wjKBLzFn)J}n&1%kY6yJ;;D3+K$Xo`jy<1M$ft1%n z$G`R!bPGzB$D&{?$ja4+;9aO-Np@gizn)0MjP)dZeT+#g|p-jXbH4h%Hju47{B-p4AR5EaYE|T1rX` zJ-brtq(>y4kCgcJWM`83DL%E6s!qp%%+nXp4gMeVxm@B^`;8C+=sXh6&r3mFDfoFK zB{|f3N%!F-kZ8K5O}~gK1vc;4*uj^}==3F*cYQob%2!x;V!F`^qq-hxCDS9!BdzWh z((Gkcw_JAL8D~3A{}qAaeyYJrMx%9~j)umVyX8#M*N2gK?MMHl3?T? zjV99{NhG!r)B90!LKNLNh%$uW#tHkV=F)3habVsY@)N^@*yx3>F6K8B6cwBl|Ci4; zb8%ahPS`SUvfmqwDRm~bt6Jtz5urfqlq&RMm0aQ5sftgJNKC@$%((iGjkcoAscrTC zP;Z$!uNl}?n`RGnHPx-y80INOq4i5DF$$ZG1~;6IP(@Tr^pAdEPygh(=blp@m_B`m z+7@k9i)PItYj zI^3oZTVO0mTeQaAm(&5Dsxp{`^i>p88OL#kZKgO^jVt;`cFD>-Cw4m4Vz^A;CBp8r z>7)u4!XZcSbNoBB$EfluX!H2#O%`i{lf?8Uj-24)V5s*jn;r6JXc)MgdbxCZk@^i( zr5budv|QNSC5488=g5OhfmsTSC;OE^aC5Sj+|TroFFI<1GQZ4U`Z|36^+ROB)d!>0 zlR2OjiMPVPtP6>t`{p|g6Ztqv3to4CNm)uFc^GLJ5o!O-eE65}p%?a4LqJ2xS;R>o zr2ZbA+kAHOnay-fb;f9~&hCPCWI-!m2{myCnMVZhK0{DGyn{F_=`rK~MfYm5mC^U%*Hz!eqHL{bAgDt+bUjx}MU zA)>YDJAwR&Z6G|hOamkrH}@IVTRc|1a99LRL0AI$5irD~W?)l`t!%3X+H9eK5Df&!#yE<{SG=p=B@(-c<%1aE$G~H*=oCSoYAC&RFr9uOm8zZd z)vV8F93uZ^1a9&nV|8~a8lc}=Cvw$En;V_I`etqKc`4fA>ohB6l*A&f(mBlDiK&K% zn{VUjy(3{g^vDx00 zE1G%GW$KwX*WKNqi|D-uc*vO-t%)`J#0p+}SYOz2M~^bOe8`Gf6!+GDxMg(;7<>WJ z90R-i#E5&2l|G{=7*gI$1J7p#$nth>%MtQGsRhL_Hnao{%{tzw&(ZtAt!IZ$z~`~& z!@?%6GXBVgpMG~GdB=sV5QL(_88zT^;NEzgJe^7^4B9@g#k#k>9OWj%M;xD z%{PkIU;p~U51&|j?Hg~9l~J)m-s&Jyo&kVYW=-Jm0588kYV%5zq)qW*i&Q72I*3$r zQW*3^6NIX-Vt0o%2F(w49#j?C>QsE(ditWhq355kASjkfvFoY+SRff$Ff`Qh0C~E! z$_S7wPm0r+WpWt0nC)a{TG+y~70CoBfp{UwtQ*M7?FCd>*R z3w?t|!HEWAZvci&0eImN!E{=#d>zg&!DXQED;i|KLTWayx5cGXv`M*34OfMWm6M{gb8P0k-0qDemkC4GB_ zp9S_2Y)}0S&13%+&h@jwErWl>I;A7$2nYk54%XBx$B7&Puwql)qc%tj8>7Cvx03N!wDLD~!Mro=P+GB3-y@5V^_%!koP+<3I zi|1_c@-=E+f^F`-1$K`kHh*xbvW` zD#>uVTsYH0aackE#=gXdpLF47QUg#Vb6Ky-w`3}igop;`v?wxN_Jlkyto4vLhAb&_ zTJ3gHn+op~NVYVay8ds8t*5PMMjG>mxyx1t$s^{56YK1zL^@L4dLm3cNOeICd-KmX z0iVfe&8P|7Fsz_tpRnRsVKiQ8AYmD<(4QUq)B>mj!s8iYfuLK-Ma*(N@B&6|>F=L1 z0XozTaa~&zvwcwGZPvy$9(NWf_NL~L`zzDu62B8X@0tn1;t?3gv@xI0|F=L+FHNG) zv)1)?1AbZTw_BZkF!Tt%`u*3z&09}t0a7%+XUUpXts7)@jk>hH$*qK?v;*|}@Q9J% zNI`8UG>mRG$_>77(^0966e+RZUxK=ndZ1KXPVXDuV5TPw-yMX3Bsx+UfRA@F`g&l0 zc9GkM3_g8QW~rv$%dE|upEcagCcws-h1yo=6#&9U5lf) zsZ~8a2gyq2P#a1pQ^4v&>Pka)N*muOZk?9b=4<+CfKowRQGDS_bXxwSI4$~Au(%S3bwv;p?O;&dz( zJoL80#bgD~vbPV*{OMAG#nNPoIDOp0_5sr_b`F8fHvl zt}H(M+Fw^!t$g>ThkB@JcgMm>#-d@;iKXAPG|ihcXzr-)pFNklwqe5Uw_K8NCoa4F zw(lL$?Hj!I){Q$$^@OV8Q3V=u`V_Id16ww>wX|>9L1N*WOm|mJ#*!`O;8wdpG_Ir* zaKpJl0x5vBFnbT13>?N<-~pik6~+I#N8`8zr4Es@U{~m)D#;Ue)C;Pj^4iILY;OMQ zUY=B;Q>a{K^JFiPirXi`Kxv^&BbV@oUkRLZzccWnql;W!3q;?4c%C{Kk@o>qo75~2_hbo(gXFYc70G9^|DEmgNr4E?= zdk*&sPI`SJ-_tm)SL@Xkrw}@2Y_{{ddA5cn1IBO!`np2C3;OH>Lz7%-*U-e`a<=~A zk{-en%hYo4WDNy3k%}6!3YkhEQA)+UpZnB-WmCjX#n6Iw#Y}^wSPqhf{(O$M zeJw{Y$l_#hk5SiDgr%Z7A(O#g82Fz3%*Cvr^H~tIg{m+u3%~`{!Oo7lqTGerMSWJ% zH+FYZ-{ten_I&=ngu+>;Y*pE7$gZTa4(jKX4lDD0SmzIhO--g?pp_g9>qF5_b7OTh z++Mod>gm@wrHwu^&Dt~wpn*5=npbVrSGCi+nm+~3?#=EFlaqo6`$=J6^k}QjY2^8; zjJ4?;^}+C4P?`S@y=(Yy)ZgTd^Jdh_9kb@u%NrNWaLApr=dV_GtT}mcgUYjP?V2`C z`^jsUHmE(z*PfhctDWo!7(!uFt7DqOZ-_*W!0h$`yVf>1G#iHHhWTO$*hN(#zJ&Lb zzHahF(9;vAfbDN8JN^c6ITHK!q3k7r%>Vfw$t9zsH(I)-iRB;BYXegP8pTOH*2t zyh`ej3v1dvlXuMNwEV;C$ZJ|P-AreDO)8@CtHQ~*-Ikaim<9Z?*ZeA{MHCj))H44> zdoNBOokynMn!O-i6E!s}>+G94?U0#kcJ>#(b(%Z<$~vVl`esPiP%DfIZS_AU?}X85 zH*}pAGj~>dRdu!7;nxT28XW_9s;h1PT_*}mvbndMS^7_(xOqxZXqI&qU37l`&#zrJ z#S{-qbXDE`)_He)0)zwq=hk%S8g+r!J?fSgRhzmEIN6&uK1kZ={l3{+GfW9F8RO|^ zQqMtYewZh%A~)AG&axQ{v3T0zT{PEWs#~yF)1vk^Y5ba&)QqS@pz~%L@lKH9^arYvmTWY4tzf3N8wk zK;R@8)-gFI@WN>CUTU~h>gx72UgkPe`CuSNTrgw#iS9 z+zECJ8SlAvcKnaxyr%L0!-&zAsklJ`xVXEK<4qmqp16WG5C7fWCj@U-U^I!WPE{2- zrN94@URk|M;>%=1^4eN?6;dq&k+3LKCIIv~cmH^pzUB2{%samX$cZ!r%`3Vj~G(a8;J9A01)FCmayI~BQ#~h7D@E>1hgdFQ=HrSyy#j5$oo_UWZB7-B zoCY(bKg~BYNhc6$qNc=(eUX&<9X$Ehku%TR%Rae(%T9Rmv#$fs*9Lq(*q15-UjgAg ztXN>p3)^>4R(_R>hDn8AJ>82F-}!zswc*RRrV!PT%G=&%=+?J+>;I7T&MazrG`Z=e zcWKq|m+oGGv7O-ki)!mNe6pgyznvCJ`B{NN%AjItn3zV-_}Hh_0nOWa z86+npy?uQhBYXut7_#$CM&K(@@yUS#^HPDjpmc~Hy3GUHyA;`XU>|Z5R0X&0-WC9B zY=QjxljXNpf@S84%Amm;bLwbSKsm9RXjJ_0LBQ2|}`7Ko{LDS5^e-~9i^wa=@3&Eq1)dM+gQ-i?W>J~J%syD)-?xd~5AJ!KI8W43L zzPC6)Fb?I2uyiwDs5Qzm8kd6dMJ-S!CbdZ*p50S=!=|dvcZ=0k{nK4qpO>z=v=RE} zKa1`=cvcie9Y`6r1;LzRVd1mog=;}t5DXrn?kOA57OpdcHK;8#bY_fm691tdD|L~^ zo*qrAZpD@^NN$Kyo0ptx?wc{cO{CWdTIbIkuuMG8`8<<hj*IU;I=)#p=5Vaqo=Ui}h6lpL*+xKn{%>t(2=RMghT{C^O_?7s>8Zk;76U#zj_pjp?R#VpZ zu*)&xa^Oy^@9DV{7V};~;><;ODwZ|i5y!Ia8NN=O-M-XTXj;270i(|oJJwKGJ^exC zjB|E{fCdrt`PPjAa_&K3yJ;ma?`WDmeNvrJujMz)U)n~x+fSTqmDfpYCM^y`7xn68 zZbkLriJ*+IvYqRv5`e~Zmq`=`fbxdD<`{Jy)6Y`jR$^}*-oDXhclZXa&#z8*M5)=y zFjEz!4wY7taIdz;JSz(<#jZ3ooQp|bCJT9Hcw)w&Pq#p;>~PFDu}xrtVu>CD^9ji3 zy~uY`R}|E?r0UCVrcCGcP-w(0{FTBi%1>?2?`;W8{n~Ai1@6HB=Gji`F&6*Cs&ZiFq${X`Y`3B;kbw|0v4B1`F`j1sU zaI6|E{zf@v{d)mcT#m)1>2Yr+nL|x0-Le_$OL)Yyzd znM2A0Hlo<37miHq>XoQ@xdCfp?G=xa)5c|m!65{<0Z&f>mW_3VeIO6BPnZv|CS2fg zd;o472ckj&fG$UZAsx8%7z~Zc2ZE5Wo*1Yf}~ob3|NUsX!eT4@+zT3P{n}gB=YsZ zeI$x5IA_e3={*i)xU;)7JaRpAw$3EhCu1;>AU|l=2HMDJ|4nTDOC|#yFN@Ee>4Vq` zdTkW-FjS{XDDJ&v=Q?$K{X#dEH25$2c3%Tr!9PUyp0g_`P${cAHf-C-Y43`fz`zJQ zkIkSeM&t%{L;XmF(Kt5-(C*Wjv%bKj#4~+;UsA;ODSPR!UxK^v z4YjJD@f4TQWcX)y54aq4;2Vh?^%?=0+u#3F`l<{Ns_h}~m)^m&3S9#m^;PuD{d>X! zD3tbZ-mxV}&b*s(;hKT$gtQ=9@HtTx zQ2BTqR}EXt`-A|G7c@kzOU*A*-wl64F703IK6-&jt>7;{vcwXSH%>fbAy&`N+0x^d z7KjlBBN$3wQ@4S$a(j5szU=|_DA#X3-A|Ia+?*pvN;j_D0zAAXv8I3XwB^19vnFIs zBAr2?>&*2JHInW;b4KFl1T=1yJr>SkLRuhfLG(j&1k~fA(x_-c5CFDXh=W%k>cW{M zWjq)2G2^IER534-&l#O5W^8qdQzDmlxTrAz*%1&|v<=E+V&*`Pxo>We4;1;nY2E8V zTE=lt{*>nB$lr4Ft8MwL*;wAPY*=|3p~iDj zBx$PjC}>G5n2!nQ-*60!CMfDqCardwUSQUdHf{|D}@@*IMQRch!voO5wO^vH))@a*0 z1ezKc1aI#7>CzU~(?X43b}@neN({pspI{Xof*8ouS|J&XVH9*+Zv|Cd1+uOn8UoO5 z$260p%kmJqEOl^W!DRs(k33!LscTB}>^L`eGEPJwGkbb+eVWE5ZKt}y^;+@qw^z~2 zUw^!ZToZIp$ZDh7t^vAmVOu6sc3N0-wF8`%bxG!t)Q&Vx9ia+3M=oX3RcCXTfIh71 z5`H1rTgF43KKM_>R7m*#Vru%0E-2h#l^OC?aZ5dX8R$_D`*|++KlxO=<>VJ<+rjf zf31o~X>+;PsS}tJ9uJs`Guxrcr*&rWEJOG7R;g9oIe{4mSau!g@tc=n9byf zLe}cpbMxa%XpMN@{a0;rF#FoBdu^itde1k%bzAUk_RJyNJeGrwYD;{aAP)fr-P0-B zG_ba>RVs5!#r0it)1J)ys8k4=S=qg&pW3(24Hn^-Y;$B+aI9yTYqz3y}-5 zs>xkIXeLbds$1;2l(toq%rpOmMc+YNhCgcPDaU+bs{`ijttoB&A#=EkI>cXnV@RM> z@mh~0n{)vmKu7-YQQ@+yz@(_FTK1=#P0$JHGsIKm>Py?of!`Ph6r6<`Fw*yo7-`Jg z;FO9q+h8}7Q>u8xcrD9E4dta3+kw-7Kzcbz#+(%RUgb7)?xy0u1lv>oeH_OJX1xjf z5>iN6u$6kU6!%g4N*msW{N0q~;M>D{c?y+a?~gChN`>+7QiVlRa6iT@=|HGcE1b;YeaTLcEZz_an1 zSE?MYv<@=1(%O2}+z%`kDD;tGP9E6!{|{6h=z#-!BLaoID!2vo0NH&J>-A7ofT|CJFpC4{26kg{1SM#=E!nQ_8j1F0;VBQFTsR zm!BnTF(i#G8j?vrRl3lEM3ewUK!gKZ^*YGV7oBI}Rw-q$RlBx@$lj}1b${20RU2FJ z1Wd&ku8yELBV}LE^)sG5{*Jn_G_#5Nx+Et9`TWD=NhVI7Ed5CJm5xFlnYoLN$}kGC z0VaT0ACH+ap20zh@v}a(eQtoivoSU1M}r} zx0+8Df|~!HdZpB|BTJ<23Ecv#G*xhj$=$KKg)99+lcascoSta?^7SEsQ4%|lKeTRG6NZ@+b#BIvtfnBCZ%L91 zA7Gq(Ifr`3@jP}iVr2~RUO z<$`L7MWkp?zQkOn(Fv68Z2}~2t5&x)Q{g7D%`R_OI_zK-ab9PoNtKfYI}2Q3|If@5 zPJ)ewlQ+N%JvC0LAa=nTMGSFS{lac7fviH53U(m4?_>uXV1+HGP2gsYD?$JF=%ZaX z-0(5Eo0*`4DSw+T1(AJOENwHylGd0t8B&wC1Fc*4CMgL&w(aE72gcr|JNqTUTp=pw zi-olRxtSNNoosm)Mn9k`0t#mC!jd~2iFz~Azh+e2ilLe}WscJk~6#;xN$!Cq^{T z3L|e$E|lhXcR=BC(*{rnE--%FToO(laK3mmAfMo-j;js`>=Al#FSk8OR)SfsWZjiq;h`d~b;5rhF#LXWf7Pg16^MOxlG z2n4pwj}e4pT@`kGfUCU5N@>(+Qwk~jIO96MZ{o1>95n7eND)Txc|iko$q8B}vPWQk znwa^tsXFXawkSHnR3Y55vZcw|oqoIi)=g5gVA~zd%pu?Ty|VPq5RtLAAF^U~1;~nl z?dLQQc{}nj^Zz*e4#2jm>;2sKwD*=JYg)_Ol5JU*Wy_XjNgnY?oW040kPwoPy>|j( z1_*m^C_6w~b{S=qvdS)_tQN{BbWp6v|GQ6;?F7>w{2hc7#~8hH&pqQi=X~eU$cx*u z3q6zyQ^`}`%M|aGs(fBemBt^at8ypI0d-YP)2eGd*rQVUz)tQPZP?aW++bu^Zui0` zz8*UW(<|1{3$|xl1d$$HGgZK-a}KN+Nl%Ute|#=0$k_n|vydA7g%vA2=^IklksvR( zateP-uhkeR3!{P=c!XJ!y@*+`cQ2wG?CYj44HL~i3NTK|h&xp#Ll=l3#AR(Vxj6eV zw)lzCegFI5=Z0#o1ySkmii^?S&a)edrKC9o znC8e@cUv3xD(q@L8HCTF8;5A7mn%2q9-9)I#0%9~xD!6h8}m`%&PN)ig}k?+Ni9tq z!ua(Xy#&`~zU<_7o`N@@Cli+#N>Rtkf$LAC?R`DyNfW11X5#nUv`b+T%{er$_#w(p zNiOH+Gt--Py!awmQtv)ciGd7ca_8*NpW3c%krlgYS1hDEg@h%8Q_DjWW+>%;wX*4i z)I)!4ngws_g*VNmIn>fqUPhX=*P+1Ii-z&ZKVj{2QJddSMp=8B3xdiKO3!zP{P?_K zMCoMLZLDBus2mQU9Oy43Zg* zMNjmS-=&oXeOnL&>>kW8h`9GssrGi}?-*MCsOgMzP)E|J*vR%hxEO1pHfl>#qe<(Y zNg6vk)+Cd4+y_m~+#eqjD8*r^TJ%@$EsLGbEVw~$g{)@|&i@uZV*gd%7>LndY~%|u z-3WzgXBJgfym()R*Z?Ung#+=ZjvTKD3wW9jgMo(r2s@;9fNmV3hyba%|9-OQ(MO+b zs99YPEe2dpBayADD^VTs*yw6%T!f z1lC;XM?58~sZfv;k-wIZYLP7>&ThhDmH*8_)~P({;gqPRf6P| z*QCkC=fhOFP&Ubp@#I>fDDqFyDB7xn4bBN%S=waJ;)MzT0O6d+qA6Qzd$efk(JEOywt&+Pdd5#_jPo{#r$1d}%Irp%3p?3&~aS?JYaon2p&v%n8{`n8pOcX!4@8x}jR$stZSJRi|i@ z=WHue`4s*YTge0bQ$L3mk3AsQRI`}W!$bf!cEXwGmZQ;=r{lsEs2Fx(zHTKbsMe3$ zpS#C2zRPJYpE&Vp6*4TKHn`S&jE|IyjsoYhDg<;RXblYmj*kU%8AOgo!0#VJTF`&N zC!b6tf8>HonQODNK9(yh?eo?rBt`P(RntvmAmr$BRXTf4t94KGRGP!JZxzqln4$4r z*Os}?JJMRTpwend&-6;w2N|VNXmQ#^N~M@Cz7puXE|JUUq~inJg3^+1W4WR8ZHW06 z+A-rv)7Su%Vv>MY#_WvU(zdake83t9_bql~t7P$vwHSWW1MfM~n(>O%M#_O$m#p+)q9$*M$usQzMzP z)(dm|+vwhdd?}9Yxb}t&PKEZm<^YBq>`k{E4kEl-IPT>9xs08+(VT+%(Bs9O3%vuw zJ6;OK44xqbCs#-}^o1a7l&2z}0a&<~H4pvO(~0gVS1xKoFnL}&U7psLNGj{A`31)` z8aI@Bgx;!ZkEpuVcwLv+-n?KuUG$QgUT-0XtIVa68mWIllhUpNLyqc!iI|LURaiDu zt&Ee{vLN>ac>>#9pUD0jTPAO3JGc5En|EUS&)f$OtzpqmwI#Bg`#>_JSIC?WiGr;N z>NKU^@7q^QPnx9|0MxE)JvO7Qcd@c;noDT{x7mwoN0UKS6wf}-N`+NojF2pz zG2`s%)0?=f`3rE{umj75D|R^cTE3l(Ix^7l(wO#m)|~=k3GK(<9+LnUgvkzr@?+>X z8~&2HGuwX#p?fBBF9#(VxwA8J`7*IpzW97XCU9HH$!cX~#h&Yq&JpOu({8(DqxbFc zs$xa6%y?=L{9*8Y>;80e!*=NIuc+>NGZJ2R^O)AA@UN6R8>QcP$o$3(iGR~HO2_n9qz`~F0V>nH!ZV=Od>$N|FDgOYVsu~-gXQJx_J|#9hOzWCLm7yaY6A-<|OPuTe5w7_6Fv6 z+2$vc$$L6F?rpG5o);9`CwFEv9(9|##M(cnN^X}_&zV@vy_?iH zBx#X-Yr&*?Gh&?&=^&b*-0&w8!qFyD(d5bQXVz!;6OplIdY4)0lp`I%VbT{k33Tp10Rz?1y)(3SuUF}obse^r{iSMJ!8QCojynDTE_&O^QBw6^j zd&)}Dfsr@In2JP|4~7^nna>%3od+OeAc**nQRm9p zYU29ghp7l3ltlPgk~;#l$BvH61t;p*Pa!hRr*+L~dhkjhiCT`4xev z2JEZ=is@=AkOK+CC1&5ONZHKEZd_L{a*GF#iLtyqX@4_H4PC$m=j6o6PYyzZDDFz@ zfIQ$gx~2qyA+f+xcp6}$4F*n}S4E6J;XnCtwV~;rd+eC`TXxr7+!`jFeU{i$sUOs; z%CdboJv3jSlgzsJicKDFN9ejgt(RFuo8G!5LQ1c^?A;GI)YtE+DxFvAv&LiSKKM^o zLc_Iu+d*j#&LOYYk8e0y|4NafK)IiQT1AXom*#_EQ? zr~>kix-vX0Mc&D}o}Me1McGTtlyDuLDOi=t@t`1cdiJ!7)6yb~90Wc^j2=AP617e# zx9ZekJCTZut7USf5KBZw*}J2Pia>+6YD=R+-J)C=4yEcR@Rf>8=74s$Vzu!0R zI=F*!SPE*_Y+P4Q&fdYD)6^bgbYFb&#T8FCP2MW0UOLw&^`5ZgT9decQG-%0V+aF+ zDuzLAIyk#~y0K=4-EEoVlXxdPq>jm@8b^1r!8Sf%HbqTVQw-Wk7q#c05$dyNB78F(Awn^ZIjK2Jp(Gncs363&z2bazX(@qF5^*G5gYD z9oDb#L8C@M>dHKmN?fLJ-TAFzrNC$sN@bXucBvS(!zQ#9i|sDOb9AcvR6@8P@~;QU zes2BEeR7MuMXK#+v3BQy4hz8ZN+2H7?(pRK@<_F9x(c8!%aNV?7T8PrU*`-2?B^KZBpc=#4)fX2@G*=Lc;zQ%>HnIy z!_1-I{3b&)pSN3~RuX|6zl1D9q*etHvaC`fHcEjHVqvgU+^kTR7cV<|P-Kve-!tF* zsPBpuUv5oZ|_uhN&SEQPIX=kT`aun#-Bvclm)8~>XRhXdl zssviElb@gsRH(lU*Y0h>=0X2JhFROpeH|lvA5dx;0SmkCw?a*d>t%A4P{4|0Qb*uI zM!oQ?Ip|%N8V9#btetnz1~2Hl^b~U8f|8z$LyV?B|Flw4KbDOz>h0Y!emp8`WP{39 zr&pO9xV>NLo$8^R_ zFZS78Y6Zr6BhxHYs>ID=weq4?kw^*ZNwJ!dVEZ7E7Q+n-BnGJ!Up0tSPH^g*k`hn* zN&Nz?LA-cXJ*WNuJi(vv-pq>lqw$x8rPC)N^O-#T2JSrvX6_h)L0;p+3SVc7qDTf$ zE0ww`m>Oo=AFkOJqLjOhw|*)6MQ6s$8|&N=0(sFOF}mZ5GMyLZ3D6-v6=xX1D}Wch zzd{-<=4p?|lyhOR!{f|XSlLY|HL&GcROA1UshBOMjf<4lT#^;5)96)X{Et z@I=$jhrf^qvmDcvy-!$waqW>h@?Px(@Or#*>#gsSQ`b6UG1SrMy1`tB?XInn{_gI& zJ79$DNS0qdCitL0Nd!S}A8+1I8n=nk7f^+yQ3Q3N^cONR9=X-xvw4*3^apZr8pt3} zuS9m1FA9(1cN(rz=4rMNv(SM0NAU@Bm>|OE7Liu&(GpN=?WH^Ex88D#rvo3WTM1z$ zN}0@z-CI_0%vj2$GPzKQg+jL`1orm0s7T%rHIoG$=I$UAQc|6~w_V@AZ6@fq#Cs3! zDVn&hUv8C7+&Ia?HPOm5@4#Jjotevr=I<3fJ%me~742&ph_ytCWEENSpEnHR%#4s+ z4k9Noa=7HMc0x(nV8{HyGfwu(izTi(8_DC!h4;1!wOV2H`Z?k~f4sO6Dkshi-LU-O zbIYV9ir{50tRo({l@DVFDORJVD?xSxt=zT;u9iB45pp{K-JxG=M>HGlH|5BA^T!ZbgCF7}N6qDB8|<34?HRB-(zR?vyi<827|E z*y^eL?!I>Jt|#G8aXN|c>6ZRn_b78Qco|~w5(P7@k;~STd*(;t*-f--sQTJxVY-D8m~X-Q z=PXvS2uljkvw~%RgTcH`(_E5{LQ}n`(+~Jw_(iJz@QVRT*@+84RXDc}^)Txmde@s08~upX z%~Gcik@~6K-D=7f-1GkXQ|Yw2gM7tlUb}X2ocublyGy8**3KSZ6m?CSTP@X#DrZkT zF=?td*Q;E`7u4CC>ogHnZOkB*SE^jvsMaCnE{>de^#sy)$(hkQnY>zCs>farjZTjh zbt;KeZIYdDv9>^kPA z&>V-{A=5?LOMGAhmpc`@`ZjKn0VI-IQ?#kZW^Rg_UFN13SpqKfv{U6u7ja7&p;*u$ z06`yf6GDe|;riL7p0G+yGf<^RiBDp&+fXvKu5?PjBd_Xo#7PLJHhK`9wo}khbRU0w zo-n`*6fZnf+PMsTc5X9#WS}xRBb&oCDzN@4{W%wx$*Wttr6&DE1$pqpL~|#8G5HQ zCDwTzDA)m)$C97D-#;1VK7aQePby|qxaIn2%2(D=t43#qHi9`bjl0b#wutn#ZQ6=H ztHdHQx9!q8+e`?24RzHTZ>C6seK}3fnr)$g3e9$MPi5SS&A2Kw6v_Reh`lyl392=@ z)ZfDVbF~k--OI7l&pW+|R%IgF_H2*fm?(luD;iS#KIa@LtVip0xqYi>%Uo2bMbnFw zzg+Z!QOO3V4dU$(jR^~9IA$cmEC~naPjh8#1G7Ma{Fkh~lsPZE{MvN-Yw${^Qup$_ z$`56;*pqwop15nq!Vtt?bHZShhgFS3pB)RUhP?W!D!or%S+%C|;l{1+zyCh@Ef2tRk7D^xDd85tTjQ3 zJ|>aYnoOOIsPvSj6mn^Hf5YjQ^)uryI2dVHM?K-IKAI zY+d8`t4q=rwY7(lyiE>`<@_K@TFWkE^f{!nK>tz0uc)0w=@w|fM@=#nC;dzjCrVGp zub#_$GxKnGM}v+$K%dJ@3Jq0bUTLCaR%Z`|m^ZS4AoW?}*>Tx%WJ)@n$=pNNlHoOu z>CE1LVM5k$;#71!_s*<&A&G3yjV>y!lE|D&fh!;iRQpAx6`FG(!`peJI7O=*Ld;q7 z7|i~vV9nW~)&}O+++&udM;B@qIL;}x^fU}(jg5d%p+LK)$ zBRGS;_$-;cm~KAv(s_+bDcv-ERghaV+`AoQeO=qFkDLI?+4&D&pYmB6wSG;6?Og4H z8-lGt?VQgIsI9s0GnCRc*3rJQ#6=gkeRh4gdEvu5g3;QWtD1s@<^KHlFBrF}XWJs5 z)Gl$)U4OP4%fWqW507d5Y8V#I>DCClUk*8%3cB9mbb?BQY89_(g=ePVC0?`=%cl*z zZy1rym{$|d22(P_(q=9qe(p^)k?r9&O@8yu*IqlBT*J-&roOmA6;XuA-1heD$MN_} z@i^JhTz^Izs}h$^?8<)CYN(4?r7lHrL-lWd;$~_m5gi5C1zMfdr*$ zTgn}_jJ3qtjg=Jr%)6X~&WtglkgY}w_Hu7sdtMQPZa2#1r z)ZEwe-4b(ESA(=jQrA^w76^)JdLmdQBZ`i%F-xKeT}uEfLnNgUB0yZF_URflPFeQz zcwFc++GZsI-nGsMglx@q+8Rx;!Kz}uMzs1ex|}gb4+uGZ<4v7p_g3!oXr0P8)2(sO zx=W5?ryg*8l`b&Rp*1!%ej8aAvt6$5m^5?HCG#kplcx7sEWOhQ-D2?YxF*k>+@Zhx zO2zD(V}L-|$Q6|WRl}Nq&bzFpi<>EDHmePlD{BE}Rh$$whU-D26K*i@7b4e&P}qo6 zxDJ#Np_Om2napk%huWZTuSF8#YnI8x+(l#G5b}UqUvKgo8?P=gH5K{HaWXqPJHF^u?xB{; zxR=PDL}Ep2Yl!;_1Z97#UAcN$B|;oQWcPs>F=Y?i=^jO*qyt3~u-X5F19QWH$`Jy!@C+=uM(PbY6C;EOs3D;pzsGi;@epV@Uy>RDCvsFbe*eg7ph7vha9fU% zC=$PX0fxDqD7bIAa`4mrEpnu-?b4`1r;Sx%&rwNOs`>5dr_Z0S2?WU6c4J445O73g z3m0lIII%+1L0;DnkFZFZniuylf;LeTSH*lZcEkF5LO_8C|GxDj;Qc+>+Mg-(+u(IOYyGUs}NchLavd|IrBm76iCM+yn%u> zp@wCQTIom3tJw-2g~ymWtg2{iJU0@#F0OB^Y%Xg)KQ2>~1W{blZ1jlQM6M&P=1QNe zUFxksHK- z6jN3LV>>YJf^nCRdtlsy;~pLN5@K0iYk#se1-$hT9iJQr3at-jzVw$f8p6E%p!@~o zI0C8SpHay1&ng;F>rSKQI{eS@o6%@r9w(wB_V~eLI_B)xU%#!Cm)RF@ONmU<)^)Rs zNMp#Ja+KTCtLvPd&Pr$3i^X$y&^4I@yB9dQ%gdZ8LxsLWf8@XuuaMg7uHznf-~qxA zANSTDngv+zpcE+p+v6)lYC(ZPAl73NN@5Z7^@VPw+-F^SU;upIo!jS{9xc6do!lha ze6(8CgQ^u6Vx3z;&OQn`8i}l)=i^#;TMukEpl554enT9cPz(|DE zcb+l;(iDjyHLuCyDyqa5rMjdG{KgJ#a827uJ$mfjE1I&td$UJfsS9XpUYr>I?QbK` zNBYCWy}=>?Q5wJrn*mgt*s-D$vI4P0YWJ*XRRhbDv=Lt&o!M5|Jza|nYFsgm1Umzh zoODRGxXGTVU4gddWqn3TVp0%U20o4*NBKD{3u)4D&Pc!e7&}NC8((JL%=!uQe724xGnw-;A9r&HD#(kJ0VDf2 zo@QCbaBx`oSH+TU}<;ECB z&)U*i@J61V7o9MCOXu+qRKV*fKt-RHM(R|(>Av+aB6U4{FCUhUKvd$q=Pq=R<$H{f z45K3hd_{CB%UPlmzCoTuGf;o_&cifBO;Vmt0u*oRJ*};OX2x}KXQescDLXradTDCc zijvmgx?OEDqd2x}?cYlE9!a^Rgf!OZeW2FxvYqQ}&CT4~O}VKvo}Fn+L+$F-p;t(C zHMgRoAw)j9HNk!Q$tTS7-gI*Tw1%6DmY`OrkI;>ps0S1z zc5HGOhlw9VyVmM)TfuI2*0}S=U7M30HQu}e;WG{7>5F<^K7i+g`Jf?JS_iu=AETJ+ zOtd^Of*Or@U|Q)C(W(|7%S5o`5e6)0=8#2=d|zNRsy(K&AdOdC0f&GEah0@e$UQ{H z{V)zy1FTylLhgIgK(=u^u0s%hC>SJPCI};vOQl5`RnUTRLQ$DSD-noAsOl=ptrDla z*vq}xY8|K)VG^~f`^iSQ_hyQ7dmE)%j%!qSJVLEb>_$fLbVAzGf%HJq*7i4*v`iB+ zN{i(NzuX6(b0g~;daI&?_vmOsvD(xEW@Q8ST8!M(Jf(4R{ftI;3zpaSGEVLj^0Yym znu>k^Ic%NMN&hVom-Z*PzsbXkydtf@GlT3^ckZr651^o8!yZmX0{~W$3jqH4r^t?N z^+KhB4Xr*cM5eKGx0iyDK)(AUdMQSUY;l00pRW$2lf6@IIY;HS!Fn zJ)QV?fIOZ3jxJOE-F;s`Ft3yIgH7jNbA2z72z#!+bpH>b(hUdN#6_~UeQUS*R_$t* zStPNYYXXxY>rt2hO`G|N$eoQ`N0^z_$8F)BWjgP?vy2-$Qc>YrHoZcwkqJ?w#may) z&HnaUjlw0Bmp5ANky1H^wlsAK5A)edKNzTAY(9eu3k*?_9k4T?sk9>;eS(Kit>9Lw zhGnH!WfE|KTxa7Rxb{Qi&OtT*uH1zQd#DJGu^)c_$Yn6+|27u{;hTs5Jo3B$4W!Z& z`BC^!FA1M(<1^y2AEytwD@S+O{_%zA1)ushr_cmcGp*AcaSlwclo&*An zzO1oy^Mw<{I$7^Ir*TIMVQyK67~_L<`n%Yz7F>KfKFGm?77#;~6w?I6>yqw|$yKTf zC-!8U++sPi^P5M%sGMxWCO%DV%;}C+s-&Ry8X#7sJ!TLYh5D)vwKr`R8AYb(UH^QX zRoSBS%etx#xhrPGmvuFd7_C9j!owSTDx1yDaD_%{5~~8ih`Aye)X0jZ%JLZV-D)iD z;$Gs%5Ye-lBL=%Cx;DD8iCoHkQ@eJi5XE~UBP8+v(Bws01_slpZSW@8aBQJjUW*&T_f!%SCTdpNGU(KU2 zw9sc3B5^4kHH%u{7>dEvkudix_g`9Z7E;oWchZ>oZ2A-Vu4PVmc6e57BHA`@$Llo8 zoxC+}^hrZ;;FlUkW|s>*RiaX$1){2YJ;}%vA*@7i2Eff3$yF>jcX7MKSPm@KBysxn zqPKqHS{|svrI0D#CRYdBOsp6#|mSbz!yk6 z_fXSXjC)P`fZM9ZADXMqYiW>zM&$H#8E<>fR>%qdkD^FotxlKf!ky9mP z*2h=GR>a7uu^nIDnEfYs+$NK6PUSzsZ(S>~sNzbS;_$U9vD^o;0XA4~P`Vw5m9-1q z7UvwNv22mQ$lBVz+^59`K~tF7!Mm4Nn$9@)3?Qo1z0gXA4v6ZncragyR)bt!H8+=$ zLes%?>`b65y>d45YFrE|+Z-H9b^3q&iOzG-1EJAc80SMxVBuGx6_P&+KBJ-EMRQI> z96ZcIFUr_W=3|;uA_}S<8ly*6B@b8)zU?8kOJnrPs}-eIqi;{G+M_X*Dryu}#m3U# z-~SCI%2JUK_rkyaMb0BuEYzg02>1Kj+jXVddb!zfu+=s($U`kXRwCv89j{mcZ!

zI;&adkyO;z$h2Ct`n#0^9m)^!Pp7X!Z!zH?L{1qXc%I{^vV+Il6AHpe9p3SkZTyB9K?XK?O zCo|Tgy@B>WU6e25(a@d4&>m(d3mq39%=SC!*0CGD3Q>r%oS z|F28=JXZDnI&%~sy^lZ6KJ*ZoKrf+|+|Bjgh2*0x8r9X;AHfyf-+o8iEiEg_4sIKF zS@`VnT?d+sRjcAm(~2PZeN>_nT5M=g6cC9+A+WiHCaY0sb1A0PV$n%ZXC|&XTeY}B zRQ0^CB&`qVQ%@EwW-xcW2xP4Ec=y#cRyI}M8j92~C5_x`4dmr#&*Of#t5gX15d%+V$RWG!(As>C zseqP>JUmgscw*x|BpQV>;+?awChh6zYBk>S*}vXVD?`O6Uoah}NILzjMdml$E6%)e zwmLbG(Tfx^w(_16AGl?mTDl z=A@ZOYzPc`&t8oYwh}blJqfI$X+%n|Qlv9lsyaFZy6~O@Eyl`4i>Eue&(NKtc#HdcT4K}-TmSR; zjuUsJEJz)SZ8H17`D=NWraKU?7M4op$Udqu**};Q2My`z%^I!|vp-W5BS%awr~HyO zrZM~UH{IPIG_+lR*CYs`W&5U+v%=>9*nsT(Yg|%ng{oqxY2(cVkD#Z5P zMLP_ax|W=N(>!HU_xM&krIe|AXT<{-uJk{dBx^fJb@pNAx@NNv?UY`H#9%3|#`7EK z^P8&{Eu8M+(0>u=-FKK$XyN6%jFCHJ)*O=3&Zy$m*X zAu*c9ti%&*!n^mk7%CSon&#sEiW8T=T{!XY9^1ZjN6Jc1yjboSIR7*}vKztAlPuk) zL9eX`?eY|Or1Mv!VaETZ<|9v6aH<7|N+A&{tMd2W`va8Q($Q7YVTpt*)u-NY$Av0Y zrDZSwfD1Mo4^rixtBejS_v=vZm0q%%MmgjP?u1(>D;?@CkovqpzUtww?P3MVq(E1{ zb6?C*xnSW`Ubh*=Yus09DJVi(|M~FdllZf>7R&4tE?Bp#L7B6SFV7p^1@a|5?cs z=83wxo+ICIB624;g}VXgFH_W+;_c2IWYH!*;pQ`=5)ATzF=Rc4?|Bsg6 zi}PnrYk9G$Kh9h^^e^Ty?tzv+^nx5$9p1gKSzona;WQ`rcO1VA7ans`dSTmlkM3Tw zqht8^&!ZQfTJ5J;6$DT~bcQv45gwbCpLuPk;S;rizx>hfp&IWaLmk|~_9vEIgMyOj zqmN#KI@r4VeJOhkqpCZvzvDu+vI_c+LY{QN2E*x&1$$xZn)^nc_r7yhcpqy6>(zKP z2pk~K-*s1ndyl*feb?9T+8Z-fETks?TikH@JKSG0R0|T{|L%Wb46 z5#0^djp%aoh@CSR9-V(=ROS%_B6vW2NWrFGE{Bl}fCdwVSR)L32)d6LZO=6@-W0bm zc|~jMdGYv}QB4p8*VuemuHrPWzWUq$KMk23m4KMlDUyo`iq}HBU0|_W1XYfQlFX%v zMcJ>&OBkiU`oRYu6wh*H+HF`r$`&;=T8ZVCX%dlKg`LOP@gXqk997UI3N8O`Sg&$^ zwb0IvVfoRz^|NFt80AbMdzyPupUj7OSCHRxkrGDR!JXF5-S*;(_sJEtrdXS!!yKv( zC}&@C?HMXnxp~`sq245!yG}OVgD-gB0D$;UU~!`aeuO>^_z zt<1&QII}amk$DVuMpM6ge@r`KQR$U}577zR{`2_m6L+TJLqK`&7&yF+kml24!KEtsCwWH7%lkW#zPP44TSP6R^|ttii$T#q8-rr?DaK zPkmQjdUh*ah!ov@=jDCQKmr z3=T4Vz1)=XY;@>k_VCau{D^wMx%aZ-yzR4%2JPrYAN5X0ZFHjO*`?z(*ytoSm}L{@ z)u>r97V~tHeM5g>>$uOl4jC_t$k}F}znTo~kFH;TN{tlnsA9oMCx*_>-b5bGkVaN0WD_De zT6|-M>iLLpJ#*$K%ltEE`K$f2=OUaf`{70i*aGR$&Q+eELX?jp@klVxG#b`XGJR@`@>gT{bDk%q-2xbjdPq9&`W2*t4Ulu8}I) zc*3l$uDoPb;#&}s_#pBTdIKZ43CrQoT6wYai7$`L=4C8IV9pD@(CUVW?zks>4pisM z*bPJbSSoXp=rPuX%rR3hgOrN^awub);2Cjm%mOjX+a3@ z3R?6L9rO;+DT;n}`OtYR!#(}mj>k6zPnb36rn0uD`v&|QIS+ecVp@D=0uHkdDFbc9 z&oLqA#tf-WCw@w+@m2}}M4@3o+|b}XmV`Fct*V~cE7F;ynZa@;nKpiW_GWhX(B@gp zbJ_Yq_T-_%1ifsl28xsRc72)euaiF_f}QNvA3mH)hT;`71}v@C{uv}QyL`%|@lFU& zWNS^O-SZJURVJ7jtuqqfocU?mi^Q0>3G#FA{cmKJxUAmvKv%_D3# zRGvOoDBn8DN50hh@}6(FsKw@?uj6zjk3bSH-8T1Jq5BATnv9O|lX}(-tU6yiEPR4Uhi72kv+1jBGKtBYHGHWT3TB6&Zu9p$WIfvl1VcvWJXWA#f+`V zhDdxl_o3B+p#_zfZq0-bu7V^AJ@&@iqrZdL5~x9b|JRnA0b@9qbVd zFELy@x#_JL@vatBplW}(D-Ryg6L#>uzO5LMoWQS>KM_P8TYuuL>Eq^nTcM6vYl@(# zk%xE8`Ok&1IKDLnVgQ>TwU)R51^xp%ivVbl0*?GwF-<^!kMFHz_Y7_Nx?2;PKYTRvY|JN$1 zRU@)W0sB1Ms;iAU1saXGA|oLQ?ket%gs?%x#5+8ANT7=}VdFP08_$5K9Be!2|z&<+7=ra})+q|1|G{+dn0$bhV}oiy*L_5s^$a z{@0JODKPlwdfwp}M92P*1%>~w5E?+;AEW9emdbcfS&>nw@T$euYJYfoy56I|KIlk9 zb#>ZETXq4vd1$wk^6s*!gV~oancO{7VHEXF_jGKz`T36$H7Z{~SFbB8J*%7ht_LAQ zHFBwE0iG1zMiq4l|JNI#F&h)?C%QnSqs(L!DE%r?adjX(DN*fEUsz|0)v3ekP*b*_ z`d%Re0_%FZeVWajo_+b^$^CN_X5oZc-sI++pZ|D5KwDX5sMOcgZ0yedr;{8>BmQcD zzj_>jVs0{k?h*jIY$87kK&3&iKdEyF%=Erd=Ker6CUo&d>b01MLe4~^wqD!NmYq(; z;U`ye^T;Cutg$5AS)(`8bHhMapmkPjshOKVTZ~&6VfK5rs8U-|Wegc>s`qxSX(Ny9 z{Q3`<%@ncICd$o{iSs>j+2R}j3^OpLbzc(iGQwwNg?CAJFVQIRxOa(0J&zbMBE5^` zM}lRZsH4Qt_3D~Pb}D_V9=c8Po}QkUo3D9bmT2;ASGJK428iAlPWX%lp~8>*RTHS4 z5U;kYS#!CzqC!`rtEyVxb$(X~cZnR7$A%6=saM6WJ$>kY#_ zTgWF9^xpb59}GTrY>2JFKirY%AX`_u)cx%aH#+l8OaqwbW!q=M&r>fmRL=kTqj!}@?w#55ey0u--iaCLK) z7FY$^?8R4GsGbyTBTD)C1EXb=QB(R3mZys%S1_LJI~WB(Y%;pq%=2h<)W3cRhEpMkRM?lN#_^??^G4qVx_hL>lxW@4|K7T5DIIr^z=k{)Oy)XA07%Bli#7@$q?v>SNr+YR`ru7G?8;S!*$__v5}Zpm$&fj;>7 z%s}hr!wcXE4>S9->zQT!gdr+NiOEn|Vq4k-9J~}Ms=*@DIf@n8XBifhhj(Z1^z$kgkqN}At{w9~zBa@Cp-&pwvZhj5xn>jW(@ea} zYgr*Iv}+tS1Pwp+KKY}kT{wmJ$*0-$+Tp$OR5Z+8J#Zpotx>Hiu^1;*5v9C(f<~=J zi=0}N-Obcz=Q5vXcYJ|h=)FF<&8Fy6*@{UfotA5a6Hkh%u}cW=R~rBuFxV#QPw4&g zH5tswJBNP5oF<8GU0bEBJZ&r9awjbN1U8P~CAU2tZ#jXH;(X80al20={60gxMQA9W zS?lv+Cb#sWB~WkCYJ9e$sX?Mr)Xo5{jYMVCO1Rg1kzUJsWM(~cu%{=xjkIw0d(p9b zA32x1g)CHRL~9RE)M>$sK^R>nx(}^51wb>-gzR-sPxV%qkw^cLSd$Z3Mr^v5UTyibm z|KKSJjhZ@rR$HbPu&huKUEKe>(6WVKUz@-58}844#@p^i@P7%9{O6jc>oLokFW?kf zw4lfVL^yc2e2Z2=Ie2O3l>>@0k`NrG3qqI&yU~}gmdmXMZL^2SWUdCeNh(1vcXm0L z+%l{nJBjQ9+5fC=nbj)qQCh9fb{ShXETnX1vzCK-x;C9QNqXluC=}3f!r%g8E>|Y5 zoR)cIPn!FZoQvJz6D4&kPb`&}p16{%;pPvVx8vjr893|%b60Jn%XEWqg3qu4UXAER zPRia2fE%iWn11vP9X<(uJe{f%E&5>Sfh}0^yovMC1FfS|J7~C{hRYx^7HQS)B2!;E zQOGNMG-{n#Y1B!+9WTbp=pLC~%h)HY0+ltUl+NRJT3&0p>gY@|_4X^;NV>xpuaxyj z%3HEivCHyf|7+Z5WH$FcISFUC;i5sEn%6yTxf(|Y-8*OXTXma7KV9-DP*-Z8=~4x7kV?d3g(7nq+O8Ij zI|Utzo9Ma2J|I4&+KLlz5)6Af5YXg0Wrzn2=VGeM)Ow3Ni1G`%QI8937`8x#K4(Nv zP?3VHawTY9ULIyU2rS=ZWajL@`nu$9m$b4e8dTWqN`bOeEwnb)OKalspt!NsO3svM zRrT2ED`17iMt#UYgd(BFht0`&bSC>)nuxHNS?MtAlRic+^Cy(h5bVAZKHedaD?~{! zm}p*nLv`y*#QH7Une8E=H#^=YE3*@d?Q&}ZbT)#_B(J$S!gQ+TMrHf@`5kJvOC)6F zb}KrDWja~Y%ndIp)S|7IP2i=@z+T|43B~g6^VYvwyLwrfBCvGDMeRg>1Y1EM;U*~5 zm8^c0LJcAZ!-ybNDc@*2R}d50!Kq)#+c~Hde}iZo`g6WLZ_gK!DEAa88IOaO=u8?l zTu?8rovflqqtZdsG-B@k44`aDr$nnZa!7to<9b1tCsjFs=ypSGe* zf<4utt5e)7XYk*5+Idh|{`;t@g{$Z~U>$VM#C^uaVTZ zTAx7I>+RhTtk$Se+ReH)50OhtVk)X>I<@%KZn0J`?S?&*{qu*C+dm|g|0ahsme#wl*N*L-S!!->WUlA-P#xWL(FASIifPKQ3LFa6bke(NFDHfBJ+$LR*sw(Og1NZke zmj2=A3hb^=NX>tlvjqAote>_zCr&GM-)!1v2Xse zC6kJ7uTF7_sn;B85TeMRxvb8qEvB-`4g>aw za}P>_CoMpO^@5Xz@0~Lrn(2`V(`t7*=Mbn%BIu4eF8iDia9U}GKGx)d{yyFT^erk{V*Qrw-}*gx>}xqbVOq(ss6ierxvq&p&?|G7@WyYNf-Z zYb#;ol9HHGp%Ke;D$$!MOjL?e5|z^U=;!Fy|BjrPO0kAHXD&(_WfqHA(=>fUU$}4U z6eHdIXI*$`2Km=B&v4(6@o$#)c0`R5(Ct`K6Uw=-5l*N@8_)08sue7PNPbl$%+R4V zZ`H3pxl|fB>D1s=DehHRWD1+ow%kI_(S~;1sUSvONcCit=lAD>;hak=$b_0*8X?ix zf<_McZ=!>jG)Cr)Q(>?k$d79kFP2)0Jqp>Rj3boRtLN4Pz>b7KNGzhgCNoZocD{d)wNjgN%GR|=1aUyw# z^jBC@lwCn_;xvw2oJ!oQSwE; z;7b!A7Sxl&-~kl~5()qZbtWB!8*%`Yr^N54q>H~K$RZmFcGt`yA92Mc>2z1(*YiZv z?o5+EH^(lxay+XNbzii1Zzm~lDORa~fGUM1pRF=g>*N;vl9)=`&NQV+P@la_A@>?O z^jA>L6oc^HE(6!56_{X*l#?CaJUO+7Je`mIbW6w*C?hK2;3Td~yJQb#hz zR0Un5SJ_HpiJ~gMEG6|;anHf&d+*JeH?<0pLaPVCz6VN+7A37l^z2Ba@a1gxJu z+l>#+CA03kzMY)dR?=3dNXbKSZbxOsoQalD(ZDRSpffOi-rR~v#hlrL=XP0|W7bA% zw4PJF`cCoHZxPSmm^(8ZOvIK;_?VMnHHbL@?aRB*UH?`ctQzv+6{O|YfQ=+FVM?Ts z3O==!FPQ6h`{ykpk_LMwV~;z!yZ3ln_U&CCa)mbS-}{KCe9lz2qh#j1e-=ehiGho56b8@XW6_6(YXNt_m|!8 z3#TwTN+c^p+~5l6MK$qTXR(tZy3InBJ?Nzy8~q`>M$p~da_J5Ij9S>ZZq{ilp;0Q}ml9t1B~Ob|p%P0KGC_8{$XYwtCRFPs zy%RkgCg`{yKBia*P5+%{eY+3e?rTvgwL&G5vcIHgc9oWB)aqxyB~5^CP?#r^xEt4` z*l;GJPzzU|*{xP%l{59v0wNI0+V`$No_gYBCvAc8EZfW7!NUR@E*L;QLGXR0D&U{ay{kL7EI;`6%hc_D34C7BEugp>``bg_fHA$ z-*b>HbedXK3i|M)uGD1}%)xNwkB%J{92zp*QGfWBe4BllS(AOj)2Z^SGg^-U>uYu} z3wr6&YL`jpcUl)l3Ft?Anw18VL~BuEFW*kkp}$UM0HOXcX$Xak31cWY$zFHrVz=GB z=u~oV#ogN!R>|%MYR@HjouTMeq66Ctu&xBrsA%X zFLB9y%E0YgJdEPh^QM`U9)-4h>+D)az2xkfMGB8hKd@;Eq9*G7AL09Dw>jDcBL!i`(%_#)Qpj`UTMpsdlUx%ml9Vw*F4_47K=2H=Y1G~RKe3V0 zG=nAV>HA4EJ@hWy_}A~jX+eXdF>#Mva0J}r@^+%(agSW6bL_*~aZ%}x%Yppk;^F9+ z3Dp|9f!7+sA#y2)K?;qDdsSG&gU7L7VzZ9=a^e^m8|) zpC@H$nq+*?%B_okM^5@Bk4c1gjnt3gyd|Ujh1T6 zB67kLM|&pI=7XHwxDfIGu-%|A#PN26l%x+N4kgHMhMsyx3~s)J(qfb{_hom8;Rh-2 zV_`3xfe+K_(HTbR#ev=M&yR;0+4EMYIghjnpk|hDBVhB^2Vw591}BFy!r=Hu*`)^B zE^{|SvOkdRCCm4B(~N5T>8JWFS-NRsGD?{zl5d5sXiz2=XX zkjJ=IMv?u7arUx|-fz)(i_KGO5vYY`=(Pr^&aKJ*zE4%69^tG8qG zJoI0fWbS1LdN1-@+7iVT#qG%!WBe4qSf>-Y=e4Sy;=UcgvN&=2d-#c#2iuFJlV=zd z)U06mfEF2)6Z`f@Hde|j){Kusb}`8AHdtd?7NIR^wR}$BIT&dgQLj}I| z0?85v<7hVuY;s`)wIN)PD;c)n(3>$Vxac?wP8-2CvonXTBMqHWe`>{`ut?FjsM&R0 zyLDEL2>EFBAUQjwG8z*>RwD^C%VpxNQD-8mjcFU(vfrY6`v-(~zjF10o?YIp^~sqt zvL`URV8t1g+obi{EOQ!Q#l5LUrPd_YT9s_)dP}pXZRPAvtFlCDY8jX#*Vaw7i-0Rx zGRt1G+9eW!+M`6YDBfVVfHuTk)B@)A?&yO}{=q(Q8LaD$MwM#e#3@(-g3<@8_9Nqf z#a52*hJ&jFwnMoYS@gtEbF-Q60a3A@--l0Z_XkZ||% zwOn#4ch)<<#CWlt+-;;t-@2&+BS*r(iU-@XZ?Ordvny@$**eGnI{OcYPbv`-npjBW zWNBh?+h2aZWdqs>?Yx97;iE2EvTK4>>*iVP=b&J)2e&(qR8uh`?i$G-cpWR028Mxc zeE})Ue-`GWVmg9G6ShKSGXLX7!nm=2+=0Jy?~;?brzOP6Jx_{Y8Kqj226&0S&5N}Z zo~R0V36Fb!*-h(BT~dQq9dyOi^(qV^*Sg}`usWW7qyF4pd2)Xvxw7Hn3G&QYSQax5 z*!TwS9u;Zk?j*I{M5Hm$ims`z5(bxt)5Qv%QpCO0gOM3om(-|dCLHSEK3kbcC^Vuo zZ=azDm;gLQ?MECYlqe_NaNx0;lNS0FzIltd@4TR>Ewd!-zM@u3g*ADvy2cVK3K=>y zb;VJP8ZyoKAB7y|tY6L4X#hwN=(v(1#HvX*9>kAY;8S?#Ey6CkAe8-BX2KG_L2(LZ z>FJ)JVH;B5=g5h6R1`*W<6%Q$YM^N}wK-7upE}J#Iyf3iXBNV@{Fj-Wz2$OjwYr?H zoi<~a+6;0?tEqHgq(N+wxRNb~C%RFV?F^%{ueip8R!i>Rbns(hhEEMq!!hb9vM%$s zP>@HiRtSHS6v!0fc9Bx1e)^Br^PeY%x7p6UzLu3smNfn;7K;fymRby<7l~E=a{Wo4 z+nwNWRZ})B{6y(3aSrM}4DK-MfSUFJP;loh9^66v0&qvmCv;Spw*zY^$wM_-a7p`l zz&(dK0Io?uF!UD{B86>WN%ERYK+*tn3)3v5ii}7YosnW{J$^}+@f|8Mr_gzui5h@}B~h7NbU{iN3R@`IOlcQ)?nfUziAt?VZBVIz zyXGRSW(wZOU}2x{5F*FxkSLX=d*2}?|0SPac3B(u!6cirJ8gG^Oq8ikKY2ZOkb4!h zY*H5Lh94z))c~qQn^+ACz3ic65((X=3;NM|KodH6F0iu8JI`GGPCW{VJm7k52jB$- z{MZeE7kZFHfC&q2Nx9DB+{LDg*#I$62alZVcu3~>Kj#JhGkqAsPQVcPB5mV(PP85)=E z`FY-qv2}K4|B)-u_83d2_B)NP!Kp`C;4^Jvg-m#t!_k$od+eP(*$J#djT6wQgwNPL z6Z%~)*T5hNoOxy|_sy+8<=RHqXr0;nSti0KEGoV>a24yxUwFFhFel_L&`hiww*wyT zP|kwVndfmI z5xVOnGEw$0_UDL{I+en1)HS=|CEbm3vs|W93U3;L(|`N8;`~R5@J-f}zM=h=cE-l7 ziSF37saA}=Iju)7OOr!G?-he#SEwpQmv&%15GF&+JKo0 zWhe*|iHt0?NMMb%DkVVyorl`x$0O|;3ZC;; zN_5a-I*~ZakNr=p;U-(#ZhVlc_;pFLJ#MWlm$l0RwOF+@9V->y<6JX9sdfQI6Z`MV zWU`K630AiiTj;lelP2LWlC0`A^n&LVu-L)QNL-<70~yGu@*nx2Y&fAlCYG$A@P6vcWC zUE(CQ*U0G-C#76)U7J8I7qz0OQ@s2B@1J6pJpAz09Ym-^JEF~~X>t;o#96N}%A_i} z@K>z@g&fR`|2Zmnwp-S#WSGLsamXwQ&JZA9kSbRldWov6+g864^8OGK!*}MNA zY2N|gR(ZXh_g-u7VeMfJYgo2r$=a5+w^wXuJA3cF2_Xqd*brt&!iF@=umXhwWsg!; zp`{I_w1u{emX=XUf#~v`_e!#zlsNof2nkbU;GeIg+a)k2#9zK+i;>^tSliq_T@tJ^se zhI`>$rzW~-4(x#Bn3tWCc2smJ=BP`)Sr)W69;0N`? zILPR@fEDHOkJ>ab-O{hGMv~eS@{ax;I8TFe5ik}A>KId~!SdUF|9kSi_k1WrJx&;N zhyie>5a7%dh7}+KgRlS(f6C&Ah!Ic;G&vyO z?%*rAu!+0w<`@BIKE~v-gvTBwR=xO2`PK{W{_Is^?N!es?r}7jx<3oggSrLhX4gUE z4a^JqEq)AqZt3c+zw@kJ0#9M_%5eDxLSOzBY2<}AH}T-aP&dNmx#RkNk(duCC!JmM zc*U!?{m#2)DNvslue?5yNFe@gY3kQmc!F=y)!_Zr_Allgf~pNrOFTgB#Y#eS>k_Iz zushD?AfDqN7S;$}Iqb%O&BIsx$Q!iQ_aK%*YF5T;EDw zO%j`c@WrQ|_+B1bJV^(;3YA?m+^y3}3T}f?H*t}V7@)SrIgnBBxM2`@I2a)Y+8pim zT~}{~>v5@*2i5}$6ZZh7FyZ9mKJsarAc4&$f`O6>ITn*7aM!njUgE@}nq1I2b8z$- z)zYp;i^inqA9m`KLeA(~0xiMv+-uR<)Vc7H#3WDji;N*}^vhZtlpk~~xJkC_hM2;_ zNHQDLK$5)i$E6t+3K&Fp|EyX2XU>dLR}h&7-)g&Fm+vNEk%>iPoe`JX=UVHn^Ij}3 zK~MgegrY+F63~m@pQJ5T8yUyK#g)u=Vuk)y#dDx1hT|%>3mispD-8J2b=k1vVYCb~ z1IQMzbK=UHP866Ua)8jMfYPHvHXT9h(W^9=Gqq6m=RSc&k5S;*d5Od2At`Zg`RvW) zh7%Vdncp;jeT1dshS$zP>kUII0(>3YzkG&~T1PaNe@{q?h!mRSVvAZa)Q&i8?+|RY zWQnwVN{OzeItU(RHspm?QATVci_4t{XU{G`&q6}|{e$*)NZaiSS04Lrtovof?6M9_{zNao^Umi2 zVXJBTopbAe^*Q~9jkf6iI{W_#5Xc+X9NK3|$mfK{4t$Y_6#ZDgKh$J2-eO=DEq^ zUS#80=SJJx>)FKuJZT_@BVGd!b2qv16dhOYhnXbIHNvZ!Dw7s?2zNTLA#mP8m)Iu{ z6=Fn!K^y(lc0WElxSfET2r?|i0KaDa-+(%F77;1GfbJ*=Zu{_ppI*GY?wua zsS3nmFHG8~+YBbC6on2zELhzC9uF-I0wl6y!2;iFr)|9)rx}8drK_(`ArWND$HA_c zA^0?@ucjFlkrplBbtAB6)jssjLa-OT>kfX#Ne9FttmB3GzBqbg5rzug7v~nWjc`D19@+eH7`wII5E{qM|ag?Iv4`Q;?g-t4JJThwtd_|5No}C+^wW&!Go04U-v8q2;F33OtC)G4l^?%Dh`bK07gZ&U?Mi9_iW_MEV zJ$!4zgGAlf+FC?W1nP-I)<$?DQJWd$pVf9IAJxYNQc0wV;4&LLY&Mgc7nPXVooo|Z zst!ve(vV)R4vA&r5Ngj#8pR<|1GVMPMYU^+hKnB#sB|yZp1)60%w6I77BF0(}Dz&ZI0q+2?^vKameT)fdmBa@nwPl0EI_?ys}pmYIMN9gP{(xe zROoJr)+2)*1W&e6Z~2t${)Hidkc($gASr~X$>exucCn%}3x0{f!WB9rJui+*HUW02 zCYx8CHJof-pG1OdbJV-^C3Fu=EY@V$umH3kt|2E}L_u&6yq*hZ?$uBQc{MmkO#}yD z>A2*<`mPu-z_0!7IJ@`LsvJ0ThhJe3p;9URU`qKv={ucK;)h%yB;|h*!VMdMSoj}` z%Lb6;Tl5^@T<^x?yYJrW^=`fUJ*8c3UuO$``h?`-N4|ZHxW?lTQTsv!i1YjIrKs{Bk9!Ui>a*I9 z9&LZ=?Zd>ssAtMQA*MxMb50$a04x(`^Rg9gXqqy1UN@Ya1D%e?D_woEg>T4FZ$nj7 zNiVIZge$xXGC?o*tZJc*sCQx}CIl-S#K4w~)t?zZctTE}SkA{&LmTK`%UY@%uN(Pw zp>Sl?J)eGx7Hl~7)mPMl|4aUTZUV^%2F@ElzJq!Ih0Ax7@g+i)#JVD*P;UT2z+cp zzoh)nq*C7y;qr?sFyR6|7NU14>no`gb?g7dPNX$lmPUvb9Ub$-;pVSDe60}tMLfO? zL=>rS|9u>_{CHbQ>3+u(G(?a26lPjCB?&HrNr78wHN>mN-2^*;9~t*l?SNLwWt*#~0xJbfD-<-9&)3?kKQ1cMd>HzKkGvYGD@Q(8tI5$2 zF}HjJsw=Xh%&!O`)fPjaB?K~1%m(pZQ-Cd|cE?S#TA4D~%Q*$<+Dz#Vn8uEzs7JJ# zV4FZEYz@ArwT-XW3S0fuzqHy=n@}fg3%;X)S0b&@6QY_=7oTq*IsK16gWj_WTt3hb z=4#uU5Tbvvd~H2ZW+8C&CXl?#{tjCzx7NH#*8c!=m~?<_w; z>?yybF@ov>biD!SBYq=mnPLDABSTl@T4X@man!fBQ{Ne-%`K8fsk>Eb)Mhjm_|{7~6jN%%S^1nY}-+=73spvZqmQtGreudS8+Q697~c7|KjvtK2?N z(BQ90_o4;2=BQtRT8Rs?fQr~K=0(=TJ@CFt+=HJ^*BvXcaKa#*svp9_et<6qfeOn* z;IoQfLh?NDF-`;O?L81;80N>We4#}4!~6<-&# zuk~S75#N%B-KIi9*=d}6eLnwJ7)pJmA<2^48t}Rx1K#ksFqu@cb{y;#3jt<9Ae=#B z(pl-sEpNB4Usl1#u1iwyPo-WYtiJ2~DEsikA5p(cB9YR2=GBRN=wnTnZ|=fE<>%f{^o zE%3wR?j85wxSx)DY}}LMo*nmMWqfp`6sy+8!_>4>Yh&0g4U#_0;U#v;QxY_q6aWZ@ zves6?PXs?FIK~hje$?-V=lO%bn=UBf&!bZUc*>P5yx#ISh-qynmXt_BXpoDo8uh#Y z0G!rbh!4CAp_*5I9DN68>WcEuH3g9cO74bBLs#|_-IsQ-Erx{HB8lJ7q;BK8_-?LS ztYfw@bwdGVo1zH@MkWQcv6$YW>kM~xbc_%3EOHQ6Q5XnO_?kh~dqtFKYRJN^n*K=> ztoUjX_?fNscD9$*xH13}CoVv}yG5C5uNkZky4F{IBd-r===R>P{2D*hHyd;x&vQZIIG%2D< zl_ss!t265*>Q1Fx8Am%64Jnlzgc@RMV=k^zsMEQ7KE9jZG-v?XeSK*YL3rwz#51rY zN!hH7rs21%4Vv6mxv`{CYI@K`3R6ZUSC`yskZV&bG}*%aAK%Hh_vsj7CXD>fZrbK_ zG`-RK??l3R1q`OQfB#ny!(mj@5B10(awX3f*0C(Hx_0v16K5BQq4MDt!c%@7&l!^p zCaZ3M!DcZ?cZqB$QU5KXL#5k}+iUK`3O@nm$;9W)u#HOeTFxi8xxMfOmRT&wck_ z-_d#FeMg~j*mK{#*LT!KZ+hS;%qp*gv$U4}s|9q*id8>ox=Za!qpuzCaD*Y`Vblq| zJTO4ro6-52cm zwJumCt~O5|qCPDD0{!Fi!gXE1X$nA09a)HB80P>+0%pTa!nk1)ydR*I3f@&Mp6qbK z6cy?L&EUr{;>chdS%Go@3#)zqwJVtgKo35kD2(o*1|wMS?nNwdfvzb^Rm#2yDPkFd z4p37#(k*g2Bt6n5J9>;G2yoO|K~bnxF`sJOdSn4xE@3RZ{TwHnA2;{+TRrCfuJV-j zhI~Tqm&I~(T`RVA3dbK#k>em`=}DQXsSPIBEs5xo9hzTUGR+HYTkGO9uiqvk*`Cc? z{apXHwKnR4$(JwHvXpABY2z*PxNZ8*K)n<6_e`ylmKM2B?siimXPY{1&FKJP#Ud%s z({T{vUN#tXNW!|6X#i2L#G|=`U@`2Q*m7`VkW3uNDpcGWGtOokfxjTrAnE#ogm6@S zC4+LbQgtw@A&Q>7IoZ}ea_@<)Ut(*vqE{&2L{IlzFUw@scpIcHB}}PnTcrxC*dVgZ z9Ow)lxC>OQ#H{g$uVA&AXDnUT2DO=c>Efx2+a0TSofl^+c!@pdESuZ%%zohAFb_WO zMU%po2@|Yt>tKKRlP;0PDk_N@E$A>u5aOscf-a#}$%Gx^C>1S6U$nWFtXMc+A*HV% zyO@M!Bk~E$R^Ov-?dg!Sp|lozQoGG+Z>voxFoV3dqot?OT8MkaLJMEe98Mzbbsu?v z%fO4CIO_Fk{H>B!sW*V0;kg&jZ4@@nU8EgbaA|@IKL&lS=w}4~7uM%d+mtY}ek-~j-9pV2VLpNp zGjyp&-vtMIQP(x+1s?&;<73eLK0)m3DL*lv+;rlCnZ&B{<-~X4uJ9A#HzQAnXOJ8& zBZ9{iVB4}0{h2cAfge73N_<8FYE>T``lp5+2amX6NeE0M#N!A!EnZyRMm+35w4a>( z+^g8eh=9rPy@w$N{Encis1>cGzml{-t~~r@IBhvq3ZBFhOMX9j&WW9$V#P%(cB#fL zfypE+3C#`YHvHUGYC(ywRWQpR9ywyjX2%B)3^2Puqko`7&|+e%xq6%E&tK$FmU`^M zw4gEVgGDT4%=eYOg^89xHeIp#A;v~ta_H! zAtqE&JPwd+d^zoFe zzUy{14YZqPu2>gjDtX2IyS5ZzH)%;?gJ8)Ia5RDoGA!wl>3~(CIlJ@o? zuebR_l)G}yoG&dw8;5HW@Y}M@GNmElGV%BgT%IFDe8KfDw{sjTQ60y(vW?eJNULC8 z#sSkv&yp>}W1W!I4S!uV2ds?l(u<5oyxeXeX@wsATyXysla~DOqm{h$#9CtL zjyskj8TBdX^BssmM?=781LEGIf=%H{JB!V$V{yn^JGidi7(>npWbE+{MYjti@z~Dn z2T4)h0gEr23KDVIht8)qA5A7XE?G2dW~;d7OmwwJYGSrCjYt!c*(ELF#z_UKXI2kO z#mf%5glt}mubE@xIo-{|Cy1BJ0pi)a?kYb@tSw(aw3dH+Ne6n+oA6x%je+;2taOsk zVPiHNPe;S>>|l)VE(N6E%mQcVCqnn2mMId~snRZIS_W-NRjD}_xQF`rBNB5mDCKE6 z!j|9#3c06V1zWilYL8SV4^qD#GIqe~7rucjusB@x-!WA>HPg-2H|RNNl`j;%{`+z5 z2Y`HQgRHYukQyzz&0bbk$BDhsrUiL>&yR;iG}0YYjjhLP_A=G9gOK1L zE>0uQ+2#@wGlSGZ@CaYjhaPG5x~T&7NAg;(cNL7mt-_~rjhoj{%&4e6QdTxCz`g=2 z;(!=I*1-~4fxB39l_P?dJ`Dq0MH#o*Kzc^Q*Yr4ZfqSXP9+Frx5gA|07P&hvRYG7? z%iCLqU1h2<;&X}cLSM6^ss2mY=AdG>aSaVR&Nu}jZ_F2sO{RQisb3vZIhBF(BUte6J_sBwkfwrPaLu`n zRW-lRhGY&195(79+F2)pV_sF1dMhzxLX!~jTicsC)|!iafj#4I*AW|jz%kZA@Nm}w ziCn4+$yhL4?qW5F+W?vIUaMCm)Fw%jBW~jvjKZdRU$;gZ^uY7?hoVZ2M_Mlr?1EtO z_)}7AAu0zC5w~~lJ=H@l>(~LI$~42+;dP1lMh@R>cPhSSD#1_O9KBJ`rv2n7jmV$6 z6WC2to+i>`tV>{I0&j-e0x;mkqZ-_6*gTz>Rnr+%MUXL?jBg1XBu;8O(!Cs< zG(mO>USXEvXq**&Hzkwi#ka>M}6YII~=;z|8@jPr%Y-8`QgjhObNH0D`B&!&(%6M zi{P6ur<%!rzoUb!A6S!30zq9^OKWh+Qn|%Py&?|g+P9y7 zew9mVp zrC7UDhQGxMSOoC}*42OzU0FiF(sHz{RQf0{i)Zkfg3hpnxFz2>dr3R!zP2qKie_vJ zR|VjG_?FKN<(f8M)&sA*E?P%&b5uEp&OY%dnWvtd`RLs+%_L=Ht~)XT?bNqU>DCDh zTy>`ZA3D#>0X^Tq)08HCpv#`Mz$!HJjYF&9?dYKFu2Cl{#FO;M02+9?p{_kb3@_av zE7dgpt^d&5fuKrM-?$z2Xnga>VzE~}VfEgt`UHVw2)OwiLVwMapIm;{kd}BdVO_Ys z6K;g?>Ny=r=h|HpauD^@0Yj zIy?A@Zu!xG2)o4k%Rp6~o8!tQEa1@Uz}FupYa48|aN>M)#yzECCyXsrD1yT(=Y${h zIOwcr*g7Kza+KeXI8TV&eqxuGbe{MvnhW>MA&*kK2|-ibmK)U65*R4oe8g}9y@q(CiU{S7cu0#y`MjY zK8&NT_?2f<)OjsSmoIW*9&%v&c0bBFL=Klr-YjovarPNo`eJgPk%QL}e$!wMIs`yH z;hNpk8(MOBJte>bv3^r_ZcHj_6bOTOJQwd8d|=otI)JM1=wcS2|KTuz%>q695m0{E z9HWd-Yx>tDfQB~#5l6|o6DN|S{=^4p78vEx5=Y(I$W$oVW~ZD*w8i{a-qOob;5WY} z8NT^vGnoqhv||UUTvldbmKa8~cTnCUO@aK)~3uJ8vbwC<;t>a8x=!1QZBbb9!Rp+& z=+30~;Ny#c%g$Q#=;ew|=jMy^3|RhAIDc)qf!u#$iFfyvUF4$I$1lG3D-@%iAq%U2 z^ThRQ<83Lvf)Pq+^XJ_2+WV;%q0J7wPN(y@!aa~wvt%+xeYo&T^|VVCLF>AnWtg?= zH;VX*DMlD}Wa@h7!Dx8-3$|3nOUleb^x(}mcT#@^fJh6~{4dEUeO<_DDItuqRMwV) z8VQEzFsW}ugM`L-aRebxB}E3S2;2|3(#UzLbtJ=hlHy~S)(z_cTVseM9PhkIi0Srh z*>heT!IG%m=d7WYhxJ~5C)aazRAFbwS&hFhh-_AISY$T9ZfMK2d2L*ysAbl~aG`PT z(sp?5Su{OZa&El18?K+?d8^7FwLyv|X_t27(Dv-n@-NX*OUKq_ja-$IW0<{$ki~@x zsjyDa$Oo-G<s2o3`A9tCY;~ZHpbZeSf3p(XxjH+dqxElfz%ESmxAD&!$h4f;$v#~tsdnyDS_R_ZBM0x0PYJ&exs0~2?yDMLLtD4X0+&qM8o9S zEnJ4kgXN^mQHJp+18$yXKMwS-782&M>_h=2NyW~O$Q$qvFn{|J{h(P zEDZ>K;@h_SY(EZ@sY3@7pAbAtQ7u#@4Agmror^3y1KTilW#@6Rgei~3I3lvps~5L8 zNP*5)j4I*Ml?4({YFhe}Dp;Z{59fcOi_9CZ6PkId+*CLSYCvyZCcV|Xsj?rv6*8w1 zM2xwWgMc&RTDtA8G4$vRxq1b|Q&M=LP^Sr0!%vMyr2pq0u4P@@@$5wb@3pT3s?cu& zfBMs1cjZ zE}s-on*uw|-P+EA_40`WH>A-`1}DCTp)nRK{zcaUt`AqTD%Ja;CbxZ&O=RLX%v=i= zGXO~YIE^ifK|c#m(gtV+lWw4)S4rp)Hmb1R4;!J9jDX}mzNz5@GE*FCs^Gq|icd6F ze@4H`

Yo+R_f=d>l){i!Mv+x+gWmdu-j15YDF~<37BCtrsr3>BPsF zy$8J%A@#*`ASc$!HQJk1OjtDGYSeeJ8>~jAgQbJI9c4IHC+yN>8?7J)QvjXWD?}YT zw=T5_8~H8g9Yij*XZE0xr{QXQr@X87FPdWF={frTna7nY?)D2z+}7*S6S-UtWQ~^) zR|z9Kw=D-eUSOWJavh7)5@_XyrT&OVpyT@EetuXUO@+i@!gh$h&kohcV;S*zY*r^~qyBa4>eZ3IYQ>hxMp?t;kkGxrEL11bkFiyHVOnU=aLKj$ z=7|NJK+jVpdp|L>PV3QwPib-kU+YrqXItPD8m24-;2-i_a0x%pfj~Y|fAlO1YWdgcZ8*lTEYKB+yW>mE_naP@_fCXSS zf5t!{W5E_MfCZ+73t)i)M=wb4SbE}*gsA+v1BO~tE&@0TH^*YEKwxiYXCTm>;mf74 z9A3aO1vsLu5oOWN*70p=ROhd6w()}8#%AiDz&~1q-l1%yPuD!L1a$%&w7!2BTBm}6 z4A?;b)h5@?wg^mMpe4k_PU=ucs*{NAVLgm|@SjirtO4pRAus_UMR3IAo@U}{*oMiV zSmtrd9J01{^!e)5!S|pZZ34@_LZ8+eYKbw+iiJDq%ZYZk5y-x}%)RPvH7uDn4s9S1 z2Ojf!DH7cBe+-ytg@{=B8HDg2_q{Q`j7*YZ#LWo}{4ieyH1Z0aV=D&piH{(t&1~f~ z2wg+tBRR{=MP9B^=$=2#2PWT>2M0{=SWc9q^E#c0nV>#s7wdw! z7^f~vrPd~s9_nLaAw;h(JrtR$OdojNP_F?OnT3I`!0YBfzl5&`uMZ zciHT6WTg(^G4m+i5ey#}VHozOSy&ts0Th*OZilI*eTn*{nF;%`%pJ%P)^~~{JhKB` zk~dA6O&`}818`htF7|@8+~BN5`>H(!`nWDdzmM)(bkU3%{uj|Fz*Xz)Y@_}|-SG>J zj)mFVKu=|`FBG>fFGW+VloE zykN%3OQBHJff=79WAx$0O-8(2u|__^bhZInL~Ji0o>z>!22jt_9OKcK0zSt0=wd{x z_OlXR<0Gx4p(vP1hp+L&4_wbc9z+1)dzkTE>DIxCq{Agnrr=M92Lr$d<|g@p(u$)6 z{v+{UfqzZ*q_xFKl+;D%)9VH zV<@yencVAg!QlRt9UaFS8>d+G%1{7w0)SXZ@6cd{xl%@hnFUV|abV-G!NSlOH4LL! z@NM(@1ktg&%^&5$zCM|htx>W$pLs9#A}JD3U#@O$p7&MzJ}(I>j{|uPH06}Z(%)5{ znSD4ssPhxPlrOtGATV;=HxSE!d*-8#w{Lo%@DAQNbLjWKe>>uoH}I?+rRJ@>+PXHq zBw}+61{N&+b?_SuVy2iI;7Zv<)6@Q)JAClWNzdAKZRp^=+qNM=`-Yjf!wWbPZ+!m% z@eb*NtX2)WBb8@HTX3W%AcLUvNL*fw9=Lq~@9mv%_zFp{XV)be5RKuaFFI?I+uTp& zti|)zx?p)8%eG`2a+-Y$rkUtMWx`Bqy_-kr0PRtN2i-wpy%Q1Kf+46`2VgL3`0oVR z5gr!JRjh|30Ujmfrf>}aTR;K)SdcochVYSkZR8dGO`^}bRq38)mP*A)r z#1>qdS=F!g%O_V7lBwl^cEU6=aQz7i%|Mw$*Xs}P4 zY-u!4oAHGvwt0yIfFibKXvufFmTCP4tOTqr^itR4i1IP8hYae7n&^NNa)LoqXmn1vu# zKJ}W#^$nm^4pTN7HE!L=gfp*NsOs3b*v?X`+2&~r5vg@f>@|RUF}1la>gqI6eh5%A zCFJlw8@}V5FqDc-251m2w{V!Kx)0U>IoW+GghxO{Mm0)@&2*}x!*VO?d)#w=1KD9N zNeSBIOo2!y5H+ak^L7{~a%4aZnJoa2ih8SC)Hb`1YY}%(Z5Dn!wi6Y8<0u@0Egxd$ z%0mk~gc2-~LP%iE2Uc5|eD_6f?n_>=|H>5P2(b$;JU6sY+qrp(ldYxw2ceT3XdgJx zqkw=Y!GT_e1d|7oNk*Vhw8BD!5*(@N^r0d_Xn{O++X3Bp0;hnO309+bz*YRk!Wg#5 zDW{4EO%MSqLYk2@n)UA{?s#ern*P`wX|ye4PWkyIz9&Jw+ohh^&H~-u_TEYV_{TjH zB*DC$t5&k@xu8@^%^TA&=v`TG>z0+S`sUSJHdE&?K=(ZhqU0=O)U|I|-Q3_>yP05% z=G+~HjRTC}jrZnqg$p;>pjhQJZ@##A_L+_uw$f3!|0_6R8{GNbpu)HqiuJ8vCGeVR z?-pk4K(`j_96*VO|E=`k@$s@W0fdA@kza`^Ue)>~$bhe?T>Ef$jodt})7cSygjCc= z8_^q78=75W)^VB4dNvbepn!u&ATBg37z~brV*rS$o+&o-_?*ciVY_M7CAUmssd@be z_AJm*FNMCmAM2?+^q-`nC=UggN(HCgE52n+3zH_8o6DlNKQ+|BP&guZ9Ii{pmN0Z- zz8WUt*c`6Kb%a#Tx_WJ&T4?9V3k!CS_nr5!iKSL?9WNh5f7{SJYsd;3>U9m>eHPc5 zERF*`RuHTqw<4$?o#30p)~;9_cgJg?>J*PdD+zn~xBwIU+kr^B5;*~ed}Yk{h_1__ zyYl5Fd6HE&5Xc z#0pKv#zhW}R?jv~nU4fI*OWd3>|JDOvRxDo8jq1=E=LOdt860cV)qTy0Mbz31kXMH zoB&%YVR+YV-Ow&grRt;?zI2{l(8yEuuf2SV=FlHnSxO~0@cBK}kn<)yT0Rib)j&7% zopO)U@0x+7p=&TISVVT}_Bax!Wg~(2l*dobjim1U=|tEiA3OK#6;!@h9B^;BAj6pT zWN9{`E`RuGmssy;Rl|Z~zD2-L+D*-Qm{g*kL$^{hJY#wZ84TB3G+cp|2g0VBu&R7m z%9g7HX{kksj%1N@-RpOqok)`xj2PH5e{ z*Us0Y#{#~7OE-+L7}ZFg=arME|tC?H>N#^&wQ(wI7Jq|efj2KbmIb(uuEp3UvW6I+E7VX*|@GaAxr1 z$BABTP}58o>=1wHIVjxp8a`39Z-6t6_{gbw&0h3o`CHh!{dZ&l;=+rBq5Nw?n#B@D zT&_YaY||nRQ)y#!_;pNZ3WM~3#67(m=P$VlF5%T#HmDF$_ktQU&RTDYM&1k(kvywU?FG^-gx-WZd4HZZDBNui-a@v|oQs z9me_qur%(it}bGcrenim2S=yl;J_z6DezrfA|deg_o2Je4 zkU|Nob!a@VVCbLPQYR8I9Rt}QgnDI;C}tkb5}^}+BHk(6h%K7v28i19H$M+abj?$G zhoknz5Vd~}$!|S;uUIs1M5qB%)FUId1tK7Pzt}}8RrToWRWjlzbS3a?N!%80z&!7^ zQZpegf0o2=;vDq1^7qd|_Io&OnmX45yg!zEXnfw#HyOYQG0Q$a>&l}7$rWXGuWQE1 zSoD7CuKag-;z%9|PCP(drjBk{=wQPx2lLcL2tf|tt;Z#xI#Z%xu}t~CQP&6VeAhsP z2;ftoEsS$9nz%BYUqQsIgn?SZV8>5n_`Qrogo@K|Lhn&#^h=?z&AR@IBa<0Q-oOnP zE;Ulenl65H1*jG+gkb*G?Yqz!n-Z!jC~Shi3F*ba`BRGHQX5T?5wR_p7Fbe z6l~BN&@Q}us63E{DTuA#r_ftxj*NP^BJkm;IGYHXam{oE(^Yxr_$}hMhtD0 zm@xq9ty*7gAz~Z-c%*BSQ$?%+0YLhqdup9Pt`|_2hd@x{C_|J z8WX?-SFjn*#L%nI?@9>1{`y|Xw5GdBk%R@AmY|^To#J8$Mc~2dmK*`yn7k_4-Bc%$ zu|jhIStD6Ii9lr4sJb1XmDJiT*6?{E4x4~vOF@0|)?3zOlDMxxeHKL%K`LpngN+aB z)CGupQk2=BMdf4UetGu%&8-}$W21LRMKZ>*uMQ4Ml{8L(_az}D;SU`8{H|N6Epfz& zQ(^i@VCWVn%lK?#{l+%BjOzo(070;d+%{J70pG861BOoqU9`dNc=}ZO#_nzlf>}DW zk-89FLoMCiwqsv`kvi`zA1WvZH}`R566WBxNg8Ac=rdVEn?9c^|9tFYp+51kgmh4; zGzx7?mjA`7SMk$)bv+mTbm-7JBc5Nd?L4~3>(cnzq%Nr^fM%chcqjqDKABaCqj7}Z zbr0_xm-aZe;p0(LDX0+_PFuLb4u|>0H_b{KV?=J|yevdN`)@^Hbb*G_6k)R(6U^ zMv67&yCrsKFUuW*t*qq?xkYQ6X*OBr6m`ur&1zL=;+`|TG1fQ}9Dqa6EUw}5)k`K> zy;yL;P-7a590a<6fGQofU(o@3h)9&E{=6A0B|Ln=^N6I%pQalo&H^8YTXIr2vrIdKeF9RJ=^BsgDvl>nsqK}}>GETaP7ZJ0Qhf+?t4WzbDsn?vOX;f}!} z3g0ocZ&eB1Di5^%;G|YqS{OB$Z0#}eG{InY39-(Y_?#JztWSoO>PXR zgTA*i-YsVZ+nv*<_EQ^M8wU&ZZbhyiZRlu71VwS7KTeqoPaa=RE`IaprN^2tdvqyV zDq<{u{3_1`)I{Baaw0*SW$op+O=2jx;}4y`L|^_gZJs*M18X&Ldcn--`yfNYm1KXe zwUe7i_t$qUon~gk9(LDm^jCAsEVEG+OL!Us8&)_>#_^LUyFKb?rzW6I#Ag^Adb^E{ z#-9EZs$-BblFcO66*djZ0juPyXYQSlj7CXi|JgGWa-p3s4)rfjp}Z;zxfX_cEpX3| z(>ka08rgEd>hj&x4KYUff$BZ~^e6-Xcie}a38z&fANWYq8w5^!v2Vv@zIvjm{I-@@ zP(EZKt|>1?t`hu1y*l>UeLPF;%OXn_mI{!os7-EaA+hgFN0tlDbQi>;+B~EPZmr5y zT?HE}Y8e2aM2Z0gJ7;%&7Q$s>dwK<(|o8KBg$@7*4{FHIHR| zT4Alcxg8q$M>FaPtxQEd$K8$Y$!R9-xNj{(!Mps$v&!#|=>)*Yyyx4m-i&WaGrrO` zz*M`~3UwS*a;(S1sZCC%Si-O_wn}GTy|M?Ci=oto=26H9c~PCn zf$hrS5F5rYU*%X}&$^#3@hVB61|VB3B-IT~NK9G-Z^F4dox|hq7w#=$Jf*@%!%^zw zUsWy$9FtFHJ2VH&Tk~7zFo8emt zQb0SVn6M0FdxXRcDhu9r4qJ=BmbCYs{=Ui+o6G0>2zmJ*NPs(Y=0bs8C>&5^rY!E@ zv_*UZ1_*=M&dP0>*Q4bW`MDfZu41R7+sCvG`cDQ)Q`DjKpQwn2j8f-*k(tyY!Q5d* zc+tRh%u9Y(U`nNo_>1Vk7%YGn*3@HoKuRA!ydwZFw3|kcC|4nZ;hYHU zfuj?U|G^f+3~Bcc4gO3&#Qh{EWXmk&-XIwRcud(@zOEPLps!kVn%D!=1U2Uf3;Js zD|Wq@e<3Gcu+)w?8ZB3yST_yLE8k>7mojhuY5-QbGurkZMyWFx>j5y944me%;Ser^ zb~WA*nTPSksg;9PNhayOQDsNa1fB?4dU2Yt+}d#aqD8M# zNA*V7G$FJBxthuOP?D-`QE1RNbQKLIeOC{9{ftl(cbo#U?MFuyqu4;L5Q_@nPver9 z1VIxaBy=poraBp{#J60H`fz#|dLNcTJp>=i(H|*OjOZyps3bO&FG5#!iIs{H?1yH% z(mVl+de(0#$-?|5_u-Uz+I%l0hRl}f?JjeD&3rUq%;x@B#YgKgqY=qVmma&PlK*fiC{p zx!faZQS)F1XNrj)yYR%=K5$p&;tYaFdoYI@GLQ3&7FkT|mlOA&SV$hE8nZjs&9$>& zKc;2cl66tUJ);9azYq+7gGmjIz(Ex=VrngUc;wZPiu)TDTz=VcD5)D2R!2n=0H019 zNjiw#{)%;CjcgJfL@ z30aN|5B5x)Q!otJ@w!GwcZMLTO#ZG9KfL>H>eDgJLVRV?Bw}g@5cF14_iUveLm!qu zGSHcdT?CX+nBe3qe9LW2;DcIbJ(nu~8b;hdj~qggF>F-1i}AU^9H5HZRMsR^1P8p3 z#bhdhm4uxltWrB*$2)fsQL5v^c16(Nif{N%CE$)8i@^V8&fM(e`a*2Z~@sZ|357Yqy_aesf9a-mybed5di$HSo;X9vUz zw=w!5M_UGC-gKUZa}D}HjLI|U!m^U(4*No_sH`b*F^2!oY3)EPef6 z98W9&GN>%Vz9YSAN?KVeYUY>lMyUKWWG>2P_b?#u?U_V7~+ZVUOYH12o4Z~KeO(oRuP(0j-F=7&H3{+dTBPZ@u+&fP!FJFb&#o|x0 zvTi>fi1Me=x~!n13E#@Dc4~icysJF)g%88%n-aN68xK=RZkRQseI`<|0yupjxppYP&&&jyd38hz+sdve} z9x148`D}@E7MTD_=yDwR1=PK%14NG>Q{27sT{x}I3^(cfd1|)|yWZgrT z7kFnXW`w{cMu#Q3Tm?1*X0wl0lfywC$F2%pPJ-8T&^Q#NjKDvx+0sz#cQJ_*P*;c<0si|Lez?SuWFWqv>(az40cklilB6r!Y zz$582bt2oiJb#9>#|#utEl@0AnK;%CHTsEHt}wG6`!=Iqi45b_(PK^-mdJ}w9Ls?X;^{% zivglNTulyN76y? zh(qc03wSf696e8U=rQ5pZ&zK_x_R?>4$m!idzEpC-D=?0^Lb9mqUpej@%MQ-OB99q zXT#$8SiGIj1bI={u}PP#8n26IPf$;1RT&s3287IC%_BowICDUW)+x z;x-H%*bLjEej54BTq;cOu)AZC8gE*P%ua;^Gix?Lcr*_&iIrFx@Zi48J%k2gq1&h>@e|o1UA9`GJKkb zStlU6Kguus@LHzC1V6YDS=GMHX`??m6i6L;a00<+bnb*h6dNL>EV$<&IQdQBgW&T)VjJn(vZe{S)^7Qt{0(}EYA0S9!(g=oR^u5ks&x=v z2!VB^1LM+w4&d7n;F8*6KKe4iCd7>@uo7Jx!_Q;&ba$b*OVoN$5~Eh&em#9d{;i7x z=IP=p>%S)sloz2%rP4QqmqI2Z1{^)MfD+PDJOA00z5T@*a2g1^y!Jn=R%7cyI6(iRGGtU25b(~2yu}$9uT@YpdYvn$8skc*Fy`F~gftYkR%1%*km39&uJz$I%UJ4R_V8E3=wZ3(#;~ z@x6#g9d*L(-idaK1TD6$`|p^@kaNf1xNmhs`6J9oU5ST3v=MF{(|gIBIJKdbZ(!S(P!I7v^ILfehHW~U9-vCHY1D6CcLnQ{17+|mIZr~}M zS{~xB6>$GsG(3q2>H||&&=dwDw~TG|TBuLL;T?fD1JpAzG?TjJA^YMG*E8ECO(gy( zaK@%~uz}&)IW5*C_<2g4-ZCF^J7%rvphR)DqSXQO2dow+@A9$AiM>fslAm&TUyv7!ow%QMeV-!Dl1ooAJXWHvEu`}$Ib%JZMN`78@?Zn;f+?)k+k1LIbTdM1Z| zQ|CipEb6rkPMu`uz~-8kk6As&?*3tFY7J7Unm^u1Y=%v>B6sijQ5S-_O4jMB`xtsu-? z=i2gBtJv8jZI?B>+6~%7LTk~cQZL1R3F5b8C&`9Ulf_0$L9Laxc`W9pp}~d*)1>KN z_rL*@39MXkTYkQ`d%Bow6{*(FM1T7c2MPD_PF`U1~oDqq+Fv3&IEf8Bg(!l!qgcsKSHUMvSAzg|WYh zhzrXb(Q`gfk{5*p?f}5R_flfa_xUm>fToKF26G$3Y%c4jh<;)-%=NkYmv(kCgTb5d z@GdoR?0a@m1V$(+c|2zY`dxifeIP{CZQ2z6Nj%vQmb_Hqyeqb*58U|_YXa0ES&0$L_bm7z!4 zdU%SbYUi4~DTZ22)ek#{Tu+<13+l?viDIhQg`1j z;qaXsKjKj%cUu+q0?%cQy5C0DBh$GCKwg+;2f>tnMTc5= z1?$*p80?qdQUBKDgiRqELn>pN;X->qk=PS_FHAi^pd9rxDIWQ4%09Ok&3>YIWipAH z#2xdx@vYW7ze92?!*A)`IFSLA#8o>}gY4SR+31@+AKljulf>NU&%fT+%-H$Xk)0sBBV&f|{SUfe%!^A1 z*1Vg(xbXVHN@%Ohl1IUsBe_DYdLqy$yV=2xxU{b14Her$S~kk^Sor}b2`6O^r#EfN z*|dC}4^WBr74xYRsYm7zQ|`?I3I7nVdDQ&ow!|)n~e#LnyLfk`r@yczt{VA1r8}?aoXB@q@1DMVX|AjZcH0yx_>&=ipaO^v7dvdXl zam)APp3XoUiWxoj1v>8xX2%Tr=gBU*Ehhoz9UU5`12(=93u|M95{KB@k!PJTNYv2s zlY>L`kCq7718sY4o0CUOE5Q)g{p34|;JmnN1hW?7po zOovOnGRALlhODhuh5z(&W#T=0}a4~+(v!0YkcIes|!Yfm40 zXAm9b=dHx{@~*u}p@xxWsF0~7(hC!O9rYTpuFryxAeNqZKc6Q`rO)sFmJGQt%?rdP&M4dk?Ssg+^aDU8hZh6m~NRS6%?t!MAtyrhzf;A3WdiB{($D^#jgPt0ALiP;591 zCWG-twJ9n>9(ZZl@I7{F zHFc4Xnv~5RM7yZ%+cMH-c~GEHZcf}g9ZkAD{kMSL!;Ns)RcW0^ z{oX&phjI}r3S{4cS`Ty&0i+vQ*-$|u2LjuQo!t% z!o(J{SO6$L_~V~+dE=>%tIt6~s0q@K>*Ex|n2iJY5sIqG5~m@m0NMc6-MzD`D?~lR z-lUCnMv#+D~AN;O*m|re^3v{%|XY1thtVl+YE^QD`DB>c2F2Q2s296st%*rw73Pmu19%l z9as%k%IeRoTJVCihoPuou+q>O2~?vGS3Pb;ocVcob%@+*P6J=lv^E;OEb{jb>ZZM& z+D>(=#A@CY(dTjvtqr-vN9M*Jg|)ut4{f@Tz{mHi12PLMz%o*1{T2k`J~XhOu! zyC*IPubzo#m8LEBT_9|mVPZ)crUBxUkMF(o(if+wtzBA$%;Sq_EIoOxQdjEL+7%tD z7FE1eWtwQz87J?o*Jad7b#6Pss0%Q-WFr7`zUs_hecM^0YH#-&Zr+QH8;MU?L# z-UOfEO}+EVFbi1eU4OW2-p_72%Zd+w)1JFtTo!=C|KDE}apskH;v3lHqWb;`$gMKN zJaybx`=2bovdj|XENN~!{eU27)-H17=}|km-l$JtFbL{|PBBv*39=l}MP~V3zG}94(voCQaepI|CN~uDy_t_`ko4s3%kK3NLD@v;y%-hi|G@f*@A!|KsdE z;M*#%{&AjrwfEk8Taqnn%d#cg+LE`O#M#c?3lhix!YYIWLKtC&Sqe0Sk+Sz_p@jl3 zEp4Hb7btX5-j=p+TS|2KpXXl5BXRow^(FX|*PVx6we_o~L7=b*9qRy$vvora#GJ-t z(F4zqi=LUs!EOAPn^*|AB$7_cNfaFtSWJRgcT#LIi%EgODC8L6X#DYb3pbI~lVSg| zdFF^^?!;SVp)F{tm|N`x)GoQGq#};=DEqQ^zViFaAP?tV{PDMM214I&wR*l~Y?vz% zkPFweXwos_M{#4ZSJ!38mw&EI?matb4xG71XbErM8g#a9I~%RBp8fv!j`r|1YF_&8 z@4N>)ZY%%-Jp>>S35`FjqJ{yWMupc7RstU#uHp<-n8c_s3xl6o7Q=)%>7@6e6BG;m zvJX2-g;?U$X=^aM#BV7}VdPLK74lis&-xKZpISY{vrGDxMl~$z!dh)j2NG#jDWz8Q zLRfCqv!fiXm6#}(r3yCa+78H6GT4JeNU+dp1t7>61Qd+fLOn2L;j_Nd z=BuP@e=w>6a_q!|W5nI{C0EyUVCvlo5vaN#zRt*J>B6ntmU!I9NpxuQ3GYx&*`??i zK&c*2IVCQM622}4P1k8Ko%hYb_gjOt%#z6y^>@6FWZGJRA00TUxkh!;e zq0Kw7#Ov}*EQ_dOYZu#mmO0DmCwhpyyYb$z&`~!a9nJR!OHKjvgx7Y`n(MV-(gJCEDV`rg0g+#@J#j>!a^!-7uCA(pSrP1++S9KVut16Y% zorG8o*qmDOOhN|QLLD5PnfPn93WI_#Q-43YSgBQ#u(4PcfLF&8NEh6P*w2cI>;CfU ztz9tR%#B_B^e1(AcdznVR!q3m_5~ARow?AhGwXYcw1wh@^VmX}-7y`|?4h3&XioUO zVJX!Fc12THkr|AIzh?+t)7`+^AiT5L)@O1TtQhX-1GxaE#*a~j4n;~AUYcgi;5bwk>8T}_!vN~;sghSmOn z98X4aV1*YyJv2U?;=`wPz^KY$;)(i|J8Rk&LAWa}(rE<*UuWR6v|zg4Sj@|br!|$R ztFK#?l4onQ>82$`ak5l@D6i;FcE@{&754)gAZrT&TGEx%$=id+cILjM-hNXplE>q0 z5s%E3jPh15LT$?Sm@cYIL=#rWoOv#nYu z&Vi$8NG0Q>54WeLhVi}Nc;L|JwY^iTeX+dOzjwa` z16WK)s*;FpYE{{bgaU7`L?;r+By8&1QDJc2HD|F6qK#kcckQa_{DN3EB?1W&0;AZ>M!J#J?U&BN6bk{{Nb3sTOW@F-!7Fz zu&?~T$}KFjSn)v_1|kA8_4Fj1?> z4JU3uyZifZshV1OEwMyEq&Emjupj|j7Z34*>2#2j>ej7Dx(0IUE@e+YN*65In6xU6 zbk*<6OPsByf;r?Q9xYr~00q*`H~vK{kw;?K`}LFz3h;iNEjkzhYd3Uv&(VQomEGc4 zusCIGSu)S=u#GK*=fnQ|6;eU_a|Jz5hu2%s9v%BN2>MuPoA^(x0zYFSL3?&|&cJ{q z*}h@zVrQcDl0zTWv_3(5S4;#`XYjg>@R;pEt~VNmi_)PCUtp(-$+Rm)0-PDsE zx49N9aJ$?K7eZfa)jW&8H=w92hJCg$l-t zfTncQ-kU%SoXgY=Y51BZTFbm&;;pD58Ii;#?TPvjUi(HUMv%f8$v9Oi7EBy*3?XlL zuq$AcP}ligBV}zsQyTt3%GmDaWw_1|^_QYZ%`#Yw0KH(SRzfOVHjd40VY^$TXLoWG zW^ISYq$CY~c_5$&!OEv|t6v@X@||1eELa7Y&G<@R;ryd-{pQQC#NDDysQkX82It72 z&14%IT|~X363XLAzKrYzzv6d)B?~Mav)W7p<8**H-dH)x%!cZL6F>)uX2*ZlK(L%x zS-%a5`}^O=sx3b`owM&lyHC7E4ppu>op0wt3WbHP7~Zk6(JIENBD@w1v`m$xh|y4% zu&}SPH>3g~YS|s0cnnq;&WKm=iXg{Azd%2wd^*fgEcI!+Yb|W8PLNrSIz@^I;G7goMN+W5L`8^}$F@*fRfSN-+JIo{Om5+&I@k94mjVj2>2$F9Vqb(2UC* zr@kP~B$u`L!m+4HsFJICa)4vaooh;jWZtgD`_cE|$v@(^u7`2qDse`lk~{$!gqD+LYt4rU zYyCr%7|`hSa|)!4XYUH~C1UDdS#vTd$N|JpE9Jh+Ygs-410f5ShPCEGmQEVD734he zrrRxm0k{A#GlgPwrP;k;4jlBnMR1?25OtbFaUs1Prw3-`6I0}A09vQT|7A*9Dt5_UT zMOMtU`dcohT?NiFD$qRl(-Q)CXB}i3tN-Khh+#qi#%ZN~I0!bKWX(uXQ1IU-5V@!u z5{RS%5(w~%<&zSKQF8T(BWQnrKlPWIB`8k!j}3N8G^w}@aR^~JW0hov=k_Of9RhxJZK++`PrJJSJ9qQ^k}VfyWx zs%T*2XSCv>cpe*zuS1T`=nY2E5Vc;5cq-!Z!Eb>F&Id7&7j>S&p9^ z#xY!ipBAUhV6wPTM8?s*RRyf`^LzMe6%VpNy@0K1^K<=SKR4K}++W~mUHZJIN1dP2Qeq<=41@H1+Pl0QCrIIPn`7z=vKN2l64SOU{AO`g4JX(^tg_^4KD` zs@;!5vcx%?eOB+9Z3u;xF__ttLq*65AE;3(;tcRFWDQ1 z4ABl-Bwr&lF!W+cqWz;gPk&+96NInDUfMCD}E|_v_1$ghMWJLA-#4~ z$Axs=yku7%&c*{p1=Hx4LC@RX*a-{6y4aIpvKNbfP*=jO(XjBNdR!hahEo5NyojkP zx^dD+94r>zrT%#xp6$O5v0kSRr(Z$jO+1B!eKYmt_j8{N3>>a$Jp52cLhA2ysk zT{J0zzOO)*B&KWE#bar^W6oT+(=~TqMpeB$(Be6t@KDzy5B1LW0(!3g0XQ}+6LmX0 zV^bEx4DJn54@MXYcRH~npB!zPUI|}7SZmbw%5Q76*U;}N?O&?ZMQIZ1_%4Y`dOR*Q zs@WYZwSl-4bZWOyR}y&0}ABJWi90OA^i5Ww9$8+P@qm4`)TNlp6BT)}0)}hYD;Mf%@eC(;Lr$QHA zB`Ca9xm0(eunynS0`d2{z)36{sDJj^fKX@Di-yHUqyA5C!z+jZ{=x(N#enNpc2EIz zE4+h9$!;4Sb-JA+V+l>}B7ckLoIe)OySc4jJoR4trcKM-o)w!m!s+8A5GO-edQb&h zUrZpC6M{F<@Gw~dXBIder0r)$l7uroh%0B*l(DRX3uTn6tDOU@%(~9P`TB_8i9T4Zu1tuu%9va$d?KU|@**6q8Qn*nr4wm#JzNo= ztd81n%5xCyef~f@7Y@m{`xtt?@?ix%jg64ox_YTYXPLh&rVg%k>2&}W2|!N$d8h@v z(`*n6s;&n0@7@2-4o`RSu?;pkP%!C*WfGZ);cTM3T!5HyH>w$Qa8~3Kgfnrm8mdM7 zHrbkXKi3zF`8ct(rWA6Pv#N+9TSf^02RdarNxE8pDX+>WGtt5)h(rBrebqR!q#cG# zdF8!m!H8~rYZqUm;&g3YU{pR_RY#+`UR^Bo*XnnExtZAb-pl>y*3PztHC3;&yx=E~ zsYKFX8yoV)bPwK{`$4OuB>=<1ZT=3Ibzsopwhs=qX|m^d{mzZVEqSdv4r<=8Af4^m zab|KwzZUleOrvW$4(bAn$KdvjFL@TRIb;uu$06@=S_X&R9_Q!~6rvXB2fYQBG+o>m zLkx3ilb;m#Rl~_N)BGlf0>C;5LDR*3XM-Y%>Kv)t=T+tv9+%~#+=H*ISn}MlJld3Z z=Hue3DB1&KFS^k%956r9SNip@ADkmgl{|bs=xl(jue|>EnKz~hD5Lk($(=hl1~h@q zyFhb_C6sVWJSl89R?&LC_TX7NLC<&MSSLuxu@bjGSSnSo*x>`nogdtNusS#+O)IEP z`7HPlK$!8exCa_2Wph`28(gkg%b_Igo$+OIPude)D-}37eAQU-`}_J9b^xR*>6EA? z_s3;c9VZ2l>K^o`8nq}v3#bk2=IkEgs})!s%c$xT+H+gyuoY_l==zM2cWPk-pVI^v zBtacRl25AX@f)|90mu-#FSvgd`2I&b_g=7PYa1Vig#0VFZa*tVzu<=_#XvAUGzbWD z9@qxchR`N2O=C3>+yoL!5Hmvy_&2APd@~#$JUu)ydI;S`O~kR%-`e)J72~FeVctr# zN+eELiuMdpHKl2VG;Hpl(*i_jS6^27W?y3&J&#^S&!dKBf7hTa{8jlEt=i6vF=FV> zo<}P4mxT=G+L#9ov+Vw{s!3?%=?Y~lb&RUn9k7F5+5*)g%pmv9c+b;13E0m+G+8_1 zoRmq+>0%!XP&ES@*~md>Gi`Jkk*dG;{=k6I)4p+;)n}d9aICd;)gp7)G=CL!VD^V0 z#w$V?4}G~)9ZP8P+Kv=@HVPn_zRS?vGjO_(%Y%>mFkL+`qx9M{@F0B>nmqIe#vuu( z2#q;aNRb=OSOIz{Jq)|c}V`jTQhmx2y;1${f2Ir5DGQo`xG{VGZq-g{-4v+R`t zG}tH7*;}+QD=TtJu*7emx6Lf2q_e*{^m-BPu#z029wQ@NN~<0eenkSK^~7gp3{P&-{v^qRjsNoEZJI8K(^YcHQ{*@Zx>2X2W)M3R1;SeB#5XQlS&~*;Z`RMcs zTO^eJ+DY;7BzRwVlW-jLzfdDAI~nuSYX3@yUYpI)wf#f% zrUH=m2HWnWj|1B`J>vrE&W%%H&DQ5*O6HlC-f&9?2}haQQ2eOIwG_@<4trsip50?$ z>-xnSj?r%7%A`Ep@Ds3 z>SJoFPNFMgApvq^ffK4^Qh&PF&Nv<%aY=ey3@<0@zySuMj7pk0(MI5BWg4?=?PO$` z`E2+W1FCod5wE{-I2Ib$c1R-WSd}gJ7B&p9^lONY5KSI@ze_L;ErMaO!xXy zyT-?l@jOIFg}SWOGH8oy;xXcrkz)_sd(%Y`sZ9{vedxBk@A_oddq<;Ol}3<${5O}N z?ir7jQ+pTM47R0kld&x`y*)0V_zYirjF|_={0{IxI5pMIE`E<~xM9F;1m<8htRKOV z%xcc)nqm<>S1$ji3foYWVo_KwG4Qxj5<@p`1#oCMu!|$0=KH*SRjXVi=OJz+deOma z@<7+l9o)B*+JT;-O4NxNHr>cv2?w5ncYiNr zu+Z;-_Euj;R**sl`*vRBPWiI#q??6<+f`^2b@&ngCAW{VVH?GqJ1%bNPae9XAGFbu z=bX9n1(_(KOmrGy&mZV{i9dQ-C6dK)_nW}ze$b1~2+LZ-+JrXJUh+6bM_nyY26t;h z6C;*@p>G_u^?o<=s&XYmw2S=uF}xoNQ-w4s7It=$Y_?iIXDTUGZu(jPcN|QnuD7?TWSBp^zT3*L z$n!fE@YHh7;$0;rH8TDEz1S|dXxUL-3vomBUy}Lv9ZGUwG&pkEZ4;!tb@{kmV;P-vyj*Y~e=?{ui9r*vT6CI^PbMHmi9?vewn}?=hXWW9 zUf@K`>eGphFyoGKk|W4Sed4J}TL!wYZdHFpgETe7V(~d_Iak8tvS77{O+u0+PbD-; z1vZ|{DiZPQ&(3Pql{a0Lvr45$LL1gE^YS!mcKeQ9$>UVNTEikp4#zAnh9E&PcD0LK zVlIa-5PD;z@-%kN2ORQQaN<>PK6o86uA^3g3qR+K3-O^$<2K-@oHl#gfEs|ZJozg+ zk%dbESOlEn>B%8YG@^;8HA^+p+6M)W0u~QgHOf5Dhxx9oSS;g;!2M7PSb(=Of+d}X z_TN|ZY}}j2`##qkJ5fqLu>%hcobwR%ERm>xKU~!T!~x6^Er7f<`l)FTKy!;`j;PU% z0PS{3^U_qc{z?vjjcly&m#{6@p@_*-y~HnJ%J<^i=K$jYZ+nq>fbziNi3V;ucekcz z_gcK3fE~ZRMKiE(YYXVMvXc+2R~-JNh6#$f_iigt(FavRX?r_Bbwnno2Z-Z{(>6E) zz{bdMT+_4H?|1K5*edb*RbgeY1?mGgaQMDM+NJ?Q1z2RY753`@GyL>zvF3rDj0EE# zN>}dF_e0EhZ8RqZ`z^9LVLB5yLgA{`E5NFaAbrHJN8t2m>==WXy&*>>s|+i%B^1wi zYmIY!Ij`*P$i(s|VD|TapTWB{(Q6gN5=uoPqe|XoM?#)0Arwj2uvUVkKB)?PrLA+Y zh;jd_ZpWHx@Y)gROz;OUM`sUfhSsDoo|IZQtW&&p3;-iIP2ewg;nVc|piK&ZQAE`i z@WQzcIXrN#0d?;lpWn5WIFbXlzLqz4Q>PeGRzyfW5*7&a@}nz8#2stqmR^An$wEya4JNX(<|F8mm6Ilbq?3e$%ho=XaV2Ub6= z;_-^r@R^vBih&+{=zJzm zkxUe+J=A)TY&c4;5lJ{(FR#cXB7z`*PXzCWE9kj!t+4x?wPRLz?_7Ol!D_(r0U@4b z+i3%<>?U0nx0GBEl3${SDzNv)FgDXkrt1vQPMB&X(4iS42s0m)2|~m!)JDC7lGN+b zYPC>R#e2Ohm73@546#97$Uyz5QdtaiPld1x7^06Rg$gMNy$1#QN%58f`tQ1xyjePQ zWM2%%mN=o^S1v657Jp#AXT^j^)V=w4%1B#0 za28vx;BC67TRm*OViU%K&b-@gh%OEv@|KRRr7i^-t+VuR7B`%MBRcM z)cfcw>avkr_MhDfo`Tb|{@lx}`*t1o1JcirzPi6r9Xu2Aj?~z2b%m zcxU`|yry>Z+md17l>LVS9Cv%WiyKL*6Cqb0RE5f(8fxqI4R*_lvabI6TX`6E1g3M$ zwH=1LuQ*l&+)|&Bx3qYW2ai*rQHeNY+J4JItdTHw%?529hHTGSZ};2Qo`W80eQqBf zjXd~r>;j3TRloLz364U|TYU9$)rT)l@=Sp*4Oixm?NWb8lhA})15W$c9GBNQZ%(VG zbH2BU+BTrqvfn`tfM}QDpMI#m$|3&(@S3V zLjoj-{^U9*A-(*mGi`Ws(zNpHyC9X&!v$k9TfB{j*_Dk4qvu0HLHkFHo?@{H8iPx6 zHHyYb5?*}TO=y^=BS3n9i|$Ej3gFaZu=OPCB$gu^^#S6EM1IA>%f?}abLZNTl;~DP z@47yoQo$M8kW*3*VMRuhKe%W>+om2^5Xp;dPNy^@v)e5P#A3gscFrIUze8shh1BwV zehlgpd04LE-x-qW$q1<-zUb{GMQ>3r{JsKf#oKQ9-scAf4pV>oQ8)fyRX#w5J54$2 z$L+S^5qrWhIz}w#_CI+1&Tez(Eys@TN4yuP&z`~y+E~$}CmyDGEZpGAr4F@qe0fpg zTWVD~mN%;KlQjvLxDO|TnJE~w!B{l@nl*h-34QPyJ0b%YU zMQU*tbI0N`vzFb#28j8~67^|`dZk3z>lE>ax`%F2KeqKU9RY;yFid{HF=FFvCStjRjO3J^w%mJU=Tj!Q{(`x zporJF;eDET0GBpA`pBly>yn_H2%m~g+Y|%$;3O1Vn1=b_&HNTUh+d{H#oGx*3S~L~ zd8Du1Y0Tu`D@%7$f?d4^x*^DofIcC+2tY#k_}7VuPBUW~+4QI|b?) zn2&qQK(A!;&{~MrQhR+Td8=&4o8Qa|%og78iJR~n;Cd#OdZf-pOCl2JbnWh z(0`nM15I(iN!w^jT4B4O!HwoKVK|`CWFgMNN_xK|*!|Si)z=3G?f{jyzAsLb5MEgO zE>%HiQU}QELAv#CRdPOU8MBOyFa#UCYk_I<;Cv8Qvp}Stky+3Vvq>3iex{QP2mIOb z8(@}r!=gD{2Jl0j5it~2gvcjjYeIgWClYmYVkvbcYG=}k0*Z74?FjY&15pO340&MR z7ly%no7cPfR5J8T0(P#z8A^5{HYi~CGs zDF03B9rM*!=cqq6(gsF8gRy>QG5f6650RAKH`aU?xEOi}+eDK#^3532tJIpWLVq2g zzES((z`$QHRW5@bqxw%W`c@6*YZ`SuCF=Lo6114Qlf0?^JCv!`zru7DY!g$GkCSx* z&c*S67yoF|a%S}xHLP|=5AESd<3W!MK**-3*{#A*A+n{%N<_zrPl>ncQF6}dYyvlW zA0;21^cKx=?9-eVd{!92MtBSxYMO7A%gZMd_(v1aljd{+>7j(_5Z9p;^%{I#h~A*$ za8etIA5SIdIy3Anus{R1{y+)6`}*rh`0A_W`W=lF37-;PdC`=r%F&z-xb}4WYihS6 zb_rmDGyDXwaN$pB5i0s(og9F6!~8)fUT?8=k+JMvb!I}K<0rRFP(MYVQflTbA+?(u;kt-_#n0M=mst3=o}0?-S?d&gq@E4i zsXL2B>YpYT5ai^z{mS8^=L%O*>&Y8vf6*j)^r_wB7K3#mJahP~SIH;IW@W-);y4b^ zyp>RhObrB`dMlZX2)`X5GSP1bTM@GL=>mLuv_mgwj5I{scrEdS4`vs&iz9BJy~ow1 zVN}RjI$DKQp+8YSk{8-r^f`Tty+E|qe*|Aw5--$qsIyl4{JUzAB9-EZ_(Y**0&dr5 zZLri{8-t#S+2ol&&uIlla!S{-c%I#58<~&#F1+xC3ogjRc=dhMIZ)i-{s>M1v0KE& zShUgL!u0Y+mWE}Rz^#Bc#4!n9jngbNJ@x&SlbhXsl|(`a9TK+2WA*h$oGR*vxRQBv+AE&q?~pwyt<55 zM?8%|TvWnJfJcfbviVT{@f9zP#g&2imxN1l?6Pnv`KwIbwu47h&oNhvdwF)mJ{mSc1O^%1`X}o*G+wi zJ`PxhMjR2>*hripSws&BOUnP(nNvXd1M~OPVyAMllQJ%`BxKfH6yn z#r1FOM6Xa*c~#!kf~iFQ3{puN}?8w%_&vF)Vj{I%Q6W#GRtHj!!G7`re}ed9;V|2o!+0 zih%e1HkrRw9ae>cVW(|q*y(YMjD)p4=lKJ!?L=GdHC@l%Ex0h_dRASx-y zXkpw^)7k>{bJ&UN=VF_qh+*HZB8q37m5e+uOPA`eL&BHN#!Ki$xhN_NhSWlb7;nBI zmQc5MfAW6!UpvvWlJwb|Lwwji<6pV1e%-Z7K*z%zA(zMkmgMt1-!264s<^`E@w?2G zvej#;^u@KAZLXko4Y7x`TXPv5^hz}yo!Uk=!A$gU=_S8Rm78RW44lC>K>}u?3Qhqo zSF^I1kvhQj+DioMKaS8#Rc`Clhke3sp*M76t+v0Q$+s#D`bJ|V-TE7(swrvV($``6)Z^(p^B6FKlh~A;JPxtr#825u= z!*Bg&I=lTDMMuBK~QnrWPz~o%hjKXD# zo;i~Zz|<+}2;J;yF#3V&9*NL}O3x(cn)+MFmQO1pvUCobACvU!7xSt@SGJ?r`{9RZ z)t6s>SP^T~#VB+qTRLIs5cSWp+Q|jn!P|%Vce>P(F2Z8x)}cdP1@4SQ@vYVz;tL z>E$n;=aRStrftV|fJ?D~kzpu91|4gxH&lTZ0lmRsT7wo6>eC)`(_^59CptCs!sXdl z=Bj~H1OTz!tzchO)Vg4*A`B`6d{X3*0`0wx;|@b!(jHf%OggZ6X9r8lO>S8MsN%0F zGgdUGsB(Eu8jsas^4;A@sR^JF4v@z6)Ki@YuRYKK;*@0a;(eE-c+^UxT${_ojI=tNebHkCz3s9%?_*#UR%7kppCxZ6Qn0mCOfcqY{f=fMz@@OI1QrJJ16 zZ%_&uObph2G(0BuCit$=SvQ@UPES7I1TIG}!A$*eAQd{c9=d0oqZW=F*|)|_z0vX6 zH~0z}=ia~c76@bglMvqDi40J5RKb~aA(2`N6AaK)kePK{D6dSUCYNJr7F@BmtOm-B zJiB;zpXa>$?6@u8^7K_yxNv^~^4SZ>g>(YqUpe8@+7?VibmpF{#-anlAx^{Zr)xgO zD`G)lEG&t2QUQL6!w)%hw3*M}0HisXNdo?n<7hSqu|g3|p2sQ5~9fOL@d5Uz*kE}EgHn*C@fqVhs)=(UM&>vEy&sy_hVtX z%AA0hy0=nU2;(U*A)^)EACekXtO!e`M}NJnNPS)iZ`|DQa1R9H*BI<3BdXFqW7 zjM-X&^?|H3P(O;#XKcp1#h%yWX~t9TEVpFl3|litQEG`Z=vZ^cH!GF#6h_*xZ@wp{ z@$(XV?;EY4(xz+I)aI#c3MVqGE06PC|WHq)A`6GpKfqPb{V0V+mlv5fA1{zAy(?E%(^nE7uV8 z+n-HdMF4xWai^jRAVU6BQ&RQ+!gOdJ$H{ox zhyM7sO-t;p)$)KwP<6Cbnvoy>5o~pa*ptU_FQ{jzw!@&~y@vTzxd}#;gbE zRIWW%FD9Sdj_m?i504Sq`nN;$U`Ho30JVIE^?*m)V5FCp0az8W=4pmQ4jFNVEXzsL zmHN|pH8cR@1;Q1^st<;gJ`oMR4h)D(?i!QJp+}35%qt-Yk!bMd^LA^pXD)N$s1rFH zQupuM?8B^w#Qp2#hksq=Dpc&;Pj1gqvE#~SyD-y(2@v0JlX?THuqxoUIYFA#;k6G9 zB_VfiX>o6-akS&~boz8=5#FQ6+`ZXme&lwT-kG)!YZ}t3#S~-6`LZPOSWT$l*z8=f z2#@^e`Gmsd;K05_w%aFt3oU`o9e<_7zn)nXHm5K?=qEMdiGGl%;l10+>XJ$)p(O-H=k}cv$Ib0FR1)?b8n?#^0M{pH!b-2*6z|EGB`&br{;JReG=kA5{Y!0dWwR&^ZMvr2lkUwaw(4S;A{!MB2#N zDs2D~KCy*1uX5OJD>v`{^Pj(m7s*w?hx2@Sp^#7g^n2fXSRxJ@c8+1**1%>BI+O`) zY>SzTxu=vJ{fpwjr{l&KR#Hl;eOgd^Af$G3A{;x(>l8Vly`u2B&npz_S6bb$m{{hQ z5r`*5&lU+i#2j9~0Lz6zSQ<}H;1={KOf@c}w}D~I4N@C`m+-If&A_4~0JBb3hGdd~{^1WA z{N!ZQtxu-$GqV7uJRv4({)-mz&Ek2x*A6C*?#8lT{d*P`|3$rxOwcxMIsDWLj!sax z?Ciyc`(f$ni^xysN>|@A&IVt0WZzmdwK-wRB;_etJR?ci@|`e}n$A=EXERE&D5)Ik z6q$LEi>cS8V|Vw!QZcq?(F)X`&62uxw{Ee47P+c-;nrU2#-1KhyZF$?npWZxD)P(r z4*tU<^9K}u(E6vY_o_l+H86;x#96Z&C~bnz(M$#0%^a8eoVxnX-bqm1GL z+@Hhh@nvzivwnMC?C={4#-Q^$Vt;*SJ6@0ix=?@VDI9-p0U_q}Tz1hGipbl>mxoyj zCAa*wFzf>TuLl`Y6-<-T=!WmRt+GI?Dyj;#i43msF}v9|cYZ+c85^{?P1Rxa_5AgD zK%thPzs5BVJx}BSUbsdl)ns?UB6EO{;z!m4u92nl(BtF-V2uo}fqM@a{qAQdvvNBu zLI7c7dgNoe5GEWC#9qu;nknX{p(zrxI6%0uuOKV+;V*yb&gY#cPNe$Oon;@!$1+P) zz+jq#4h$eRO_J~!bfbQvNs1Ib1-#Kriyuig6?YO}%G$5G{QUT2yI5V+gvQrq(f)z?3VnzLSFxHu9adaoDK1Duc!HPhhD?{OzVW~b^B8A-C^*8K`abuU? zczAK)tgz5*ktEg8!y&21Bge}b(WcVvw;xQvFu<*d9$SN{hf~T4TyQV`bueDo*S!ocMrjve-}gusEXPl`(j63GSde8WRS%IgdNV_#@(69wGy7 z(qQmi+lUnmeF@_1q)`v8cOU8%OC4aL$PJ3nS zp9z3Jm}YY0Ju+AEq(lteS2M>2p-eU^Hkm}ExJAm=C!@S*J|E#_at3rqN9xecz;)*o zuf3Q$fzntv^K!N20gG?R`gPK&fU{JINewWmEp=o6oiR~V0 z3)Kf)rAv`IyRH{RFED4J*@K*Vb`kWZ?j|1tS4_gyYy;)YL7=!Vg_7q|;1yqY#;uH< z&Q|ik_HJDB0A4U{TnRLdPa%|I_e_6Zvylr2HS71y{5IwsCutr`GJ$S^1r#Ib)&X1x zDbx~)U8^d2kyzj@N`c!UkV`rLGr-a(R*!HDqS}Hs74=uVX#USRAg4-&LY+(!)WLj| z&czdm*gTPdb$Om;u2$JbQLab(JN&Jm(cmP-_cwA6mx+PB-s{I@T z?1og;-vL%(3<>1ogh(zt7SgylQBtWVeo-ihq@1BO9a4!90V`Y%g*yyTarogSwVmS! zHVhcWFzb_Bw3|v43L4(3b9-q5GJ*sI9*D)^r*|w}xAlnwA(4sSa_%?S`Mid^>bzbt z=%OMdb&K(MBERFTiPh&nbFp7!<9W`6wGi-Xf5i1JTkKTW#+QT@!8HyIMtcOnfqjD3 zP--gfV60~VUhb(H0y9kewf2CJlOl1-! z6a9khB2Sr)5Q-R*$AI#PT&Z0m%DlbF_@?6wMy=FN-4Jd3bx?44&|8Y>dxOIh6o zz0B|ZiANa@Yy6sM)Z}!`8FTuabLOF2t=7Jp)oJM;pq|zC0IurZMLc@Fw_vA^8m)jw zN!$ReO3=t)VClp{9}h}e=kVCDOK!++b_$Gq>uNfgxtHEFg2kjUx3d7^0l2rj5$+DI zzoKa@XxCJ|8jp6FEC_3Unz){a)TI{NeKc2%yA>JIGaQbpH?2uVp9@Plwyi<`QuENdID zu$5|FexyZ0JvJ?nJQPw|*-^HM>^kweMWO3T3FWNb0f#EuMl4s``zl5qR`~xoq)sH% zNlmJwPu1h-viFz>p3yy6HR;U*L-$d!^2KMb#7D<*E?U2%3;nF&ikJXYQh3HK8lXe) z&u{{^gy(@Vq22?SbedMV!37E(EAb&T;OJS3{pLAN_Q0py5*2(ifBPPWNLSO3&^a$28-TV|WR=-EMq->>Xe`kd6ueQZr+aUa(t zE{+A1)HloJ!2|&m@D8y;baz6ilmP`?qCjs{VCCm3BXzYJ5P=>T3S?DB?aF|McvtJ0 zKi8pi%w3Sz1((i)lz-6#b_YSKhOZGEd`6gd>{d7yPGqG3P-@lsJnpsl zptbr&gEWE{T`^if!(egivFQ8^Lf5R+5oXBN<7pOc&0Y&#-GOVyp&JKy+8UV~P1hmx zc+(V?kZ6oIfz6%-CZuZG>C#D9kCl;5a&zInFHf2~BhpSuIK2Y|Clwuv+Id;5phPRj zy_i?@c4ia#iuk|#F6{+yhqk+5kOzF9`xK$DCa8&o(MqRf*ygp3 zQTy#cPj|VTqhm=;>9U~TdoHoQFrHUauPa4%kFwXC)}WW3^v#<)U=dmQy54HV_9V66 z#s=RG&S z8y7|n(^p*4RiSnpq>4xcTy$5#qzL&*v%Cr{dW;-q9;5#2XY^hMi9?JKn@4C#3oHQC z@sw!8r-IXX=I|95=T2>9nawXa+8nKES}0K9P_@*9B8w zHxnVi$}u74M$}II0KP7V8n>&7utUY8!9vekQ%{%HtnJR|vl!+PEQ7q%e9fb-l(&&As{b{ySW|6tmSnoO&S z$4ftZEN{y04#LhY-*%ndHc+#=0gm0Z;^_Gfo>nhxIq>ury?paCSGDm$^V)aG{e*DF zyO>HY1+=gmZWl}upK5eyT#JL_|G%qZH&DFkE{ZmANV{h=cPGD59;G2)6s6_cpxH}f z+*l2e@j(#}Cz{lhZUrMIBv@p*1mR|vT$=kHCaI4c&>$kgY{rxF*@jQ3H zzLl^ji{~tLauiawb$ko$dmo%++&ZD8V^-+l#czv2L5qRW;qtSgkJB7}n{4CIwF-z3 zb8wwIwVZ6SNXO|JeNHpH>*Qq|Csx;wXb4OFBXnCILGTqIt^%zZC{ch~S_ByoE)2+X zsUP-<9WtN~s*zYzUKqxxcx-8({#g{Feki~k@WnN0VaGU3B=N^Kc2SqkxT#t%FUnRK zi8pf8N4-NjUf+t8L?VFFfWR#nlH~H+7nF7<&JBu9l|HmDzH&$l0v3GJqHSIG_WmqK zJj|PO>=qb=RgPhcfE^jdQG|ust2stFn!ViV>h@go`XpOV{m>=@Pc+rjd<1s z(s5{-J$yA&u*oZn^9%@PD@o^xUnPmh>wPP+04=({ukX_yb6ivqM$z-bx|Fs@YPV2( zYZ@S%!@Y*hp+GhV0s)A8dc*iyr!>WwgC?7I7Jz%?t^l=9(m~Iz^>%=69`Ri7^4>K$ zAW=Vo-ZdLbMyIKo(Yq=Jts)$*AAL?Ol(w}CB&;r)c>YOH)*8aIYwcNwrPk*FgB!?d z@)x!E-DlH>^9+<$O*sp^ZnT+)!PNhM?%41Vy5UH%nXw@rG=B}dC_&pE59?tOwn-Vv z=7jQK7&BF(ic}7@XJA%Y){EI}&%>;8Diei@3AhA5A&%C^N67vYkD>G6x6c#5sJlnW z^G{sz%b8 z$zD{(o2$^8GHi~J!8EH{(d~dXt22$KS@~iC>)kS2ADv$W9H4tBsQO*hzw7cmN5${` z+V-A^e-8-Fs`&ZKw)e){58O7yR`CaJzU0M{qxk#pf_X(ESQ-RFH32LQA`iBz6RP&M ztiv`m;sQOoQJ~LV>~C@JB-Z6}&|BSe{h(Az_g1A|JfO@Kmaf_%u3flc)GV^`^_9ij z);slnn+T?z1ZK~AC!qTxfr$?!?yW9s#3vS7`65^nmu1(#U^Pks2 zyh1E<>h=9TBoG9ua=cXqWS2+^^zso(nkTw=W>Kzs92N8~CO2B`5>8RGZg5r0XexmxS^vO%R|0Lt7EI*8F-nX6Zuvshw&(Q1W=SO5KEqC;q!;p1)@ZFKa&Y zYU=Q`hnxba?@WmbXi52BC1}}xMBG}bi!XTpu>v2IW)~piLk(|!GPwI*2fO|ujmAIN zpjP8mbBulro&%Z-s1Q?RPu?l+tw)l9!==@FrPef zd?8ma7=Q5EFKR+paySJtCER#l*s`|0^TPADcw_F3=Us%Ho#s?45G(!3gB6L>CGV0s zEJq?2UsEO4zBxp}RN6GUa#LdScmcg<$?jO@5IF?ah3ntv58r>!p%hOpXU8r-at9K& zYSKO3rns>um#zOy=UohokznTfAz5_mTCdEvVcQpMk%WsEd7hTJk2Pu@Zg9dB4Ymuj z^n^YvT%$qoqSFB=y=I&O^P=JHtKjhPH<1vV>2GDl<#4tP$kX^4^Cvc>%{F(;>xLy>-0t~Fi}0!>ORQBzCs_obNcSN(!QIsgx(`|6}ODQX|M;kmONapyRwCz3mo2BaETEp1f`U1nqIk2RR0ik z;Ti3F97kvk==K0m$)jE_D4>pn@n~C2kuD&hiDH2Z2@qwz0|FN?DW4~P(L0d;hJ5ak zI2PDxzmmF3)9dVVStbAsVwRcYC#QO zBRm$@dN>^{rGdD5m{jiQjY97xjLjo&l#Uuq|)#L^u!?2FwERFzm%5o_5- zhnXvp@DM=Iq|)o;LSvQV3CML3?`TC6SCvLD?jdDHZBA>FBVYu2jI0t%?>_M-JcYUX zxA2dnQ26gsiTYvg@d?)ahf2hP`rAgCCX?nXScO5msy#@2+N$g7HpWanJ=C9tnTyZy zYy4;K%_)+5ceX1+yY`|L#VdLa^`IB(7lRJ<bFP_ zU!C31$?5+BKzSYuArKoeW#xTc$d zvU_Q#g55F(;AY2HUPDj8ob6`nItQS|t=li`;V$@AiO@vN<*FrUsT6-^Sh#nD5A*$V zE?HvUi+gs|A7+bJq?;<0QETbMCkiPZCd;XOGIV7ttX5YB6!GMeiF?j-V)kCk{wFqm zT0pjw3bUp(G@k}lUL?&lARq@ikAtR8%)=qP2?#Xr1b!-7bev9;|8rR2eHsjaol>a7 z=Nc~S1KP^aJLsF#{KtApb^Dw=ODz~4w%i5zwg8GUS_lY00hj;=seEPvczRKmfTFB} z0R@0f&lF|9qV}QPJrws-*pM1lwW?x?3({9swv2Qr1!lgcd=|ChNvx9;5lC6kCxyiM zHvw6&9SXB>sLNpimLMoW4`wv^3xOrb3>qGX{hkAKB+@jXHas6op0d>9*Y z!9fJ+orrWe##VtH0@J?p!lP@LJvQJl;vg`BsW;5CGtQ*xWPs%fVki62|5Br6^l?e5 zf=v?ym&b8ufagd3;wL}3;||!|OkE4P3up)^F^@$2KvZN2Lu~K)ZRy0X$n_`w zYJ-h7Y$Pxm1wbPaqHj~*O}>$$t|oqmZGMtP5>r^qJ;2M(S7>BT_u|!*tHKTWPdP$Z3tS)O;SlTOY?<80yBrD#nntx?0mNWA1 zskMz4)m)X9uOC^R0CLJ95F zGPw@z+N7l`B27!%JCVB!??wR_rBpwfQ)a{2Phq;`abBo>{vH^A z^|!ErAD8OX$O7Kip~W202DH(b(_`uDv-@rRgK1rQmp|y-itZd8JvcgwbR#2Ol$q$3 zT01pzU2~bi4nC5T96Yrf{<{N6R zm0RON(5K$K z#2$Ierk!sVsU0P9(~RJhQ@1Pw4dbpJ8e}+5W3OUhn1*Qv{Tv8P>(1B&T0gk&HQAP( z(co(2_KgG&61b+SJ{UXG9HA=*8u0;(*EUiho34fflObaPFjj&h6Y z#i|h0qD*===6Ul$8V9zz**PYM33%SJt3Lkt!G3A73g*sQ-fxru*P~~2 zMF;hnQXo&_;dwGwG0FmNQkBmqmJjH;AVJi6{g_Hsyrhi_I{htsvP%ELQLDl}Z_$7S zW~brfRr*FqzL3)m;>s-aIh^}%ctJ>}F*eb!cF!>ztmANveDt7bQ>;=-ch8v(@@I_U z%h0?Kv?KXXiz;ktzb0(;58&%&;#>70)LyIIMuTkWm`DvtBUcX{77akLkTlXDTM-vW zN+^zsD3Nhj@p=fDF@LdFQRqm=3L|9k#Ixv*IdiTU8|$Qwfza+Jo9+TQGSG_Q$aGex z@OxehN&{``usYNla+*sOyT@9qrgfP;o_702VqKngsV_}3Cz)Ni1qkzt!PqwA+rxCS z0Zp9(q8nz$^iiAc@)RVp8BhppWlVkF?7_h@cY4S;N}ON61W6!J{26j*UOR3yHAd}e zMA`#bBbGmzK5Cz3jv-yHKVOjdWU>I-9_+L&-IM~>d}8Cm!7T zHxU6QF0XPiOwE>whfBY#Khb%ILMXvoF=)sZC@tTa9JdcT%#}Wy2O!&o`v2qXI{>7r z&iy%ec6#r<_nDn7Q+Il=yRb`JV0Y1vWnJx#xW6E5A}a+u^rtA|%T4;jIp#m1kbPCzam4 z%EYsZ>{~A=ehcupo7^otZW)oit=85gtw%gZ-m*}}R=lufs8R|R6t|{v@&E|}UQ`T= z!+rlrpRrjEB9xPVt5iM!pyCl?q5gM0GU_$Zz&7LMu?yx-G3lY9g7kQ@1mi#J2QET7hZ`jGl-g zal;to2I9$HfnLX_$X(iSH>W3;>)}9^e@VBwnpgEG^WdzKHS~20OM*bGd1pbJ@64Nm z9v`uxc@wdzd3}&L+C0@jv4H_p?w2Z+Mc6NFZNLsksCf~ww0ZB9j@X`UF1z!LbI@*? zxZ63lri-QKc$du8-gl`&02de7BjS6@=f24=@pvS?5}!|EFqDgWi@sEi8$vrh9u530 z*7jC|$Pp!P1q|>-fSSJFVB&BX)L0&Fco@w0&GU0iHd(jSX}+?@oN^{sFnplspH68gTYAGlwH2C`2AXUnA2R^h0u2 z-Gm+lG&lZyVL+l()uWKoxbu*fHrLM1+#!B{VSH+e#QDwhk-lEP@ww;hrBXS5>mqjlb!ilBS(dT{fMcR8OYJ6>8L(hLVtPB$ zwKqnHS>esirBe>p6Wv;@`=B=bv2=Y2WLgdo&t+aG*K>GQDTsj!(T~Vm6?~D;#|0^f zq*~&0B1NwyrQ#cS>dc;Lr)|>1fEIeWn@VQzm_ZJiF0JrioJ?q_+#Hq%PYkH{3J(nz z`9!d#-}gj68Gax4q_z{WI=QsciGE5tb7&QL;&?JC_KAB^Hs~(f(%l;&eY3#6vn0C2 zq=Puy?3pZZ{X;cZjFRDFVnLPeCyh?6R6gDzL|Y= zxOH%4h1DsUlr|;CsnLkx3SDAOt*q!^K;v@oqtbT?yx&$-zy(Wd%YSBrqpyLy+HG}o zQNKh%^UNI?;F-TvuU}qM*PU40*quk#q(1Byk$7@Q>UqJBq zlgSDyxnd9WPyoZvD3JFcvoyKgjor8GYxQPhF>kO#^Nu`T+FT@F|GZOx;o>JL+#^2P z3ThRwI7Q16Jl{Ip(0ynP%>T255AwXJXc%gXOl*bLFzFA-PhO6mBa5T`T;JHj4vCCA zFyHn_Lm-3vRReHHipU2E9(Z>dEe4j$Bf0YZ_n#OPN6Id&Ht4DMNn{_F^uv7|lOQxm zelX=!e6?Ez4u2r>#ChbABKewV;pJPMSZ&rcws(m95a)3*HjJnWHG>rLI8m_}-#n~m z18~s3^30@C(>T%%uu%Vb$EO{Tex++EXg-a>_OSt)hH4E93Dslj>{%|qbu+pk%~xBq5e4AHSlWKBQyz+_eJU6%oaY%VX+gW0qsq_o zb5Mba)1y+$)I(}LD4w83q0Jx-Ew-MCx=KCZv}BIg8(awgE)>- z@)o+m4JCmIgHQ3VVHknksc~DCR>}kcc+kPb&BUmTj$sqv^;Qg9Ol)l)*P%7!Z9mIo zKIt(f#9?9lXa&LJbZW&S2G7E0DjgPQ(r=V;$zP;}o!x8`-|Ob1H;TbWFTi}>3+`*4 zQz|VABA!atD^>FD>Jb1=IE;ic;%ND2g&&iPiEkJU6}ZCdm8;25e{j>n$`Hs@l?JWF zefPco?rRU`FF6$F>Di&(d*gQtPm#Y|!3OZjVx&NyQd_oj-EzAM8uba0wO-Q7bd`R% z@36c5%Z$lsKV71afFbW$xTstIALrPpwUBh{A{w16Vny_DjJgKs-3ySU7O{Xr$H5gr zOBV;z;I@a+5R@4)=(T&o5ilc8z^1YR^DQDxRZv$32Ky3_o@q3Hm(q6ga@;^4NEpX6 z(b9UxuG5#JV~s{2Wf>jc7GcR`-0D^PU-ulix(+I>?Aq~zok&)!oqYKlD-fSG_R`ZQ zgbiI%8xz~iKY9|T_|!Ot(roW^|0IBmlpqu-F1s1z30=0qL4vC{*7QbQgDk7@V8*@+ z-C0HqP&y}co%3tZ*o0A!s=mB8xU8(e4PVXt4RMr@NOdwGhB){g0;zg~);*|KLo*Z> zADg4TOtEsaBUYAyp|M^%Ak&K#1ia%?bkWv#B6M zrr^f=^$0y&FDdf8is4NPUlcv)upNq!q5Q< zC#=&{YeLt!0P68&;;npVNdY3d{EXBhI3GYRZqi{g!Ds+*@c3TCji-mS0^(BVqTwMM zaI2Z_k(K_R_KCG}7N#Z2HO&)GLSMNzNJ%#pabx+Nu*l<=rxXEy#cr%MEFMc^piiCI z>+;#QQYF&EQ*Jx!9896@1u$L-mq;{Xr(Gq&ObQM>y^Gt@jyUO=k=W2(J7N`7k)L1< zcu*nizV-FJxP5%q*RCc>@6ji>a)8;t=75nv)c))^oKd^UT6D@c z9$#tl_r25=oW1xmd{vH|2j}Y%N1eU z;34O;)EzS&mJF7v3)}fG&VE}dAzng!>rk+fDUF+xjm9#{S{{RwPllx6q!I2~c(@DS$Foy20Lw&C<5YkI7}k7nd%*Vt6<~-bHP0 z+9a_}Ql!~`Jyd^vN=F@sYkVK#d48KGK5MxG-M5?3ZyVqX;6c}un+V)Ky$wJv?+_O> z&%2~1OS^E&*Ly3O0{Mfxd}uzj&+R%-}Ici3^djk_86NhaeYm8b_p!3a%t0!2US)y&+T zV;I~yAAOq)h7Qt!X7Ge}u}K(kyb+gf1sPTrBm8OeP^i=#j8=@h~^m zsK?mpvhmlY(u>${8D9kd!h*0|sW2sw@}3TXLK6!MjS;`vyEpeqgIo#zTT+1eW16Bt z5$-`3|KgwI?+eFTIy~Mrs{lhkvLXgLx>+?AkEV9yRG}F$*ec=94Q;9fPdT;AKQZ8B zV41Lq;+hJ<_BP#W)))F4Q~|+f`m+lPUhm3&wlTV_1l+;YV7KOhI$r_xu@*KS3jy>U zR}?mu(Pm^hy<$=}>)TDOU3+5vdX!tcHrxEUAiZ(8q!HSAioV*C>ZfwPJe|Q3s?|Z0 z%;#iuP20-T12L_2!l#N%Ol81Ec@2_v4i z59Y+Krr$Tdn5fPKRY9O98!U-b%B_MBy7ljVF&>%!4Wk_r>x#1-3n_*FVhUY046avi!L?x zja79NRw%phG4a9gmD%9Ym3{%KdS&5wTo=_R6Jc^?2CxzV(RxV9SyxVkO}YqDg6t7qBiekD7S{oo3_T=oS2?lir6g{3QujgIrxLy$H@s$C?yx#* z`}^-iE66)gQ6cU1Z0up{xVm_+90;X zXeWD=VAH_11NZq`yK}h?k7qtOt+J(^U5c~F-^1jQ!w>_k0{10!E zXY&<~MJB)^QO`cv!N3+@N$B7$p=`GC1OXytTjU%>2xvdb4)xUj-Lw!xwX)z4Wu{Y8 zX1PjWEqHJJ%L2@97h!My{7?NIa&P~hrEI-$(T<`+Y^{nkEQ7-g&YWy)LeB31)*;*O zv#~v$lFRy)+2I6BuH?q%_x(^R2!lnGoNpD%>_$%WcT=}cP-gB3F^$9@b5GuTFBl&n z^@1CZ?pwho3oeFwOBgVwYJ$`c1no?c;?T3A?GS{@6^jl&dX=ZxBru9{mnQ9I?C zIe)=tjxM~Zf(2J8jEEZ_P52Tp8}J{Yzs84GYNrzGNDYdK9x(F4o*n`>FpR;{hOQ-W z6T_5?0T?oxLC%b$5|@;Ov2ydNyu6f5^_8DPFOu0!SordENtN2QoTcF}-4u}?$temB zo?YNf|K4jpb{4g)o-H7oItCik27%dk*APs~VxLAlTMvPbOeQg$l30&c6Z zR<{CWsu5D<&vN--TxE&YBX_K^=Ce^1-^7!321Dv6#i8Y9wvuI<|K&`93!bx*WrGNW zMA7mT+1v1%A26FXDQus-F12LU5BD{-nf;kRIrU>JClhWqXst62CbXU%Y)x5?znt|(GO23 zha24kxSW0%*lmKXvIizHps_}wIp7GfAtjzF?>yN&ou+Qv+E8=@y&b4TZF!-S>h1#C(`U|x#c5G6{d(DR6u|sS_S{3aRQU?1 z9ds-KkgjVCb@M_}^ zokY?FVEahJeuNu98UmZJLx3hYM1p*0^KW9p(|o%GXwfZ)t5xi^pb&w;B~&vwUyOpE zHdsj^)RHTE%uIA-P_Z{+2 zXoS4`hFYx?JzFC$d!WHKm(N?*A(nDh?#k#E7_ZpLmWx?Kdxq3xamsx)F}?h_O!QuR zZI=AgTjYkF@7<|de*M`?j6Ai9t!<27xO!}_lB3e{6!UiW6X#C5ttPWVj3Ii2K|5UF z3P(=CMX+QCCUQ^@+Rg#ht(uL}Yq4h-?UMm<6W5ybl{Ed8!Mx!hd1xM%I@S=Yo42RY z&+Fu4mD>h*uy^`FI#YH6i?O0h*n%j*V*`1EiJDi{>yt6%!HC$bVfR5*YA!MgdGh7L zBJy6OB7esi<|HpY)a_ical?2%-_emc7-2dV&C|W}Ine~3O$QA}9RDVHqx5Khe9o>p zduLoKtxNdd4E15B;@96!_NFQ{0-UPV4x^Y2uoc>4{vgIUP}U}(lt}j*adW&i+)s4b z>p5jmo~@y1#?_wzsq18;`HcctrKKZ9bQm2YxBaYIMMO=V@AraYEH}08?+wElw{Boa zNeT zpKP6;wmk_x>_+Hp1u3i`HTPF+4dffsO z#$}+U_$3D3XXkY9`$C14J+vo?x@y~wgh{Wd{CQPe+hB{1B zw;1+h`~L=>;UpNZ0Hh_9VLO$WfD;4e%K{Y*L#v@xEQ>6tUXTy{rED`vbg8Sbb#EC@iO(Nbrh)rrxWPv=O z$jY3;Z@v2?0pDXj^C~d<;?^$NtR=7O>=|FT*xc#acd3UujPVeqJC8AZfVAVX;m430>~P_8KkXHJ@k$5$0ctSi zg27ZA94_pB(4p_*_HFItshKWZSlK^)2^1Gy(-LEx?+k+8^7N5OD~tKR7Y?Vz5gf(f zgSQqXT>w9$PO6bk`8k6B5{16T(8e&#MB=JN;CGOaMWpc(@}+>1Ey;=dD$VC1MkUgb zij!E|ycK^AGS;2G>W*N8*SgD;&>@Ps}eN6d((@bv#luQbr3>QeW1`|JP@ zF}uvwN>rWN?(kXGqXWIidasXM-%IW;m4f$D?VI}n2H1eFFmFl+F$G&$4pSE!&aT(j;7B@eg?doQ@bcRAsYtrURd2{c$ z)1WI>{`Ks$74k_<|H1M3Mvhv^)|8fQ3zNT=^CXcdi_c@^s(MMMlR7ztSC+9qqZHXCUN8*NRbtvrF zv@OgKvV!BwKSX)*g-fc{j&5(+i<%=a3wT;H`Iic)mY+UJEE5l$xHQ1mX}F%fmv-^|;ZANw+8gT< zq92@o)oSN)K(ELLRl1CkrsDG~Lq`E*J1;gf;4&t$U(_b1wUDUM|iIwKA6#VIr(|MqidHy5SIDnIjKw7d<9D>^tNP}f!fVyf_*aE z6AZfmldM`CvXqk2h%^DQi!vbqEd^}SBhRPOvEueA`2tqzWK^X?$ATEV8o1!gvg8gI z6N5R{zn)i+cN#3XDT2phEbfnWmVvs-Z0eu)1|jTPZxvcr_{ce51)NVS*`Q2J-s}{6 zyA-`ZG7H!(b3usNHZ%y5+y~r#`%dD?DLDj|^NhoFf{`HD-;^%vtYB^9g$#n;&X~*9 zI`Qq-KzG?;De-LyAL{0u=)z5wdb8#eXiHY|2O4;g=^z7@!dez{%{|3Q_?4K zkVpU_AL^b|(f1_fb5ZKCRX`qAmM)`E5*y$^$^iyAC21y}jpR<%YCoxiZyi=(kT8~? z{?bvR(A-OWzu9&2D!2%}KAdvIQYxv}^^9Na?o3B9A{}=6P&{O65+q!_R!X?-z2|mvVi4=*okq1Ebgx**|R-NiJ0l!XfT`W zWdo!I{ltmZHkjF=rVh*f09&S+AT&k}6Upg<6?;KJu7&e02vG2T>Cc2X9KIJ|Rp4fT zRe-kG?2o_tJKsUCy@q!F<~Qiie?~v}0lBpMydpQTD~NVfDvy`M{sl$oOmlMsE+Ki> z><|1<>53v!mdNWW$X0w&;8di6twua?dIRGoGE%u{?D(!HuKI7~(diC?3RRCzG zQ*)o(#y;hw=L?Eu!RuOF7DlVhQw3!?o^ixHXJsE6A%^cM5p!xa@CeM3FA^Ly zk9>^OP>jS6k%|1Z04*c$`Eykn-!=ksd(Pr@LGkZj!HQ!ctUFl7F4)ZpEufs$wrH`_ zZeKhcP#4bg`ZSfHe{t0Ogiyyt?|>)l_w)JuU^bgwm<5HY_kwGdHgp)Ktw{GT@W96D zq9~%%i()#f8o?TQ)0Xl-DvH~5nRZL3E$@n#6AmBz8wIE8{b2nOT)#kP6~n{gs-+=g zHVW{tXqw6{lVU2nd?F{$^`yJnLulxF-V^-+?#55N+=F26;UQ*3%dn#XkS;e z9x`G>z20biO7u6sVkXXMUJPE3<_#%a1gvQH6Hr6j$|P*C2d z3`bF0)AloQhVHdaqTA>!6MF(r6Ca}isPxIfw+URyRC7gR}A2KE+?-NOQHfc^~7omk+wvxsr?d~02a%{5!N`0<%&zIJs z&jbGR<}8DD*>T{>;;bYDO){*}vji#-N_?!Hlc?L($SjpC-BzaME@-S84l)zzC2Si2 zjbLyU?v4O&63!9+A+^FnqQe1mAtCDqZJzH(^}Q}mlH=$mKPtjRS!2)v35kX97?dHk zo2iMi!zDg5!BSYXF`Mfs6<=OQ2J*LL13U)$V}NI3d5Qvnv!_swJoU*Z#CzmF5r;fU zCV*AoA-A*0QGF8XpL5;=AH zFBT_AQqmku00IjbV)Bv1FXHiECeVV@$Ef@IVaf>y_Zqb@fsVig9?QkxE&+94N1z_X znFm$4QDd4Zvl+mfP25vNgxNY$RD_|vb;ek%b#Xs}{zS_0cGBZ7UMVru@vTccH2ejt zgYv3=?@ED=z3w~{`Tht2J?$P36SN9@I)&&Qx1}ie$_lYq?n@8NCj_kI{=FNU2WCBJ z#N{96c9YL!Us-?i?)iG5g{Q8pzjVRqc?OulIIi776g7N;d@Fv@rAL4*Deb6y>F)Zt zTMDvBiV*ssPplC!1vVjrFOtbW|Ju`k`XFWWNE04#J{*D;Z3F7x5m4IM2Fo{rZKSR) zDDLn!q|2Ep&01$| z#pW zlbkd3?!*zEYFFZ)TidVQa=Lj>y)yc+`81__;(#8t0ti;cYawCKG5O3>oFIL%xjJgRF(`1jIj@oUZA*wHcqclEsc=}28fLiU7+2%0B zGKdakmDwwT*O#YO- zo>9y<-z}ovv9W7MM^ohW#4>8fyH~GrDL_akF1F3B>s0#wA?n(t^%vSuYCJLuP%*aw z_(3XMP;CtOOM~@1g+9U$(iXyL3l{={vSrIN`>R<&3^q^NhzpzhdH7#(qN8~lJjMz? zY&3jjZ8D)LXcO^up7i1KcX<4+ZRcNzRCCoUj@-3^5Q^C&x9nfod}7MheW+Vu0eNE+ z@wX&dN}^2i%jEas&m%5rmPk9-jM>$;(bYc*^6i~nnm$!ez;z?Lf4t-oKr@}gHunt^ z_e_fbS*d%(s*Pocz4>87@lVfqfjQKFUH zes;qWqtsR;MvJ63|7Z!?2n+H|NGt0e`GZ9s&57Xgffi&JF(g(!%V0Gy?Jf~{if}f6 zn#A`tX6&~;)*hrsk~T*1Vse0dpZK4<$2afFj}Ijj0xMV2U0f1-Q^MstT|ge|jVL8f z+e4+Vl^MHXDZU9RFUx_LI=mVNi{o~+a}zc3y`OPgYboez2j3-`Nv9r2TcNiM09r6_ z#rvAtCa^Ui7r_A$LLe5podlImQEG%rfI87s{x;)6!MO>Xyk50=|$fRPxAg)%9yjm}*m8 zPChW@q(29O?-+&hRwk4AtD1~6QibN8JbIY)qvMwc4ZSkHi7yW!ubSPzItuVn1OO%p z%!&yHOSp35X2HJKN>DyA)6Z^e?I7Cws04golNR{ALhxpMj?y!kKAl(ss^a6I&41yX z%l?1zeH=3IPNJ53YC9i`&C-_-Ud4$72i6{hA%KB5nHxJ>krWufl*V3Ai0Qvm1{jiWL0PST5hN9um}z3&lmp{UES^X4(O zRU??afVHJCltKRSe5Ex9_6%P`0&w9{{@L&gH~{=EEAo z+WcjdxT1OHesndtJq)Ooiz?{RDv)U^5kQ{0@;up3U`*5~l?Eqb`t3ofg&kp=5I;_M z61iA8K|UKt#RNHueo5{&Sb*i&!pln-Me=?$JT1T%6t?+#opBNMsE;s?!70Y~k*oEP zxOam+dxmjHo099{=Y(xUKOxSMX>F1AD&VLO$9=la$P7#(y12qt`5i0>v;iOAiy1=b z=Bfl9HBM#1c|M;JkJzY>{O10AKKqMb+;x{V9w%>|63Qk;^B8(^U;O;T=k&70 zVn+7H+pFkExqSL#tBc3$;28`cp33DD!-=5;=!SjC^rytWIQbsq^K{av^>}oeHY%Q= z;kv4=Gy@Olh6ir<Pb>yqUlHT|{r^ienqR#TWEl>k*T|>A#kjfk0O$cv3sF%w*!>Z+-hv}1-qX@p|yLGZAHxXpnT%Nr;3

;`g4kuNsLbhs39+f34$eDFiVxpojS^^-PESF403y}7``0c`Z5rN$$ zO-en^^CJSQ6TWgg$R~~SM+1G{CBu%7F1<8Q{=N1nObohupv9G>oEzWpN_%=W0Z{Ss zTP^bjtq$wZU|3by59FtvR66tsFqr6c2n$we0c1);Oy|MswYEhY28b^yC!8NhktTyA z%(n0?L~kaX4}2zXhd#t_QH?wky-j-1P|5@z19?#}K@Q^aCSo@l4Us~T>xD=Oo*_Ke zl~q+NWyIn&{zbq7p9QCn{(#|Z?+sf`m6G1AuQUip`PDCxmy+KzSg{6~8`{4t&QDdI z`3(bH<}BAH;*QTbD!3POazX+gBX@90I1eU$xD|00)*!%LU;Na#;|om&DlwdFO?)n8 zeCishD6V|#9tV62o^{b|L_F=n3pR5u_}GgtlK(t;@^R1wCW$3gGE(OF^-1t&2g^q! zEr_&Cv(v&BiCIVpsiPdQ?+(8mKGK&9e5oYrhQ&1bp%qT9F6);kaYrV(VlTkx#Df73eXs1roJp-NPa+mP~j*Q%-lboL1$2lKkFpX3dz*hVE;`|rs&Db z>d$ncsi4)id206n+q;vlAn9fhzS!{(>T-t##)~|i0!HUlXl_+z<#>Dje9-g2GiPpx z!tZ3+{J?+h3du7eQ#ve;h(jsR?YHK`qO35OBefY>rY|1O?PY{czy2}>o`IRh9~p;E zAN*#2Ke`*<*~Mw&vQ06jRLTjjUyL3$EM5mTWt`ynQuB8nlk;#o#N!h2j2c?1fAL7W zdXxcGZ_khs?2b%UkhJzI(>v`RKrQS@=OgeVPq3iN{Ra|iknmVT4eQEMf zi2U28a+&Co2J*=9B8M|)fF}fOgw$iZx?*RG24x74_jw8a;`-g@}>1K*AB>{ zWiK|6HphD1%{OM>g2a{@a>AauNig=*ts!uUWLekjJ=B*zxM#J6YZN)Q9Qs1B%JqeO zyu2jT*CV`*{`TAWtDgU2m;>-j+lF&5LdnnDb^JLY*mY0BQsMrY682tLEo`E7oedNS0{$k;LFUq?9+|UKM zzDP8{2Z0|LCSo6jU?(S#N(R_{8O@Py0Nnr$82~n=lBV0mt8<-!=8+=LU{@3sc4OkJ z|HAD`hOSf8s}8EenF4uBhe*oJa%B)y4oLSto5pyx*aK+s*gcm53pQ5d%b3}UK6mzQ z&osYrxg1nVDC`Z493@`Y9i3uNCn%H${8F{KQ8nrewSk!4I#4q>b)_1*VCBl_w^|@$ zYz!-CX1xvzY?vb-t*UZt6J4Gq~u-y^$+v9QoSP#yy* zNEOc+M}>qg(kaXc{2}t!$VmPM%_)H!ide|gNQJ$6uuj){Ib1;phu=Z|PetS7MY4U= z-H&ay)Bu9_MWbF8Xq=I6Ps@-*T3JVkAyYHTtXux^Opy(OZi$EA8|=S$vzcoXInTOo zaaVpz0o^Q)Z?HqNnqeDL>vfs5#;nQY$lgpw#vU2~|90@d5t#W5#9(p?4KDe6jY!TCf{gc)u`oD*>2C0XWpC@Sp$oDfVL0NOyiJ%`}Y_6)gY9&XW7`xCS?jCpOEUU=vKt!PMx7w`BBFG zu*$TfqaOI2MaVm_!5>yXnw3jHmv2)X&Zq4647NCjWrr7n0krL}C{PV`o~Gvc57%mA z6lFCn1V5dK*r;M9m&LJ#`6!t)qc3Kj zeQYk4(MJS;U|_3q_?4qOj>v{@?E@boR_NG#>GC@gKpA63Z@|el9`y%4&&ETQm3?=r&4@~ zLAFOzsbM@sGH3Zxwy(#_6}bdN2jaVw9DmTmasYktscG>*tXFgdI}}=mt#bNJ&}@F+ z>Hy0_o(?9{h$kSf7uy#Y<;KNHrF)@Ku8j6wmk?fHO(gD7NeHZ2z(BH22XXQA<1Pc& zGT6SL^$c41;O+KSYa`+k3IhW0Shfstc`Y1xoCIG?r@`&C7k8=JUo+wBc3B1Ku~kj2 z7&Q3Y*zsy&A5Qy4OLL3bm$4at@|p4hT7|>E`W4?77@Y@o%-oTGeDo3D-?MI5->qA; zmb~zT4;Y<2YZhyIGz(Uv4(Jg7qu+YjxWK^KdX;m9P~b6KIEwe{vi%y4Na!^mAMcRK zIP1QkMS~)NS3Rn?N-6~fN5n|@?$N2^+OI3uEg^8;d!ayVyVuEc2m{X@Aoxgh+shyuE9>Zb z^b!yN5#Rqtn4?fI15X|o65`$W?6l$Z#ChFA(UXa26=pxen5x(|mMFyaxn z8oXStsYk#UvH5Zto4l+n*0XG0J68-`JH7+xJT5ES-Q#9^1Jcb|t}l@E`L1;vGcl=qmp)nZ&@xp_v?9FwIrXujB@rk z``DmF1cX*X3SD6cNdgE-WXCCx_w)HN;x?|9xa?0#3+K4(w(YySV7x00%Y2>$xK-B7 z;72n+JO%IW#}i7BNtvnII%{}1_6Rk7Y|mn}6a-=tjR$WB2YLLXtxf?sIvWBQzBZ|u z8R`!VYL$r)~s;Kf%w!T^R2UK92=;1%A-(N)FE}k^JP19oWre28*mrei4(?Fvf%@N z*U2`Dib5+)oL&5kG>8y)V`n{N#NXqFXqO-@@JH_%7+8=Z%hcejI1MPIQok%0utGbJtzu=M3MQCS5+Ov+MKujpReS$S2VI&0m>p91uUC^vDpK z$B;|oXE*`B+TmFBQoi{*NJso7aVsLH#j4ok-GZalgOoB0yj6%+xC2?BbjWCd$9=76 zMeS?$bXWquV%m%#C45vXRiQ&Nf0p)~01 zIS0z$ScGJ3h1Z5j-yRpw^T7vTG{@07bzoD=(K*zDcmH0>aFm{OC)Xs5<*ocAQ|?Uo zS)lgf?XxR7$iIRE&h=cLlO>k(16;9?(NxY}#xgPyT|mMIt4pIf45~=v_aoed2dd^uvo`w@YeEv2E5j}U`RyPZPOTJwP z&hFaR{5J6hgCAHkVw0K|kGg3*>nv>*TL0}C*oRn>8~1;0)21J-6g)$;=e`u44F4{y zAieXXF+iEk+;{YGB03tHGB{2`v!rV%D~EA~wF5mxR;iD8P~xylGZL%ueQeE8uRQ<& zJ;BuI(WCLPLmUsIE*-r75RHr8dwH|Ff(&KEEu$Az&cT{NVHy}bR%>n~uCI4CZv{!( zsmR@>D&I=G*1i^!zc7$x?gPoTNkSy1uGS%Q!Nm$C-i`N%drFVH-7aDVVYjeZ9V|9% zE}ZWDMSrQ&`Z8&cgaFAtzQ?9=)qNvNHSOq)OR`beEpp;_Kl}hVz2W? zpV;M*b;-P53GjgPdabTdiRjGLlHRGwm0(l2DOZ@!;+?U7+$wB11(V-)1{}rkmw)f> zf)fj>K7j_Q96mA1?E}yR@cTG~Mc@Qu`wtKb14oN)pj|<8qvhO!#fia^fDK%sQm?g= z0^77?8AZ~d_YIw55GQ`AC@o~t@#0nteik!Uoj!p^s?}QUjW@_Ypsye^`KurOs0RN$ zd-GJ|G>PB!wSWlP5HU1qd*C=b(%K3lqd9g&o$SO4_|Z5kCNvkKlmVd z&J)L9xCYh-V`IMw94xHrrGq4^3n25@>=-k!j?H-#HWm)lkPT5m2!2L*k)ZZ!!{^(- zZdV!8$XKnsik>gDYvh@ERjYYH6K$qtV))vapx{jVlNWQcR50D08R%n5b@D!g1?gID znyKoqy7aLwQI9APMSn|Mb5R&DgmUCXQH_U_;J5~A@KU+}m`-7FVK$-a_OXD!<-}Or zx8Xl$fZ2pzx}?*X2uXUxy@>}BTCbU%W0^e7g9VP5sW-5Ae5hg|O_N#-OtntUwAh8{ z?mSP*G?`f-{DgQ=;(-e-Q)|>PZ4M#v19j$r&*R!n?v}WR=Nb&2bBMWqc`%~s)Shg;t+U{GcskZ#N&h;+e=aJ z=x8FNNbn)x9Ab&|9q{7!&$)@tKX8@vf7RL`yEJi+!_eTrJV-dR!Fe|RPhfC`f(@4* zd_A?f1(AzjQl1rOB0KqWbYosK*b6x}x2L`_ZQqgs2st~m;nu8W$2=xjdd=O`d@v*M z>9LWx!Tw4e3o-z?rR`hDRCjfPIymqiK~}QfYXx{f1e5hb;0Z#hgV&m;fZT$ulX8{H z!{t{tbgX{9!7x^!?Jp2Z`2vGN95zCqz|h49p&8sKAbwH^KX_Nre|5M+DD3FDsQITyWL^9_8L<_|ngiqp3vosyw{@ zi)TS2m%a1)u^#Dn9|JaO7dT0>834Y3KJBku63}DuE4sVVKsCarYG9y8mEG<1S~jEK z17-&CLQ1!YZ{!2H+^Qn)kVgi(d0^DV7bjO1+(?xpH=)-~N7gNySI}Y-vpQZHSm=k; z*8yz=+%=?=c3PQWa^yTCO>fU;+L!Un`5}GHwqqiC6n%Ywe528c&LS_RK6}Yat|ay} zzkn{toAPm4S<;vLO~1BKwX$Hi8d^(!y}y5167iLiv{)%T8I_o{U>L12GCG@A5WUUs zqMs#~Bt{Y|OT89tHmz}LGr6eNR!FHi3K`qDkoXwq8yx?-6%LJg>8g<0SjbZPY*hVC zqv_gws!mGs5o_Dy>)}kC(YEp^oL<0}?Ort=CQSB2CcE1d&W_qilvwPHuV!Tatqjc5 zFAoG1DY@T$s_?)I;PCaty=AmBW-TV9Nl9M;Cae3JM?R=HPHe(Qe$(++wf!RjXo++! zA2j&V#s$lJ0MFC8Z0@e2`;7g0wnmuRv*8QH;B{YK%~lJSKYT^=#wjKA!`*Uh;%H#h zK>VTx;urmcwIb8LLgbn^4}i|j&is78E$S`CqwI+vJKmXTI_kJgF8!&zKK z&|p$bP@?o5p)&7yuc5?Gv-y>Otg;nY> zAz8m6Z-~oWc5**9oQ6+`P&MC=5Zju^AfcTA=#OGomQiRBMx!_Erk7@HH4=-K2Qwb~M3k0^y%ky7+fQ0d`BplbeG z>b1UC`pBoFr5ItnerbZ-iC!g-fQ%kc9Rach&=p35f5~@>Y#1*kp4$g6{^uOu+SM+V zZFE&k<5+AonwC*7{vpN_uogmi>77tU_W?;@8cZ7kF#X=!w z8gAnCfbVEGEGdf;>d4JFX!PbluNIXNt-T=2$|_z{;_ZSmuG9AT1Zl-Uz>@t%Nn0=( zV%?&QdPz_d^pm}WwML#%v7#T7?r+Q$83aXvcB`v*^KygBFt+L0gmq+1568q0u3FUm z?X0_qk&${9JAEsyI@gw9V69W?S?JWK<0`#tQ?PTbL+)Md(r1%uqvwo}shA~K15WQo za?Rch`X}F#R137ZZ@V@5qA_5s6qd<)N9LJ0TDHErh=@-+T~jJ_n(RzlNz)L}$!<#w zVj12vZO8*`F{)mia;j!OQ5(zUe-h~uSudCfMzfj5n4pW%29OKgKrTUlCS`w|_2G#Z zPXC3m?fA%uHc6Hw-VJu41q{Z|P;qP?J0~sl23&miiWN7mT#0(d#xl*1;jEbfE=Gf* zg_I-!Hao)J01==@01jwjdpU4}g^C>j>4D$FsVY=9v?x6M8P)!uB@)H3C?75ZmDan; zY(8l#q06hy_gcdx0KGdg=sha+tp&k#7-Zj1-iWdEjLSYb$nG4o^3}{f>e@Zra+1Z#3vG(kn7*Z0hg`Aws3+JPK@GucjRH?HcujA*~DOFbzYLK<~aIu%I3~l4;rH(uUrto zG-~fIMe4;^Y;`!?{ZW5pT{!^8#E5}s*g_Z>vH9gowv($m zte&cdi~R_FGJ^m4=MZZ&w)rUS8`uV!Ehh5;b9f=FCr(_T`AyZGOuQ@M*OL;@t=7_i zgg&B^pB&y=OvcL7U;G7-K^Fls{S9;%slsy|`xB^IWu{@pGKLy*{1>tH7)E zaJzvBhCdqfvZG1$+1=nGrU=TDV6mJvff!#=6iS0Jp9Tv5K#5qA{$1wCtFONLmn~Zo z@1W;ohh9iwY1HsTDx7)Fm z$^+>@#i2GNEntD`N*dEWCy#SL2*m7(mOt=Q5FMN$6GZJ(48IF&7mHE+rU;;Ctx^=y z(rV-4^N~O;4@=d2^k5y$*DmP7x`^HVDuMtRq%tW))_xRkeq^?{qSwvnQIbvE)shl7 zNPt{p$3!^)i=ei6JvmxEzY{ZrJ-f2xqFnC5Oy*-UhF%@cX75=RUz!59CfvKm80{OW zWFNzBjljynbm%^q7tww-_@0?MA)@FWSTC=ggJ7*_bt{#hq=C>k(8OxcHxTh)sdRT$ zqLAlJoVf1v%N7Th z%M$w~h|41k`}aR}-~c*v|Ndh0Xs_0@+Gez`%}5eEuy0L=eQitNc9uZ}y$E-}paMHk zwJjE7pXIXR;5)s(31Urfd=hZ3h7*xV{wi~-p#o!e_jhy$zJSmpXx&9F>3%J zuKsa)<$Eb0a6U_3t}<~knM26?TJlHaDs+Ne#keXgGpaa33m=9^%3d{}_+9FX>yPI- z5(y)D@ue3fP#OH3}wuV8n*IRU*!Zn-10l|CpE`18p4VFA?}b-C+~GMc5iD zs=E(v6m&v2gK!DI`6||kN7s^D+*mXI!3wurwxe&65sFie{z-B+6`o&*mVc!RS`@rM zBghjlI5LR-U7p%ln6ynD{IqH0w?>D7#|%2=8Gs+|BIgUyv(H5ryw*3)lJU|!B?mdP5H+ zsa-1n|kRHqP?e#Rq zq4ed=ycApGin~GNn-wcLdCjkuN(=gU3TaFt=YJ^(kcbFVOV}&Odirt3(LRw*&K6h% z9HoYQQyklO_67&sLY9&7ts;IT8x~~bnL=Fr2D@v+nB8VtFxDgNTsvkLI##Xu=%b+r zAGvofS0Q6oZ~5Zw^}$6aF57Aaa0WN>=sO3{5G?pFIGyWO*;VF|)d`7XkwFET!UFJ{ zc^>G!Z?|-q z@G>W%5DfTV;KFP&35V$torqCNbW}+O3Og)Uu$M~2YBcvv7AxT9He_N25%x?fDvI$; zq*AX`(CaRqK0K6U%f!sSp^%ZuG=}FVFrqNIAY|ZQnBw{TeQrP6R8_|`eIl#r^c&b! z9Ic6j4j;`!jL2MgcAn=A0Dgey^tyzan7YvK0xK(Lf9^5Rs}uM-K{%3tF`dNcdftci z>bezOK!h_?>oA;ZG9zCM%Hum%TLe%H zF5Up?T>vCYFh!2me`%-8gOrZfUTWBJ?~IoT+x_3q0de_Em(UcJj%G_tO$aG21TG}0 z<|qvjgY*xg63%k~o1~bSc(B~?2cY8sQ3}2vP^7J6i#!#zm)i@P(jXE2%` zq>!fr3=zj31p>ESf`p2_E70XIl&U7T zsalCBGG{xwP3zIK5hRZ7dfj+@2QgZf zETpYe6b?c<5CYeY6l`F4XxiUdsOZ@eQHtGH|_nnX$RzJchLB>SGk!e@II%LS(fp2?w z&gFO<3-Ot%A=-v(06uQrbM5Z1yOk;7U52ZaHkFpzV_2ZiiS1+mdn~{o%eu;3C&$RQ z*Rt-iVQ{pkLnLAO7nQepwgm0|HC;Vk@0iY~9c6kw%e0-E;g?Y_`CT2hdVZiLRw*lB z%Ea*$c(UdbZgXY0-_XtNjK#YIdOhVo%7i8oyE~KVX2)~d>!VOeO5);32BkBaE*H1J zbp)Ch=lEuutR#0>7$uFhkOU!fE@-P=rVfk_8ZlQySD8mXXkHzRbglNG6+v-88B_H< z-!1M^MpeN~erLf#{@7qP5It1IFk&Yf>sQKs{1K=LT8{n&y9}zoIvS`Dc2GjsL`empmPrj3GUiKU-yLC9NMmfiZ9x&`Tk9tTjod=tMy zA-D{2mcnoYJHK^OhlPxG=gU&6;L%uy)SG%~q3CboK30#s6 zRhI|rM}hurpK`ogmk3IFG>echX|GT{i&FEMyd;-OMhgX#si-i^3l5XH1V0zict(}d zYkPfyxX>RpsXATHWJNBwTo>vTCWPH_vpV1=-&klK+rB5sRmoY2J=?)1Tc2>O*>M(t z3n1^=y=^6736n3OGs&M~4F`tM$VUQnZS1Xd^PUTVGUfGggdNd@O6+kQ_Xw;GaX_6= z;9iHpqtE5Ss>BA9S3iR0+4)wHOJrYeK#PxTnXT)vHrPX?Usctuwb1JDm*{3&T zQ$U(1!ta!FNaHNV10oibeA3=b)ulCf>bam4_7+Ff8OyhJHkNC`@7^*|dd`C^a}0xJ z^6lU=-36Wvv2*5jfG~p_rW6o{u3M;1N$Z|#dzVZUZ*+o5>@baPPqEef^qI>ICD(>s zF}|7`-LdAIXn_3k)_3m6yp-XH#eSfYvlM0)?~a$?ALPnrZ_5g0(u5xg*cJdvG?!1U z=!4m?nBQuxKHN&rX*HPk%@b{< z=5R7_NTyou?J04q$uWB<*hb`KkOw$FrS( zh9ci=q<)!rhI|UD_))Zpyp*_e$ByK0(e0me>@j@tVUWtjbR`MQpzz4C4)Dd5P*|J^ z8PbLD1k{m(T$Ms7wl0sh3*{tl0H>`^c$tvQ!YxH5GC09yv}-gR8t6aE5RqwW&ND9G z)`nn%Z28hYOrr}gNQ!>&&u3y>3DazW)Dl6i*XjY->KvIxjqh)bG#(N@c~X9{$j zeK$M7J;>QOxP~E;u*Y^6EN>Fx3VCknwuIOp;OKZBr{Hd}phx8L$$4gh)NbN7-20AcEtP*M(3ajZhyVMX zGqXmxxA$f_+0E`GKjxEHpZ9t8sD&Ph<@_VhSa8OcF+JweS65f;f*#{7^q^ERZXD@a z_!_RERM7r~Wi{9H8dAws1Gst$He*K2WQD@92uOOCLUjO7ihc(w1p_DtBXqeKBw@C} zew>2Cfd5Uihsi6jZN`Z)-XQ$o6E`#IHv^!bW_bjA3x5+fkCU9EHVP=?;3y7CG1)U_ zq^G+W{+G}Bu4eC_pgAhU43A}M7`5M z=BQo_hSMZwt8BVt*ZU+!#9;sk=+a{`6z{VEX&|JAq$A{an!1p5*v3ZEpc;*(6p7nk z%da-q&MTocJ&JHjCvVGhVLBmkWtDr+56ie>oOt#xe514?HH*=c6JI;lEO1I)r{BFJ zwD!PAFwB>+qiOZpTj09b01Wcl^tH!!6A$JWXi*WYLOfK*SDe1)@>#V^T%VY!Y%;ZE zaC7~zKRaJE1ne&MgMI8B`WQ$UUV`UL^a@odwarsW44qA{)WV;Q6OGUXT>wMzy88*# z0FC1HQgOt2!d17gVygs8zJAdzGxan71&22CAoJVu;KdQ@hwb+AJOQ1mqDU^j6;cf) zJI9u5&||IEiOpt)`Y9ojFTEzk1!CXGdBzHLziM<}fD7mc_tC0+o~`ff8jDLo>O<(S zugM$AQ&kDp3sNmOrc0dl*)|vu@NQgBlQm_Ow&A7@vNsIZ4SfE@ta30@+`+AxD2z!q zVH^jdb$ni#0;Zce#95#=)MCTp2HYiGAcloi_J4+6j zY{g{9$_xbt;0Y?f5LWoP-Z-$&B(s_kL^Ko4B=s(`zHQBGo{$u*d(;Ejjj*H?)l zYRE|Bo77nS|1FkUBz2x#LM@qPCTF2S5&+pw^uX!(=|V(ucX52X8FUuMV#Obn`}D(zh7^ax#cl#@GWV=oMo(T8e-a;e2pQJkI&?tdO+-I?Blp{XiXY#crVmVi$ z=2M>z^E{&`PqH<_l}FcXZ(s$#EspT^^)`oP{dSa8$fEWYlM$|t=UdXzQaM6BOr6-8 zt-mvC6^qmlniaGp)kyEq@VXOeu}A=im5?|^K-MvNa(IeZU0f0o z+8na9+~xQx+ifny6@aLhhU1!-sCzJ2nD|l+dE5bekacL*n&WT<7e__`35w|zaW4_p zZ#KOf9f-pfgSkuiNxybc#c9pr`)Ss zrUk1)K$b!_PZR@mpoH!lMx<0J5gB1j(~kH&OH!y2;2sy{Z?*oTC|R86fS5_P%l8`c zNts`k$WaRq7a3J+#JW|h4z5^HpzboNvOCr|u!K?gTvNRcHHLFI>yXaad*p<=4Z9I6UfyGlu zL7|qJ30I(y^QcQPSpht!VJXqCrgYtv0iH<`Tt0GdN?scE@l6u{Nb$9Vrn%4q zUwam{sFx47tmqpxAPm-$+xN9(VxTbs{bQy-Sl+ti%cVnWHw^g+`uv z-L90ex^K5jXyDnlo$@V9bn6-md~IB|0loVr5h~L^nad<=1b`e9t2UT5#kLNwEB=h_ z-<)g`{O154HSg9lJ_Q|*+k!q!qk9qLW|t87x62nSxVEA+a~f5)dDa8-l}Rh)xik}KSShPO6&oBz!*!j`aa@DF?QFvti0Q|Q^_ zAN=q`3+6#vf#3bjz$SeOT0X`?e3e!rv1*l|pDW_~h9wdODK!YG*GJ_cMOSPzP_NBd zfj)UI`pMo$KKX?B<2mOP|JkmN)fQH(I{xrvS^^Ywhy{0xjTz{sHt!b}&I~Io<4Xw4 zfPry>^RCiK2M**vrCarfrtj0Bag2>ssW0aN&12m9z{Vashk=8jBV4#0*xTWv`|L@A znS_OwjiztcyhUPs0a{Ni@7?PmF6f=Kkx=*kxCYs&Ut-Sf0F=_q4$_xOdr44kUy-nba79XQ)wrmk$} zOX+qSLqPrL8fq6hUM3B?HpjUdo^P2}BosxYUPV@F6F!|#ca{YJJM3T5iZozKH;<|R zY*9Xsb4JMCt*JpPs7t(9dS0^g@hZ^5aB_EcMK`}zfXJ7OK78uR%Xb=q=`#Mq%c#*? zfj}e}!~m8Y*0Aw>*RO~rwINL^5pkM_M{OQxhQu_bV_kmxHsYq-S%pskQ88u!wMTW+ zaz9HFnzX6ROFeRPa>p7gu+r+6ZU|Gq)tmVw$g1MXIh4ZDIX1D|t8mGEUa%rQ7<$4; z3mh6IAQ!<2Bt!FryI1q40pzjRsb)gn?U-4Yd9~fN&qkPTus%=71QlcM+$czPa1{C z+$=^}0J^P}h(pP*KK9}iOUYmJ)S*iP)Wgy9ZhL5rK*wGE@Ew;XVK$VykX2pSTeslH z=wd2FSbFc>crFbef`Ks@xsrNaU-#p63Y#icx2{?>`%Lv(PM1Hz88mMsj*!-l3JT4n zYqK<+X4&#UZdMBY%_$12# zJz321f))Q5fu%K&#vDIOD(>Gvt}xdC*1vDLXGdT7YQbCiL7{Gd)YQd8WGJ5xlG(EExR`s%Fcfb(i_u8kkPM1i!a(9sTp#rb)AA-|Z76f@ zx<268j($h!(eHY1<96#&>%>+G-PhSSlS|Dy67DrLw=d z9I@C$hDCCSZ@;NG;Nxu@W3{I$H#|)ICeeB5+pkU{0cYZsXYc5}Rnqx+HPZJ|MdKtJ9LJ|gb2$xo*<_J=)$3iU z_v%-m^oX&n&&gblxJ(?2UG~UpJ8Vrd zjIm4AlXqA;N-J;$1O+mfMG`t_?f|Ym5VUc_apfjx2_{nE@&R-VwVGJ}=*fG~SJM)$ zOhAYoLP8)@9;Y|d4JLgnqA?8{bcXJSE=@M8^=b0?QNIjIC+Y+ujJ_piojRST^ekI@ zTPG~$>oh#Rr?RSGj*Vp~4@~TI; zNiD}dS@O#LUTIk74{F@Xm^`FRq3c_peZ)FQyZ^($jF{x(%~@F;R@077Qyp*Y=X9_- zT3DMwu>c21vnKQz+8Ejb0o4)Crs<2Jg>#Sh;tMLJ{dH|&Zf`BIrgz8l#o{*#1?m}s zN5OR6ZyO-y9JLc7Qs?55Z0fTmVw0#L)DWW_Yxk@jEU}cg@r0^jz43yR#5!`t$>VAY zBCEr6RR2&Twp34{-Uo%-_fe?``r_Tshk%+7EQJFcA%~03WCvE7N&6~l&)V}hHq?A5 zOJxi8=~U~&aqhrst8 zEa|KwD$u2|=Fp|#m!)AMxL+;*-$YViZXoN!%TA<;JG`EyI-hn)?}seGXMZ0?3F-}5 z1^T|7z!ei%ePG@B-yUWsMwWY2GPcMr;pqJK=$eHk5A{O~0eI^zT0eyr`NH@{Eb^tr zu@dyZu*lbVjHXGJ|9iA@e-~eMl&<6}$A)!|pR|b-m zW~TWVYRXT0r2*3|+`^-%ecWqbTZsxSfs$PvHq}n}`jel%mEQ5s>+zg&bfzl%R6y(t z0)1L25OJ7>yH+=zQ`VJ0qS|o;vF)1B)?HfyK)A|Eoq9@QhzD~*56+7H2OSmM%b%4Y zlen8Q>%$A{&RqR@b<-cCCDb8!cA)ntiZz^sqYy^$V>w8;{8yVSDz#~3oAjWtk zDYxjjS+2%Hl(ufYY0H)xb?PE0=^Lrv4jy+CMzrzpoFB+BAj?}H*O;4Col#eBgSW!e z9^VCT#RpOXD@{o-2ATiyLuU+~4^7l-AO@c%$(SjW%v9lLB6Iv+FpUjBMVLa1#|s8e zqrrqI5DCl)())gCKw~ra%@17PVbUBZ>3_qP+qcJUcOSD)*RXEHgf_g)#L-pHS>w2p zyzrD~>Og3NS^Adlc@GF}%IMBvC@ZLe&&HsTrA-KIeF%@lij+#;f6r%A=IfohqQ+^s z!fUDK6@D0K{J{*P&3WDKx|~QO&&k!IyW>)$mXqXp33Xf&i~%|(5kXDa_`x{PfpS9o z7D#vAo5zZ0sT-%nXS~(~`Yd+&=}T)hsO9Xvda;bgDkGT>#$?$%QTN~;ig-c}a*{z% zs!l_H)#H3v=?3Cdo1wE{byVv0DL@v_KTU5lKA^YRGUe1ludkpsH!E7BYggZa4HzhK zN~))e*5lAJTL+2OoWqH2ES>n^0{-kM0<0!3N;A8q?3eccn_Ysk&gL5HV%(DCQ zPUkq2{S0XrsUb`yJdac3j=`e zXz#?snpnbh=9!P5etMM}132V)x5+~57MWaz?y}bJ6hgpAaD{xLf|Xp{C>BtJ!^)^K z8r^7iEFQPmt>a6H>%Yvn;&S7Ckd%y08&@kGC@+GV*g9yF>;zyP1GopbK6~l{bX^A3 zFNO_(v7&R1I(>s+c}bjZf`=MJdvruhhXC_1J;eAjnG=)soZp`V%wcKp&0U^v^%B4| zjV`p`*pV7YyU)RsNVtRuCasmQww|bm^oJCe=Oi|1fG?NV0=tSRwIy_VNaf*$`7Y{T ztroTDuEAM~l|pygw+i@;!Sl8K+)Ri9}8ZAgH1#wLIWK zE=lYNx7g6?T+R`4V>}7>LWy&+S#Dm2{tGzA2UW5!RMMris4hl{4w{EpZ-^22TR(JQ z=xQ)Lw+!9$e`z3srJ=`OaCrqsSJ=7rySa>;!iQT6b_t`mv+$9@&JuQm{?F-fI33t@ zrExuAdQ0(KBmA7HHaH={p;2@w0)zYfSSba9#kj$URVkx>(whRnMk=pfl(5#a@{BA~ zMG26TErNO=FlRi~RMbFDwt-%G=9%7Gn4!FbhN&kkw7ASmn5Ny@QY0dP!61D;@zZS< zTgZ`exIz|*(PRQEQ0#L!Vgaca@U1+FSs>t5B%+{c=fz7nYC-p`joR1!_w5zwxo12a zroKHq{0RDHi+a2M1*qd=Ug$c4PER=GcLBWL>a`9J=d{%m-I(+L_NqKfeXWY7a*i@; zF0i*NdQz?As3S4$*tuFZn?P(K&!*-BD@9Pi7qeMx9-nV>p39Q1K69x~><}orM|7eq zj!{Ex!F296bo?hvE?&B{-x$JD<+y($?<4FPg1{m@J4~07AsO#mnVIr2zG{O;8ZI^; zrZft6=g+7OEQdd!LdctQjn=fIszU3Xwt4YNAI~E8E*tTn;PZ6O0EQWR*BSSV zZ8kpRgDUG`R>k8XHVzL5D%KGja2f|*sra{U4JRU7*HgCzoeNr;h`PA|otQCZqN2Pg zlnLbwsj#>x3Z>v&KK1r4*4FPmK5|;iw8(=yx8CmEozAbZxPlP_Jx1`P4`_%^hrsv7 zR1QvpV|#)63sE(@M+`?q3f^8lr{zl!1^!Zv2Kw&4&G1`md{*5+`V>19jut4{-hqWcR zL$n=Gi6=ogbM61dnhaJKTNR8E!nF;|Hi4fxR)yI_NcH-mH&k=yj9lS)OKja48}vV* zqMI{{AlWil4$$YOQPGMz=G-|3y-Qgapi$~k0L{WL0j5}_hJXZXtX8{eSY0XOy(;7s zk9QP4K&d;Zk8(;USp>1Ar-uPoTLVNq&za-Pdyh4Zix;zHa&n}t`GSRbVn)2%ZECk| zUQ2g4tF0a52${DK3o8$m(RsBs#dXD7Kl`FK$c4JWUOl2AoID1rHdAw zJ3d~Z9!I<8T!2|a<2Y(L#KK*t0iGCloKnyvZPLVBxHUbrtba1I*da1b5i1xD@;6r6 z+ke3zJedW%ftO>q+4qMqfHBJ-VguHXTmG6*dIc%Iho(4;p>I=pP}BZHi?2`kAv5E9 zBO3DbwARPV@jOx6%BaFK>O!WPBw+^(1kVxDgZaL9drKDEu$VN7##aYKb?x@$V!+bu z*7rV~wV=d9MoU|7HFO&d>c%>;;tD(UX722B&q%?H7b||;DSOj9HPF-2+t>UTAi}ez zoB_QiTy!Z2{E1o7b1XIcU9sIq?+6L4eDB1j_5Q}z8(e(5IP~E0#4s%J2h&WEG+gcw z>kU{~24#wid3aHW;bdaz@#z2out(U6M+l5D#6|)a;^3$Fx&t>Jc&s#hC?Nq% zwo2g!v?(l9@?naAeap2kBf&f721g?1Hc6>i^2+N^HdtKdwep-9UTaPWReZjX&!Tqa z?JK$jJQrzR7?Q`=Sur0J_}n{aJ9C(_oeb>EgY;N8=5}VNU&?e7VF%qnxEwb9 zW(eCKf{lkGKEGT?6QDrjh5o>v6&DPcxSOPdZn|E8BXSy$30qrX;qV;}%;06*>9Ruq zWrL*a-+S3%FCDrSJx3krpsR=F8qGpr;U>))F9~$f7o%@bQ|Jb2a}oU~B066jq?8A%G*7v|WucA2B%XG+E%u!B!u z>HDz`UxH&n+p?hY^DuRd$qcMNVk;CDNx{dddWQH;Jgy>BDKU=(NRGe+&0dlWM>?s+ z1+N(TvI1MA`rCM1!L3%rJRa`L35~!_Px4a5bY){(%Quk9{1OsgLBg@)_g^7k^eFlCMrMq3yN1TX|`g}s__KoHmi z3&mgxK|2Va`Z4jm4P*Q@T8Pz}Y(%&B_~#=dKLys#4uw{N+VoLa(56t8>e&sJ4(Wzv zPFY!~R`%|iwSF_sSXd)U6}0d74_|S`n;#x~Z2s38iGAECH!jX9y^G8WPz)v>`ZABp z(6nI3z=Ai7-=YKF;EZDcGY1th+Sp^G53|j*(VwZIF%3-c7ho6hL5KKd;6moT=e}py zG&=fsqS>K3%@Ooim->o@If0;?V_B(ifJ~&; zqb*j>39nyampFx%m78P94dZ%|TWVf3iC&+#KEbU(ioN3tM_@*ovp?a4j{wFy%nr>k z5(a_{I(f&0ywg#|V5u0i5HfbVmt&?qc*e2#=*Cv-uTal8jabpUXSQJF%tqhZe3-f( z{e0Q73zjS?QTGyK@4WNQf%>)c{@UYdSHNE75TbL~x_T)30YCZ40EUdb#X`JaS4)*W>%s%2nmrB z>s5q!xsj0!uhcSJhe+z5{pT@gDIa%UoiOxnySHvzu`Y<&)q^X?UkL`5j~VkIquzUQ z);YL03IGpIlC9LUntnNqKno0fpcYV`A(n9XW(!Zq3WVemj|)6lac8;wcA*dl)J>kc ztfJ5v69E|sieMtUSME~;0!sJ@vQl%_by#8P)b(0J6Jz$V_jr!AXpUhB115Av8xIx; zI|lj+%(^!WkaBKDm4W#%Y!9F+JTMxEJvD2Hsopm%#JRmwVN$U3pM<1Coz}8rL^A!P zhou^AHv?nlfrdatQm@4IsfZ+{T8NYm_cFahzqEJXto52XRm9KARJTfeqxTa)rag_M z)L*}!Dy7WS53nj6Kp`R1A^ArG1}~_H7>9}P2Si?ZR33=WS)N%zyabBzcl9ALgD@UL z$D)9%Vi=TmgOjE4rGu;#2b%bqpA|8^NE`)C&)^d%sZzmmX$JK!Z-hM%8Db31bb!=1 zI75ww4-_Lr8sO;JGl5>D%3*XDwaOONxXC!riTqiGR{;#V+LybwttF5j)NF~H#Y zNS(mDpoYT3T(Me?`{V+U!U?);K7irBDN5wyKs*{r$7IyG5d9>96i^YDsRj4PC3-*_ z>CpL9lI1No%I(U_`KOfn23GY*YHW3#N)`&EcV*iisbblQ{2jet$Rn$}Isn_NstZwl z^rBNHvutF`Iz&e9WL3y(?z-UmPk2_ZgO?O}0xlu(2CV(>Njk8xuG-L)n>+Atk3t*7 z1*5mmvaHi}8mvFfAlbG3OVj{XU z(9ac!^z`3i@(I{OhM+fANP>JQU1k(;)KF#weozl^*#KFkwU(17W!dUSNho@$a>~kx zs*G7}plZR+%SW@E$O}kfJ z`bN{@Gq+o5ZDF@FXxT*E1yTUHt=Vjha@?gik~~6U1H6P7^&SrG+`T;r3_9%e8E2#~ z38mn&3;;w=Rn_fODKWeehnF9QZIfGLY&9>od1c&F zZm5)cxkD{7$#|sPCK4<7GLa%DbDLL81vyH7aBBIm*SYJYEJwl5oVeqWfNPc8uFIw` za68AE8jq?uMqLN=`X>@^_F|Wxu7Jv=4_Ir{S?DIYu5^pteudvu)w^}Yk}+VYmQ(uF z7Q5d(Ni2`Lq}D=IPU=aiFP1TT)=w=^N(Bgnix9ykMfuT%EWIurlJYe?p*NP)J6d^# zK+lsTD|cC}WwlY}4W4PyF^zvHa?Yxx;p+lFn!aNUYLD5OLBW*Sb>M!6s0!~EB%NO} zV=-+w`vqs_@&N+(JPeP=j{|)~E$@8L>HKw=zAc25w8VH)Dh4@2ZM`eFZkfqrT)Gaq zWYSPtP+I;46P7#o2DiwXXW{SAi_`fm&LcFP3POJqEdXX3V z@*rqW0gX?psJk<1D9O{ZB8oTUZkwRPw>o=!s?xBzsO0u3qghLjH_c}BA|E3ugGOYn^rNlt1t_bBti zm4QfcUnY3AQYei^VVbj0)dBYGD|UTFuxlz*c=D7yZDxsmXk`QTZ_dx zWuqD2&C=Dby7I~*^$&FE-M^wTtmSu8k2fsZ%(fLq=w4_?*M`C?fW^%zF)rPbL_nML z9rW;*`E6!G0jB~a9CIajY-S#wVGY7;)gT@`5wSEe420IQOKx zU-D-n9axIF5l-JzH~hM!G$>9U$_Smdl-Ucs_mmXdB*?x-24xTG28*viTMak^HXt@atRA#uvZYLAMu7g_N`+N#uK9n-%ul(@z(O zZ<}R7xm^)fD!g5-N!_}sT4igOoW8E2l(>Y_%;F=P(eCbHnb0j!FFkcBwR`X0(uW{5 z8X|OHV%b$T%&vab1oOdqtG?DCKAW?sMR|b9ADB~yX`%ldGK`V_EAOEPwEYVK;ibfOwDQ& z%DYR3gilx(c%!|8bDB&5u}g3?CUi^vjM_O3#I2!pLLZR{Edr6r8dOmpFgOa<7D%*WI9m0RQ`>2gSK3Uu80Fr zLeH~m;5fZ7A&uphv8v4obVT+65b-NRHw}Gr=(|Hdo)_87bDzu!8yMC>Y=XNXIPPSM zGjum(rndq2cy50+4gUxnZTi3evA^nue->kr0ImqB#dK5zQ&g&crD%qBJqxkytN=HJ z9dNt^H0sy^gIU!8;~z9*Vc;RJSr-jW8shp1WGw>D8bYINtM^o0Ri`D^?|AdgE)W?! z2E)n_#w#caUDs5l;w_ojO%H!G>!$DzNr93yS$tEf4eWLnoepk+h#k1c{$EyxUNLwvr3&1Ug<(5gL1 zNT<$SsTI2fijiX%#MbTA2wW1&MMr$}LG+^QG(zI1fh{|>1bK20K0N8<)P-tt=^}{` zRfDm14MltthiaA!9~XTJ^~i21Lh9X<}4XZw8cBlBazFOnYR zStovW;h~B#E^P3lw?{11H0Ua%DsN?Md0|eNrGDOeV&lX^KrK~uEMDr4x|WPCZkkGl zxXfiooG@N}gwfQa+(3g{K;)VL%X7jMgZXWsE zr%I(YVNEu3j?S{kX0R;ru|;H#2fCphb7l482j@!pVq7ab@Z0)`IU0mr@m!4MRtjcyEKIpMW5Qv>Y>!SVMU-TdtwjD+Hj z3I4zx?*RtsOPpdqXxM=VVh{o@#n0;Zzr2}P|LlD&bVDn0%${UAdF-ys%Z_n-OdStD zfc`m5UD*!Ms=<)o-rs7SnYK5wlDq^+|Idy%7BtlfWn+{&JOeE8mq+SF1b)pQZ zE(GY&%YozHbcD*UBgD>Qu=po;=D7+^YKp-naI3$c-=iv;~96lXf> znt@l$s{r(u@V}bPJ6o+*)3a$;oRDzCQ%ew0$z0xIiMjrjW0alP*87?Y(-~B;(mZgA zXVFR8&I+J8;s;j@>t9W1J4*w6046VKQ7?T-qvO-ho`8zccUe~l)o!q)7J<;>kcG@q zxzH>Snr(NKUM{^rJzV(l`=OP?8sM+Tw7LpKa_ce!@MdYctBAAdWjjo>0%MGx1d}vA zojTTlgYHbg$6g8OqI-s(9(sA`)uHeG&;IX=rUH@^fN{<-F?0MTAO*f8;TQn4-on=MzGgl&$i+xz0$~$&Dse9i@ww#!x8v zNQ8eDaDy^N6qGTND(az8Q`MA)jQ1?SjD$sbVJMA$mh*1h5eM9Kbp0}4&bRG|B+MYi zHm|0p+G3@=7=qfGEe`CI)SU}{d@OO~+Y2X=jQS8im!1Ntsh9C_cTm(1zwcJ>Vo0S&iK9B2t>r zq+P8oRkLPIF0Zp|3x#?_=`e|eX1>T`r(TXKTxJoRGm*t{GWERPfSGNqBB1p`4-h0P z$KkVXj%DL?vGN|Ex0ne*aiWujE4Lep52p;B#Uwd6X`yWre1?`UUA)Et(CmsZ9^zx9 zg|zS!*haego5tIGSR5Mc^h}s^*oYrBF@*i9PUqxS>%30qEWjguN*vj{vfEW!gqcn! zD*`=u&@d&WEvKkB+Rc!Wv|89wl&V}{E-qwbXj_}j;d3M$p#EoYWxyZ70isBlB;%P$ zsR>|Zy<29*|A%5~2eb?9#NSGnz6SDq53^2vO?H&IV%n{dBNicrJ|jyNbziwIx@FP} zbc!6uqNSd7)L#v3Hq;Fif}j~o66HlY0f)`w32gxuu7m!99;VbnEe<3jH`%q$tpG%} z(?w#u?jl+#%>;#lDBX3RMSBhxqF?mQ_UkWnYXuD6V2&Hg!nlAu>jURp_l%6JEF+;_ zoi*rgPb=NLEa`d$jZ;VC&e2bD(r%J#6vV1*w>BA-xHaR{KL~YeePMlmeZ56o-8+J2 z!~Ow3vT>Eo?muTC7DupH*6g7^L+mDRoQa_sNSE;~9?^HS&9Ps$O$%4}xImR%-b=kTYujfsX5!;Y?;myI7k|63R@+mr zzgMj$sl9i2G|9Nyql!Z&Ystre)>O&S)>*PI^JG}s_5tVs%v>rauk+BzbF3zTNtSVD zN7oLZ%mZ77eb)@+4KE75bojv+4u6Ima8`u~YY7i>yTdQc6ELiAC)~ZC>oMhQi#V=# z@!qCoMF3_Lc>eLl#H!w1k2RaOHJjJv^YGtN08Oc?5g>(gWr2+FqKvtakmjZFeDC_h zFV*VPPRo2yDzwTrRcwPD^O0B<5sy`@2M-<;0u$8xKQYop8(MmUJO*l6X^ju6WyB|6 zwr*mOO`0pgIa76MK`=$f0L$>2(d!2ANLVHO;H(%!)do-=02fYs|M{zyW*H>+P1 z`xp8c2$w(ZeVaI|cgCpz3AvcV+V|Q1e?TJK0L#-G58itaQ>CssYX$09Cy&m+?0ojv zP0rU_fU?ii)<40Mo>0(tqS?ssAG7)ZuSEJ*u%2Rf$YY%VspUV%E|U1Fi#z^k(K>*5w@DppsVMJ7gp5WRFBFd*jAaF5&0`Y`HKgVE-Gr&92 z|MQ^wLc*HhZ@K%Q2Q$E&LEowW**PdS%=B_;L_Hmb%~X(QzM2$OVg=rYRfh@!6qw&mD~sh}-msb}Q{S-M7j z9FkkOQLY*7jOb&+xG?g8W&KGFs1?^wnld%qJ5DU}mE7`)TX-4sl64VMD+sP0-&XLS zaQ-l<7B z{<6X<0VL-xm}3AjBA9o&6B3I!U&bx5Mcf2HB@i@zvl-|pXY=2e>#J&DnK5cCqei1? zL2}zFvj}JxR`1G{w~wnuPO*OR=3$Mk5CP&ho-~jg)`v#2DxparOVp~y+GJG)eFSN4 z8S!nnHa~-|&Xhv~jNhYT--JzJ+W;8|7FERa#d9?XFueta@^1!YDCnJTogJ&e<(Qu+ zezAFgi^wRRp;lu1y53SG zp#Bce6PO43#%7aXbvnB$hH-Sch$REJdui2so2vENY6M}9<)L62( zbhWzKXKpmIn(|I-$T*39RsTnU`bv>7MPbB3&gbZn-Z^NB`UX)j zaJa-RzKQi~y%<3j-L*Rg3$F)jHJ3u)(l3fKF#n~H{LOG7V15VuKz>5oDSA2KF3w&# z#^f_aJ=&*39yrgqGq(rj07UpLJ(h4-@$$1o_ZE6feH&iaIHmuope{@R+&o>AlRlih7?J|D$eTF*t(|&BV8A zV^QLpvMTKxAqWTnh2;w@*K~Tqh~+Si$4NY%Gv{c|NiZ1y_Qj)#VKsEFH}H&oKRSau zfn$nQQREnbjH_k1U4>H!;F^SacW(;DM}e_-a|BMJJO=abvaGXPQWWKdPVd>82Dhs^ zi*fMD13u&vZfQ3E(Q3T{(hrwn*4fF5@6zQgnS!_MT=ZtILj3Tv_b!G2U*vN0#H>VG z1p)qrz-;JMgp6g2Pm{^(L;6BKXN+&K28?TncDxmT_lhg7fDAnRbyOCwIX?uxlj}Yi zktIq|CbmO2kUvS^12eT zokHoT@1bj&&EsmdB=sBgM~SYWQm9KonHdyAw3SQ0%>BdM7KBargC(1Z74cgRLcp|| zX1v6p6tHFW>1+}w{rE6s`PYe&0RkV`&j{Pzo>zbc*FzcT0*sE;ivYK46D=!jawk6;+h2I6d*rvtA zPT}f1ugU|BA}4*`bw|~GoLi`Wes_#isk!xM|FLh$H}APJ0jd{*-1QGWvX)Gonxz>%YCHkL7eYaxF;PNS7K_{S`8f3%bx&?h zNlL=Vq;hzB9TYzpE}}1t)-e-|Gw@41^ogZRf>69*@QLg2s?3F^4N^)LY0tVLu%V|J zoghb!4GJs=fLH*e2|!I6(a50lrtw03i}~HYal{644f>Fhp+wZTbi`27w#WY^L!$y} zA9__zMSfU^0bzEP!{uyjnwPBd`~)adtHBljO|_b) z_5=d*fKL{Z`2)l+?!P}x{r+FB#bYM(fEom@fq! zsL8x$V;FdC6ftOvY4X4+jfwf&y{BuMRvKU_XeXXAqJrolYTN`2!~1tW`Y5{Lhd+E@ zA_`fLy>dBMBUo_Z4*lDfZ3o7M26D+oJ00?-JQBt*cdu9UQUfYK0=AgL;S+R?iH~bc zY_L080nbQEOgsVE`$M~Z2;E($epFpmlgA@i#xfX`JPG{K{$q;bKn$C@mHr+eRzbS?WbC)GFA@U_`t692g2=69ik#cjk4NwrD>+M?D?l@atnLeRP0!uXStWg! z22~9P1Px=?P^d~fp?}?vOa?tMCB%Fh%xVRfP(sjN8cqw|SLpB zlNHPIsWo;iA!}K>dWmIto70fBI*nCxp}ynH*_V>IPiq^~n+ywY6L-#uz$6qqxHnSY z)1=<067N$LE%l>6eMGz%(A7;5W9!qn*x{6BWo{RBUN8yvAG(LY#Eal7#7aetSxZZu zHU9eZXX*rkiwZ=;eadP&e`8vTwjqWeszEnA7+fBP;xgQi__8Dmhb66GQi6eT8+5Os zr$kTV;BCM;9R7^SuJKjH?jhU%Gfw~MR%C$T5vH#Y{NKaSIuNJ=F9pNlwJ{c2qsPcD zThYO<@_-^|j2epum#$nf0Rd|ztpmhX(6kmE zOZ~sp-Gv1Dc_JSF4n(J+#MSYu@mFg=6oZrC$+-Pvia|RVSBgVsJI($Z1_!yFW-Z+Z zE&*16nbeU_8xLGQ8g$$6Va2P3gBpPI%rj89$4}Sb<`l27Rg*9X7dEbU143iI*VzBY z8<$?{s@E43ZdoQ+aBX$vp+h^08lQz*<(fRFpc?g@4#za{N@Y(Av0%s?YSu6d4G|si zVRP6liGXJi@lALVTFA54#IEj%tN1p_%H!HjQSY?b$9Be-uuRm#I*QeM4VgrqH5JVT zEeteLpK6_p#w0D;0Q^zcKwIxX3k}iX;sr4ulkq_anAeSrrH6x!!*@LG{$l zGYMVYimPc}yf(r!3W6)U=-Pk%3$&*m?}``IKsiuQ?-X=Pk7)_gjRIf@NFsE>vi%d* z6GydPL9B@9>0ziedZH6Hi;LU#yEv zF0%en=zeiloj%(vwshk}=K-B7LglYTCE0$2ywOA-GgaNR5S}5;v=zxQA zyDA*?I*pyK&1>xfb$9gySID{(oz_Cs?fp@Rxy2A>9tNXwK-aU5?-V=(r$9%ZgR~to zFSwHo9DW9()DO58VEIxNQSCjiA(Xv8S1|b_vX6{h2GFiWcrs#T`I;NL%N)Jgn4 zPc1353L|;qVDBRI;hHtsZxh0I-=+RY5B3~Z4;!~szsY(U4)GuhiohWrK&98xZLtf7 zu43L4PC@Aq#jWMg5e+jWfqmReM+`T?m=F`jBoPDV#10OJO5W+noDQF6jxPKQGgZ3z zRqMeKM!!X;Q)g2z6EF2j$S^wkZ3seo|9olK5aERj#kkO_VhQbHjz7zb*Bdc1Q`S>Y zjF2j~m8*r_cE~xz&qd;l*eVpr#@MxtxcDF5unp zIk?Vn#L0~$l{<>!Oga(Cd^hACQ%97eXeehXB_$K_P{50)|lugkn-+6!n^iJ@e>Kx!mS#Hu5QYQIXuV!VaU4obXw?GIeLk zp{yP6A>|5=V{=@YT(Z79Wrsx;4|E%nY#nFW9IG*{K??X3?ih9(OyskOhUEl zT5y89f$|#oxe}P6gqRwZs+83@z@VLZ0jSRx>%iz2cY@HG-oqt1-*1r$rwP+=Ic$QX zQqq_a*yxObpT>0&enJ>JBX7$>sVq(X2$)j@z?>rPGp7hROi0B5pVr1Km9#7=1qg!& zGpEREGMHp|t`5=+K#R)qK9KG#ZWYb_JR6CSeM-aQP&h5QavzDfo!1B>;b^1VsO(8DhKuvUm|Se z;C9dhA3!yUx6a+)BO2`6xAtTo1Lf}b-GHlrJnS7pYl*eJ+wF8`_mVN0Rx_G`Ar4a< zl(zl7`VQqZjfeyMQW-cXVDQU9s2w{wVVD@+&EE*kqf(02|g#NS)DDuD$>B#^r{0(_E?N9K@hp=?| z3V{2_9`+~9g3gaZ6U3#xWA~1a-_d9wQ44_ng)qSX5ZB2n)$LO_)b&-_!#_l%X2%A+YQR4qk|U zJ$IRA%0Rea_5kZT2x>SGt!W@P!i{3A`rCri?lMqz*p3$ocb%Y$4!;k|x!@)Ht1^de z0KWzvoJHafhV%=p^7LyDzg``rum1#<@b51aEXzHZmc=u+yyQM2#g!|0na#*tv@G*t zUMSB3>Q408D0S_K7mMQJ=h4MtonTm?{c*{)BL!t&GP$XD(d^TAJDffVN+OYhZs5F>Ly%Tig|$bCE#O9=j=!S< zBeL(;(UsJZ__0ECcV!J-&=vwupau>?Dy*>O01 zK5_KG!LOYaMrix43SW0Oy-~A5_S=Z}dxqy5jX%N!_7w5so}ak9cQlf;(qGw1>V+FF z6QQ-#NoX%HVn;5x^N}@d1%JhTU*G4UuJfII?Om&d8gli$U)vW6Rpb_6Gzsw45<*}R zvz-C1EfBDAAjT!QLQ!1ql9ePjVegKNBIi$d@=y6J4H!1Ae>d(NR;Fd0zl@Jl_p`L0 zec)_!@eHFz!?U>L9Q0rsEq?p$w=cUZHbQ+xlAiPkjihy{Iu;|$sf9V00Ol)rmS`iO z@#KAaE|8V+Y_V48gNl@=v;#6OZWme17ZW1auwJUISt=S=N9$14JvK=|=2nEoMt$34 zHnj=qF=4P*Z+@?e1r-KO0B183#>RhNP05?0D|(d;q9;OQnH{>C($^au-c`e!Zb zfG&nU{e##6j4y-^fNk>j_k--)6nf(^Qhvrr(}DLqA4lvQ8F>#&-&k7H*TJRW>_soL!K8efMuyAp*w>m&Fgt_3*c$rt>lf;1q_FY+B(6vsCP(c4MKQag0(V>hWsx0XdF zUS(@nOOdlJ4ejR`OVi!2fibOr77t!^un2t1?CidC&&-}lJzaQnG>^EwEhZbE&k^W# zeCW%)=~kxI0ZsOhG^S4(5^5Ck*c)1#JREZrcQ01K$gqC>86AR=;hu*3iY=Wg7@Wp1 z^wT|{DDV>CeP$2548x=lmW14kv(l}z1K~MI@4cGC@tAMNg{q=XodN{^i=FdKuVz z7Zf?FGSJF>ss2-&Z zvwB*icX3rWzKA82@;Xg5`e_|zK#WGNh(`d7nqzTrw7^yTijs@8YYOF3NKSn{xx&&d)F8-21|-bM=)|$c**KD=$nr{ z_UAuOct=ZW9>4(Q;f!hGJ}D`)0=0J3E^=7YUuWH@V@d{fSD(`G{Iea#ng5wqagiyFfKiF+BRtdnwGFL&_|2z{gpd?o@M>{dXhJEi}L*_a` zfd^d7Ai4s^BoOU7>-_WYAz+H`nr!yD2C4Eux}xIY%Gs+qzDyc(;)0BqD_RZ1+ z>DH7kDNaj(J|xYzt9c+cX+&fL#1^bxomk8gm|^_QX?A73Mj7w6iu26vIMm&`x7Vsx zI}ym5L@|*jX zEhb(S31f1vs-Uoo?sV~V(eVNJ~ulO){xXXx7u~WGM-Vm@VIco zK3r8sl*NW!{KVHWLwguAv=?exSnXNvBvcW&ETx#E{|RlKOH|2sH;D|OGM$rxAW^gTL|tAl7qiVxA#1Cs3@eMx ze-b{**3Dt(iD51|Le=|Iuiftb3iMMfVIvHv5`SnTf+Lm*g?gDJst3L_orf>yiR5JO zZX(e8(X~|(U|d1AB3-o#UaZw_q`|4Q{t(pPq<+s0SOP~GHdUQ2eYI}(!oX`mTiR(2 znkI;=l46%fo>%xh=`8j3-xB#mJ`4JMkA2O&WFi>zty$sui<%r;p9J6$*ln>*2<>LR zXlmE)_z^{YGU}CzfZ53GbSd)h^urQ7zmM~OJY#&UNR+#j`RQR;1oyq@M{q-dN zZJ778pPg~1^c|%(l&VF|B7fvg#SSKt{dpssnN($>)M%sgdcO5q#R<8Nw;pUzE`<=!cq)`4N&7z6q`YXR*W zF}le~*IXH**ki%&?t>(Gs6Klv2(sD1RniV@EEAkFumL9A8BpBQA=9kt*B~j#PH!Wf zPUC-c?uId@6+H#K98oO7_Wn|dO;Q!=s$mPLN5!P+$~!qz!Ye2VJTdC=w$#A2`<$dq z#w7$W!l(4m%$Yu5=vRZ{19VKj zUlE1^Id|xLv$kv2#LlhMv#4IB>V!||sOx~Fz4y9b<_m&74F`uUpfYT>TSmvLk72EW z5b(`ri~paqw*ZiU&vxVw8o0s#^rK?4Z{3lO|WXwc%tonUP# z6fe?3X-g?mN@=mu%;kU1y)(PBOX#oPH{tFqyBk7YIr^OE(IemNsz`*A^==r_2@QO8 zbzvsq(U&Xcpt)8(S615O5@>j~)pS*r-Qw}t*HFJ4yGyDO7Bv|tA>9VOLQgY>F@ldw zjQGgSpz($p6HLU4txx==9;s7|DPN3U6*U%kVci+P45VHV_%P`g{s+*|HE|%VY>OSb z8{Z&ooq#Ev$%pQ_pB0dzjq$FtZaugLi1OAvbNdBxa!?LxAeTJ!oAn%pV8t_cp5>?S zA5LGlNnjGMz5MjqBE6_jApe@0GLh~b*vXmE+ep;DhxW+SKv`wy2jbl#u**y#qnqdG z?sjlPVfFN+rXCN6>%RuP4d|Rk;}kty3D`1-H%13x_=s2-GS;jW3tb zf2B4yE>ZS^^}A_Puc?2s7vebAVAGez>HE`8#P>p63P8hL4&vky8 z+ouYtd_ITE(%awZwGIpR}>;;HTC*#MLc>^FQiNo{wB0fBV~faw|QXTnFUs<`X}I z*CU1a8Ru4Ee7d}IEB$S?x(kFK%L4;n0x7wY6_|h+ot+m#fr%jSL&Uu}FEjvvm>l5v z01%TXHu)h28VBpDN*QS4$>08zKjQV$@s;DsJ1SJ7M`=)Sq2S3?=l~P)73G7y+uFDq zRJ5<@zJdv@5!b?o)=vfHfo_nF42P1CoDSIhwm}ewsBUp~b*_TJIt!Q(9O7)@@JW2vpT zHfZXf8SYSN_>~QNsDZ{qLF%H$=3kL@^yT>YKzHWW+J>s!?*%jz-{ll<@9+O~V4z+u zKT#9OWnnw8xM=J=absyr)qCl7l@P|(xgf3?Pix@!>W# zEnS8=)JN)pGmq^O>J0qc&#b9>YF{Yc{r4VFbG_#H@WzcHz$I{e3m5vx#5do3b17`% zWcoe$S!f{w0*;&%pHqQ+Lud41g(i&edG_Yp7$84#yOxZr4gj2JX?4D z>}*I*`KMidg=x`g(}0itq+7cmx?ClZ^?=?@N1%8O^}GQ(*rXg|whFufYyopM886Lv5%%JZ-(_IlgNinD;m}YXw#*6? zz3Up6lS7f{jGUw!q!1N5HuTI($lr5<|dI_lcO+ew%t;t`2MMDfM4 zwCsf2lb|TU3t!3i_Gf{YRx8x@&gwdC=FIqm(L8-Slvy7)S%H3x5u=s8{OPAp#uid{ zj48O*q@XFHcCKP3^zY`}3^tDCbZa5@Sf{~^nY9?*T9%7It)?}8t%obp>H%Yz({dX> zq%^*>sPC3kL|tV5kS3%ms(sMeJwPvpM~_^0e)6Xw`i=o77@PI@09`y?Ic&7g=`x!8 zjaJh@R^u8ls?3w=7iZ5td)BNheP@|I8(3$aT9W@&8n6t1CeQp>$c`h^cY+*TtL&(T zgM>ZXJPeMY8VBmcu4Our3|hE_nQj#p*_D9cVkGE8tB{5Q)kwnJG6vvb0q>3`eU$cO z)O3tXt5{D#t?lc(uUw{QQ1!-R&WtGzDm5{(ziQ4IV?e=ls&(F)C;&QR>lWGmc-had zmWq9v>6VY(lm zD4}WUFHmxN*U~#+3tP$++lOgMz@F?3Qc@^A@gxed$f%UXEJVOJ1%+yXL@uD0CZ#G) zj#6BACL8g~I2eBhy!(A%z%@Z@FKlnMj$N-l>YOANnP3LrN1vxwMb$cWoG&w$^h$mC zr^f8j-XJJt-H>I=Pq`cf1rO}&oW8KTCpd4m_X=(ILYvb(d#jc|xG=_)p(v>xv>ODH z`D<2+I|oe?(-32|$4{{7p-tS)5P@Xj+D*h3G24GcihORnk-=-lMDuJ$3xp^5UD(5M z?CH(>a}>i81FENIpwVqUOUWm+?v!5Z)Oi7}MlB4?8hR+aD)M#BCop zPdUp{I8*CeYB!D4az+gfA|z2tqz=Xg>p3eSBR!5?0gO8skpSlJh`6t|=(~C9+3sp9 z-)A9qVakIOG&pdnZyt9xh5Z4UCRi<4PHI7aKTR!c+_08xr+33sL!Gc=YEZ1P`&@iE za2P-F{9NQ&S2wF^3U8K>-D2+wHW=^U!J1?r3TRTq|Qlzx^igf`w4k*D46zipIB1pNL?g9yQuf`YaJTXsX0TJQ&8qR zg7m?vv42Jvb^z;}dE^g`?|1_P-?gpmT|G)`N0e)(thw2_1r_QvW%p8tQeP}zOi!Dq z$R6Rc+g3Tn-RoU)5JGjRy4HL2##+C}U>oeSSS$m>)ZdhYXQ85%id(!dT~<};5_JSD zD-0;DUJN>$bC*q5x~5t5*4bdIJP)#DN( z_WZSMbIVq@!V3n8fSUoEpd4|i*o;fe`2G#j`7Jp*btZ~vbU3Pxt5 zhlDYRV@|{9S6ZilT7+Y1#=34&96=J%`g8s6pY4HmfZ+72E;KJbVS#{r(C-}Pusl^~1?)DFm+78gk2xi4e|Qw6BL`rz zB$^3}d@!aMkyF2^JS@ zJP|Xf15EV~2V~7b9kRsSJSDqF`|d4OyUnF*8<&z$+Yz~+U)}8C>3Ghi2|NZ)UFJ00 zeZGcgow~AGKQc2-Ij1Q>0<$Vwl}`yvP`6VetZ)y_jNC^LDl_ zJ7maAT^nm4Y@RiyDFm)-DK(>UhaW++LzJTNkN1a%cfiQ`apYAx9L&qjyfW8FynS*j z1j%M-*?clg-!$N3u>AiT9QpH19JXMbLmRl>0I!zEQMpGo%3;0zpkXe#yd#*|gaa78X09zKv!T6lS$nN<2b zj<~E7NY{Vc_zShFaaEFh+jxrF-PnHY3MI?|x&;zWI0gjRj;#Sj%+RGz+I)~47=rp# zBBqbcFoe{D)CloZ*ux3lt5FYj)_H2BBe7Q>h^Nu6S6t4t`>@GT*}^yd|Es2&rTMB$SAKCw6?G#Vvdy;P|%i_KD@K&BDO0V%2Tiqr}jm%i&T zd?o)*_GhT>)X(!TWp3R!Jxd?M*-<+53-T1b3)uSwO)4|aRAK$XondIYg-$r5v%?fx zy*AvtH5#bNWF6SUc1b~IuG`qXx#pcQW61m?JSB=I7-1~w6&p)qGy8Y|Bb*P>$aUi` z<6&IPXx`W|OL!S^e_+2xYOOjQ^6f!%$b{Hvu&{Rr`6T0T(rjCz8AGzgrV+n~Tb>>P ztgtF43^x`#{K;@*@qICjLqO%E$5u|mMHbrAo_Tbjz8YtFRY8z z%3J`3kvhXd0q>RkWw*^Gvv0n%0P@%L3&f|82i)_$T(!W~ulx8<^t)s&eFZtxYn+|w z0F*~+(rbPGd(T6?q&+v^0RHfFpCUVZ>m(GLnX+|mUdccdLJUM9Qy2qL=yV#ZHLJ%` zuSa!RWRAKGqnN0VE zBqUvXUlG{?GuPL|x4vKJ>$JSwiw~5f*{z%BTcGAAax6b~dj^axmTAUQlbXRqu>Dn3 z)L`d2V7J(wMaxd2iD2)SK$CK~-9)txOLDr&KhcQ6n@=T-fuh*4<~) zm?!eoK!dF@4O1OImiMS8n1BoT7aV`HoRVWCr&@iB6%d`BI002F5k`6UxT`VFPvJTo z{%W9C$18$WQZ79B-WH%UV9e3x#b}eXm9TP0p|JW2I^kB~pe!Ri9z&{o zPy}N6e;HB_KMzPfma*hrK$D)ov?_2YXziuL|l?xdXt%*`$KFO7e&e*m?xEz@K#ytWJHVpBVJWz_d4mQ1!HFPO11DM0Fy znb&2Jf+BhGR1MH*L2YI+M;cz~RM-~!*J}(Jolci~dc|dSp-t+)b<4VGf%yw&x?t+a zHaKOn6RwgSXq`|yx;<($!zn?bI@C% zMn6)oFG^Bkxi}+IN^XsTba_XTtJG5ePOnH2^RGg0zx~eM-ri&T`aY`HWAtWk01_ir zP!;M47 z)&O(%`Aos_<_Y%$ASJ5THx{TaLz z82&ZiTZAd2vZ1XzMY;#|2rPhv1-uGiD;WA4Mmh^M*a+sdM-j_xqM(YlxZ0uZnO*D9iwYA1D)Q$+P=?UT zB^HgMF06#N?+QEgPa*;10MhVy@)W z5mm0Nt#GtGz^$sJcLT}o~+bmlc0Lv_1X?(@jHWWM0X8S=N;$+0H84Qm z+jGM1KC<%QFx5$pqA#!v80KWq)21iCJK%rhq7JEofA+06h92B4F$?!R5^Xd|ahmX9 z21XhLVkscSNoIA6m~br);hMDIom5s<6orY6XR4ZNwveoIoS8>s`4~}V_n*n7e+C1F z^A~gorQD2IB_J=BpOCJDI7qGHW)92{-}sxnP_GyCJh=0WUxq-CDgO2)baJmsGG>h;9Ax_b50Z-cWo^ZX{6atPnFi$qeIB}t{x9nl_LKwt=M1z5k z!4F{OfruP{x#NnCW*~?^V5=nKM&8I74?RSZ&pdPEfLyK4hY1Mm*wX@Fwm;P0-~Gxf zms~>VTW|gN%B;X>fPg~aP?#Ql^s&b};5PtxKo+!95`n?R7d75*??8{z2vL`3v)O}( zKD0PR!Vbs^!I~0*2%PH$oTKRbimw(5uNHv-^N4Fa^JlwwQVA!rHF|X{)su-4ihfXI zg4BNC??k!^8a9M zA&`Z&1)n>bt{r|APrLVC@~1wzN)6I;623Df6bZkdP%2$S*3*}L{nS(RCB41Q_ujkq zT1t5R^?%+9bAe@%p1<-e=X-JQCF_ACZqLsZjR zyEFq9o(3n9J&SN@TiVmD2#&P5p)sj09JJ=p6l0VRTbZNQ!f@WlD8_I-Nztc~=jjxg zlrtp5vZAy*PQOK_0*rbpOjZA$c0V%=#PWc6kO~|LkjJ>9&pgwQTqwbb^nb=wVhlk+ z95lly(*}28)5?{pm-3z3WL)D0CL?ONR64R$iqn6iFMoic5|BB8u7SrtN!>liiZd3b zLF$_^b()$cu-s|Vm#WOAy%Xk)hQVjafFm6>*1RzK&i3CHL+N@WAVS$WBRnk3UmGJ? z_VadDUAUcNZe;sHd0N5mXz`B6gl}*xf5-?ngWAxz^ozd0btfQZWZPx;7^kjCLd2e4 zJ;QVl@zB46=Sozfy>k%KpGpLl&z%8Y{u^tiNj`K~{(dqqX-afUvy!ejJv(U0%e&-R z^6!|XWC|F|jbi&@yg4G#NB~hHR#9(P?v`Hn;UJJl@=LFaGV5jDCH;#qjW{ z!^3I%7l!xEcFw?6DYhR#tnqZ{QYbcb-X90CW6V|2&{N}XUr768W z=8)E;wmzI#tquT63!8D+Hxj|>tC};BxC1PY2rH7b0@ipjgOZB9n`Th9Ee<4D4dbc?=BS1EEegh z1xZ&R?e5-H5=w=nE)eg@D=f%=tTpe->DjJapmB6tR)0qXa>6(lA}jfV>tHrZ*%9BD zsa;<`Py^Y)2($nqOwS1VMs-!@D38m&&dqmB>@|sC+Qu%m4fmUr=KhHwDL>S2HCYEH zQJ=y>{vF$IPHewTRXL}cb(R^hbUt8K!yN91wddK4=UM)Lk!fQ@`NMDtYpm_mu@I__ zROMS6fkjGWM+QY6Jpc`Hq!;M40kH-ny+EfOLy6wBc5Zj~VsnpiF)>4$0XRbiq!|Y* zn!YRu@{rfhrEfW#zH9djh+&?>&hMT`4K*H6Qb#o|IEl0A&^~hBFucy$3W4pulNGt+WIkzu&(VsJi z?(VkY(P)?+0r8DFOsw~vaOaR(H9Y(Y z=EfFkdE?sS;Ba-6I3{ANLoAb*0ReVsN)QU&n1*WTOL`s zpe@h$MtrQT$R&b$2DtfAXj=(JhuHPG_v z?W5jpn%Nd7FLamn?jxAi&}~ib=$4HQf(u9Hv@zJc^hi-|WcHbZb$;~V&39(C88h6< zd6__S%vTQMmjD~`8#0Cd`K{K)M;7>caq;NI);`~wEdbFGCXZb4-L|`6h;Q|d`~UT? zN9+3KlaPC)Z;mKvfQDNLq`FCGT{&-ZhaA2-N!0Ba?$t%K^`XWcZR>d_$OLesJTo=7 z_}8vw^PEz**fD=~Ph$Brv(%#iYEk-y?c38I{~SLk6-zD&1J@SMzdH^SDLzF+83 zTX8`EyLzru<6VX<5SQz+z}XK=%Cy|!&d*ssq_z*6^yW#BY?-0KfHPZTlPw#V&K7`V zIy1pFp*qH!vnCVzYm5oSvppJPmViVnu4POpo@q9M2VRAdjO*~>(cR=mdI3BZOfdHs zi~E5K;zcUi`1K%E_)F8NYU2r0uObNe8W=5iOU|rTXOwT7Pfh=6jl31{E%LYwx%BOp zJ)0#){xRpYxqlLz(^{n;Oxnq1$8y7Mz=-r%0nhQGG zbP7T4T863CbrTTOeHt@a1x(PmaLtM&96eY#Ed1ja@fSKLOl#qtv6rI|KO{efm1SE4 z5XWQ2MYVB}Gyy!wSjqg%;ZO1xf2IG^35~0_w0#17mm3P>!f;5s2g_$NWLU*V0nE2o zuc3^MzgEf5`snxSnqGZm-6MEJP{SLiLK^o-9s6T z$i&x8Arjc2F9abFVbpidUOY=@A2gawc;4+$TxdZ|Fo|UeoG?UK2(`JRps{l?P|5xD z|8F9T$rV1B$l~o7txoH4#~AxEdJ(X?&E#pQ$_kqWKLOo0*fL1vpjHPZ4CeAMdx+^8 z2|=-d#d9-BFY2B|x|m`C42@P8u$iFg4}nUia;1apVgAsr&Z_Z$A;R3a8!^p^G1Vbk|)Z zQzIQBIjEN?r2!og@-z+sG`kurg z2q5g&OhnV_?&CC{3A}QNhLUkN=Y2RgWtgu6}GP_31iEGA_Lbw>x3Jc zu9-Dz7!5j_Q{@X8*zHDUkQkXBn0Op-AG1EV$or>8>_NSZxqGNpa`26}bD&Ba}UKKllT}dP8v9;+B`9_~2mj4vWl*)jr(4DqsLXx~Fl%n6L%Z&U^7gr1QLc2Fy``h3Cq0WicJE09KGE2Bxrztp?aW%diVBKnB zd51S`iqz8?$#G9sxgeihypR4+dKehY|8tt9o;t7FeoiRb8lpWag!sya#){hXV=x^}EBRbX7N!MGj?#eT+l z32Z6SEw`HZE@QhX2Ze}wVY8gv3oD3NtV>ns(xcZ0j0Ny6wxHM{vmHaZUa0-%q z`xhv$m?Ou~=P?i1#1hrfIOHTx4FG$|@2!iE%0p^ifH=867$LSf^j z_?9|#TH};6!IR8oB-9tKZmjrv>D7p^Az8z$V+TMmWb@TNB2W5P1VZLg9=NwXN1jvw zCFsKTBUaaHGwV;R>R9kVKS1C{oj7%i)-lOsGEdu3K4Qg+%qx^?74u5JN*^e1n4%Fm zW!?juWPV#g4T^!mj4m)KuaY=LvS@j>{ZY`WR1{@43FiV>wD;QS(a~d%(uK9o8C!Et zLi37253hzLLC1`T1Z&FpIhKUbWRSMd2!yPf4VaPsFw?dI3jn^DY^Pj}cazk~jh(~+ z0NKAYkP&K2WACM)o&^7VM2@5Pzypk|jql0dJc(1zJHJkZ-0FFIj&Cd*99*0uQjNSI z(@F11D6HHR&$KOF%u?4hwm~uYjx<^GzytTuyUXSE#bOx56hDgzBti)3En*;^l-!Ru zO%MP+5rVPif}kA_u3 zSBNcLJZ!LH$nP|A=$P&VxH)uw(6EAzG^`#Rsu68+9Xdg@(eMKpAwkbJGzgTZ(E`gN zFZP1qQrOSKdO0HJ7PaKbJM%8kx~s^O^~MubO+A-S^^xPqEc!OuiZXn5WX;tgwP&=v zzefLo14Jx0kxS_fH`eRF$Xs;OENc377v(sTexRm>L|tN5D^pfzM_HmGwOAk)avmL! zx_YxH^_VI-g!@iXLSHt38sk}=+&`i*u5%en6|37)sU%TjJZM==RV%kg>DRh~K}x-E z-=kA9nb6*6=vgB8V*q9=7Ict5O60r^7X!dvCIyvrxmO0-<5Ka|1AFecGkqe&NPMN7 z8#(gWBcqIgy!)`xJBpO#0XI1roE)q;ZUHmg3hyn%6GkUYJ#(ZC#dKUD)+kY9EMY6{ zq*Nb5GYC2w{?iT;4&5L-b{>QREKOfc9p5;MIEROqTjs1u0GC;E-Tcl%#=iWhjKC~O zZ(2g1&}RB>kLcW>fa;{aUbQOs=EimFvcEroALdv0(nk|-*NnPG=#m+xE`v=^u9#|+ zIYgS?+0@mHmq5%gBIahQy4FBWxE|Oz{Q#IdIHu9s&!}H6pRfafqWc&+_&X;&GU18; zetxmU^TW~w@M1w{BFTp0O@pU~qYg(D7K#b!&@e(^0B4p5YO}tP;4PK%dfOuQ5vXws zN!(gi{m6GlKZ9}3}2A{(z1OKjNL6e#r8qOIm_kOr{ay9yYdx{)}jtTcBukj zl+Ghn7)5HSA{|e4Z#^Xs5TMNQ>z1aXXI?Q8$kB!_+(Ew+Q#tu@zT>!r%-E6YFwE|@ zFIf`-B8AB61w%3KmK`}57Rqhk`1Ah$>&|FRhh$+MJm9$|DE0VN&|k8;O_jRUXRX(h zy5dGVFac8!(=TNX_NC}Y_y$P{^lgb}>A5zMUFyAVlhJF6C|nYUV~rzt#1V6JN-4m& zWE8~}$SSiJkWfhLwunVmq1ftJ>Gk(zbRv^Tm#&J9>ZsbHiRE;vh|;L)xlm_GcgtV} z#NJ3=?;kFxLCaX4sDjp3hX5dgMyMh_*Ua2>P{n13)bJwBfmtE8zjZ2rTlP)3ngJi9 zCjjdYaQ@K<8gK8ajS6V?)6p_K3kyA>LhhMq6TI zq;FU+Gp-oPk-&i085iCh%}bn4E--!Dtpe*OpZq2-Rw&{gXg*j%0_joV@RCnIr9SmsAu0DjbQ>Di&*0T>AVr6yHxHGBp*YROF?`pE!M`qv?O-&pSKK z11py}@#Hj7l*^5WjCN2kllo;uMn&kmpDt}EQ%eg4EpPUQw75kV4za&b(6elsys%}7 zQ*7Z|rZ1!aE$TZp%#(AvwtMqC%GBHZDNhfMF&R0^mNi5EM*y#{@;p zXL{In$nbuUE3{lDTU8$KGSOAyxCfpjwA;|o9(8_cW*GYrgE#`zkrlP#Kkk*=WGS%) zf*|ka42lM2R=--YFOFa?(KF|#l?wfRpUNiiM}s2J6eMCu5j1`m&mIcddEGtgRLEA% zsluvkg^*llu18vtbZ2R8Ntq32gZZyu-g64CT9p7b=+8K=L+|?g_$qfN0IGx*yPSJ} zg;dEGUFoh|oII>H$00n;7*$g)0wy#yH@tH|HMpk-s64r$6QlGi$DgZ&>1`AlkHYY_ z&-p+ABn=fnXXWj(TKapf4om+)R0m`Q-p&=|Z!un)zMCo^VeiU#?LpE-Q1H%BP}H@bf5_Y(k? zcca}SF>rlc-FsaUt;i$P9utq#uOSkem<9yip%WHz^`cpuEB3iUXJ!2iC~3{!(&v>V zMB!LS)F}z|gk(mqGMcr3*|lV1^zt?bJBk9NJ_qrz`yrN`!t2aw`G(@TUZEVu_jLk} zNP11=Sh>Y{jVZJkz)V<;LFfh$f26Xyqoa7QlFD?In2OHc98_b#NB_L0 zEd(op(i$SA|3ysSf3F}RAkM4RA`)NJ472m*9v_K@wWT31-yre~lwKv>^lKZd)sCn# zS@i%7h`W-YdHha?h3Ds+Y-S-5S40YV*h$1Zh^)lRyq0`I;ZuMf^aHYB$||x5I#WT} z>vD;|bEcoG7dU%0og$GRK-WDY9slPSB3(aVafK92aKebk^#MhIQ~?^e1TitMq=Z9=ouz4_GA%^jWI ziAJH0ud7-f?2vh;n3cvpdo#Oj7vyV4^+%c!?^HJ8ZSOa=JSe{7gO(M0O)a{>kz|EA zAS14ny~@-V>*?>-d_Q5u4V1s}mJD(Jy_no85PE3EZ0?@}@VdAF>3#)pQ@(zMU6z$v z8+RW5N`AJ5d1d}s&ernF@`E`_{njP)o8%`7n21&DD?KV(UaK%vsR=)Jr4S%?7w3&; zpwcRgco=_`1=BagaIG_5in$h;oI)7OD44?E94;ayFv&)pY19=K)9d#ne8iRt)ip~Y=6B45!xnYrQFlAr5 zIRzPha^oWU)Wa{%ciA&H9RJ1}5&Fe@VzJ=vH8GJw%qO6kObJBt^K+L7=nKAf*AjB* zC#x&dLONY&dQ~m43l*t8>e>IcUU#->CCHh1A_UaMAhcseCYmsB#-lSQ1Om2ZbqG1K zkb|IA(_>u$(mk-A8}k5m^#DgX_5?L^{sq)<<9-KqR^#~9*vWXLxAz9Oxgd8dv$H7C z0KK#C@!gMp`DHOLuSPmRF0?yMCi#G#M(Wq}Yx0tE4|b8dla2jtYj$Tu>xA05gZjMq zU5P#~0~n8?TU@$~CZNs#p56%XrUQgboY;LmwNW^5td}R3cQ{veyOg1TGGH9o%^!qe zEV-O(Tk`&xRVyk3OC5UWN(Rty7w3LBW3BULhAL8kVK5kgsHoKwLIcahI=FI7=?y-j zp>47CV}Q&6@lKKUJp)x1M{3HgrZ z{kpF&Fh%7BsYM6<&P(U?l7IFAjG+#?5PV-A6;&Q8t}OrIk$di;AL}D;H~#c_+wzUN zNY0=twsNi$%Fev*({74ZV#J))Ltp446_AxHEt49*D*&i?4*iw6Q^==qcmxL!ghX`7 zB`>{HAb+4=$xys8YuM)eSRM!@Y98NR!*)<>QW)uEnA?hujO~L1FbkGvj13!cWt?Uj z%A$YU>B_MxH!gE;uHqupIngs|dMD~HU$}|>as!yP>nU&Jov)&xT&0<2)u;GKhur1lF9YI?XRuv~{eDDo8u|S;x z>pglhk?v>|K;4Q9n=~A7&+&&xBohCp`qy5L{m}d57IG|oF8v6j-vJsPr`Gvu7esC_ z9^e$+b>DsWeMY?WI~o%Ex zUXC?)Uv`Pd>mgtNx_jehkoJ)Qhr=1CXE-j`fYa%{&mH&&G5!ulXMj}^vT-SSV#QS_ zEOY>1%sOq;-k3?7(OI>*ZG}xU^g_ENbjv#WTmV>0ySkz7pDF602zF^eoi&He1tai| z)~tSOt(MlO*E$2%rA*(sUDaZ==!)}s*wSY!)gazp1q*_H3=?Q9w&EVP-wfPG_yXIv zflX=+%(F+IAwX=>JB%07YMSTiuf9t5zW@GP_4?hlT7Dz_ul4l5SKmN&H(m=;$JA+M zm8g4r_N@V0(B)@~2$y~?61NnA(M_2wkeo~!?Ec9!M^I83f88VJdmDS&uE%XXIu92s zU0;C=%b8C+@kB3MuTH$svv0woWzy1SfZy@mD*zqflzBW#kHY6Ynq!)G!X%*F(eaek zb;H!cahIYAg#fe(%v-z&mc=>&=?9C978!EOpx`}HQ|$q2stbXd>L!@Od4yTTF-I2_ zE1Ia1W^CJDb6_g|j9q8S7I0gzY=QQP&t4}cElTp6E)w?VRV^-+ojByx{Ysj{v+^il5$62IjmXs9R>LHWBe#tEvF( z=~Z$`w>Fcv2#iADtd#vN=$i@}jGFqCw}m3VP%n;xzV2m(g89IKHR{~tkig$11_FL# zF|(*&Plwyv5;sL8YCygbiIOw$g+e5<+xSvWrAzL1JlSIk%0y)2Vy_WK zf%Ju{d2dLaNEvzzndF5WN%t~`%r@UArwvv@l{CYXO+@UIx|S}aeg=o;cLIQOIsX*pYMgGOrZw)`fO4+pdL3Gn^vTq+ zUfNqD{x07!r{(xsasIR|%7AU@x(G<2gx4&Xmhc^QVvZw~akIy*pX0AjHfn5|fLX>C zHT_bBNvxCVt9!J=>-)f)ZQSGhD(RlfS(PTD+Lw|rFCXgO&dptT0w&Y0{dzT*B8ytuHfBO^u3 z7BOn&qhiBH@hZS?miNg`JgnUB_t>g*1>Oge@>iRx~Mq5j86ntM4`rjRd>2v@Ig3Rxdw$iw}FAEc{kaj;%m6riQoYt7r8+4^BW$LI(sfvGkUsvu(Qh_N?rEZA*0 z28=soFh%(FF<-+_Mhn;kX3QHSa=3nQE#VioF~B;*?Pb^qF;*H=gFMU>5i~Z>EnIWY z0y6WKpOneQTxi|KNF=gx)#hAhZ)dkA=)W)Q7_4Zc>hb^)r=0boDzC`((l>td&7w$T zhTngsUjY?GzES=a>7Wly@97zaFYtgbUVe=q#EPj7822R|6ybqLCg)#IY+4C z@;Ja%^Lwh)cq&rmt2~`p@-*8O-22<=&if+@BPYhuaVWm9BgM4X2JPLe7C1Xyi&t&7 zI{S@AWhA=Pt&Yb*Hz$!?YBtwurcP76PHCbi&{w{E)m7fW0ykgYVV!P22EKCHYhM36 zpfKvNOttw=5s4`HKa=oGO0IyTaP#C`XiV_{nOp2pGBUNr8h70aHTR% za$mLfKy5Ys$3HVKN0l4|(YY*r0eO3@6&xMeP(f$!Vb0^6Q5_;g)6ZcfpO6Ft`IUD; zIsPZmi}^oBjakpqx+bl1Ppi<^S_ckXGrR)Ka=9?r!9~T;6E07iO-(naWLm9k3}={& z)-IIDJ?vLW7xu1Wg%o6}B9>O88|ICZz}^GB>&0OR*Lxsbx95N-SOGl2H4rS)_Ga>l z{_O!{I;sfDd(tYuF@v8)Q*m7?XY6rK^*#k60;ZY`H)q%2AfYBrx*4?>F^%AN0=Xvr zuWEHq@5=-94F)gI3k@N@&A|zCY*xO4Yjc7GV~3aLadK6B5HkvQIBa}nhuzm9zF

c*=p_AXs+9iL=kx8Pf2lVie`hDUNGKz%qK2G0Bd`oMh-uxC zR-O$pEsLu}eeaGmY$F?$`dUP1o@OZ9Ix&Y0S4S!xZy~w>o+HRxwEx+mA*xcLdV9Y? zU1{R|@I(4}YFU}K6wlNSuB{0|xqOd=FQJlG&)7QMva0vK7uIlAJa^9kIS}tGfm(mY^-*n18=(&z{-QlzQqAm36sMD`Q>mqiMAv7O^ws$ahB)jgwZ42LL2QJ!kZ@gBmsH3$p zXt>x$7@D@`ZM?Qxot6OoMM+AclwOk%X%$qOBUA68ER7Fr$f`g@mC8_|aAmQ0W1m>A z2s=TAP~+r_=})F8tTN~=|B;$iru{_=V3Vd+LRVcy96$L9{XAeCQ+MCZ8DtESZ~0P> z%DG@kN@gFb8&ReP7z!`SgHFfA&p|=R1W)omaF7KQGkPW_+vM(Hlfp8EEWB{hBKoZ? z{T+2)cXu~1)rT3|J}Po6hK#KT{Cx%d{X7^9VgbR7ZO0%Ey*OrB<2d-6$yzgZYsGM$ z=1R4CS4=Y8H2vrT;K+|yu9z+bpiI3 zG!I%_*5P~3nlgo}_Y51on)=muZew2SuQdbd3yfXkl$L(aUf5x#pto&bv%-zrXYiTe2Fs9$6jgpwA)?O7P!2-t{-tF`e& zwC`{Mkg-mGUpY5cPE!xk`?9`Y?!J$~FN+f(5by@6Vp&92O3y1x3As&l}sF%QlA zIsN-TO%WORgKrT1qE&aD+a&}>lFJ_7mGa+i(BmlME6VO{bKN&r3MEMf3v$H)J(lQBmk7z1s5R z0Cckg(`&kZ^Wsw`Lg#Gy87n$>Asz}Fc$U7t`L%~u%>Q{GrHh1C2A$?|eqpcLr_3lk z^yhiQ!0ax-LItPw((krah;C=DM2Cs`W9GZa&Jeji9?yOA4k_q$8Le5Dqdy8vt!RXH zsbS)x2z`CHuS*0p)w0Z->>D3Mc1P%ognFJvTo7pmFL{k2xm|2?QqOCx35{Bpr+=f3 zEuU(F=7_FuHW{a^-n=V}QGbl{00f<5k$+g=$C0lUOhsTD3iqrYHAyX5yI>2*aQOJD zRX;$x4OLhM_cuzj1r=JxyTZnd)Q&I{1&ao|*;cb9@qVDni{=6EhZAAI8LAC=`92_~ z;sLz)sIYIEE~=SII4M_OUYSz>gZZ-sbtRFGR%6sFjfjG}r!koX2L|>Hd@w|x>mkq5 zdGc)IE8KK4GupFqp1n7?>!XwtF-!(wc=fzIARX?5fti202KXp~3Q~K1w|M6!rAXxQ z0Cu4#p^#gR1Q6&mCPD!K z`JxUNtL1JA^R^j`|+TzpO*?NfH=nLD#|&aKZH z+)(+_cNVo!Yyr9_PS+S)pBoiTM%2N>plyWoD_Bs@HYKQ8#%HW@ZJV$iY|iDNEO*<4 zd;gcy4GdchanndFII@CFIg2fp!d8qDap6fuhmOB6+(EyB_6l7IAi#K#Y2!a*F@u10 zg}{liR;{svk-8fK0zqaZF4bs&lMl3AbX_nS8BchD*GqRy#5+YB(@Y{0^3L9@yd(#a zkzbb;72xEnk{5an(_l7LCrAyx(C@zC><)m0?YiP-7^=UtOP-o}%p|@_&YQG#Rt5pu zAJK+EoQuL|cfC$}dtV_yUVPhYuRYOA2v;T%8Wqy08HC7;K^Ot)5C}Oh*987aRi0j) ztvPS9nX*c|B1^wS_SfkTs(Vj>X-lUI=KUfGjl$`SmLZ+hIP%2w|mP)xxn_bx% zG|rG$atFCLTou zL2Mc>)G)*VEjDnZuR3eOxf3pclYzY?++$`h7{m}$-vk@g3eA3C2l0gbup$P(gRy;h z9$+t-GjZ6lpi!^JUgc4UJ)*u2R-DTs0<*|kNOaZ=wJCuPsf_38%N`4Aoq|X%2Idh` zN`Q$19GVsDL}8ART9~cihMck{OCn5ETh9~{{X3JtOaq(SRb;~V69A|`iN05ZjVN+O zSyk@tP^tu>#8nmjIj48XRs54rS*I#5uYqP?->Rynkxp}~)qV9xS5iwJ7}yG*4yc^_5sUn zW-aJ-E~f6-vE$Aqm3hf(f*cgDeWV8DCA{1%1>S?74e~TtF?`803qsFs+1}_PXl0j&Z;5_~@tO>YoAe3*ET`mp@hL@5D_X=dN{S4l7Z5x4Pg0VStpVlGdq z6&A%>wSXhN-O?ZxBtIW+7WYCiDJ$_)t#{ zqS1G>;U`D?d5E)U$L8R&!h^ps&_kD>#$|^)a=5M@NO&{oi*eyIYm3PoYHj0+Q^-d8 z66V1V&RXpswVHM#{m%{bx2q4JLZXve-Ag-av&jQ}^ec7x+y4HU8L?WPm8&Gz#-%1L zFn?(b9Dc6xeIy-8M>)qHIB;NKHuLJaFT8KzA{TuknL*zMG@Waxw*|o!Fh60Rzci_` z_LdC>L#-dmxF*nOd$sM{VOJ#t)p|CL!V`zm^Cv>x9yzR`smZc3F%4-1=ZwTa=sysb z#zaqTIANy?3=tkPsMWUPgkjwnWIw$7;6Kz#4B;rlAEAtMN8HpnN8e09Zmrc$1W}9U zicfq+y6D%}cgqtc2UjEP%=gR|1$z7fx7ge5liW=@=|9nRFs>qjP^%F8v|#>K7QUPZ zrJVg$Zf7A5P3ln8DAkGbG6E- zQX|?Qk!h(Y(Et$?B8Fc{~A(fj^E&t`=r+SYl$!r4T#c;o>;episo`4Bs9HS zglJ&73py+U;lu@^%(96l&~(!jr_x({d$)mtP`#d}SNP42=~kO{7Ww*3`Y3Y2Uo@ea zR&+3iUJg>bf5gX%2lmKHGS_sI2D&fUSiO@O5IwvF!4PbSiH(s{|7hGvwl$6R1G5#F zZgHhyGulU~u<(K3Yl$*J>HbGS9OJf$J?QE*XuVN01_!@Bcu@TO^W>B_-gy3b$;z*m ze!l1$O49f;O&!^|kSGTR3{~GTJArLb!7rY;;j`X{mv+p%v!8qw3$F6}%%#FTra4>t z!G;6A)Iyiq1GCZc?Q!Yfj^q`$8^e4$Cby&EGyutr#1gjTV*6Zt+t-$ z@P-*9!`HlHCdH0Tz#`Sop%E zO=~T>^bN-33Y*`ufZ9txpCj&QbWt3HfuddXqy7IR0{Ux6)1l466LpZyM)yRsP7_V! zEWSBYI`y`hbLrnHfK3PX#5`;_*r(dfwwW&&t&{Cm`_#QYWw=`t(nKQPDuT1E0xi!n zNdDcUK(#fHv{vdSXqX8N1U;~KQ_FxKkP{9kez1XAmCHb>mj^2`DDpC=d^_vo5ltQda9>GOF7COS|TJ3+AiYp6dF-kq*Vzx2CH+X z4FiFv#QXm-8KtuN|4h|HGtLS_Ou+RWKOmZWUX&-5b%ai3aPjHn;KVpeE20{ys_RV(1bDZRMR&m?5wjCs(G^&n6N* z^bNmi`&_E+-`T~7BCYqRU;%RK18y%6n9366M6Ey$DeYCg!qi93XI8E?{MLpr#D2&f zW3a7kKLmphlx0N4DKx4`T+LJrFxJ9{3#;aXcV-$8-kBl{bMSGcuv(9)YFk-(WF-&l zprD8bdSzGj_x~M+THo36(0AXFbtgYY(@*vqYC~S0MlZ;&27FrMOD@AzgdhGnN$!-D zrPhPwmvm+zb}#(KAEE5vP{q?9fBf;jWy_M!UxFWW+OB!S$X(0z9Z8>+y*+*)`VH_* zY9+=>Hbd_qdlDA<3eK`0aX;XB@W4GbVn*fD_xP$T#(I|8O+qqmh{SD3}arNLYP zio1O579wH-;h5+-a9OZ=jAasj!yHNS`d9Xyod4q!7RTS-M4ujB}{ z%q|)n+)yf!{>R?jM6G-Ik>OI}oJpjASBCrsfS8}7RQ%?9;6*xc+|OGm<5HC=ohG?=!0DH8jRC*B)CEWMW03qVX|1n z;ZXEBB+y0g3a2A<+D<>svr^f&(&iMu3LX-c9O>~e^K zrb?(21d9P(2QMZRIX9py^YeE&z=HQFPTmoF29H{wo%{C*~>6NNOrc6}UEsLaY zPWubu0?!s|TwAZ-N-m&}(xYHz;UE7nKJ;%=pr6s_<$54@(mqs^8i2=GPk$CW{o;va z<7-odO_)F3MW9&Nsn=aG;dB5N6z4u;i(xxM6c9S%1nxyH5 zQuf}W$WTELkRc*dhA2xw!G(f*ofE~q$DMko=Q+>2)4QK~dUrNo|IhnPQi?+T>s1g7 zm-l_2{d}I!W0i*`b_u#!(6_6BB@#1gukyxXB)@JJOjb_usOL)K*|bJz637CP2AL+; zu7`lykjXVl=Ta5VVMYfxM@&L=AaPj{-vcYXV0C1LYl6OZk=JBu%M%ZNav;(i-d8gn zNJCG^#X6wI)THX9=9pTnOlSe z5H1(H^zbyg9|AwR-~&H`suw*99pX7l%3Q9Kmb0z1e>co*;&kp;zZ(l3P7`p*fNd`= zaPT8;)FE$1<>J(afdw3x$oUw^3&;RhUA>cCA5`{v&8>~F7PGMhxg(BDBZl&33Xdm6 zjfp^@@$%629-?h?gs`jYVd1jCQ-4Q|#>=bYdbxE{69XuACPvkMwO3>@c15+ZnBJ?4 zhQjf9XM}50am+lGo-l>?^rH4_V=Sw>-VJ|*yY_gEu8v>Nui@7#oxp?Pm=)DDsJ$xR zxTrpvGSR9y># z6HRC&mCgsM#1$S{y{y_3uCYiQs*+SzO6z4F&vdoE zRj<=!uaKHM^h)ThKA>@S>XmYTL#NK(nbm9b`R=Ewk3SOlXFAw&rfuv-#2|eD!}+jE z;=+G~+dV~N%J{A!tNvPor`f*#k{^YCZ&wCL@f8K6JNcfp_Vp`d=MjU{7QMx)&| z8*6^7{i)`2|A!B6+5-8Y2e=W6D3qalzPsp#_w+$Kb~R-6`yfmC%|6K)xK_E6OnVjV zE#RwMD=d?8;K@U5mlD*-R2ZivDv2uV^LOczcyL2)qZ&n!Y;QEG%fqHIR=2$k(h9!yc65&){b z9o<09eOp)`spHoOy|7A(XqNk@c0stxY9CuAMB{Kd0e>;jSn9SLQc|lJSnjta)m^Y* zT+H@1IZ&8-Ar+d})U;y-l!jfEm^A^2Vk#Wl+!7$-le%nrt2&-AIP}ScSL2^zs?zoo zch^$OYOkt6&tH4(6WyVZcgHn=Rxxq>d{84ETKZS_nBI(zBg3@pt!?%tk#UiUF=C0_ z-Di?o$5)ES-x2}9J7^U>+vzU$w)A_{7!HI7ic$OCp;hAsTq0E-hmN>Jx6z>&J zVMs~wooEO{8A4Ld63R9EK_o-T>{OI~AAV~#e9>7W_>uDO`{j@4jtp*v?YDM9U-t#0_-76nkYfCGc2=n8#&gR3Zb6mX6aBzTH%oeKm|NN`UeQ<{{q140koOAbUa4N zRpDY|e^^>)4_X^Gg!xi3MoP8?Bt}+(Hy2oZ7BOsm2^hmO}y0J~~A?>kdm zEcWq(^b!g@@jC;mYo9Ldq61Eo>9(3xpaT$lsv4gWkh zn(mgX@Lx~Dj-U%S;J=@4IsxDdmhhx?`b*y1#n&V>6)BJo}0LJ_3DG_(_~bUle}-k8>Aph=-icc9-iq zhoh4E_ue5tSIS}+Iq-y&Wzt+2__+HU)GX3?BqDhYbuFw~RY!V*7LL%$XX>h(y^gB5 zgUz=I`QG*hw7ypJZY{Cwe1Wtcs=iOq;a$1Sc4iKtT=<+tKgl9`5PK)htai(YJ4T#< zVc(~I+gSd(nSvDvm(s8j;V;}!DV9o$03n=`mjMH~*n`m;SYgWwNgG|-m!HL=aAwsm z=8ihEjsm0tYjE*5ltKhl2^|-JA2$eq`~_xifPlse1T?t11N(LQYbtx8A>D)AAv-u~ zjB_nK5m&YZBMs^C=m<51XngnGMpQ|?mqia#Im(Mi_!;PFD*0q4gItq@sYwdSL(-_8mMS_ z|BSXub#-#7BCv>Gkv4D@EOk^&C~KSCLav_01GA~td-N>WWyp0jSgD;hTgKtoYO^_i zVk@-OLXL{Xx3hGT8ktdAH-a%D{PVrQNYn~>0|rR@p%>>=Gm+oK7>w;9u!k+90BJEcKOehZz06 z3#n_;{eHcM2{ZR>Lw#j_QE!9p-db~W4AAJ&=8JOK|D3=e=i~n@d_a6z&>r+}+TSV6 zY`-crCZ8uWTL<3W*O!|lP%^v6+Na$0B@$1q5jtJ625Ds_^`qhi>a%{fTFvf6Jk*+{ zgc4Y1lGX?66u><2$_VBN^Up_NRzE$03%*e^q7v-th*T+1h6^4+-|qSaK!ze#9@lN&Kh4smybAb#5kL2I^}> zXns3WU775UsI(k`T_i{}w#{p+(UXd5vD*ztuBxK`u6~;OS04wK6SgA)<#M_2gDcl8 z_pudHX7c(QQs}{}zJKH3L=G{b4@~9dGeo@Ew||7V^uyc&sYSMQ8UxUIw48OGA+LZ# zsk4C+zdF-xHKyhmq&$)4dHMDqZehZaj{T!>n)tbZMj{3EkLB%LO^t&EI~Ht}3KrVa z!I0Y;^7RTeTVNLpl9ANJM5P+eC302Dd{U2_Dkx7=f1be6sM)|`2M*`_`4$LE%ZI~Hl{??z030>U zW1-Rm6Gv)HsTk}}iKVV+%fkVo-gWfr!hQIFmF*mLm7S&1aH}c>=Q$d6gTH!Gk0z|{ zo`7Gkq5_tkx;@lSXPvSO3Kww1HOu|5yq?i?{odyDoRE6I2AF_N0aGpuhpmDl7gjMf z)M=^#Jeh)$)~{8JF~k@QecLm#N(R^^btB}RNa=~?tJP|Tz$sw^>q2l$+GmyQthJ^a z}=0_{Cgt{ugCk?WMmfsM< z${`2;#k>E)ATf^r=RbdJLj)8d1bU^S$%*(}TcdyvEj=z10)4NgwNX(kZ%i+2Z~AC2 z5S?*uc&qR`k~Q$Z`Yw*jV`r(gTu%ib9qvM^%1EnArDVWbAhx!)!q=Covr5pLnG9dT zT(~(W5(!9fND}CSAO@S8Tyr7ntpW9xHpr?xl>AxhW4IkPrw55q2P{wgB5=i(m&3v{ z;D_9OeF~l0{J%H%_Kltid@21?E7Dio{>rCtPi`=}r^zPJZ45^Cj0i$`c>Ea!z+pl8 zsll=qp_q_86^GBy&~k--X{H%x(1OHM5o01KiHjTJg$d;Hfeqr=p?k)%M&7zV`Fgut zs~(krCFIPy9-)x;L?F6jZ;lkQGrQOC?ncVWP_sj+WC$E$mJSdqy~$dO1c{pKHs3ml zYZQ$?x`AX>YJumzS`$yan*E4xamrid6?QQIu4Zy9yLv%W{sNcO0T@*)z7F;3=@xStP|P5}c{RKQd8m6mO_E#zT^TIM6sX8-9EvHW?cpC`4(h zb@UHPfdbj==`7b6@?w5jcb%3)X0}n_qQ=aG5l_&S^orYG{j$p~_ISXuR#*L3{0#NZ zbhc8-8jB35JNF|j*(tn3c>h>8Z_czz7VHmnjF~ja4HlsRy0oW2Ps$bnk57R`P@L^_ zhgyUo-b)RQ@&L4GK|$<dlw2 zA$SEj3*F?Jfz>lmgnIs8|8nJWWOmcQI|uvQ$Mcn}&asZxRmWfXJX6g;fB_lW^n&=bYoJKaHIP{z@0{d{J15}%2G23_g;Yj6j zCL7|2vXMi-`nFK{+isEc zyMzTW;_*kw{BrEx#R-J!vpg9inbGIh-!e>hb%xB^H94@91s29nhj;z) zIV>R7nsIE!=&+%&K^znLqlNY9JO717wi3~Sd1zy^W#qWAPFP*TsF^>f0@)%NV3gfX zy#=w_c)pt1(Qlt}{7WQ#Upw=$Ls70;$!XYg587R!j)c|K>PVyM|I(n@30hz>5SZB@ zl&LS3C}^R_QSo4;IVkjJYc@UJ1joi%5$1y-DtknR%KETLrC>r5!`6Y}?rj1?wYl2d zO!I-IX0$i|)vVFLGS{6ie8w}{Bw4A=EJUxLIMGbK4t;^* zlj6ZQX=yo64fwrg=<4W!Qr<{q!tK~BY&jgopj*TOec?YQf%M{(61xS3E2SQ$ci8uWUl z&}J8VRnhUVX6)18N{AHMG6^$z!~SM;|4!IOymwUJR4_!nlUyy!Z-4Etunz^hgJ(z? z-G4b#H>m++5>SI;l_^&tF*5s1-Yc~NjQ(sZ#29K`$a29dNnSXx8*PTQ=KLgA_BKY( zm%eTzjufUWBUdm6))Ox!VmCka(lpF&GwbC?_fgxj-0sQ-M*XE-C@GH1b++PQj212- zV2Q(d0^QXsb^nN5o5Ix)w?e!Q*$Z1!Wv|J{s!fu`Rr**^Qmq}E%g0{176ND9j?>^5 z*A1+^_J7nfo~?54%lI$qU%2{`TtOvVNU^di z9JId0UU&*3>JcgIKTAS_a19%Of%CwY7Z&l+unJs~E0+KUg@o>afw4}I=x6j8hf04G z!n?bo!fJovNNIE8eP}mz;Z2ax=blIJP}O2g6;3qgNrkm4XqGBj9F>xThmixlQJ4BZ zjn0(^$AN&PS6ncPF#DSukl(HfG$<=ofe^L1zkf?#UyQn)7!5eZzflLs+GdJK6JK5h zg3(W)?sgc!CVR%&5i#+WPm$~u+w5l#)r-tL>)bUvU|)Onn6p*nIR?Yjz}y3nCS}Z7Q_`5_&^)K5a#+ti&X4y5M8(A6GtX>S`Z@v*B{{-q9SNk3qhG9RuBU#8&rgylc{GJKT}_>! zMnb`19q|vDtIHr!G&C>-mQI7n(0zkt_EY<7g+RVLbJaHV(1w4%zHbcC-3F?~=<2r- zli&iSz!2sF8#5I0TAsx9faAssc`k%q8uTnE4ztVfh_Zf_jVaJA(f0$k2r`bL&3nvH z1BEkSA&?Id!n3RqzQsX7Bd%|44K_EUEC5Ni6T-rG>&pu|uOk`?uS`IXQkl!6gtDfJ zq2e{zuZ#kXfK0*Q0OK~-Bw!dUOr4ggH}Mamqg-m@XCY0EiyPxPy!*0nvu>YBjBi%O z;+kCwe@D=v{48dgy`h_D7Ij}Wi_8@U7}RCtrUHcyH|B!*U_SX(GwKQTC6qwjq8*#M zRLJ6(Eo=c9cMHr$)a3^Tinv)54Xf?yXk%)__pk3OiK&nQr91kPW$&8joVu}IXyR30 z{}>1<9>9GLj5^*iHx$*5fj*6J;k32_LZMg!2o}rW80!Ff`U@XcYF}VU4Pl8rOMmgT z5(K)72LckyMxI!OL!Ffm)CMZL6fox5KyAuoKKc|^@WJd`053nCgbdVY_{)~bwAZiM zkw+K2+C?ZEs2{~m)ywfleQbGv1vtx^>XQU5DE zOvY!-h`!g@(jDuJp%~S{vyxmPtA!`!kkw%3K@?FBXtR*)9%m;f-U?P8uEPNO`wnCU z2q&EZSb~jbbhunC!E%Lr@+Dvi)>6RqloZzqdRlao5DkDzRA`es^*)yu5pvcI(J*=oIYGHG;^(U*X~4*7oV&v&z1_w zt}(Rz#ZM-HvN?V-T;Uf&)Nh2!UJ-$XyLovU=r=^|%jny3*g15-4V#j(*=75&SCaY% zpM&`IbLi0#E;Z%Dh^E#B0gJPyAWLXG>}IC>re>**Y$et6P=!Qa||TFjcpsKyC(9)r>~(WbRcX%@Ms zf(M;Jt(!P;*Mtc%YX6uP;uE!R9;`o3XFj6dqOM2t9V%cs7b&_T7BA_M*iX)v#q!M&zmup~KWykz1%QsqfzY zfT*y{eD;V>VB*^6uDcf9zv25=Y2(`lGRo*2i)Hi}#0dMOD$n#8UXD`6s+c&n%9za> zLWZ_BJ>Udz%Lj+oT!@*pK#Ym$9LtD-b{fBaF<_8kehjV(jEcHsQ`q3;iWACb|9V-v zneg8+I0?TH{wh05I=FzxDONLz%@+De&US!%<3giRjkwa8q&waVR3|F)+|Y(=)&6X(C3uiNXQFc&&C_T@RtJ}Y^DCz zjNU?PIn=5|mLWAjh#`i2n|>RI!rvaSD?W~y=3WhsP~5$77V(_KnrqRB^{u&4VoR4! zZs>Lp9EP98Vf}<^O$D{CIElfB=RMxKPTP@jSB-q z_LV40JxI)SH+#^+Uwg-6pCQ@rEi)h6TL-bdXXis;L#zqeRIpk;FiZEZ(VyRXSfS0cr1(3tw}Mz=vY z(CV1KV?5U^>fbV#6jdl1{HkhIFmN*cd6HTPvY$a^mjH-YOpOd9 zuqDCsa{XXSFscHUPU9{F&5QuI#yqR;;)f*%SlDU1fbnf$ghM!K#_-r;fWe}Bw^$SC zekdf{#fTc*YB6Au6|u-t`@s+3uZ6%nzZg|F%t znk~qOzM*8ch8-QO?B)mpUO$dVp)*SOLKp_+Gi6qTrQV^Ha3(^TMpP$mFs5p6UB!?q zIjav*@Aq##eHvX7AD<*-EmI2LY0a>HT2vuMA~M5Y@bX_?iZ zYMwDf}+0fv5uhaqa4FPR8{36$tnHj2B65^=&_Izq;z%p@ekfq}L zXN|cq;aPiVENsdewRicIXeF0g|6B+hFh9n1dAmaPW&6kRjN6C|!I5R|ik8bMvvuI4E?;>y~j%8~F%c^Zz`8*0@1dSG9a zi6`;p(1So9fRaXN(rB&Vys3B1b59?t6Pmcz*$~w{3OUhU$ccd3A3VkwYcZ+(T%xGC zs1^uPE9cZ|lS#c_*VLq;sZQ@E|1hXoc$nVQp5j2;_^KzB^5Ld#Ys5rnR^i~r~AYdV`S;(+fuq?ou;HVH?9o}{8 zDAavuM~tjj7?=&D5zUTC9Fkg|O8!$ge0eBz9IfF|t6mSOy-seF>!|LFn&)pD4RKZf zwt4SlNtvOd&L~mhjF!zaJCweBgI!MSjNKc&>;)_E~tTpon+*iO|cD@I_rxh zuX3bOpwHW5w@QFy!2n40aD~ujqWS=2B8Uq$Fe%(A^vrOG9W&GN>S=bVCYfra9_2uk z@(P#G`C8!7P1;ygZPUc!)O+R&UpV5!`PbfO(A(gJ;LYhs7T&xZC4l8DCc-!`EAOd0 z6U_#o(g?(DqagpnuUa0rP!EZ1(U7_dj%C3U(J}0=aN_O+_)9U4|0WDfn88F-0C6y?)WmXd}_0^X9SkOK%v*HH*jJu!Q*c)Ts?G?8g7d z;OMp4qJ`+yp=nG|bNc$A!V;y9XIo$w`vjSao(Y-b!iX?d$YVCkr~mm+M<&Dd`DXik)O!i0NUwsFm<2mE@bYwm0HFH6YZNE|%Wq&wcmx;rpqiabi_^@syF^z8HXZ09+V@-&GFEq9jv8v0 zx1)_=>!O_?@WQ6W)ACQ9$Mg|KUy~0-jP}tMn|18?`0bIEFHv97A=*)5EA>(RqRST6 zLUW0XZQtIw&Ea*PA|-&6)@oA5n%!cK%);UmwN@xQP$`)B=0$l*IUCK|?tSbrFRC-o zc^0xYuxoSH?l_NKgK)|K12gYJa8(xZ;!Z(4SA_Y7i{Zfv$gvNXj2OHg4q$O*?Elk{ zo%_|wK|fmPl_vASa`Q-Y3Z;^ zpiXSeWIX%P0bff!N*FcRn5n^-y=|TaNsrLTv&~tz1O4ut9*lnJlXRd`u8?DQ<%9$$ zM1yYd92p*bUXF*@vAZh&jYDZ1^OYY85^=ibR}N;%(P1!1SJrtL=N-B z2Qa-Xy$|UiHN%D(gVT}wTO}58P+%|tM*4rBCvQPqh+sA)RnerCA(63b`%nPxlMT^K zQ)ST5>1646j?B;SYc_~$tWEI%WG(PBXKp`Q%B41)!f7o(%5!?#!0`hUgzvwK*atg9I39tB zABL;p^>IQ~{t@dv&H}(H)6<572A8-Q(z-|BYXuCRMbUrTk<3~XGD#&2z7-mzl~zwC zSg99H^Se6aAz7ZfBxY=akUMdt**q2&e=E42o*fv9mBfoQ!i1&pu@(J|QoRE}jCg!P zQ`3FPB)TuF>{vO4V-$^Bnn4?Y8Zj93{EcvIq2AfwkHQ&&k`>PwF?QyQm|L4RROz#Y zs8N$pThytL($%TOFcWox7#V-CvG7LV#(LuFANo%dr%s(h>m{pye@j$k=KJ=&1Q=Bp zWK0==+K`ZQsvx4L6#^Ggq)?B7WC#R0K|(#2J?OT`!23i~;VBj|ryX(%exl>_yE6$P zJAcEjRfQj>AqCHx@WZequQm*8eF7OY8YV(pQ7){lwhM(00Z(JJv>W&&^+jmihAV?y zg`82pXz67E_$)TypSYD2&<0uv%gaii1?RZ<^FZuTcAaD(P0koNxD7KUvWT_qg%^Dt z0&}d6322AvfR0NFa@4X6nnukfMU;cqy(;347Lz=gaB%UZJ(3Y46Fe_ z+C+noq1!d|qOnTQ7Xv>&L3~lrq1~>B_i$t))&=|Lnnax}Ro$qyQ%RA8yHQv-M#pp4YuGO0uEHq1WN1FwIdC7cG#i&(sp6=0JVnoy6YuG{dcl|`H4m1`sypUy zLyfP7*Ia#N05+|W{!6d8%>T;Q@k?IBppgpb89WU*x#Dx-pB_W;dfH;{B=U&s)p2|llS%sm?KZzwmaX^L4}Dg*adyWVQ)_> zoywN>W{0i4Mdea9=ZRgPBxj!13JB_Sc-=K?Lma4hG~ak6hc-s}3K0*stO#H~nT(o6 zDUS7~`v2s^Xp)Gmvf^qVPzOoFGIs@>2NTXbLq_OlF@lT2Ti>8#`KyO1O>p3*-T6*T zD{2`n@+|SEf&=YzJ-CAdq*$}BpJUQ=ux(vCE@f)?7p;e9dKJ&{W9_NJS1?3WHx#b` z@$nt(8dcXP@!METPlwmT zRdAIuX7iz&vS?jYpb*1VIN&Noaw-CgvdrQtWdIORMxZ#l4at$OC!0NG=pwREoR@@wo1cNGM}*MM4&JvYl;hUO0vn zNjW{UA_ij9$HCR>ukf=a5)#bTCB8rZAv)t!n%WxgX+-W-7pvL%DM0{JB1DSqA_f5) zalK3go#t5&vYE5(_^=;jP zMf0mMzh7wmRZ;XsSX1Q`2^<2k!}BclLi!|)X}g=e61rDRdPLd;_%06=-T>l^g}Ipb zz-zH+1|Ynm4j0w{g;JhC`?XxdmgK=LU*EuX>31_kdzLSg2HXH)GPpUy!k>xO!teGr zH=jzSs4Q{3Fq)WFI8-+o$vK+ZN(}UNR4G}+{)XnG_dVDT5&6)B4uQqxk+27d!57PD zn{+q1hirw+*#e*xjOQ+*HwQoRFMMWMl(85WMH%`O0JOm3Od2B1H{EmpXrTD*yZesa zh1;hh1z?aX;k|ecw~|#w{I1YSEG%5Rj8GT8qR?z=AN2uoK?mi@{RjgStr3w%E&|}P zfGL!zJVyBV{}Av zLEnfbngaQp&lL&+W-!+10KKp=_fQT30v#$ zrH&cwJPuRh7SpS%h|QnI=e(}t5kDrbyKx^33`rUBE!S>}p;TC)5P^g{_ykWRE8O(c zPj3X~fOO(U-L>#sB;BUN(PIQ;6YR|_xPP3J50y-ZpU&$xguUeh}f0@2Ud7}*dexx8U=dlFF-Hx=jQK`-u%9 zu}&#wfvkMK4B& zU_Hf$P{WV7!~l0NH0V2Xc>K_G&mD{tqU#hmN`xz6;XcusuH}=&{e=!psbM8vDKsEA z;QhAXQ|cP3m`W9|qDI9gR)tb<3!`9FRPV{#c2Rp;TbKLR?rtYCTh|6qch&E`(KWU)vuL#}4R`PrGhoo(>;a!>z1Qaoohcg)XdK7m)1(58V9er~G%`LEB)X^?wPZ zr#@%?@B0I_hB?Uh1e&&!dGTQ`IOddmpHN{_%x??$Ko zE=3&=r$Tp!pNc*bn#z)K8~92tx}oq1Vf?mgOixD77K@mgL?-WqWX<>UedHtHK8lS> zNE}mxt`EBk8qiSEf(i)8RCq5fET%PuTJC!KnF*lqP+rabzr5U;F&;S$8xLwbn>7zUa9`FH3? zvYR&U<*e}+3JCwtC6v%ew3nK5Tem``?u?RRjwdS+@a_%303zqY5Bi98d88V6#qQ*D z8Imdq%&rKKj&F6zv!<{b{(Rh@y`9XLK$p;qh508Oh0+HM;sfHd)8JA%2t|MCVyX4| zX*mK;<;pbhqylOpIeTCq@myQ$Jukk$fC&Uy7yjY7TgWyv@TSMj1I97F(ZB~M#}^Y9 z<^46yOJ|QV^R!xyp?k(6xb`SGvd7`tIe;Jfmn!4{M-*}Fuy>M+BJD~$w<_S}t05eu30Zx0 zY@63>XVnE&D1?W7TJ`X=YqLl)aLQuia#%=I0T+h2JTg>}xHXpEJk0-&oa#|W8|VZS z-yAN!+91}zID=jg8MrJb@I%5Pd6Ew1UByq1QSAv5R^35Hit`!NkntWhOZDBY+(VxwVWUT#vxTZs*kkEr)9vJ*$aRu28Z|*_pk`G_LZx^gp z;QBV+`qZ1$WPBePeNc&ZWRY~>>C$~vLa@T&K}2kUM|*-kJk}OFwDSSD4RJ*Yl!|Q~ z^ah4F0~~Ob+h9a{M~Awq;nF$Q8q4g(h3hb!|F(9STGbIHMQk^g-v|8H?Cs!WcWemL zn;$e`eQU;)G_~bk%pu*tb9M(PjM#%iCyo$V`DT|qBX`-w@GMq{2;QSVnSzEd;ju(I z5;*(w;FZ#)C%^&@O`KAe1zpx+Rg|o-*CId&?9I!R%4~oXa$G6C;?}xVTeGa`&v&BR zFe|UF7sA?(7>pM1LRq)s!*NViWm7FrujAG=Rj8O!;)*Pi51g{uL7eE%t3Y0u7?Y-T zekCDmZ)J~t`mtkij2(|2xaa=AT=~z}Z;9Z!=j8D>zF7nJT=DaRG>;fo4&1&9oLfDL zIS6=V>~wHqg>~4DbyyX|N>fp{d}Eq7<;ivtx{%s^eO{taG&c~mYAF6lm zq*$U9iS1f-M>P`gyzLUPoGnqyIMj-Ef}^hOYUEl);Wm$gO+|*)5^Wv`^*A}MR80J* z^`X{Qp_IAy!KG=5OjJ@Cl3;KpvtPaC@8cf6_vq#Tpq1*^?!E0U>h9qbhWJ<0jtzdc zZ^JfPKu^N1zcw0ifTM^YaQk9R80#0RyFW}x)ziwBamEOE2Kvs*U zzxV#>UTOCWAN--v3h9fWRix8!(OzwO-_D59eZeJ5P;V9~2cC6cAr@7E0Dupv=9?U{ z7P-SFEFI}px{@sc8O22((76;21P0M3^tc!OZw#D*oc~PdmABs7*P`iNIi4j|aQc^Z zx-%SOY(}1|fl2e3aWk)Q|L_M=XZG`Ue*b8ct5UN4Cq73r`|mk%Y)^^-@RHP#dmnqO zIV~HS6U9K`=nfXopsjrP9WM zksAWM3qxMzW&@KiaHGrLZHgVZwVM#LJ8#@XT}@a7g^#JLs~4_J@cK_?_^5}vdt;ka zu1Gb&?iSjm5w8{&TIBlH6ko>3k98`8wL~GJtFj89JSDWbshPd4qj-FiUDm1%D6n6X z4m@uLzXl5ti)Ne+3VV_~S!zKjN@%%~7sHk$H28eDKBZ8e+ozR+yI&ufcGnN#{T&u` zl$vPnP=s6EY>l4l2AK8gcEl1%)e>oiK{vV@i3I+BnM46NA&HPR@NnvZiM;;f88&L6 z9^agk$Q8*!PlhhcqWPJhCA~MS_2H&K&GKyvBr?`*f8En3Q%isykC1vL44_07_3rxg zF!g}UuW!MQY&Ul7PZlo#;6#YS2g$X8eZ`c6#o)sRb0?nREG)Qj+QgR53KN}|u1#^r zJ=n&FWz=_U>5zh54S>tF$GCj%*O))XN8}0*|J>6aV;u%bEF77s<+f*OGViqo%@Vgvl4@Dz5w_|a$_4*@quSDk5MA^0fZLCYof-w4=tp+8X$ zbV?}l8!p=Wy9+r6!OZ)1&DBynU2C6M4Q&qA+NZCs+ThoReWIYKE?oH2ux{u_=$y%J zr~duIRM6+0}KSa8W~2VGN2?lY*{6jFD6M6p@GMTF#}|4 zA&Y9?Z~g$SEcC&Eh^8q9!-koWc6DQj2#KL(ky$w-EjF20OhW7wBA%2NpSp?~7{(kF z!`drBKyWz;kLZChNYR}-Sll_lamkT1a{KC3U$V?tWFLqI{=c~{XYAcoSE?EPn z;h`KGn}!|j5OOv7ND;>t!O{5l1D_CoC|HkX2k`T?g5IF}G8CP6fLe*%*erl18K8go zds<*Ev>`~~#$GYUp#9NVoSMb4oFRkOWZ+!xsPutxX1AE=0B<@w5A$d`9gD|jK*l46 zZJAb<&C0ep#UBB+MqiEzTM?VPTms5AtjvCzuP7|ki}bk`o}AG!!KLt35&PcF?!940 z6Bpv!*j1Z1H9h&8!g>;jtBN^QJ%o>VWNBjg#5k*hrCwMT*(?`*3?SaeO%hq?OoCcL zL$I;t4lkr=HBE)^avpIc3XMc+*Q#1wh{vl)NklS^NG+4FseeJMBsr&>37i^Tvtq`% zHG7`F6e_c7Ja9;UA2V}q;@D2oxvQ;=Cg?E?dRksLbqIEDBCj>m)XA)N3eX`BPF41 zB@e<#cUwp*qkfO>p!(4kXst2%BAGyFRw-LBJ&Q9b5=htrXiE}Ew4NT66*1kJ#F;vl5L!y0DTm$h5VKYe zB}zf7FF@RdnAA@&y9b*H(U^{o4}lBj!sO_wpCk0M)sW`^v_Q;Y9651VD6BJI z_0R&gjz8^9WE|P>l4tU3`aN-}^(?9^^`Lr`uCWx@41Ys^LT^zpn+S1XeV%6u*TN1lPIZHp zy~(=x&`cO}Wz9KqsS8aN3Tw=3@16q}mR);MuX5n@u(u-2Jk|<5*)N-}+rKN0Cx4NbK+uk1tLdU( z<1iUd2^OO_`btWbopXA_a&i_x4mp2rPf)coKerj27OQnW?5k?$+tZ8tfLV+) zRlwTSY4cdS@&gY>kB#Pc-PpuLwbYv{Gh(@{u@1rM16<%JXXVi9f#-z^ zo?X@~cZvWL_PtrIZHhvM+R|fJHq;Q6L0zOlUaJT}C z^a1Pwzf?`a)8BX$Q47uh=Vpz#-I9X6Ti6ERH-;u&$s}Nl_8akzUj-|n)T+U0Zw9)# zt!*ZZ#NvCw48;!=kD4%?WTUThgv?rJ6v^lzWFS#dRHwWK z3Gpv=p_0c@>I7+_R?Q`6M-&z<2gsnfItz7IrhPc+Cf?jd6`os!P-g~@({}dTQ18wc zzJvQPL-ta<4+-2x9bge~cr>9X_B0j~oMQrJMoLx_93Sqr6s4a58~VyhasFGv(ZJ_G zXFJ&hxq8OK((1XMbOTx`6o!Nrn=~ah>bcbS9Rg>5#RL|VDaR~swes`w+$E!MSTt@~ zyRvZKF!2GgJqN9~u{UoC0@{RGzkcsrQtF-BZ&jOm`z!358h*r z=;uFpm5l@SdiU-ZFTZTKxB<7rG2J5`HRjXA8hA=7Lw7aLp#(*x$A<-(8G?i+>ArV4 zvOn`(=WRJu#BT26bsk7EF>~nBj0m=SSA!`q)pI034D(M)T9x4d^%|6iIgTm?`)Q1M z{<2jhQ>5yl6z7caB-Gbwr49NLwLFNjfwok{P}Ekj9Jnu0?N_3J*ate|Q=(m1N1iiT zp$03$HCQPrPp7Hfv5i~S1@N$if9a|#!mx^ldR}Ycau{L^0}-Kc;Z3t#(~^M9sBIJ= zGipm}h3i`wN~|pHSO^sjOc5LmqErruuq_?t{?6TvDHT=@JxZI?L zQnFLPQD}{nB6H#S<07(Y;0v2l9jfO^$#~YH2-cTkqnF_t%9WpLu(DA4I#=_l>?5G| z10}xlocdXu2PFoUqA4P6-X%CjzAwl7RgBE%yiRC2g)fmLq6OxSMxnRijt-{I6KV4* zv}}$>!{J-2wJo#q^+se*c(1*0I?pQ3Z&@}C3P@%Lw5ZB~^ANYe;Q>>8CW0I;m_k%k zs~UnmSAX~N4PzL@$Wa^^@a~=LB$$(revBl4bWVS0cQve}HBDKz5n^n-w*6I70bFM) z2q@e%fmHy4uns!wD)$i}aws)BvAzrmCx}q-7ogA!|AB6h76UfoOcqu$N3>}Qp%>c~ zTHV+bDdjp6H9QfI`kH7gJWDv`k_Okz1tE@(S3hI49!3m%sgu+(;fj1sA_|v>tpmKX%WbS1Cx@%C`>(xJm`H zZr5WMfrvOE>B3X2MfkmHL?u0inJJoHe0B(%?a+xXIV1Xt%KfDCTU!7~pyfnG;e7=j zOMNe&UmE%5Bu6e`-Tz$*T_+ONSr+WLeIi3B;q)K5X10FdGtUJ}V?2mFco<2v26u6w z8VuD&NWF;Tnd@6&@68ncjUU&5&Ey5Yy(dE|=ijkrydIjZY<16)>nCpF8LiS*ZQYq* zyqJ4QkODNq3aQuGYoVPGf6&n-F5DIK%Cn1iXEbB5nRYWqbm=hsyB(twkrGOHx59Aw z-aR>)LYaxc=dEbw^LaPdUB0n}J^6_aVjxR>m8DK)NlrmUY{C7qXRLIq0oyrfHF$Xj z;Fre%|6|eXi;R*0|y>br{i{>w~nW2Tz^;qye>x93IuA12sVduew z*@fk$52~a;D5tW8Cm8ZU$L4?|{{wzuFM2SffaY_PCK5r_!+&6$u46MJ0a83?sfGiz zc+e~z(i{arpf_BAlHiqQ;HV+b9h|Npoac?%!G#e^@?zNN?gv1Oqmd`uom1qzklk== zn^1j|G3@2F@;pIx&c5o&4J@5t_5Di=f?+%~nJfIy3{Hl`jXo(_CmM4g$dZVd_1ofF z&$P)-qhrcUYCv(>$z=|)OK6&Z$T*x^E~fLh!0`oe0Y#8AUN1ftR?Xm+7hPaY5Lkie zrun%W3}rGvC}z-|zw+?%`LBhpi~rcB2&7yXOyf+{@gb!dhc@S#e4#=lwd*w9ZY1Q_ zbVy){sz4^>F+Yzf-4;$0+f=b2Cw5iHld=liq4eW3h=~tosC~l)fn-k7xqD4LKuMY2 zW!Fs1w2BqX6aTlbPo|PEplK+Bx(~tPiF)?@<2LGHg`=;>q%rsOe=Uiux}-|tUAB_? ziYe!{@a63LhYJfq_HnZYSFf4$U_-I)Lz^HxN^p*}r+B-+Sp+&$I5)TW0DZrRCd} z9GZy+s9Sq)yl!of3xqQDOV@ADJsb=Gn#5?m4LY6jxlaMJK0lLVU{5 zAZ{P$6Ck|BT0NbF**&EgdHC4+7W64)4B)!#t~@EP9pBE7$hqlWxA=)1Pr`)GhLF!f z92E=)NgWmz?CJn4x~MQ|nAn=2vhU<ROUNbjqb#!O zN~Au2C`}9R-Q-btUn#I%g@@GW&+=$xd^HwkSPEA3Zm<-roQ%R&T)biFTq0dgy8z}e zF(*~4yW`NCtmzO4xl}Fsf|`~^To+T~O!{E0bxqtUBMGT9Rzt#~o4UA7Lf(%?v^_-4 z9PSe47jCjTA@Y$_i2=F75fGDF3!91CY?9Qdaih#Y4{hum-KE!e_H`S8x{qV-8$T)~ zvAy!m9n`2{ZUz_VPLhY9?}=;ID#${;AQc#t4XzF<*L2;I4W$cq>D3`X0al5#LKGDq zBRGdpoT=In{R#iNMpD9dcDBBl%XJ2C=#sQRCI;Rie8t(N8nUgy8rKNSJZXieTV6QKmc>j>rl^`YmM*wRQ{i5t15!;14Y86v zD)kxYO3mhTRcg3&RQCL!${WF+omI!B)u9yC;B){k1D9{`{8_np1OGBKAPUm`v~z?# zXM_XYjq4O1f>-$AvMTrFenYi>^kg(zAZReQSQ=$+mpCkw`YfZyS8?=QS9h!O^>(R7 z(;X%yTvM=;Bj6V9s=Da%7_a}%3>;0jxq%jb~B^g!;zIy|QvhOI{{ zV47r0oyOSRUxB)qE>}m3mJeIiy zx_CUo!(bl3rgJN5)a=L8>7N)vU5$gQQE>c06|*21MomcAaAwuQngjtyW2w~hiPw^Q z4((6F_!T3$b@%4RCklvcTJg6xZV9o~I{p|S(r$i$3JjwlY`S+LLC63v11t9j36kt9R!x5iOz1l7&3PUlvexd=e3)&bav83XR!u zFmrG*oCXYDu~C(PISRUOaW;h_5bcyG6fqL&>|Aj$h5QX?_)%6B3p3;jwy$35{Q2jP zvK%4I)-XZR5KzIB603o2GP5jp5%o0Pwc0Hf)tTpQJvtt;Np|1<_0x3Jo1w36!&SSx zzDZJ(Kot_azT46Q9NX=L%u=2zssc2tNz3f2=@Xr7V5By;ciLxWGXIitCB6pe8pm67 z;!68oXmcoL?qA%c;b}D-dF$*AqZ>9p>|krPysDQE$OUGXEM<(T(cugd{1Qrvn^gA< zZu`RV0tT7`eE0Y&_X4 z0KIP2K__c_7Vwa`{sMT&5|pZF{NEY`z38Eu)Cu*Z8Aa(XmI&y{>vCjA&;xK#jrIeM zoL(Ofb|0P}%MSfNyUhke0U+^#-{@+sCu$0BU4;IR= z_$)a`%w@1>n5GRwD;Qz{@cQs=Jh4R};1}wLjh61sE^kE#?>qKV&8!&{T@cDMs~0Q| zyhsHUY6g?V5R0TO)m#}vAFkyCfiRQJ>b&~rTK1IqPfdwZdCxC4{%M!6N% z-oRkD-dryckkp@}8#b?_XO;bzEWbPy%UPjEbk%Ph5GVflfH?D2l!D-)2c)5$*fZj2 zA3r%Q#HwPW^1O!x(?^brG#`JY9~@Qks?`@${TROM#ZwbV-KElL#x^q~JX@lcE9MtY z3}XYy`k2zDVZ)3aTcXlZ|7|&SGGMn=m{fMs*F>tj7a)xEfQOmVlryP|VAEUr?|+|}QvE;D-UC3cvT7gCd++q#cIr;u-h1EaeYPZ< zvgwWV-a``7dqPM^2q6g=S`tbigd$x)5dlF&P(iVwq9Xc4Q$bDr~@B57Sm13wh35PID!fpA%0UnHsqAhpxWh$M2U%&b)w8>C``QznrM zL{hPkp)Fxie%K4bhSIi9vw$9JJlrjh9B31M{`t(XLZhiGV&r0TG4KuIn?L;Cy`6Ha zsO9AI@9mE6h)B{OI&`|aTAZ#Kvgv9onW<*+o+nmyDl`hvZ-w41h6tt7*5waxef1pu z(?^d6#5%RG4%k8gs;4V<6jOKvsOl<^U*PQ4IY`Y5*ZU5IMY-u`ov9++#OR z2y`Mi|H)%0!vZSde^Kt?@~WYhgd3P(`o(WRUGKZ3RHdx4EIl;?guVKY%r|^B%Dw8$ zJcK3}-m|8VR#vRI!6)y3I4Z@+X@3&SeP z9~~-%Hb(c>=WnQ<`@m)=pj5KL{m-qM07P>`#L;d>2O+=0L9o7AKX~I?cXul6(w38t zfBR)1MY*94h6=}61w+ufgDd^QVHht>`njnIOn&GcChduV*`PUfAF*HUtquR#dG zer*dh;mGvic~R)P6Q!2KjptGJnJl5V(qt}lkX6$MI}aY(*#v2`pnlz!&8_ZP_iZb{ z@>Ru6&n$yxT;Q#Wx^tn0JY2>T=%pN9SO(OdPAC8mJ7mnL_;rA509+nPwpoM>xL*Za zc+CNc*Py*@VVcr!sGvSQB}U$jYfQ$zAk=ZId*n*l-<#a=4sENpJ(?en3p(X};{-aL zq^CQ5DObG6#P&qfFT%{ScU{n)0bDY~Z-E-RwYaE%oU6(+VKUkMdyQoG%WV+f3LDPP z&k-x4KfN?q;zxFfYZUgML3Al;Geq8MsOQN&S1V!#*9s0 zB>UQ|jpYiTqO9)DRBC&~7$^X;gVfVO+jA{a9HXZaWVyAdzt7=xjh%Gcz>CaB+UUVL zkxC`3+CqPoV^K1=x{q=YJ60)?-GomVJ1{43)1%ASSlmKLH!#vOn{gYy@WDj=!hqR77qf|7j3N;~>T{e(R zew2W=ymEXFB~>PI4Y`#rA^X+J>Vg}eSt2&eQv27AH_`VRKR7D^sBq;YTZ;KQr3DI> zT%Gb&Cx>?_@dAkD%=uW1RW_|CRu?X;IYTFc%+8msyY_8s5<`=7{hE#I8nvO2KzH!< zy(Owbxp~a0TPE9X{{?{97Fpr$XVzp&mT$p}$GHg(jt77vBXE8at`MLjgp_awR~9?Z z3jgD#dV-TQweRrI&6q_as@8Cu5;IVCwVVphs^F(m#dh2R4nt?}h9mImUtR^=y|>BZONya(xD|Ldql$wnjL4oa@k#@B+)YO+&6@FaX6is;h)6BRte$ zz{Iz3kSsYt7Z)U@X6S!6TR=_IC?aoE7SCJOD25qJE9TLU6NUl_wj%=PkKx)8Yb!+s zSoVj&B>j(ECP+_z7d;-K@A+;yb+kjIhA?CAq5T~_t(+_ z#(VU2RYaP@Eb(p!-xor*$hC0;)215S&cq>W3;JMUa6N;&lf6CHD8gVfopBi7=4BLy zT}2MjwPR)oHA(VBbH|Chx_~l~Jav#dA}`JnPJ0TtD2u>^M z9_JyW4}a$`ob^H84bRBJNWLD@(?KFO*V2%&v+(rrDrGTF(@-)$!iC|U8c)PpggqiC z?pY&Gs7f21*bnWjFSt7e`ez%a!Z-xU#8p9uq}O$LrNp2WtvgnjzK{#Y-y9?3V(%&9 zd)8EnRBA!llFiHL1MOS3T)!CfLGvUfvzD%0*>rU0w}EP7mbL!$7R`Tw=)ah`9{Rzc z3%l09jBu_vvjL#SpUu)oSn;qYl0k3k(m%ALY7vPfN|*0W;4rr(j|H2H#wAVd#`xHD zEcnDU*@UaK0XC4(gdV{oe$&@>6qi5EDj)}Nt=2%;LTb4;HLUsEaflR3P)j^5e-7JMJfwPH+666;H zi^OK?b2`(avyS%i;p)#*&q+zcJ>+zMGge+o<~z?|HdO(;$hCZ+XF(M_WCRI%AX-H(&VES_yLr_N|;lmMTCoEyFrrruftqil`6}JbpUASgh=;J_DtVh{<{(pW`9uq&# zsJiIhWF^w5@bk@hJpHKezJA&0JA+bEPv5!$vN1ixcN`^CCT8X7H-LzyBGaO$W8{wm zFOj|KYD>gYqv!ee-*o^XTc9ijx>yFDzQjJ9`KEk&g+uK|jm!C-`64X8TIIrxAi;pwECPd*jv58Y-I;K?&&;IU9c~$@UKXkmHVD97f6E#k-O87w63q zA}e_CgQNj4&iHh*aANK%3pvb;qN7TfRQkz(rBd~MhMHPa#8^}QO7P*AXOn5qJ{Td( zg9Xu6bzIpJP8a1c#?0;UXA{6AEfg5rcWkK5tKG7b{#FRuTTvPGfD)m-YVo`hPsxI% zr~V5gj1(k%#>nKa2JE~YLYcuZ2Cp_$QFvx7ykQV3zHHPrdyN zKBjv8?yzXuQ%O<{8WN?Ac9_+q@Ti2Q5@%Vc-lI?7nB$091N}qf7J3ifxj!f+rhH{2 zuSCO)U;E0jzEqDwFHDSedRLr!YU9;UJ<}lY5VvSd0r^~M5LQKL9}IHgRH2-N_YO%U zSrs)=21hdT5%I7P?`rm7m`A=1o)*j?rBZtccpVa$p{G(Xqtc&|e+LLFlF4L7jiS;l z6&c-9jaUdxGW29vRo)**8y^`{s<t!ITQ>U#G~gl zDdaLJND@^cKtx0;shpBxEObZD@q?S1pkr8Aw{pwADA^9y=H_c$7Nki%5BtXR)%Xd6 zW#HHbJvQ1#J)i|hn1VVaK9ylMk%Ln4!QeGI&q&h$u42OJZ~3qS|7I8bk-m@%3SoA} z(jUahp%_#1TYLJ!YjL`;;rbc)vRNi3^1Oj}mYa!*nVlX~bqJ@dqjh^KS8VY~`!7ai zi0dDQmJ~y%0UT*zJDBUcP#5qP9M1!vo#b`e0&L2wH%4n>MZmNk4I3 zA?EBnM=~1#qDA5Ax>v|&K^VjWhl?$NZ;1uG+&L&awXOBYsRVr6*wLNz@N}%&HB~`H zOV(JYn(M4xx@4N$?V7r1*&+n6KTIUj<8lSaY^p$pp~)oot7PYw>9DH z=HMM?VyD_P%iFV0?s<1u0IUb|G9TBsxG2jwgZ- zPy`BfaBuKmgIOuxq=y%ca}SvyF$-H=)fQ*kD&qnb4027%bXsKrN(qxWDI$;pZA%Th z9jJ=}%r`a2b;>jfDN9Yv_2~mM7*YBkM{CS=OPvR~5@x|$SlU4vtSn5(0%XRQwB!*Y%uYzBMnJSl|uGUawsBfU} z6zOYg3}uG8I&#fq^tsH_#D|GfAhQn>t@p5Y)7-a)*?}z3!k(U|$frH@JcI-Q)6mq= z&4BqOSBk*wPY?+eme3&CKzDD7k-l6B5!`$%V&Kh3JEDhXbRKlhh&$lr&R%q`9Sbf2 z9`V(`HdHT|6eJQ{HozQm% zM6+y|qlIN;O(N$O;3jg-0@+{k#TsO}WG`_xNoZ~sV|L?d{YIax>!c6oudR=(b=tNn zKvx~L&={}_4{9K(HyTr&tV&v$0L1n8UR|+E>W60a(Gg2{Y!wJ%O9Jysnlw>>)@rRB zm5hVdUdFN`VjDouWah+(W#C8dLez9Xtc|0~o--9s8t<~YCrlwvX~*AvxJ7EVh!a0r z-y}+VGRADEC(w8~u8L6;7F~z%)ImfoX8=epkiSxW2h*2+gea29?J;w*7{+T$OT$Fh zW^1ZccwsE( z@D8M9WEYY-PB^*YQ7e}xaM&tH4_7YVheXhDg^K#nI-^9LJS;h?aeNvvQFq>Gs2>G|Zb_+Jz33`O&r zQe}RsD{~%55H^moa&Yhv;Ggv^+}sy1r_h%N$1|wzGl>3kW)+=G&Ld*>+WHr@0eaiE zWRf*jFnei}+$?EYJdOSu+4bawq%toLr0GHB2mm<|y`9XU_lyHi|Cbzx#-tlpE-C}i zwq)ssR`2z5J zRLV;G+B>ERjk57a7n^@y_SjCjMZEXf8X95JX||iaXs ztVF3LeZJe(^(z;a*@_n|{Zpl`q19YxX>WRiRj)ce38f#kJv(P|*X$yDZ^n|td|7be zyg1XSU?zaV{R8)nDlZJ@ygl4Y0eS*DZ)hb0FOQ)PJCe5^f_4}QbVY81StQMsX2@Dj_!V}X^dPMmh^Timqu5#`G_8U9_LS{BoE+IV%=ZXoTC( zjMJ)>48tNc%m^fku3K+Vj^4eb&#o+xnPbz}IC5Mw-lq-qa%5dFy3%L@z6^b7<{P)CMn@6wFRptJck1-5Qb`{|8AhMXAK-mMD8v2f3 z@8UPaK%HV6bfJHj_QXhh@GEi>LYIF<1Y!78V<>vB=9Jho>BH9n7fdd=^aHm!3)N&$ zH6P2x@rntL#8o(d?IwH6rC&7j+oC9>FeX*#WFYG~6OdtV_4b5XukS>U424>m1ZL_%S?RuT_(;Og z9xcJXmX0YmkiQzKVN68fc1f$-JL?oytDI4S$d0AH1{4SbwUQQ}g=~Z-z*^ALVF+u= z(^l(PLeL`PD`!}^y%=%QQOu{>=&qF&D7Dr35bb%% z{}R#CBDlcX+8X4zgl&fU8uFZ4rdKr19MdAV<%8mmrdR<{kF;kaMA(=;B8Vde2nR>( z;m(c+4I&&~xD)PG=Ej&ZZ2(!{d}S#CcN+7{p_(TjgmVsxg@X8CTmpWVid1F2Yl>V@A^4vV%x z)9`j=5j}5rLw=wv0fbk_**PAH<~y=*Kx!B;Qy7NEodew9At-G`rA8J)fsFToGV@57 z;;_f@Mcn91a>Dgx(KZ6JBS(|lQXrqA&Qoa$t)|iCL@BH4(W>;&gaxH?+8d49A>{eX z+i%m!9XzPb=?rWHP+RA%h3*@C3t~2*O&;1!w_wz z<*M(*C-*-@m%|8wCxYK!rD?E6tc`i(HY6G0MIVgLQEUJ&>787B#Mcr~LB0SkDwsV^ zB*hKW-`rx12;hVArXyW4e&tv`XO<e+kPvNpnc>gw1Te51wSMPUSZy* z6sVlfOrh(^jdb(&I0@%~6M!WIGR@hhO*0V6D~CmP_-)~v0tb1hzKu)?gh;uzB0TF1 z7ITf|d;$wtj(PdvsG_jT54}auG3AjTiah@MTr%tBN29Ne0p!EzH&&NF+foSRp-xR( zEbYj#ScZXI@lxzJ_qD8E2~Gbxov?hyb#rTA%!F7b42$G4mUQT=W=(PH3#QHPD|GdC zyUJWWW9Ysd+rhJjP6JYfnLTgEs{pCOQGZuWj_|nfKso!KiARu-IEW;V5D4QlVe>m5 znj{-@E+oX!ew#BlG^2z;O5w7vPN1ZSll-BJUQCh;aPfiDptOTth?^*+?luLeD#?^` z0sT{#D8I2Eh?`nzM^B}RG-(?1K{Ln5(;2?&LOKIV1xn<$DBBzbBFZ9&jvip=D^#Kt z`x6=frx{)&NFbI4wl9$T*Do07#Cn<~F?k*sUN`87z0CSEa0fE1k$HqDCjaa)d|}{r z58V^+^qfWz2E>>eaOna1bhtZQV0=q+!>*g4tzR72vte&iUX=8S^GvdK(1Uo8+(MU; zBZvstkvk_OFHcOW@4Z)6+(dA zHEIpaqTV*@X0$Lk{{@1pY!J*~j?ae^&_YlG6MEa3W-N0QfZ!xsf=MettYSDcR6pW) zDuXm~grxYq7y(#OhD2TsZ1bx=01U_;*td`V{*F780g0oo7^)cJqDl)9fiQ8g1EcGr z0@+8J`snz%ZPG?xGpPQGnfx0=t7mt$>K<0eOJuPP{bIACcV$FMls>|;5=P3(1VVNq|ac!o7vvz(j5^iGw=~ zz6N;Smp8y=*s5loi#db1KQycwPO)QzQn1kVI*bd5GyPW`G=WQ z4h}aBL-ZjpC>V(`m03BwU3PXu@ct*pGfI(n*Op~8ff=uxeB4DZB&*S-+>OkH@+BKO zq@dX(#R|aIgchj@D0B}aX{2nh)8GNIp+bdNXSC9f;t$g!(Es=LvIuLW>NXG`hbERR zPvN_$LJQ4l5F4T%u9QQ@v*Cms4%~Km9*m|Ha=#%BDm+s(L=D*E2}luS$0`;lSC14= z@T=sE?gms}kP`>}ElmGB9{$!G;glz1fL#~vU>|!d@KXxJgEr1&AH}~{BO}^Vr-$~IWWee7}$;R9jlp#NNYYGI# zyfxrholR0L^F;i%I6W3&m(ba}>0we$-y-{EHn%2kv-LGhpD|axHie2MlSqVDw0aL!?5UfDGXec$1Ny@Q{&% zlED3R(#tWJ*1}J8X#&Au`q_&wG7ewqjFJXxXX~?;z7^0S#G<2EHrCNdR7=|UM>r$42`93JM>HlRmE_lMN+aaxT>^ltOK;M z+m!t$ujg1(WxMX1nf_Ur4G0R{p|(5#MRfHore86td(Rjk96Q0RWt(|*To%M@F@&;n{90fMrVI!MawYiWIp~9n zwP0D;)riZ4zaP3~JQ_bFX3)%T9oSjLmJIytgIMF)DMGzoGU;}5$T@pes~9+rt!w8M z&>sMx>hJ2Ji%^?lE-M}Qf=tIT5h+wNus0S%>(0H+^;`G(Va%9!>nf%$__yHAd6RCe zlE7s0;!Qo({qa08OlGk5&20i!z_UQHd-{XUs27IGY;`zc6c9Ho4J@COe5+QWhnY%t zxj>Z@p%-fSM@6=)>RwhD<- z`g~pU!CN9Q5iWFS>s{U2*pgeX6KHkP8As;&7)|ik0eV+!qK)x(?_cPY6{ri>o|tgX zWRKb`)Sdy!pFbFIPG8<80?J{_;>poI>!g*PVy#BxUpw8QPd}E!N{}B$=$;6vjHGEZ z8xEBlquUo101hm+&s;mfzkZrsY_Z7-7H$pE`W#k(59tvxr{}FGmvptjP%<7k9BOaF|8nN$@EgHVN;%H#6x39D0WE7Ssikl4i74}QfodT8 z6|{nRJ+4+(dS+HakoUH4#Ux1U8Hbp_qq;seTL>v%C znFpfuc|URa$I)Z?PLz-<;%(?x0!Q6Um&_uGG=yb(3| z@-4Mx%CNq>(o|jcgP5kQ!eDEvQiWAD9WHZS#TQ-WM^_5eTFLyq8d&W!qz**6919Pg zohr&U{gS=0aF!-G|N^Uk(N)L z;Fh`jr>Zm=b<({Yd)xtpUI4~Ru`w2ivKR$C#6ERJ6wm;goS@|}ZiM~F#J+$v4Z00* zm4j^5>`o4c>hfFf8jBPX5sFLRki=>LN9%0>rPYs6WzEfuPCrW4g5uA|0eyi(8Wrak zkg=m-B(JVhTj-|01NrtbAt7wFKjD^Pj}{=HSuM%eT?Jq<)G!hZ0)u%tS1FPn&#tyw zeH})Z$s6df6^%*eTkJi3-}`&>h7BvKBp_B^GH2 zg~$)z6>=4jwSiMZvRwo4Ab8V-4vq^7@Ofo31dJN4o*1E(XKu{zU)UzH$lI1qv?dB? zEp3#WrHzZH{)jB3CmYB+UGzK23bK{%q^TU%hWWC7<&tusk(RF5(9&`Jf&yi+7SxTt z8{P)WiqO)w5*pBQmln}A;#u}ppp>t0^H;G7u{ZC#x`9D?r&WuGK#+`dA zqHV|S?3SCwP3zVy0Eiss)QiY#>3=Yj()WMT($)&fs+Sygv4kZ`H^eUz8M&cKp_N1V z#UUd?nVQ^F+#ND23*;tWS7}wUS*s{iL9b26{G<_#-#U}+j1TFw$RIe{Gj zHl{WGnuD32K1~!|UFE&{>gqhNp`zq$hbPvd^=sNAbXVa17iL0BzOc2iZD+)@1RwY#Uxyd@LI@Wqi*_hKaknyceI!$;(L-iA70aUj5V* z(00OOE40tVWjc}DBL>lMB87&2R$Jr|+MFQZTcW1#`tqQZ8WvhT2UQIw>&0N`}lUrvOKr^GGf92j@dPANfFAxwZWNfm}t*!cN}?KO&gn}Su8X@r)RdU37KS0io@SjeHarhPYuL8c_Q{|0)7yqBWS#*08A zU<->w?Pw%hd61$U&!NjFIkFM@dy7Wb(gZSup=7?Uw&J7KykeJ90fWEX#dI0%1%k{$ zqVq2Dk%>9^z4B3IuqDq8hKCN=m;_v;SwOejFluw=I>D8?GMlfzl3S;TdfCXlF}R5t zm&lbjxV?l*f97{XKd~(!#P<)NCGV&Ehtur9KlFNmX6HozASE6z((L+xW;go$od<4? zvr?5zX4Pw2Tu_g<*FsaWPz-Fj52B)?@!jA?BMIjpYRcB_4uS?wV8;qyO~r6|zygoLDb1g}Zmq{u>Xd;#oh-j_n#)q*lFO`8nWK1` z+g^voE~(s8N%DkrG)j5mbI#IjOn@|$0mkSBl>JJ|O{Uak~c`S1Y5j7jG@jDWho^iME3Yl$ReMLXR=2{U(${%CrN?lF) z^zr%imT}Y5OR83apy|ZNVj~Kgz8~5aog8EG==obwvY=5{Q)g@kHso$)QF&g}={57{ z>lKqx`3iLQII(F7yQy&^;;4DB253u!2)K#!oQMHt8gQ-}G;@jn)7XGRegx`=z$qyj-z?N7oBiPKN{oE_lh&STwV26NkB_Fm$gytXfx!*s^c@yPj0wzBPOP7p zF9U%$Q}2>J-SuM*&dW#D8TZOl)6%y_*u}=+hIs`NC^NdJt)#`*yrJ11d6X$D1|Cxz zJX92OhHb&Zmlz{{uyAmk8Q;qN26m^p86=G|R!^Aww6|mD@TaNN{HSwsJruTT$NsIu z9c)ntR80YSqUCqz5YRdM-sy&)oWf@CGw-+4y21Sj(HE{Pcs(8c$rAxv=lXKFRZ_gd z8=?!2#b6a=>lHv;(vnN7Nkgl)=e05*o!y=k};&{@pmg5U()ofR;*@c%2<`ddGz zA7a}Ykz|S0!!ckvx##~*tk%E%wx2$pG2*Wcq5;)_uuKF=mqk$IA2B5!7FR*+!M`9M zX#Mhm$Yr$3j8bf7ud;wa_7ZWR4eVup>)qoO-KYH$#0ofxm!YXFWNb`RH=`HsjWjv2 zQvFaI=De8gR+#ewSRIU4&=q+^4v$?_SgNHDx0%Y^60g`*tn9VDe$%u=kA3@I6q$ zgN6E*iG!H4q&2KJXGp0-!5T7IMwad<0dnRweC6^~>aR>yoX(1oyFpFv4j2X{iXGqc zL{jgRl-5?r^acr1EKx~J;6wa+<(ZA$U-;;%RaI@qVy6N` zH5IO+B=y-ec^z#a(-G=+=xWOU*d6R$o#O@a!2*uf#M)CS1PX1?8!->=*$tc(0@W8( zMuTw-fFlh`4ujWwmJcm>94T{(R-8I~6H-IU&yBST<*`oN+^B>#Byj7B1JI^oL)D^1crmi3JaWF`%5^?*u)-!O< z-q2ajsyT58;h(z*Bi81rmCig}1jo=7`jje-NUqU{f1Q%JlUwJB%!(On1NM7jWk+9J z&cZ;sMc>>@{}M8%%5WY{S(JD?ZH;BpfV8Ax;PZ-Qo4oP~4?-;Tbss|9VP-M?9j8Xe z4VHo0s+j)EEV*uTSfiG4+%uJc2*lFPwbRy(JGx=IQ&}jpja{^jG-{@8n_xqU)x6}& z_qE~86`+&FmaeWcdq(%TY#_Hv=PO*rFgdmrP>QeVbU>}P^1II#8bF5u3cjC!j_h`4*SW^jl5l+84tm=HrZ*NkB z74-`Ou9<7SBCTH1xndgGXP>sb4IOsJs+n#wv2#X%(M5LxaO1{0B$lg*RLKY%)kdWN zZm~e7&=9Y!ZeF3q5{k-Q?s2XH=Y$q(!9OobQ9prKlhmflJJdeT6zdY*ta$46s8X3TQMAZ6L=A$c8cKwXc~2 z66g%4t6}ipEhH6}6oi(I6Pjh+*R?wy2sswDz_chy^DJ^xL}@Vis!_kX6^Ohyw76qF zLx;{AP2YkJ-_NccI0PH6!{R2RmbzNYptwmo8oej(dvG+733|@mb&ySLF!@V^%O^)b z?nr8A>zXFjG>*@QDM%t?bjgR-d~BC;DCFxoU-(7k zZyCAR0K{W4qj1R?iBbcOyzr|B2ghq-8%Q;nSX5}k0c@}fc+v3rgAv82ENCjZ0!6`E z7N6aYJVD}c^=po?6J(of?|BfYC*^Op6C zDx~nxi)Joav9fWD+8Ga9w3bMsR_{*0Prx((borwdVo>;M{N7dxih`JdQo>>5-^O_b zLYTz{*OI4{Ji^JBphd)qE6uPaJy1cK4Oi-V*ck9Qh%q z+R}D*oUHqf5v!!EDHA5Uu-7!QeXO8N^TPu*5Ub5V) z4{xbJO|z0^uj`u@Oew%$*X*01Z&@;}KmN<2CvH!#@y_Gn?u_~@7XJ}##)02LjNMm~c4U3>?Dh4WtHtF0qPhpiT zJLE}!BMWMYu%Y{k&U7}VFP+rq&^yOZy2J=2Y(OX#vlj}ST}el&y}ReIru(K^5wIGo zwiSi;hCW^1uyo;!VhPx*f^k!)luw?z-6}6q7u>ddMoz$suSMg;QB?-%#-}|FFu zFx?C3v9O}6Nu^7V9*jDnUHOXik2qqhr$o(Q2SkRp?%AX19}IF`ORETk5&%2YRuq$; z-E~)({+zt8P3^75OIddP{#b0{AsCzkB4m@7chH&~0V&cT9)?zWULimZGa(uQKjcM# zF<64F!RyES4u0AJCn{nza;`?45ov)C3Zp0x{)HbhJw5_>@Ted$qy`LQo`-PltD@Ds zmFfNROCiqPR*-qn%DnAI$GtB|W!2g;V?~+HptI-0d?~G6CRGXLlHy8pv66nv&oDv& z-{m&FuG%WY-X5t^B$kQ=%tN?Wg{HHhXRiU8CPK7U3M934&FMt zds9P27u;NyQ5JB-8UZV7u+^;TnS4)Bq}B;9eD&CxfXaX~q6r8_F^oi^oP3Gozb)DS z^?!}e}Q z4b=p5b9yByh{w-_)lol;2$y<&WNAc`3JE~P%^#w7R+#FmRF$f#I?`EY546A>q*i}g z(t4&(o;u-Gk_P&NtqF~e>u?kEQlz5D{SkK2z+50oQP}zP z_$rIH)zD;W_nWF6v5=+37EQjE7w|+~Fi8I9Z2Q`_`+y_I1iv}D~5EldNHX?nI#XGHXdriIr{O2NblquAu@>7QEN zn&VZX<9LMSIiR?1?2W*Qb(hUk&$xOcSD{w6|Sb)A{O5P-!Ph|f3 z^;o)O@VRA8R~E~G9E6W184mOs76Xs=4aLCWdhhKQF7^?baLj{e52ufomQJvgS|+S0 zDebqESo+BqQMq2%TFNRU&MFw&emI;zp#sQ{lB!;MYthmcd)4eRW>bqR)T-&wGzZwY zbKZ_4DS_4?p7Z1(!nOt5iHV+u;1~#iK>R`(DyV#%X;A7Q{+2^{ELCX9?rKGut}(B2 zWv#pf8jH)H`hx}XY*yuhU|S@9NZUHU5cEie&MEY9&yv>W`uXMLxWnS}+6t|K;AC~v znATFI*pMeu)%9__u%S?!$NWvBhNhYU(hs+hYhcT|5QLu*+2G@Az{{=?zd)PC{&<`o z$C=JXCX{}`g1tRq@;O!X$JAAm5-^HA*juck_My<^>zzK#r}WVp>Sd<|zY3m!5sSVT zZz~x$CTWLKkJ%rIIHu+dInV}OWFO;r1qOJD?I7761Cr3#QFAjH#qjr+ZR+Rx&$5d6 z#rzvXo(u$f*eTQmotL0mJ7TCY>_MI&|DY;QOl&OYq^;e>dXWoevI)o&w41yigUJwT zIS4c4g$n^bD26HaS`qw4K<`PXUwX;z_0ozQFOs|-1XsO+tA#hRqK`$WS zNhnGR<&EJ;o6_M>Vw1WEW>`yGlBs5CXEgsek;u1^+koSUfPKxe#xjhHD|E2m-LN6> zzg=`zo=KvuugCEz(R@Q=9ohG*FX+eNqcAFh??2+BsXX8`;Aj~n)Q$zh`hv-qoZowwhmS$YFod6eoS`IZ8|cW-gzh%qv!HM z)7C_#747Xcav`*>m)|>f&w?%s{aMrTZh7=j$4Cv)itzt*l4Sx#^NlzARMkrsPj}Pz z7|HRU9;pNeUP@F&iZ;qbo0B0z=2;SC4R9JO0aqL1}=8VfIfPViYsP zC|GlBgM^H~?JMC>viKd7g$R7mund8kxVU&YHkEw~pvA?>?s4^T?iGx5(|L1&d@OcM zbL-*bQJ75~KD>jTNXgx0X0gR8vy|BH4e9emF+u+QK1*GxJR~crgvTHDjHN#be@ElHX?KIQaQeJ?^z~*#V`rzWGam#C z-ce22H^ZmX6f5;(4vou6RmVm(1hg^!#jf@e@IV;e%*OH*B)tOIPQbD_o)ouhgGnxD zX}(@d;cHSuh6mhIHmDhn*9^tU%)+EVSJty-hR`aXv@TYt>P?u!liH!Y*)ksThCQ^2 zF{J-;>YaZdkEtv|N0AHSJ28Ptd;(o@fvBjWKvY_x9ix#~tII0$q)xfM$RkZBThEM@ zrEc?z0M`2uG}idB1`>B8@MD?c8Ta0}X0ih)MEPSDY`v9il((*1S*NgwD;F-Nf4Foh z2#r)92Iv<0xk09FL@td#V$+lrGCyP;h>wZ&BC|herQ<<;ZHP1q)HI1y#A&U8x-$B9 z6pca7U?JFQ^zGe{|MKH)!S-TnF5E~+WUGhGKGY5|*@t0Z*}yTAi(Mnup2zg2A0v)J zO;LDW5+>0l7X*tSTaGR3g(h-w_tIFY=I*d6?gdG0afgqr45%4Q4IPlWHE6lk z_B?W6gt8&*D0;wWVMm9WDu>3SW~~9oCe5~0Vo->GqTwFt5)OOqbE+bbJ~xq(3xoUi ztf39enDiwlqe;*$(K7M^4dLf$lvB?2cw5?)d4SM+6foaGb0IVueEuBJRFeDV1ek*Z zkCWXwULs$J65aQuRc{3=DCNYF(&GEnBR@R2CFnErzNT|MEBW+7B+>W`&;5$K)T4U?~5A$xKp zoqV$WLdMHtvoMk}E8tlKGl4EFC3|Qs+_E5$1>OWi^99#rjNFbHr4wU#A9+1RUybD> z8K#n4h|@dn?2$uU)~j~f)4$BII@T7XuZO$ooy0|dxhTY({`BIzzQa3f>UJNZ%X2JD z0^MMb!JXtwP}m1LbR+TJ@h8L)+Xoc|GcfkZ%i?Y%FHW}%k83+wMsJx30t7H2k1h(3 zr&IK2@x@)5(CW$XWTg|AcBcQ`dixl8>bO^i-8<{zYOS`l667T9)l!L=SsqG%5r&HU zoG>xdFg;C*==*G!=;S}2kBEV@@4fU9eOV1SvjuSG<1wNdc+F8DlL?8c0{V17M21Vn z_;H3T5ZWD(0@p*#nS>JC1W181^p*^~4+tj@?`J)0cHBBweTTS{*TXC>h6pHQ_^xqp z*J7*p-;;WP?mHN%Tv!nUJxuya!;yr^zpJIJ!&Fry^+^jV$%i2$NQ^Y))mCjNx3$)* zD@@}TYpSBNLn@m%Ha}jg88)5>`l7EuLYWiMe+|6qDFl5ZnbiheA4I0;&7WN3tD00u zerdCX{8oo07!DOW!#=aq5{waZ84Lo~R$GHl%{{YuUX{!ZI(r8mSVF(Zaar&cJjCA3 zxdfCLmq%rav>4F**bK zWj>*K#H?!$x@1;~%ipX|AJ37)F)rWx>08N@>fpXL#VWVlJ#Rf3KX8IA8+dC=h_SV= zpX-7FV1>)K`yR`gukmj`+Yo}fD@esgcI_}t)vree93>u}4;L(h!UgzARJdSDz?PQ` zIZ2dxMoJLqtxS}SxfkpiobG1y_njF z$I21x#VIpFI+0~C@tk4a!X6=;ag*@LKHc?-3G1K6&u?{7O5xZ)ern;(3XO{%@vP{ zun|%kN~=qzyLGNv(R^1bk?*!Ad+0;-1#TEFKR6hS3oFofootesCGH6`rnadqIuZCz zvB6BA5_q7kP;M3L>s!p{ay+SQ10hCPMrgJ{p8s(9Y1m$jvqVrY;P&InPGccwhLD5D zrw-N3VCs;?y+=rgIU~*EnsYcsn47wE(5lh_m20k5MLM;;?a0YEq-xQdchcLtwEhZ- z*($4SI|qFlBnid*N4+pZ3o?h&dU_C&h%y-@5jAvT$GHje-ZKGC*6NB#i>!)0N^5X< zkx+}Wu?WGjjjb9RY+9jQthbaaW}IsksR3*`rI1%IDNHS)A%>o67$$+;i$@D2+V!>{%l6`|l0G2*FSj2&5JJKp+y)-6GYK^^xU~_dqxM?n#pl_xHEcbNkeF);PAh z9ZO_J)q*Ahw&iL$XOGQ$Su{ioU$_boZ>)p@ixWu>*>Ji9euAKS_~YWoCT8Ew;L93` zzrE-L2)=EW+IU?1Nn|vINuF4hbB#6V;R1h;-$3z znqcjf!cs#*aCn57W6UDb_&i1mZ-%Y?Q%+QP61|RmL~RyEk^Vf&wLTSsQtU&4Cuc|} zT#Rx;(+4hZ^I$p_EjqVwVJF>mF!FGOoC7_$2*`rPP{Qsgs+(THJV)xvqwF^_=gLoH zE#?43oH{$~d&7gyobhER3$_lRKYr%Ja92IF6wpU5rANurG+`${rE60T@(>-*eGYbO zjK)MW7{ijFTsQD;)#~j&*`&wfGF&@Kx1)xu68gY!bk4_n_xfl$8H8~6R{umlNYYlJ zra8-vQYKnbgWXRsXE`rJu;=D1^G)Sk+ZvK0czPaR)60jBiR|DPd~L8eQ)amwE(Gxe zENhV6m5p16uW`taGP9G(|6s?!BC?74vC#QahjZ$(R*_aGX#R4hp}ESXbnZ6DNZ7kA;TF)&*{mP7vFtt?FoBIW-@&(xmQ1TZ4)mjt`UJ zY-@-bfZ#ST(S5+W;irtlGP&h((E*CIK%@X=b)$%@n~S((gEPh0g0HKCEK>n&&v0XI z}YNw>gUb(bhUt?>iCQ$pesFfZykxDgonNF^d zR@LWMslNCADgP0_N~dcpV^k7%y-X@TNAy4S(z|jPZSrQgL^I*u1Jy9^wRHPQ@}$5P zx^rCj`nsxa9q_imC1Q07xHnR$p)c#1{%}|v8hD?bkY@4m1D~0f!H2j*=cn&1%w@k7 z5UM`{p?cO3V#jA4*LgFjm4huCn5s76Ux#@@-qCT*8L*v@z;bttryIhL5NW_(Uq)*m z$w&;{I`Tuv{ALNr9ds^!9tZ}1nNS;z$z~9|ED0f%DV31sH-V!B7i2~fgV@;NHPf*Q7>^S5QHW`!p3=y{-BpU2A8$uyXkgUfINpaRy!K6_G9Tcyx9o{V_z-pXS@8*iKvk z#Z3*{HL#jI6j%^oZid-rE*O^TE}#uCdrcd*!R)o;BQaO8@b|4uCWzsI3o^l0j*5w7 zLRcxj$QJlubM)l}+~nEPsws8N$7H^r>uw>-2;Xp|rM&c=bya-@iCoId=|zx~L+J}mqaWkFbVk(#Jp zR7b(3YP5o)#g)2Qx2+s)Rzv+^@%hr6X(IpP(022LHq@US4F+vKP^(vu+RbSpf~m&d z+$FJv)s|{pPtK>2HQK zNY}1wk3JPCJ2*~~FCVk*XjrBbdJ05xxrl&DztCMO0-au=r&zTIlnlQ|N?}N@Ysrmw z_X`cOF}Ll!&i40i9gNy(*OwQmincvCPomWb7CyYEoQC|5OjeG)A3CK$Sa>&fO2Ytc zei*8hOpFQ($8`%#@=(mdY-2=Hflmm+ZVwbV;?evvdpt$oHH|-3FSAK24-(m7wM14> zC{ePpYE_}@L}w>!7`J(HhZZKgD;j$iM;Mo(xUb8ucZ?pJ{&j3cw+<gz7&&K(PB-It5sU?c3IDEbxW?YE zM$$|fvo3w(zD$(Z%4pJ`e$dq=2n)Id>Bn+dGv+tp^k)%LKXc~EnKL`+QDzSPvy8q& z&ys0nIqVbPq<1D``S}R|D2&oRJW%3i2%_~L-H}p5FrDl^v zQJq{Et%)v-X|O3RZ}f&Sb9GJmVSBTY?El(L<%;HyKoK$P#*r!83AoerQ42?{1pW5C zXlsG=4j(N21Noink}+j-7;xZMwhCp-Tf;yFZvGEnXy<%=%aD1_9XTTwwyG4I!izE?wHqY~Kt2dlaEy;|8#q1(cjHXp%&?Hil;GCj zf0nc2#c$6hra1j`9mA&6UesSA!l=G`%M1bBnrRy%_ZVZ-8ss)<%gip*FUSgdw4br1 zKl(TtO+TMwSC~I}qn+J8a=-YtzdaceLv+}7;lq`Y?eiT{x3X~6O+EAz?|2_*_HAm@AF)7-Oz z?*WS@L-!zKx)Ddi``!efBFIYI$V(87;Gwg*1#HJnk3LG8UVW9Gk3QC+uMIWaF|_9cX)}Yvy*=5CEEu6 z;wc8qR&LFgaue7ZbD2mvCoaj?4DvD>^<|LVN1(-MHfp$xgR_RE4neNmQ)V+u%hI}7 z^k*4!iY%qUt8zIOjydX3C54+zS4B$b&$gnPkhd0Ui0($2RIuuH=U} zLQ@crtC|cYE^(XKQA~dx73&J@s8pTrQVYrJAy6ZW)DwlMz$cT5|2N>6*&)#C#V!5L zHj$r!0px&B@ssM59Fh%O(pqRS@?)>dN1;c8MS36X3h3yb3lfWkgb0xnFGaJ(T$*N?sKcTIk*@LZZ z$%$2}^fNg^RW_+CN?H~6Ui!|GCHE{^O-DI-t+vkzx4-4c&KPM(X>H$$|o{es8@TrLKT}&)1mD_ z`i}qB+mCgEc)Or|?~wx?;UIm;$0X?`JALIpU%}k$s}m-nzJ>_cE1a=346Ydapa$2B zg6vnU7o7rEX3eY}f4=&fxgz9YrYQY^E-p4!6e4HBQ>qtDB)_E&7rB$pzBd;8jPay@ z<;OV&PsC#BJ-G-X`Qb4AruXnI2it{erJ!ZUzTNG$f&cZLr*G070iyC>1OmcnRN}*O zJSbbK2QGIIm?U51wB@AS(62mjjMb1PFM?QhGjt#ygOkp@d&CX!fYBq47%0HbKx{jL zt`YK!d7Mxz^6(A=%Qj$RK#r6PGMbyOx@A1r@I?zKWhy%qm5uZc94(e2R{Do~nR)5k zi9BKG-F}@wpC_5MF?QMzp4PQ<(=5EoxS%?APFR7kw6kc2m!+05H<;W z&jO{T<0}+8fqrxVEd^RyzP1ou{^z`}WIMqT{r!^)k2n0lhZQNfPh&YrRuSf-nSWx8j|l^B>HQbV3ws6PrZ9I5P_ zFH2$l3x6Vla5Z^_!qy-V3156(m+$w3om7YVNaQk8PvAYILeY=Ny_b+v(^? zTRpZ+7k$6f3DbWrdr#jtj7Y+7M`bi}rzX9v8pnaWYw4_Nxwl$hudA)}y{MHcs;j~4 zp)F)kRg^y}51m)(aII(VY?+-k3H8uRIym5o)9FQ@9~LhUfb{ivThs)Qa2>0%0J3rj z1{XpphSP!~SYdiEqgH$5%ao z@K#F8EmgYaLm}QjSs>EVUhBNmi%sIKkE90P#pG-ar#o3dg+o#L>Zb%@q^7ghfZWmuzVNk;au1hYE zYxF;g?MUp4Uz%jL(+%Wux`C<4smKCt&;b%9Fh@Ok7aSk=xXL%WTezV9DEMN+JHuoP zU;g~n3h#6RF9o7-ONi%(^9-yNID6mm*jHd%i8u(Ko}zDKH5NjL9CA0E`Qy&cmpe4w z5rNSt38w;Yrp# z7{biF^(IkwznzH97KwY&tb2;?0j_%I{70Q#iG|h?^PG6hiN8ft3*rRufH&*4{m9cG&?ieHcg7W z755C5*Be{v?=KnM+9lR%gk4)lthvXFEmKGI=k)66r}v+F)&W3vo(Vv-Ri>VbfCsvn zU1g3wdxd>!PesL$&0+M1OFMVXH$l!TwXeN=&{lNmIF~!Fs7L=uEN5FmJLGf{-Pqka zUd-bG!WZ-b*ac;CPqr^NjxZI#@Uw0(&L@2dik$sB>%MUd2xW;kU4BbR|C|PeUDCL4 z(Do#@IyN!ox%WQpQs{N6TsTJld6Vaak!i4`)33sl2G;^ZP{7`PYqA)L4~(4)dCBEE@< zKU}7Tuw1xkxeW;!&RMV1v&JrVd6@&Y(d9m&Sr%M5TGHWOu)0-hlC-Rxa~C+O|9c+F zHj;BB@-|(wIioIfNa$Z{o#}|KK^sng60){dNMaIC6J6FWtMNw4>o#T-B`nPyFHyNi z$qs!Z&AqBdO}!J>{yhKunvxI@%YH^A*1H zTGg)pF3X$MN^iBcQCnR-VlNx$D=h<^l@@*Qyoxf<`i_S+QbkRzNX7R@jBr;HZ;@w# z6G;z%DqLX@3+cQ#k%U^$v!GZlCU3=U%F}KQ7SsbQZv3jmOqMHMStS;DaG(lSnBmCx zRbiN7L^|!Zq!4F@4|KwM#Be>z{ZbffIoaI2nj7^)jRf((gEjXKikVF zRKg2h*-cu3M3cmV^~wy8W?w^@2T%ZK8G^jppj-#aH*ov#WJ>Lc1pRA*5vu66kIc1$ zNrM7xmjj(1Z>L`)G#Vs^)L`vv+Qv0YE6o*4R{yn8UDMcX@)=uN>K+lTKhO>BbCX!n zelA`Fy0Wq*clls0l;3>KO!aHYp~!lyiqM*9 z`{Y&8JrhuVEcop#@#D0iW?U4^(Gcy&bmYuU1yp(#T!U(f!_t_^V(NJPPj;YIaS1a& zcN@b_PX24vs()m&)txW|R1yWL^x>Me&F3!j)R!+lcgs@p2Wlrb(ZytaR@=ShzKwj1 z8N~|WMh6_;4ZH^A_ALQj*A1NIDg;S3go;4^Ypi@`+OQjq z9796n|5C>&jR2A^O(?E^09$~H$eQ z!!ZoMvy>p$gD*@uxtgA%#uU1r8P3q=WC})`FHe&z5;Bd>U%|*kj#{xq@UwI}_iXU^ zbZOs>z`KP@Whg8n%CV$%26ljm=@L_Q%Ee=ysDL8ydI7!im_hSrcP3eWkXvy~Dj z0kh%6;}vk=5Tj~m8St~mD@V*yphWt1`huYfcLBV{lE7xR<#;wgn``eJ$0D+x%%ykC z0!M`56cO2HtqF-tvhcb&&;(n;HNn;`I1mb57Yf~wma5dXrNEBSI|b5HKP|Ew-iwp# zlS6UZ&+D&SG{>!Q%UttTG`21qbwIM{ULVjIW}wON6<&p$6c<`hv8Ms2 zJ$Y=6iK7u{oE3oFZaT!KO;ff_*;(+zEM#pMkP4p*;PY|KQ20Kl*a2~j$EAJH2Y~g; zv*x)k*oJpLkMN)NV`t6wxTRh2{`*2t^^6{KwXu8TpPzmzuB~4*QqpJ{T1fBtX_kLMn;o_ev!^WZt-OKWv){*soGkpG$ZvN}sLWp4$7>)(a02v(P=FX1iZpZ97Xxs=%mzzu1i12TD#2JL zlAqYkr{;hka4mTDqGowJ@UWtwCOq~)C%cu|`-FWsyrm5-dyZV5f}}5b*@3NeIHWHZ zwF_MjMN}4koM-x?)7owgfUGHXFugz`hDODMbckH7RMa_FA3i>lCs&B3-+0kNEB%@O zFULh%mEiu*V|0Fg{Uta9xua99(}4N99LGtaoJsnX1`Px0N$6#xsH#OmK4Xg9*t>A&S7dB5J|T&EyF=c1r}!|=DQN25n) zhP-hih%tAQ?(RAeoBBC@j@h2O=wenTcR5&A|A&f*U)=&0@ohjR??kj370@^`IXK9N z>HpE+(rb9BMDC*$X__ZKl?>v{Ld>;LMk*rHPB@E4qiH?yj z_U)orB{-)f*eAgi`*;zYM!s(Lv2BR_(P@UcL0A+|{+yf+sQ}zt0o`0H(~x^}4Nr9H zKS5SA@rrJ}#WIoxkz`k_K@6@&@uv7~4?jMgNCZO<-+zq$v$vP-M2U>-XppJFL~Z zt2ttFn&PciN6=s~McJo~<|&xypf)xRK_EA*;I9C0cf5OD2;m4Ln%FJN37UMnaXH!3 zAI~bu5%fU%SC_z+*gThSl1^V4Fq!M>md`7#cg$H%e}RZ%dpz#_>t7#ufDCr3Oq?`e z6^uZMPW?N4*RZtzW`GvKMeTfcb{w0bth+q(hvePU_smNe6y;KF+thXUHS1bhOhKd1 zcUiIn#>Sie8QF0QJr6Vzfeq>98kEr8Y__IRe}e7#pDz3Xp%SUa55oFLL3s`fI&?up z3F98U{4-g?6U#J8rORaLssJ&V>Wo^U5lK}tF^_JJ=t543OYZW?fD!Th9Hh7< zNH=|AZ!~&mBtp7Ep~qpZ|7W5*o*Xr%v5GtTAdB9$^3`;zR3QIe62* z9?2>ro2x`RLB;Cw;OfwgVd%Y`ch%>gy+zE0m^o?kg$=WZcsH<{kDCZ6VWVXXye#q) ztV>}{Fq6Qw!mu-5El+B0hB7EFUOC6 zg8c11TpeLo$=s;OWRb*&Nmmvuh1EKR+-A@uJV0JAk0>k>iAo`)vpYJ7{@u=Fivkt% zD;hu(D+kjPyW$d#~C__ueZ0iuZ{7hq#jh9_oEClaHB8sjN-l}0fj;eEi08r z0Sa=G#@Su;N)w$A&nio{ZLc@iDyw9UvSmf5U%0CsPq7+I$~i}4%w)%jNfSG*xZl_) z1?vh$B3RC_iF~;zpRyLe!WmgcQ9Uh#{IyuGSN!-8mCRo=narhWkZUSUzbtp_!+MYA z+3(mz^>9R=<+)i_7RrEeR!B&uL@{^pyWR>r=Ub8cbb)(}-0)MdGVo9K4u(}Ruq!h@ ztl>wESndd83~Ynnr>Wgfu*4F{r6k!LKmNqiBVdU&{fU#;f@j*$sk+Ii$xP_!;$=5=+wLVicf0x0qDLAvJXfB;n62lg|darWnL zREnl1`t>^?kG=l~yGp+C?7U|ou%4Dau(#%CNtsSyvRQ!N4R>BS^n5D>j&eJEP(Ior zt{LtGN11q+o4Si_Na$QX8=IBbts6aDkMy|83sj*H&vfC_HHtF1W!Cu}b;*?(johO! zOxxN=`nRgY5@)GM!B2o;n{!=wPSPX?_^_q3_{cRPvk!vCABQdI*oFg6uVi4iPJ@>7 z3S4suy;{CPQ zcZe^3FXdd81cOI$Y>wx>FW;Agf%Cby&Vxbn8P}{ce`ue7;Z(UzGPrM1>B4$TlcG`4 zn41&4Wl+vK9e&%K^lvfHLeAdk%@{RZ2e+aNp)m5uV&#^%yHMO9@iHF>@2czna(ff( z(8_CnxqsvQyLP&v$zOBH<11BGbJXNC#~r$GY1#n{gSFq5*(Eo`ncUCW6y^l)E*82d zguXL4nRrl7!)1_61m9rq2?&K{ZSca4{Tks!B zizpV9nhN9A6O@|Hc4)ay!PO{o?_<{Hu52fN&eHi$biu%NUkIucds~HAE+JC_p{sA} zVHCoy>kiPPU4W08gfJ#r=D#hjw(&DO^Q$3qy$2dC<+Z0i$@dKSlaM%n9{)J`A?+mR zTPc_ph{5T$0!M;nyo66<(F)`)nNVvk(=^PV?t}|gPzryg*r$c;wq(4-Rgz58 zJ!8FrZ)4S{H+GVD0*Ki(m5M%lB= zuIqTuq+-HPA`XiQ31)qmtQ0@Ayah>x7VX&OBFJ<#yZpS03W;7=RV`4^9gK^XCdmA* zuG&hW(FuCN5`#nk?@FPe6h0U0?Rv(?xV`Y>l@&aNJCj+-jOOkoyiR_MpL@9o2n!C4 z_t~7NnvIj!YVz{>d#i;eY14xnP9}2KGrHC~Y4hSitJokib={q%%mM_CnG6 zF4%9#K3WbMcVnC}WD~)g#2aBEp067t7jx+@%v<4I0X0UUB>yj`VCK~{tzA@F=UA{- zkn80aInzZ50(L5XfW2k66hQwzOa` zY0o5KavbwuHgk~ie`p#u2 zuxU8sGc*b)bS~j`L=BfhR~~a?j9C*AZwP}htURGMD_(GY1tz0=(Fc|cw3oEif_MN> z5eHaHWTvNwbSd@vL<8sxxP#zxd`qWoS|v6@DtqYiVg(lY_=X!|^rPvH(yolvZO?Wy z)g3>)i(W#1VFPn>J~yN;6u+epZ-oI!mB735>i?ps!VWrzm*UV|1I&4h6GP65mlhP2 zaILT@$DP{mo@So_lrC;<-E;XBX_z4bp!7T%jg-`g;-boj6M7qyCRSqWG&D8=w9!yY zr3?_RzR6}CkWIA_eJKT1B5`zzUPjBlP_3izDJGQ6U#ZTa*P5C)c%E;uIw z#C}lnY}J!Vt9=Y}CwXtOU4$~We-LIpE9U@1X%mDwSSz?UPn#44XX%3FX#sg=L%uSP zQ|rb!2;+C`WQTBkUCAF=g@`<73)i1bEjDY(zr^yzK$O996!8D2B3 z=(@_Mw86UGm#-%R&`pum;AD1q72_7id@I1+g(!fd@3+rrc|+ zrN!nsaOzM027AG_c1!|qXV+5?ERHIG{7_*BFXYw0o7p<$AXlNCo=k%Z z46NKZe;;$e(|*FpN;ZuD2m{vBTzf@Sz|7D1x@?mBgnMKx-T%;u6UX98jmB4lWV;5j z=Bc>Y+{n74cxwzIn1z1)#*|X4@zvp5IEwhX1H?>xuqE6B3thEIc z^$H*H)Y$#Xdb!_O>j*0A6@i?$NcO|?#^a~{w*&_dp|^sA_D*_D+tcEzc)#d8A)S!pf9ke$7)Kk(PDM?zw zp;@(oZCjSR8_Jh#-u`u$HoN)0bNO2F>YG+2a&<*1IR_lcdy~IcSla_ejWHapme$TM zlbPCqew=(l72I=vy|M1RUGy(4n%Y*MHCPg8YkW~QefzLar2@i9ZP)6VMR;Ne9X`Z+ zfZgpVbKqlD&avbff#|V@i_3_$p2a1NT}loZ8iy$IpTVMH@=!=1CfUv7*%5gk_|FaG zu`D86T7yzy(`!ObB9)Z3$z>{`Osf{r8x!SQp$DrIXV))|dUp&8G#YXL`A^3j8>b>@ z(J~nRUy`QJ!D};lht|+7Me9%n8$LFZj;H3J0BVT$CGhYCWBln-9or zQx#{NG4`HaE@9k}?mKXb1L!*&$62RRW?F{&l3zieu%~CFL#h@!oGeBr1>-(fl@OE@ z(d_Sz3{PJ>5aSzV{**^eWpJS>rlQmt(6`T^T#%~F&oeyT9g9{G!&P*M{)u_|$7+e( z1J@hBt3~ZC`%!XPzh5tRO4N0U5&DiUfJ|=V*>VC@jeQA>k_vieI8%FC(T9Q}>@wlf zu$2u^lgDr|Ow6Hro>at`3zckp?oBq^gp5;6{zWA}@9ga8HwH{`b(!tGE^~UY0o(q` z<#zHo?dhtbi6W=ciJ@xjG>tQk1-Jxx9$bD&&N5$e*8RarxGjdt{+`dX zl{c(KbanNS*Y#isFSm>9M>@>(kExUk1rTsxjKL1=@w5gkM(ey1jT-#cK-pPelh~|uroOFr{)Upb$ADHeSHLG;W z1Wk*v?E>p1U~w;8H{3{*BYa#GVzZ!2n6ljOtO!0|(be@KV5Gk#FZR&4vz6#&jE+P! z0R4E$z|C_a5-wMRPYc}Y zaX?rwNywd$K(rwKOMpjAfAjj2Pd@WZc``X1zI~Y2e_f35QYjLV%d3osR*5b0#Im&f zI!$qI4jG6AkF zp_hHjU;qv-96UeX`Pc#D<&&*KF2E8_;UbHU4S1dP{^t~c-|Hw{6h>#S@EjemRGP_S z84w?oYZS^-qcPzo5~-&hj5$OSwM@*RJ^R)8jsC|78&Gb19oPKx&llGpffw|#{WDH*pC&&$pqiNK`r=1itGSqM|}q3p|Bzb+K}`vRv73a z;N^IV)X2=OzinUmyj8}d?*yR<5(c|WVENwLO;-68IvFD?lY_dnk`4z!WbGY#p3TA9 zgysthB5dvU|D$My%;mT*vpFu;B;jbD6WinL_$6K(r>|8rbculnU05v4(J&5A7Ffq~ zS>{kz*Q1$?6^hSmvIO*VP+}1(+ma@aNG1lC`=fL{xstB^&7b}RdS5X1K#v#6RC!tY z-iLo!5~Veaj>b9e3M%PA|F%6WjrU65sgonD*+8Ta~|kfcvY zJ8*A6-mk~m)-%H>bbSjOjDb7pELq4|w-(nn`aPLSAA;9v@*XXp)!_!AGT2+mwPxs( z50D!>;Vo*6YK7CJXI+xL2_?8BD|BknYYnd9nbmNJD~EdiH=(wP%4@u0l?sHt+%VMY zE@hJw7;2^GjwNz!^hamR<1h23D5`Z+SxY&!BQt|xYV3TC{%(2caCV)auAf| zDWED~_#*kVTldUwQaMagsZA!c*bGl=pfEuP>*@xr%2WQ+qPd^g&Jat7_dGG?b3q9%=I^w~ zVslt#t7G)>sdRj!&2M-xTK~v0__Bt<^>vxV9Rw!kC7ob6L{#{8i1qm7@+A(sIsTa%pmU z3|uC1^i7Kc+hJ}LvIO5W;9Z`Gy&Z$o?A0`bBsokR?VYr_#c?gL+%U$RtC_+wZrQDM@&*i_+o6e7E^2qrJ6l#S)p{ZEo~(A^i{Kli^-^a@k5;Q8AumcWg9yPz2n z1|H&K0BOzxb%}jbuI4sUL655tP4Yx~NNhQIMJ~r33*Qs^)G)sX>9VkVV#e(A)pM@* z@b_^dn9JfOyZ^W>n?)wOaWMSOj2z58I+Ue$H`x5VX(ZL)Lz0rnn?y#lJSjKng(rfZ z<>vh9S~$CC99RpJs{Zg@RQ#u;kbrL<$xD@gf=s(+~42NX1CX<(dlU@;n)F&R_4B*cIS?eV=u3K_e)FG%uR&s7vs&{M^GuVgvJD>e!Ed)J~se zdg!}7s?sjdTkCDnm4kb+zOngfV`$w>htefA4=ieKnm=HMLJ$PM0uYtIp_h;?iXx$b zOX#p=DLswvI0hUo#eK>yNnr#9kw^i&2qrs#p|E693>cH#t>ZD2am5?F!(V5G9(_JY^MQUSByN!Exx?HrnPi_4MJmTQx4cWDxIdXr0;6}fANW2S0RLR3kn zb?d6NafQW97yj|C=u1(lM&0azNhV8`SaC@-dPf@csABbuTI>#i&h)9*idA2WysBDF zt+xJBkG5W0qiZJbr{6P`50~1UGvfNH;Zm*9AEIx!=l%&QMSO0$$pdFp4!TG?$sM2z z%(fzsGekrZk|q?O@Fm{v*e8c?k9{RLib#9eFq8v7j!HitnHQW!pWp;NyvDlc`Z&GlYsyTsFAg^c-zsKVvZSX!#&VOdq1 zU0>m%S&ucSu2A_aJdOx_4ATWgo(!)l@ldQILL~JdaCD*I!)zsmo-$+9Vt_J;5$|GM#~D{*<7ls(YSSW zTb-Ilz1z_AP_ZW_pHc$7pqF?K$g;R92YW$nV`P1Zq(ktm@LI$abG*{Qr-w-?n{rRs z{Dsr2L^r?z`%3bc;8mbQNjIWM0mgq7i6nhxAuw(YH%GrbJxmwbCF>taV5PO!=VJOFV@*f}t6tYKgx$?Z&*X`vPw%K_lOM2H|H z_Yqk3`PK15J($n>LH_W+91J6SUVr^Tg}lZ%v_2*RrG{m_+8na+m!@Pk zap$V6@$q_l%IdWymo~Y3ogPC|Jq>`||HX6h9{X3fA-a7zIFBsY7|`@MuUHS_B7)7w zJVmudc%`6VtDb-T1~+IX+m;^aKT@l0HZ&Q0Z_K!MV;NvMl{@cVY^b)jXg#{fl3Ht% z)~j%NpGob>{Q1WEg$rlEUz3&g4h^~6=It~?2SDn&di~1pyzx&0Uo{IcWqd-covj86 zzFq7HiI9N>#{W&w`HJ%VYzT+g;q&2MtbiBpOZ<(WV`b%skGRFp8a=pKy!oAgSIX3K zxm~AivJ#0HTxz5Wp+pIa)pT8leO?e5NWoD)*slFAA3G>A^l!qKpWI7Fn_@9HDWkvp z-~&3RNXEsyqSgwY|7Oaq!y3Js$0Mq0FsT;F6aY^?ah-DMBM|}2LimqA)bwP6o@%OZ z{9DT>pMCaf^TLOVt|BJH4*`ps8{Cz#mUZaHhaBp;Ai0LZUHiERjmv~fl($;oGNl5Y zNs!kafh!K;z!?``q0ba$0G^y+{)O5X@L=E}oOOx00Q~^ip3iS%47pFN%&gp9W(2ruwY+iZokWE@5($q8= zHhPp*)o?x6R{I%M!$POdF{4s>Cumv-c}g3^Zzyr^*EEiHl!zb_8N=OgL))g&*s^fI zqIAmi>EVj%sYxB25p&oCCF#Tt6ka}TnOZ!f zTE-0KP8`Z+zlJgXyBH=*4`saAnzJV5a0#;(`^b=K#`osRbrv4YoH@>}Yu!_xc9&d!UiqnkSfoBog^&QL-a94)hd+Q~8*vGY7P^0_8Cdd}OY-gTa$G&ild}hs}n@X6^*=h7oMR zY~ZYQ19$%{Ys@_Q(o7;3Bo1A?h5jX6y`mmK^6JsM(5;#9J32nkWXQZ9WcJekx%OJp zcF#RP<$_|17Ax<0tzmVE8d+X^xk^W$YSWj?rNFQAUY+_`PEDRRQaM-y{fB)2f_OZB zEJbD&J>^O`5+}xHp|!9wZLA#2Yyj<60}brxlw(uw%9jD`1;JekAYSV+3E+5~1sB(q z`~5&_h9n7Zch36`A#rHSwE8@-aCnJht3lKPIe-Y(+~?DxUz@%#RyvjuU`JC>2qx^` znxO6mr>u=RfOF%^e7;2)ZMs3IH;C&)gJhbSK2#G?+eO~GDzREEWTa&Zp4L+)s%fbb zd26*fXj)eBfEGh|2946GBx1hQA{2v2GLL{{Nj-gQ$*x`cOr|-;sC^N!LlJ0J9E$No zVwpr{)`Gt$;4~(;R3i~e#6pHPHeH-iMtAxofBoyqq*ASEt0r=htxlw7o=DYFK0_5t z9*IIXQ|P;$F231+^C#f9rBH$_q>9%XGOKGU$%`uZFKV7Y%_lXQ_&g%FNx@-H)YLow z>(ss!x$gzpjr8xo>Xlo>nK#H3nOr5@{mA-=Tn!_Y=n6*|g(R^0{_XoTt@fl9+z8G? zl=fM4MFHa>cDR8}i*Xv-V301pWd|t$TfY%-VU=kOrAq zgurAhkC7>QuHKeA^|DT?r~>4G-{v=}yyZ`8qT4Dxjbkqml8{2bb#E{$^B~Q|>J`_0{>gsZmdGvO&fZlqz_Xi(rWY)g>{XX);uC7yG z)~>%GDjj*SLyAzy{%+8jYj5N!#AQBAhdx=oI`(lYRYF$^NzmWzTg;azL`jiS!6&ce z-X;5G4wp8KtaY%0Qk;4fw9oS*8F^|BzD=&m(1NZX6)+%0i??xiB3l-DKey*@6tiQF^h zxFeVNhQbD^RcIbeo+}gb_`t6=Xk`xDTk)DXn~gG$QrEk&hg=q=|AdqAH2IL{aKytV zkyc;~giUnj;JzhU6O2>o+lMzLi-t?AcOC@q(JnSS#L39&|Dw$cRRUYfAt1q33}bc& zs95)%==&l2=yJc%APuY>wWd7tSAlS+sCng_<3RfVzd`a?2Yn~yMN91?$m4k=t*q>B z=WDd0u1?dRQmI^E42*~Ueuj$?PY#N9&`^?DvO`sM(-H=`TWL;Dn-vUx_0lUdL)+q) zkCtUSlTi3-1kSzz*C@S}>@5n*V~h7`2owU~MsXcFP9zKG`NlYW;H`y6+Wh*lJ1YoY5q}V1?$4>ojYm6z2M3#p__21}}l`{c5bqQO$W6KNJQVM$ z26Yc45FlhYWoQCyZRFlGoGx4%bQ=+2^n@j3OAA;sHh~$3y0A=uOoknTpLhe^)~N<1 zXTTLiFmen=?b{-e+rr`5ot?Z9g;N=a83*y`C5=&IR78ud%MMD8>pmlni7Yu0zQx-lhN9C90hRV-4YOb#hUJo&Xx{ zb13Eq6U)%Tk?~4Tp8U&KXgOg4jOmIFD9I53oQS}n>@~K+P@QKcm%PFKz^y_7z0R)$ zY#uf+;RfTVF=NXP$`luE@sC5jix-+^`rWG<7MSaL`1hb&Dw3wFR_Q=``mNu zfLzS)19EY!Q*IPkU3QUN4(4fIB~M#kDk`f4H-c()d_d(?MCIn^$p@YEe!#u1qH7qI zG52z7;|^$_2+Mm?r=Bc!61(X6aw14QB(vK)mC)P|`r9!++dfkmTXJ~ThkXmW64?0%DxJF|uR0aq2rc&@z+!r?A zReiFK!(kB-(67%)sx+El4U&YL#F~52)?;fjxwAENT_>E%y1CQWHp|^L&5$lgEDhCV zLt=;9F7%45rB=y(twgL-H!9WQf5#*SqpVe`*MJshdA1#fY$Sn%QxXxIy@3jmP9yNA zJyO!4ZY;^5Px&6Mlm*^9m{_`@a9V}p(&7RD+}ldu35 zJQH?mmwg_h{8PaC4nBn^QO}Ot;~(k70h7&!r4@SaNe=qm$>7xr$%7jar$Eq z9y=VfwOg7r9#`&II{gTW0Fl}CO*<}*GBQDA_c@)i>V`^jxy)NzDJOThWOm<3RBRST zM*L2Jz!8`c6Bs4&QJ-D5Cn%__ZY=lGkLwNbY`MrP1qX`11%pB83Z5|#d7xgdSBQz! zA!UG`PIlQUhwLVxfY(Cx*BJV3lhUB#gG?M>t^bv2IZ5`Tf~tk4LlaSs`T1@l9D)KwGV#8GGj&GXVdnJq zc6PuJ?_f+|mIgX1v^S-tdcM(aW@n(#%A2Qwfk=nTCM>T|(MOq~P8vu{nT5Gq2(O2) ztL!>=82CxzsjHGM)zp$h`@~wcVD8R7{jwT+JfyGH1>?D8W%R@JD}(#j49ATUlToDebYpUeac7NXO<$i#*vU+K_ak9>rdMc`q{51dl3|cdiB-5&dr=BQQv0CU0=Z1*4dtt)E_KCzONAYzM2BxSHUC5_r2x9bdj2sYiA)f zvCt?va|Vekdocfk1!U8R31zMa2pzzj5^v=+dAo~d(vQEB_VAbPL=O! zvH2yZ_Rl7mi)fOki_wb`E@NQjuvKCNwVJNkb+t3QjKDav4zFls*3#dD>*akUNzaKv z?S>=8Z@}%&b@q@Tkpiv9*`UU9&Xny_b^+?o9wRJ1@LjVQ0(&oyhbMIDIuolmvL|Nz zk}-`{dE=iI4qlOjiff&{luT~NeL(_90rK{W%d@)|W2BmUZo)p@cG)&Dh_{SxA21P7 z8jQGP5~)d}tTjQC-w0+1GQJpl{O@_n=Pa&g8**y?8R4gC)6+Vice(RnJW@^Aq&K!TqcHOE8uhQnSx#S$LjaWHw86y_=^p zX_I)~-r+`>0@?Kd6+sQa7fU*hY&A9;JT{rcDwCIb7B?HcPKB&QrYNgi)NHMHE2UPM zvZDSo<_ds_VHme!-R1PkVpJf-lrlgo-pGeS88{ADr&NKsT{~2p;}c`>?C=?44Nw>c z8>h)B^9dP&=*Wf2F*zL$K;rf|dpEIZ!C6BgcSJU$Pn`)#00+qode3lJWfMh(*5mC` z4G15riMqCB&*38}n5Rix3VI)(ySLrFL~a#d|NC|_J!_3x0~)W3Q7NjO+wNG%Q^9k- zVZD|9G%L`!f}^0puZ#?~*_E^gi>;}*f;j580|OI^4#d+T@`l>pVKP{{nx)Qei>jpm z%79F(5HTQe$4C^a+>bgp^lD{ZmFtcjQ8nmrJYgk`h;gT8TvI=QnZW_#IXDm}JHuo+*KP~emLrS4k#CVQOJ+N-N z?LTCg-cKy_quhJ`YX@ZPTm`^Vo0BT7CIpHLB4>+4!|OWrOQt_WZ)^WyJ9#(xVT3H< zD_ZvK3oC0DFB&O@!e4Ogoy+Ux4vGKEmk%x9oyJzRMPeVgVl#Q2J`wr_J)&+d$(UiV z0Gv71r=GKq<=I+xZWIY`g-BK4Ae84(f#qBcjNMpBamVIG3#b4mZiy%X8+D9Ej{O33 zBW}4`e9(_@Vcf z24lb)^k@w-t6Jp-9=AkWDmTg%5>HTRD=~>r-C8WR=#!avMQ)S0RAg4RtE_V7`BRTF zM-oR8dGmDXA7&&>d(u-iuC#i9jLYEilyd*9>w zsc30DN$(qBC)}5X9yhz1`3M2Y)Oa8KY<~Fy#EPi}s@T%|PzqWi|Roq_`1X+>Z#!0eB1f=Ta?!XhJm^e|})sBC5l8n~3$dg*6ci5vxx_>F#a zc`V9s$A-{DyyqaSP1M~&?<$nuM&a$b5ZJ~L6M>%-(J5Tr`Rihgj*8WNLFyB#%1KEn z;|t4MQ`ffd=#?2repsKw(TLtHObE(uY*$+2f~K|@U?9NNm zS%7I%_>5HgI!$w%^uf0_8=Hr8I2#XA{Klr(4D`_WS4vb1JQG^Rm%Vc&vyX> zvt)?`Y3%5@hFnWmWD`res;}RG1|n-NyQUks6cKfKZfcR$AoD`YLaXDi!KJYRqkYKy>b{tY=bNe8BL3!zS#?7 z4M(QjhWQvYsGunTmCRWh*DMd2g%BXV6@K#)s80)eT0njS#rej~Y+rguivwWD1i$DJIgP>_hKX1GIW zktX^o6uCbXc|^>imCLUuLX&9qp0rXSg9?X{yAV$hO4~13I!_kc7nGFROPbghke3LXwva<1dR2&AzR(#B*5eqO(p%SHrjKtb zj|S?sQX70-+f?#Y(PzzV{2%7Sf@Xp-i4Xd>6U;409tL75&+PSm=EM|EpJJlJX6X~5 zHWpT8gfI+y8FtHvBH+%(P2KuX@>gm5z(|$YA+H$f(zE0ZByh}wAo)4f&@IIXjm)Pj zRs?>T`$HAzSr*w4%Y5F(+1+%e`B^PKu-x|MV zQtkZ43~u#81G2DUg_|0&4G5@bK#*hw)0=xN*U|AyLeq4Aq5^{-zBV(v zbGymCX%&bA_#w@!Ny+3Q`gEJIsaEMzRW}k>xjEPhb5*T@TqW+hfm@T4Rdw%1@5}uU z45Qr(LzW-B-;`=z7TZZbu$O|?9XF>el$_@^G&g8#bxp0zbJbE?iKIztbI?X^;~2=r zlND{quYZtN=pP}Ph`LN@0uumGs2BKAGf-I&<0huU1U3gt>p@Thz#opv1_EGbEGc{I z3+Jp*ctvTdfg8C7Gd~Igb@lD(r#;5 zGTUu;&s#FDq@vqaqHk)U8(=;$N?-W2ZDtULA>L!;Hd`ubEiFl9&aKhZHW(UVF6FDD z#}Z582jM;{lx{fn$+6)(p`AN-%0l$##I@xbn4E&0E}!XeGkiWDlp0}H4RI=0w~0-H$ZY2{Q&kEcW)^i{cnXt4)fWG zuDwR`Zz^tLhH?)QVMj-#v-4LGeT6tKDJSuau1Xt{Ta5IXta(8%(h|C7j6lA#KS@5K z7TQ&8pMEbky?rzWsrJvV{EC;-+dC~5YnNZ=?XhX~&8@Usdhj<{WYorgNa9b%$$8(g z9WgyZ2?uVd)SW-*5oi~W6W#LLuh9LfV2?he+xhLqiWYDy^#3nfz@#h9&5CM83AY$-bb^L>Y^LS3e=)@duUCYvFBOEk(iP2D~#s#CgUD&N4WR6}-6 zryA%~hQaNFbiN zyx>PtzTwDiLjs+&|Jnn~?exx+DeZ!>eTh3(3;L^bZ(yP4(yp#wLuvU$M+aSn?3$4Z zXGc_Dt!vL5t}aakwRM_6g3cb>#FKQ#vZ}6&Tg1@jtvycWSXM=p8iowrxSn3u{`-YQK6G<9l9H8r)ma&28bEiM7X1p&+g zuw%mk8eBn%PFIDoJ6v^ai9rA;z=?RPbI+g=Or02xv42{C6+ozf?mQwwz+b|ezxaj5 z^baU(@`TLzLONZF6igJ%MMJDoR<7l@9WcBJLwO|zZ4APy*cFt^A*{k4qqoH4PlEEq znmFA7^pU@zgb+O^bkB%%;1)o90TMd16_iz$#mtJ5OoB?u|IwcXUZOwtr-DI~Xx_O| z%us>O5A1l*y%b7)YiD?#zWnXC9|$vTzJC{@#oozM14KmbXM08C0o4gyq`uRyE?hOt z_VG8;OxVr`i<-lVA<={nHxx_T#I`TL+~xJQjdw>#K5;0%dC6tqy}PR%Q>;1U2D%hq zOJHs$)}DUq&D8?XR9p8y57U=Z=4x?8OG}N^pp!7*4#U@1dqp+DK#i~^Xe5i98qdEl z!jlO?+t<-80bx35!%tx>E~_w>l@bTm#(W6gV0y`vc2ECN-L8% z9AY`Ix>lp~lwVP+wi-l`s*8;l`ZcteV3LwtU0B^oWwLQ~?}ITc)L26R#FEe1eb9wM z&#{I1=)hK9+_+KO*tijasmPCikGQd6%Gn&TbQn)xGY{SBa#LbEL2V_t%D2vAz*-yg4G!A!v zpAEw0{&X%krqtCnk7(h^f_wBZqo)4O$G`si#TUy$A+iFTC=Hobo=oVDNo1l^PZZly z@5UcEbjhMczMr;*0R~NeuVrrYKR|QxDu6l)j!%HJbrjt?c)i>MQd3wYKhU*F~YlB@YKRTROEKb(>VL{d3S%CTQoE(kI%E_9)YrhD3zWZ`kGws3ct zJiOm`WOo}Fa5bK@JI$yJb&Fj(=zswiWRct8UIMKIpFM*!MBsIPMni@Z>3J4_6$!9k zEUd^^0k_1%i%#Av@%VBzlBtkT!9D{uauFN+pmv)0eY}zIO2G^hkvq0o`QL@cAEp#` zyRs4T%P#16QR zNoUtIqifJ%u@8F~F~3;|N(I3veLwM5U~T{~fqihLJxz`l-Qb)(I;tRXbv$nJrZG^M zEk|MWvK$U|{)KUnMV!X+Dcsv^aSB`C=kw%sIbb_~hXD`vfw==ht|XtvMgt@Mk;r1^ z%G}x$s5!0AIG6Zw@G3B8+OK~-z0bmbG6dMR0^W(WYK}mq&P~$KVyqPsU@2JYPDr{)Y>yN z;NXkJ#Fp*rv~@0ZIils>(ya4d6hr-Uv-AIP_8x$3R%hF=&!fHf-m)cGmZ$cf-Yaq9 z*m3Oay#pj6ki}kM21r<8hCRY8WtW*k83jsdOUr!AdfU<#3KXKlcc15xWCtAa{(pob z;aG;8anI|%u6Cd|Dr8z6J!-$Wp#?1*lGjS3BHdZ-?RMnFZ~yhL#Yd_vG+Kk-{U9gD zzy9wltx;f1MJx(LQ$&zq0v;hAv?U$w`jkDIrtWc>I!q1b?ibzqyb-8p8d1H>)o+wr zW{wqCQdi<)=1g3bl!Tb%ds)OW@k;utDOliPpvGGSlG*3N{OAFww%$)nGORQt^t4hQ z!D^GvHoQWt1Vh9y`dMbPbuz(cL`!G)bTURCWnJlbLS?%2qkzxg|LaGq1qUH?=9Moa z*`M_pHdLx|Jc$Gab8JBH=6Mn^{>uxm{33_g0+CE8HY%ZM4P{niqfjJ)U{=K06nD&T zWCLA$<48DZ=p1mtm(sAkBhVYH*t*FhFnPBkT(I?p*AW|;L~GutJ*k(sABO@!a6wGKmzd0cGMViOf>MU zqQ*JB3C{^Jwo=KDtv~W#nuqb4EPuMH=BgPp&Kewy;ztT;_=Oi57@Y~|_&~qsdc3Hl zJ3)7VWN53>zrX>=Ahu;_j@CE3*92yg>st4iqII#8Z{S&n$JOaAAo`==)UCQ4_NCn% z(W0Hxao}5)w~c?ynIK4uz63 zK{o>_f?Er&2^`fi(?!NEzL3?Av=yG04j0ORqh_1)sLAzHs)=2GEag(Pu*$fX+xVxE`&}*XiP` zN6k`)P}je(wRxO@)eWx-qfgTZZ&60A9pzv|cAyr{&w-D$eoHy&Hu;J0M^t&2UGx_~!~do0@;#N0DR}pOj|tvswIF?9B5{ z4|An3!+z4P?cv+;;n-pPFn;@QfB%^%M-J0Ichi&TJQ{Jpu-fGy_ag!1ikeL|SJYe& z)94S8P?GV%P_Zbl2NS+SJ7bESh=538=~$BZhgIt25O_O$o^~HFjz?0*A0K9Bgc43V z>1?QVK%x%mLIj+CI7ogVe475J*6D=&9jr&Fa+u*qko-+c3)SX{3fI=&q^U{kC6<$EostpYLFb!R*FCtv`TErbVD@hK!Qi4mK{ z7V~*(0Z+>n>ml_xa-@}EBoKb_#nFrez^v{avCAD3EAX#^C-2(Y1}F(uX8)CWluf0I z2?Ob?h-<;_$f!Y;V}?m@o`s8Fpd3dm<0s)~qmRz3n={)98aS-xbuH&6@vYe`B|hQ) zU2agsupfWj;=qoFeL{yg@Zuie`ueX_&0@1zLZP_X#+R_HNwG-I;XvFYus8fh5i(~@ zVGY{+Q?ddfZKhraGsRpTCfhrzn@#qUByFTCLtCn&8F)!T@v|3(X$&l;#)`M@hB7YU4l39ipZO-6#(nx`S{oN1fI(g7oFoo3UBx0OK>*2@D$J8%4^oJLCQOlCcjsd71sNYd|Rb@f^N$0&Omp7pFz16YgjEZ z!?=W9`tO&0-sxg)gX5 zOJTt650=iB1d63D8YDo*HD`m#frCRHAL0h{qYBTfEY5}L`h+cA9fwgYi9?}O12IHtBf%~a%BU|R)dM(g+@sJ+?Yc#$bDLMK@68`~gFBGkiKsMZtWW^&0&Z8*|FCaoheNbdhCzT?nRAxZ(8+?0`DS6`vZS-Y?qGznhx3?MfgaCw9`> z-Q9$OFbvcP7JnUI1Tqp^n{HdPW*EPPeE6-e0^!z3%4KYvo!3HNO_}KSy1S!t5NqbE z^RpW7Y6}ODrXB)(N?;JMgwlHaq1ns@;_(F9&W--I}mV;qxlIa$nOAfNdom&+>C_ z)fxqvq+nzY2^~72pd^#>Wbkq>L??%Z6e_?Z)3FRxBqtrZt{m8qZ~Bo>1=Tt5 z#>8$>d#qz?VxZ3(TR&#%axGpL6zci@wF~Yc`Yu6qHa@A1@WO`(AsSkXFL!hZO@Vq2 z?5@8>7D2bQ&#iK@+|sk`P0hHlEUSoLE=c4&!NW=%A%{t?sB;&Mg-|A=9&HrLwSK5rt;E}`=^8ZNKE{{?Y|X zXp%!m2l^Y7Ks~L_DpIZ%1h#lEODMP05tUg)Ss^PfQ0_l9-(Umm^(58 z^ZSwqAV-*tn=`{egY+SWWhcw6`e|%ItY6s@PC8c7kz^MCm{}(iYn+2V!@AeHy4+T1 zQ31h5=7b4LhkNDbm{84+ZC-}&CZ)-rcZ39cHq z7VlzWk32O^?16mwN3euCv2E$7OYicjoF90oLeAD)(JW{ zJX#Paxeg$A5+WFW;yB$Lv(3b*bx9uutrFkG#Kcj=6$}?R`j(j~j!xJ!;K0I)`2@DX zpY#}y$9wQhR^Ps{m8%pB4g?8fM$3h$=>{23Dvwc3lFghC962; zWy`jLBst|~50jbDG<<+zB>mmVP??wtIwK+*Mjj{@^{(0&g22wda$u*ChCp*u>}}HvhF*PD^Idjlij|9KYRy8iLo71a_Tm@EAH1!bCzr9? zue@c}x$VD~2TeIsP)ltHshohdwuyyCJI1*Kd4w`ZUo;T9Yv4B{Q`yk{2+GwBt2g)o zg4ncrb(3ps*ygs*8Fdze8MFj2xkLCCdiL#(DRWaK>ajp+m<;lgNx-R>pJ8xKS=tq{7e{+CdR}xRA;TJn{%t>mJFnA2B`{dBtLN!=HlVd{ zJ=LdZv2|xOZK_NsVl~&#pJQ${&7Q#9Lzni+bEienzY^XRzJNKOI`T>t#1YGp@!?He zv=6(`+E90J7)C`nNiOJ8%xsqX8kGS+6FeMH`vaP|CKUFov(Ah?Yd{xxJp-nCr9aH8 zf;A$}>=4l8FnJk?f0}8e+yp&5xRa&~yb?;j_b{e_B;#cKrgH8`ksa(L9719b7>fzf zG~{w>sJ@qyZ%DsGrQDkYjgzT2EGli4D{fL{W!MBj+mxR1rKKU56JE-1${RFwL&|Y^ zh&t)J?=qKPewRez)6L)A584bJCyuDDwC-L41Ys-BsO4pZHXB=|{IPJ7x-i}OWBJVkMkPTtSz&0ePYpCUU1a^0=@Vxrw#iPbX z!|>vWPu`ZY^G!l~GPto(<>a;Szy=+=+Kcw5(aRZpA4_`TBWHMl&d71n!R4Wy&oqPB zVC46E&|l828=7G!v{emDn$G@8s)YYVwnEfs;Yrw*xJWPH0AH2B?tLNiYViTqKG|_k zg0h;D6Tb&{2t3UmL0H=4_leNk5U>=?(EMx1=SdSMt#E+cgn4}ZVZAz}GO5G6j$Q9% zMoLL4K{_pjT(ALflzre7meO`?d(8#pJP;d0dM%K%mkvP*ZBEB5lO-LdZ74h=VAC8&^JzSH}-PsX$EcX-kVgCf08MiO< z^DM%)1?H%61~5m6+}&$IbUeXP3zHk?TeJ1cp(3E=1vW0TMyFi7ap_NFT?5gv01Qnt>i89vFs%|xP1 z<#Muj$b$K>a?@PLZ1}M(B9rKp#tr~{xQb{EJJG+fw2RtRJngLOuYc}_8=gZ;@d2dP zb%8$L)3*2$pfolGnRp5V!f3b!K zMlAi%XQf^v;XE%3;o6`(PDT%yssfBEF0U*E+yGKpfW;(M36(7sNwq8Yf)s-Za$`FC z#W;0lFcA!3nHtX1%t8-%mW8=3^BY!Cy#*Z4jT3U27{voZ*b%$75&Uc;{s5=~a&3-_ zHgNQU_2=M!UwGlNWjI;oprVfhNNT9n34oT$i)EjP=(H^2V@f8QGgzLu9feBQH-YtF24`l!cGeD&&46l&wi*#mKemfrm# zIBEjHnk3Y+(}yt(Nz>HsEv#M$9!C|+r=CmVEXe2u<8dHxD!Xag!hpLjrVQE%0lNeD+!KtFIJDhW|BDDEvF4h{XA3QJ__Zq6JNhIxICC z{!;)E%#c{GxjT4KpP+DN6fdrFT3Ocbv)i-y!Sscf?TG=!7CU^(S*OR-sZ{E`>?b&d zp1CNpX{AqO=DFuBXhtEmcQ!~}Mxq9lcNR#4gk$&~iAR%C*UMk2c66cEL((5cowtk? zB*(Rx=J;7gbHZ+|IfpUX<>OhYufw9#HFkK7koOg5tUJolR}vx?xN5sIN}i z?vn*|`Uf9fP>0In{ka@Iug#VNy0Wae)n1VM<+(f2c6{c@+i$N&x8kvS5=N~|*_THM zk3wYrb0F$!JN}YEm~HMkdyVO7+sZR~0PWIu_FCr_{Yct6ckw(YPfXc{=MCGs7TJtp zYppqDjujT*s=}Cu@eswLyXB@H#P*olO+FI<=|bqHXz}yVEdgqcy#JhL4w!D=Nm`b2 z?iu4ok)5v{I-$EIG`~Xuw5FOFYtqH%n`6*lWl>_c3`+MvKb-JeQ}&ELW&0R^^I}$1 z<(@z#f$SSou_I=Nnbsuzq&UDD2Eg4e2Kdc-U~rhs!(iPB^d?d=GUfgfGuz>IbIQi2 z6hP6_F>o=;7i7{E)0rIYl&hO0Y8;Z+&d#0Dy)%3EB%WzBw~1PWt)R3#TD)CB?Jk~* ze$ikIw@I5cL-^PBx^AUI1u_jSrf`$QFK!GU-)2aq%pOxJmI!J?+6I~3x<9V(spVTl zb$MyRG}8mqHr^h5LKTC>%3O$nlm%Tz3D|915$AM`W5}kr4Worw9L=KFYXMlRs5iA| z-1>~sXDsws0rsJ-)kUJW=<7#k*|hfIvC}oK0YI7uLX_OoZ{q8?`pf}E%Y==u2K>IBO+jMrkPqp z3Hn&JRJ1dNv-~rq)*OQ*4vH-(t1QNSR=O!JrBRv90PdFo)>Q z(jk&TMD2wGl%fyNQS&q85S6`HIq7Hen?N|^p>MU@T~3eaI2l%ilw9c622dg@m~%zn z?4MbwQEIq&7ovK4&Wm3+hnjh18tv|sC{?jWica{YH?=CPdX8VY|v0=7#It5 zN^A~!L}oF5O0jUR-IYbF3jncg3)G#I<{Jf>LQjhQ$E|crJZm<2)A$$EyYIe>KSg!2^x8VU zj%Qzh-}^tTI#GyVC{9gqaS2U2!8lf~?(&kUWbqsk7esI>nxcaSG7*MJrYi(Tk%+OC z^*tsNln2;~w4qW2i1uIk47;)D!_Sh(jI-d>kC?2#aKw@PM*X zh`iUqD}wL&yG#WNB1pocS(rLkj)G3huW5gP%b9%$6eY%@HaE@|#y@k1iiK-GKK_#Ec;tp1|Z`t%ijJ-J^WM2{6; z<5``IHVi`n%F4b76C}@a&5O6rU zLA4$Uzlfil!28V+rBCAWC}67cS11buEa`n`o>}}1--l+5r&5$6pQq#HyDCBs<#wI} z&MuMAB*2R0kbw{A*p?!nbflFsX7$sM0~rl(CQPd%&=4Rh3FPoz43Sl- z&BtW9P@*WAgK}jM4Duw&CsR7W>>w{}ci5M1TIx5B$G93naL(bB5VVur4KSw-6S{-f zf*{XNlWgj40;G!rVMMFY-D8wk`in0#OM(5{uc-HAEw;X1tHajY-|>_J4tNt6!UQ1a zmV0Wc;~N?%Y44^PK-bArcP>r&-G)ND*=Ox+KTn!jUn@{^ZOd_5nLNqucCLS_>h3WP z^A);+QRWFs)00o5^yL5MnyZ=m1(XOGvPBjLhWZIhH4wZ2t%oNH*FyuOh;#Cq8kFYkU;$oYW#bqc-gTFiPT~+ z?-H(@2UuGcxKkDqKx>=L7N`V9vB1ukf%rEM-I+nBvlsp9;am354Y|~z-+r)i(V|P| z&yV5*Qv4xUsm4a=dqk3Y*u(z>Krv2e5lL;elw5Ah=;eljJ%u05AG2Brc!uYN91g{z zM0|0?$yczQd5KxX;qZh4i<2%z5%SYA@<&Ve<_Ieav0~#;QCtZWsB|fcgfUP#1{4sz zNpNpq7L!lb44|DaJ|%OQF9Bk~4wxpP zK@5#MZt?p9U(?_ubpc-% zkLS=>Y*q}c*CHyea`&4QmRavqT@@KPOn?EVqgG2#4;TD#MjAF zd+ad9EwDNjoUej~FiQDEDlrei{2#>=%bW2%Rx8lIOB^(8nJ=O?Mk0|NK=|dyZ@;K; zcE(kp%O`6~+7!-0Od){xEeV||+9HFfRT<4$MO=`5;ray7v*n}EHZOoo5692F`0N@F8a%2>GS-j`b1+xrG(F8+_1z#9?;z79MpT@h4q@5)}2#~%j5LXWG};a(Mz zNMlI6BA|0}qHO#8kiOo|i*arBNB&Ul4EOA>?YKG*#KL17un1j{(Zxq)vxX0wji1!8CEGBBbyDqIjxYd=ZQ@aix-y=nOYM%1)t(Wzr&3b>&zqD(ScrtUN<8RXfZ2@JOPt+ zcSHV`Up_VpVqkL~dEjbn>*%-vorAX-&?C6((TASXQ|#vi?xD~Kt+8Nziz>m zTgR*-3*R)jX3tHHik5)ZuM7Hb!C%;*O-Qj-q9z+(%C;oL5Pos^e4*X@&oH&f-{LQR zA3*|OvNrR8>B-Jq7$G{bRVWn!X_-ZcxS(+RmxrG4U*@+RMtZs2D_6>WwF<3EE>kqp z5SF`GPgLAw8NcU%LO~Nu+t=ji$Odi!c?F|GM>_CY-jC_MT_u8{7T@#%(LQ~D>Asg< zdUny?7hV{n62<4eP*nP7Cw}JGjF8l-9XleQue;@zDE{m{`uCnJE0H_$I=Y%LJsSKP zbjnW#3z>@a(?9v!Fq9zydh&Vqr^tF#Hv$u)guw#(=C%IcoL29$mi8cmgX3~DjbVtqUfV0f7AK! z{PMzi^FG8^T^-ou<=3wdYxqM$N}&)Dxd=7|aPQ9Ehkm{cNo0o@1ob4;AvBp0(hWV5 z4VE%OfGqG_q*hNr)vi)zQ%+OJ1`dnA z7w$W}jJ5cgLmlWqlO-8aw8%qAythTy=99FFeQn#RoyF79mF-e3%ooG7Ykfv2;uW*i ztR@wIGnrhIOa}0m=(*ziY#WPBMOj=nwbr3-ZBe_`e*gC_ITU_<%7(@h5~t#Sn_=XJ zk`j_N9v{KHorzXNm<~7wUdIJqXEG=)-!{UzTUL*R)uH1cIEloBO)dXS+E5)`zu-Z# z_cLd2f-q*PsinmOcXV}q2tzML;>F>)fDmNA+{<@%pS+N*7th_8wl22qSqgN>+%*^1 z7VnSUI7`@nC8&|WRA{F0z&+ky_A z#3fS32Ui3JS7~@!ozSv-;d!z)W4pnx1|<>zrXN09?N$N<9EVshz;y*p)skvx6SRtn zLq9)}CwQwLkO zpPmM#fyB;@t_itD+Z%yVewtaT6RkP&5p{p@N%T?Aksj*IBj-~)&7&&=A|pSzdY`# zA+)eUWtCY{iz!3p=%ix`9)by}OA#Q{04nb$18xra3_K$x6Id=n95c{n4B0qh=bl9^ zNLBdlLs9cg4_mI_x_a7T*7?w|Qt+CGkuPeQRS#e0dHP~;%R~#{A-GMm@Hyxoo%ove zI&>$VL!sO7+=u$)7HLeRFFsYxn7Q#84r^H zoS+=EnZ>HsaT^&fH1~Z9I=Q3xW*lFdL~p1Z1-;7H-CNDXk$%`c!0OXe!-tZiu@niW z=}2%n#O6Dohk0?$Wwe4R9r8ityYyP_4G_*ZV(ZFiy2`Dr*gm+ha9v#_d4$*LhD}P5 zJi)S*kNo7j$`6DcI~ov1ZUSZNH)Tu-P|Mh!f<|$ZNT)?7rsQ>s7NJIomnE*bZw$@3 z>zY)saYG74SGA(^8&<_oU_qlTWX(n)9RlL7|F+0&+yKXdmNe^IM6IHxk1Y$gfOZ}~ zyLrN#t6RARqGw)w%QAh~)HB=5*NPHbb|pL;PlH)7QEn&Di?!~5?l`VWxb6|at3-MXb_)#0qhW_864tr2(dc1?A+6Eq(>AT8$7nM5D%utenE`=n99kNR zE$LQ^ol-;Zf-bc^-l~9Vy{IIoe|M2h6-qsjb$szc^oy_|(jtvXnnTcDx)W=ursA9b=#*;Ic|WvKJb*{%9f+BSeLxlO zow+=d;YT7jWHOORaYYsHhgQbXXKAd=6o6ANqVZ~DNs6~?SNz|qfrEK>%bX+yM$GT9idGmjTW4&t{p1@ z*+$_a)yulz$O-6%9|!tvf!uZXJ}`^~?AeEI-&@>F_zL;xaoj#1vB1-^@Y84~KK(#0 zhioW_U+#Y5iFd?ek7ezi0gh78aq3e2i}i;#i?rO6A8KLcJVcX^8?Zc`XR(DGIhP}% zcr1z{V|iRQU%}H0`Bt9P3<_g^1ug+pgCDh6NS16TQzd*MTGJ$u2}sN@pn%>J-PeNO zYrUtbX}Gb``zBh1m53WGM)tB4?F$ofkyRk}4}^W~vn2w%RJ~#r636Rj+4*V}TOTn- z=W1DiE&%OelL{nc)%EaSX90zm!0e#M5bk09uC$M&LqJA-2%?5C@)45yoggf9Zp~HD zCxC6BZw0)P>cf;InqnA?7*{o=>{c?Xo|2iQ?@yUTg=8OOhshQ~U4uCHsbWLZ-JePt zf?jz3`3V9YKwBZ+euyY)3}v`#51=wtd{3%3j|KSTG%L%bMXJf zB}Q=*NVpwpm1|f5mUep|D2aZAe!t*wV(*wPX9@-Jj2Zsh>^O5w2tOB~)-FZFC{ zyIt;@VV0_cA-32t(=4^jJm;PEU7Ld-H{G&wQ{qzmCm3J(3@v<8o|-W{!zQo@ErYW< zHQJ7ugLbH^*oTG(Q}QS8J!UzTOmRbS+ka3_IT2c~mM7c?BEgAuxo zQ6^|3y%7yB2n}f1e)6E+{^S#APFQ>vjzY~dxeTYLM6DBpY?*@BJI6O)8W_m|=(I2r zkQL`0OH%s=l)&GIQC%FgUOi@*s8w1y!ha_vO-8;`Y^n#&D=7Tw`D(?5VYx{QUP)zg zc|>xdk1y*_a$C97h3!}{=hjQ2Bo+ytb=3vz1Ni$_`w6K*;hAqYpZTvR!U7Oz`wgnO z=*Y3?;yE;4%wYR&o6JdQcyAuf%V0XYLQPC9L2jkoa0UG6uCi z--(~&H7=QF7dz%J1=i&IiZ4)cxQIj_mN3{dm>zO1386LPsEFRzPGBrP0J$%H$x4AC z6uW7c1g}gi1FxhJ4eMXx)}Y^UN*A({%aySbaILFQYL?FdeAiLufN^P+iV(V>iK91q zwR+@l;*vLpkv4@>UN3c`Oi1NXHYnV9NrG+eEO2y!WLk@wfzhb17p5)>IU|12ZSPQf zRPBhWH$w{OlLr%kvC4Jg?gEz-g@G zMHel10>I8Py8BYME~#tO<@62ewib0W@S>h`?UE(6nT(DkXct?m z?m$hx7LEX2CoAXX^wli6-Rc{8ZJT>Q9aQ(#q2J&TIs@mjj9Bu-yka47+lXk!4KUvoz_0vhcxJVS(8?G) zsaNs4p-0lOTZ6ABkbK@e|C2Xgsp4ux5s{iN#@|>hHvbrB@I=E_;WZt~UVRW0;STLB39U+|~tJfI2 ziU-oaiElI3HqFkdq_rZU+n?Bne`~6+By;&c!>vXz{EP%^xnAU?Nm2=8(j*&lX(h=K zq>tg$)glZCVW3QtmOun#4hg~sx*k_9u~(LUnuAF@eJu&+(AP)~#qRxh^&r(&e65aV zlD70I^}7Bf3>R6#^?Wh^D_`45XPujYVnF(gQ;vJJyZeV4s;>j53h|WMBghHr&>7t- zmm(&09{Gl5VmXlIk~yYrjGS0Gt)VyFS^AFkr_)$_b(tayR=m(Ba-x1 z5maNv=&4)ku3NeCdxI{bwrb+d24kyIs}5s35z{mU)J!_^v<=2UInoB00wq&PaJ>l= z@+)v!8R2B+niEtJiJu3ck+ck2Nu;9*%S8uCbRn~BcFU0vINH*hGociG=cF@-#vE9H zNrz6)B|?x@@#pZ-AOFA*n(@uUS=Vdu>!FNLCTp_8is+m?9{XET=adoA+F9xJzI6J@ zyr|Y+OUR9E4Hk3+e|>#ko>(=9j7-d28r&kVM&}iHK-*Oqk30Cq9ie@LqOOY)5YXbU z*MnfEvLY6Q9!LO)c}sLKin?&O&cx@kK|T{`?s?QZ$*n2S8+x2flA#&Gxwl>#G(}~mRaBnV zo@!{xkb8OXw$e)`D@@{DQcPyzUXqT$`+$b#0VDnwFfyeO3X+xbKx2jElSPw!R&OJt z>(G1H5hawKI$A+Jf|~Ig_-{v!pgPiE4s~_y12Kg^LY<`~v6G&u z8v!MmQtckhE1e4v+rXp(gr%-*9cY9r9YNCR2W$m=g;(j|l_b^Sqty?#ndT$SpL2 zI;Y?UK%N(Xr17RI&5p-2FBNxFrvj>Z4xsN9v5js(fV1lsS#_qo!E9`&K54VUG>%QA z^5fs--^oxz79r5yMb6lBc7hK8|L$9F?Ftm1LvO}d$L@|0hj$n2x2(R>^f(z-CL|z? zVJ1v#$AkGO2Y=JkppdFz$smIcEK^{eT4S6H6q!O-^)pPJVIAL)0GgD<#&L6pd+CNS zbdH1T7d?h@_$fQuhR<=KmwNHxF7Es9BLnogzQNz+482~`CvE6JEjdkRJsG|6X7SfC zZG$ky_oC*IIVOop!bM5!=3&Xe0e~6-chmNx#UCk6MH4VrS450nt5fn{8*1!xHkiKUEWrl?HhF-dGm=CX+<1fvKs0Vv9iu;-^jO1%$uyc{)B%wE&!HJx@vc%^-+^vub@ zsN_w$N?GeD%U805P>gm1CIQlN$kofQu44sEaE3zYzO1yd-Osa%o3mc+b@%OuVwHMy z#{gF^?%Fb2{)o*zsI_YcR@A}-Hc$^k>5*8-EqP!Xn%fUUj-5j;(SUMBH|R0;kEoJu zmWU)E3FEf7sM#0xG+z*xN~sjZ5uX#68CC2QOJz7aZfJ1}(t^6?BY!`(d1Q6*au@AM ziS(SvX=m0a5|sFo53X;8B&hzfS9hP=s0`}-`sn<6S-n@;tnzuUhH~4PZ{BdCPizyo z*IoA9`I{eWfht$*)zklIvJP16mYK!dRf)~+I>$O2zjcF4WN7bp$ZVZ?g9_ex^!EN9 zi^jfMj9{J0ZPg5CPDy&~qWKi(EU{CSC=pgGw7+ z)~=wxgD#Iv&LXpzLK*#4LM93wuj#gv&fA!V%{-!`Ie6f}Ritrh@9caulX2t>VGt1w z90w9{ezA$?UomRKA3B}=YNxiB9X7TI;=)F0$}|CEP-=d3&fQ_lycGeyNgP-v@aVG9_=~6#X!2{W4YDU!{RVU7f`LiCvLo)!=?L7O+mYI@)yxW8c2Ij<8%{7i%&z z8}LMfCaP`KC8!mk4q~zzJMjb3k;?-dnVj8n4svLlX5}?N38sj3<8LYH^@sgLTD|GM zJyi1MKUM4MDCsFDB4;6@MMDUlfmF0Q=;@~80EbJ^DHj4m+-)`YPQ8SjQa}uin9`<{ zFAoQ{u$;1h6D%Wws1OYe0LMuza2Xn)Wq3y`KZ5ax40kaTsu0Z3&um}`dY~)4viynI z-m7}ROm<#+I=-?~;_~S^TAiRaa!XpGW#w3^2cr5Gw=gMiHACVv17^KJtZAbHy^rm+ zIgu&cKxk~jK{@&-$U9Re?DW>66J6Ymy$FIO5VNDBIjhE=s&@$>WksUjDx7-jrI>*Y_#qF8;|v z*yB#liFKR;TZ61!QmZ5(GT}d>&G>wH_L5T8o88@?Q`X{#A?oDfSye^hSUo4Y6Khk~ ziuFm2T$^r`*^)YmF^4bf=-8Cc`|&5=;o5`op%mIx)r&E3=-*Z%7czuK`t!X2kvl5y zA@CrQ>yYa)S=}vVosfz{Dp^YBCv6@*BnZ|FAkna_A(&DoWvJ@Qg~qAz;?2*!jK3nM zdn3ihxeoNdr03eAdB%@DLLQeYh-Rm25-E&~pmESnG*LZ5Ds$<;%AxG?4 zp5}c1`F-~}pcAjJ(h;L>NUa+kZF{si0oe4t_z9y;K=h&r&Wg)tCEB1M%tK;G?0G`z z&F3&ryns`(N3POq?KI&&v45~B%=w-S9iaa*8AVnvY0=(?a`u_i z=D5=BI5nxPS2T-sKu?%fxa4$GdPVa32Vu1E(1A?Qw+gg07K30)!^%Wpq0bVr<)Vs& zJe-BdDYUWpG7z3)CD?o(bt5#VTLn@cEI;tGLvwnWLl=$eT)J5NchH=MT5!g!Gj~H> zttYs0t`&+C=DF*l>D4o|;yQ_G*77?vp5Z==%g{N4t7fAO2iYpG_0cYMwg1xD$cAO|jan4fVIRYcrqSL4Nz&(9jt(W<>F0d62^? zK7=l+dLc-VRqjafpeLn=@kJ(Q%|Iz}CiJD&fd(6e_ z);;?ydhWS9GeU*TUyHr9+)!8`^pB&E>5x(K9W`gvoL{rQ=DM1jY96e4huN^BhM3Bk z4&i?Udj)QRre}xUDl@$^$5qZ4A?Y$X+DH8dDq}aL*qiVP zF#n4hE zw9=~p?J-UNx=xVb>N|d>9{+Ia+0Q>^Omct^J^_@u%A4-LG6w>2K(sD0spMgckZ%cy zGy)Qc?MjLr4npGIpz&OFRhICr{YN5pYbSR0a@2zS3BxK!lQC&@=~HW(%4iS0eRy{a}cgb8FSQLLVRy(8D%rW;2tcyl9yul?AF)cy| zjTn$jf_7WWyj~O-GpFNvILd5GyM1o-jcAk-kM11OLlUR#Skp-bJ;pXwttvL;Hnb|7 zsxUSUo}dGCoThhqYX33wFmz;}4&c#5K$K@yaYbxR17E=hLM7nEFOL9`k~s@fa5GpB z!bC%0Cn?ARhze5$3p{!1CW8`kg2^ZVe&?z2%JerOK0xOm;=w1zL}_;wZw|C>(V_2O!n=i;w^ z?jS^hkM`iVI{)J_r{Gv6i;V0Y=|=pt0789`cG**{B*{`HdtH}{GCMc=_(0a=TE6Lj z;{(Y*2l}JbE%-j;yvw)xfJ}?$TEFLId>iyN-bWX^q;-H2uUD($whl`|i*`*{(_*G{ zUoLqbA_q@E)@?8+O2z=Dpc6}rSB_V}+mu`VlcR7X!J-@du{{h@@-;oM+-c)NN1b z8tnWm&+Y*VrB|^^-Hl!;{x9BAEhx0bXT{N{D&GQ|N|#7qhli=v+652i1x9}T+O5U& z)$y%vk7FIo*mdU&0)2arRZOZ2a;PrU>K%REW{bIZkm}Be@Ohc)@wc?b0o^pF&LE}v z{Rqco6sE`-5iw$2w}Ul>1)^OaT^p!yTzTjT-AYO_r3greZ*=3I{zSR0U#>z_QW~&! zWaCH~z3epUL(P;ImQ#JjhyKy!+`p9#4CTk2w@){)2>A0sz-6ZKATr{Q;dzj#5Zv7* zhSLOcS$umNbhY*t9E+Mr4Yzp=C8L&97^Fu7DZISVl9DyclIV+wIbmqf$Bz6edi9X7 z=dv`1{IKIYWJ+bKJbW#n-pk%Dxb{y49?agvo)0Y^(1J}e&)t~9SNHVn=#S1N*4Lu1_WOZhb0)j<_{YIo2gob>@i5s>$HPvKC{9zDDq~jv)q-U~gsW2XgCpChvx_H52m!_0(dZfR_*wBdUXqfu_@bWHQ&M6Xl|hp2 zaeXalFgj0)8rnRx|b4hy7rxMZ7_CKH zW~h~pK4>0Z+yWr9)@5_8_y_cPC%&%GNTkBh9=rvQ$8MZ089b1srt#gZd{m^830Pu> zh$WILzsdlPG~bH@7dUU~bUYuM!0)3xa$DYg|W0Pzp#KSNFI5Q}vno{h7t4B9u z%Ptx*b?Q_r9X1-4yt#RlH^8P4L#vFm0D`>sf{r@@`0!>R6YHrXFSf9vkv z*4Y`xZw=v1Xm9a{Z9KgsE(KYum6Y(n3x1$AlHa8_35D&a6K8jpubN5JPI2Ii~#ht1#vDYJCA2be>-U<25j0uhIX>^&3g;hPJHAD5WKFpnaA{o{{O=YRe)&%sl>GtJPV;QCT74U47m zwzsmSGOoYftKk6=g(v9Xs(=fqt@cf!*vHrCr9lzsH{-@sitSb_LY*xztL`hbsoPA6 zki0?Rj{?lUUDj+!8)35bR3ZfMxW!HoU~ULr6=;7ZD{5Tn61!HtA+XA03V@akOF(i{ zWXR-@FL_bM@rHKB($$OId3mvLHl zU9yTL@y?rNRap9G)vdr>5z8x6xh57h3e8;4*m%9UJ*SW8ySmIY!t^eh>H5c)DFyYn za{5u)vvMF?cE8}7D~xJn1aGoCQr;}MH9c`YG$oZZC-XUvw!_%r5u9%vV-I9juwD*^lyUtmUUH~;|UmK9f4l0OgrN2p~O?wRXo3$OMwc7On_LYtmX7&@zRqUMND4eJ_pXKDw|=$Y2So zo9SY%Cq!7pHJ9rYWm83J6}qVbQ3(c6#u1bgJPu8rNo<)GxC*mBQBMZkJq`GdM4JR|d*k+E}-Ijt4p8|y}anIfq04VX-v~q0) z2}pe#?Teid$%VS2)SX}7hIdh1sUfabXi}fUfNq1bMcLH!rcdszSF|a7KEK=?*2pxe zH}JQIbDuN?3Gf;OE%gQ=g13kjYBfi#d2Q74Cq)qIX(8<~C(Ic!C6fL*0A)`I^%(di zQ;$9m%AEAB(2$+dcm!RPq?et}3mM|fW~y91D)(myRA+jUvNB9xRj%ikEh%h&*^*Al z%>!U08Ae~YQ^4qZE+L7r<-~ReN2}r6Ec|6pKaDO-xz8Da5)^Ov6#S~knu-8=K9u?k zEIX93bH<1{(j-aU%c;~u!CgE29GRHax^YuW-XD^l_(X=MP;jD$ z@P}Tp)1_!ux@)Pq9(l8>N#!r@au{=2v)hy}G+rd<3+r4E60`=?kZ@e439JVJ)TLzRGFx6gFqaCo3DulX%7B*N_c1-(ba#o-mN>F9 z)U%$xbMs&hhT-qJh}mC4H{l`6Pqu_SfdPt+1c);tVFF86aaHB=vx=|?z#oHaU4$iwN+@L&duY!iO14NJ20@juP=h17w@KIqJevE&I+x9#tkQK zeR|-YyDo*PZ4Ezm^}UDskx6WC*NM&T#XHpeK`0%GXlYsKO~8E=@S4VY&~@w^@pr!g z(5{M``_(tsvCjQfma9;(!}sku_9PPnL1zSenLs2Atq6j0oL^$LC029N@|8%1xmpp%S-?u}M8+2;S-f(vdF(_0 zBz*I_jE%b5W$rRHnEIZqGZai-Q>Q(N&!QFtF9-dogJfE6=HbQ-2k|9ZGjt{;gzG@` z&3}KV0FfL6m`PfA?{SMmz~|5+8cI5BI0WP{q%X;cJCVj6VKMIpaO}DXVPYO0RS{PTz*|R!o}FvOoKoXyIL$^?Lq*b!>H zU3>7|chT6!J3jvS`GR_W4;gCD&*U{Yx|EH|4n(!f#|Ow@S^J>C=jh6+o7Cy9Vsj-x zn5OpL7ynn|f)OW-PuS-!Z4N9RGKpO>+wgq++$pDoK7WY(CYO(2B~N+6JdyDHpLa#(7@ViYY6)RG?Q7>os!_@&5T z0G-m%=?w(R#7dELrxY8oN)ClCn9=La9C<~AL>J^iUg;uc=_k;!`TxOA%>p{ye^6VC z=WR^rLi#pYt#xtC+|lW1v3KQOsx<~1L@rT7psDSQZgy^W80}2SeL)KcCNmofc9`J! zXR<{@&LFD8f94Qm|CzCvHz#+>0z#Dnzn9XUw3v;QWib_oi4sJ^!q(v%DZN z)v~-!Ysk0H)kSu0Y0@@r+sSFwhC{lj4sakp@U&v+9KiUjG`($&m!OnlH-wVKcc_NQ zt&t6pElHq1mQ(x7W9#@~(K*jX`6?ABaOe5Tn6+Su>Cld!%nvX%<9p~D%cM&o;39?- zHUZ(>5OW(~ftfKEvQ_Y;sc7JpEIO&O&~^uGPo%UN$2|5-g?Iy1SNyYy8qZ*7dT8H1 zWW3^vhabi--hcn^K~t-}{jZdz8*l3HqSrt&4_Y67ybH=wLeS=+>nEGrf$TKVib|{> zEPFbC{nDj%{#JiB5D1{lac>+bx!Un5@ciXhk-15gtI`e}^`+@SgJu3OnEHZxU)`lnCl2bBF7yCY@mV}D81*x&<`!D}c^Ca4&Y1V8#MZs4%c>-2zt=M6^13&9OVe9%P zo?Om~opV77rC1_YpHZgI+lrrPc->u6pnO3TAs<9AnV!mLQ)3ygRAd7sC4bKYY<3Ha zm8xo{7!=ua(^eT7O7jlba@bm8p2$|ClIbr4*lC8@(vdjknWyWu)FQAon3`R@yOuf^ z7+JXIKlRmDSrB3FL*HP*d=v*VyEu>tL8q{4i;va4#T+jV#i?W<;NE@5TW>Yt*B_6? zmc?R?Un6nVzb&ah-A)f>9-X=|a6*C*&Olvt4msq3kOQ7@&1osFa`HxA$&(!RpH{Vh zmJacU<@md0KP(c-UHb`Tv10(_ZJpeJx0da8rNhao;5zL^>F-ks^pxX`&z?b`b>>5k*l^?1duMwPA0o z>*`upchz-W-D20Zz+As`?#v_+N%s5x|H*I6kSQkjyr-Y@JW$62m=xzaMBr=UoO*OC zx%^l-4tqRz^D%&ow2yg-&S+po;!h#V2mr$6@CCsK*W zvSR0Cu96;o@dCs9wZB^fM9t&2Ep>_t@?Z_13-IHX$6L7o$f4x(Borlpu$chLE#Yy6 zEF^~=Avr{JX<6#K40G*A@nqt^%u|5IC*TkX!tufS=g9$y5?Hp)BA!r29=oJd;uYy+tprKO*)^T z1-6(GQ$X=TmPe~(~!cBRK;IV+!K&Vc~(-dh(f`YW>?m{(t>(u&mDCkgdl8gqQ@|o4R0~r080Xo z5&pB1({pP^$VV#9Y%o(9d^GT`ie362mvuJsZ_LRndy*ItCt44->xvgHhb=35;rhI~ zKxwjT=JOR&?!*=CUK#a*-&Irx)$L?SldQ28S2#j(MbMOv%0lw`6m!nU9}}pRG9~6n zv%V|H*J^~JHWF^7b=>uz1I-fo(fmkJ)VLbDQjAtTx+N z<{I3THpMl^-?o#oAbZFkQ0+xj`#*7ZCb0{B??4}->?{VecQA2)^j{ffNB4u0thgZ_ zyci533^2iAC}*u~%^DAeH*saZ1oo9hus-lT&|Pv?%l5Nvl?+KDrbC)7N|nU^F}Q@mbw^nOmePjP=y?_D9g7=I+-wrN zWUlL1E!Y~&o~0Iyp3@)!I9MFCwTS@9iLRU86BC7J_(cZ3bIgo=cct<;F|prbqXme^ ziLX?U4fSF;{YiG+n}$8$Z%dUsH_H-6-Y!70Bh1v zb^|9^02CLPAfbT&hb5Xyolv@YGhhcVC4XjoWXwrN=KXipb(F014XM+OS=J7H$y2WI z{L&DZS>rV{W|+8l>AEy+6lc~fnpZ5&Dm*ZYH)UUu**t=|r)>Gy@Gscu|smIrB@D@`F*b0+|vvX>nf~K%Mr?862wh_%g2Ik0DcI>bN znuiu>)|Ux!a0j}g?-<(X@xa2Jb(Em{SgK;L6=b362EL68ArTsKsIt4l-0}#Q&o?+X z#H(CeOl#mX1`Q2Foe8q#h7SPks6Jo+;#8$llZ5eSG)wrqScX8h*zFPy3m7zVi15vmu+- zIb1WD_l?_2GlY6Nd)0pV@DS2bO`MyJ!P!%sQrC=GFH$tDs{jy*Z$vdIM@a`^4+&=+ZGeW8hn?0k1OwJ? zt4$CjF+ojW9U-U*%B&hC0lr(gk@Z`iZgeM@#o-s0cTn1u?`#x`Jip~nMFCc@sQy>d zOMYl~EFDW*C9%;d`6tZJV_Su=2Z?A6^${s)%L`>ZlZ7W0QnX#nF}t`1vz}{rNtkcQ zcZ{T)%w}%HyN;xp7uHki(&sBkA9J6JTwY|pYkf~4jwr)gkxis<3opp=9EBu|-?t}A zAB`l*Zt>_F+r-dLpEbvrn*4U^tnnB1(}_pelSjqS(qhcRz@2u*m2h6#y@R>@$PY z?r8bhpcbuLRR}|ulCi6GjAE5%*vlDMdDi9sW+waZMSZ@*$5pB58M3?UQ)lx_s3{+XICJGak0>!LwP@r5DC>R>H*9 zg+RSW}id2@x zV9;i_m?Z(FP1 zKJ(;y05J;BpZ;T=qtD^hM#E<-8mD9d&o4KNcoU!55dcI7~X}V%(%hk?^bIqA@TEX({I3#xKKP|qwbH}RW zV#ol*PUwO|?4Ro&$JOb=0Vz0qk<%YDI*LGiVy5M>{H<VAePephpJ%4+GUtjN z6GcjUs!m43`j#)u8Da2YRC!tN_uwf8b3q*X#as~ciD|G@awY zA;JTMaWPsq0y!U6SwX~n7u(*(c?L9N6;oCXg$IEq_2v2=oDxVJ2P1~+S`fT11+NhJ ze0o4_IzC9#;9((CpL$Axn-3ewW@ZfyJKD?kc6al$S@|k|>9u>cN zY)B{+LPiMG98evk`=;H)mC<1#%+;uCG)@?l7fPIYwKc6(>6$yTi_El1>|WRQpUv(u zV|xJMT*mdzm{~(k=ZszB6Pg9KdD}Jmv{tXn`t&r}H&&IlwOfaQv@QpBPyQzV!Nn~E zw#GQ2Lh*+ZSHc~QE&8RZ(XEyS;S`h`l@)_4IF{@Iqw`@4?v+kWH{43tmZ&A)Ghz<5 zD#lV5l-A!xI+(TCkL;#S=wu?r$BLR-O;qW*sd?{%GpK0?Z)_vWLe@e`RjW+pnVWEl zWuS9;JYG3Y*Q1Q<1&%8kkCc9>Z%$IvQmNWYYtEf8!78&i>!haEE`XK@0?7lJ>HhIT9uEwwE7GTE}?#CXuf* zl5(9?kAn`8nXqMR8SlfN_BN&MbL#M?b(5JJ$ZJf5!WxW#QkK4Sc4%|m0ijJ&Q%q=4 zG{yYuNTihnUgcu3bmK?{F~IC0-W;==1f(iwi%tNTy73w6y2(}m&gGgru2b1tbTkn6 zMaQWEqfJ0003iR&ZSmH4F-6JMv4yidV1r##X1AxAHRP<;g+TgbP@1|#IC_lc4s+9AwUm!tsDrSBjr8;t`!%crltps_ zRVY0XBwsM91l3S_WikdDQA$wysR6OIh#3jV#ZXG`==eUHrF3Ed<=2a{0yV$03Gi6b zepvIdhiM^?8T-Nu+qV4}(F8^HVt?tfk%Yl*h{x(;!APP$6mN`EFFf(!g1f$^R&W)r z9<$oeVq@OB# z$wSeK44nra+TLZ|1*iw7+LouP-e%-Po@B7!yO+#hZmHboz?PcPNbY1N!(BziOE3R- zjMyMI^9l)Ehg?XSg zjL0fP#(Z;r0dAzfS>GGNrI28|8j|D-z9<|h+}X5}oXczk4!q%;ab1y?TORn`WB>!2 z_`t!dsVf=|#>sVY;E~fFsvm#R+BIv*L3!&LLCA@@z9s6+;mPbReCVnK@CBE#?FUs0J`)x~ddZDX@sQfJIkB#DU93?Jb8dsG6w1csbzW4JpGl z0AK)E+kv^8Ar^XQ_Ywojeps zo)=lm;mD_Moe!*$v}yYKZknU>cI96|ACWcbfO|$W2Qm(b{BSjo~Jm73DJx(iI&9-=+<@5|3fHGHW4NI}z z2-Vz97^y06kgkTgBDSZ2`8Vnf1f8rouO0~&?~6@Y22lXe+EvX~E3=(&oCY0s1LwS>XOgq_@Bib?H#3Djd&u6s9e3aspuUQVS+ozXD^QN>Ptz&u5NIqg1k1YFQDmZMkhcK95OzJX1Ut zeLAs}8eiJKm{WK3Ph>@pLa*z}a%6&FQ7jhji#43TwFS_RnlD^KKFE>ViMLean75&0$_9Q&VTH3DvFHINPgr zh@G^-RJuErOA$G9o0TmsvXm175jne7s+MqoWsW0JLW>EfI}TNhT6J_9y=?$$h~)|* zF7_@g8#TOqV9r>*!=_qwix9xJrF}NOrIu ziK9cX!*&BrO>btLIU+6;MmIO_ZEj}%bK{M~cH3>tJ(QejXocD>!WY{qDXn+##lQ4P z43Z|H`Y^Dx1@F11G;JiW>di10=E(Z3Q>J{yoc#dv0g`4>7eyjK!I5KrB*i0o;0WW& z0CPn`7KvR&gT&l*6+FFsB$ujWcmMC_1O^Uyb(1Xyp*kWgoX9TVY(M~<32?R0+~Xa; zhHz~_#~S=Xc|M)>2Z$SZ>}6%y=UFAFCSQOGfd?IahLT9Zz3N8FSsqJAI&jiCmvS6O zKP0!1)0j(`XNeTp)8M|TjjwWB`G8PoamslQ?BBotAGndDCV|g$M9?Ib%OWnoQquW( zk`Ho}xw{LX_FI~DCj@n2Nv*iftC`#cmCu%`y3*gNuS@bA3*fD52ehxY7$xN!Lr!Su zed}+&{r(9=#09jkWt>2KXKK95?j-jyzsqdea$brr6LXOBGkJyG-ek2puC;oe|M$Z% zddsDRTAGN-Im>QZ;Srl@$K1<0Ey{?>uC8Cwway~6N<3R8FoEc$k!8%+CIcUWB4C7s z8(&D;{Zgd}=0IqQ5B^9E!OwnJlImiecx<3D*w3y=t%fC?@)G+^qwazw_9s}6^s6lo zoL?+&augJA*KL<>Gn$@(*jn>od^u zaQ7DP%t>mkv_ow15krm_X@ZdjL1W;TQEz<)_^mK{*Gb&WU*xcy{P?ZS5^rxFy0F=z zlja4it;&G1h1@2W)M-;WivVT@8tSB9g?wX*Fmc^F`a_}6C)9}}Fm$s!mvh{5%VJg2 z=nx&K6$6s1F`t>)sV^NGzVF59{6ZlT+3m0<+FUF5I3KGw)hR?~vBctFev!1DQ!CK& zf~(hXFMg#Pc~=Tgz1y^=iCUave$ML_`De{Pu~uxPy;G-8blnpI_Nkb@m3onD_4XEx za6a|97W0l;bv$XTH>Q%?C~@6vm)t(JM$QT&)n_a7Y+MM!#%4;n-jBm^1C=-wKe{$A zo~7XoXgNz?+t&6J`GkS(L?AE4`+Ou{T+(cr6oHzjpl-CbKwd6=NBFIBhb$$v?T1~G z#G${OPD!NvNqe^~b27KqUHQmdxO^u)c3r%srRB@EHf9x~;V>_a5OPxq=55jvivWS; zt_&qt7S;w}?}O)EkYq|Ra+}JQ)+!-Q%yVr0^K%Lsl4+qc)*11IJL*ILXD&@nOj9pE z{q%Edv&`8ehT`RI;WCYFbu8ID%3C31?5;G0@v`G(hC6;$QxecY)_=kOp0$*i%gZ=y z-I+rmWKY0dnF5k`ws#3SHV{INeAUUH$wFoqh0|(yzo@sDQ!M^KHMKK6t>~13qGqvlsUD?TzN_icZUvw&SHQ*^9gg8Fe+DarbZ-2Y7=vef2vu*s0AjBELDSeD; zq)Wa&&ip%)uBY~`Te6SDub4U0taLQ%ga(1S-eC=&y10Y5khshZ|g->ZGCr*nuY(nMljT zjI7=t_e8bihvr!gC&Xst-|m*{bv+rNKC#5S0$}U--3YM-F=dlE>fNPFCdp`(8z4I3 zE~(45&Lgi^2er{UyQSCWw)H=}b^Lf*@9ok1)UDUwvw^)W+-ToH+hz!Y!29Z6h%i0*%k#eT0 zZ1~mi13O3x&tli6YK`#m@v@}>Cqxy}#z`^0Ss3Xz-thE6vDjmpyS|O5rgN*O>vkE& zFU*Q`{H9YTnYKLqFlm46G3E-`Lk-=0^T$uONmc56kVpj%fEO1qws+pS`s#DjY3IA| zUVnY5^sA;=t6ZfVSTH3YNpcHZw2^P0%57+%WL-}8*J-XWV{3b z@`0ZjP$>A=>c|WGDz=F^JFCokaG}aoU%dP7b*-wrOKcXp^BToXpF`w4mASp?z4!c3 zfUT{)hUl1o<#4O`_B=-$9$(<;MA@!@O6YR5H*4IQrVhfr`)*I6@Vt*Fgo#L?$pYpz zjz+`LYPe?IIIq#oQwf|J@`gkV#7o8ohf*Un$z@Ij5ek(i;G7o=?J=oQuNEA=WjLNN z>ML3H6dx|5I;R1^UE@kO2tBYi&wTU#`%xhHdno2Q_uO-L2d{2Cw|()Lv_|ZpmEqRu z+w0_hzp6nM3UWr}^GA13Cl-V}E)NJ{B}#j%+t{e*%Q>2mmeg^q?R&dA&S$0?wx(pCex@}Vo;UvA|=(! z{^Vu5J18Nq{mM;8e;$a`t9z=Aby)IhpjFflja!!(nJ;sfUI}}wQYk09Y0IX}Md4GJ z2cNj&ijZ%dL!jUqI&G`rCyzc7^7aE4Fwao529^m$@T(Cnm#32PfX2ZLaFEbP1*#p> zTW~4A1?=X^R6drkgk)t%suB~CQN$4|)WZknSZmzR7PiqW>mVpcAbD(+Vvz~?E-?#V z1FrEr*DE53^z85vTc#EmmlNw(k%N2#iF zWqA%4!VF6Lre5JzT%dF4A_MjHUuJt_2?b1EkwAv#K}>Q*FCq5X~OZ<+rlqt=|F zL6)Nn8ox5G@G*VZk_*3gWA<<(Fy;Yrt&nH*(gNO%kHU@AH#Y8WmZ+2|KP3~`qBJcy z`uy-P1<=jKFbZPa%3bnOQ*?W?rpZ& zo3utlaZ+3z*lN?k6|rFKZ&Zm`j;GPAJC$d8lP#X=DYdLR6L$D1=<{10*7@ zxpjhaoDbAC*FYiu)=>|Fg208twJyA)k6}}%%D5)#!GKa6M-gB`9L!}!4+au~3LtN_ zf&v;;O%VbrK;@4L%xCGSoj$XWn1Ue7t-=cB#j=sYB|x#HgE-+&-FgU7UHa z!5oz&MbSq;zAg7eUM!PGfcuQ6cMHTfKLa;ngIoa+vn&EBluU$fDG#PnoHY)<2LLDv zGCj`<7#dO;&~E`wuF7TSyZtV{H=ua4K70n2Q#{=*)`rNLStxXQdRvb^HoRIBPUdwi`(7oI`eA2*6H9AlJ||@fnQ8&hPb9Y3nWt(kQ5CE)N$k$`!z)*r>}V*D zY?*fhTjN-jpUDD3p9b_d7sF`)aSl`{j>9GkmJ~T(QQI(_t+EWTZ^1)T(aymn1VUL{ z6Jv8d)WwnI`}QZF$Xdm&upOn(l@lamM90x9LE+7b;4n@ohp`CU$0C?YZ{PmeiB7oeD zc;QiO1LY2s6DT)|6ZIbN@I1yiLv_A}b(6q2fbRqG>MP%?0cX`V)C`CnK6A+H*bjp& z#ocgekG$>TtcXaM?^d?UV9F7~3)&u|MS?>tH7T^!6$!`O6)B-boLWA6i+$#zsMsQ^ zUo^`Zn=xa?WzRkLn15axtYhd5zt%<9@|{=P?Ts>*&{@-;l9i1+n`%_S7_iOjEn;2)YRqYAe(ZKP3~oIf52Uq!mk>7mf1PCbwco5#JLWo*SlpWMG> zCG#^+CTO4){L59oX-j?Xv#mWh%EKWjqRQ1siG?v)+lP0u6j%2>NH8s zeeCi+u1-|fP!QwY1^yBThRVF{>(~QwF=D(`3peF714QIb3ZRt(CLgnka-+2p@}vfh zbve|nTJfr=^_9r!*IiloOxCXsDQU6|ipqIH#jgfQgQt?5K=qU!Sb(b*1lttXj27ud zMb&NOU>oyB%T#K9JL77d(I5$V>l~pOd8wXf0|TuRQ!w_zwbk%EAs3i#McC!))VS51 zhw8jt%CNHYhxX9MsZhrrx8@gxEZlJP6-ZK_{C9x)xn|S73&jS((ucOzO#p}e4pTEi z@r@HmZmy~G5eq<6MYPN(-+W`;Hhp?V9RR&Jsr~IY%idS+s3OX-H974Vw+gMq(>L;4A5e)ToRvFNYvjqVi6QaWe#$lfkcN_ zf$l5MY!ukB|M8>du~oVC5ai;}KZw%J;veeZ{HH(`fSlvQ>kJP;`+kF*gQCH>c1YC} zM;XxcqormmKtmT}s%+r!S!Ijh^HnXtP{|GkxDV$iUT&UWv`v^f)d5&Kwy{&j+WMAz z4GF8))MQFTY#C`xl8#60&GMM6=?d~X6JGwq4^ulj1c}6>K#+7-Zbd_b{?SLbZ23=< zNTF!(g7-BC1=8j=DfB1AhVODREr86aOMe;O2g9(=4==QQ%Hrz)s+hzt$DM6XHeN;8 zxyo(pv({M0Jnu3AR=>I9AGt5;$$jg7{|BPaGD#wM>#chulVB91NpAv*87a0{rBuDl zn$b!POt;Oi7hD1Yb(2DVA*-F7mJ{bgGFv^FW_qiTUk|y%|?A} znpFKsbUO z2tUlW6M)x`WvnosX-n6WolRFn>Z4?jx_$Kwz=nk3{ILsF{_cztT4mby$&ne%#}*5; z5ZSF9*1Wg*#3~U-Xb^J5a&m9(df2Mdx;wIJs4nR{#`%>zlg-SJi=1woD6b1n>orO} z5>0b=OKuOma*MKIwnJzVSjKT&%5c5LuZ`BP)+A46@y+d1`CfG_rVHpA;+H6E#uRm6 z9MqX2SMbdi(q>EG~lBw+i}oPJRhid_#Hd*)ddC=eYwuT z8F24l;MoBsaPO=wKs!G$Fi|o3>{$bI0cUMwgFOxL<7 z>bfbba?wo!2Wi(7Mh9q>f*%~$rfW4$U*99v3C5l?)4G|gVK$Q(^9M_N`^?sd=aOlM z+9^YQa9+S=$~VqxSJx=gayRo`#?U#b4ysL|@kOR{1Pe`lk~$JTFGy}~XlVT5&m^nU zG^ma01oK&NLaP?XgiWJoN10n9oe`nfDU&x&YkckF$c15Mrw|4Tq*;kk^sdiTuW(3Q z9_ne0xk07UW|%*!6DN%`OYK5k*OZ+jnrN&;92_!WXMvfDsi4&h*g90X{(u~!SB=_@ zx{W><QUA7sOoXc$T^kbF9#~~$7EDPW*!Mhw~XQmA6;?H)$drMK%>sO zYOviS+H7hr0cg$dD1PbZZnBui?3~>y&<34A3LtdUsQB--sO+@Ap;n}k!NMbCPN6b( zPOx63%mb<<0u3W`vB)mvI(vBl;~gHyB#!(^=DVl6m7!@ir*Rw^HN0&vCsi*F(Of%Qg(|1mz3kBbeBjwx300^8 z*|X*s&H$DeK~GWRIP6{?=p?It30_5ngL7*r;Gv_L<&rR1>VZ)Hcw$B8uPZN!okpPk zAV${>vB%z_^=Latn|5>^aO6bB z>6yR7{P)9^`)V9PCc1FV*e+9}p{?(=f_3bafY2-nOzLJlBd9B9R5G7TChtscyv*6( z*I@w@sBdg3m@nNFI`IUImaL=4xwh4)V#+#IVnY3NJ#7_R7pIuVGnvJWjekm~8LCqN0|EL8>q-)k#=8l#OvLd^U^5hBIkptgAZ)%`B@s zpg$NC3E++tnNEm`upH?*pO5^`e;Wi^>=Zta6wVruQ``OIi4Q+ocJ zmX^tw*@#Va{oDzb=6cKIc`<=O6g_c5>7(J(XAa5yyOvxv({SH?_sI^C^!9N4YABao zdEHe7o=n2YZ@YYJqv--!dD*7U0cAxSS0)Gx75s-iGA&o2r3IROVF~nJtbqJROV_0@ z5;J?gbhpIiLc3H2-bJMfjcw6@@RiB-SBFoe%R2fv+rX{y_ZC*mupDLj>uY zVhzzNW3eb8@a#VMe`?af0l=cNCY6^jky@+(VD3|(HgU=jBIU{@!hR;6c`U;IY7mZx z*BG80?2}+_f+1>EAwY`;Vi^G&&{8#QS%Ec}gF))?tl(fmvJ&fs@o&E+^k<(jPa~@P zb*a=7ZG5fQA<*h+?6r`lmX>{mLcLoStT%9#0)3tT0O2x6C#Ta~k1Q0kaOJeOI7J?; z*Tc9j%=OAX5E!k18$r9=;<3TV#xzWLdivUlC*YhoEkMM)nu$F}9~ePTTrGEldCRRW zP=8>~r)cKM{PwFZ&7nKXUa)0T416O zG&5>z%_wQ3NY~ou;_?h;13w}Sg+zZ1DNO>AQOK98#UZIi&J!9%e1(SDGQ6tb2HHMO z8AZ7|bW^3BD3d5RLBAU(L8>_?2o3Ebx->leC|y*Bsv@8=;Nx;=8i$2MP%pHB@U!1E zOkxQv4jk8t;*>omq{maLLGd1LY58lh2!x=JVUP{K{KA}0#xe)nUwn}i{`R-G-~Rk_ z=82bHk|!XpPs{FT6l=vXq2|#~@5n#jELO;)UdUI>0N8qZQHrA^Ha?UX#BMp?12GO% zfIUG4qE|lud}-qdQAyWD7k$60sVjeN^W&-Yv8IMxVoZWci0$2GiK!%xHUM)9!Ex=n(xefZ z(yL-0wzb7>H-9cUB;_43AKW{{0R(l*Ov+sZO(akq|TUw~tgAabo{0-pA3(q|BEm^|s zyav1=)h1OaQUIwWFb8QlbHuO8G}{CQp{zcwkqoKZ(9jTnKKiG> zaHbyplgW&@$JkkvAB6og*uyoz9&Y0et5*k}KU=Ky%cSz4L$0ZjOBHoXjfn`X;lhS- z-b}{bbi)noeDHx`5FxRb+{U`H6Ip}Dj=rHDso|nxr?FZrM-Zx^|HkkRi{CZXG_1NX z#i@z`wo}-O%wYLtFgP4mm&#FmGZIX%S&z2|zWIjCIR|f#{`lkCc4IbUC>SznUO?j) zhr~6ncgeDgZr#9930Ge|D>kOql$J%LNoJ`ld*+5EH6HJhb!T;^wOKQ57Fyz@KC8*V zLy2{Tg)v6r=gvBDk^r?gfwYQZNN<~Fu8jSLY+Y0ZZ)}k^|T%y&HEp*2hP+W zhWOA@$si{Xy zF}1wIl}1=&=S}IgZfbI0AM-V}xOC-;Q}6oZ6EgYq{Sa3Y%n}Zhi+8oR|FffG zQ=@a?=~*Bs5u{hlIn;b`26y7Et>hm;=NOj<=(2BfY+Wce@>lHelx`Towvmj}*~;l! zXv<6;H!i$y8inG6kF3Uk5K=&dfW{6z7(^Is(nTsd z$SF_9vFR63(hk0-(OesoZKa_h+F4uZ=?NV&Yus!zq8Kh zaHaDwg%1Ot0;Pz8x(L_d(}w zFz3rJrA5z@Zb)_8PZE%|5FG%1^T5_5sxv*Aj;(Jagz1Fd~ zKdzKIM6zJ>RC4}#a$4mQh&WNF)NW%ApDu@?VH^CrF(7eTDd05K`1vy-~$i@{|oaW(>z*/Uo+_?;#-q^j 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 z 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�~ zLtXTD(&^Fk-SqW!PAF>>;KmJ%k=vYx&alp>k9Lty*ydy6P|ZXzDuQl~D5nla0(fV8 zA#_b;7#n7=I+M(ujg=o$JXgN*;A^>Do&+88Dw~b@MvQWmQfG46LoES<%X1WIpx-F{ z0k0$*@qkRze}F4+8ZN9i3X0Z616;V5bEA!N`p4J_dHd_T_id^Q;uqSJDy8CKUlFTB0RJeSZm(g%U z#i3(}G2bnytWygXwAUifR_ejP41M=@RJC#eP}(4}x$8tEoR|5AQ+)8g9T_y-1N@`s zUwDD6eEoIq%P(_3_<+9ix#tr8T}g3dLx8<{u2*$lv}=tQ!%^(Uh^-aWpApTym^sCf=C&*=q(Ugzw zqfX=wt#^o=a^J4&279JUZ}l)e5`aD@(y+IqaN z_^iMGN%Cwz{c3?M0QU=ZkHn~_f0))eczLe9S|&}=GzR$r5ZI5QY=wewb0tt=_mEwJe80TCjK3HY|7RJVssysRXGyGdiVZdAEJvwTJ@lTgc?lTVzXSxYpW#f{ zg&g2Belw~>;ZK)DpfS-K1x86iW|WZY*4#1Q-wtDi!A`@5XQ^sxJc$i8xfq3=GkK^^ z0&R0I#2aKfWq@xyUOrQJj+nM_h1+GA6miN5OSOjbmxmtmHaKW+=%wtX-@Vu0|1PC1 z(iir=+Ye%Ixem~u^mYTTc2~hz^znh`>C2GWNo})7oQ0{{693CPl$y+z4ApS2J8lAfXDPxEQlN$mkPf!QJ z2;*|aGY0P-_Gfv$7=JDlc&H^iaGrc+uno>28=TKZh{>nqI&c`+4z5@5Ie_YlyN|aAvg}@)Zxzd za+rRUX*!`A3VKJ@S8Oi^;6`4;s`o>V;;wQ58Njie6ytr&#G+~j!>IUUB*#Beg>T@G zu#;-j{Si>931>Mg&)i0?DHeqx*TnX{2{;im@4RxN`N#vaBqqVw1J||D-=l6RJ=_b@ zCt^@U^Klh?Ym-n`3ZNS&IRSq#5;*qY9D!Lf=l*L}I45>rl9X74b5391L4SvOuyjYB zI@l*wtGfJLCEw8|6!JLAuC4T*+f0tmR+m`jl!%*R9#^bUByr1R!F(WXXI)fm$4t zRA8v%i+9Oe;>89a0`PskF~6J+h4r~P?R>qsWoEi44}*Vivpm?@p(Ia*&2u&;L7q~W z+%U!|f)?m0_;_>U$=?y@t9mnJkNZ^kS08p3*yY8X3i}FC zhTyj3%LgjM(8j^F#aIEG84vViVFpf^SBadpO$?J3Y$C=9GqWk@Ei&H0Iv=NZT*xM* zja!#V&4M+%E%bjD5{<|TZ# zh8G7^Y$jIL`>APYV?&|b_k7{g)GqqFDZ}_hW{F$wzJ3$cX%$oSYh9OLbGQ@Lc{_IP z+Z&zlQMPIuwe94in8K*yNnKLD+CYyTXkN5nrUSTm0&5;f>p9XJSx^H1!zP+{bCuvsjM)3Wy}tb4hoQ_XeA z(XV~&SW>1^h5VFM=x7xxAMX)@v_3dc2%L=?K3VX@6St=2Ds`k4n$eDSp-A{V^j92a zo=PLEvkK@xKk^9m*kdI8H2f%SA}0ESUD+%FUcINuzy%VMuEAq1K)1lcZx)!WW+BIv zN}c(G*$INjG7yC(M9tCDcgL?f0xJqL*r7cK_H~ja@I8ODqHwgV9(FhsO7KlfLwhdT z9ss*&Zr8Qfr(aBeH4AMc_}hLK=13g8cq70ZW(MXELE;pG#!x&NQ8Kl{W55KfC4haR?#z$&#e7Yi&ZLvBJ^tN<1jw)-UCb*QAEm06*Adn?cg2q&<> zbC8JXPj}>UO=XWJok-v8v-bnIW9K&rEOk~;1&COpEz&NDKOFC9oR!mbsWUU_%Mm|b zf8vBWms^n~&}NZ|pzEV-w?Nm&(j?Z1L^2WQ`aIy|Jt2`@5$uBh&~~{$=H|gfKud#N zR8+Tj!#sizx=z&Q-U@#%b^t6i7(b^i+Zvcv1Mjm`RH63b1Y46ill#EuT{z#{;#stq zQuQ9sl9zt|m{h^r`{4SRObJ4kWiG8uvhe9!pIZIHr|*bMtb)i5k39Q!c*i=Q$}6)D z&0pg0-nY)F@Tq-kwlS>4$2h0q5-%%$YbJH&x-q>fiz{Hs!fxEN+Z-745LXiDI>J7{ zVaawXny1HdJ_fG11wAtN=W?7Dn09Y9@qjAq_t{5)PY?bz0xJj+lNoSr-*kN{6}bD? z#6rK%(VcmaV>t8MOET27%tE~+40e;9n(kDmVt)4v^u7A)u8YxU;L4nA$2ip~Is-a2 zOa+Gjqf@Kwa;*1F!Yi^WyuJPjmz!h>pQNRJNL-kxm_^j za_~#j<+97yWc1X^L=BWr&coy5qcd1}1)5>PD~khSsD&OYoF;gm%#Z|2Po+TfV1h$39_draMkU@2rdlWdf8n~hi)AaYE}G^+b?fz7#yUp;S~Bxh2B{i zQ>(OB(n`gLj8R>WqRs};#X>5xc5UL_dAWK^ba|fv2-5;}a;&v&R<{a;R`h)RqYM{>Q>hWAt|5d%1TMp99A5HoF0ncGkPZR6g~s2JeW)r3ptxU@C8`w+@q^&{rq_Rk~W2 z^F-afR?gxx&pRO4@#GB<>@;K`chOP{PGmYaUNejo?z0C!6W(x6=J&H@Fq4y4Ry$Jtmv1#~FKbMqr1OCyFZC zUQ%cff4dWbh3fXWRcZr` zfPkvxVU= z^1*NWJJv6<`mN*ZsEc}u8W!sodF-McD_lT9ZMyinT;aqeP0-5;9Jy-%&J@y!ZkS@R zh-=v{PN+e@OHRU?SvOwNCeUd3%{z~@1e~+RTw(Xz*?&_6!bxECyR zN9)JOnI--@=XuTm6KSzPM-Rpvr~~2HG$Z1jt{glb2vXKc9=3}!^;a1yEI6196eIwN zV@`*iTVZP>Hq;7~f^%MBxB0xY3=M`+`X$QFEB%(-nP@$FdR(BFEV%dbi<|1ljDF)R z`o~m?3-+*2C);j#YBk>|op|gR{b?^hGP>BWQ*tGBa=yV=*Ryk3k2cS5=s1_y zOU^eoID;$Z7h7Q_^IYU3b}ozKZcwypTeR(qttqR_5}B9O$s7_@bm*-HWviw|6I^0T z+xXVhio5}sS*rM4>WQ(VYh%RQCIX3|h>rALbRT_he&6c8MnZfYAa>BvsSnKCeI4nT z?lezn!(;RLQP}dBhXO#!umywQ5rc#5<18Z;GaIa=*m5%xsWFJALM4a?Oie2)@f5c^ z({qIDRltnDFvlTG%|i2-?I&hUVFnEhxB^bPgxQm0gv)cWewuPbe?bx)O{>ws2t@O8YVc?+N zE1_P`aDN})^s%OE^KvinkNCl3y^R<)y1W?{6a_OU z7q87Q^Eo-RQ{R6fO>#mF~|#iWg%gf za@0op=x<#Mxq3Px3mKY})E#jZy$Xo(LKe-R77%-LvHpRY!MELe|j^cS!XJxpU&iO#>#O4&(a3gUjvphB5kLX?(q-!L*2cX!ecTjM_+) zUSswzap;YS6ubfq`9FjErX~d33Tjy+Kw0_{`#6kNRcjd-;^I!ioLjlkDsaHgZ+R^?u33hu6Qe$9|`PE8{daxR-#L&b){3z#`Sv=l9_jB$jl-UsEl>>dYBKC z*r7nJuk$7RcC~0-lY2nt*Y$^cgI_<0eC>MPS2Ogajy%firT+)^$-@TQp>LfHcWZGZ|;P=m3_$5PCrLNWagYGLXA<>Xe7*-dp?I|K5B zv^ClTJ-w*RChD3PG=cGOdiT-Z7TY2 z&gzN{kV=UfGbEl!Xau7paxq#00PYBq;9PNLP(;6Plq&)Ok(?XPnA9yz%*eS2yb8^(1CrSvu_b70l3AL0Nq`DoU(uS(F<1Lq=5jBWInaMY0Ed~jVJ_)t z?TxVe{OmV_Xzx^5vi2V+%V#a<@Be%TwH8*g_l>{&N-AqMZ@G0`V3y9ke!by0)+GmL zf{V=9p$W%ClPM%?mUWbNpmEq)B4&L;2LnTZKb?pu^1ANfHoisNR0zMA*Tx1~pu^pe zY5!ed~lK&wH?AGqN_^UYDy;G%Y5)wV6@J7_A-X^_^5 z8)kusi9Kx0j<)c$BHv(gfuyCQN#vKJpb7P6j=nbo^zkve;4GC;;e%r~b#It$mbu0H z{$=6N;(`vw9mM8Y8xr&$Rch}Fhtw&u&fgg9SUuMwb}5`IcE+^Y*!HD%kT)>TTq+mT zdFljR()tFsq>^8={7Cd$MuRJq=vW84@uC@5l&=&l5!e|$_AB6rXI&=c86-9UPQ#`| zT}ZfBAniVnuK*<@I{KrTrykw$S`)DWV7TaX#}R(G9HCI?+* zFU-Vv>tL?T#cya*t?H3AdlIgee_Cd(hybJoSgxtpwP;m`#2{>2HE)Ml8q#!_vP#f0 zEQ!yN2Tm&9mM8j>$D39DR!zG$5E!%9^%d=ITmN9}Ybue{>jT~8j;K!A;C?_8+uh*w zUO*iHsKp_7OYC!&w+5FEn`K^weRTXkTzP0Wu#Sg{#@pB^F?kYyN;xN;VT6kw1v_iP zJ7wElmc9?VdT{mPo@FeLn70FOh%Mx>vw=JO+=(`4TPSq!IuPcT@Uus++C_t1dFiKh z)bi3-G*qti9V4}>bnE(LlB`T7zmRBH2Dg+G z?gULo2}cUnyHcg*hsgu!E0R}asJ#reXEW7UQcwUBS>W=#>6|jx%nkW4WM^dvR>F+S zV7G9TNeouc*fHZ0*pGO2D^FWXdhyxuzJ$&7#rqO4*xFPs({*44C74l?RxAR~zDwCd zPHpe&dl7jIVI+_JBI~=7vHBU@&m&s;5s3HN3FP@{GXR@1lPLKTQUZHQG8%ybM$^rVuFi$^?#yF^>^1(X<2m+iw z`Zv!d7iadX7F-uVgTKZDs(75EJ^1ZbxkF-EbYZ?Zx1p$p;V{G4-eEGhS1u6RU}BWh z( z5pb_Dq|S0R&BP!UqdE7&^4L90kxS5=%SIKJ6@M=ln+m2x+|+IC>YV2f z?byE33yx&lcCKRdAfUTLUvrM*JIN{}Qc(BpxNkF8CA#W~HPojGdN@HMUEL{QThwut zt*e)MwVtJ`-)~cRoBi5|w#DB_b<+Rc`MiI+Lt4*FyOqaC-VpU~9B7j(JQ7)AGgDQR zPb>!pZOY~~EaeKHtX=tfQ)9%8KFUto31bQQ6Y7WWIIQ5SKmqV-Ow&$sSh>X|`IKP}UN%eZ$SI&V@A$Kg_7A5U# z*WR;wbq{^vE=|ww=-7Hytca*PC^4d46uLLJ(OE*$l>FP~pDLT*&Q`)El2yjtz&H{2#?uS@XeKNI(=l4fWHa z^DQhQdOY~};J{+L4-RdWWPz^&N4qI@5TurDwlml;>Zw4JBwzxuCBTMlpr_)i1D+OQ z!<#_2@G{~C1C`fb{?@midB&Z|40qi=i!*RT;xp*-C8Uxj-PN0fW@&bHPI{vvwqihL z6%DUR)TXT!@v>AmGi@CaxIjq+WB^-134AO!kuheDr^$1r{X+2Dkfvk?G47WKi*TM~$XiqtW;4|ZzFhO#f z7R%XfP-;zoKk4spArAUo`oE|ZrQ5Hlv{dHdtwrC64$olD2oykXOUMdp9s=~78Ak6S zK>#>y4ly`pe@eeapW-CbrH`_teSG{RntGffH{r2bO?`FhvEm}JOBz-){YmVhJjVHY z<^7{seOVZ_k+I00u?n7LGT8`3d7xK9YkU$46qOt{bzr%2)z6XxA&a=B2$L5^@Itu1L+^rKm9AY`roO&$~ikz1PHP`0lx&48~2tsb`-WP#v6QP6Lia`}#^hC`&UA4A{HC zLUenl&?Jp+Tfgvh-NN--qhPb$wGE^hU&>k+ZV2N5LU`p^3KiQ=6CwRC&?Y97NT-mR zRf<)<;C(8yQ)@z^viOdMO)6^&Cta>Ys8K5M$Q5nf#Rl@SwlN>k0C*>mH^)}TUrCJV1buy2 z;8HRNm|a1A+mn@2+4&&_U^IMjeeO+fG9VWK>ZT6md<@;7HlB>IZx5hhD1L$}9q4X% z>5QZ0=!N;!`34!wiwC#$q?Ke$#+V3(Z>-wiWb!kNa#Me$R%x+=lcWx4t~U--Gw2!Q z_k92!^1eZuD1~&O-LP{=7aA7o;R-NcVta3Cvb3h6R~4Sch-zCU@DE;F-1 zVih&c%o*r4Vn)M2+|be}Bd3!4Qz?UBXn9m769b3<6GX7od{OIy;!#7xVA23uw*u?D z&4D=?tw3)Snfez69}3Rxji`m76sTwdd8ByqtI&sa*!|-(tx^!*&d*LWzv8KD8HdSf zr&yn#)6hJ-R|m6g=F#Qt4In&e6C|W=pGyQan;EnsSg&S0FBV|)c2vhOK(qkkE3PiP z?${73$5VD~ryC<@z8n4|BgV<-P%+}LOkAz<5;zfZC%x>OpbQ~FwTFlE`9VWr)F-uy z>u2VS^k%6)+$^jYH?}s(8(Or*y?vnZ;Mc@54v|IT%*JUq6)C;4k5ToyTPo{R zHMi>f^ev6jw_2~dXEqni$>-j4rN1wJ@}6O-Q54;?a~<_w>Rx&i2{3f_M{SC@!~>F?1FF_>sJQAx+U(2*H7J1U;GdPD9$K4up*zi0`R32}X?zQ2SqZ0U zc0UfX3ZVpVZlB!)3TglW#nKRD5u7YLav_d@>eC76&@W(=Yqmf|d=-Wd#&VD$cR(dl zX-UHpL!TN}{Tx*>1e{5oUZmbJz%Z;XoElj5>GL6c7Zo@&5~Y6p@WY>;Jb7nd-=|b4 zPtVPn-Ntsm%q?$j{|p4Wc_xRoJf-25b5)S=px2Pgr}%10q)-H0ltf^1@daG^qKsiA ziV{?j0=*q2tSZpx6iBVUP5`}Mgw*!SWDTYx>$xhGVAUl$@{jJO9&+EEwg=a)rO$N8 zJ#IxzSzrH0x=kljw)jN~ZnPU(;XWAL`-9#p1a=Pi6cHYuY?18vQJx1lcIrDv*z~$A z%T$KZWQ=e^rz+IdF5?o(8}#3^Lamn9{kIn?=nhNcXVIM|hDDl!w*#}TXg?}&nofHRlSocRZzg#BosFT1a|x~@w)nLww#eq(EzAlHLfw4(jEByb95QsV%IcxQ zA}kN=$|!dBAakg3#&}RlS0tDiK)KxKgYSl)fWRR28zL<5%%I|)@_m@ObBrpk9#+j0V2SC6h`nPV_V(#jrfQ_VlG(on-kni@Thqj_DIi7-dBJ zN{81errybXB@68Io@1r&wy6SC?DG@a#(8xbeP{etMP%=GzrJbP zo+X2O7pJtcdWozt(mRLjtDc`pe15PNi3Y%nI}#6;bp#)UCU}i*=7oq_9us2FW4!ZO z0ZYU_%K6Zw8(ojw9YzWcFBT5VA((QrGr158ERlCU`Q-HJ`gGbz{zVI$sAB0U@9Aap{U{5H_gf@^#5F-n~ zYp-lZTtPr8C&fgD{e)#%Wv!t^Wv?DixC0HLE@4PYSco!gy@tA>3R{nP;`_S0pC{j? zVH7A#|A>$%{X?=Wuhi;tL7b215yNEpqw%=yAOCpjsat!Y1?c1HbwW?GmQQWzC3YlL zOd=|6-tJ}a9^g49Bl7=1jrLq}W#_^!viZy>buKYX)i=UjEtJ3r+-s!y)7T+OOkdM= z_=^1@ION>6?R$4eAb)T}Ho*?#u~g|YmX<}{ALeP(uN0PVD)?YbV}Ig`u|(5a%dHK| z&T9(=Zig6}VmK0RYHg?+VeIw%NI{akMV=U>e+Oz=kWI6nqts4dreBzHWE1L~Dwg@6 z=-u9lY?RIotP0xQiufha*X=f)St7UtTV zreu$?-k8k9^qnhR$UU*mVUj5{&ng2!N@mQVfl*idf(#(jmSKVp40^x@U|}7!8i&9k zsIO<64jSOn@>!qaN!45r*d0{~4d=PIeud&ugJ}Ojmi4IX)d8_Vdrvx@F4nE=2I7Ip zmkk%fN;@yYv)=5or4wowU|RoIAfN!GlF91y+8zhg9!}6MRS3ii2^1f%c9{m}g0if% zadr`)%QXG`G~x}DItq{U(*H>QLsLI$RqDc#MCne>Hp7x{Wd%wVuVMXe`XhyF#HzN= z`gf}?)TRbjL4^EXsp3ER&s%4!z%+@X6pdhJERe`XZvN}n>HBn@TNXQHbwbPRm9W>p zj3_1tEfw@gU@6Y!DL|C^j53p7$f*K>-`%j!@T9UdIu45Wms`CQo=v>ds%s4YY^c0C ztj(F+fyrsv8?e&F#Ji7*COA9J93j^Y3`{g1x^+;b263dFTb8;KG54~~JG*#Fm2lve z!|{<3dOK(9nPcP~mT@O&8lmcSRpUv8)xmC z1Boe)ny~V-lP|*r19qMlk;7=rIBvoc;t8mg1GU3lUBn9cBs6`ufYAU4h8WQC$dLi~ z@ew+jw^Cb5$H|ku=9z8i`P|n3Y2Gv&1;vHoAzq^)*dlLK_=6ueIda{a7Ii!~eR9JA zK+Yq`DwUeUSX=@g!$75Lr}!2943E9e22B0!#avd77?&vc(JTlKn)MB z?m@PbP(#Z1VmO6S%Iy#Z4x>x?)BSS29s_}(9vHELTY5}wjnb^d7oZ>Pw~RHS=4w+v zy$_QSOha2G0O7$DuNa)SU0_w(#8{Q$r1tmoKfLc-Cr>8nPc-!Fb_WzVih2mDeBle$ zy8Z(AL-Y-HLbuh2va0Tti1TE9pbRn`n`0-CFm8ElOQiR48udYrY7Blka z93{+gnCgr?mq&hAmZNJPh(U=V1P5zL!ouKH`wWbjO#dG48|;K?fCPjC037(B7|VHf&2gOP_fm?|Uq2Y)g1cmn zFA~!K%;jGF9sYpPc9;gB73XX_vFt(WH|f&R3}+cHuzrP4_L&P~EszZeGn?=2>zg|Zu0Bmn<#v?P z(`W0GWuTtP9Lyf>rLONS?WL}ZzoO|oy0=vTll#f1t|~psY0!CR7Oh&_(8wLrCFN6q zVRSyKt-$2l70ngWpp0?e1gdhY!leS%RVoeS@3;nd<1&eSxecOX=E-nyKLBhzRMf%2 zefOZq3znSa`r|e#QF_Tntt{O}*5z_*fQ<1_F8ABt-geuX<0Ja_^uLLK;{WxprO&{jGfCf>{!JSGBFkXf1!;-w9e@n(riytH^5Uvb zd3H|%-+Kk$ucgZDhQP;#u@@$f3^I~2(8BkFWK7VE7#kc{CzC%5+L&pV_sIve8HN>? z*A<24_C~(mDD<`H1Wt;SJ|7`l=;KEUg@?(5z4W`;NlsTF8v|{?vTO`NRyy2kU?`v@ zhW})CXXsaZZn*h)LZDP~yDmF=MZA!vA4yS*=&$MNX97);v|6d_Zp7KvvMV!)G@6CoSqg zx*1tgD9p+${G(~1OV%^slS9W8RA!C?yxD?64ve;rx!vyq_bZ?xF^qQ+ryzxS51A=P z|8&!)2R3f(rng?7dyd}2G2U!ixM@qP#4PeHSv+c;$5vBQdZl0o)*Y5$uM~#Pu!R5m z6fD;XbL0t_f0zwXaU2{oKoc_!Pll6v_}KVPr^ZGGNn}t$2Gfc})RR(SHfU;~LBe1y zl#jg(&JGFGVIrXaecw$t-HE6C(%xQa76*45AZXeHA|a35FOfD$XC7K4w8&=f8lO}p)WOmbahNwx)DY0cV@HA;weg-c9)gs1@0wG z`_0I3l9#1HTk{}A2hDZhl>>@p7*ZkK6~0YB_1hc}$2wmnp_l26vgQ?wy#h7QwP3MU zn*ee#2v@a-1YUF1vZMM>oJp(A{32YzQ+DT+E0`^9 z$WAH=yU&vGZQk3>1Bcc4u2s8(nRx+`)ouv6l}&muS2g&RdY96m5jPLlx7)|p1Ylgd zb=88!p?Z+O5*Q?{%N7kSkvGIgI)ufE5Gx=;bwRz;_S}|_qr=Otcj?uNuNk%remSB zi5l7(g(+oQhhOHmw{PCid_gg`>@PYKP6*=h)yok!_!oj(6y6|nIZhog zt`&+nQ|5zjGQij9bSj-_xxtWx@QqO&%pF>$5!bMC09}}YL4+WFO@2k!lN0nN&wOx$ zw}$;tp@3qPK}ennC2qNA5R^LmZ##N@Z||=uN$LL{{rlg4l_wNWu9iwI8bzcI>^GoC zs27T4QvQ3rJl9aaz$DE8>d4{~4DYlug}l99983fyQB7A*ME>Kqx|e;&3a0RXj~~6^ zST{(cal0

`)h35>*&M?!pOj7e@NX4rBMs?ryzcXd)t$K<|nupi=;DxzM^gxb%+Q z4IqQ%T6Yax%66s;!q$nHW3iH`NYg&gnqyG|OUfju7>96a0mt#d%zQ_Tu{UwU3<%{5 zH6D7t-MY0K_~}M4+kuK4mM?Tk~}gqfCGN@I#OnI;=?y zFA0fSz?_ID;ZyGI$&CwghN84sLW)xCK?R zt{$Xkkxleb>ZLDDtI+V{G0xr9r@?2LoL0gc!%Ch(0GMP6WE{(as;Z93Rhb?r<>ynu z{L15x6VEfx(BJOub-()RsZ->=d+vGnsa^$WJ%%_kXy8gD!ZW}8(%D05e^*!6FVCFh zY@n}55CR@QpC`zLXa3^w00^gOLO>H>IBG@Z&YuL~ZQ16BBN77pXoT=!SK};MP4lJ+ z>d)GwA>bZ(<3nu4nM@QfJXasDdf~ItVY>buG7^xFU_jSmvJF|4NAvlQ3WZETqU9NF z;AalxRcXDPqpElD?JhgWsVQFz)vw&zB{WN77fjIK=`|N;x1bttb_?Bej-tZ}o}^{D zr2nJ@1?sizlk`VGp8b=ao?((3(kYlc>YL@#v^J3!n*&ScxW!hHYwqF;)Y(ffXhf8* z^TGS4D@6F>*3JNU>>xINNt#UO zeiFuOsJ5v?$XkO2JNKpV|494pz&5L^@7zb$-g{bGmTh^-mMmG4wY^7TJBi~Y&fa^H zMJ8G74I#|3TQ;SvmQqFwl(%J+4q8SjErkx+LTPCmUA}W3NtT>A;g8R$;tV;|_qq4n zGk)WrWFI~BjAi!9Ftmcht7e%y+zZzP#5z7O>3#zQ!cOuPC2x1=)8{Ya$d&wsTievr zt^F&KG9#~J{jlxpqr>&dk84M#R|4tXG<{w@2t(=t%WLYNL+`ur!WgAsi1hE^`sH(+ zfY0Jt`)AK@=<8h&(MeoNbNA-a!XWwPi9?3^+h~CjJ$*KV8GI42i-cC3kxdX=3tb;L zilt@9#B5IUB|Y<#}bL(c63}5yL*fb- z|3U6o5JeZ0&nkqx7+=bz3q%%0LTQ&U-_*cOR%x*G&-n1v>voq=$dlKgw2)BD{6$f> zWUf=;TCjLw@%(~3I!X-yPH5v6TmFhu0nHW9uLYv;U6Yp7T;Nxu=5ZbZ1$=S8qTA@!=otuXdYd_Gp8pV#9 zMwWz9UyW>Oubp4Vw*VrpHpN`qepUNZapsOwH*l&>y}^8!`X17nfg`TZkls#WnV2IHJR{nV5ux*Y)umX{0w#X|D2Z{&o9N+E` zvp09aQoMtZt;O_cB2TGG;J*?!i%eL$He2t{>NmAEx4pG-N5e=PZ0hn<#v#Glq%w4 z8}%H^am%0nM51$G~uS?gX9dr7pg?ZP|2S?e@%V)?Hpk?%LHwxMGDwVo@t&4oHOUtzwCc zD*${~&i4OB`}zpjT=cOdlbT?3(ZhqsHjP@ruh%rNbUVqG5xnSqdcnNS?NSiTM$-kb zrURp8VQ}?qa^(Mq`h_(1k`5(4rYa~oQEIOr(&-hfIW;^W3|v@~6y14XcbE3?q)Pw< z$YI)ymjJusXRj`~Z2oaSBh7vO9`?cqCJ$mJdtKvMBydrY+k|W_mxhpGCL_%6EC*awzQ<*-n!N&uDV&u-j zGsD7$t@T2G1Rej{+Cj!K#>qVfWg(`p<$xd~Y}yD_K|k4Q#Erj@&0dws{3D^V18cKFX9a;|gDgR$T5^8Bp;aH1*{$JD zX{A->mzcDm;oi*vr9X<3`Nni)4lh{Bb#V9Q8b$4SyFdK8;-*kKBc!23i8DgEQl==JDy|LgJ=k}w3>19E6=Mf^ zI$d7XoX_(@1CRbpSrE2VoL{-Zxp8g!vK` ztxrA9*^s_0c}0qRm^}3+X9HtM-ZZ0cQ*&*P62#6pj1=8dz_(4*Y-(83H}~FDZUbL0 zO-M~5rg0+eKzK5nc5K)>scb+<;Qf>648>BoouwAe!IA06+1Fs=kmBjqmvu2qqf-4u z-iu)x0a&s^DZ6J@N9efcR%W1lvZaPSS_B{RzmqwS~-g^l2K1$lz@9O$Sy z+zDVmLFaD1=lnayB__e5yARg(0#Ek`q)IMraBjHhg z$CzC+y%p@{#nQ&?yb#=3XgFEq!JgUH??+FM;)0gCl*Nkbbc1UyEE!a76J!Pgh=F|i zQ`C(KAW7y7eMcBnVS@n>Mqo-((6L^G?S-FaGW1_~*yne5uju%}GS0jwx=EY;ip@yk z+;N?oSet8C`Km3cvyDd^>SY$3`S3H2%`}Lq9#&665as~ul)eY zz5$9=IHwrj@V>xv%Y{9ZzYYjgoOnL5!@>qRIJ%$@0e4Bhj;_*SKU?LS9qNRfD0HTl}_ER%=*(#ax)S4jo;fiKaOmL4_D$dpx*) ziO?kGa`;NVR>(K-r6#zSa`Hk;`84w;;P`N>Sl3jJD+SXPqR3p7;SL^MYJ?`H(6;IN zG4eCrsTV&MJC#YbOUC>wVD_tkQLGNg_WPDC#*r<@Jv`#3?{TF2AKUH(k0#TqTi25N z>3?J@K;$tMa*^A}msXfsL~0hUC$!a0FXm_wq=Xl2oj7RgBo3+Yz(63zx}~T&frC7> zP(TZ?l3HxxA!1SwkAodhVHXJpRoI6q_%6bOgob2^oO6z}?7H9l=J&tTv ze?L)?Xf1G)%K?8V%&h9x=WapspnYfZeVkC; z)B=YEbgVa~_hg6;5Z&~()Wa$Iqs-&UQ@4}180qp=%Wvh-yZVp8HCN+ zyM3ixT5nx`!O3B+Ml^W&o_R)kBuy4{Q1cZa2=R+Yz(<^GweiKk00n7Cj?!-Cnt%cd zgY+AmyS}jyO%p@3ZK5{v6WCWNV?pAr>)=*JP_*d!B(tGogk#~;*y zh4}61m7NNSOQs##IdG|@-(|9^;$~o?_nRa?(>& zyI|7I$J`ie6`l)4E-)pA*cD*G^q9@CFz^;0z-ZacqSBv5hmjL%CNlcjb|`I6_aX&F z${Ien!3oJv(5`fKYwLonI^BqariSP!88Xs`>SGEE-&5xm$`w3DQy~-y zMS7(yKk;!2RRW%X2XJAq@G&8QdXhV7N>J5MC5*{IU_?szSqJ4ZpGgc%KPCSLZ(Ae8|+j{6?k7?XkoH~MvhZK_n*y6T=?z#qc0rd-x9&waHOhSx)7hVk%( z*_H)-#vd5vuxQUmx5=j!9w-YXKbM12|Nn1GH5)1v!evJXa(2=}e{vj}V15AqAm|h{jA|VH0(Uile}q;yP#x9D zQ}66dGR|0RWhBz@m0DUe21%WLc=UOnDiAjLO_A0I!zR(d+Kd_qPtxE#vUw^EkWL|D z>(fequwDkC#s*jE%LM?V7^-OGa~5gEJE7fiVA^HVPUc(rxZSV~2m@AjbjvUHG}t&X z<>Z!O!DXmo<30M^g=f2; zC&n;jV@7OCtOSh+wP60bpn~}{k%{#rKaDJlk!^Gd5QcANPIez#=MXxj-ksOXm{JeU zP&R%ctIYmgM~)wkqAhsGjW=K325W@Ku%8xAL8*X3R1~gJS^0G4#>7*BAtVT|A~*=^ z2poLDyNgA^#5xAPb`H6hS(Ll&a`d=C&yQ+yTNnLvb~dVO{-?LMGGdvz#4of+{0oL| zH4iOnfTe6)G}AIMe__L8kr!MI;!r^_o{FZza+*o}DEz(959n-|YhDeQx~ITMN2m?0 znr#8|KSSUAruxw?(8!cphL^NJw-{*&s25yP6~pkEUz60ik`FF^=j_-P_f)=GRaA$ z*qB#h`IMfvA1+z!AI^Xd;@9Y=;djIK!V1Ib;+3H<_8CB=5fKn9JBaO)VeW*#58yat ziuOZEW8(yq&V66ZjOM<%1gLU#j5hb@r+O`^lsRoq#DCqR?%I0Ch6<{;^|l@5)roTh`X-Yu0R< zDIVA~*dmv^CDPPZrt_L>uAxkeHj;J*oaqQ-c@})d5pIdyav_Z-_es(mlK|8((bUxMD=Q`;XStfFyMLAYl{Q-A)m? zGfAe+oOx_`I849u-S`8lz9Wr1umr5xQEw0|-J1brIuIl$G7q%(D|q6__66L^z}j&; zSd^M)ukc&i_pEXPx8J(>JaWfWXo?zlU5LRReS=sNVYM74my(lytDIN6xnTKHsr3l7}Yu91>%ZS56cRzzDtrxQY&$y zJ}-a@AQ5wR2^=0fuNH`4l|qj7`nhu>r~b}7+fF-^q@u5HUteD<5Tw9YZ3-zDfF~kk z0wC7_Pn5Bx-P?tzYG5n#0957(OEEPtV!D3f%S2xNlbv!>;XZi7~{{n9B zdvpY4Os15=Mmn?=AYL4Mdg(0y1iK<~^x{LUe3_KfvUC65&{xe;t-L~1Dds9Qxg%V) zC??hj$Upz`=9^5@`d1#gYHhrN)OFVad!=G{rdA|cdi&2$Q6hB?_EgF%`vytxU3W$3 zN94*vf;0)m;%3!3p_>#B%GjFg!AVRCOptJxG%`sg3w9c!c)0jj;MW+xCYpi(b(@Mq z1+Arteg``r%xenYiLCBlPJMb3N7U1+AE%)FdW5^@2r5W;TkY=s_TJ!5pB1FYLT(w|K#w zhw7mCs@ir9eQ@xCwL>5WpywGn=4}eh+hY{y4I<~&8_3PY#{tc~vrh*e=6t7cLW2mcb=-M_vMc0vw0UZFYK9ys1k|ei#{e+sV_kGXYNZ zkH(A4zNZ0Q2oS`_d&rs|nOc)<1k-hAt5C$JpLbcd596?Jcnv6=7vN=0Qn1oxnJ&$B z?twC|M&^&nXG2f7(jNu8+8FuqS#5MPh#Vd@vxe&~#ODe*z2XaA&7h=o^D=)&vb3YWtotdxkWC85z6fG}HU z1cdYSeap_vK!zHUam9Sbec`~-4I^fDxP|S8+`p!7o$^sC6Z|CX5IcHK{fC+aKw;J#|Nf36%l2dpL|`xpD+ey!0zi!? zBX6arYNfXFU9~PjLgoVn4K`gYDW>Cwtel490|btY!=QQNw5_M9x}34a`1#=I0R~ zkv2E`oJYjsIgY6$w*aNHFBA7me+l{vu&c`GyhlQmWvx7B^>@K#CnlE8g@YIUM3yy3N zX15-?sqAD77Z+y&u=MsY%;FwSS zf!u>cbFxGt4XWz2DV0~6d(pV)vPI&=(9Dbith$-RpGS`_?>32NhZV#*Rf|5|S0$(vd-_x4 zwH6&9jzH?(JD4U{X7{AXG>)u(o=s6X;(c=Vn2iXHCb2fOboz>(i_fbO>2y5j^7F2y ztJKVY5;xIxBm_TiBnIzb3Z-)(gRHZ{$+Pg=B~I{Sn60Uw+s_Kbqz9`t4RiZUQoB%- z8iXVc+i&Ic|03Qh-+qH6E?*a7Kq_8?r9oJ+rG|ftD_pFn*`ne5qPEaujG1E;{2kk>))u519O=FLi17!37?I= zyEVgHn}^O{uWY|y--c@N1x4%f2%x4KMBQq1xoqutlAa`g>wJj*9knvp!OBAuSl^;H zp$%}$CFEuNC}Kh)zDRknUIzbymZizJ`18Me`1*pSy129 z`RUWimlAXz$CG|6`BaK&I`wX)v*@EC5OG{|b=!f1JN$f^jMKROyzRmFraFYD0jkhS z_?5zao^NL(vLtU=*astxWrYF?7O8ZSSd$*OcR~f2Vg6_We;wY1KRo4YG%3kviz@c4 zlJl8h?$yt`x|Uc*7WhDIuy(;r>x<+7O)*T4F0NHtxOH69DZkt6gJ(NV}TGm78n4M`5IV5Nc3TMu`f*cvD<*F#O6t5T#PC& z+$VX-HV9|Mvv+1+3liNDR*F-xG`Hl-g|{-g+@F32>UF2kgZBSm2=?ihtd5vUDyh_{ zQZ6DEI%5*4oF|ZpxsZ>a%@@MSs}X_-jfnJjE1Kqly@6Jc9rnqXw=Q8n+Ub8e*E%!f z>9n3dXJfkz&|^?>D7`W7vazW9NbnUX$%Y0x|z^fXYH_Hu+h!Cfz z$`VTijn%?Uep+HV(W!u~hQ0sO63T)#+-XKaQ$f~?QH&hN%O}4t=1}e}3jiv)azKN@qQQPXLH;ebWb|r7wngF07-XiNhs)4Tkca14)CH0y=yQbR zY*~Z?;COjr(qn}TJOw4u!f7kv+T09-$P1=jo}2#5~9v z{yu+|vR(g)-<4XW#eWWkHS?G3S%M+OnMul78B@7bv3eqNVN_tNH7MPchuW?4)`Z}` z46YpA?=VMIPGxlLx3|aX17~UfJ7GXm!?(J@PC1;Q_t@lhN{_0Zxj7yWt)6WGRa2pT z-nusWIE@=Yyo-b4T~hL6nQLUk;~O8f8(a&PH`Tx|WUk?v9^b;*4xM|P{S&fJ7vH|v z224HE?A0_0-ECR5qWT+cw1N3Sar2jV{p+E_2M`G~EylTya}qV9SQ_{X_wt0Yg6|8>$! z0h5-zB#}4}bO*qYfakXz4DvzG$pm~Q0?(|%Vye)XG!@mBUuI3i4Lq$@*w{-9z3SQE zAE4v~M|Dcjm(8|+p2&scuSA)jV}4o?p7J2nXnQ+Yzx#w8VEx`8Ys~$cd`z{>U3cDj zCkfOn^l+sTj-$`fx(nD*3{S*SDNQxxhl;L)^{lML)|I{cTsX=09q(ropoclP6rxSZ zLaG&pYkhExCh%D7LQlHDFeKw+U>`-H^nwhc6pZtgZa#l%Mn|PXFgFC@qMF8%aFG!A zWfRLmBy&g~{Z8?<1f{p3ZMdWfh4* zvuLZBy`9?F;6NSiKMH+6#OUeg*&|u{TKg5(Ul!$qwMY1Zi;qNz@$IF#e}g4g3j`4p zY{Mc_2V3oRpp24cH8IyuyJXrm({7n|Z)q*2NC08fh~c8tA%>{N~4zM z1lYQG$LWx7h@ju8Q4d93{UWKi$Q%t|>k1eNKuGWvk-7F>c1f!RFpCxb&RMr$!LY^c z*>-@**p^4IFpMzarPuEV;c4NL3o0LQ<(#w%GxW zZEKcj#ZZ6==$=lcg$I%#0C?atV(6i&y-t2Lq;I|k)v`E9WrRK6lhw9ltFlHBO8h!v zYxVLId{3a%=r4tVjazi$CK!l^RN+`anrfCfJXOkwA=pf!iqR7RzCzAzyr@;S=Ds$b zLS7NLWuf%wo1I*_oSS&*##BnI;O@U^L?Or4PTpUVNThw&?8@c7uM)|8b)Yj5is}?q z?#GqMJ=ImNO)DA|)joBLy3SW)wfFZs?Dl~H_U3rFU_r-+v3pTaA_#(-eNc8ShufnN zd8Q8RnDrNDkws_1;v-^P7HmPxVFL|9QCNIuu|7M4uz+tyms?2drjTVUh3_Au3|N7 zP)pXq;kO&Z7oWHuWVwW?%P-yE3=s*>ViCSv{#Xhn*$6EA)DHwRBK8GgAI=)veJ`JP zG-FYF397t6_y)!)4D`T&X$U3=tZ5%i5cZ-K!e-SK^qzc7s(MOty;Sns_>_pwSewx1Gd}Ro=2-0sZ#a*j01pw9^~e;qASr zVP>o#_<)eN0NbTu>oFWia^Xebg-F0s9Kr8-f*?@729u&Pa{x=Pi%5b#S9t9qKc&rk zyXr59W1$t_J*T&KUC7y!(MB}M-dqRHZ?8ppHIzLtV;zCgHv=Fe=H}P4qb$&1rN0{< zzG&u5q8S>BQHNOXpKam8;7Q-XkL!OBE$=^(mKaO#t{^L%M6~s^2e*spEUS8ym_$tV!gT8gGG=I5%}6> z@>kueaG$>dBAhSNFq@pDD^f7t{Rg}rBNx&0;?+-GEH?2LU%T3VYnB)0F)6OGWlolB z6eXtDYw3r`gV>Sx>AOh=B5K$=mH^FbYiqIJ1AI1eNZxnrRbkYUYB_dQMT)+=V8PYn z<8Ab2N-Ie&!V+(|zs2Ks65u0`D@0Nm-?M^=%oaZXMFCj`MT|2I(~AVI3G zu!QJ&lix?MIEb@?B#HGGC@Wbf77+dp-&MYs*u|PC2)3Z_03T~8!t3r9CpV=(TM1M5 zMvzBtS~|P3C1hW)KEzci1+8nxFUpX|DWC5A+WeD34(VSH7PdesNQOZ|BtN5DGi}ScPEk3SzLcO~4L)Up(u@fT;w9KK2V=ZE zw31)wdiW73aeYq@6O>jpwN~;>LQ|j~#^K&N55Gp_^tvS=8r?;og4Z_k7Oflatl8JW z)j~17T?2iNx#TKHJ769xmsxe1l!u6f?zq$_7ONC|nn@-NWSBnqXjGEzhCzEWBJp~M zbv4?d2^7Af{et~KnejmDcJp>S-|h1VQu4aS8p(-Svo4%DGfW@RtLEL-%2#W6O_u{i zK`Q4SxpTHsfv`pf%#k>ZL^^oWfm!s~jZxz6+UkM%kY(KO)WnQlV;lmO2NwIq3Gi95 zn^w)L=XC=R19Z%Gz|!HC!X?ZvBc8nixMJeOVVa2HivvESu!s=E`0QsW%L_}XFMLjN z)}6YB!&!dn#u|>{)W^-tcXEBCv9E7_SJ(HuyLZPLj-Twq&Q9-%!*|-}t>4y$Frl{X z>leC+b3oUuZI@M=_6?}2lySL(N|PqPI4f#g)1|cWdU=)aC&|B)>*76;J98g$Zg}&} zpVD4S%e)S)2rT}TvB5g92=___dZS3u6z{EOF4IL@G}}m%BVJX{#xglX*1bo zKQ1-2>*cxxERh|SXfpi33~h^IWS0{H4XZnd-62QWc|5bq zBX^=@Y(3MPd;Hddioy?Ty1K6NRi?o;DzPU!PTze3!3K{L)9=u@q0>P;-QBrq#qrl< zI|Ej9!UwG$P@Vl*YFnDV-@ZJ-Sx@gyz+Iy8X@cZh{qywwd3-$#(V(65ew1EKjymZ) z=Gm!$0xFi(8$nhtBHPde95tSl(4BCy&76k9eV1kp;K0_2$Db&in0)_%jl|r-a$%gt zA4O(!F;KBc+A~Llx6A_-5<`OrGJ9b|t%Uq2nz-fO>5P=uwsY%p2xEVzig656#a9)% zwuk z_K31lCjcKP9!PGzkQ)Fnt-i z(U4g?>!1|Xfy%DWJ_Bt0Y&Zf1k|<+n^nnd50UOx0OXxS5#@rib^dpRszfq-@5$68= zR+p-4=llvV<{8_ZywO_AktUrh`Zwp0OTo+e%2dehC*q5u)vZbSqZI z`qb$`0P=Kn0ID#ft=xZ3PnKy zuStI6boC}RZgsL}IpfZ~0U~7Jf<;Mmn^^4BZ64uUghQ(}o5NCvQ_(21 z*@&RYno{|d$y5I+*rZOvbaw!h$Ocd%ivuPJ|49*v+Ei(mi=>PQcv(t^#oAJB)k+?X zIj%ZiU=mH=+V@PgHW1V`=z$=5Dm@UI4(Ff#Ex2djdClO1$w^#)L%M>9?t3dFH1Yh; zpIFCl-MhWsT(jvsve0IX>s7i)Ow>CWzh z54`rlZzbQRzg{9T@Z0Zsg>7d|2FW0XI4^YD0ky?MYRq2Mu-fc(jG>mnhlhcI@fK3% zb0x;x5ZK3IX5=2eoYd2wZ36R^uxpK`i1pv-5`)fM4I|-K z)(NDi{&AK$Oqq)EA5wSjp`YfyU_KJt`%E&^Kv-2Z!y>oM+I{QdCDsH8Eq4CPWD^NE zG8AW(Fp6U7P)=x?fIi` zc97e7afJM*xo%4{N6G`Obh`Y>CuQIsxF26lot){#bMIkZtc8N3FKnORImTTG2gKod&rc3+AHq6?Co?eyYH z=vrvge3RiST%9I`rI$QRzo!<DcpK!P-cKU;C z=V@%(QW&!UpmU^rRVEd{m=WN5u^nzUV4k^WLwX%N9gL-gyA4KT#oLb)#Px+;5C5tk zU9whXGEfhjoz+?ZuktljcGCdg=Bfmaip6FTT#5vm9qIJ>!RU!jj)Y%7KC-r1>Z}+~u+k&u@~}Eu9Y#qD4!-_+rNW58XQe^LlRA zP2ae+XZoyfT(aK5)98i4M?TocHlH7vcp4}Sf_S(v#2f_It^?<@qd;gXDI38)FLwQr zssPjTiPt2KFoyG~6b&&Nf%R_wdEn#Y1kVwBu)qg=5y>(a0Ov`S60u$-^XVZx>0KhBgbUJ! zT)HkLsEoA;tkQ;%iBCtrzE$+^4uMvb7J)bkr#EpR)KR5w_JfvWOUsk=H=nQ{%sNIk zc-{-##45@$L zA=7FS4IH_^6A_7c%}ML*Wi9Bi?q4|F(b;K@+81mHg9AeAy1Cyl1KS7u9sSEj&!Qz! ze(91WZP!KVdkJQ3g{y9sMPv{t>YH_Yd}4=7(WLY^qZ~!!B8S>GS|fYRjN@nk@B&7F z@c2)w8i%t+?Br-8oo~}sq*33xY}h1oh_u~vYU@U_8j(w8n!dQ1EhQhBFv-EkhP0r( z2S?uDWpcEe^uY4nnKQ+Qv9p6fFT6cku=xk-60qo1$N@31O|O|CAnoQs;~eEBE}0{< z$r2*<)>K~DtLx=9L!Gc)P)jb#7y`P0 z%vSlkh-G-89}LnP#|ICYhZoiZ&9Gt7tjf-AV=QJ!86$1WYKCsPw7J=T?52P8s(QBG zxxPXrIQsC)T*FzC!xAHjIg+67r_F z@K*K2RDgiecg^zsO5tC>(yOgnvF?**;4N8#mPGQ~qQ3Qg%`$~YENfp+UMU8O@(i*Z z!2>(Z{neur{Xxw{+ZhLmJ%Dg7=%ym$xp)KS%Z>bP$N?}^p3@7eh=sgmA}$n4%KV>0 zu~^7}+BiE;9Vb`!_q*cthp+ABLZhqa>H|;J?7O~Spi%PrPaJO8{n1As(YFX>4=08t zW=T@0q35;OL3_GY5lk?Hb>7*7#zsT`tfMLKg4&Qd7CrULhJ$Hs+jc*ZXYK-Zvy3IS z9^8SUC8+OP)Et=KrGp{7$T+k*N}5-$yk+_Fc6x~XUh2#kWv1@II&GlU;Mcc>-fLF3 z1axf>xk!6e-5k3|*A}DK8oI0E&MphvD0~Pe?LCm^PmywP?5vyg&mw<+OzLdX4g!pND>m`_QKKJf=Ba*-Exg4<%fF2 zi2;v3_Sj7lNu4S?764{$!%$pCmV~`?Jhg^U@E-l($~YewxQSH*M$i+VQnVF@;;fjw z*D2!kC_UXqrKO+#acu00(a{*a)kxP@Iz&PaYtF9NMF zbC&xNU*umh>o)TU5J7E%rp2?Y&xDirJT?=0lI;i1UzZag;Oq>E>H$_v&j%SHsEkEH zP_B=D``_XDG3I#YM-clNLwM7;6-Pzp;iWB&3kQtgWo@0iwv~{G#;WB?T@tQbt$S)J z-D#`9Q-@+b4NbKY5IJ>04fp_i#pA9#jmfnfk}7Blup>oCp#XrC|8<@`s&q`MCD^PP z`}}N||K`UYbNwr`B}HaD^NgGDQ%93Gg6717I9a5tQJx4ip*am=XKfQG&I5!KlohA5 z-*lb8Y^xLmlVmR)BwOjR9r&w0avnX*u|M-nnmz-#a#j>V*?xH6hAOeeEOai~u&n}# zgQ5=98IZwY!_v0sQjx`-FaVU>DF)omdNOG#+?GgK9En;vh0FG&4l2#g~%BLC2QUxSWEMcub;X7sR=lM?oiw!6)cuoH_0rqH3+R$jB zNAb#-xiM`M+2S0AC+13dJTZsEBMcE*C7`>cQJRGozRUuiIUFTeouy&R9(^Z9ztnnW z4q8pN8M7HP9ZQg!++jttIcf>$n6GlZa;9c#qDq;!cgz0vi?6x%vIHna@uEjAx#(aR zY_-476*63CEJ%gYmSl-W5|Llt#3YEV}r0J<8oX^u%v!V>;6!2$qLP85|FUtf%+5G#@I|Uh=Uk5QsMzAJe^|fBs0JKQq4N5{}s(Awj`586AG(0h?3xKa9yrB`?y!Zy8M$IR;Bm_X0C~ z&wkVas#{W(Dh9iaXKNM+`L|`W>swu&%CIs^KSOnGe5n)qtW)R!JCm*CQ>sGupSn)K zS%Nd7PT;Ja+8J@<7AFg10cXT`NY)nvS%x?14wID+ik>duMDYYn>?bG8mcB}R<=}^{ z-C^>&(l^^C)bY)|q~VkJ`Z)bz?279yjq+8>iqOI17qr3tL)v;##PizyeceZe_+sHzF$jIAZMz zuM5euH1&ADKrPG&q&={QpCXNNX`Ow|@tcM#w4#Bl4lXu*((5}o##N~KBRd%P-g_2_ zP5fowI#g3u=#@E=mYW}uvH06h)DjMJbe(JZ{4zikiE5Lh zZDX?3-WCDKtN1o`#^y(5VvkhWwYH1B^vfk@@kpc2e||wH(!auW#%{gBWnM@Lp-w4n zSGECB#3r0Rs+ywwJH~`_FI&+db`^?1;|rX^UnhS9Ii?QM(=F3zGJY_mcDD&3zy5Kv zvr83JLYS(yb*XFB*_`?7tGwUDXe>!)1(PABBKImpZX^7__xY8 ze)VD+`)x9j#H3M%Dgi)jZ5E3_AWMp0=v?3fzMpS27V~avMXQ_8gz4xBdE`(rQg7Pk z;Ct(;gb77Ghy-50CH2o#?ZP<@u4B&p>f$fz1KkL&c{-dXtPIemswAe16u}lCgdxRbGcq$%>~)x@F|pSoJTI83pLR9oZ$qRo z!y_yR?84LZ!b4~KeAw!nEU=6J7ABX)WRv|$?8|OUB%IGZ2MIHX7VPfoB8?p#^rwDN zrKc9C>_Tm|%iJq));M@xXp#eY>62exoBp9l*rfCs>gzNbm0jjhL1R{J7YpS)v8blO z1pZf#v|QCM$s7&O`SYLeyRW^)+SVWmOX@?H)Ei?)k3PoyI5&^sM31rQ9p}31SHdi3 z-v+o@k&mz?C_pB1R_<#8ugHPqslReYIL7p~)BE?d`1+J`Ftr8_KK5csMTIb6YT7b5 zc6%o0RE4Y&Yt+E}g>GpFUf*hC!>T17Yt^zfgI-Hm6e{^6SRUEa##^aEHaOP1%*x&S~bhi;hMj)MXVP9o9E_?ZQRcV^NyxjkgUN~J4IWz z)UwhfIoqyq+_QQ$eU&~=#Pl=fYP%7z)E-kjeV~5nm;*{!+uRk+!6h?Hk}A1%WZ}n} zwv{eEXvSMd6H^5=jkuXDZh&4Rhe{SjWs9W7d;y3$@o`wW)hsz`*R&(kuEcgg9tVp3 zO?=^AEs*W8Sb^}A@2S8_!eW>7WHH?2{AmhX`>CGHV`&~rqG%Y?r-wTpa1;7GHIh@-?x^cLd5)A&olqAa>=oo0;nGj zKhdOtUFYMfHGGd-{Aw0O6f2|^ToJ>Pi7cR4)im(6G%g7&&duPwEg9vhkIhnN`{hM6LR4|0A68S7p%UIgP1`!A3 zCxnh#qWNU#>bY}Q#V-U(uoFzE-NIH`EjX;EZN9PTW~oc0%ML-*L0Z%coIcq9x@jhW zjn%USdzO`b$_ubeOBEKdL|($gvCw5K$edvx0$X7mFa8}{z{2N3a+#m%vn?JN2f+bi z`vAlyX=tevHb{MqKKY`wy4}SGkJPGgSFz=2h`Sc9-x|V}PH4-zc_$t7;derWbK z$+#@Fqn0ZcS9mw({+YT6v=w8Py5a6N4KBK(CDHBjbj1A%0VrN;+B#>{GBbd%79pwc zw+>%RkC49eTh=Uc1Cx?#XiFq*HzmfgHIBfAb~YisklTbA0)y$03lnnR_)P1{hU#T& z{6x%aST=WS&^l*H6Sl^e%*y=(`(aar4ret|Qjyzp&t&~Na!{KcYXM+(XuR97I4yRh z)=tM7zkfx{Dt;$+Gu=v*?%sBw`APKMvua*%5ve2`u~l3lQ9huppVOn4+C-XoA9-V{ zpu*xxLaJ84RDBiei1a1y?m4#B0hpAkomUT$X{P3#hmReOKr+f}-Mx3$hI&|b8|3xn z>L~hYsAgSPs4B-H{1herDUqI`_Dt^eTa5kLtE zja}m#p-qBo{_><$1-pIukyjUz`S7x28<=I)5(EWyjf)p%DITA>-HY=~vH>%E!t3qb z%=!!k=`pN{z$veXj(3r<2s%s0Rgvr`-KLJgD!?2x1Otm7WUJ?bB)z4AEvt1)h*x(Y>Vy)ir9< z{baGM%7SDDh;Rz3`|j)R{(z~>eQ3dO z978Bk35wdb7myF~DqyFq+hh~f2OC65RUqP*0Wae-CRFL}HJMdS0llMk?ugB5pFO|M zr>t+(G-;Ze{5C^7q=d$J;+r;YFranog00YU5d2j@Nr>+J>`lr_^fd<|Uz0t6;&q0`2e>hrr70E zq(;=@yRxf`+ah-P{7@o@0O@O=!4AqnLk=Y!!R(fPib7VgI1De-Fuc62M<3M3j6jUvhmDzGtcdnzg;k#9R&!ld_uoj5j(se z)H|wWZg2}|6jnD@3p2__Futt$pEvc9-Zcv_^`l8c?QE+~8;-seTRhmN6@m??F0-WL zEu~2AZx+ZaVri42+QrNUS7~&VehSWg4eawg1HLrxL8*BcEH8WRM<6`1j`L-sM%=L=cp`iAA>Zn+!0T-Ua=uAF0)dK8YaCG;iv;MF_4LY

    qftO;)Ijy%s!{WDuOt3;O7S^#*a9gJAu}9}Mn@x&$o%%7ra0-;sh^TDp;h5m z*%jokxht5B^w)KZ7Yy0N7QUf#WVYwGh3Gg*PVO{!6Fp#>k(E%co9c%&6Y&Cz^KJEF z-wh^!#U5HA;lYd^M`Ey8`5U^dX)*aA7D@J1K}?Q{k&tx+Ww%=Zzj+igK|A>tv{hs6 zh-|DijPx5qnVQTraX%QSiN71pK>!{+Hz_i}wkvc%XTU749D>zB9k>??7qT2M zZwSrCLF8~jR&vXRLR(y0%;`x+Jqf9^#UEpjJ31L3bcJl~l;My4Rr>i#{$b#0RAbbAG zG_oGP)1lC4vP~R0-xC*$1lLEDc0D&#$`G9Y zrTMlNp8i5PS!CSiy8v+E!eZvL#^OUNEOLnwlAjp^vF&T$v6&+W==Z$dURAsA(2c`z zK?sLW>^oV#@A^Rjl$8S~4%E>loNRw?sE3TkbxoQEmG7=5Q#`C{R)%BJY=ypMycb9z znc+Ikre;a4tI=A|{2~RmT#eeMCmP*Dy+*&jcSx7z=$hwrat-3dV6A#fi=@`mXs;*E z%ze~LW*JkPW*S96s?qc=X=z>5qY)U4BIB%$iLdThw1~W6utv06ed<_^qQ)z4l-KzF z(7R<;6rC`X{?5f>rMK5$({xlBZE>y6kUdnV3p8t*)vciqJ2#9(wE*N-Gfaj=>5cbfJ9khPQVfzn6xQ{00!9Jx3fZt`2_AM@+cmC*lO$_-CNP zD?kUPD#*Tvy_Sla&jC_Re>FvXE%oreN%qr&M%0j>LoTM<@wE_ovdKjD$v4(v%VXmk z57S>}^tHlZvQ4T{3yH)jtI*T{n=TZt;kAUdWY|}~bx#}E?}g4=4JenNbE&qJgJnQmJ)qEh8yH_9i{uL^bpwa@C6xDS~xyN}`z1*VX z3(X>d-t^TpfS-WQ8hcqi$jK}2OQtCxLCV{GBlV#dup#pShzztbwl&C}VN^APjW-bk zirQxr*oTP)_O?KQ3GWR;lsHG&4e5cbw}*-6o@WGs>V?%cU{?P>DA9HO>$*?~r+3qI z!%^_A-%fr;>%FP(F5=F4sN=0{)rP(C3b~vYIdA!=d&t&ZyXd8RK-PHb;?e^MtQwRt z5D`gDWhe7)l5TCXB{X2B2kg;{>7_F+S_yqTgUGf0#`zz={BoGSLVqE)DdP%2*ctI z!=i#^5vn_2uE}CeA*AA64{HnP5LS#nKRIWAK1U(`DZtmx!Q!>p6iaaCJ^BY?j?hi?q7-C?!@FxhcBR6- zrq!ha7nB;MubxsivBKmEU(C^|R%B8oo_FtfVq!7!ZG61^+sg2%NAi0Omn45=F}sBD zhsikZKRA}KM8K3)PY4*x%4rog=LR3%u%$<`akj=z*oWR zJDJQ+$tRukw#@C}x^;ezj8{MYt+^bfFx%LCQMV+qxAnS!(p4!419^drCpZGJSZGkn z8jUa|GkS$WF&FfWIj6pdosn}YxiFkGqw=)Zg9j8p+-~5=6S+@fYvW`!s7|c|_k(rx zO3sx5gHH}^Iz_$LEMlNES2UY~=Aib^T5~F#r?7m9yg8t4PcG<+CiP3FTaWpa2?tfzw-+JvFJj>E#V4=Rrlm|}hOSHzZ8m!$IYRej<10JsZ(Iu$M&a74 z4)v(26m1H7ZaL|tk57RTbX3`S;D&CuiO5KFG`cv&{Pv!eD@P%x{Zo=M)|=#{AXn)A4iyZH?Ok{RSv#JUqSG$S30_2}E2qTD{3)gQ^ zi<%-$2ojCA$a1M`Qq1ttqt6~b9EWwfkM05K)~lY&l2~qwO4VkITiXmQ_2B`~9PeWH z1a{9|kh8b2xMoZg$Kit5UxdeD|D5d@u=gj1GB~tw!0YQc%($45K?b{85BjJpdv4_G2f3-9!scy<`ud$_7K2_4; zvu9Lws&vyUuQ<{?xz)%6FF}Vz@N`zHQigqm&*xei1&W`fb(t!WRpN>hPU3sCiTKpb z3kHn<;nikFe6_ggbK!dKKZ?$tRvV&DNH z&<5Md3#G`rXKfYq7f_bY&2l+F?kpZCdL8|!PzYoC?_(8G^J8tKot`7L^%Rc`+>7Nj zFfSZ2Om{>0!njh%+4zO7bl~f+ehJ!j!zpM8p%iCweqdg3ZhI%1Px#PktrjKuUc~;N zwm};QeUTetH$6Ou%)IwxeClMiJPA-)tz8`!r=_ds2lOw$Vn56YW^d}<q?1n1%pxZ`=s&V_ zei1x&Rxy2I3=OuCY?Ssf{|)X~Ko^?rLZCBw3LquMe%G2cpDowRJBC5zj^^b>7KljW!x1Z~Q+N zV6+eqdmYsqx=G**POi)Fj9?Z_Oln?4_ygmuE5N9S3(|PUlfyv3%}~b_%?ZxV;|Iy% z;bChec;4YYp;^*@c>l4s{nrkHm-4{TbA$9Sr~mk)WY^HpVW^ZVl%V$ICZGe}gqZk4 z)MvGsebfv6Qk5#nM*h=8S;cE&TlBaD^(2d+H*^u#aXS^6O9e=asJ z_AfBCIb^m%&Mb4`v5-^SM@_gu1odMC-P9$*CRIiihY12u((yoE_Ix9PN+uYY;DDXZ zZiW_qI*icn0&2@u6Yd|iCtz8aTZ_s1abLh)h6xH2DH+KF=HTEkCVR^zfvMHVV{q$0 zVcR6Xu#uHrP(SQ9CN~)wuB(4FvkgaU&oT`v#KkETpBThCguhVDR$+nMINoYr%K`#A*V6{xkY>`fO`2oyb#*diO6kyc+z$CW%on z>B2Kw=q)sD%PB)4u1X_l3&<9yufB5zHTBl3Gh`-+XDY)UA_3mIKzdz=+Rh8{t)yCz z1p)$#7^vq@mG~0)J}6>9t^;gMZ7qDWncr&vta>@UnaZ4hg(Z3VL?a+&0&Qh>N9Xi{ zS^#5V`oYCX>X6i)(aVg5|D=d3^8lq7T+^+Vy2SF->}>16Vh#M)RQc1=wPf;vt}~Xm zqOzxV_Pl_Og8x;DD;99c1bREt-MQe80~=mKB3eyEW6(seE1C;w(3BCVgCR{}pPVmr zfZry!&}I)pijHmGyBlX>ES8pqRxhI*Fn#_zL&1XdDEgH<%?TpW}Oe@5N4W=-l3WJbC6OoFr)Ktkkg`b_Y$0GVgJ zh-75@8W1L?z}H2sGzXTZCr1=Ogp~SF`V5U;v2DvL-Hd+_Fu@fZCX*yUY5r(%nVx{9Tk3|K)F zB5V3kn;_oZ8xdxTCUQ|CanaSil!RBkWEZ`mn|x9G$xS8u)LF3ECB7Mhprn$fe|pL) zy{%Q%)}{)nI)Y?(Dz!YF{#h~^rf;BjU#F9b>^6af(;8CA{hsqeO0$+PwuuBf6UgUZ znB%n>I|B-^8JGDxsE%e*xO0uSE@VDNQWX++G%{rA8)NrzFWl`&LEebVJ^o(C<{Iu@ zw#kO~z?h7PQEq9}o1>J8ps87paI(ynL){@xq~4gmfZE;PVSYYK%Adq6Wj(*bt_j3FrK-^4B+;8yn~7j+AaLF6ZhJZ)M5DcR3kAl3^` zzu0wg)LB#{WqHyca`f5U>R{VQQaNrH^Nk#}DW8sK6Sf!h^n+%b0ENq$9lahLWuh{( znEZ!+t8mQ?hYKJn%*|YM`Ni3mp_MvNAh7P3O>eSW2d!?~FuBHSXp=i6b|=7~^^0XR z-R!~x1-P-vJB=ri=GwvJkD+_qTbGA~HJu|10S#mTOlF$7AsOTrewkh?Uq5U9c+ zfrV4lxQ#gVyF!S0crPQA{Wl__|HCCJ`hUb|U3$UrFnw_@M+WkF>8P7z{}0)lWbnwr zP^s5EG|1QJguUImC%RQ$c|z`_|DDvf@H2cD$h0YRNYR%GJXwiYQ2TyG)z+U9*d&pP zSMgSHH( zp4Fd*w;`a1frzODaOH9DWBJ3p!&890&p<2)!<;aNqfeev!{`?5indb&wMW#{%G$N7 z$<_4QB2sBK_x5h;={XB}BF}&p{3Si$6sFMV>g$ygsiC7W9>B_4Nl-hJ-4JuKk0&U5 z>LU6^0dNFfrEi*-q8E`j=q<1yjR7v;f{mPjF+G4WGYd$pImSe29+XUes3fCMOEwA8 z7&HKG1{@g#Kd@rNghsE2AOM?6PBBb6KvDp!OEOE>C=ys8h804w2t4VB_W1e|3Ycy0dWF93i&Nk~OOzxd@VT`3Nvj~q$} zRzZZ}nrC8;oU7ZIccu!|u@+0WDPZn<+{3*0k`{$`*sQcod4%njjvhc*z;sK&TC1~F zLW;F@)Kzq?crL6k&V#Y@N+=d(0ZwCcwVADmRXA=zfbkisEn9jrbkI8R#ffW1GRzTP z`YG1{>RvwuAK3kAgBSGA%+Ne+?=j;dW4Z_O!MD`wX-%MdX$!Kuy%KREGX2 zejoh-{poLhOD(>->&&w@bi%kMw`19=W$om=_W3iN04X|VEeVDfPBz2zp?&JSWsRgA zw<>$XZ35f#OcW5ubRki<>Nqx{lTc@)<7sxorahsqXKyfkXSN;l4uEMRRc9xXMxlW0 zSB_9sM#zd+P~O@fEHF4J38P-m3e%T6MG}CG;KoU9AazZA4tE#^ zO7O^Fb|(0THHw=i>oW$Vjkl1D)FE~Tf-q<(G_?C2L*TXPfD0eg0EHw`soY(uOziP4 zS{32Qg`s&8xrP@RAy3GE=Z9AwGJEI>b+M~DlInbl~&2DTmmJCP>uc-&pdk)}boKnMz6@*|U# zPI*yg{&=+Oo8K*<}fPGPK;~h6_5;ycHo<07($xLi^ z^_%^L2VVrE28Mf=Jl@}*hanFztCzNQb;v&<&(Zns4GbvKmdOjc zV4OkNIe#L(IiW8Nx8mOd!zIeCuY!4m4+jMRT&bSlA*hZ@k z)WN(lZ0$00QXv2WPBnJE6#`)c1#X_(@hc~C1kqa;$}!An(6xUK?+3~AboSAKfzzXo z-jXh%E%d%pwGK}4g8ijuVt3Oh^hCu<(DZH-x&3Ylb#~=%CHm}21+L>imr5~u6LrP? zwZHo{;Vw-`8;O=%E%BgAVizkr!jyXyrh~*|2Gbcm_zK&@4cns$Z`QX5O4}p6S%TDi zLb-w1A-w5@)xqllU;YNj+uRJeaS#V=uFohOaERPWTdCIC@16%{+@+lK@t>YXonPA~ zq1M)}UdQS0tyQ{-CU0M~AyS}gmrxvv`w?vuf zZ4LCtl@hmHQ=Hz}!1YFtOK2cU1)weJ`QZKn<7y|7C1COcMjM-~@7GOS(}NOVrKQ~uKwRqY zC-3$vG}=lSKnqVA)FS9Ne)qeZZgMA+)W^j=>({5={-5zw2-;AEARd&Hn`QkMZU*j( z8n`PvXaLJ^fa7|v1==zI2|`VT?@m1Z%|fPo#T4?<$(J;f@Aa~EXtD<*7jT5#-`b6! zJ}lDWGWEMJE+~~Y7K`r`3Q>B;?XB8qSktMA#VT! zWlq#5?j1}SHo(l8ErMZ_kt&r*z~J=Z31lsck+p}$3plL`)fm5p!IJfWoG}wljjR{K z9;9ujSg@aiM$iEcG6X{8E!wlGSUi@`Z$L*@G>`8BR@yInVFXvAkV-8YoNR)T#H3gz z=Lw}EF8#$!FwX83Yggv!3rVK7@!L1xnTf{})r|15%YV($(Z5VRldc`N8iWhB6y!27 z&{1HP3Fs(%QDW^}YLe7h&`Zpf+V;D%ROJ7)(MGHCB4r30*&Q(Vi=rgxiOZ}gVq6&P znM$Eiys{lG zihMy2T&W-eEulUu9zN&V(#r|*1EsCUs4?{=bda2>)m`B)>D^HEJ&=8?g+5y^lLh=D z1vi}5E8G3lyvA~#utm{l4>)NBM&$?xf$w5cU=6g4kb8w4vwG#)Tu|I-00K5d2$+x9 z>S6Tf>b+%PW5E@J{H(gD3nXp;Gt?_zIQ{TY#<`?EiP@*O!R$?7N-W;8JR&rTBa4VX zYGXdxHYuHKSritS#GUi*nWV5ub7I5usHj%tz!tIv}#5mjG!om>vK$+NOWc?5-H#BVA#M zIWXA@|7sq(S!qk_6ox_t^mgaaw{f=7n+QlPZXh#j&t^~0Qa7OFJiGblQWg-Edel}$pcbSs#FJS207`$M)fsMqb2@*z< za9822jwbS5p%bucamEHbD@F!>>q40s#ZH||TUlMxY9G5><$qZ4JBF6!;&#ZZq8j4#B-P{27E z4yKdeA+ohN#ow#dl#Cw~!=vWog(N~<9)R<{Go4I2TG&;o5P!K$Uk|Mudi^l9xprw5 z$*ZGAzz*!$P#*!?xH%#82EC#xs9dzlo=88H9!@=(el6qUt3_$CMhL7W2l*52u+uBa zoH?aMC0LbK!1_iHHr1!Ruz*61`yvBRgD657ei}>?@hoB%Jfh%75zL@RWzpFaABkca4rBJg|~q+aOlU0vu{w>be^$>+04ANgEd1W3+&!tqFSc0q63WFVT zYI*5{DE)NoBT!{(ji{|UAsEXE^=A6-k;uGoxZ^M6z{B*s(q%w^bz724CmH1)iMBes zy>muU4U_pI>`9V$fAr%YlcHY2xuSFJnhv2(&GXHg*UDs)_l@w&S=IM?#yy%O1q+C9 z9u^!UG-t@dabscq4_9?vsF#^EX=r;eVKa%}f=CP_+A&J*10+6BK|cY<)?b(Vz#TeH zq@0PVj2iXXx;=ima1)^R%Pz!8PfsnsPCJk68dw~SytZ0`0 z;?nY?VAQN?GX~oI zLnMTP+&X!dhY7#YRKTR%5-XdIuA&Yj@wI(~p$1EQ-;Z-uK; z3Hz?v_jv2xBZIh)2ayqS5q9Ul`ihInW+DQ@efXmKd!>U1m%-SmV9~aUsz;>a*`Tc} z<`J+P;V5DF!fb=FHIMv{SfkSi`udIxDIBtt*hsA8D*F39e=F<;eFLjCHoqT6hIIl> zVQMHiIj0ur3}RjH{3td2*T{iD=+am)N^a)vKDN~db3y{g>YHcYrVvSeexZUBiEHIv z=WF@5X&>cRSfU!GE(yIHh$-l}^Acxh6z!LdD##k_fdqE(g!3V$z9LtmBj+ExVKs0mWSP}aTE~oB7^1x9x6OmBMOLQ-&0Thi&W_+IVhz6 z>AUa3h~^k$pISPF>LFh}O7xJ&tE(Q? zs|vOsjH-v85j!mef`pn`GyPe;^2bK5e3{GCZT5rYZQQPlM073S zF?mHUw>q2cqK{W#=$wroyCV`6?Z5>GZt4i+qC;05La0M{P19mmn}E1=qF32}iH-{3vt zesWjThot zZipHqvY0GPUmFuS^#Yq%Zz22&CDK}2v=VUau}Ziam(>~Z7!-oLb1l19p!QaEN%{CI zNIG9vE(6?a@dSW%F4Fm0%vCTCw)1=fGZ-Yvr60>$rdd?B>C{vUh(9~@+1e+P_*x%d#q}RjhY_>AR+innd#xY-gYLy=Zgz@M$|$bMpp=mc zitPIs;b?YVxeYR&8~{I)7&V7gpu~9ogeyUx?VeLnBv|-|Wyi9mBCFlN!aLB=Y z8YhQ^i`Wz8|7QD6fY@83cw+yxNo--poWI#t0qF-jxL8<0kc~{9WG-3@YM*OgP90E% zBnBvY_3Wu$Pmnj51NAKkHQ5 z`C-0|oDnjHBwOd@F+N%eCl?Ngclac1w~50jqrhHwA`gnB@8}8D*d_&e4n(2qSavSH(AUB zB(`d)7M@1N1`rlS?&WhO@8!RUx98TZvly* zL}sPIb}vjXprRV@kVS2q0<0D%4Ev)!qYw@fc3jz#p#+#IR;3$224&BL14!nAa3zTO zeD&EX_B}+^Pf8-eq{GZo)JslSIJmKy6&uBIjNpHU?T9f%)RDFg91*yB*oIDH5RT05 z70bu~PxO3`+^ppd3R-^DXO0HtL(=wW?S@`;AyD-eKcb?wSMo5mUfEnMUR*5hi?`;% ztCyc@*%uecc}6Q29PgpJ;95;wy;;X?wbZtvV(;O;J}RV2Rz2WS;wr^wGkm-N^6@19 zf;)YH{Fml!6m+a`i;cx@o6J@%7?qw?F@vqY$7-?k4#Jr629M3TntG)`A5M@T-EhMV z%1mIkO8~xRwxT1w9=0`*=Ts_7;I7hJwT0v@P3e;D0YyOWUVV;O6iRl2xJm+gnJ&<( zT#%)M@DLD>8QcHyOhC^Dl=zwfq?WoU%FYQF)H5&0RT)1ye8;OE*;~!x1Fm{ZznVoH zd>MObft_UIjuNo%UIUL)uS@FBf-OM4Ilx4Ic*!N9Pd_F9`WN?$FUX74>OZo;XO6W} zGNCgpP;Bb#jF%Oi883i2&Zs||5vbi3u2RLv&EFq%FT)dZSXQ zQ1iLw=vtph&o|`q=3R}%Va(uiV8pFCDTlLzr1R(D?BK;yC!N>X3ROrQrb9b^9i$FB z&;W2uDbm>HY=gaCXyZ{CsTdKrX~YzuhQNbmFBz7DS5GeB=piAQ72sePWA$qW!WHJz za81GSD^T$mXW#KXAjww2g`?lOICy(c~xAQZEN!k>)W-%3190hbE_hfCNjA+0CP)+hQW}d z_rh(9%rBO^4lM(jmqi!wz5wpS)NZ*4xb;wfx+EXv&!=}0hbg{z$RKZ#Xi76ep(#0) z#3R@BEl7~*>GS_-LSGk!6Q^$Yf_n;NOYJ4fbXD$dxE>5{Lx$+|nuNimPiHOan9-(m zySh2L)bxy3BDIMH&TwzAB#TaUicJD@ud@Bqu(_wt!k5Z8#%x;0^wXN|N=TtVd4o74 z3fN2Ai0r-T?8=X<>`1u+{}PAa80hewNd{q=q1S&BDys(20DOwT8faR$az*{~E`+v>d5V5=ZpE_VsyIpgB5=%13E^ueuj zDWG3>Fh;K}ehr_z+f};zhckfhnm@36JxdNgs?6?#5(NyBK?Qp=3V@Ha-Z;mS-Sm+M zBg2jhZ}`k06SufvXdHOO@>VZ_=1Av_(>sr)T@o$8kf5S6XZygWb5=T%>_S6kf|>&XEaZk!;Isz^S!L~)yN$LPiExk zG=S73JcJmaws(OgPgv^jLPs94B^vU8x)U=4?((%rhzmTbcus$d5a!1Tv|l+IkCX2O zr`$lh%G+kmMC2XvFlaB^5&>~m6o}E=@{&*})fO6t=Q5vsL>pe|>3N^h_t2ZF2J#_o z8Zn_(<@WDh8-T_(=%H@Oiu|1cVYjji#GUA`u2G64zJNf%i6(RkpX*7#+~bGQ!d73< zW~o-e?yTA!QRmjXefDKk@BI16mx#M|C6RyfgNNs)VR5lQ|4t+Ru-+7y-Jq5X&S0)= z&i(iqKobh_MyO{aJKPK>6y<0t%2p>>Y=@{Z_!dN?Ch$)VVS_V-!=|&TL=Qc+LUwyq zE}>WGs%022!4pMJMi<}Y`3w{^MG5}70dr#ld_O8?ZpG0#h_4yC5;yz@@d6LaoZ z#Mg`Go$W2b5X@J{?*h;3cc|lPO{ZF~j(D1|`#6<0b?)!3ncSI%mdH?M!QFqQ?+_TJ zA(=@^bgNbcpLy|D80MhBVIm8c{1EZoslhO7(T;~Kz=iOjIMn9{)w2@u}2 zxB;0>c!K)}Mtu$&Nyv?N->v!4kI1|S9(eXydONkWb|Vo_7wg5nBDrE<-~hu>nFS3D zkY@w6jgxbBn*Cm~CY?_|0Iyty1M&_Tlet8%fgN~o#*7Q5O-s`c{p@5_@EC4cU6-*g zhbe10o~x4$8kG+QIArxRHbp?qftEyrSB5!A@@=kCb`d>BAt*+C5#U%&pI_3O#Bb?b_?A1kKsTjZ2FM5d|hsXg?A z`HL^v6Oq`3?OXQlNq{6WqX+@DE6jVs2tLkx0+N}JN)k}JCKSJ{&_Ag0gcP5mIAXpy zXcMS7_KXxXX+aX!>I5hPOWU#L=`81btaun8)0Y129Gqd>N=z1ewgWl?q9x=}*Z|2k4*m(R;sjPJ;Yo;>0~e zLkYN;eweTQCOI*~+4d0yW9t9FKl@=S&PV^2`Z2pj$CD*sPUr&-SrP$k&?Z|i-Vi34 z1{KRG?r$D!R#)SNKrVv6V=^c*Y8jg(j~F7g-)xlu?HIHf1$IM?bl zPZUa^N=`H#mMiBnzoO4{6^mTM;M&1XncOcG`-^k4y$nB$Du3|6$b8ubDKmI#J#*dfRy(%oY!& zsQuGK-luI7srj|rh`zu7s@~rX(AV+E61W&YruAS}04oUmAzo18YU?s_o;>Hu|iCe*JjHpCF~3%q#4H=KWTGkL>t7|8E_YlGKl|XqJe9G5uJhc;9~}`9-Wa# zppl9_n+8P+mx`fYfQoFDKy~>4hr-6 z|D}|4yoda?7aKKgV0~^43FY+N>9p&^5AVCL8`%KFFrcu@^Ppu-zg<$Ac_3!RW^LE1 zQlm6Fy`aI1Wn?lNl@ojEJC}U?5y=&6KL@Lmw=7_I%&nJ1U(ht6exF?PT#77GfLW|U z-PuXW?fqtjc>n?p`k2=he^{l+dV3m)W_3_`4mPNl!wO*7W;P3~!pVb(!NB7B1qz^N z=yu^IVmDcnj>+)eS2OVP zdUTO+>8I6$^cR$?_Kub!wXY)#FuhyXGdCu+f$Z^sVR5(ERa!NPuhEExmgeoEJCe!d zX;3(xOy;9Y=xg^2i;7^lU2?gWzLGrFu5VR|M4}CY{sA4H1RQzBhWo0O{VJq>5g1qEqIV zh7vc$)GiZ0#WOmDSxc#G58KPRSl)sj%sF}!xU-{@Pl?lFCMwNG!Z zLi3%c6eJ{S5y^yfiI^^KNF;Y^?0r?U9xBB@8pG?C1D$;J`X>xstGzn>hP7OoASF@> zpy1bk{XNd@BLNj>JnDq;?1(4QQlJ?^5m|0Ti!tqC_}pmIhB1M4OnQi+2=N>^9{@ix zxm3N5hvQa{O7K_c6~lyfBMOnz%Voz;e_HA8z73>^WX0X_;dkEo&UXq?V@HcHDR8yJ zzydtFt-#*LWT?Z)gDyBELzCeC0zidtwwr|%_t-Jc4}QRT@dd-E_sWSdaX8x5*5hQ3u;?bacjz&Hc;=;dkTb0Z!!Ak&T!gY zv*(e^dWfBYEK|F-t@bKBQrCjD8zkZ=P>|9LfZt!brA+ZlC3&P&!j^8FqmhYSPBWWjOQq(uF>(PmSWyt=8W2BvqC)VaY7al`s#am> zLt%9Y2u((@xw7+ga&@b{uWafvcMo{L-9r;I z6n`;z?RlMmr8s6TUD-8w)$R_lS>W4r@G3U79WCo8XYhlBA`%ZtNsm4Yw!L}gfJ!kQ7QYAJT1&Yq%wB`AAXRD=trD|Z?T=Gfznc5d51^P8^VOSan z`X!Upu?>qI;QwZwx?qU;*Dut?jeY?rdAXPJ1DdX|J_G`km#PN$wDVO;u5S|`xUF%0 z$dHKNDNnCo-~hc^^VHM%l2|S#je_BMQVC%Xoo>cL(wH0!0N-*h@GV!v?D6gi2cgBr z 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

    UVg6Dmz)fedgYG#;7f+Iu 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%0Ap=7LcrBHxWY9hdE5v+4}I|W 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 jt-&cgPOjbSwR5^dsy?NI*A)e*g_1`^ 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ɭw6(ItoK~)Ab{j{`De@#pltEitW@YARxHH#gBtij{QQ>S81dBt(R!rF- zbWJczER&*gLz_;mZzsBC#-biTqm6b`E6i^i+lr+Zx!ze0o?~`e8oSbIwk;-}mIvle zuwxds#;w=xjP2aBBL=Ae8Cth#T@bASx+Mu8$9Yu;ph%>C^R2* z*|?5^;RjHF0;hwsZPJrNugB?oK^XA{dPO}J#R`X~ZQG`EOboIc`aFMeK-&b=_7q<2 z0$}#yx6f&7U{fN1XizM!lEXJi^mdJqLo_zm%wN_FrKUjtWSVYAQjW}Kr+Q(k z%t+PG%eZW)k;B#upDSd1I4)Jdwqc`ovH6YwV2=&g5idS?e=gZu*LC)%@6JJd_Uxa% z@mT5Ml)}YHb8YWsq()YbrN1_2j5Uf9B46x$%oGtOg`pP;x~L{3v6*L_rkC7JufF4B zk{bB35f40n`YE161y-atXh?zEWg2x?oRsiWywrTo zPk#|Q8TR+2kJJ5T8<4JuJq)oJ7qrf#N-7}%Rp__qxj3Z6oE>l=3e_Et9!V9s@Se|{@!G`3u|poS0H zn$BrUCG~X+`e7Dj;S#ur#&3QEnEqC9+G>Wpr4bVA8SrCPeh}s=F+W;0v}_?D_o>8c zOxaNhb0mz=AA_;MtbA&(bhu{p2cS2}56qp2CUvCG ze|`Q!9Q z^Q({PKaNiLwjO8)nJjMchV{QpG+lpU6e*E$N8Pra_?xkLRNO1(YP4L+87%J5+p-ZQ zSD|9d8^SH#e89pJxWtqz-sA7Bh0%0vgC-iGH`oMLyTm22+t-kW)SRxc6gVhFjrp-b zVT8V56*=8fht%cXOB%d%AJGHT?Mc7RxN7aJ2 z3X`V11jV`XRt**BFstM^5N0f!HD;@Zj`Gk}K{yFAuT_{lHe5I{ae=QXll8-#b!8Lr zj6GN`Abn>-_bR&^kWGaFrOK4)BgD4Wz}|ZwpUi?e+9{8n+(!Si;F`NA0BTRX!2GHC z+KtB_p8?A7vz|P$tr1bE_V*n$35FuD05|dR>vtU;^n=Bh`e#4e+1b{HUJnG9&$ERs zvzNak5r#}zOTHPVbu40aK#N3teVv?A^7JU$s%@;15I;4AMki_^IniF=1XGs`g`DZHG+!6${X}bovb|aL6hmO+w*(CDGo1?m* zE(WTuq@{L(%hPVR)r)~Xkw6j`2xqWJf!&aCT3a)EFmMhC^K zNu6Prx*X-YotSb6E(o|?*oG=g&?_Tb-=Y6?96CX~+YtL@`sU<$#5u}S$~edA|GZw9 z8=3mbbN8k~$-AF_m9V#`Pn~^p0Tu?C_xcZSMZYrcetox(((8Gi&Cje|{p?N~U#}Oq zZ~DnLWQ%I^-6NeTS8q>#du?LDgjOwIr{$?LV`f5D=KAIZ=p7fq^kL{w9gyslHMs%u z50M8x4V53X8f8P_X7C*xIN%5!M<@60TeG42-4?1!#{Y@D&(>&VFtUG_18gT`W3EJ)&+t+U5%H(Xfn6Eeh@p_TnmRL+bpPAez{aDuz_2_{yi(dyB<^mPsnjE5 zgqT}b6av@kUkcW7Q|oZ2C%+Bd5owq`$s9FJnoU33WE$t===r|UOU;&aL}rnP(+dN} ziGDzf1p1bnt+|-YtcYgOlTD@x@P&|Fu7Ee=GK(UXT^=w^4sant8Mo4G%O_y~Cs8PU zLS8YjpZL$fSz=GR^e}N_=|v`ZVz@#P;t7Zswf1aOh0nF2mtUt0h15-&NaU0-wX%kz zV7V7coRXSaS*@b3_JFW`b3I4Nu3f`%${K+DdVIDBmPBFZ84)+uTf4fThF z#Z7hag*B^KE}74#tW`EP5;F=T*dva8b06^%RA;If5(}8F>Wu~;0QG*1O|RyEL-s2fe-Ytvx-akpf#5n*VBkHYFpX9XECnzJV*rtLbykjB@pj>9O(EO0Ik2 zR1cgAj9GjG%#LVKp8+%c2cVfT6cRFarfgzx{ES@@Q?IW48R}ve|477)gns1AFt}cR zO=q@ww<44+x3`|YC?A3)*MiO0wdZzj=y&mLlE|IU&!}xj#es#y+QLn(M0{W&Igftp{+xBpq=_z$ zNXTkf-0uNnil6FLcq$U2$Fk~#7tCp}9w5XjrpKAuEK-}Uv^Km4IBo2A!Q9_XpzPa`PY{TJfPVofRTa#DPj zq)rMI84*liAIM(F(mlUto&)W=_#p`E=LM+Mc;Et`C(F7_8m5L>9f)kH)EVF>{?<3fS@sCI%rIeXdYOCc4n<(CXRElg#wmualf0e({%oc*4?dp zi|DOVo?NeUO|+S;Q`-#nQ?Sxh3-|-PHSa)V#D+hYJzY6E!jVxgJQH4LnF|Zm$Re_! z3~*|)Y7>L-IABA{F--*C$66~0UgXd|g@OwF58%zCcV9pcqkCxWpH}AoeWjsqx=#qG zpc!LKGGpKD0M96BnmI-{s~xqKo`Fq0^X9PQS9qeRr@tb#pdcNx(5utvbvgYfm~NrZ zqOqmBeN#F$ltm0e_Q7!fI0J->nvN-r%jr?*kx}V1dNQ4+gSIh~Cb)qUiq){B-<=^O za83`?f>x~Aibs!LgutYHzcCgNle9E}zb`lBXTp$c8AF5{F|Z654=M~J%4W(C@CCRm z$ry$q+l|9N7(*-12!88$-~}e`Y-zC+i*FFT(tmtew#c9cfqA|PSc+Dln?PM=4E>M` zU7%GVbS1qH0a$v!4eg`PWPn(dl1c+kXvP~{TpnxS&4Gbm<#NY>qQ$6zIvL+=5Ul^QD1tu z4XcRFz*La*+h2Y4Q|ON_Di-goF(!ZlC_!(?vV}S&2bNf?<)IA;dBMxI3hGj5OpPTg ztC3|T32EL3s^-3ADV#g_i^n=Te0L%N5D?6ukCU-vX=(_4nhfTNC>*3)=<&DMlwp-i z75yY<9X)Bhn=OE8n0GC!xO$ zJI1tHDz=w|5vyv*3uPMIye|I@L7_Y8Y4ir(8sl5mGCU2w1phbj^UYWgi`??@kDr5PVU$s8Af)F3Ma2K%K zsJXR=f3efF_Vq)x;K!(@lOJq@^uqxwe!g?eXyBOi!p9P z(}E;W_25hnW=Wuc0aG6E26@pNRZ@aM0}qRePdA3^erp}k0m95F{ZU5vIios~(t!tUl;e`2vc}nmg%7rX5+4LY`*6 zgcXRW+qXT6K6i_~0Q7927rG_&pugGhRu=WquRH*@cNw9iuSxE>Zd;5E%1Gf&+c$^7 z!QjO|TXCO~5mv_7Hh^S!StF0(5rAj__te2F;>!7;8GvJV>6K)dAHc@|Ev*gh#=@>> zRIxZ~th`p55}Wi{nSWXrR6@AL2|j7*Yow(=`QBwg2QgFvUX#$LwDN`QoAey=h}7Pu zl^WZZp7c$hJlcjC56zvuquk2NJ?Vr+i%u?Fn4mX-f5DPlufTbufUF!pa0bd|<$<^z zKry-(q?$0o96vCVF*3n>Id>d<4|^SkFdi-%eBEH*Le2Coz^#0z4O*UFt9B}?Ah9Yv zL$y``#*?wU7oAOf;>i%f&)DWd`#{ADPhZ^P-dM!RTKk&QY5SUPkjmqYT>d&xAWcMj z3%G}&6btlniQk0yTzwryK@USJ;nMfD3-NTCfg={Nkx%!=3YJFOYE#Gs~}Vzo}p zBHLvhyBauR39IhvoMhI?2+qa)H%}C;eKCvQP5fY6CZpx9+}AA;3CaZt0tTA7g2K+F zH2=Jef~FM+YD80@736qPlG|KkcCFpiBy@OWVY$cMVzNOK$_7m+bYr8esaYG=hJ%VM z8c)A+Ki!L#L#((dxpUW+2v^1mU%h1$W(~vp{L_jhS3?Ye!&{8koW+y_S3_=%xvOBs zaTuroJ5n*5Wg1!dlqnRJ$A<<#!#h+q$gu6hBp@nol3V#WWT3!tUTRCxb6qA}ERMcZo(5$I+{Y_-Oyq)r^&owUtZk${dubm>$&_J=>QWR?X(Ftk#p==SKajSR!!v{O_KH#0y?EN z!fZM)-{8^aq)pbKbgTTEZHlnUsfrT&RGGE2tRg$5AHU?W%k7njng4i>NwTV_@!^CT zdB!OYwmBGM#3ax79x}iK2!gSXmJL!;VfTqs_DfiLa&<$~x*gZ1p$FZvZS%6PqTcxp z0I={*xQ%d?e)U;4`#XTZ=FVm|(jOi;fXt^(0e#F1bPN3iV$)x5$mQ1mCV#}4Ws7x; z1y|`sY_c^jQpX6M*>3KYQ$M z;3;krnfXn#$D3LT>)YsoyIKKds3HQ)9#?(M=ETlj+hSZ13tY{nNGlB@2x)pp)}ab7 zfSkaNbAnp$*j5$g09NSP0b&{bM`Wh&12(OdX}G<3BIub)RDk>N8nD$k4=7gfgEKL; z3eNj691GkMlL=IPeKm=LQ&1)*gTEgpx?BNT1ELDInHi(Z82HN^7*MAZl)iYs9dhg9 zZ?O2}gcgyGm1Sv=xJ&MqL@A|=-a$0B(i3w}eDlp8JHQBwq(Xr~E{T{C#WVUT6^|zr zu>aCY&6)?@A>Pb!^vFvdCgQ{7?ORIM7+TOug{4!gGju0)j*&X0A{g9y>x`KXrPFF& z*Q~HmNP!V0#bC(+yaXi9ThP&$Q&<-<@F-e(+4F^EJRgBs%uYC6czJbj!s;Q#N>`lW zY8bZK3}ZNDM~G`#GMfy0^P!n2yy#fwd@$o=S1ay}5o{m;t~cZd8T0D!UhD@48!nf= zsl=8s61ylNP#*&RrdIR~jXnwLMx{6^ezaS-_l_I+0-LgZN`S58`Nrj?^q0=y(wQ*Q zHgk!%p<$}NNfv7Hw+dA(z1hGK0do^qrRB3^4l~CBt`7#nXC#DmuBZdlJmUIBCza+p zeWlJz?hDx|vSqXqeSRJN3@XIvF0_^#>aXKNF>*RtQ$vWe{aqTqj-$v;3Dw%P*@D3X z{doF!_3Dhl4_a^aKL+I}pN~!P$Y_g3TH|;~5nJPNIF~dUY`xtUlV#*6bo{dWCWeR& zD~4jbP==@AB&CsI=D_Lkm=UubG`Ay zCprQ75MH%nPNU0^Qn=;G((KPZyE2ox;^o{nX9hxJ70e#t$QZ>Y5OS`cN$Hy`BA3J| z^{l+eKtV9PYio=n1_K2a7cDnX1pR1q>#l84u0qOcz2i>YN5o`)uUE{_kQFXNnLDAo zI2IQp`Yy9p*cQWI|3B9$Fm`Ik_b&}mXlZe@xBrCTmcFusGcss7Dj2iS30Z5&o zg{FEOHwPhGyAGjM^z|lq|4afc&j=*AMj_znT|6%PTZa2v>%xUX#jQ-C;?>Bu-CHA2 zL?najH(%X+{(A})rx~&u5$pno3nNYVtiC*G#8rcpMqED)LokNNn&!dCAGA5JDaWT1 zn{%#4U75QqH(cFr#N-kfRC2L^a3$0p#u36;n9$&PCaN`_?+K~VYNA;BVIBICrrv97 zt7|~rSwg~zw5;)ZMz!l>jw|S&Kmu(ibfu5yVEKy5YdJ3cA(;Cj0fVT-mz}3mhy}#(o4U8<494U(f{TX;|X6@$OEVBD}C+}SuEljRTI&4#TE7E zAMp9cH#Nb3>*%)#P*3F$EEboLij+3mVOKgqsLRNw3>HFqnF9^=!#X&;XGjGTLg<-> zIMYqShM-#F^?>86h@B6%_n15zN}$gX|162xNOGWr-WaLUYR6^?zL4!7BN7WdIp5k{ z`&!{n@>}=rxRU;3rx1Sr4vEE#p6Nh$bkvuOE;k=YyeT6U3P7EF!^g%DC2Tn$1@0rnyibJm=TFQyl^*Os>-@fr2ak4wAYJFJH?AAkDbr}XqlAQK3VL_~KH(ZaKJYYp;Dr001q;45 z>5>|UHWSvH<0_pxQ@TI()5Hdq)7_S85P?P}<&I<@pdYt@+7BsqSAZu_a%zT7?33{H zLO}f}0dhK`uab$h5co!L;e~_SPex*Cah~2l)#M|HxTlog%ZMSK>g^?clFmI>HG;x1 zt8T@%i5;JH60w1W@U4IS&7;Ie@U8ik_Qi-k2zc;!$EJN4XaW8&K5aSm)MW1XhwsR} z-Q9h-NSRz3fFANRc0CuY_*CQ*n4R)Axyvpl7DAD2x*)e@MLkH<|K6X7V0WrL{6I1!P^&3YR3l|;{64Oy zIq2c~qiVDu7~FVGxW+SW`ow`>1$W)j%`4uxJ^EBf$M!r=XM+y9h7WXr5-7smNfrm_ zTCFx2q2#Pgk6n`p5s?=6=ng|f8BVp(uL`U#d8^zF#q-7RXfp-*ZL56nXk^`z^%F76 zpBZo^_c1=#4&^DVN?L}*!m>db03Z!wlBol@nE^g^5Z3|72;ke`eYjvPtSYnn@MVW; z3f|eL(erc$-PMUm5OouZZCZ7^8wsh}yi_RT@`V(K{H7Bgd{Pmb()?UsgMw9hKDgsx zCvU+|#++$yU!UXY>?#Z^w73N@TKOn3wzE?rXCM2;t}c+lAxT64JdFijkrK3R|H;jW zT>HB>9=!>MF(FF4_O55&rN;_P4q09wQW6W`;b#kTTUWxv3t8ziN&M_#u;Gu9-Ed1W z^Pw8Ta4ZxBXLPVY0#8vrqs);4)4>klN+gHH;Z{SuzjvF)H*$3b%0F64Y%I;(hatV_ z@W_!1$7-WdeOlMtM1Ng)@a1>#TQ-8xI{W3*&pr`BN?Qbn)O3rV?Oc zBLw9{*o*HXpekq65s7F3D~NM^_#d;Y0gP0HC&L#A-W|S^<$Fr(&*kVh35llk`Q(DY zYT^50iADjCZjcatu(i!i+{ScEBQKQHq1}9$C_oY{Hru37G%BDOspK3EKs0t7C6^D} zh;D!~{Wavco>FT!F~8JBoKeJ=&2(ZoY~Vn!c)XoBcw6jed-lM|F@19%`6w(0kHN;^ z%sT_)>yzQkUvlqpDHK}*C6_}~PEFMoFsDWyVc;1U_&rFd>}XnlU4feU{KyA7IyUFI zS~J)YHBVts2v9Rt?6&e|c zTOcqIB*7DiC!R)v=kMhw)-SC!Ip?qX#q4uWp4jOZTPWYgo9}xZRs=Ie{TP~)7&T-9 zLyyOx@ucifFPs4U1HsfzTL=#<3r-5byt~~nZF9->BRrkTSX(V_0M%rJNYiCmb9OHa zpmNtezO)3zg}leK=-#U^^VP-&mfGknEM1Bo^6-!|NOxQu3Aflo<`_)`X@q1ttxL$X^AcP98#^< zt#4$DM6CLi*Nn%0(*&mfEqLH^H`2fq$T7_;HYD(L*o5Q21n0W&l-Sr4!_l(eaDoM4!a!?m=KeN&`zSU^v+g{Et}odwWVF`Dul6cT0Wzs<4x<} z>8C$G@}9P~4e<0P=IIrBg%B74e@figMzVN9wt~wOkt`tLAdtW&CfEc|MHwZOlP|Rj z0QpKhR=lzm9enKA+YR&Q&v5fqDt5#2)nRt|+@#8;0?y4=@Pwj@Crr>bHbrs>k_27B zObs|wU8q)IlW;kp{VTKRndN$fe2R%>@bE|y?hR&_o(sHA!%ql6{*|DQ2v0mzJID8g zjNpqjSW+P2PZenMWsZ)zRS|6iIR!P}TL_|s?SM#;E3^`+MWagE2#Rlyis8lx)e0$( zz5{KdXYY)uy5_{-=dSO`1&*f_sWA&P0;e>)xGz}>Ty|~AcF~wyw*{C1n)UmpiWThp z|9Z<2S2(?*4AX4_|&n0K*w{;-?%eroOk|-gF#^VZoJ`#IfiLU$dvHRayi~$ycWkyRzUMi$BR`3 ze!=)nr2up3#X|cD1Hbg)u5P5QPZT{W6${Vd8GNo_Um;+ZBXOti+J_bc=88A}-c56& zSQaE9X-<@;2DaSP&Y%0^(f5C!ts+3RqZO^(Q~KGl@g0+dYWB!+j@AwLzxm;pn*J9~ z#Q~+l3mth99j(zs!fKy78mEmyhgX%ev}lPn_|{!)p5Pc^^!3w&%~3T#Z=7)FTH!b` z8O%_)0VfFV9B@X$(o{nY53~S>uMkni`eH;DREmF1tS;?&h}=7{5}oSl`F*=_Ts@wx zYV4gw%;T4ip@Peh49nfJaPlV|+}PMTO&U2%Xcu#IUVDDSyzGlb^SGG+gjVspwguWz z2a04CWYI`kfj*FDR@HDM5|(oj%7?z_j_1Sp#!a^_ju4tBk7-YA|>BsleX#t3Su*CM>mB71QsPA zy;p23v?Cx3K#6vm+lH3Wb6_s-1an3)d>5ZltoUmKPtd@eQ^qJ(lgsk>R~czB3_f&8 zFM#$CvC?^Ts#B@cjZ2XtKF&4y^!@++?^93NAh=p|S&s<_B2Ovha$y9KPlkuOgwPf` zoqIP+&p&oKcL?VV7ej}yeHr3~5vG@O`jt=wJN5ED;B$%h!q%{ESAjR&eP^)eFE|9B{8 zp1dfEb<;xg$E8MT$IOS}RXIDpXskhjJeLdIC$!S*TM@tnXg`_Cc{TY>{dNoqG)=p* zFTHv?o){H47H-TjM+1*Emctm`2oL0NJ!6KG#L z4MHE{(cO_mZRx#FJEa5fZ3HxA@}-L|Q?wn&8O(`wppcTzmItPY-@N1eBWCWywP zi6@p^_JIXVxc(yZzz*2(G$05kK*@E{h$~>iVpAo8y<~+3>K8bf!N&mat2!T3QoH7*(5rm~u=P1oHe?u?8v@ z6I14%akYHC2yo}2gk{VmFJCXLna~qyvCmu)=jnx!B~#xBSh6vBNE*$S)XnU3pO0=7xqRxJwM9qF z0;f5PpWV8$o+D?~FIhhYj}Du^IYT}_?5tTJ9!@h5Moj0$+&SzjE(&G9zCxmevqW5C zxWs3diSBk_+A|dzpji=OTIo(ib$0H`D*{?ojg87mQZ9wt`fNcJ(yHqmf{ZlpQP$X> zFQ~#gjn6Gi%ZpxBjdS3)-o@*Z!oJh_y@diyLIA!LX1=(1A%RQ(0;$T=h5Y$EP+RuwYeQmA1BdhYNvh65W?;2Iq)N6{P zkg0`Gr%JD9Kt*5_d1w`Vi#)!_#TJW6$IQ~HB}>eZmo*U_sLM?=n!_rCs)cWAoHN-D z*r<*Uy+`8p%0XPLZof-f2iSL2V?CTGE93>wf5(IQEA`0BcraWY$18?kW#l42SnxG= zw2=7xRXM!j+_`I)tV?qG?#u0OYr7)FhCB+O&s?cmDgz+n|Dg3~Grgsk(3d_^U~E7X z{k(&Iy12ia((8m>aFgT*5Kx_#vW;ALpI>wOLzS*cG?14`v|Fq20)o{ zqKbLOq6>LA_F$tc)dezytwsobV`LGQ*uxzz%#4GfN%$jvB5;(4tV`D{dRJfB--!5rA7NRII#5) zay`aOHVw^<+ri=D^7+K?US_;^IHTbX?HN2bQx^fFs8-{EWC#Pw9rQz$AurGS#HP~L zlc20*AjnMvThZa39;l(xr#d=}?Z)wy9FOQPN>!@X5Gm%mbCiHb?}~-@9chPNXzNYa z91LhX`)Wb0yQZ&wrm&&8p6?cU{XQ{j%AyC8bYl(`XbZWTeipgtwS*$I!p&rR^FSD4 zrxCYxBo3yn!{MV%KAA?yqAV0kto(thep07SXyz-kJ$$Ym7=6PcPrZwRri`0eqAJ+E zTY62UqgPReEf$Nb?{F^ zU#BrMBYvJRz6o~_TT7cx;3Xt@P>TF9{X|>a2i@IhUx6c(2?ctEBm|fiuCa-tM4%lj zVACCu=3V>qgpi%RZvDG$ph(TpXn6H``oRw4xH^398hg=SbB3ugT*{7(quYY&d^Zd^ z3*FtB=|X>`fpUrJn;XT%$t3++dQO(ODZ7N;#G##}Ps5wBIxS)_gCOn&Ko^q3k1m~b zWrI{B0kExrC05BKy*CE%Ml@`tH_6khnH1c$5M3>ven*4@yc+%kTBUDdr&eg@sWKzQ z9HZUH4GZipD+PxXcla??8Hp)4p?T#1qmp7&5;0*ZaN3^!5J~*@o2e$t*QBdTvOqsrAjDZt|L^%%guxw3U9;no2o8 z`ski}P-{V=Ru;oBPT+wMnp+wH_PK>K_H_Qn*47nCwp1;_l~1WkBn9vMDe6B6On@U7cdSk z^R%eaHW)|b+9ULc;EqGx#FBSMk?r(&RLoA#)AwYF_Z8`@y#PsNd6vUGo%p8%V z)_cJpvpq|CnKy2iw5)?S;7gYLhb@xvb0QrDPmgozZZ%N6p^%7GN%$}mUGwWMS6fxlipqqvZv<=MZd2>rHQ{r#bzKKO5w1;&HLV6*^7 z#--3wmc!Gg<*V2dPn{xiS)Wx#=v^!^qJinvAegSQyeQ5x275@@fMKVEb4Uyv!%G3S z3u3Yevnti8B`%cifRg~nCK%1{sfyB7N&5#^i!pEToovLpboxfN?* zr0#EM6#WQN(HBa;P24?B*n4~Wdy)yV115eu6ZD;_*Hh?&>>rb8220qyWk+0CHy31C z>5mA`FX?}`2`zljwa;(dws2d!fveZ?Eq#aALUred@ptJ}int|bifg_vaS(yH90qt* zT>`FsmIw42;M8Hr(U`JJxF~Tbn|N4XTtCNuC{@`2urqm*6j-WHTU%ig-qSK80}y9FI;Ti1D|^e?=y1!5=6jp(ZU#Q= zUW>)jcZ4O7aGQBjF&kiH{l-BeUP$xNt*^U&2-gr-Z-!?Es_)b=;4$z+W7?VOB76(! z#sm;JO2QZ;#%f>EMia|AI=&zxrPogW7g}+9=+#{WNf(OfH|;{DB2`a_dDbAs=g<$u z}&A_W?tn+7ruUE2-2^ixb!krktgE+O42u@M+*pc8c?wcNz_=TSAx+5 zfYGq%!v)=_7M?{E>q^AwBz-;lVF7W(aXI=>8gaJVNw@p%@)SgiV~8>$z2e6bKCmr#HF8uBWn?if3Wbq2`#a0_Uv0g zsExa1YhEl8f*~ZJ<_JwQl0&67^iLP0HiiW{u5U%@{E{ViB8Y3Qx~WSl#$SlUb`c9^ z7^vd)SK?eYMCmyVtI>`)eJFwU&9bJWjdFpBFLu{A>FCE-J6gg%DHkexB1c`5{vII+ z)8-9P)%T{tB8G$P!C_XQoCvot45||WbO^S!54PmHRsb$RxfPDRFl=%)WC11LN)S_> zLaBnMF8vk1Cl-`$If19Y(G6W)KP_syJY207`fLZtd{=2yI~tc#Hz|B_?*l$#Ca!E$ z#L~PxsS8bOXKAV2m}TW%j%ldjmoBH>Ro+3I-jQGx|MINlM2z?>T0&_4#b)GAZJicZPdR1!-DU|BOMz7T4mNZFfygx52 z?2ageHol}jGf^aW6x3#U+M+W?l`2ik<_39#Pth!I^1qku?~cfUVNzV*GLEmX=QI{Y z3Lwu|6c^6{VbaL5l^vQnz!U&e0GbFGbG*tP?8_@X?GUaHes|e%2!QPljtp^h&h(th zPO93K8%$Ue=To`FH{vGxyQsUx4OYP}@1KmZzs`#&H?$&V-v5+t8j=YG?EMtD0bVpH)A9LH++B?K;5QEU$IGUwiMp zEm`uEZP~IU%i7x`-j3}!Ua_v%E_k6!3+gX&D7(F&#&*Seu-x=?D&wIGOwg#BdUWKj`)sI;*56IMyV8OHB=>3B1 ze_vs54$Aokj@TWlaRA9hSRt?!p(<&`U?&Wzu?#I;t(-NtTX`0aac?>>92RpeLV3%| z6eQON?@+n3j~55fW+|PpKa6x)+8W}9S(Ntw0w_(B6H$ngm?#wd?=o| z-CnTcDbgp9J*OfaxP5owTcI^L#T8{if^j~ll_zG6V0jNNa77L!(EpJF1FnfZ;m3zj z|H(MgrBeTHw2ZE4po_&U-|_)+UqE7Eg;*w3nUIx8ykgt&GV9=I1?=i5o7*`U7s#Z( za>(M1E*317EGueOR46jrqBLjB!WYrG8XntjugJJ9*_EY>*8BOL$6_}E{1(74Ca#$@ zYB@&V(BFK=edtE-35ZM_jnFLwa^-bjlK&&EpVzF%yFAsAPU5gk;Z`W+UZ+A|CzC50 z$W@g*DU_l*4pSg5CwGJL3X3LyW##Zsfc9F&)iAZ=@?8DGxTA^;qL}f5{RY&Fl`nI^SgkCF=A)wOSZf9b-7WlxbCC~j|=!u6->>VcY?Q%+|E`63}L za)QXYoXNIXszHnng#8F1Pi`h{#WJe_$h{n{)`Vbs=xgv&P;LMhR@kRim3kd z%#^-je%uCJ8$3DYBsu{I4y60IJCA<{&=;IEM*eD_o7kg1VsZ8sCSI$hM;h{XRk-J9 zAspEc7W#a&-Wvld(s%Ez}yXwM40->zC#I>yweOYs`hWyjVgy6m3h?k!9 zLzjp9Ogej1}Pb zIAr4AMX?$3;Sea@hEQlL-ry^G9S!_$bvscJ4sS<(^2hjv zH?wScB_y$ltA*yPg2uVEbg_h0-9auvPVy)dCi;E_D}1h}MW?h2A8{+a)x$P}c$DCs!l zWlsDEz{f5HEafGD@G;dJFPoSZ zfdn8I&v5d9fH6$RnL&_I7!4*&=GDhmW9{kn53DODhbh|Z%^fUt{m3mVI2Q5J>jqs4 z`hB&w*0{nekF*fd?eE@E##ZZit_Oa1z|w+NH{XBa{@Zp}iHrH=o36X#=plHT>!m!M zieDr*CG1GZuSiIB0);|aH*!2+U%M;FH3|c}RxL=>?Z2}N7;Nm$+b^TBt9{!qKagtL zHf$2h=}d&=6%sn4(Itlc3*tLBuKH@0qhaF&sLl!W^H!ikWsxn*DmZcl6R74e)?fp9 z=GTCcj1N%{=IT597z>Q3dTF6C302=D7u${YlpXx-VGgL39sT@pHTe~7&FQO&U0v2q zC)Q)N?vp>QuPSPeDqQkN6Zu9P+Z0_jhpo}^dRBytY=VB(J6D5ZnU3eU?X!aqH}wgx z{pFqYY_$s5F%0ynO9b*oK9Da8mc;J+{&U~fxXi6>6p5e9}l#*$v9#i>Z?fl1_C zetF&_FPu5HiUPQpqtoOD86d$qN4+t}U7pH<)pct#_;tiHa2r#JAijw4g!bF(Y_{t8xo zQ2U(*ea~1G5Kf&V-F<=L1?wB(7eOwiv^T^Xuz4nbrhS27G^U#5L?Z}fmGN!uS6a2qC-XQ<--cuu-~Z_yW-Zo;{mtiGvO{Y#fxPn3m_B zKVTzJD7)+I_Nf;4l*yxc=zg;A!4||&y87af-$ptsW%T!(Xmln>uCrj`mCm48mqjAP zptF@AILj;I3X6DbE*iJWVH`Rb{gJVF!4wGW!rTe81UsOStDjV2O^!ev|uv$#!a5i*$^ z5YjI#CSED?Z`pNuGP!$PC%_C}Lh6tJb}kfmuL<=Zz2z5Xe6~V6U)wz&?XcCaSzyDH zImWq*0bMY_{dymq6!r-oN)N3UFotQq0nX1+2S7J=4fveSbPc(BCYYOD$=5!zsZj{( zxzsk`G`t=^5Ue{2${nCPT36T9S0Uo46bgqfRK(*s8l_4;SgEkA?Q*ZCr5Dx{2+Mk# z5>eMpouGcesh{ZX#lRn&U3E<4)%eV?(l-4?NRcc9ak{Q4&+uW@rB0#xt0=ehSLvX7|*npBJ< zrML7I%PLFrgE8NM^E89Q$2-(#jM<2)0=!xK$#+w-D~b?)Z5m13@1 z!8OYDks`$Bm4u`!o)FHjyz@#pzd7X`IKMefP0`vz-B{BP#0KVKkQps*m8n(j4TP9o z-oh7fI5A7#!c|_(aP%&p=%uO38h2j4pE@d$7%nuDmVmcLG>N2pLo~7bl69oHZrO+h zdJg*D33Q#c=V$<64mhf%w>Klx>DP+wTnU)jI#G-lCzyxUZG+=6K}`Gs ztu9{|R)RZE=I$~ssi~gexi=KM$GquHKdZ^g@CZT6f+k}y`@_Gsw`bq+CVF5`iAupW z$h5&CxOBx0Ql6M85V8c0=1YCL&fzLpd+VIr*5o%0E_Px5Yt2L-P2NoYxfxx1`V_6V ztYPc!y~*UR`Ff#*22E{QDVPg^*eq%L>Tqn!`c;3(c`JOQ#?eljck?m_zEPIZm2jiX zz-xG&O0&cO=VDTx7n-0{X*5ktIDc0#*Z_YBc4AoC2l^%XFHBa!<3v~XVN|c|*xbcY z$e2A_IyG1Ml+~sD0N>#}(IoY*mwfU#-AHEEh8k6NRWLgDvyMj|d$5J4<7STDcQo|{2+94)s*i*;pr;ro z14YXk0(DC(;7`JX09duBVAL&8?|~1Vky+=w1Ld{hc^B%w0^Kk_GoG96cM>zQ^H!{< z|N9n}F}7ilYZeWx3Thd)v{=W&Tf$+n6{Ox84ozO}U=>%|S!GV?A`dLLX%JS`e+%n> zDuw(LZ@vEXoed%*xBkXQfA|vl2|1(_sgux1~k~mE`+%WRTo2|sVUb4!UN=2jeGX*yR3l? zN?7jAJ9l1E-?sU+Tgw1Z@svuScH#ljX~)OF zC`8_`;O-=JkO~Mk3|)ZnOcq0XTm@og4 zO#VEPuqRlGVk4FaEQTF*Ab;&yImD1C*nJCJqB#(Ad~>5>BR4Ux5d`@Nb2F+p=t4nF zktQ5{HGXvhPioSZkuTogWNPVbwSY`Am%WGu#J?xkUXd(YFFh;(Gx$OkA|OnD2~>IZ7IJvA@U{3f3y%9#Gg8%?ljfLo@e+#X1V&Q0qBA%swAn5!4$V(cyHm%)78b)A zh1D1mDLb<;Y8RbM&}BvXu*NJyPqs@+OJ#sy+rGt#xykMNIg6H!6>~INUh%?}V`j_f ziUkgiM#Cpd#>1x4!NSlI?sF7k`!{pu#Jr{^^4~;n_5rk5+cECp0HWg?Z`TC_hW=#%;K^|O z%X&%X#aCOjbG{b(T z3G`LqaHf*VZ*~9}*~UJG(kX@L1r41-_JrrZW?&FYFqz*>Ok{6E@utS7mg8CcrKeim z_O2$CSDEhG5#naPg^`HU*+nVhZ;DIbO0v`{X5fbl%Z!4$@H4abF}O`(va?#Cp|IvIE1yk?YIqxnrucef}rF3j_D#m9(|>|Jpz zjavshUEt=-IH{{YeT?Q5EPXbL*T?!#WrtGe`V^XnFA?VK9f6Y32(^?4>?E&Nd8VD< zllXch$CLLGxC?^caIx9yP5^^|t&+S?Lr&u&}JJ37mKp@63XnSXjS}Fl2D(13{qP?)#Zr-R}oLz;k_miO2iPjp%Dxo zQ#k}R%vH!<32I>y*gZwOD@K62k#*F?J4%Fr zd&!D5J|p6Ai|PRO5(=3DdwQ!E2=fk(Uf^hpry|a)XR}TG+TnIuqgP^3vS8^vTdA|_ zxHR%Z@811;8(`BZJ$3K>>3?L`=vfM0P@v-eMp!XE;t)GVCx|)Q{`c(%eH^ne^5jRS z_lipbJNN8MWv*Cg&@!QHmpVkC79o_(*#scZ=Jn)1E!7hPW+6xvwhg0O%w2ai^7I_o z(nE~|K1_QekAl@h9BPKPCe|y0mgafw?0k?RTsi9eaA=<_EGS5WVsJ};JLSk{wbNEPfT0FL*;^yIJ5Gb9^^48PKb7?4W_*+PMckbtR?aYO?W4p%7_ zK+lWAQ~*7cOJ{l$SzWVCAn06@uY8OewnLKzHgv&^(SQ7_+9fy+zH2jg&fx!li*{ zqN@~2xg0)=rbzVF%Y!K^N5?Np`s3lUT}>PVuX;}Uzv8fqN?EUPmJNkf4Z)zHR^Qm@ z{*42cG>A*Z^`WQTQj3=9V`@xa`tF{?Xgd@_M$|~YfUF5b=kP^*zFsD&(E;^ZQ_kZG zV7?!iQ;$XI@~UpAl%(uXTbTqNS#kSAPmZRqTB;QY=>XG7>>?mD@%as%!!>h{AO44_ zYJ9*Xw1CCWL${c^4};h!2gWUI+PXDMN;Rb`);_QEZQZ)MQd7Bh`!-gcAs*EPVKwxt zT2m&jHEUDNSMaQ|MmhY}P&_V@Fz)^2>Q=E#2tqTUCkh($%pr!ObhSWY4^f~I_o<9=Q08}s-Xv&V>#ib^)&6)so8-UMEO6TK7BjU zmL`J#d8b7^+QL+6InDjwBGQw;j(_#^#*HZT-K$r=cC;3+ zl=dBaZFMv6n$KIA*s*;GCxv$-9Rb&aTl!cktpT`53o!&wx%*r~1L2Ai964KhC?})9 zfJjDBXMvkOl|E7l!kOngy&Nqh2aX+ZBWB0XG$5$QP-=vr&{-2pZQ-Y*5m zj)m8M45y2e2dv}~fIfFS%%iM2pCuOJ;+d_Wf?L6frUO>uO}dZCrJe;DMF%xIJ=yC3 z`Aa83xawkU&;(LIFjRYuT#mU;q~wB2R?nXBD3fgtwq9VL9g9Y*_P0P!t#)YkBe3E1 z_eH5xQ{cn^ul-0A{W0Nw=|t)V8DE8# zrg8+f?}1Lo<%{%FF^~|6`!+=f??3!k905&mQrh+*bhEkpt^iNRv5zb{0NcxjYC_&< zYP5v3=mp^mO{#Hk22&hsC6AL@VnD8b6@A%4-j)6q8F|*1 zLOYX$fM2_`SOjbPc4mdd@$8(uZ~sBww-@$uCGjJlI)uXGojQZ5{xtO$Q<+ksbi)fu z3aqei=*gqenj1UdzSPg}UQd)|-?b8>**kB;OD5s97rj6>UcBGFJIK{@9AnElscc^o z?Y{ELm#?@YOgh1f;3nzI@E7M~Sk*B3;GBf(!6W467Vy)AQWR1+TyG%?HpOr%BfYL;Mb?_~RnBr_ zI(GW)8I<{|)1ND86=XPpJeyr4<9c=nwq7gxB8QyQ1VS&RNS z^P(T0BbK?&OhP``7h_sGaE&g)cBs?A)c!(3M{z=_NJ*VF^$||)raC6y(5j|)n^AXb z>m`0us9qEl)dk6ar_F;-7?9*tbt83??~~&oSjD>MJ@Q^+cJ|bhMH}y5%8^Q#D<9h8 zxOl^x>^A!z9xXB?6Z#T;Djkr8FDZp;m|B-qeIZTJv9oA_YSL)&0cw2EuL z;^}piaXv!(AYZ%W>f?4mQYL1tx%fi`L#7tQVC;5^1A(vUw5=mF4`b4{XK=0$qX*LD zCy6rDPu|zks>zH5v9PGWKSDz`5Lzx13#)66zPuE=0qoYBE}bxv|5JA5!=r4Om^t>y z{;F?rxTK7{7Pw(QUmK;33w)c_)W8LzS1wvs8;#O*8=tmnt|%3W(UX6(Ix~!VW2H%(`nkukbqa+Dgi))C*iZ{`^O7tw~ zw_^}=@BUQg@`ZXG9_-FjCPb26TulQF;IyS?;asYk?i@ikS-S6T#C!VeV@rL~^c5Q_ z0e)r%o^V5g_t@X>=#hf*9LQ!-;*?CTpzF53JWM{>_$j$Mh-5*sj@XWsknq^g_o>D? zUW2TGY7i?}%*S{s4F2aqJ%F&NS^)R;aHWmIEmgMV1~I=m)*#gIzq?D|9oJ@LKu>l+eJXMbd~ayWEx8P@mU(^w@q zzfCpmnK0^eumxy~QQ2(_AM{tV%(a-CQpD8(edk6?@7)2+O|g$HgCi>fuE7iW9&&D( zLVnyDQ#UEPJET$&c&Pmrh$3Xej+V(on#@%SY1lc4Q0|mQo14i$#h-X>0UCMXu@t%| zp#uIvGtXW{K8co-8N3XbeAJ!nDuZ$Wgy&>hzZnh)z%(VKWh^1kE`aUSRZ=j~n(GQC z3Lx`KA{KmGny-?9xU!;h@u*E#Jbx)V_=i74$*YN3CH@_kU6so0S)d1M(=<@0cSAI` zbMspAZ`cf}l(u6O%n;}(02zT9F3I0pJoHiMFoa;7ZUh!>&XC`f>tvm$BTvI?Qzaozmzghv`+1L+mk=wT>W?;vp$+g`qU@(S8lU2f>2Eg0so0@Lp~ zWF{KG}R1|-}zy3cjC4Psl4LwA5;}_U) z4rIA_hGf;&t>J&SL`V%$LYBa)SeSHm6m&5H!9jdpI74(pN z@&J=Y`win00AOIJl3Mg8B~rJ6OcF$v6cW1ZZ@k3j?B(PiXA+yxV1n7sAS63?KC^v$ zlngD6UzMbVXB>~@(JuyZY?@U{*ycZxDU_M*51_1nR}a?0rC#j`%w9evs7|l zjV7%2Y2wBzmDjDP2cgpZqj~O(o1N=6p3!>!W@n9SC~VF64JYta_5gR>4X+uLO%I^Q z$re8P8Ci{AdUTW=T8g``8T3(xJeB$u82~5vey}A-ei9;1hRDO9nDNytN($p7?Wd58 zbAWVjm{kHaT`YjH5UQT*VfOriJUk6B1q%QV+{r4~)D$Q`ZLE(97=^h$yPKl9P*u=m zZJ8fe_JFi+zRh{D#!a|pD{88hK6z#7&ts3gFh&eN|8N3b>M=#U62G`U{8dV{q=zPw zu$l+I7w5?tDg%uD@nCC(4d!*q7)GmsX)6(~kLz0ds~E7nHMJR*P=fkTl}J!+T6D#o zJxm3!{iYqmunf2U)4SMG5%bt*L2~%wZvic1uy-`;wZ^v2W3a!59;9$(k!W-&wL$sSpoiTT167Rwf?_!@4#%&7fTqyUf z!4M`fvSXP{33{09LgVD^4A5`hO^#kXriJFf!jCU1*X)Wg`k`F$T5j0D0sNqIOScB; zYaENp%7Eldyq~QS6Tc!yBS^nAf+}Z>Yk6+_L_zvC^8N zn5s%#UPU<;yyy5#T3rf&<1>Z>zL{geXek3;h)NwKp!|_5@1};(XW(8wLq77Q{A)XU zgLEO4w>T44CguLbI~iT3-Oh7}O4<|O!q1RjZQuUf_U&lfwr%n3miiKnzd=)?@iivw zAnPcHR=m7E2-c^Aj1~*u8G!tN718hl4m@ML5GIUqKAZ0azL2R(4c5!U85^|X zt?57{Tz+XY$H1@YZ%QCJ`2}i)(Ze6ymPkC-2jfm`Riy*wQaF`m0z?bghsKUKQ%pfMmqC>q$3@4`<&7aq`n z_F;6ZsrOhAbjKa@SKOGcOPI3n(wcM(CP9AS*}ZqS7n3LAcOC&M4an>2czg?wuQ!om zah)!rt5*;mr(ZI`U=~9NE7;lGuZezm5&2|J_6>~`4jo57NM@|GX*u2uOmimzn$#7< z-0Z!G)6#M&tO0!hUh~m!NoaS?_|}pmp^5M-tH^it z7A~7EqSSYp?6>6&YbhYwwt!eS^SFXVQn93EI=}d+pdnBVJ%B;D-8izG#hZapLBag+ z9%~(9Sah=adWJpb9l_VJatL}tP}Y&a+jB!LcK+j_6?ofEeuA!g=N{p_xLW8`NS&%pr&vVrFPJ61Z`G6>J(YqrJFF<^s&Fj8WF{AdD|$A2QK(g0|n zAdbw8XG0}rct6E-Kr04)C|v9B0#Tp`FaDb1<1Hkr1z}KN$1p%(|Lp7ykM8BleHf)E zJSf7g%Bwg)7MN3UIAhi?_X9J)W>8-;X+f3bTOZ?lj^5?*YhY}@k)vRdLufHb2(61s zj7*2K1a=*>@y-jnq}al$a97}Yo)_aRWl0f~DXfxW-n~(pJ|1Rjc%Y(uJjRhQ^hQYg z7&z^tiOmLvMz5h4*#wj;nHk{i`SSjTrp87ZzkIGqWazRVwA27p}9CdnW=8sa2xZcAN(!+6`*j_Z5f)%DRqm+_x zI|RWUvo4>(L&gnA3f_U-97N#ZLFM&Bg=fxt;6(~&4Pqf&vB2us8Tf6~7OvXj1Mxa* zGWg^GO`0$~_83A>KmA}cL*t&CqKl-QNJpjOWSS>sD79)>iUAutLH>^>v6%t$(KBog zF|3Jw^4>p^=vz2?Pqo1%<-%@WlcmGj9Jj7!3jyBbqT6mg}Vgvf7CbH?YWF)+85^2N>0CzRy4Cr-gyTm=t|!3 zrQI&gQ0Wh^hcbk*;P7&DR=#wcuVtsl8pW9kN57_0T<0TSt5wzT+`K9{#XHFP$7_n3 z6RJ8zyxEu(Rbb652|M2I;1lXvO`X6kaFHLPACRHDQ^Kmj+4zg8F8Jch;pY^mr-#s&h^iEoLbHk7saJXwW~Hw!oT$)6 zg6di|beA2As+TTXSP8pln56^r=9Z+5z>X_YdfUSiNzJ3ZsVdPJJvVhHlFN9-?mG7!c zLidfMP*Tke3*t^|ZnW(3sZ-G00J2kOA{ME>wjJck>P9;{DQpF#EDuGcaoAZaXIBN# zs+cejpt#A~ij5JeLmEO24z0Hu^x>-O_o|Z}eV~3IWj3rIw=q5Dk+q=8EoTST3^8o$GsK2b#duG(V9;-@;|964Sur|5em{klB?U5>zXG;u;3F`SPLGufy61r-378#X25vfhOGvimy<;`7EtujtQ%5LGs|1PM+&zCIT7kRO1nwoob`nEsSo=%|Of zr3NayAy{>K*3j?tM3~|P;Ugm8xN_*_`BIwcbI-Z&rhq|;AF`0>%$`7V4Rhu@*XaF z>Fr*1rnelc5R`T%+Z&97i)tAnpuA7?p>WLVn%|>?t??Z5=xPsgEn0NDB7A3Oi!=;v$<|5%-Vsv zp0;xoU3$j&bPg=Oo#un{WC0@*D}U=K1OgzqiM)vv=w#D*L+57N7wmLU=ZH>Hs~BM& zqlFN*kbBdMu=+8)F2$?Z$SdnobMRE2Tw&J+EPQTp18%oNvloW)F3`(-DZC_tt|eR0 zTJlQb(D3lBLqmm0_}z&h0p(yq3a_X=7EG??;@{CQeHVR z*XT6#kCQ*eel8LY+y3&GQ>V~SN~BU`Jc!ROjbROAlZ&E1DrIt;y1|6GdSV`!8<6!{ z#@xz8dkIU!ceF;s^@hIrRSc1sRWaI~Q#KxoC7=s6nFi#(PU29c>7^; zlhFd#QiO$#p+QC?s2PkzYS)BLm!H7^(<9g{n8FD6-F@@>7Wc|g7=Ywq-Gc2l&-z6+ zu13u<4lc{bo7>@_3pCMYkOUlo_>N_5u`2f&ume6aC04_@AOjs55_q5X^s*4Z1nBOZ z@mUvanWWqvl*ss5;#WRZ109ySOiIC$%A^))wVK0LmkOjDHYS{hy4_N5)B?OlbI213 zmTro2jJ)!WIQpWo@rH<4CJnp5{n;A191giE7`(;L5sFGoh|83lm|XG~Ah-B=g9L2! zfE$ecd2xfN+RQfdEafzft>eMR$5Q*3K`sU-C#DXT5b*q+BbZD6cVqR!L9F|r>jdto zvE$AFR|DM9MXu~S#HFWy1`mTn7vRnhn@5YCUW{HPf1}WHSagAz&qLY}`AhV#@TbAY zxJ_47!{Q9*b~trR2RjoK!+o@IAm?s6Gs=H+%)vn&BxW(;8RjW42OKdHGj-D* z@|Lu?)TzcryDe~kM51HF>6&N!>Izs#&nc?-7F9_0snBnupF%rtnU0j0%pm$L!VwFe zMzCJ2lF<1UK2xkTNh?9T5xOUgip^$mQKv~}>h^04iKxz?izo9K(DNW$lVE5Ou-+YAF0FCGq)AEJ^2^94ILsEG+|BB zGU8x%A@bw>LZKSEjH7iHv3RWSOGT9>YZ_Q8wk6_~W)*dj))E0kB930F^y;}>lS?e) zVW_To+@p-P!qkkQxH*!HIIn63-l%JE_9X-(Hs~Ah0rSinIS|SIJwm)ko(5%qpym{V zU?S)d@1dD0JG3BmDJrj0&>f9C_U=n#Tuvaydo+O(1;Z8sYCPsR=2pXaj4(GIbBm?> zo*-Yxc8o0}wd5OLQvWE6pOSkPKs}LL(vws6r67>}@_0Dmb5bPiK_*Z2o81TseS_bH zfqMMph}DtE?J%9X-3GhP?@6KEX`x&mtp&%29i6S*}98IYpXXSU^@P3q)y|>&a`$#WY8fT$VyF2uAMqKwx0j zT-zb)Jy;8QF~hm%ix~rR_2x_7i-v+3 zkVjBO*fc^9JQfVeV{cv9QG>(Z44g08XzX9+1L{u0in;o@ePRWs?zmSBzkx=`yY^)= zf5!5lwdlhPO!b$7c=X0^;bO(k(Y_*J>X-)>R=XE;!x)~()H}8{Vk2+;MSLmwT~KZP z>*5H7(;cI|2^N~0XlsChi0I@<;p$meom0U6XZMJ2Fn*)_FBP(!gr`ur;;@E0vDoOR zYA-Bt!el~kNLc`N98P-8MZ3w9=yoV44wGYS%ta6TO!eF#LvOo3pebdBnGPgxR#a9g zf^uis|HfjkB{`a!66oQwT~z{fTMA?ucybBe48#&;307PR2ee6~t zy`yC1aUd)t$`Ar`IfsJ+q;bkI<*_NGV)8*xrH*G;b>E4_wxI^{MYQYHSBW3PKk^{t z*1!Gjv17;@X2~69xbW;!8}~;Mp;XpTjrc6+8nM}@|EtEIw!++~6owS#wK^WGm=fh? z6qSkIT6rjKqXQSSDDF?zVF@f6j38AE%%-JCDY7U35PCHHWM~gL3QLmj55I?gMW*UE zU9zeYB)Mq~2X2g^@16d{Py|cqkf0Qj3P`u<#r{h`b1t=Kp_VTKZZDGHY=hwQy={Y4 z1NYqe4`bE*J~Kz9WUE^T(6wgo+6hW^&d|RY^p5l}Q1KSf)^f+Lq9&d3?psWSSp&J> zwK+GAc@x;;@i0XWOUt8baJ~gJjRJDO`YAPAcz>pAryj(GlzF#cw`=74iY8M z#^;}}KqtwL7~##nj25a|7l%OKJ+{0^D(+^xc7Y-RgQd85rtPv}=H7shASI(wcQ)@cuQaNYIrdpaTO#UOjDnSg* zKCr^fwF-+bxuY-p?#PvTezBk6+ zO*Z%Xl~ybmZW-Iv3OkjT-LtXB$X3A)k`*T@SBLdE&u(nv`Uz+9Sh)Toa~6sbmv6P< zOO|inVh5KSteHeusU#jgJ%gz6W`3k>9!^?bhk5D06T{gfLz&Ei$_;yB^uh0?k;iiD zdYC$3bZ+a_B1^SC8r3^=(eSqjA1{xOADTbEfjj`C4=(}Fiu^8D#*`?zL5Ycvc5nSo z3C7$kt8W{saw#k9VyCzq&mLih=RMOHo_I8UE=X%3NY%FUbr{G{M!@Z44% zq}-TyF+{1)-#As&-~c>2|!0JKHgNR({$ zF6+gGFIPXZDL^zh0L_MK>dM7B9izbOCxrQ8>Tgg?4OsHU6bz~!4PqpFbZI{Oe-<20 zAz~Lc=HRi@A$Xop`=bKk0J2O^E^a^y{q6crlS%Q!K*R~9a;=q0P*Wll2b7?eWPQ;R8FodkW?PH;P6fe z#x~=?(VZI#od^W(3WeGeJ1QVqqB~ZHQvD5c0#NzPpBk=lk(=0x3#d;5Q7GQH@I4EcX4v_BSq;_Y=XrNmzM=EGUJ8;e%JG_TyI@ta_7qzE8FF#|wp zb<2FOs;RdOu&&b1RM=~ryRaI>(5mLoA>NCUuE5$55sRT!3@P&^1TErP3{G8ZM=F3JxMlwCy~g0pD2=z$pY_qu69K<9DhwtHL;I0gf&1&i@Ky-?h> zF5G|jEgxeoTs z1XQksF%S6BbC1+b7=Tp05R|}S>W@GS^4}|P$B5XR5tMdi7;+^yHM^KSAaJ&NISMJ$ z-&QT^^c#JGARm^Iq*6@3AHABV~4|`^=}??L&C!iJn_jc#L*P>SoG#OL*$zuLkK+0 zH>5QpUCJdYN@<0i$crt7aOu77{APO*l_IudFFYn6NV1mGf9%>rc$xS#yc7t$=4ESdn)_4N~&2* z>k^qn0hUPk5o{m}$IySrxe`fjG2{YT2a7-Bgvm>i(paZT#`azwC@w%PNK} zGIb!hH3&1eyUCX|2Cz~AK3M@QA2U&;hk~SoW|kG^-NT?=hcULru(jtVYWWyg76nJZ zdjwe$91?Ym9!4HY$Eg!OIf%VL-;SRE{8I9@(&DZrO*w>R)XV3)G(Npw?UsHT7s#Py zjCm?<&;@k|4L$Qg6k5u1&11LU_M3Ff_|E=;Xot#yAUy#X07PbbG0l< zd5vOqv9P2}UM8z3gL$T^QM1h0S0cPyqX#id5nkQHU_BtIo|Du9>c>+0o8AOz6qmAg zv`r&4^W^a!M_GGR#w`-6TZgNOSc!l8?kkh&%NFFc;E@c(dvNo$XMJSg-b24QzZMw| zd$=lpg!aI+QUmWq#XIM6v(CFfj%k{U$63sL5v1Y0k;JOrx{$e_t1S1{2oitIXoeUr;&=BYFI|6vU8+dkW^xjJ5Urj z{!wxh9;@h%+17i`1uRWy+cgLAjv3dd4@A91jHeBF6Z> z0T*A07taZc1q5imHXq#nmw|!n`uqLlVYRG%e-#T*-O?@l$zQDWqas%GDjTGP4AW4F zMN(cOE|!$x72%jq`TDfSg;7SlkF)peT@%wD)%miv!o|f>OBmk5&kV~Yc&?_uPra4LA=DRzlC z6~yn0p-9Y~ZoWB&L5w`*3;RkM;Dex1d6uX91|Z>wO{z!-mab=2GHt3IgODW z=W}2A8t=@AQn(TLIlAEuzdtjHqI&l@w<=Tulf7jc%(AeirD`>`p(d>7Cj&h{YK91m{~o(5A&>1iw@Dw5=2)PX)Ci&Dh=>>Y8)@6AM`&dm+- zYS4-%m0J}MnT=#N6uLPWyul}{DuXM^bd-p%^RXqMY0l!Y5$Ijg4Fk9Ow!fd2 zG*~*#W>Zf>SK4hrax*I&OYBPes>5g=AcLMeIP-xDNY z4N602_HEjJs-$TKY&=)egsGB7PL(t}5l;;zjn3S6^9_-;Wo#wOHd22>RzZUuvV10w z1v2G`$ztg&mu0^|@1vxoY;L;=*1zeS+UJEr)uWvTx)k=3T#NNFEl_n&S53k<3IptT zD(W2Nq_0iM@^=Zm7CcD&%AI_!!-YNB)C?KU!*gYNy*u7jiiJI7b`5Oj|Z8ThUIMCB6@@EM@5z9XF*Gxw3*Y_-}2gm20 z-*vOTcN~;>q|E9CeMXwNq;WeX_pxxAd>u%*QfeQY)?u{|tU)^MI^@+pvi#7qo~Jy| zLp8%D|3R#eJVUPfO5vI4(1I$hGTC2M(VJ4@sZMRjmqH3tcO{%OR@2v>8B(yQaVv9CsyeGE6ak19jjbMrV_fZ}6lN{R*9q*z6(%XLY`gIoaRNT;20uULy zyj1~o#rB(tb=mz$lgWG#kE7?}aVRdHA`@+;rg#8KlE(M}ry=B(I;EZv?%K`(vvrG7 zJ8C%agv(ZmVGXq=y|zCn;{bXt^0baOlE0OCm%+|F0o^t#4=o5kPhNNZM<0K*I7GZu zBq}MDIHYA|WhQY&xvWT9S%H_pfz$d4Eu4RH0qE3rQcrGq{+Zn}>j+H3JV`yfX|sa( z*(q_bpX$8g3=H<%6`q|8>Qwwc)N0H#$YUNCMQ$o&d9c+IZVY_40=|2)XF#y$1Qk-JOU>4B6eTv^k5Z|pTi;!|| zDl26*(sIWZpTc2e2AGCom0MY6W_#JD67pTU5p>TSlDeQWDycI=M!_~YFODE+0)ik< zgXNXUVZK8VRKWJPFJsqcpVXNPL_rbFKsS^PcEJz~(=fZ;Le|6b#-lVY)6W($i7K~P zBW3W-ux3qtz1h2ceWkH-j0rc!j$Qs)%K+EqV@?}roVrXx@ zdJ;~x5yEMg&L#+ovi4VxQ$ zo+jdso!QshCly=ZWO1A+Xv|R6J7v8r4?Lf|yE}IXe+JfydYhZyz>Bkem;iVM>LwRp zJo)8_b>Vs+9a!DlQBbysKB2r~L}HO3jp1HLfcE1&?hKM}%fRTCwVW8)n`b7hl^WuQ7)dWg=*? z^JkR4?L=IdR=Jv7V-JWlv@lKiX;N$!`an~Xe5&z|NBdCs zgSUmy?=UC!j*OsUpp^*|<;~r8&TPJOwjVZkv4R~{!k$K%!@>@6jKzd0fF|C3wjhunVaKz?A7q3#>Pmv7nK2(P0$r#OuJxKOsbZWkqrFX*`~p#VjDkiL~tGo8-(Nw-3 zcxIZWb z@O!VTC9Q<5w=#>Y3Sd=^7EdW~cr2Pc(&?5p#EM|J!xHwS8%npPIC_3nPpTsr1fBc( ztZ#29bPJwBK*fz5p}?UBctdW00fmy3*dp?AWD@`DuU~Tw97m6ZtavO5};WFMj1LUyLa?IS^_4xfu9=_Qe=I z!lsRxHY&v4T$5 zw^6y(1Qv&pcfCwvXi$hWL6%4zR7zDr@|H|yb2?o|zQ=h`%n?>PnLIYl7gUQ&iXMtB zYSI9gkR@wqhY|qia=0Kaj78z>!$%Q&+F*mw5Jg34?=wv&!ki_RoI$S!yhKPLa02wC)1`72k;7<5|ggH$ky4y|L zb$SQ-i*D8NRTw9md)6La6b zn5p89-9Y@Ee1lBI1U4&6soDYC24SD{2z_s=v6j>9n577tk~Tzv8xxC6x@rSh0;S zan^Y}>O7Ya%WvdJ=XmNjm!o5-V-$~5o?DK8eHN4hlAywd+eg8M)3Wuc(K*#5NFvS2ty&uuPyo( znU3e3ci!0_GjB~MK%EQgTWBnBJ$A{px2z^XiUe3V3PYFl%13NL6JxmY_ zvj@?Uv`8<2~ zg-{h>2{nF&SlI}!rvy^P-0VqC4gfnI%z?>`KjVab1GI;rQHo*H;@U}B07&|B8O#(6 zG=&v`v#?Hm9)}AE1yn1}0UzUo#qSxl)c~C4{wt!y{s2}5`v+!Q?ze+eDqs#C+9jv= zqFb9e*3g2Rm(b;$`TGXFh9UjRV=DwI*1Ct*7m>e<^5?d}3T#%ojaVJEKfV_xnV8$} z%f9gPuh3Ib-JCk$x3S$FT+~Y5M4pJlzZ=kM@)|4jQ~TxUHL?y3MS)Hw7jji%Ub&jh zQd!xsfSW5~eWDw_tdplur4 z0{_wuG(n%(U4r*Wn^*jad);F$@K>zTJI89#eWE#s>M@bO`apT$d(TUHe_MA~?Gg7O z89Nvja9O}O=b3mw>!P#keLrp5I!6goAZ3s5BCjatYITAtfk6*Aw*ej+UKcxk90M;b zD2%n>8tY>20R!56g1lR{;?yFd--;0OB_mNWCBvaJr0lG*WfVY`}bKN80xg zjO@QX#DeT0q=?1#N2ACX4wJvh%OGJXqzSyW5ZS989cgV?6>a%h%+TKLfC7Qtu=!#g z4NxruT-XURwp8IA_96YxDjt9Q@h5}9)uGU@0)cvReThw4Q7$c(mRGp6n(A^9px;cH zm%`;9fo^p8j6?3EW`*~H&P>1^U3gIHbRO2V!xsg$FVNXwKQ zwz8Nn=CXNAx;)TP2Z)#%a$2L`6$&`khC%bIe0F3n(U-ly9%;$nTHbnVbATl-(m~z8 zDl)N`S4&j1IzstygFq*6^3(%$QePuO#jURuf8ygi9iT?YEV4@;`Qb?p*Tz;0D)}-x zDXXY>yRz~TBVA;wbFkD*Ta8gd5E64;F;m7Vb(=(Vnx?4zfhR^&2Uci!0z7*mw&EdZ zKCiKRv}zuV>Kdvh1}p%4>)Pj`8x5Uz1vqLLMO@4XKji(Zm*^mOxwmZJSi_WvXn~s! zMv*~io~;+@+gzgJcAdc3eI1#NZCO^qQL`K)D;m(_?4>`BgIWY5^q9-+^M6d{j(9I@WF9Z%b=KX^;YvGrUH zYx9E@+0Utz@U~{QB{*^GGMb#bVE?Du++|X{$G_;b}OksOhdNL7SIDiOeK5U~xb5@J$x6Ujn7?hsKCFGzH(T zkPFR*?qDV$5g54wYcr~|IC4>y$S#luI~r+u^*D>#(CY&4Tq?y4AJH`gD3KYAq$qcs zcZRM15AEb6fI2=hC1kvq+EF|yM$|IKMWsegoUKRtjNBm&ORV?cIA z@kI0`R{ZBVU9%@yB@Vu!ZvaL~8}NHzb_oyT2$Y(@F3NX60_^&FxkFK|m}xx>OSJ53z7PkMWftq+b*QBXMT8w)z2 zjL=e^j6Nv~EqP=>kf(S&7$r)mGv7Jt=MR!HF0oCxHp)!GT#Wx5>JCw+@2WpQH%I;) zIugZ?Lel)M2%s%dNT}h*AD0UxH8ngbt0k(HxgC#3`m;@Po<_q}v`uDi!Xc&(P*EYt z0H{i`v{}&XwFnxPc0vGk+)W_p)4%U8B94$?Af;%if@=WfY^WFsc69hXfUJ2KS(j94 zh8*lrRP{esr~8RqHQKH%OlyW_p4OQ?di+R@IV`J_hSBnn5%j>rlG@O!CR5bl(?#*A z$d6xvxAT}Lh&&k5h@X;h%|R}ovnytvP!HU-+EIHlu1nUDd6=ut{+;FNrkFE4e-tS8 zO3YK&#k)M9N>;6o;HX0%ZPR+R(HLcNnVOUqbqv3j$!ticTkxONUjSbkOrwJ#=iY8> z=m*&czGWiyjPR=Wvyi-SqA$RHdXF6dxkiFhRrobT%qRdUV}h9)M>OO{j2UKuhzBJ5 zRYs_oW<4k;KnMe6Yc1?p>61$9Yb9o>Y--7g>e}@mC!kXg?v)WFb`$q`Msa(c*@Y5khroAJr%=E(&YBycoxGcALV+jsr$3@c@-4 zfsawHU(O(Hf>RUrrD2#O%59x}UP#eb$IN%tI#$Cq|=G~lmHs^l6k?N>Q=Q!;_~d*ahIQwlS+iZa;BiOfTmbneq!5VhI~WnoxdJhLh|vcu%BeI z)+xvD=Ww6@tC~FgWobVvl{usiHrwG1P!yn-!Ht5;1N#Ku$Lu3~H#4e-`FF#sp}&J+ z-bpPho_7XRlm^fzScfLf!^h?vopCjp;)%kV-lZ8J-!4ASiG%LR?rMEFgpW2m7p!XH z>V-|qXU|Kerghxb&mOxUMsEGi9_{a9i>6O+d4ZBIV1Bi{jt|6_^eF{Ssb~KReYH8P z@<_Z@?K)Q~BokWs(wgu<;CU(EDhINnh}n+Y=tHm_6}MBW=n*-;RUmLlXn<#oIPduF z_|J}qUETt+4P*<3T_yO8GzAO}ULI@;ApD#b20g#52t@|9tO;U1o~cGCkZ`y{C=}t*NP+J_ zXX3T{qR~G$Zoi-#<oDxznkPwE6xD~I}5bW#LLMc_@&@?bJwF6|PHso3A%(M{EtAISq zm2Hp3{o4wls986$@K8E^Z#L`y>MMLV5#5PX(2N#)|NR*Wo)+YOLHeoMC%!)v>TD8v zv^+CkXS=V-vZJ4^XqaN>$XK?~9{#dRU?MHIYS%l$i{8!#b4x!C?(dA=4I??f6rhSL;(Yd-yny&hxjh=*gg2ezql ztA?7O$#iWdQY221#PZ}fQ>29V6{()zVIgbJ;>2HhrFxE^t=nViUjkFN zgl)?Q%xT~3rAYg|12Fp2yE=rnvXdE>&At^lPjer7{2!*?)dUcG;7n{-+ud8N;3_{0m-Zn3D|ORRjo1xQ)qst3wyNfi@?BmhXk~hpm8@iW0VmT zO)O&v@H4OlpWRLV;K`<6R6|Mx-W~ORZM(Kn?yK4>nY%Xt`~!|>d$2|uY0)%kBW=*H zP2^>W(mV;gH6si#NwN-vn~9JxnI~Cd_-+Nr@z99-M?49XwMyVu!jDO~O#$PR*uUW# zf-Q{zJ(VcCfI2Z*F9`w3@EZ~W4tHWO5@!%(VjyP5DuT6Sf=!0F!fd&gl#?slPY9xr zdBKk&hle;=&A%nA((G6apS$CV_OQ@qCj*+SCZ6?+FJ6v72X3Pm3Av^KPqL=Aw*Sj7 z+24GFoJfYh{visT-h82euaSyeD#YWetX!Ue#o_Vj3!`jPsE(@>R@G~oLOi>UYZmDB zDvZB%lXLP_yT}{%ag9P((0Qs@P$e*!Bz%)lq*HOQ^S=_S97beCFBIRSGqIKU>$bDc zXa)8!-L&zP79{KFDBjD+dWgM{T1lu{eE7-Oq7G_mG^*l_nHLfX1%PHr93l|j<8bSy z^-9~9PPPlpTtm+QKFUvTtL4gBfpymQRSD`@UgOe*^+Fw|dge?oK<0&%kt1h;5{04u ze^I&|BC>)AD;ZIGZ&~do1ZBU`Q1BzOVAq3}JrlC?%SYS*Ou{)Rs^!I)tlRz zWR0?>2)^CmDacKVe79GVujMGMz5Z{5IKAQngznJi8hq6@SyBTu=zPl1e4ZSB@%ea{m?}SDq zkA;8T0{@B_tO}Q95c?eD+%g8Id_^C z@d+3y?Sb;hy*~zWyYC#*XYF(Qanq}L?)%D?;;MQHclazp!ICJM3yc=DB>j)O{ zUO3Fn<QgFAmz!`bxsRwvtz1w zda!n_)P6sAeP}b&px~M@2@^WzmFElw9N{os-;S$Z&b?Fp!nkjowFSo zMlD0isD2Xm87-ENUEMM1+Kb+_g_h26NZleMs0wd(g;vk^2=zLiW$Ho*7%U6`J0t^` z1fh)ifL3f7aVk{2E+tL$L*VPMfZ^X+336XyQyGdiZ0s+v)nO$LVlRdr5{Tvol~o}p zW{_GE(8Es~g8DSX=2QUk|H2-C{$U}OPSory5W%3y-H40{K1NMQwOn$(e?PAP7aQZtHIAw^!I zRb>eq$`b=N)TQahJd?gHDq_?qAFNGPQ);eYcrFLYI=b8FgtcHOFG?v^uQa46J?- zy5@e3N0Dmg5~g)%+pk+3i8uf6&?pjclh^}-1yTWHHkvWua0MY^A8aTBkPkXjLCdHG zG}0I}7cTH%F!4JOsHYiud?CgT!=JQQ<@ZO|#h)k9Eb*@Z8`I3muawv-YszLQXgB|2D4PuG#@z5@oXw1Xob@&SW zeM|X@lFo2RrAdrkNx!`RGte=S*ya@FF23a<)bcnpD)J><*G2{qrTep4{B^r!ay^L? z>qo1SNf-JMQ{Uw!W^q`cKP(kjd)8jKexRB3XR@i-Y*ci#iG!JD4D+kJf3HVWy3`9U?kkS#SG(f%ZObg_QGt+8%NviPLmjRE7a9ruf4SpU} zmEdFeGT3pzN&X89e0)T9RxIX6*I)}d1>=&M2Aw4=Z&xIJ*63R)ZL`kSrf64YtL(84 zQifKeBd%)G^whZ1#g7_J&9XZ-H6dd(>aRbo!0I@q`PMqujD-zcy`X8q)OW0P^QPLY z*8cfo8wxQu1*8i(V*|JnPXbDu3n>SR+*T;JNg97 zm=8;hBA}KZ5%7$%h{PnK7Rs#6HFB@rFba9!alJjIOyM`7IbiG$L2yGyjXEb5`<94YQIw(h(Z-I0 z3H)aT>Vm$KE>O0528WO-&@kH;F-^U;Q23I_n&N#;?K!syKsc2{)mY*>2*hkY%o)&R zr=6JWuqMUR_+8LS%d4ppe%P+h6r6EaOTK62z+{B}pjqFAgJ|I6*t zwCbFiRyx1g-#)uUPXK_;P^KpUz=pWo|3pu);(J?9-FZqA%&(!7*Ib{)=Qvb8JCHMY zLW>i&#tWwXnZd28%nd1(+DhFiqX4V<55=}YU~_n}tr8Gbu$apGif_J{Oeur6bI?7w zP(x-F&H&2f9cT|o>CV94#N+6O0@J0gVv20M$&%XcR-RhHZR@R<_O)3;!kDnB*gfH# zr=Lc(1AAY3=`D0oj?~m{?dVt*i#6getHY1AQe(57pP(Oq%HMp)LDF%~Nnf+?ibSd7 zydt6{(7F5VCg)VexN!~l>>z*O@TZ3#2awnRf#{>Za(pH9>Lf^9F9fpu70@?J!qH(6 z#9&77n>L4IXBSy5`|$TL$8&2l zS1w~EuemmjL@bFdrITwSCcLhxX-Z>b)!!Jj>ktH_g<)Y$<;0WL*3$szx&RW%%ST*2 zV*fAsm;W8i#N-LEzh3ZfOcnv}8GsVJI_qu}|Qu^YZ+B zXO%~U?ua4aDe?GPnK%HwOI)3s5AF_7lH(A)Zkte;BV0Aczz5@!%hp|AMg%&T1$V0ZWfL93{XMz}9l2>Mhx%Mu5lR zG%>Lm#yO<`4nJVER&7x z@Y>lnmw1|w&8I=BRZMeKe72jV*3uT$f~AP&dY*f_#Rs%S@m zCFQz|R8t1I8t`j1_zoX+RrBLGchl{+bP^?z^i?-r9*?Yfd0!K>UlMV|El8kqjJJW3 z$iR)o^Vd@Uz)#n&UbnoCk!Ih0PWxkKpZPLcWR2^fna$vzFXjqW93JJ+@l6JNeY1c~ zv)PnhVZFbm#<$5<`wg=GRiyT=&pW_*xEr7C@?Lj3_8jO+4U$1;VgscyJ#Ki4GF+20o(ANm|7 z^SU7i2L_6WLX^%r@S<8*tvX2NVLy2C$%=!`>ok5B9~0!V6bdqdico2M5z6G@-gYi7gOJkNL~0UKMvHTij7 ziQfXqsi~?+HzdGbC=^_+TH)i(0x zJ7(t2UZxX@DVmZwiKMDf7#%;euK%X1elilpXg+Z141H736^iz?3w;pRa#}8hgI$^_ zUeOGx^ep#+M12X6TMv^Sb^yoW5{Q9r7;)2xgK)f$i-rDkIp%o20|VN?VbYSr1n(=S zcF@~ZPBVl%L`ejSO~aV%zw8Hs%hFN-3`i3$G0o&RsnY(JzA{?1Aq_paHKQ{Wy&Au} z3V*!xcB;2{cubovsHu@!O>3SCzY3NbJ1tc(9>tSO}e^x#^c+ddY3U zu^|2p>>!g*z%~+&1$me1U*~q#czQNFf5!ZWYsf6qBZfj9Y9{?Z8nKWtkAOGs$TI#Zmd@Z*= z+hE~UsOtZ7F6bUPvi`O$>0hwJYm6G6@~sy*skH{`#6o?XgCHulS%oUf9GE za+=BN#n|;19q-e=$^A;MLo0mw?Ub| zGBlu)N|M>XwTvbNL7j;7)+`9FPlw3qD)51@mxBQGa~C_YV75Bx{*%XUpX*>)1JNpXat8QIAwt zE0-!7@$QxuN*fv(vhiVp9ora)`(4#h4_D|A3+pPTju#?H+5sV2|1J3H*or-Os%TDCn0{50n3=w6G?Mw3i_-j!C3{NIG{NU6?=$sb;(AM zvH~+og&aPr(rran&sd$Z_o_UJN=u`*`~Voq6R<|qm06hi5v``BJbM#gc1lLs?k3Z` zJ*}uCr=Nf8HjZ9=^0hO}5ksw$7w6go#V2#QC&>)f+cU~)zcQq(a$S+Kc8%(DHM#n_ zv-l0at2?EvRVKQBh`~e)ev0R=#g7J0yQmv2d37|MD}F`>5^-eJP@$2c4U#dJHM3## zMB_Ox$u{0|vRm#FTNdAdHfgG-O>r8WQ)j&TL{-{qbM+NWCUeiI$+pni)r+dl{w3?y z7=!Q>^=-zEj%$s+{)rB|bMnB+EPVej+(2w3UY}U;|K>S=-_`XPL6~kXsOxIgt*SuP{b_se*fE|~_n6V0_yNCXWJXn^ zN{;-Z!%*kqCb^DU{CsfBxj8id*-?l*x1PnXj=Hm}>kzs1mlRaBwW?N?-}`XdF>=B< zPpfDA7*LG$RgEpE1M2M9f5xoQI$=r}h|u{bEm^(AJFdrKvW^~Cu(WO4vZmHjyLRi= z#%4nzVUAfc>F4ymsgqn5*W~E~6oHcW$=PKmS~>2O??caa!!Lk# zHXYq=fjOoRQr{;%lRYi^NC=;nFvU#`3Xk)uHt)dn>RSK6B>c169FNGo@^D9W!zP&j zIrs4%ghKjYl`takH59+C-;tHHt#70n&C!s&N#5K>`I@{FdJQeQp7C`4Y&;q!Dk-wm zw5-wLOzQ3OKwXEy(`VACn?fz-`uQ_l2KSr=hJYM;ZX1;~wYO1h9^C?}m6sVziMZZk zNTkLnTFqfos|Ka2C0>ubPG04^&97`|P}i%2L1?*bI`%q!7tJj{O!WwT$-0pUl2j}z z9pePan?qZV{;h%OOx!ba9a%hr`ctuy=5`im7ieXXht$=kWQVR%pUgZ` z`0xJ<65$O0FZ%k<4cXG|%CMp>jSav2FQ`=w+Ll&LNE416D2!miD&B!rum_JsNs|WMYj+dB2x5eOr{wH3Z@%-a?L`Su(*kIRY*yM zYpgrzjI?0-V?Emo1?u}keKF~+5(rpAvzf`Kgc9nL&ese08Ij$m%$mbG>iObjYH&SH zz-V5fjxozCjS=@k?#(RnSFeJ+vZ0D$5F$O2tkPa*9Sk-kJcbYr#kq2*#0mY8pcE#a4|F-qZ7j7i|2fWyU7r)ptg2#YMHsFHctpi%gc6xHIF&2?lo{SOpiHJ=c5jnOdd zeHB{Mh1f!|N-B35^dmtCQCQb2mnykpxkSLm*L5kOv4=RI=8@FTWNm*JnC!BQzK*Qz zcJV(7XjLvJRdR0q=8|y=jhqH(O%{;S6wJ00kGkmd{dY?XyEfEu6f$=Fe%K&8wDMd^ z2Zn8s2~5%nSIOKeVw%XQs_4Pgp&b5$m=Ify{-ql`1mh27*1_Jqn9IFVDB!6DWg^Yd z=mhboocbaAd=`H!c2ub|mZ%P1?R`=p+gNDD(bFJtyI}hL2l7PpGhrPfEAa*A{ zmhj>L!Y4>83;6gU;s}9|U(Eur)ze&>{x;l#tT{EwpL$>Z6gUP!v>0Dt?=;o&t3sg~ zk=ZPw_v=^dRH6tBS2VOo2m?KdKAR7Bj_)V-Z>9ndu-6fMp z0#}kpRivW9dNb1kk3Z|wm@yK&+pUPpoHpZgZCBqlW!$Y-cA%c5Gtnf@iyAwM-Ljgn zjjPl1>vP%n-`_V{(wKA$bXuM#-XN0~C!;a=AdHy9FTw_HPx1Qi&u@gM@_*{k`n5~^ zs=(5d*5cFH5*a@WvSl2kGB>PPTZ(9nlkonT`%J)|ikcPW1+2A#6~Gt)_^acWjjlr&Q+8&2 zWlU9Am?zTMUCX+(l1^=E#|oBA$y;!8OjUe@oKF#|!!PM;$fox{K->nkCx1`QH|e64 zHl9{5@NK?n4tfRB3T)($RIGRe?d#F@opkG3mJB*QZ(Nzf zMf1|zwt-e2XU9D&?0DwT5^C4&OmPPu?%Y-=(3ux4S&QK8H*Z|;=jru4*OE(~+j{xY zJL`d8B4~L8iErA)yncb%Ax{~CO6nT&`pK<705l;|=2tPL{osfwxm1uo5pl4ghkk;t zi4!j3lU(lGtRyh8lQ_=wNT28;{g}Bhl|~qzH%8ZKpSmz4((*zJCKgXESqj(*6WIyg z)cXst4D@XAL&~(JY3Y)=0T`de@lBpF-H&dGZeA6Tx|%sdxv*?k|!dLMM( zb;Ny3Kp^CGW6jE~3Et$p@|$2S;ZE(i5O_L%Q%~&EPyaAl63jyV71Stl%~Az^8w9DB zqmw#`V^;{pR*f?5L_(gUO)QeLMREz}vmQ}$+l&W@@O3O8_&-1WkMslvIsO z!B{SSN5L(m>D)6J{F&HQt;yOt^Z>&jky2Z;x1?`NQ`JX*aCl*i5fYe;q-ZD*(|mko z$633!Hj&X=^{Y3X5@xRGtzc)`A$I43-Sse@o3uxOodKwsSqYh4Qu5*d+0tBs-p%9r zW-3{H2L2mvE#Pl??RYKr_ z5K@k9gsWsQ8Gj6$LQvBaTFBebzc433rnnafXYPqY0U{yrbs&_7_v`95oSx=Pf23=7 zE=SXu;?yiUl0laiMKmW@E3aYPesf8NUpthg(-lFCeZ5vv3-C3u zUhzODU&c0B*+L;3@pJ|Ot#H}cI+Kp$^h%0ff?fYP`Ie%?ybj@_D#3OUf zT#7Gdi31B)ENhfCEMGCp0awBXpu=-aCIbSKWw4h>5SBve@>Kwd-%7v=Lhq$0_qUuE zI))y_9hM$dTX!7+U8~bUBpK=2^6W)qug-mB&3ncLw`?I-<+R%uTR|73;)ad2YqqCI zzH=&U7hnpsWZ?FT+xXzYf~Q|~p6Cwzue+lpa|_<^-FX*&cL3~`UKqR=v9G@&`$`sn zA}n1ICAF`3Pzv|kcI-h$eTkqc6*SukyVgBy-^yqRTof(>Ck;1#P{4!OuM-P+FjZ2( zT&j@^zbzrPA6?|i(Sq*1u{ki7)BNzmoJqR*tJ${z;R)r`J(!@9m_Hre8_nucfv6xV~ORT~s_GL#O1?=A(~6i>_atQCBPI zvyOgaRp{ekfs&OR39)1?Rnu$?2UWG|mUd>jw+%AEh7KuV#Qf@*R*oo1l1|{v2Sa%{ zzM4h`6@cebOT-D8EE^!KQ<;52hsX_`h+e=A2Rb`P!-0)(bb`pD3HqF4`Vu&>ywIX4 zdkPY@I@3%^dA<&!@3}FbhiI8Z`sK7rfj&ts$kyP=ba(TL`Cf@r{Xe(p>wSWVz*~o3$QtwGAW?>} zwl9ev02a6~lle!1ueAD&QY9N=EiO-GG|L*(em$7Z?4MKkeMzl0t*cd_yZq@IG@#eE zwrb6w#M>huzi$t4<20P$j*BJ5dsOIgUok}QIpfFY_l}{^#6GT6M5iV|PBi)2_mBqG zUP{n%zcBwsF#o>NwIyD;oRpDt{KQV+E0l#v8Su7?G#1SVcbo-3U@667jL{_-@ze+N zBo>>LeLqiKP(Z4q3+RiEE}}!s4hoF~T7cJeODO`bW{4Ce0JCxinHTk2hLR8`DzjKx z;6>NMi12-UBHtnQFFiRXm~be&3jX&ONh6-QyZbKmQ5QbcS;dgh*txf|_$i^)1uS|Oh0hgQ-xZ@QX za|I_Qus_MjNZJd<113wWgR!UgN=g{VvQy%MiMMA#&lla>-EHaBg_`y4x~97O0#%cG zwYA!wiKs5_%0;9ZNoxjAO&)r3*0e_srsY&u@h)^_r+4yU%%)z+ z_c%Jv*m-ijtzqMtr^AD&KlTKD9~4O{;4-QD)I)@y1u|5B=|NO-`Eo$#tn}QGK#1Xu z5Q9*{35S#&E6DONr9lRa1_vJsEu*DJzu7_<`s1j(i=7MUGmoxCS9En9tkN|%%6#(1 z&_msFowg@TNx9}G4^POuE@?;?TmX~tTIQpvVSBzq6;;G?cZtQV+K@i3sg)JK?5jI- z8V7=_$y-q#ZYB(;Zd;xJ;?c`<340J&8CE-WCjQg{oh)>TE&(HGZ_>C6agfGWux(QX zRy~xD-1=Dj30mQwV9^`9U5lmJGh2x^f5RrGq(q9L!%s5F=g92eZlDF7_}IXa7)JXd zw839QkmP)mzc0rHQ0^>6n($ET2zbc{)rBt=-kHlq>X0SG z7QxS;2%F;@8hkLBgzpY$z$jmU7o(jLajoODJLf?UYwpzLqc!;TrZ=zSLXx=uuVK1$ zO~meMP1+jMQ%@JKl2RSnEG=$c=8?MQ*Ify64+i|N)@`S6ZiauuYFxEpZBU*}vJ_`N zz0)fOJYe+7JrfO=zEuml*n-g42O+Vt9eV&SRj7QHRFG7aM2pFECMMe@j+DH?4Ps#A zvNJ6Odd#w&)ulkMR1Ag!20R@mlp5xeDa+}nyFmN1qhnO#)^iJ-xzCS8d(%QtiL-Ns z0uBkW+{iJfTb^pz*bR>PW5{$Z~vdvZ+3i@cr<^op<6w zDQ0F;>D7>GOu09IGDK51FqrS5Z!Q_5RLcPKMWCV0qBsJ{$h}|eze|=b01EVBEja8eZU{ot^j#0WzO#nVILX^p6J#EFMxd6L z@36?~RThjb8tNtD>fA*)bwP11I-L6=PY;Mft9)WpXBWIeA2{KMXdZJpOCFEN0JQwp zDc54iV{wyuy zxsnY6sSxi>Bply;cla>8cn?TksH5dtX{gQgFo(;^h$8V z8dCX1F5Fq7rz9h=eqJ~ zClboUYm$d)1!ywJSi2Lys#4fM6X2Gx!7I*@D3d|UA~W8%rgT7|IAyGX=P8(cH@Twd z!qG6nNgq>qT(%?0n;slMQ|{fDLcI}pSBEk#YwrX(jz4zcXY+2f6>p{yIh>!8;3sEn zQd2j=;iT?YM0aeeSGxLV&A?C7JRv*F6$x11+kMlgy1njcGx2+P3F^hSu1PZsJ49ax z9sQN)SqoR02zpmyB9aXaGsWZtgXn{5uzWR4i5pCt7cg(A`G6~nQ3@uLA`6D!HAKx{ z@a?yn;O>GreR_CWGI4E}L zZpW*a|K(i#{TGkrg(hzD5AUH7#amL;ZAXt$4;I@P8&1G?Gwi7lkP`wn6J|rHgaf?% zX829Q=gI>>P;4A7=SNt^MJF3M>ib3o$fn&`@@nNU7C2)Z;pPZ zcLHDsa^-xe?W?j!-=Uj}*Nb6Ctbjv5OgrJ_t0Cqh@LXx?V@VQ{@vVkX_^o#2R9P_L0RO4i8zis<|xPX_y02`kjZKsupBl>2#D}o9RjH= zU_)FU8_3L}E0b)Q)j;NDTZ}yM6Hg#jnk_b{NpF}Qx^$m-qIfb9=@fkaxw7fJE?)Yq z$P@@a9?YSGM?ca#1+ZwNkq?axwEpPlIy;}w<{R{U_*99j8vQAnCoxzNMTGi*9n z3GB*7HO*dDgAbws<=&hQ_bz?=nS9C1SWL`_B zgLT_-oR0NPX#D@3m%1}8lFM8CFpJDw%a!7fqSo$CTb->lBTkB{$K^RjVY0_1psDnc z6vncU8E|YZwXXQ1fzqjqUkHT`MXSmur&h*`96C~b&QKbi2V`p`rS|xB4K*^iq9J%G z{%h;TjmrWsbi+Mo`LcRA`Bn%_A1k-Rk#pb3Bsio;amZW`vufqAlw9tLP**uDWh!m3 z_CW();k{|85v67xMK$Wcj|xb6OdZ`fP5@xfT5vWC^D+z9QRU`A&4UuVr7V@-$MMzs zIR1L&>LgofH^+>2CEAhHSDDy3w$Y3K)Zpq)D4UcWT}YQ7jgLOYfl*!CpWH)zL!iCC z$eK(UL$eA}Y%uYtc)L}hOU8IIR(>qBF4m$q#H}l5Ijy#-i#*DP6^r~T|Kb&BRE@GJ zqzmd=Lqa+J5>Gvyt5R{seu1jXUiM`=UG`{R@May%NPwXSREgQki3;dF0^r9~^qH)f zG4c%0sQgjI@Wa#O2GD4HtAv;|W6kPqNe(zSYP4zMk~XeJ7+pHqm~qWs)3CtFz>8%7ViVG`9*i0S=<1z>%VfO*d{RBp;*{AIt=OcAZ0G195-yX`4C00tXtupdqJ(s8)8QQ>IoY>Pgw#)h-b5_QZ_!PF|Yps5yFU2zv>v*c|6g zx-$nAb2=~0ow2SKsJ`s#g~ zdTsrN&1e-%Mk1n!6jN(Yaepmb1MN?`s|@nG;qFhztQ8EqR!?_lQx zU0qN_fXTNqas)JW8_vjZXFS@qyR(yO3j=vf5Ea-w<$A*7X>`$0Jpr)m6akS)J>hvvFNlV=PN+gwt7KuXQQd*Wa2gYfXO z1m2i@E5TG4Z)2DsmGF>+tR8?>+5lGh)rDfrF1#L6yJwWm;QoN!DW4?uVC@kwmNH0C zM_3>t0yFCarD9@kV=nhP6)Zmg_d;Pt$}*)9#%kA(d8f^uiO4%-t*Ne-cdmj`JO7Fo z_cpw6F_}Jl`AaQ;B{5eB(7L1^uF$mvOUh(kzcX!!Z>kX(LA6Hbu=REWEZy68lI*q* zl3bWM6?ysM3*M{)oe4q9S2x01-HZxBi636dD@?G?45a+!Nr6oIJ}iqR&!5B>TJRrb zLHa@VMY+l|XjQ@1fVD*xX>7Wl?3sk@nclznq;~$qgM>HqN2;fI$3KCnSP&>UHV0P> zn$|p>PC&~&c8<{o)4IG;{900JGq7_ktqmRS5!>w2gw$ff_jR(g%`-;A;1_;jBE%oe z27f|I;0Xg0K;I!nV+){-IgN*RsKwfJiX-OJ-Qyg}fR}nh>6tvvp>d3#l2QexjkhZu zQwH$WlP*|0#Y(1g8GGk#g$GokB()EQUB)tzfzXkesDoA}B1YQ21*>+mUl}z_x^Dyc@G8!?J{|B~ffgP53zh%szfs6T4-SV9brF z<=HH?GXGaDuQJiv;8`Dn3IR=J zqBBP8rTkGf(&LYLWI&;+<>Hb2{JGJY>GTtyfBslTrq*;uC?U5h4bo@}i^UgmaR5uJWRPiJ8(Bz~pUht6q$M7r~ zrC&?oZ>2T*xUN=3U0A$VOzlpmkNzF3D~~0vB0X1p5yZLaqn{CjOEX_mQRgdCr}()5 zop_hFD^r{N9AKzg(h%>0{faP zr?(ORD;QA?%)S3Br_{m`IzUfKB85Z+jJYNiyHQ~~fk~+ZATWN92}I!9oCq*PCzFwK zi_lGY!k&Cy9kC58j}r1pcv=5$)0mm{BAbAWn13`YYw;16T-AuD62Od)fTbpmAMWRm zJD4E_hrJopmO<#~0`#z|_q_F9QX_UOIV~ICy2v4LNPO#eXVHVA*>`uarD9gw%~|FW z$s5h^Y)X{~SZ4t2<^8mJ&>RrJ-OdE%!+Zl-1@X8fAFE7JC4Pd$QXr+sV)7MMi-pCk zo8?WRbMOi^T8j6e17w*}^aO6Rqb+y~HZ+}nX*a8I!OqYjz>Xi!=il!UxY}o)HD6$kZ^~iFR8NyB*|&Xr8KJ{cgbwQm zIxI&Z9(~Cd`wweoKb!#>0#5a^jrc1(7Ttn(wjV?OQtGX@N>kbzC6jtHc`IonE?w;k zC&R&zOo#?2bF>*$0iFu+00aak?}s`b2aohHCyL%AT_o1YjRO%Bc z#yk?4wIN{61#$&lAk#G!hGG2Xs!G-$(sNixg|$H1Y=;C#DiqSn`${87CCRTPu>+q# zbK>yTWBEOocFazv(V~pJVdf}cA94#5YoyoagbJ1xI5jdpNp0D#I=0zn0)~wg-xtw% z%-jyP$&LDJU7ZPagF4=cdp!$Vbahj!5l*XW0;*<&Vcxnldi3b$CV69)uV9VODI063%_chpEEY?54}QDGoJ#1L_37LMP0kZ`!M z=^oW(Hd{uHf#+vBb{LpZQReLG8EueKje?;hC1Ar#6r|xNfuT6G03cHFv7yk=M}wDg zSXf5QK`H#8odA7LXJs07mZ3MKghC#^r=69^Cyd!{4@;`xhUQ8;bRB6s^a*q7`*ANp z3;1MWnkIVP7=G^+@l~l5bu4u-<-E&>rU&F1am?@6R zqG!|Sk|ITq!(+R5ZCV^4!#jL4mTydR zu!MT>eIpr>a^{v+jt!eEr~GP({TW;e$pQ&N?qx<$qo9hzfXt!hQugPlrJD%w#(hLEhs)%LUxIeU4(gVpw0yLx&gqK(iG7d!>n7`gH&u)B}E=8pfbq< zz>(0#R+8T#PZ=H#GkKH*#jF5|<3|J}uG9LLo!r5naBBuN$JJgFC&M)YFnX{EoWdU<{8rVR@`&CYr2Hy$8kl@5YGUDPM8&M&`q z1xQM87hOE3!(B${2pc!62VUW;8rQf{R=suf_>nUA_>mT+W%PK9BD`Xr7Z_kHm}T{@ zG=A>RX0vPBym|QX25lrBH-(LfRP4tz+FLv%`MiDk%uz8F#9TZ@b8hrBIBf*Z|07cu z6N09L1FlLpTHlzEoGMF6E>7iF~Ktf&<#IDB|4Wf$Wd5GEuOdtW;g+>r7X%& zIkuG}%fzA!2~(6GJ2;s?21-(2#Qo>bVaesZnP)y5_03%r1nx%t%!xCS5`{eKhdx+G z6Q9p}0+={z3+$Mf7TRFmfXC`;@fu~^)gen*91*n~{ebv=F_PeKbQKS}D`lO0A!zX*_N{DG`d55W!L1>UP-%;a-`f9cAHaJZQa{rU)! z^+Qs{Oj2en5~D3FFL8g!kMXzP)G?ZVz$y@u{5|%3PFF+6cUC+ zLHtrYer9`nPt)m_^s)=*?`)y|k$yFeKa7fvXls$upotStFea*@e28$+Bvf|fv0>UJqH4I-S zM33k2A2SXB54SDsEq|mk1k53KBdCNrvO*R$NX8ozRpW{N3MXH^F$ox zAMyn-D^}8A0yQ8*HDAf$uvutD4)GO6hfgDw(gKT!t#(_z?X`B5U{27Hl7|%W)@a8UHP~K!r8NhO0U%X2~sWazyAT9nB2DPrOC;D%-Kvu2~YPhpD#Ka<) zsYFSgpv?nAo=S58+QI5zWAn zh|ko9Zil3%1Zq|AOBXz60OyWBD&*Fa8$;fJT)^lJR}Kt$V&(3}Y7zxXkput50Kjs) zXxxGH3IbA&E#7iA>DQbJxVRo&i5ExEA3E_H`89b(Zv6mTspd~vnV_lMpR)KHv9n5@ zwM4bR`F%=;UQZT(NYP%Z?&I z5+o7fTIl^tPLA=%-;#!?3nfUH$c3R$*K8+`p_>GZ?PA{#C6D2BZN=O{1&Y)ujojyQqJXockkE21*#g znBPdUs-EQdj!P5Q#A&H?%8g+%QmA?Fk>rIJ?F_P;cI-Vr4(x!7{0$nKRchkWxS%!N2GX-! z%6&oC=2@LuiXW?8y)i zXi?L)QzPQQ%vlqx(2K;q;;nQ1Am8ZR`s5iWEj~SOKzzMHU>kGU$>^&_jn^g?S%qSo zrz-V!3V$pKXj9sNoVuZSI|=Wt&>H)~FDx?2K{}X`4A4Wvy)L@uADcKyzj0NUQrbAuQ|4tk_t#np(DFBJ)dARR)g z7_`D^VVi75C=y5xbaE}xS=}s&oR^u@q{oM#%%;x1n!$e~gxeI675Hk-oNMOJMakK- zJBn{uk12$*V2~~1(Quk&)vmAOi^iw4e65zFY{^fge8oG&OmahV_Y(19_{EGsndDci zXRc&<<;-aa%DrCZ%#aZ(r8C2n=b0-yWNXa+Wg9z06K>4{f`$4Z@mYr6!tM`AZsY3e z+M!R}CPFT9Yzw_cG0 zf(K=LJ2$Cb#xoj(+Q{PZyLh|a%oA>4{269@Z-a^QC2(SBfj$UHhqLaFvpG!JgBR!_rOcHWsxkXf0pG)PKI;R^H^;e?59QW_Vd+EAD>D|IhnG2t+jXE9y6|H; zv`HWiY1++MmCqr(%rs$MD@QA6T{yv*c28f}B+&go!oCBrt@3Ky@0GRp-jXF*l9#+S zZ0#+t*cp!FID79!280kG?660eVFp52P1v)HQlP9tp|q4$S}1KOVdJI;Kb=LkAi&#Sm(0LlQ4QH?Q{jQl<}l%OZapuzMEsi8&2Q>zS|)U9?6 z_Zdld)4Wk93`eS)z1Y{W5J&RJ>@(*<bg3Ybk;;P7tH4*Ui ztkuN`Y_fvQ1#1D-Piz4Z+;=8$yp8u^LMul3RYUZSIg;rIQd@y*@Mtb~HTj%sT!5a- zzyIyGxAa@aVZgFM7@AJ@NW@(ri4swHC+SCmNaq zPFOfA1t5&yrRk^2pbe<3dMIVyDHuHn1v?N>N@j#%;hc#oDlH+Z~JeYJc%Zu01cQCCm;T1ux z0j8~>*60cm0^RnOtVANF&vsr^(8u-!8^b!ETNs6ChWrH-!#j0;ZAZ(FMsrVxqD4Qe zcm>?8V{%`1X-;Yu^sUaf%bBlp`t0^R{aE5^)TBV60MI+nJL>_=C<0D6L?qHd%Xn+d zH^)UjFqu)~D4n5Fg``}3oh%O^=koY$=A^l!{ql$We~7^z&wLX zg3aMlP*#f4r>fm2oR$zw0L&!W*LN+slg>se={de_d*BfsEs(fl-*&!6&YOAiEF*CS zTQ;?}+45Oh=<(7S|0PaNI|L56gJolnmH=Oq z#jI+3*@fyp$}aLAin_w9z|_zh2@0DJG3OO`(65dQ9VRa)c|$zLa{B2{oO)`CCbnnx zW;xw#SL*wy;S1=g^b~Ris5>DH=0#35sj)=6?|^1xU(M2*%{4o#4BGeqilss+oBrZG z#%Rb5pV>UBWX>lWb|{Kk(M6tY{RF|}L8+#U1_wSUbpHc^YMjP~T`|Gfku2bU$TNk) zm%-Fs5066596Mw820DQBPcn4dZS+?-2K&K~b@q}DfmPDJXx6pnnTuKh1>{>i%lb@# zFnpy(Dz#}f=(QNTw6fdj|QI?m20`SrQ%g>7L4PL9;I_Hk2>{pO+Ao(AK#b zL(HoHi~VX)X#nUZWZ*)n>d_>jy_uQS+%TNfh#XSG;6y9EKra|t z(gXBm0;1S(Pih&Vbm_W{sS{U?+E5g`Z(`+$cXZe;Y(0hbDMx^#UMkv7<$eg<>xZCe zYt%9rY5N{t@WXge|OhYvRQhik=F7oAR^+yGg<96ZBf~u)e)vNN>-x+lE zMOD4ZNS^MB-}cjm%)~>tC4UXIocS4Ut+-asv z`AZtw?thp0^ih~Q#9W(vVn18aykbk!_?!_JfatjP+`xc~+-|NPDwqwH!QrIcn#ZJa9p_1!JORXXvOgR;~uv3Xi)6;A_Rt|m2 z5G*fFdPOBvl-0sT#r0!PZ#h8G>41^P$5n#GK_(=QCjePXbl501$<|7$EHFAQC@{eH zCvSFn&)85eg$DNSZbSdvcD_a2Hr7XO5DPoiZRW040+U(Ia+`;UKm}b4GoOSlT^670 z#rLj{UmKGtm7xZ((sdm|A^#epeJ2c!GpJ96`m(%l?6-yIc+ z1?h+-&?-wxe17^iVD6g0UJIMD49)!}Pk#@pGKv(!2agnw$iGf*Of%2XhdkNhub8dH zKUke?XAV3XtkZui)_mIRv}F52isY^)zFf}rtY^>9Jy5&;KKuz=7s3CF4~AwQkAxpy zh=k!x<}qdJdkK2_yQ+<3hNuSsXEYCI#7I2 zPHsqVOOw0r-L#3gZlYHW>{{G!0x4mhHa2VZO!}%?tO^8p5+ReyTa?WnSOnDTdb*t6 zp|!#~RXf|esaD^qKJ~Bwe)s@3+*Ip>Ej~;h3~0Q<>a=31UWg4>P59ubWca2eKC~Q^ zIaTC#I_B;Zz%)EQ1h`(Gp6A8k2GcQNzND}3UUGkyzLhRF7L|T$))dfzz}OWs=AQqi zPE67_;`^?UqBHGC83=F}wJ9uIg zu&9@DlmK8e1F6mFmeD7eP?`>QaK6%wFrU~L#&5dq5;TwtLr9k_VF&DDL^&ZR?Cwr3|9Yw6zIjP$DrqH9Ww4*&03y zC~bOPgsZa*Q2LQX+AN!X+8m)pI+Q*U?r^rq8WCiUv*#ywe$1qq*vXa2s1#Y-@obF4)N=JXrtTpEc0jr;81aHtM zKgvp-!rtGK*2nVu=r^xL`C7d&_dYS-vMKY2H2o7043h?cB;H>~WlGgh5%3gNw-r56((;vkpGcS`vbUwS#z|;@3DV(geN(RfZoe zWp#je3W9opb>m)f0xNpgvvI+uuI!wqTANkZN>eb$8`^RyR35-w+Kv< z=0#)k{N5AJhzbl6-{OfOV(M;M+~_q&d#@C^Ln8r{e1OPEQ9OI9H-~joG1Lwr(Bl|$ z?Yhv)(KtoCZh^74KQGgK%t)4wf78*qkcGV04$d#*0sIy2$yBqp!<;VNZ35!;fX-Z zN%>V44Ig@Ge66Wo)v*;lB7tB_-jfU;^e9q#s=KF@RPxGm~&6v}-E14T1 z8fGs$)<7zk9fu5uAYB**S@0bo41Pw(oC-Ho0u@8$O>MM9em zX03#qpzi#yFS~c{-rmW!IM!|6(0=jE-E(b{I-#*|ZQ&!8P|@WV%4=h3lfvU--pITL zL9(LNkVV;@ON-B|!Av;VCID`Pl2!F|fo2zuHbHX%O+YrHolLPR)q5@;MzFzXU=i*F zx%AYT#^m7mHH1qTUGdYe`?==$mU*>$@yr!LouRpP)dIWEHg6SuhZ!jzi6s)=&px~J zPBJSe)9d;IfW&P;Kuoa~>JKl8v8Q8bT(vDMoOv*XP^ynox6e9#VM;4?id4aojrX*v zy1H~hoj-7XDnoxsI=_jWaveR<2DJtb9$h}Lh1hf!#$KtiM&QGs-UHhWeS-5GWZit2 zFN>$KGUNdH99XumSzdM$mGQtJWdjcn@dy_0D_E&YFSNq`smj(T&snvF9E{#I!JTn1 z$uxC!Yz;Cpo--e(6VE);0DhL27i+i%tBEH8bh_9hgSxYwXREhD5T^|;Dl2q zWs{q!TeRrvg$tulDVWZ-M%*2rNf+?ex&GyVJp-m{#VS-hG$hPz%SQr zf6(dX&wmV+Nr{3y1)7FPuT9})fY(Ljahmlo!hU)lB7<1qFwpHYhEnxaUWl$uGTRm` zxO)ElIK7}BB!E`Y%V00@NIy4eTT0n5B4!)efFfBs)cCil*ka}H#74>4P zNEb=KGuohKT@lrus-XKO&+Tz{1^bZr-0U-#Jq(NAl^hFs)FDB2j z4FUP!HSx8D!n;gk@wXaMq?{h~I^X5g`5p716DgRxIeERVFyAk=2ttec4R69$Ts_WM ziXVRhmy~9o$k1 z?i-hpWEkH(1rSHM1u>+F_qAF5k9)9%EZ};y%1gsw>m!~-x`C;zqRJatKA;KhNdY;u~ z=gZ_gM&yFK>vr&*jZV0`%4d>53hk_CBs`OsFQ#8fC5?(1r;UN=#>kFA+4(7LUl$My z_#Fv)8p?S{u#RGg-!%>vFMUEL!_-7uqvX=NJMZ7R^{aMSeZ3-}@HBivZ3d|-;D;+6 z&smi%4ZxfIOlJk*5~))Pk!3AMc+&@$v`Cy{*O@P#zgDvHp%}XB&_TkKP!wGNG6i7T zji^o_gAT>i4Z{0lfvzy3>)OFFpqF0wz20!uqOi9FLPKsjdchNiCkkJcz{d->2&*8I z)p;^?0P#@bZ?E)1nIKzC5+kSp`xb(co0D5$5spNxNmHBB>!BHcU052F^)4n_`k4!p zm2H>{eVLQ0Rbh}d7T7z4a{5j4&bZpYwv~8w!)=R5SbSlNL%SFi(Sa)5~){4 zWX-yCebAY;lCuWST5JS>zis0cW8`CD_l}K?f~HM7+_i$%^&8rS?VDFQ!S!P4^p$cK z43D)N*7pZ87^T}-b)>(4V4+epbx0=}b+FcW%PS>twrcbwWWVDXB&PjiVBlX2=m3ls z{@X9rY7*^?RNxE=MEo1_*0B~?1YzqiNyW@P?Xr}#HB>ZIVcyrB9OKWri^aTaQ=3za z>z3w2D^|QmAHiwQ5F0`k!xR2No!HU9Qz*FZH8!igFK=;K`UaU4i**NSO=Sv+QU@xI zZ8*9tdhLWLX<)6_ z0DY1n^XUPk8@Cn;fS(`udkZkVx%J6?bz& z=y?7lvLb~KpjE6y75W&&pP~YS0Yd%;XiJ2lH8l?K>cx=kuLpxvHa=6O8g{2331!<& z@VSykvC%)KQyol|Tf*8- zG9c)jvUP$)k~L-RRW-OZgK8L95CszP$AcWTcVPP%i0JXBuS?a-qUymN)A=A+G-ua{ zuJ~&t=yP#mpDJ?491$prYy$(H=(ObX)*fr$0CB9ia!p<@f_De>Jx*a2gD;Bwb^6WMc-SF`ZpI`}~cwVmdK^5!K!KMJEpxwhqJOX=wY+ z-#f|H>b>g9rKIgex!~emT7;L_5k{Cq>iDsaVanbe~tdC;?FA0zp{0Kn}Hs^ z5}kQ35=|g1ArJ%M`z_M^Rq%91 zL@(?;3&ye{Q@?%7&JzPr!g&`k|Bx(Y^$_JC=AR8t?}l<&<(5$$67uvSm}_lbo`12p)qvBbUtVhGG_tD;=uFIlhfaM=e5^9 z{gj^j_~XfzZE;a(L;KZGC0{nfo}En znL}C9k@>B(Q6EQ!%l6`%3g!SE=s)k|wIId|L#&r<+!<%XnIllFC;rlaebL!wnL9txshbo;fBElTY@eYHbqmwHY(e_!8((A(Z1 zj3`>WS|m4>e)@Lt;-B5hmNnY1dVp{;ze>~30c@H?hrACF&k`6dcsJ))YmL`$@r(N-=@`9aXjy&IJD^MCqQ#iU-{%k%p8l z?Ycf)Ta)DTmc6%(*2-jp*|(n4JkY!Ez%+?L7(8j)YU=v|nM^?LqtnEwFGGz$CYwe! zy)*Ov5|`}B0|SeHuv{$nu8y2VPo^gS-s^|S;8lBr z55Ri;43Y|I>JYu#AXf#0LPc$|&!TE=0`jd+oE7WU0&;Gzw#lQA0Hmw2IYD>wIi0cj zvERigjeiu|jw5*Dd|F~a53&C5Oj1LdzAAqYgkLx19ef5GC9N!Gi8e|?3%%% zaUqeP%xJl+o-W37=zOb}iH+^>=)pl^H4RI~g->3C(D>&An%*91c-rXnq|)b8*D9J7 zeCI$;6qz|OGc1}p-_r=$&pc*M@z8dV3)@nnBp$+GMNXcj(K@n+?xt4%-s`3fTzy{X z!O|%ro9=s=J^<>x%FcEHM!aTikDmpwjlC$>{$H6$P4rlrdF!t12arW&ZYNrFUcIC7P7#c+&14P0`|CZ z=IUVY@?kyFWG!<~NS5=apO+KiN>dnb3pU#ZOJ$A8 zK$%pM6&aFGe?egmELSE-15ob^P0NZ!ZhigYRj(?7yH03UI7a8qCC{|W+#W?x(a=DT zbxU3K^030=E>iEB?V-l*&Ffn^_6maf2w;1?<#4ou%PLK%@2aYFOf44Mv|$$u77cHO zx~k%V3*!4hS@qs5>0<&pIxF+fLg7P1ga=U9@)GvI%%w}oAE^B(#1BWOs;0ni`}37^ z=LV1dg?TYTqj4e}7yxbn)WaBCDL}wz^oA<3ABuRFoCHRtvwr+HFPk!u=7cU3c!|jh zGzWo{c=Yjz|FF{v*q{oc$~TE0(M1l8iJ`gyaUyv#liAd4@rl}a2K$yk`ku#T1GheY z)@hsQZDb=IA^)Tj3jk3deE4Hls#eB)90}jy7s}|i!~=`S#7{DidcB>YUxHXo2KC5p zC_X4JLw&hmg;4}lO}38ZxT~U<@HYzbNWt{*`_vO~2Jd9BF&h0K53Pg6WFq!o!I# zdKX85K)easY?24?O_eS9k0Mz^J3l&=eM` z^yt_xX5E#yT<$?v{lgnL830xVIn1j5{x6u0G@X?i#xUn(W=rv+dl7yQuWQI*Ivu1d zBlPE`UP#L(PyigeKL^baPUf=Cn-(pU#fw0)YF@D5ss#%o^fKl)_NJmDd=4Wv9Q_1) zWtB1tKZ=Ui9Z6@5U(Of$yZj+ z9exjAoExdkp3(I;BLAT&ss6g}V$?fkUpIkI_!Opr>55k@FI*76cS1Dljtum~--i48 z7#WSlhBLdHVfHoGyD=)FQS$7_+@3j6IE2fJ`(m*pi3Ia$@hvM;DBh#)wP&qiJvjjP zT9eB`dX8|sXD7>WC5O^o<_it7t!~VH*-#z#0rsWjO3Lq9`u>mRULdc8#c+XRfn$5z zl-^ygCh^Ok$sfR)T-w3#ir+27%~PTBbew!mr8=;Pe7_ZSOeh3-Q0P_s1azvOoZ=s}tUoy_oPAFYVZt}MZAqm^8Eq30Vo0fTb-enus1B2lPqMc+L z0EfH8Hh9UQXi?XzTQ9ULyEHCsH=Gqzd?_*hh2XW7AShKTS6B1|;h2|_U8rxu{-b$@ z+YPRVEmpcfS`EH~OMcwr4x!{x@+RGqO+!8Ld>mXVAlK#SUFY=iK&PWms8qbo^c5c# zG7F10(^p7_J|RW4zo~iCt~h_rksR>meUPETNuHGOq z@weU3a5dVGgn`_eOr9new@KX|mB=bl)R~2Aa)SE4)0T4eqWN1>w&GiezLughFh%c~ z%b$6BYAa|b7sURJYkXo8zj4uWN9^3lSWGK2@f96~_7ebe&+tWzMk%&gUQasaY&8I& z!@hSlxi&`sMSN!Z5cw;|W=n+id=*z03hU|k@Sf%U2Izxn5@ValA2YzJ_*B+v%%nFi8}0zB69m z=2*0{m2VWat(ZUB=H0w2#5agSJ2w$kmv@faYY6%2WqGm1EXhkPW}*{Hx}a7e%8E5g zZeE*Pk%C4=W@SOw9dXWI(TP0g!AmJYM_mTI+&M=$!eZnZ5+%{_Nbh5I@5)W9r|Yyb z!bt0Z3B;4hQ=<#V<+}QTxK?ZxC70hmRho8J8Y+bd`Epabe zVc`fG7cOWLH7*{v(XSWYvBx8Y3lF(G=m zqWFf1)F!jhyXCVlZ$}lRmNV-0{8f8$au~A$q%4n=!_@Lc@spO2=_4a&4G#zD6EB$) zdp0;>2D*LqDG_VvgvAah{97hAvY8Qz_m$KOE14076*y@t3F|rg|5(lP3Zb*AIHXG3 zgFjh$n#um3p|#@&%p;51aZFmr;+fXwL~WtAOoLT)nKDSRzp?nJ zoSB!t@}-xe0Qt($_p@?)pFv|9=u)}*EJ{s#=Tqv~mI*5&u?!>2x&eG_wt+=aa>Q>m|Bef5J6zBqdH>%aaLpa3#FaxcC}5e!UZk|y1v zb7umiVrcic>VT$yRT_3RyKcZxmiCo3>r?u&qAAfQPDv0;9FE!xiANLk#pHv@qgRoS z8R=<{@A62XD7WSI_3bk*S#J|MWv-n!O|VW2=Ma^YC6FfH0*)&VU9VDs1nc`7N+uG` zW7)*9*CRNYMB$X1GU80lqWsWNsmsAj1<-@OdeUE4#qF&1Wb1b1R`M2YPB7!e+sX4X zS+o7bn= z(}RBC+lqTco>qXlr|Cf$TR!QE;`h!I09XKA5n0oxh_4#v0-|i%(jKNOF+DNJQ7$=m zOb-Mm<-oRKCf1>~s{!vL=4&ioUFwupk&)lDgBn(zWf16$Li@ERk@r;g0khUR*j{Hz z#EouKGDVk%8Byl#H2nf-+BpMgjDSG4h8*Uf|IrbUSJLo$Zv8bI|J(yXexhvKY>?F? zST%=PtY?Dd{-I@KTPJXUa9ztwhhLSdow)XsUsWq+mqd92fl8Zy>NH~Avla6n2{szd z(YwcmGj30jn=`r|v!UH9iL3jY9kKT^hM2|N?UTi2?O}(Zt?`|-DOYC$s!vSePr6M0 zR@%nc^K^Z-38uWaKRI1$m88V_m2TgXITo*ZZ1JNZ$HekZzFE|@WVHA;2^CBMyE)tMvS$-?jCOFs)p}DrVQMs`QuEa9a|f*glfamrL4I3&Sk0O}#Bs#gg|6gNc35tN z`}9=`fTd8gx^;l1E;M(nrq)#300oh&`sX@?wX-Ms2X=w{B$YZDPaQe)IrblVMIvGT z^2@`ANn2cCf>w%3&F^ZHzL1frRN;1j{M7lOA9?gOy!WDi{Y&S+6y`nd4KGWjIB~%7 zwxvHw|0H#P`ea~eUP$jrzY6+E1A!AyT;GE8W`pNm0+SPPPO#217U1LeZCQI-EhYeYjj$PiE^R z0+vjMsJb~&{s~~9t!9$Nr`pJ$^7QuXiy2+!oQ;6K=Ho!g>2>F<5UAwbzD+}h3p1Jj zW-`T}!cqA;{ksfcJlV#O>hmlk&Rj#kdh<=P_|xR>t;;;f>aHJOzCO5YTT+>)8-61I}(9bS$^koKkao>6vlwF_6GWyJFx8HW5k{ zPS;dOz?!_t%f?=)$*=HFVHaW&VgbAnfa#X)V8wUh-D3wOkzIfLTL|IXbR6S9W8@&z z4{uH|t^MZto5OsV0vg-4$fm0GJC<(`L$KGoW${%}vBf4gG=VCt(Ai>C)|qdPNgPh4 zu?+~$LT{%Ge$u$0om{kI)WAOrwaxsFk=RfWip5WKAlsx_P%#*`e|3x+0|D1qXq4q{aq12-rLFE4(E(^hFKbE=}aDH5y!#wN$avk&LC_x0Vw4$>j- zP>+)_7XSQlU!QQU%q9gXvJq3VD1p{D$OrOwX9 z;1QhJBwH000(TqD52m}g>uj?H)(PwkEAmJ}1!I$_D;AO%^@+S`h5B15>Vh_KIk7=A zjWsFkS;0#3s)Z_`CdHmYpbA$)Gd(OehP5SQC1ul~=)o~QAd<+5eJK`4~g@>lGptwNfG5eQ(RK!)gBX@fQcJ@zeO=JI55AkOU9nG-Ri z(HKwB|G?0h`SeCkZest5jbe+ywRSJPgg(R3>iC<_&&#BsdqU)HDTmbZMDacA3O-A_ zvPDu?PcH+7u7t5mLw4HWukcSID*jXj?$HKysnnZPlO*SpK9b1mg40~TN=t&kRZX!S4xopb7<*3FjG3TKfVz{(_a({d&yFI z{R*ZlPsg*DChg-s9Gc*p@t(gf9#Di7{@4QRoONNCav9k$4%+aG)^>>u!p>FmJ|))| z=vP_hi_G&GdQ=&L2?1cpb`}4kV)ma|oSWnbZd$So1|P0=qo8r!T$R%h2^$)XvDj&C ztCx7B0GC_7v9lYPF)$;_F~0abD7%R0*Kp-aQv;_?rmd!gkHhI0rDp1s(Jn6!I6Cm0 zmF1{hb^_)a3%&Rm#VhoaKT%mQbdWxzrcZ(Mp(@9~*!4Xb(`YLU=oPd9Nuswd=9kB0 zT`~F>L~NB`yKxBUf_(F-QTRDwbjKe;o}rAPUmMF8pMfLwO&X3AV)L^`m|-QSzyD4d z-QeK^c+0WSYPTelW|ujgrdLm&e%_23L^(1Np&p68Z5H&P)m%eX=+Xze^$uNEfVl@_ z3`jz^p$$()XpO-Ws)}U&Z`d2 z>?P4Ekk9hmDq!}!tpx@-sIC3&kTK=Zshz9*RZxrGeqx#UznfM^!UUsX;bKI zKwH;jKY-9d~JKTMJUexCCk{4-^JkSrJHalrcqe{9Mp}^5AkwV!=CgsxR9#La+x2Jhc zP$DP2vN>H^w;;f;pXD=mNZKSFCyvP-vXt0R{A5aiwq?`qxN!Ww9L(Kf-uXv#M~t>y zAJ50*dco3D(sG%&#Ea%I9KI;LZQ%-KWShrbx29FtvceE-ago?+8!W#X z9C+!XPraMUHrXl>YXTvBp6tHCs5v=Oam}IYM`Qz6#@A;uUn5`Njd+|c2w=oQ94YW> zHhZ=vJ`>ovg3j3~ozOC4UbEODY??pIwz8*r?G`^r%Sbe!Mr|Pw(tvv?jWVSIEeL4QCDEU?Izv(H=wTYce>_UgM9>$!}-SvGj zwXja2FN`+5)haWnc_OQbuht#W`sNf2(mIhUHpJX7oOs~&3%mJRHNWl5>khG{<|7c& z>dGlSLblOwmrm`}7@i;5NH(0oGy`Bu6$TU^>?Z;*D&f!%zmKK??FDWCepEcY4;c|s zoHb;M-acDAa#M0G+}fU`#AKFsN(|a;r^3PS=Gz|i?MOy9b&#!DncXJsl$!LZPE(iI zFKNHOeOD&Fy_xNAl%Sb&VsO{j3x&Kx<`qCzqDc?6o=bULZT1Q1bMyrdR+NfyqD%uo{EpKPn3>>1F3Gm?j4D&u1` z=f>RZPnpbKzfeqi7~$#;g@xPAHO*_*dPS{554|-aYG@958%^XGE#%3|c|y2Sl}uvM zC?ig2hB^XbP#qP@q_rGL?#(Rylx6!M+4<(;BXaWR=)BlM(DtGo+XcRrZjonIKDs$SPHDpZk%&84__YP)niViv@a_-iP2jnsdl;HsZ&X(ab=dLf?fC~Hw{Z=U& zK=@IG9*Mq-?cwvmrLzVUKC_;OjRg46700M)N`#d4T5LF3u>zGS31fcz6RJ_~%oC42 z_P0Ck;E~(t#6R!4YhF*wW>8q>wJ*6DvX_H}f+X5?+BtEcM@CNFOrOXpqYXSzL2n4| zk14bqkj}d{XoA{lMC5KOa;5^Xmd(54f)XNt97voRKPN>5agz2~yES5qNaOF(03z~h zs^VPUp|t7+;yRJgU~ZMnxhV(&A>6LZq*4I0DC(ES4bG7vyU9LndNz%iCJ`VAvWOtK z9fe?!4~-_Y#CoYDKPBixGkYZe=KykSgqC>HY@~#X0 zySDAx>A#J>5PXR~K;QlIU*N1@OZ>Gm{`-dy-v*Cgs>dJKf3Qxt98F_Q0fRyOjDCW3 z!f<}z0)vYNKLhV^u}}$x9Z4p^9<4rn+ic)qCSVZP3(R2gf!UDyH={4UI+GbL6sCh_ z{_WVO{IbWsU|oQ#R0;g6=iXo*UDD16ZgR)c+14G==ylO(No?>dSqId2p_6xg@hLfT zVe-n0FOJf0$t8DwOnW$^chZNF7F}TFEE5ig(Dlu21z5F?r_+keGnRFcb6$M$MK}v4 zSdJ$rT>%OvILam43DDR<9@OMgAkLdqr5t{E{7NZ~?E-=x30CAP2`^4&4?^X(BuK)A z-#wY~mNPc?cR{F#i3mFACR`&SM9@WYRVqbCdTyL99=tk1MvBEJpCoPXUYq=dSOmt_ z+})=2kfszW(}>;5EaNzRRQ6bk{}OWxdk2@Hsw1Nbk{y zXf&OEKAGgyWIjxj!{-(sQ?!|qCTJeqNl%Lq!TRLUk2nizE$RK!2Ttg0=~u}?6-MR- zXnk$1sNLMUW^mqJ>6aqZ2VOY|Gp~u$*1T+y*XdodVtTXLuXbx<Va zkn=NLq_&rR}(WSrBliKK*er%OgQKMEYmt9HA7#)cs4t}V*{{RU`FIvj%)0k zoq>^fv1!d((%vI?%6%fWD%-TOmjo93cKcLyymp@bKakBN0nzhjR>lWSqc)|~!sp95 zFw0kDmk|Mvua`?(ltQ;lp!3NT@^XR*v>gbRyHp&Rur8(-8B_FywQFx*y*fqLNcv7& z2ZBU(B4hu;O>SB1D!0s-&Roe6a$5va-fo$-U{IR#j0*5c>mWt^HGR{{BOF2)cv7nx zBqVf=B9XL~sTBx>^{s4Xje=4IVAhoM%Zvb)$^nWIg{l{oGM(k+gUQi$`T6kj!V7a} z)G-3wGKvyU;+9KbZ#H&hLvA?4UnSMZuV^l-qL*MfEZXbw0z{0G!5 z*V27+)0S>gdpz!!!mKDp;*iy9+ZqMk*=(1fCt)Oe1KsCbn&F7K$-O7hO&M~u`1IXz zQ2c9wT6N=`K|uITHr`@~At61KhQ?cy7ogk9W@SqY*&PZk@9B9l80?_?nbWS+NJLf} zU(9LrDWo3PSuHBNQ6#bog+?3w3q3EwZ-Bm@Ok5|HxSN=Jvu~#9m$Ftv#sDKcuPHu- z%x*+`yjF!8Y$~%VV*k6pO)9H0Nf}_FMQm(?YgG0ckc3zI9*n=z45={&n8ly@&#*DVGy#Wf3mf)M&{L`nw{$`vL*f$`yM=#_ODu_e&NRRjL7 zQ_(~2PSdxO{yFX3Qgdr%0CH(8-SEZk(OvmJ~Ur2b~sCBGxp*iG~_6)?M5wVoW_;t>wCXf z+rW?U-6UMl`7|MQ1AV>UuyPorYDCi)%)zx8Cx4?#`W{qmShcH9VVD35DmyPW7Mm9X zRj4f4P6JTKv}{-#qOOz z9wEmUOyB*;C?ny<&N_8HUEQmx=f`-?YoT?`NpK9`^r>5XnqEzlmu68ppqW`wyp|~X z`rd%T^C95zZAYCx`UP~y{#0r*`;0k*PtCCfK$f2mWLK_Cr9GgmpKVv$=AL z#W|gO=AcDu8=mn>a((J;+V~3nlBnoEmdBVcOYImJKsO&MU!3Z846@z7H~qHa4A3cJ z)WJp`VrMk88>52GwGLTt6(<(opn;hW+xSo#eHw9$0EMNUSQMXQA_g-51s(P99&V#|ANI#3#ZJ%xo&{ z^T|lN?A-9_ne~Oj$5|MuRQ&7AoG#ku#j0fQqGl9~%moZc80X=r34Hx5mut@}y^3Ci zqqu9*CK{9X0~q11EL40s+0UQ8?6S9Hs_53G9xTjuUFl5HHuAe3x*$nr_6+xcIKU#N zN9~X-n9!O^nUaJ7a7Fc4e}gj9R6@f3Cy=<iQ_s*yu7&8~5g=4wo_nV9(z$T$;)^q{wg<^rC$ohW^}Myq$oM)E1>^BSVG@o3Wey~lAad& zItLVvaYSHM(Rev7Fq)^ygsI#~#;P!TV#_(halhhBCQ&RT0L({~K3R2rRXaXWf|r0Qc{r#i5~72M7K1MHpFj zI_D~tp-XS{YYoO^oh@!q89VicK;X>@|%LN%Vu6S@J!UGZ;{%s|!PX zc2)J0?;sWbAHQo*TMc_yJVn+iA<`*=oS%lJJY z{qW@CfO*h`zmOUA+ZVLJyXM(f+s9XhxH?g2-MA&`U9z@Yq~~|6S!fAaN9HsO^y0=@ zgF8ar^{2%7T5;sW)qCRY`yOA#(}hU8t&bVLvCTNBQ@Jn3$g*d^2S zq`UQ2f3rep5J!v=&E=&g3PyJ<7yg=eJRl(wP@|xXKR2bH9Z=orzIGn zzRe@FO6!}nyuC5Pa0Oz4STC1(Gz37=Hlaem6YzM851sU7VpH_qD6>KuKY3jfU!mmo-0}%W+`8B)v(Ig~Z1x?Oc0rHYF|qE1nSB%O zD#AAygu34Kvl$O!*Z(MMDov)puXvjZ8jE(w(tkM_uvYhHn!%~hWQFZE*PK>%=|5aj z*hz2IHsO2RE+~eV)4LY!F321QCJAWe?#D9hiqa=ZGXDleHqCtdiTZY^rbj#VDtX{swB6rkmj4jvAFsA1dP&>iiLUwNFfpdU+WYI zB+#1|a_&q^JV7t!LG>L@sKtJ}KP8K8o?i<05ZH-@qqf98Y+-3KU72DU$`u=Au`5;_p5w+ z)K%UILsB*@h5ZD~6Z}^Rs<+VQVM~{$$n9hN>9-^yguJ8O(AFU75;wH+x*Q3)U*u|D zlbU^{d1cBx1es&4kWZ}r!~K?ljUH3T?zJXuk7A<;UXNf>YD77FDUfD-&t)>)UT%h4 z5_SGe+Mvs68&nWw9#N1-J=j%f*0gp0$8DQtYt(dh(Z%%Jmt&uH1faq}YGJ6fNlc(k zNjN>-_DEgY5Ve!wv}t<=2Ycv~K@rw`OMt}c)T4p~Ltx_6 zs+K)08WA)=xH6b{q3zFNe)RI0FL& zVj@80a1&e|mlR-e3P9Tf;24>gk=tZpskL}JtOL=Qt3o1ES0mpf>gZ51O}4naMG+NifGPmYT4ugu?I$~H5Q?T~ zKc9;{O~=GSX}u<__9)1|BrQvw0?@>sV+m{u{o*I;^o)@@p`P!aJ8B)X+lEXY>oDo| zIa4N~QDn}{r!$m7X>%jg2?v96x09)jke1$5&o{#6#S>0`{lpSot*~LIGmejJ#Gv}7W?%-)dsMZ2;Bqd2~8uI}2nexMDZ$G)^y z)|Q;ri6S^%Gm=oAzAqH&-Sx<~-=5Ihdt3C5ao&tu6Stpq5}kkSnCNeR({}AG2vcW< z7N$~$D2LZWmqTsSNKwPg$s_W%sPmKIN^Ff;a99UZr$E#r;=l%+7>-8#ITj7zS zMoMp)$zPs`@x#ZTs!5@3z)}vI$g?&=>0+B{7@)v)(6TK{2}iZBen96M|NHKg13gssG5TVkpM07_0)eh*(RCt5`N3oN6Ni zrl3?Vh=EQnIxf(ssV)RyathyuFro!@EZHiUv1!eYhjrS2A{qC%1 zpWOlU%d5z}bhsg=vU8JM>n^u7q4uZ~WM#kFs|<;?nu#WR(p0BxY@Ft^XDtp@a}zx* zl{9OImiGuu;_mr*<=w{QL|9_sCl_W-%y-$ha`X#HeUm0*4;!F_`jldKl35cY4KaGr zjve7I>eSBZ7QJ;QqiRxhsyZ~?G@)j5OBi_cxsAg)uiZn}CckXM_4vHduwBvyo7Ujz+SR~LsM{ajqL9D;6Ev<8MF+XXgp`^>+= zEGaKN1S{vq!y2-(gjybKZEg$-n@pbh$QpvucQPI27DKPTw<6ZLJ)h<4W z%Fau6b!qs01({F)akM^uJyWW>|Ir8dy zO_to2GWZQ$@;d9C#Qjxab^Mvn9ZS04L5bio%-h4IX!4ct0VnCHCu82zL6vpW9Rv zuzDf>!Rs;!^}*{>?cgvpVUIjpx}DmQ@AoCyhVP_O`f)`A%X?PoW;CHlmb?U>Iy6Tz zF>TnYy z!D$l$-c=dv>=qsjr)U`=v5=*wLl%*>hv>>SgJ0Gz?Is`jjR9S=&d>Zi`xf9)R6X{b zrMFaHVP>ZeiEsL2jt`FzeO=hIcGM_x$n1+xOwfJ#{7Jc7kiKF2#9{-bOJH(<{2>2U zRbaV`2W$~LKne}vUcDRcE%~ki#)h|O0}-#eTkX_D;2Jof6LdePaT20dLN|LM@{B>( zcLH=p_tacab9K$ZD&GKx1CKBIhDy|pp@$zBj?ffikA6;(&uk zKKbOHdz`(!R{&6RAWJ^UNfZj8!pQiBdY<&Xj0AKteNgChbP41$LyWE`$WaS?ZOYR@ zaf)lJ;{gj^XaN?yxz=bm*4pYMPf8>(Z`c|%b}8t2uBIh(?JnE+l60GGVs$%DCuv_X z{s)Duxp8X`PbYAsd)3Upl8~N$q38sLDhMd>4iGJ%-yJBdm=|b8Msmis?6*yO$|qs7jV9k zaG}^f4j8yn#oyy$i=*WN>C`5`uCm>osYHu2r2<}k zZm+uOB{MW!&y-}t5h-tIE31Z=hF?9-DNS2L1=kWyx+E`ztV$HwVgpMqtR&KG>VZnf z8?gvTo+>&_1)SV-Cycsbl=1k+c)SCM+6yjQyx9M;^%1iL^p<3xFAmYnDZ19#EG590 z<2qm!H6Bf8H#j!zG9#B-0%s6!TOFi=eipx4VpET^k>HdB2nW}x)L@5r<9jX%PS#Xv zI2lb>m?L;r@nbTis5)?*`7O!2pvx@cffChb+J!se@Vpj@Rp?td-SRDYIY*yN+dz8lM0^3$W^!Bts(#Knk_9<> zPG3-ARB(YM%@xbl#}WXj3;Q5Wc|l`M84Sj3QeQt{)sAOA;atcT-Zb%iQYpscJAuIQsMK4@yj^OQ1kH`_g{4i(TLRjos* z{8Qxskp1Hy2LF{qlENjC zMNlu^2K9V(k65oefCH_U; zbx@mQtRtht)@d8vmR^V3nzpU(bfpyCiX^Yom67}9DdxNM`%obUm9UfvMC$J=9#S(e zDB6~~l)!>IFID^m)WvU$FHfvUG6u>pPs!Fjn-Tm!*4_d@uKHXb-rqUn?k+oS>$9_? zJ3cE}jTo1LG$`n=Br67Z=*Fb?(ScMHtFT4HR0juIG+I21+bM8ux1FJgV}y@0vf z+FEtIK=VSx=D@o_OMnGnjiRY87l;G;9wfI|(eSs@eqe+8kg*Gx$EX{U+fq=7WSG=8=5r|GO=k9; zn0zA%dFRs_xSRMApJLAy+A$pSO0dPZNr1XS#h6o}w0>dT#dW*tuByAX?)HkG9Lddo z1KzMEfL!m39Z0n_3A$Hcn!7MAVD;V^4E z**qJ{eB@fnQGQp_=o!|vXoi+JoCSqLnZKk-fiF3Qwpy#@jw@)a<%2W8YM?m zFX8EZj>OcAPxE0u^4J!hLA2o>rqpz5mZVmbZplNN6Bu{Q- zj-~+5-Y7Ez?PI5|P1gXr@<(F&j+n8**wIE7#0|-$Ib@1=92ujd42o+4AX$TA%KJra z6!H=czqwgKx;hsJ^=T87fG7d5<{ClXex=GWjLG?87fhiAlwR`3T}=74t0si9Vl}V5 z(=_|Q-(d8x->~GWCIE;9cM>-(;D2Hmu)L?7L;yrr`ZIi7H{yYR|l_36dG?Z zq)9^(&mWt_r=j(R;RzlG_~tZLUa0EcV{fMNGyRBDm3;oW7Dxm{UE7kga=AlD5MFxg zEnZfg1u1&1z?X1kGCQ)_=Q}#A*Iv7L@gFj@KqM21Eox=h3>xv4CSlA2prHmj_?W5}b-a-7y&syX%z+EY+m(XIls(dd;U!337D3Q3uB2RKs)R>+bmxx_*d1+bi7EOMo zhp$xe>gWA+5op<)%seqC=8@K07i$BPEDqyf&Z!7%z1ohl&O2z)Xu=V;)cM57^nESL zuT9`r3dNPy9P6xV=_^{$+WTyE9j=rXZXbTGn$~J6Hwi3itvXPHMAhN|E@VRJ#kSDo z$WgKmO8|PT?wWwqaw>BhgpgAfvTV1z`ubk)f^Hlv*;Ny5BZqVY9>{Y+g9i z{&7+lfMUGA)l=W2^=i7wC3$U&CMvaBE)6!GG|kdzntCGhaY8@N!?%jPd6-Nafp?^C znJgN*Aq()1zhpBo0k{}wK-~t-8gA!k-3G~p*zBzmFxTqMFjzZsF!Uqu z)l8mm^l*%P&5tP_h>Ad2Ck|zu{;SeUpse#6l4X5DzGXxiAeann1thFRENK)NC2?Rs zX6o_+eWQn~)d-tIk{M(UkGWw}R$=9VR+&I6r9@!doI!r5y@BU%R4IbVtVXR@IP_u* z*jv8RCXoUnAB41oUVW+G%~1-RHS{dxR1^Yo^5R0khQDWfw6Y zM>cL**UFR2==9}R#ct?drmrONFx`6-fum?6u2TuYG^#s z>6!vE_;*DPe}}QY5Lb)L0!3@;cBd_+u_=6^;lT?Qn1R%>e$ACrg-TnrQI2>aPcyXE zD{#09`%SIQJc^2~4Eg>fjAsjdVBGK~vXcgQEULzi3!h`_;v-u&T7C_o50jz~GbXN^ zAQ<>%8uZ-Arq`j(4;fIynGgN&16gzaQy7~t_fU(=R}yhgk3C_XvA7+?p~4HM?6*vs z-wL^B+k&aKQR0V^)~}>42XY2#?cBMs-z{3cJoff}{A)0`3u;QOpe5aJL<-3KgvQ_m z(2{mZ4TE!9*;hZxq*3Y0R9<@x4~)QO7u#5eU_3sbKUzoibusBeko>Eg*;U#?>Y#-JSc`_V&cn~~-Q*YDnvgoG z^p@)o#xzFHY|8D$4LvfZnd$>-EPH!WH6XXX;H|G%YDC!7#{j=ZR~^;is+ zaZ!W2+Xx(FewKK(qGJX_-mH)YqTXK^LA@W_46FexQe#ZR*jEGljt-6mpWy!E$F+*! zNF7J(2qDs6jF(pDU${1bL&qQsL7oCF4QfjHfSWqAeEQLgpZwv66gidYgP}O#f@DS5+PoTO5ikmhVt{h-a_F4<`{39?b5{otcs|uriX-q+& zX7!M(567)p@w$n%4XUPAm18}^B+I@mECtj?r)ykwwGBoo3D&=jnG1mx2!WEx<1(a7 zGiL6ZA)0(^5lO%mFfG@NP?Gi7LvSHS4nF+kfiC8iVmzcUa+^3tB56_7%iR+DO54nn zli1-|d4jnMrN&@Fq<#6kY%)oGg`8J^2W6N7YSCR+eppVXZ`;=X4Ve{Z;%%7@sQEoj zIL!ByM4^kQ)tabZV~%K)+7uZGOdA5YoWwjdqp@Xbmrm-I8+#|e_Y4bN8s&HwvsEbz z)TP{Y$lnoVnZFRCFk%Vt=9B74AncCA$8Z85NMavs@?J6DutGIoj_Lg9%n?6|+$Ipe zitu<4H?qhw&!A>0X!VuI0bp*PPd;F5WXimM&ii`S)s&$89WfdvuF6AmW#JV*B8a#q zyFyI9WY_4^r_JpOG0NbkQhq=$yb(;Ydby?l@bqDJ1sqP4@;MlTX?Jo0cWtLIA9gfLC zfCI%nb_Bf|>)?`OVhxcDs|oDl`QT*N0vUjZU{J)yr(^Q=5g#}j+^EBBV1!SFS}t4> z$kJ;8PY}7105)alxMENY+Bx$Igr#ko&+BP(0 z*gCMnZO^zo_Fl&gs1Z5k#v4sdEuA)6r&0P%7B}GwG%ktEAd<;A=7_7qb4mip7L&_o zrqxA1f+_u}%R+{p@m`)r=ouC=SVXXJ=Rjm90Zm57yX_Avr83@ zvT4m7K*Dn@&0{4I#PWNRz0YH%%D~klZ)>H|4OGBl4S%ttqbS9TVy!&8HhBnr}-zD?HmWHlLey6f{cTh8P&WHr#e&Q)=ou=$rq?a8X;AF8}u5l+q)yuamn@9 zodZ0?dFDL5rB4K^}@$=6oR}>{GRRX&CJX^C+c3YFKLEJ0~)!MpH zUPN6ywynFlm6;JH-C>e=?zR(2sO5r2rj1aIAJJ0RfLU%V*_qwnefL81im68pW^C_* z$s>{_R!xV-p^by{X#woeua6m7(F3&D$3nF#l&}@};JnK08Xi>EQo&n1u(*QI)YGr-+JrDjm*pR%Y;K` z2l4vSO`{MaYf&4L`5S0$EE}KFup)L(JRc(-(DZ?D_Ltd9wzjric*$y?At(o}*ZS9Y zHbgJIeCA9_$}GiAIw?M>V_pm>`u}vIQ`xBWNo;nuc8{Q8&xnhtgn&VqRYcc4ft{P4 z4{+=?EW_u|OubO7jlIWFERR^ zXiTsv(tt$bGHhF#<9o+T`}d?*K-=Kugoo!7N3jiuCQb9|Q@LxMfNZ z$``@mTxb1)FqZtoD;k;qemz5WOwou7E4_ds z;W+1z`<32q1JoU~iAl=lDHg<*7`vFmPIarwqiSC-?p*BR!ZYpDTiwbK5YniEjkl%A zV=%e#AdxCP-NxGYPO@;7@V%u!!k6v^JMB68B)}2e?8eo~Pgtvsfqx%_F}M?f)~nKZ zxvcK$3S5p&K*k(cOw%e=*$Qk9@tO{Z!A7k^6eu%C>@>R8oucl>3zP8f6NA4e>4wfgcuAOtbtLugU9QA;<1iT*;%eR+o)buVffZrUH zn5S`o@U1fCnl>lIQ>yue3wAd+PH5oi1x-_lHQc;lrY&rnv4H7znPOq3ThSI@-%vld z8NS{!^JJ$v(Wb!9ksBN8XE$;|u5{XRrzL?;3@6q#I!huol-TI*~qSW$4 zc}GW248(-XbYq$Mz#*|qyiyl+Mugc<*4mgm^ahj;0)aUqCbt^wNdV5l)Tyy&oz&B1 z;Hh}J)E>90wO!}eN5VUe;`(~I6{Ob}NJB$ro*MR(7^PmX+@|#TUX*%DM)(eW5`YQy zAOI_OIp;_l2HEEoDWf{Bv+9#9>Jht-%~qt8WqbiJsG02OkEu1YDMv-lg&BzyptnBEkCks&RgX4 z;`e#bB_E+W03t`hz*U*mFxIPVFMrfPZf#?xHH5?Tn)`OC`~xPgT+T6MDTg6z@T!7= zcdwW`cWZFUfEC8SFnJ5l>eB-*(mXID1$yAXi$xb$t^;XMSJZ*hOvIjx$CAnV5HLQk`)N>cyVea6**{0D*iUeq9M%eTNTzrX>VutlQi50dY(i zSkka5D~qmZCVP_5N^Ma$o!#u4JYZ@u4NQK!MHx<5_(rig*2XME0#6|;dY-;@s%ZQ^ z9RDL1y1LSUl@x2!J#JsIT>;~K>R6Gy*`l!uflN-I)HOgu+LG9moWj$Zb-b`N;1}JY z70f<0Et3eVgGw+?!xP3<%-AgLI=e{#)QG2cOM1?3g!clcG7mD3nksM<2q?Jx_w>4i z)}l+@u8deB<_m1fz_bAv`T?c3PgEVqsj34#XJEeD)RFG!=s3`^d8eblzsm|ZU41f_ zHSah-H17mx!U(K`MA;dp#$BJm1zbD169pvv!)H^_a# zgje6-mVn^B*y&@pqe2T)n`TChq!3V6bOU@1@A-0Q)tm;|@EO=_&i!cl;5xHm-)K-W z=DpD>Kij?eX){w@MQe^;*B@U}h|NI?0!lux&E$>hm@|$#&mmhK1W~{Pe1oAi8P{X)#Nn|^67F}gZq?AZ<0x2BQ#7`L3QjNa)#eO z7z$k*2sAM7l9%?bUQMzvj@d4@@I$N0@5rL_ykaZgK8fn0#CBkl)MU)%TWNiKLbP58 z?6*8qL%vbpln)BUPMM^ALX6TlTI?c$jxYART|7|D@e0-IL##zshAjniyN3FGvj}W* zV;dWo;@s{3lp-M&1qu|-s)%N@*9cwS7!QSc4+f4H+@nbbvI3{gcbI&OkAFW&P zuM_uE=JH?dNd0)UyIYqFu01P_ME#u`mw%XhU=C+G@VWeVdvJarU`eO$F-=+5B{uVW zH_WtL2hruXg+Jz*PvlL83~D)F1xmgobi;YA&8@Aim$d$44*Mtk8`7FQXEl@42TD=k z|I+akjqxKQyE3V8NJ(3xHKF#%eIZL`=^$3{Ow%`xo7?moc5Uy1I^Edm{$ne@oe)7* zs&$*#>1H;Rz%{}%itEUQx0n{;`VRyK4Tt#?m0=DL`8QH z<&Dt&6*mcWhyQkK`uU7lp=|ZgQobd~m#!{Kbv%pH##f3dkz3Al2YIf51Kudg7qO$u z-+gC{{c>0^?$SK*^Gx}_p(@aG!3F<)MXIm!iu6P6tJ;&1ROEzqDk!!0ndIia z79|KaDJ+AZ#6g#+%naylLOw_80*@jk&oVQ$5`!P;s!}0E$VdIDGNRmI$fLYg_T|Lv zgE*#)vlTTdHx#rVMTDZ*WD-L9CBRo+F;mC&8Mt_On9+COX0e6~h9;oY%sw#oqyMM& zBVf&HjY@#uj+!2K{zJQj~XP8M>RtIo(NEqr&APoRNjVm&q!c@6C$UZ7F+ejXVCk(b-kpyN{%77{eV zC|}NF?!sapJPx7oadq5F-ek;y<_TL&p?0;Fy)o*~kyq|z$epLNf5LuXHppQc4lo$%hcxPz?-n@Nb+<8 z?Hb95u`)ASm+1k6gB&CC!D*ZZ4x_RYV~#AgM=-I%V+#xFB9+^rgYIHkSG;VFQ}xLLwq^I_|=J=9R^J8xp?>Y%v*^4&DD!l zR6VV_-Yr&%Y(lkJ-H|eh3<6^+s@8RI8)_q>vPL7Q=&IQfQR*P`TI`|Nk?r&;@P;&O z3WwXDX?^`2V10cJV=Iot3DTjpz+Gq?Ym4 zVCmdy2LVgg5UcoVae1aBxqWY}tT+?)~!1 z9U-+})FAc}OOq)gZI-q(e=g~x9r`YPEIP9#wt4e%f7r8h<1g;SG8?&k3;ucFn{UdX zbxX}0l!m&O|8fzn;m_MXFYRFt#ndSa-y*cNlSEt{hj&HRw%WyLG~|px;xfIXV?i|f zY$Vdc?6sQZ0fkK&RGJKFgGHZB%9|F=^Jv|37rxyna|atV?V830|HCQr`!U}{6i}yJ z+%dJ(?iPcHlh7K9b`y!w)uj>W`I?N?RG(7|bv#Y7x`|W{yP3_)=@)q5gj#Hb7Ajg zsYQjtv*?V)Af0kpheT>&YIS)BQTO++ER{a#>N-2+S-L*Xk;?h8)hC{1-@Zs>#v`}u1>{SH-lLM7AbVr)M*LkA0Sy1 zj#1kdf5fW8{#mZ^0`CZ526?hTL^b_%qtGF#zhsHSZwkphVw>X@fmzlew~DC;Cr)g> z^9=lp*%-VR;#Vu6Qy%{r{)%Qu`)jmZIC*q@g9J;8E&(6<>QbSV!6m~b$NzBIakVrDuSm%5d>+= zMu!tCF0>v1rR^hS%t}q{9CkMAYUq4nUSA;*##jHN$iI>}L2YcLn57Tb+E-x8fgBne zTWtvAf&bW+C7N`stvj7n5>7nGxaw@-1^x|oRVyj~$j`#BjU42WX4vs6F67d;-tr^S z`*!RIS0Cq)Czv#mwt5G;jXCEsW>34&rUnb4GCDiBO)02owR_1K9ROA5(;NwhE2KCy zexMO@I6OH|DdZY?V3heh=5Rdj?dUl8`R88jkky9;W+na{tuw|AMY%d*qbrd}Fn_Bb zXyCYu&Ze|=V4_cG75gT3GX~@%6kp#Q;9JC= zkeZw28(RE80TXC5@mpF90bYdbWj5q;q2}g?lU%vQfYdS;6TkQ_@7*IJp`Wkdw{XSu zuOk9E*J|ZSgaq&gw8_fV!&9Me>gVujHAhPE)IyG%Rwy}U^}yDLzxl>X++T$WC(M_K zojOX$l^ZyM>wT2j!;$mt+A1{#i;0G~8L27AEqT(`!u+9`x!X@&7k-9$DSyq4*JOnz zL1NdQOH-OPFYWIT)Jr?>d3*Cwm2Zwy@0z>uQ2FxZ)R)YQEo)9)+02v4sO0vGJD=4D zjF(eFTUIa9CCt9n5}r`S6VUZ~gO52F6>>RT9%WG49%*Uu{leDx88Q7uspa!15l9XZ z;qMxf3OJ6EP#upQmisN8g5XgHwZvu+8|p^;0%0JumPUwAp@ajm2GkKD+F?Dg*#wM>YCv-O+%w+c5a@%;&cpSd@`U{~dwTpUGC#D|FUbXM)qClnOWOnSnIQ`$J zfBF0U5uRQz>b&!9W_!8FlPQH=LbaSvXnE_}WdV)<>US!wW&y$++*O7!n|)bV*W+6c7<76!kM>l@XX z$F&>DOsELe3qnQva)^1#WyC={a%0%t=N81EHo><@VmZ6${f^kV7v(4!FMHmGJ2ROr znY(9mr`=xsDy8w(3vvRRyC`a2e0Z1Cz&riW>a0~j$QpTLZ&YgLrH5PP%Ca)E_y<+<@&z7)chL%J!p1l5-MPpr@yX58H|)OsiN(yX3QHz=#STT|f(?CS zs#!!cPeso>|Ew6`P&mcw_ja)?yf}K<%L=z(%?dqz9x7G~L2LO+Sm_a8@iR-wsV*hD zcy^iD?cg3qw@Sy>qcKN`RPvUe0C6f@$UoW&@=LxxA@CAfuxx zgCgXo+$IslJQ+RXyfb40NGpri!M4fjbZ|jlhK7Qa9iMQ48OTEvT;atp_Bkse@{gWdw#e7Ih0v69{QQAb2C zr^PzA6(FK^pH4#iLlU)wG!wD%{niV5>HHayMaksjspiv8Pth`7eEm}955q(yz!V)? zI-W)ypV1;2>&Dk#SC`8($w6i^Y3T-5Zn;`2v1pZ97jU+_Qc{Bu)q9@pmfEBxnJv?0 zTrvfbR1@ajrf5k!0i5E_g%z}N%h#{p8HWx+{(<+)=asJ%xh4$QMYe&7v-w&{TncR2 zUzYo5SBu(d!i^P~>mxc5b)<906}z&05CBM?x9z;dKXS}qhD^;&$ad=mLkr?ksfbXt z%p(IpjSxC|6^k=W=2N2%p0kKlE*+)Q0wk^=Bl( zb;M3v&b*2nZ)y$V{qi;H1k_1ewsd?#W^VrSk9Wj{AW{3kyFZ*;zDCiuz{S_{9MesD zTc6ov=}(E=lZNbK`|za2!1NfE7=(0tig9%wPLXTMG3rxR#rv6e|ABM+v<#~Q61ult zW!3Vb*CWuHeR{Bm|LWYaduN6(m(z)JFFXfxO&9FZlVA`ueji7UII_|ka7#E-i{NmAF~;hDtFfQENU zYwOa6HCZ}wa?8yjv06$u(o)rU*l3>>Q0n!5*l1=>vA7KRp9Lsx&x`CDGM0ICMYLSJ7O8JqGBT_YqDQ`$hjM7%VLOP=;GKYhFGsJgV z9-VDA1f(LXSZK5~8HLohshw9|mJ{f>om(%yAo+56i@?a03pzzA{)6 zXl53>(Y3D41u$HC`TxzRj@&I6_C#Y^y^*!F3wIcAtDg0tC_*@L4%oegnXI4G93axi zhzDv9^vSeX>#~UL0-F~tY=cxUr^eb%*(~%lvL_Ypu>8byv?{pCr2Pc|ALm zWOkE2qVsAa%qx@5f9N4%nR?-)k2VEdy;(rUXP`EiqJ^8kdIN8*H2>gxN6stXE^<$V zJ8B!AxPY$`N5wiJ^=^4OZE4ZEtzxlVB(XU=_2A#Wja{&FTPI$_{yXmIB^ytBjrj=M zw3H^swC!rUthJ`x2vo1`nC8Mb2*@1z(VPO zRM~Jl1j~&;1o;HbXDh8}anr}>CS$qHmFA3aH$f0tB|GWBP#H#oYvAB&HSg-&*=s|U>Mc|enpNd;N@8y7M>@h zVqQ#mdOH=J%0v&%@BJkxA9d~7d)3xR^uj&YUsXPpuhNN25}35 zluOnp_f8fJUY))^u67uCom`{+D!IZ1&{DmQ%r%-Nl++{Rnxk#Zp@xWofcR3N1PUxI z)Wd~6IYRZ`bYTCkI5%<0{#*B#`(*)rUK><`Lc62C*Q&9O8+a0`2871BTu zCa*#r{X?%!KX~cNOjiV0MLKfU%&9j#y|VPjlAlq^#6as@ z0+;~2_{#1_;KkQkI02waNkVSK?thI;99_e|eG=&79)uJHHt0`i6Ufev*v?<}g3s>S zb@mm#z2)sVI`gxq;@Xi@aV2{y2r+2MNv7Jd04&BG4IO$o6;zR|Ppa!-3d$)F8SDGY z8>yH6{S$KMijfl{rN^ES)J}gKu1JOZq@pB_`Vl>K!*w&Tr;7)X~Xz6 z-O&5)TQ|jA{+!&xOk4l<+o~*ABA3Yp1yEg=i#Nbnfneau%+*n)O~*}gw3drufngnq zQAbvpEpYF=Qm#23X7)Bji~#kfjk(M7#P~(z7iVp52W%jnzvk+^fs&s6%!L7oQ{?=` zJ*(_9Z`kYt+N$9BcP${s!k#>#Yxi^4z61NpeSl`lYC}r$qS84y&Ze^V55C3~bI!YK zMW;=q0nl74#B`aQLFYF~oY{4UflsC3=p!)e8-T-#x`0TpS;2g;yC?32?fkArJ- z+IXIT5}0Qv9=Tmny8p#R)Jea+uX`^}#asixy?3V-Y*S7I%{;AO+y&S6s%M=&NP~!7 z_o)+z1+o@_4s?uk%AybC?Yvp3RL&DC1^t8OsY}|i$`V;T&8pcEkh;B!CWX)UEx&2e z!kKQ*oF$9;QmMbHM9TIED`0Jw!|2A+6!R#>6T;ZBSU^*crQS(3Y8wZ020kd>+UKmJ zvr{`10BbqBL_8jo{M4|Mc6=>6aLD;J1qmR*#f-ez4 zT8TW#EiAPL0-14=29gmrz=d@K9|6nG;`U%0a3NWkABLdSt*NCXwRH3UzPUu33tmv- zBI@!NXXEJE#{=dmi`#)qn%A*(x>fV^IBUt4Qipt>bv^XzGHTK9AM7F9+I*9Gq2<;+ z@h`{ht6nD>6dNl0I*FX!FV=8J_f^4R_tgda8dR3=q^BRbSysINC3auCXt%a>st@t@ z&INs$Oyh7y&4=Qcv1>}pur|Edqcs(}uc7z?PKqny(>q=IRLU4Ir8}9){@Nz~OVGS% z@d<9v+@(tg5{bX6#L7rJY+|}(R`}gy6<}{EzL1mQ!1u$-PXu@N4y^)!)Zmc{zBEPYau}kLG=?=&}IQ;=St*X&S9VptD?s7p0VeYJ;9@)Hqv$+Ut0bD z-Q3STe0UtP-o4qc7!2dtb*Gyo%4c%w?nVs0L!A=}lJP?vuoeS7j~7^}b(31&id-J1 zkVq)y3gB3jq4xYAaR9dbyLocbj6Fe~PA_!LTbFK>^`G0sgI~+H?ncf160^yI*2bUT?9mw{{e>}s>UpxP-m>^e2sO+W2=lmDGSoj=ki7nRsu7N z-2bQD!FYyli-ynG29;ZW_Uu!x>6Yku7MB&O^gu`BQE=2AC(i-!RBuSJom?qm7MsYk zA|?hJNB@a%hwkjq`yDbM;F7s~(;0z5rfh2wD(PgwtZep^$+=8+V?J9TpZ^C#pafVI zMU}5S4*Dv6fJmGLn5$!BMcP+Merg6|lrf+x3i$7)6h9vYksrt)b2pjW5W8}JA3%6x z>(-ofUr`J~?N$?4Atq9%jO%IurV|Sc4k>QTX32znzRdg2+yZh&jyxOF+I672CE+SG z#%%clgUr<~kaM~^R1JP|E{J_}F|Sg*|G;sV)M;73cb?5pj4WGKx>}(`KGZV21Z&7g-B8At9`-GFxzkrL2`(^|0!gEWmfOON6 zH01D-tW8+{j*Sqz?tgJ1b<#8U^ssa>BBvPmg$z&4I+Ss1)Jb*%7lT=!?oD9!%u|nYn!Z6ZE zPBfdvl+*`hAxKZ}Y=}Wwh<@*@ufAfQCmWgb=sM7IXqe>?85MJ!! z>ut~IzVZ=lrs=L6(jmR6Y08oAZi;>`Ij$@9w7-Yf&|Eq-OVGLuyWYmZQ zYJi(cDQ#|vBa%p^SWl8mM5hN=ou1)>-sYiJwaWzBZ6?R|su58cUtQ&0WZSLNr) zb4Z`J;e1lZH~TD`QW z1_tUE6gcFswDu3bI{n~ftFqngVl=?k?5X>nUYWlzN2aHSlMsk78x_sV=X(^sh06+R z_vB%_-adZH1)_RY7Jdq>sT$Vw4QP{~*+mD3kwp$L-B>kW0U%=FU&z72{Je{+c({&8 zrR)gQi!~Qln+Alm5>Ii(Ua&526wQj@6xKX|O|D=nDe^D!B-1&w2)$H^m{;OSC1Szq z^ug(zq3d#&wQD>UevEH+onL}%T&?8uxlpl#H8utsRGh=_eq8=7PC}5Sg~lyAdJ${V zvu)i)1=qS>jMuxD4d-&#WkAm`XovAYwVfvd-L~<}=b2zr>*5n9!vxC4ZM3Qs>fL|q z-kq`dCHrpKSDqrQS9YoZp8cfK*+0&vwt>rA_ww~KJ!uaV_Yz(9*|&doagolF%Z%wI zlkI%Hj&B+_=TXHe&q41HxIiBm55Lcq45Kyj0p@KJ!}MR8`3LpSR!wUxYV2?h_EfW> zT9KRgc_e_66*-=alH<`=+E^Z;rb zkdy!IIPKiKRzj6fqYye>LV#9;m0G`1;>e%!P}MY4_-ZT1cvN9_0!t|Zv+@7)G5#MT zHSD7E*>)ZBYr$a#raAr>fK^N}uwYlpd%{K8mAkDt0 zNNB!HEI_*;q#-!7dNh3M$&WuTzlY=T23-HAy1F)Ws;rzGZT>HSKq@+gI@PBr=V~D{ zyMI^uaXf~HGpUAn>?t)IPOP{OzB=vJOIM}4!)Ok2*6b-aJhdYCUjC1H^4z5br61Th zU2`+arnxSqA)PBfRDf~JZ6NjY3>J+5>-N^jsD~Ex8k|s$uA~|`No`$}4|=;|=W(KkOcm+HA6z#Hf33 zK;e|fp+k9~SbVjhXaiXot+1s@wx;#mE^+6k2rxlG<7-Bd1Bw?CFdSIy7>VI-Zq+zU zY_a1)h~Y#knMhCz;p+W*Aq^oibylGOL_m~RU0=%RRi=E=qHI~>QkwFm=gULXUCcKF zyDv=glnQQS^Z7-ktih1hgL;l~OelBD^7!S zMuer0>w>9VjL^=5o;1>}j6`W{mDB}336`>2U&YL#7VuW5E<0Dos*BYJF$<>R}lOtx)`3ass(CYLuL-g>GL+YNxuP&h$zVzU@ z{q6d~fESooJmYekf+D+J)*^S*zt4}JacZb>!*VGfS6Fu&2?MkemC`3V{ocX zr;DWm%*n);c&kmOk#V7Y$(3tf=YgURze8N_whIXNa#>5VGpZ3gCF(>rq0uDL2`y-# zYh&p|i~RCFadffGW0=nD>0~~jV16~p1uZ@58CBB>{YC&kY74`VsbjSAJGK_chhWdh z&Jk9k6%50%BDkP3jfRE^13U~uKnJqY@cL;gS&3an9WBku1)zX%^-7Mw1L0$w5`-*= zy{cfH0QC#P#_+d=T*I71Q6(BIm6+GVTB`M#J7;hw-c&fyifLp7I)K|C5t2)Ie2&P3 zhRRs))q?upR1yGYZTSAx@%R>ignS#{ee)!0=(=4g%J=y{nB84n%`Gjbw6uVc$`=@C zCsiDqI!+ZiR9U4{MxK^C270Y3^rO=cT(&CX%loAULAuY8+pzD+Mb}=NVm=}JZ@lrw z@*@JRNt%+Hp%phje}H*TO!dG0_S4`J z(vu4;HVFmjB%V1LVYW5KjL-@q=d^KCTw0f6hGPQ>7^(SZ>zY$nH}jzHp4xtK$}%vp zslUIS`5n2ta8-_w-Wv~MlQzC|%{l z;`Q^TbTp>c`LIX3?%_W$KQKoK2TW8L63R!wJqW9jA_^&|p&c|llCrD-81!b=blnQj zr)pye3i>RC0|wF9&tXl{h|>THpJSfaMAe?hhL2;Ohc^Tr52ow2z6AR@v{GOg`8BHr z&-?iX)Ja}byiM+xwZ%Sawk4#k(irpPxaXIVMZXy!j-+E~*xl$F?wyh}#Z8Td4kGkg zl3|4(7#}`s@eiol#ld#w{oWUrQ460QAd-}8;zVzwcf!D&q%m%6)JMt>(HoAO{~3^s zjPLC|VzHOfTC29R#N3a}6%Y3bbz0$&M6Y{g_|?x&rB3{c)i_5Yp>N}?Ke{bP8f)K%X-&9$)q#)4xFgBcj`2T z;#{B+@+ljX0e{wNpWv+5MIu3bGGD|YT!Uw@$E>sT4NuqEJN5AFbCYL1_SggE=ly)W zS<)ae8{g?L3))sM@dZvkd{;&8 z+jjV~&*rvy&kl;KRerEv8~v*Y3d0hUhy zF7rY65DtH}}2iRefE@(H#(3efJ@vu<76n~S$@ZTsvn{zYvp1bU#;&vrSW;Xj?H z)QLKk^^#+{90$S0`%58-mThxv*jMrKMOY_f8WOVLq#9`iN={Z1tzK{hqdp#w_;HRi zdh*)QN9%LDtu+2=PkhV*!*nw)hbUixb<6SlwiH zRtXn^B?o0;l}ZPD=fS3cw;P2sbmTdJ$1lk~ zW|p&K`?W)4?R!&5Yf-Avq?>5Dz!Mh^wLzSh55c4v~=kXo`}O`zA;;2v1K?r4D=gQS=@Mr8)rGGyn2y00vl#>Q zaM%!qEgkTo%kQc*rpI7@U~@-nyvMZ%JF&1$kf7jS|5_6c@66@gZea8FaIZ|!-4rbSD=0OI>qW*ZZ@Ot+w|WR>hc&#=pjL4QjtGp)b6DF^;7P?|{^tMF zE**>=W*$wxK<2+Qz-*(Y%k&YALfg@K?X@vr4ZlgzxzYzZlU(P#yHv)AMy^c~V4jZjSC~I}YYi}`|!1+MRk1AnVxCA1xm|NgW zBqG6@)J;=4!`Ef6Y0!-J?oV*C%&U}qBFdaU? zmwFHkb4d)aY6th12ZZ&CxDsTAUQ#*+`>YyU-_VQeUb$gbS1T}Kv}epG9Q^!}3>lIQ zUkN{7$!k83`4U9N$q!J>!2;9AjHOxb9qut%Ju5xDrX?<+8wBiwbL*v!lbYn7X?B%; z1~sh{Cj4J+fs5oidN;&Q-DBK9O{umY$`dD585GvnZ5nk3KOftS)G%>)u!${1V33R6 zptkTB0F7kf?Bp@*68^+Uh1IXZ!ccV~WTO=_UX5LoE-`n}laAc>Y@bkX5DiL-eCMw+N3&8J4eg7 z^I}Imr04=GOd>s!l4!*dp{~3Pu~T1sL0J%r%p`C5khqw4<^*^egQQ7pG<=z?7qqWm z5eTl`aD?LWIdRsRXkxM6`E4z&Vl6M9@bxXFHbh>E9EhGHQ@1FUs@Am^HZEVIkS_Krn3K~P(ReXtjZ zt&EP^Mr82?_s$}Uu_n#h#On7W5RkgA7Z5Ods}aOKxJ2v)WRuIzv$?H2$hn!f&GlVb zodvu;a|l6BTzc-2>!0X{&=WRPuY11xu{T%HOaJ)rI9}?eX=Kvg?Ca!aX5gW|zBf9| zoyMRsaZZP0c-R$i4UhXeXo|JTL-N)rA)U(pC20x(Pg72REMcC~z)>oBp#gIS0Nc!v z3(3aGBIcJovW{8#Y*wNJGAErek@)p33ZbmA3GgzpPJ_bh%z_m*h?~R)-8&tWEXE9s zhMQa-rvoIJXv#thx$Qg&=aUHa2)xl>l)t#2%5fLGE+2aQ;IhGq*LmLS)tGfU-%2YGwml9Ye{?JAi2IcXh9V zZ^N_@ZVSd9_!i@3_WiM`KPoExs9kwnZkg)7K!FXnkT-U67Jf7u+tJBc7M+OWIHQxZ z==OfTVRGC`GYS0p&li%l%te!*etI(yo3Gf>)fH=N`!vIqnRL)O7MKnEA!6n+ACe)U zJP~O{F#N~+HZ0Y1ZBVgNig9k1V{t;=&B=9mWDsr$VO*A$(J(p7_0l>$ZPTp2_Y=f8 zw!uu~pJJpGhdy7(PKmg>dYG#F ziw$8^VaWXQ%Ir;czx`TTV$T|+`nV~yRLYl{VA9-g7FkTpO)(*t=HLje{o%$&|Caiu zuZaC!jh+ulh1dc^cA^*B5(>VWD-Ka-W*xmZ9lY_9Sp3o(58PND5Lgs(MZJ`~Eq9F{ zgeLmngg?xZ50z*UO>G9*Kt>el^$C1^&l>f+b`m!Ty0QQHazQ@3~)JVf>d_0|Xz12x@JTmYf z9-Uec#e%xQo*zt|Xw|3F9j_i9A3rqO;Cw=9S#Rp+jcb>1WZ?M0geAnMU zuUn$ynCdMs5DkS`x18$=@f=KS*YDzf>ZPoo%OIkOlBo=jp4@?CmA(eSO5;*LUOy^vV{K3n)eT z%Z)gxgb${Rjq%gWZeaRP;Wtw{29zzFM&JKPHD=2 zzZ><2o&s<1%jVt$c&nW1dBqd1$)jDVhYtz~$aFT;ClsBH5J9B3EiD~KK z=)^R==Aipopg#7S0a@TM6go`xoqB_@0B5x0=8Jz&9F2fl`b*ulJpvqrLFE-cA>k1DBrO!dED{4eKv} z8I*ye&%xo%!2Y7K9Th2H*9hisKz;~;2h}|WcLsGD{Ku=m2ws}i-+zD4J)GBH_d^xo z>Rze0*~&K}Y~&DnVB z1#6DnLgsdT*-c&34ad%U^fhqSog;S&^~0S2YsLYIk#;Dq1STXE%n3r9xwT*Gn9pKM z15YTWg$lsMYFx-dMaV@4a;_9Gi^R2$}i zr<7H}#5d5oBcHa@h9e(;Le-bw(^0na2Q#SOmZKl_^-Y6AJGED!2loK4HQs-)zT82Jr3-bY! zrgS$nuZD6nU#;XMw{49NE3&5sa2-5Lh|Mqa1_J=e4~4uXt3BG}mVj2E*b!)jHE=*V zVeFBvZ7J%9R3(v*J>Ip*$_J~0=M8JW+|kvbBefu`ay?<#X&mTH{85Roelqn!8F-I+ zdmk+tdi}V;!Q#!d^2iq*wED*3nS`4iM3Wm>G$ zkj0%#I#165Nt=ayq{wd!K~It6TX}hbsB?SHzWJKg^;=F0<0>?tymDzHv8wF-7L8>f zq4f@+`f58g_N`!s9;f3_=o;ImNI=PaK0A8~v)vp#m`xlX`x@At9ecfSLD+a=B#1=v zDOeczf2{OVnrZ@J!kQ5teXrILBy&Z<3FrRyA{gl8T=L@9iH%}n%}HB4aKHuL5VSrw z0`d2DE?LT4ZpUsk>9{-w_B&oZ-e(+=T3YnZtt;&G>t*(gA3m|xS>zMHyA|fiD%#c`DN{* z*|#PkgrK9>{-QjWe4E=q;tr7xUxR{v`$faEiH*7pFSYw4**D&u(5lXK! zdFJ-kNGw8i_f*tpYno{_YU3%`ebcG?fuF4&E*)mlS3zB&5dw?2g0oa=j#V6YnC>{e zxB?X4*$wj$Vg+4-PlORwtXJS9%80Lg4?oUkm&HYmwQTTyjdt`aGzORm#{kXgN!tEm zGWkvc+RcPAv8YyERdgXS-<6YyV zhUl`%&;vYfj!#Y2Q{C0XEyBK|9eBi}|GJHf7vHjQVU%784FT7!*6`+S%}As$&x({m zPL?3K{K(pws4sO>@?X#tFNOSRU^HSUv3K#zE(^nU}d65L!qNHh6xo_%c@D!;UCdAEV%=~9^T$E0)LSyNJLM*RwocAYn zY5K$d{;Oxq2*Qv2n%-a7vvEliPod#&W3m=zm6l+BU_daD#| z5l2=!fz8-9R};>LkU$(;UB?2o=2)PH&%44};JxREq&1@I5WNv#?_~y{r!0q07(HNFskj?r4sH0T03LJJ+}J zlnR!6>G`X?Xc1Lqa|rk>Bx#W1Xt+Q^yfN@5;HbT)UWU$L+>*nE`)`7~&j@mP*9Xs| zwft6t2L-{<5NmjaMTynqA>wjs8F3M{npn`K(5OcO?FG;1tK*6I)MDap>Q_aS$OCgb zzabE866%1<2m%%yO}m@tjzpSxftZFE9ov~iFHk2<76FeXb4q|cgeM|w3F>JeNE@fC z5h&Z-AoZbijVk1Ymv%5aT`cdkp5f2|2s9Sn^c;JQJJg3KLqN((dtEUE!}feHb-umG z*R?@IiH7fOk-(NKb=tlRY`G=o7D$Bj4I@YLCqgbXEi)U5J9E3Umu1oC^yBU4uU*o_ zRmj+Z3onbIG}Ujj^Z6`kJ>GetnAlD=k(a4GbFC^}9QzGXpkg>ic9vIQgyL>Y$57HI z= zPZ3L~Yl)ZLe7(sm^TR*@<4r7=B^j(1>iEj`pcWK-23B{N@hOB5PbsygmAGawV=NOx zsW?6mKRL}Sg_iRA(hVq8d*PrzJ{5up-Y*qX>G>+4uI*%37nRR{ zlc{#_JR#uVRq|n$mYA%rvvHhltqzXITRkbL8kKAbje5MkCK^z<4Abd$b2g&%D>^bX zm+(_3@bd!<^7xpTMtzbZU=DT&Vn&IvxzSUeoIcI?jl6g zcW6QW#ytGAWq{B(!K+n#6cGC}eiAHn87c0jE-JP#ZwPOR>U(;K-$HToSF{8ixC41& z=fDEcyvyL#){_;*r3BZKc{v;eV4^JLAI(@!a4OLWaGu}7iD&#Yl7epPk|G*CrP@=S z6X`X?#nkz2ooHtfZKI^btyC|0P}VZnCf6lW@VX7~|60ND2vlCZ1)$3ahJS}~@uBP; zULAXfxVM;t>)YVJoMFwyV5;r76ajmS|gL& z^qTP=0B{@Tq`+N>0Gdfy5b6>}S4>==-mq|DS}oA1c~#-ADGOmmH85WL5Ti6JF;G8ra4>p^ z$+N;9LaP_!AeLMsm|o5WPq4HqSOgd_6@XO|f}YsHz<&GJxOM{JIxy&&*x8uPzL84p z2eok}F}fSE#WIy#QCDM}-U^XDZg6^)OvRT}$%Jg`%`VgUIexBM%MZ*Pg?c)^rF-J2 zHBL(b(QYNWiba`{bKj3gCMq-vOc*IL7z8X}jTA`6ANu~To0PpbUEGdqp`ECPQDoC)Qo0;@{=nYaLV@@e;s)Egy4b1IrFb$FJTq{!ye~&; zao~{H-NnScI0 zcmg<-E?`&N4-QR5Ct&LO`tkwcRl|c-WGTo3Q6%^r!&ZDm{gk3w&_gkVZPTuS4dfWgL<;Gp(~cibaA6oz z$7MJ6!fQ-}66?K8vc5#yZU>e=2obM=m%uK8#%J53Iz3-L_1j>A6aincOZMG+8;7lGabr!HPrA}GhyogI@N)o!IBCo zl2!4ZdTToTLlTLd+w{r2*_eu|;VXWPE*wzV@mFe- zG5Ct#uhm6@Dyu$~w;0nnnwUTJ7KA>Mj1b_cYl(Z90U7v~!{%dvfgv^q5;*Ez<_$dK z`ry+cZYvb7g*!LNQZ(2F&B1_MsPfAY$wK0gS?CT0U68XkK!Gu^lH;)?waH{H3enH6 zgKLxg+ymq{@4HMaQlQiFSS)?QM_fmBrU-WmrpUjULL=eYa7P5-Y>p3Bm13dAIQ5(+ z1cRfpPQ@cuD8kH`?-JZ% z9E8V~6}w&tTH>K6zG4f&Pc2n;oMsDN%4C*d7o0>z`XMBue}H`L#Th7NMg{CthnNvf zJ9BJ-SP8@=T1}S&G-+c&E|K$u3Xym@rF9UI;0VMculnq!m!!pgn?1NP27-=o260&U z;j(SOCxD0YdGLij`+ihNPzO`-*vi38xsf+3ZTfBP@jUo$I?Fk@B$^@QeLC_FbKSpeF z)G4z{hs}VRyF_xf_tW^L-gzK}k2)d9jFo&NSa z&-F-0KKI_+u#Qe}3ho+)`AYLWqCi4fvSjeirzy&^kPQmj5a>9Up!s|&pltlTFTQX_ zB6iFuJTDMH0X(R=4Y}zzjA#LU4Z1A{0Wq;cBDJX189NdPoJpxz#uLIkDK`CVUfvdi z3JR^jKZ^JlwJnAIlcenE={O34t`%f2OYTgd-^`+vA@oLnV^@@PWF$e2((>cF>m z9+&2Ju55tGdF+nk%yRFBvV1WJ+mLN+ghK=JUB+;qW4RbYpBBzI&9@uk7g~wAB0l@9 zE*iDq(U|k0ouV1{R$>MzYg(XdugAnPbuDTRgkeMt+9e03aEFwYs5iyCb%si5{Y<a7xw{hg9 zPB1Tj3@k?_BUMSJww!T5aHlE?58o>cXHGk$mAJ?9qmP^&9S({@t%Q>LN<_G*_fEij zwdQi4Wo3=y(zu5xIkHYd&=f>veoRsh^i1NF>_=JjHVD^&fmP&Qx{%qmVPQQc*QlF$ z-r5d$!A>w0FEdwP1}dsF2+jlilFaThhMU0;Y&C}{LkSoJ3bj{f?5nXt>`XY&0eYUQ zpztP{Ooc1zMkBgvmp!lpYzJ@K9rLJuJOcgHDOWUV$8*qEz$NOF1*Yts2@x>%tc$0I zWW@Fy5{oC_b!Ct%SF*f&j$9|alRouGgs0JPeYbyuBISKHpc8Qvfce$AXPy)BV=nh)R?^s4#7(5> zQFWpNn(padu3F%o(XB4jj-S;kRP$PAj;0>O)oh>u$~Ry(w7$PY{gu#dZeOx^b|X(& z#jcw;eR>1BBd~f=ozx+6EZG!EZk}%z1JC_}HBo9)vUC%kOCTThBAiG8{P9;IYls`f zH6!YvY^|NCSc0_C;39RQ{STwzcCJV6VXcwir{(E1ZLT!MP3>8Ph=(NkN%4O>WB~#@UQ5fX8R%U zL9KlC`WE1y5%`aNwAGhGMw4}Xt=-hOCgRfEuP zLMTQ(fI$1Uf?oP9sT<}QV49>RfWfB;S;bdpd=nf)hgG4H#)6y0RLy~@|Bm2L|AFT? z#6;#J8+a;n$ejZlZtU#b61m~QN#yvufhpi<`yX$CUVYBW<6G;{>acD6ID4~g+$bVF zW5$7L(<1c6sE>YbX39$c8s?4Z#cAlv6rf!@?=kbB-b%Ody1CXSjoT%2%9}kPT77Wy zuOsEd-XCML5Zk(4L4 z%$^6Om25Qu>VS)!=xr*;_nhs<( z4t9!!EFs)sr?28W+$|2iUm1#c<>+FbyT7+quOB%Xmgj;!ed7!u)eLRu%&z_% zjAD}F6|03?$3a41fh*8l`d|SMmdY@(jkfL)QsB>mM|1Kjt=j<H={_8&T?#?Uf)4w^#WfcDZ)0`zi$ zBG^yj>_FxJk2&j7;NoB=2MomqBbYdTf*;0B2Wn=em5WsZ=xfH&sf6+@&JzB_K`#j9 zmC;RmL?UCA=Y^KIqlf&g%1~7Inlihv-X z;3T&$aX{DkV$@6DIuPoQ!5+OzPFDMt)~OA-V!9q0uWQ_fOg4-lmKbAk*l1kpG3Avn zMfngNZGS}K9t$jfz!{_NoZ$meE`lh(49319NcBufO*galAyW<)j}afx64*Kpv-sR0 zK^gWDr!>EdSdJ~?oHAA1l)X7~P4>Wl$?D7Q1Mt_frllK`-kccKOCtLbQO{q=47Xz-_C{lt;_kZ$Be^jwE~<~V&sH@+W? z^R3;~cSRe~OWlDV#LDN1Z{i2H10yuFw|0;mHpqIw+&puV#cZ8CtJhK2Q)8`a_b+R% z^7_^7nqZ*bQj^acowc3CC+M9}7xC+_yc5I7NB@4~K7tVP3{= zsXOB2YIOo<*!7}B?9s0{G80Ny_~~`CvT}~33C10(mE6X7v$W)(`|=acaM8&vqW*^t zcfh1Uw*RU-yIJx_=|BH2B>?xRVaKtzH_)Gsx^|-zSYL$Adyh_nHMgC*4a9vYsZv^V z1GE!nOX(FxQ^G|CJiv%QhEOH{2x#gVE6Ff`GHWj11@+*P(MynnSwQX>*x1SpQ^eJm z-+sHu>%A}(BJz(sf^s6e$H;-(*BrV_C~mB|avonViY@4rvBeD?4h$@vu|^459GFXn ziu7$A$W6TxMUUudB~)}?K}<;BD;|0E1x&;z{Sw63Kc-*q6C3%hx18MmkHp5=Ca}!{ z`^vqTwm$@l?J3g4*arh(-`t2^p!~&+rFdZZ;7S;!g;&F3!_BtY{8(=>Sl)>-Lb<-X z(nMP3Nr1}Q5_TYQXl8iy8|^Ka=Wa-`t5m#MxA3s%j(Vly_Bef<{+6v0A{L6a(hs!X z_tnKB4fnF|9t|ORL0-ePH#zxIDVGr1rDT=E%x!3I;5M}=PZmUt`9)nM%!y0Sh&eVF zi%ex6xY7rhNa3!k#G-LVF3`L>wkV@fQoH+@9oqSf2N&6j^E!kgr%ak%GXX^x%J_Uk z4KO3Qn&eWud0JB;)F9_Ory?_w zrk3iGG@>6Syb~wx>+9>F55ei>0p2|^OhMx}D$P5}0NDk8tFzQJ4$4D}6@osX zuR&W^+GQ$*0E~;x=y9gdjd8Y@AuavcM<3Nete&E#`2DXFX6g@rDip+djnAv~s@vSZ zX|xq%Rc>Xh@U`DIDyt4xXS>_dt_@fB!nEWu`<5@ww;ejM8mRI)C1qU-2sqKx2^0Wj ztxmo90LuiOQra3_Dtkk#I_Ot*z&rx_xq4$Rt7`${g{ASQ6Q>1}v6@;mQ1!eRSQKTU#|%1Ao~;twk6kjcX5 zu_P{B-oO*QVbyd5H7-p@gz%NaG?i0<6?L6@koC23Dn#qp-O_k z&$#>d!@FU2|KF1KL6OHtn)y}F4czMcaWcq=%u@ua z8Vf;(5GsiUqQ>~xwiL@6oz>MYli0+f=2UMRs5+bue(j9Fr30=PcGk}fr^D*8qlE*l zV5h(|muwa!xl3~Aa1c%epD}(;Sr4-PYPoee9yI;>>m^8vw0Hxa1z>utP>|%B_V;0$ z$-cdNq#X;#LTr%JyCfo`2a=D@;7vT9MPCGKvT0*OO)5@bWHqM&k(NTu5EP72nQhb) z#NDrR<;x!F!0CG5ZPTuxpMsXQYC-f>B)y)xUfiTks99dIFZdf^< zw(}x0%#I7amNr;3=9?__SN7p+2v-lUbnv1vA7RDKl(CoY8M9VU_oc=;hochGz!FjM zULxeOfy>cl#UdKlnmP8HXC@;7XVR089HF0!Sf?*p=7k!wf zz-EHnG;jeyUNEq!oA`=S)qe7) zavxkm*S_oZPHSsx`~qGL7tTBd>O&3D3Y;Xs1phr?moe5FkvPj;BDrOgz&P8`_6CHt z<@Z((N^r$U40kE;J!U+xZ<}@=8qHP-#vZz$J{P?FP^VDC@vT}uH(!)gDPwM!yl(bE z-NPMN`8-Zm4}5WZ!nr1hhk*spLsxk1V+)#qsxX>H#NjUL$AXhcQ%|snZtDL3feScaVvJv;&9|P=hZMmQ=fY4P5AB)n<8CMQfX? zuG-svA+Vu!(7*lMKRyTv(37x1MMko7rlknNGcesH>ZDc@*(h7907Yx5vZKFppn zn>TdrE1Pzj$BEYC{8%^chI)^2K1a>;anwTJ?9rN>Y2sXu0G!WR zfslJe)-bk#17)<0ohT5|dR(G}u&(7a?{i^daS}Zapk_wv(ph%!Ky7nY`NGSm*GlX% zYyaXu(wZ7G@LEZnP%FvfeP@?n-1nw|_nGuv+ z3_4jR0XoM#K&wZr2PU8q3C8;*xRuon725;w#^8LA#B8YT4R7FSioO!H#I9Kx*$=m0 zuC_)Y1sJS-2S?oZn{j%3Ld+~SI>lYBYbXyOP3Yy@)x z*(N7j2i(;boA@HgT)l)0U>wX#FS%hHr&=)bnhRzdPIgzho2x=q4Nk3n>&??ddS3r+ z7c|fpof#eI&TyKY4B#%qnVXMidYw8TyJpGPp?4>Orb?ksgp2j8%@YT{TLWyF`7OSvdwK5z2JawvR@q z&WI$S`(o4LDv_BlZ7qV#`WUEbf`d7oo5uyER)cIa*!o~ygB`>&*nBtL8bP)|ux~50P62w#7*H!2jLX)pcv3a3^*caas+YONn1osn^o3#Vfqv6}By( z-O#3Ja4CV8xABVPkICaO@M0DHE}wo9JwJK!zKIjV^kMpNleWdh5UD#F;eFE()wqE) zoOatvBi!*_8w?3zZNk_S_#Nv={Qg*fVtNB7%(ZQU4-XO#byI&T))UjI8xRh=0}*YW zUWYp=QEN7PR~CRmEB)G+UmpATWBT_1>83((?i$1mFN{JZ*283D%tklhCKxpP)5xL- z{QD_vZ9VAAXBbs3fs9NGl#>tBm)Ojmtp>@n6ai>a2qr_R9-~E7eoXrf-#XmhRrKY8 zvI<-m!YVMde3%M+q-odTG3+YA*uy*OvwmCMJ(o}Ke-)9UvS^V zh}KwZJWQ}|U$zVY3if-Rf=pT^Ojvm(1=qbo`2pR4BGzuXQUz8s8?Z15B0r{2vg6waVGtHaCSy#KxIRxhK%Qm15Xv@ ztBuM6vJQKWQyX7A9*-3ow;-%1M^L-t=%)mfJN!0wehPgVI~jXD`aE^wb9!}+8GA@2 z1%0)prmLpT*h9QbTz6{3>$k-4$P@p;=YN32Aj&mum9YpLwt=~KBbgBZJ@jhad-GHz0s(YrM_!Nd2qJe4te;4{PPLdIE3g1MKOaN2 zpe3G#A>UVKvq${?XmO=_lUy{NTOXjYfaha>Y`*wvk?i(^7ED#)1O7zMK*g zf_169vKz9WK+92%S1=M&k|6w|_!oxKpxDmQy9-ILHwuMofT22$31p@aCpxK@@-AW- zbvb^J5MFUN*;S;n`7tT2N1PFPhTascwRKJUd71 zDcy+jDDP5Sx)SQZCxQQ9P{h(d+}uA_*Qy;ooj&pM%MXY}b;{li z-8in5Sw2ekM3ZY=zRC^X`PaYw?QM}5zH@CS;FR>zk+OZt)YLFAB}ZpuRn+T9NdNQA zH!XpH?W?bPTU$v}Btr0i^}GjY(seT~oN$#(6^a;|^|8obVF9I*7QUOIk%-t zEau;uVQEA2$Fi#hT~j>ORZVqMdu!bK@l&C+9>NZ9y=4o9?B9Ri2O7HT%fQ9}eUf-F z`ulh_J+&4`OG?ckJRun$xq3oa2|FrlDa_f|tZeltVHUji<};U%0UU1lOE7+kl+{Ywj`iXG=U=rCGUI?Z5aVY8vFC~-5g+c~ zKP#XAGoj7U%hJV|Jl=|JpC@GAcCpuFO(|@OB-$C}V;XNH;;L#nT=L&Sp+mWKF;K=% zUnids5y6P4S{<7q$T3M+QW*OM`7(~#E~Oqn1G5oC1Z}+8b?f~3_59^eCt-jLD{?#bO?*G~oSoKHixq7i9*mt$>Le})@xd9u z3}nm)Gaes2qvT92kbZjXt4k&?nUU z#B%DgAi<^n4bT0=eqdQ*_?1YVkG|JO9|;n(L!nv0VAGHE2a(9Uj*g~NUw=f*{T-mg z0(8f{3h9L5X0Z+~L9BcQU=-!K0<<`c#u#fRLWWxlh8&rp_ns|Dt~Tuv|RB^s%>f68VFidq{dcyY=ErV{F#9!CSQB}sG(ci-Rci{l~A zfm=VEFZV9Av7y<~I`yLb&iQ7(N#a<2#h5#cx@cHq(RReB9}?FkfX`|L>~ z;X8xb2Ra7nPS3eB_$V=UV`3SgprJ!_=*A3vG_13@3<8;E4XCggw8nDtlHq$bzPe>$w;xB4n(F%`sWuHSIV()x2k{!BEHtXCYiqF>q@M-sQ2=U*=b!|{aCVsG}!G*TAC2S|ZLaclI)VsT@k;G6{wdf?< zY_^wwuQY;H{yyXOGpLBT$D<2MJ+c6`7$-Z%GhCc_1{I_bY#kkk+uNTl8UsBu{0g<0 zCA3Jnh8AaR!MH@Dn!dyiBxW*))Dw8q3yjQMKk$5?hv|A7q}JLEK~qnUwH{_L{AASv z*O?u-&OU5Y*o<61*I+pnyKh?GZE2dFxOZCL(KN9js154sWmeOcpsB0d>auiZd5O9; z`+Io?@z~2(qUVjWMukP;Hbo!y+)uyg{arhK6v}pgATxWZw-5E|;z40GJ2$d6z4^{p z|DtP&Dh|bo{zb`geX+#>~|UOdah$ zeQy&-$7|?0WEeNw%dY18=8n@vZByrY_|-i3oJkD<$NDHwEp+yz*9NQ$HYPbLL3GWm zt&ygy9$&;!3g_H^G1Wa>uYwIC-So}C{tVqsc0z8+s(D&&m9JOcG)B)ga5brea!XFb z)A6eO{j!!xwR}BKU%0`Vk86NPR245cT=}3vXchzAPE^%Y)Cg2OiPIg`I1(*#XuXxx z2YtH0XrD}E5{cY7;u>mgjNlL1DKIsGQ!hezczC;%8XDDYKvUQbXf!thh9M7C;Fgd= z#ou9wZD6;tR{&SFoIoihQc4{L4o4;SR;e)io**d-o`-PD&?*chUd3)Hex7o#+ml68 z9x0-w&@{1wEas_H=1RhxqZehM$TYokb%Q?sB=v>9e)>eCuC{Lm@ubZ@agw9fF?j-U zb$k1?*4E~)sh50THn*j?kG&8Rr)6@Rr{%zG}&F$kkTU-<{^XvwP`N^qAxKd%e} zOE{#x{XHCGZ6d}|cR4U^&I%|oc?q69=utZNSS+@YX@?0z2?{WQJrRoy8jxo6c&V0W ztDn*b(JQ`JLZSXZpy{7~d7C~F4$ldNnyIhe!8Q00*?NJjg>_-J?ACH=_3-dfskC7s zgioQ%$IBcg!vKa=Cmb&xbUE1JIaut5YuzB41O@w0>jUd9b=HEL0!kIb4K!>Y@K3=o za%eB)=H>T(f?WSnr&%HqH^mhT)SvzEb_%ftBAHNBqXOm$B;cAuBDD|*OW1b?0$p#s zfqHRv7aC=LZzjf5chdK}H>8Q^nl|)j+_VDEVLW&Kco_cK3>3UCz_S}ua}zT+#|C1J zGbdXG)`?TMN2AaUyXuDdA+a2YN(d?No+GGW?|WeX`0ws&Cz4+JJ}-SFa3e=9XcsDY z=$~Z_d+i^H>2K37#^VcOF*p5h*xEc(DN^cMuEYu|69Fo@?G$7+rUREW(?C`6%`mPm z`FF5+@G)c9U=uNb!|=B9JN_6OLhK0P&BoDb*jvzze)!UmJIK%gmJR2^Z@zit5eu|{ zOuFyBHEWD8FX8j|-!FJPFAz=CTMm5LytqJq47z~c)DDCt3M(;zx*h6Ey66Wu*(@uO zKysm|k*^i``AW{%xKJ+hItUTBrk*Fh!L6znvP{S(hN4p4i6x-vZn~K3y@uQd9y%JD+mD>-7xz&OgOPS ziH3cC83Lvec%Fem=pASswA9VQ0YAvL@4%epg&b(6@3T^e9VoUOcC?BoY7?4dX(5y# z(NCF7`2?V?crKC6eguh=IprVrG$sQ+;`Kt34@RJ&*Ql?E$&fRc{^gvd&bHoJLu0c&+*){-&Uif(El9r-c|7*Vj zn27ET^fujypF7FM3^gUSmr&>FHCadk0t>a6ehh7+x1i0b)W?25nu?_Kckn!nH}pne zQXY?ahR_?ZCm@I{?>o-AI^?`?!h~k}o4@=8{n6#>aXRasM|a#=yeV4#PpNW{|X-^M*Y7|G^ zm=E9;_D59n(j-Np%+Egyhr}hx&Z4iF*_zSH<|Pg zoN$u62iBpd@y^$Q5WmM%Rn4Lftv0VbG(+giF(cPs3`T@OOWSu!}1wXxgu?4C^U|jeLa8GIh;k^X0 ztdiVGA?{c*nK<%@Nj?~KhocOo+HQGi)Bpp{Ffa#w1}}|I3aWmr_*C$h@J&^gE^z5@ za-jl&*pbV9ij~(asE}NUTNaOpOw*Qyc}7ua>6DAKos*h@J<>g~Q%7A00Qd=4Boc1f ze0feV=S0sNhYwGZOIvEkJ9#>Ob(2%PEuAKF0}DuJ^6I

    vv=NU*4yezy|R9e$ySw{lohlyrHy#`Jv?{U z_xOCbdiJJXwuYNtJ5_P)kw>VHdkp8qS#miUpNU=+3;fz4AF1PMf(}0QX}?gZ>;n=cBhUE$PI&x_9keUj2f+eD-dl&W*=2*fh3CnznNRL(7t#qkU z)H0KsT+8O;qs+u%;pp`-7L+03E4WN;aesiX;pl2ZR!UF( z$6&@zq)trKM{Lg5rSVmEJZ5E`M?Ag!!AqQ6i_m}c*$uHXm5V1y(_<>mqhqBCAC80_ zG-R-9&G9mvgd_>?aT`n?YDN;uQ4SG2$SftkaL#Js)|P&LwGZD)OSx`xlaIw8U0uME{$sWJoRYu z!iz76l2S1vfBmiHm#EiLZ(P_|tjDQ@0QUmfT$dznj2aReG_ACAo|0=7=~iDpTyn}H zN}sAb9X6yDPO-<2KJRd+tdMEE!f5Ns;!#yAWM;UuY|0(re*J~8QxhJhHb4TGn55xD zxQ}hPBt$^P*kU=1w^qh~bvB!WK11`U`{1(_{hrc(Z$##n=EW9qwR%Zj-EZew1&%%x zh&cx23BE5fKj7VQ_07X98F%pJtG1a#fx~yrU@CYccODdnoI5TrvlZOZW#=`1QLSEu zrc;j|i3nYxm==gr*1q`lU7qD@BA`atwQQan2%}cAiv#p19x*sDu&ZA0rrt$+B<8eI zqV1u+_NM72nSZu{qh;%B;M+cAawsCPzgS(xgp-S_eM?u*l@|YCLMSlvxLxJTOpd-V zAE=b1CygF&DPYF8PEf$i$&6S56a0FN)K_VZ?YunGn-W7z#YN%|0oCOIn24XO0Nr}2 z0?x7$(!V`Gp15+#)l+Vpa{rVkVQc7KI@I^ApWFAK?QKl9Zj7__bGuE`?l!h@F85f_ z9Us!g|4KUA!mhSL^7yaLW-p2GkS?RkN$r+xIhj`$;AxbgBqO#=4_C76mmSeiuLRfnn~ZUZ$MW zyK#=L&%R`Hk}G4UH!ad7ycZQXDxP;{?ZTXA>t+3 z2BlVrCnj?Y4zr6CKq72arBW)FI-Pk(tnF3FHN9q)c|fl-3^Tje%me#wo^js#bnm&- z)Zmw4n6Y|P8JVHusyN~RP?3T|X$4RNB(XwLTU^?wfTJbO%qBLS=~ccHP**1>EeeD| zkw-$C#lAB3Dq{*aE+Lu>u{H(giYZV+%!JU3hcGd=k00A+!wr|F^sUDA*4VFc>7bfe zJ4{+SOsHequlQK3X5i=i+N9>y~$@BGGknVL)9Ui8>&aj{Oz*8Y*4ihk5xdsau2R{`{Tz13F{XnIzUUzg4 zu{M=TT}a*g!dDT@cs?KU&bDzBEM46k@VQ6K@Jm(M=-bQ_5FoQj@WpO6pP_JaMBt;t zCOJCO|7C8Yj((vI&MGKj+a;-*-Bs=u@$5obek4ddx77)u|3}%w#}8*nsg#kt=)k_@ zuCPERBneEyCIu4MO8k~S4`}wpAwvA3;vt>p%+ef4v^KR~Qw$)$0^|Bki5D9_7>>m+ zY#e^jv76pmTr+k~!G5SvK&8_EqCZk<)O#EJL;d!;>(KSr*T9rkiteZ8T#yxp^js_7 z;8DZ4()NR6@VC_^W53_Y<4DBcQ&FqGokl;6CS$k22i^DM%o1viuzR_kEoa*1sZ+#s z>YbirH(Ud#w~&!Jc;rw92|IfKBvWj(A51%aZO%GiVmr=PD)fbEl82|vglr=cBGCo}%I`{R#424Nj=xSaXWL#PY) z2R=!sXTt1=BB3L7T%k@)Mng(Bw~OoC8j`3F8RRl(y1Jrv>)eVYRP;j< z=gs-h7vRX$mppn)oe-1NYxbp7#pzz5ndhBaQ2D!6olH`*ymF_RYla zxyhZ|yCFvkuisER@k_=PDXq^e1iwb?9P)ha$OUe|SAz#`8P>~(zH&GSrW4+shXLi# zfZO@&t)Mm0R%?7vAD{G-g%-Af( za@`$au|JjuY=8%re4bmo16y{{-a1=Xhq&O=Lt^(-y8vA|Fz^$C-T0Rpy-WGySS;rd zJ&=Hh65`ZBnkp=b*{TI~QJE>e*k>A<YuO4SISbT$E3WuPv{ zzB*u~3QP1FKf7a*c>E`Y!j@w3!@j<5YHQF1v&Isf@nv0_uuI4{@B~gTtRZd^ z{0PQC+peQBcY6a)yPPZ+eoYm4yuLgL=c z4_l(C&FrDI+Vd)M3&$4?0P4>n@JP49>tI`hej7U&l_PhzckO0qB9gH+i{Rjct@e}U z@&nPxMThdx#p&6%wIYZn!n}~c7Y&NFAx&kvkE!6ehKh)Xg-}*Opa0LT&jT31ylaNg zD9n>0L8+jvPIYpP0_Q;AeFr8a_ws~J3u*LBpnN4}Cs%Yv3MDHO30%p+l0 zGd3umvfX~^f}Fr-$(a1;!lb)T)Wfj_{$JQ$l}4mxbXNxbyj!M~G5J>TJD13hDD`EX zMpsQrO?90@Kaev97TRxr-3>@r@q?y?qA*) zi~On{1F7Yxf`ZS{QtEd2EX3v3TQ#wfbU?=n+BE_@=+<1*HQiKz>X?9OFz-yu@8mPbZ^{wyeiBO;Yy>XjftZ|S+X51?c zc%X)U2&(W8yPrfq>SWWPV!{d2J2WQ-I{-I#A`EuTSXdDQe;9ck>sCwcMFwG-J%c7cFVa8JrKZ&eJ~f6*1QkLX7h z1q4Q3VBt)Ib^uD;ti(pWN>m!p6|nf23nmoKLHIvz>F?iLR>Hh52Fs(PGW0NI=T|D! zKXESAM}7OOfCl0T>b^ay?&Tvevjg4|bArBERV8%ebR)|m#Dy~Ga!L)ujko$<>UlVJ zSL|2Rxs03S$#WMu*dY5CzAT($cT?A)uXL1J0SN}4qPOU#j}RI@Rsa=>v^Lo}@DyzT z>R>a<-3T*TcT9O`%Cl2mffN>2v5jW8>r&PjlV2WV%YY$1!M>1ym2Q@(Ao|dXSL)W! z?Yg)99MOdjP$bPnHO&HCFbjEK&sKS@J?G?I(q9)Mk8gw7)y?;wXR#KgR!Q;Jkjl=Ekk*&F zE-0Yv`mPySRhQBy)a&LawYi+Zr_UxE4ftA#MOwTjq_D7}Ow&t|-DQ;B99;rms|bkj z*Xnxn2A`oPO+9)>WDyvqR?-jEu7!*0y-Pss)g|thcsze_h`my`)L$Dua=s7hQTv)b z#DeRn6F`HiL3x;oa68r!I$3L zbLZ3Zi8+tn-iLN}8{#2hQV@(cZmm`iVaQ^C7ubzwka{z;UFAiYk#q(+{| zm$gq474F?3Pu-g>SPKup;}%pTQ@Ir@by}r zc{b>aFPeyD-NW(6{9xh}OLmE>XsQ}wpN)%JkpjnG9CzV^OES7y@TJ==Z+17~eQn?GCQb&l zRLF!{^%vvpMoRV)J&l)@gs$E7{7cop>lDvq^p`0YgxT4^?R0s zi}^avs>6<7^(h1Lm_VC36S0)vd9AbEI?ouqnb;L3A!cEW&fP+D@hnvvMMz@J)8=z{QrMzv zuyN?2JzQrnPiJ}sPGT&|=`8Tqu-;fQO4+Ke zW<*yo*7?g0e-sVOf_`97?9J8Nji5Ad(B$JMZ)Doo3TB^D7bH>@PAFJ60m zv~j#?v+AHwfj^u;s%vGE6G!#Ow}8$?n%jcapqqPUZzJ>Vy6&tpkn_UkJa`}U6oZao zc}Ow1r*GO(!_tCb`ka|&CYMbZ2S14Un` z*QsCqI{%+Y2H;f&!2zQbVCw<)n~j_E)}khFL5 zngs4mS!%A+SSjoMhHC%Y9>DuOB?^WDUrA~nWR1< zc#Y3%*cfR#p>F(9S0ELDiz^fyhn;s}K0hOS+YDmhSP%L}$Ti1q*Ce|iv|YWNr)96X z&P8P~D;(^U&WaUI%q4fRuAWC!3~OOp4a14rjbJ0T|io1x%$?=P5*t^WFNi z)Fa6>wpTik=pgP+IgV`vmTPs>)K}t`-E*O3J!=QU{M0W$c_`VRU7AaD-+Oat{pNFn zY^j8q-hXLIMg24IQ*L;knGFGN7;Sx<`s`q&#FH`eMa|rYPVBS+&&Mft{rF4U_FpAA zyrRQ@mML<_=sA z7YcT+ow&65itWUmehP761twd~cM#enW5KLFJJ?iqgs*8K$tbCYS*EktS7KLx|9O?l zZvZj53F{OJu(hp@C^cU2gTW;8ot$muwlvgK?8Jseu84VQ4BWG$3!gFWUkd$;)tA}+ z+55->_RM?w(0ftGY==jah#&KtOF4N^o-I5W}eNK2CiX6GYG#nQzA* zNjwmruJqPY3XVd>mIO2CM-Ep}39?R#Jhgh+wH6@NdhXjooeIwYwwr$M4dvCq&I*QoRI1--8kO+Fw^T2pxG4o6o6Hy=E5!>J| zdoS!^$&{Szwm)Pn{RL&Oytn@!QBy(Z(G{q7&V-COC(?BC)VnMHjgIGXxjng_9J;?p z(nFPs#3}`sXnaWItGC~NG@iKn_S>(dE`mz^h&r(x436b&!wkMn+mlth)jfIQ9VJ^tY?cW4FiaQNp-8DpkF*X{iJte@{*%ov;wS$9>Q5)~9*U3!gJ8)5dl0b;X zA;E5eYXX}WmRJMLbOxJ6eA6)}O8BR{o)0^h1c2h}nfaBJ)F$?e%wH3Pom@5B8x>Hi zs$5;f%~mM5;gFb@Ad}sYs0ITU24rS3M4F$kGQ{1D*E)*DOS`|_OKr)`>>>WX>xOr! zVd60vyJy(T<-+KLfe&tlEKdLIuQ3IjAhiCG*e$nlIU4XviYW{!rA(F2^lUN!E6{OK z`L9>lr;QAlF~!a`e~}yQU=E+>;Oa@^!b1vGQmIj;bt*2p2aSH|l>FBy4FMTr-fuFB z6HbX9@YX&k%CVH#YM=*P0H4z7uOA{5e2k|x~#t_ z){|DBovRRFV2kAlussnE)`MP<5qb<6z5jl%r3xl&rEezP6Yh{O8M%G zshf(jlo^YhSt5^RxMHFg2_K0$iqa&{6=)pkq)Z_eZ#oeBPbil7ygP6ra?=;PL|la% z#(q;Sp~JFWZP^1M^*N*QsWsNmTnO`fUYSber54bGXesrANsyL zz1dHSS>DZv>5@kx3O{HeQvWgPYeuVS;HbQ3R~IQ^nFdG926?y(sD)F}RC#(U{ws#c zkj-T1H`)|k;p6h&-4Wn8nFnWB4f3vt!m5n^f1G^>U|Z$YcHVn6uJ+!0?`g@BhrG2d z+ljNMvzO!S4Iv>Ro3I0v-9pPQvt_jfLZMK~XiK4mLg_~-{aRW&zAmDh|GZa{?SxRu zPY|*b$N0YEoaa2}oae;Rjh)qd$Sqxo-&PM1JHLO>3l+~b&eLk6qn9?q3b`|)AJMv8hGW* zlsB04HXHqz4$tc{%m}hz_+YT4?MA1nr|E79jHDHrzbX+1o9_I{22v>Ej=gY$pMJ@A z=$`q|0^#`uM|`5&UnJU5QpuUhayALQSEQEd(XcZ1BM3L$-Y+ zMbmNgb(tlll4>$^4`~`$*(u{`)Lda=R+l@Phw@LSM3SDFCZ0QW>iJ!*kuOELDwyqg zz8)}5h_E`C8;&QAV&xND)={en9d8*!#PYbGFs{i5QWKRkv6MP%jf)G7@eOr2a zo9JI7^0#O-b%Ch+k`_?IWyQABOEk`k!J#eiCF-O?sZ1-?%7k36Oz3r{qS0h3qo-Lm zM*%7`IqDuA`%7&ehHbb4{#@8r69Sq@L!YG&aBh^;fNwaxF%czU$6DJMZi52GpF{kF z>hy!F{!aeaG1B@%VM|}%ui$!|#Mgs|`-2R`qUvo4obZ36-LYmz3p8*3-QTu?+rHV)Bb)&bx_Z}MFc+W>4y0WngHhICTMuNocX5 z@AvnIzP=Oxhu-55e4SLEV+;SY6J5ZB9MfdpwFvU3F@>OY_c z%rTZ&frB7s;V-sLXi3=Y?qs5ag??12j8^#G!nT>vMm@Ny)BaXTX6Cw~&`cuXBB2|q zv0QeJ#pkoI!!ZS|C+7}SJ4*9WRYmL2MW1IHErp`y}hIxN_Trly8JqU zQlZFXcoK5zu(2&Jv3QcX1;Ez_Aq#klSrJ^jkpv{O0GGE8!!-aHIk6JVRx~=Cv3284 zn%6UF#m@S=#+EXXOl^Hx$qhK0M7RcoN|wf`<%ppKiKjCNSPHL`V}hBg?tuJ-N@d3& z<;ZTE%hC#_t;`rdE{hFZyUz)2(Iq@pW}`g?zGq*eVbC$iQJv@9Lozh1kWHhPr1qpOW(hRvSk^k)b99 z6sGjvgbLp$l>5m>JwzNfHx7E31>SlMCwpd>Z0Z9WHu*9&U@pt6VqtHlXKWweHz zS*iAv(NERA>!+K!Fn&$fzqEyAT6lbM22PGhn3}a~>ISzWk<E_Ej2=^7D_C@8C zLhKYsf|>r{t#TgU3hj$zS3u&jzjf1`)v!JVu)$w}^}%w$jd>vp@z9lFCeTsY*boeJ zaP0^D3#tf!fotU@U|3yPg%BtT40mub^?BE-W{b~Vst*aW`Y>@FoTv`Sp(BMyCvzJ$ z^AbqFxA!JRGBu^JNvjVIh#ZmunH>>Zs}~|!rLt|1=gY63%F^(Qi!-+OOHdDIhI%-; zfW)ii3UFNk7snTp(^j(BU+piV&_Mh5vqA}H=6t1)2l)}PQ%tfT78MT<9!c*E3Ibay z?ZjK#^-Y8Aelh432<+iZCcO#LI<|A^Kqj{#idj*|S^cks>K?cy+t+H*f^F_JE7R1_zr! zmeOsfd{G}K7?slsax4CfC0fl4^SWD@xNE=dd=IQ2Z{)We)Xx!Vdx!pnhT4BAGn8>j|K=oOf}V0t65Xhsf3H7mK=*4#kg z%B~B$h$pv86H_xGym>-Lw9~f-3KFe&_ks~P`Sx$#xM&$XbOMffZ9I+)l1q3fMG=Gt z@JNdP_-qpug^g#!czi;n7V5585a)S1SehE-0HBYZ$np~3UsylHQu7N-JDg7y#0HKP zwh@db!FNeGt}q9eN&CVw+C#1=S3?Chx%%|A#IOCGw?6#nbi`*5KYZV{^#4xf*)vP8 zS;N-wmmQg#G|cn8^bMhbyY23cHnMQJEIzd}ECqdOp)=MM*e>OPSP&&-Wqe|%?Ym@X;vZEW z`lKY&Xe*#cM};gAbS#%z{-gH=^od zW6Xjzjuak%ybMMkf9XSoQ7jJjFj)^T?7q*VVlr{;@DbZIC=8Uh46{^%@`^6!D@C|N zRu6a%TpH|#BNpMhBX01sGTKj$l&ejJF=9vcu)ka;_CZ(AWBvLN-=As;2{bwZ0jGei zjfbglCKIC49XhlwnSc0&mlq-dYrzXoe;rV#G~S=~ilH!)Zwa({Mue7EI>c zaP`bZ^os5mA%1Y2nSx%YG)QQy4wgEYm3jp!Xmog>nrT(*T^cXPBjv zgXA$5ox&PD6Uzp-sAIAr#Xdw#oa;ksM-na|{&MC5)=?*{&Nhrgw$6rfXYSC-Hq-Bm zQX|LVb5X#|!U#&10xXO#=H+6?Dko0ULpRmlgGDvfl{OgmwA{nwVVbas2hJ<(ugL%l%;5k@d4W zReYV6k~fz|c1*o+KaeX1p?vW03NS?(Fhzg^fre~6d>7<{2LHq3GiLU)rfA%cV448K zT3822$idUED)D^f?XyUsggdmh+YX1r$gx9VKDIyLDDmO&#lWM$;c$?{^FFoVOuj9Q%tlp3A|XwNzc!3@yutpvbH= zH?I178L{~ysX%PjD0-Yoz;k9qA_-R@6|<^~3XmaG>ov^CNr6Yok~>Xon6(ZX>|zwC zR5lFpyrmtpN%;Dq)t$EYz=d-F^-?MkA#h7U$_INhZV(`^o}4yN&6m;j*+8^2cGb|O zTjyKFHlA_n$_ti?r0mg?BPo$o1dVb8H2jbRn=6`j#}Oa>m_i`&`zaYKmC?$A9^#jK z`Kg&*VKEPsIs{;#yq8OPDlcqFt558)KYyZv?UN5K*`4*}7eLQ4PF#hcw0jtzG+Z8E z%e{3>CMS4W7^ybaMScIc*~6m8&g9P@zts;f@&{=v{T`&;~z_2vc`!y3pVE$`eDK zVHq?Did^x|z+o`TMiX2<@OUoUlQ+y=1edEH9{M)sp(h*V@}$d!z4c_<@;R3aFAt{c z@UI42gs;}x3O`ufFa*#Ap2z-jQLKgeixx@*t_PSbwj<1SVh9?P(Oz5FDX<8xAlDsqaUi0lUF70QwYiiaZmcdtgOv*ER?5@y zy_erG2vUi~s}F5(R^PL2zIC~veQ>Bp!WK|O&pSIF+7lx7By!(;=KJ%IfIauwC%#(U z)?#XJmUqaTGh}hAB9cougfKspXYeFkORzICz}i7(!EU+g(y7zw_quN1sbU3vL-}?! z=ujzJ`ttT~C6Y35`V`1!>vDbQ#%76H$^&F1Ao&ty_1UnYJY=_6hNeTL=!f9CW}#(( zjZ=X1%YctDjkpm+IB*`7jjF_s@&S-!E`Pa28H9@d{+bmKo7+Bryc%=ji zWmb=!!mURbW4Xgz3}O8M(e32wa@AizV?FmSx%2p#2Oz0^@kQ6kg;Mr~H%ygCapNx` z^+;G?&jiJ*cI+{QN9;OXM^C%8W%uTw**atXeELncK*G(4K&UqxRW-#`&FW-wm(~bv zX(oM7AMw5Is>HNRPz;w}V2^eMcS#sThA%%Lkh`v%w+t=_uDGc2iFn_zHZN9UUIqdy zxO(jKF39-_%~L2iZ9_2$cGIzeRzI^q)=*nui-f0i zK@^m9i5%8%+%SLfGxQPk)1*Wr<%3!VpA<-ybO(zs=5%r;(0=ec9iK=*W%LaDF!vCE|s2M<`#D4*$am(7$yCOU>(F z+2wq(B-XR7K$X>Q8|1-5Ktj4XemFEva#6XOD4zhchj_c{ z8YV9~y$>9WI95)3#6UCh%>Gu-MsP5CBh0&Ng$K6YcHO*%y>#`F%+wAAU40@muM;Yi zI$&47$uJy~U1zNsY%)0i5<80#IwsO^hwS(cWBUi+qlQ%1l!W2(*Z`^K=azJPo-RmD zTu0CiY%2g&(5iMvxB=*_!+Y!@*Y{Ulg^P(5)vp}DM8fk#fAx_cfQa&I`8=@>W~{Oc zhH@H;ff5C>uuTyvrhVAI3M_$?dy|C6H)8+V?t|-a+lhg>)gNV1OZUfJa(dn4^k0yO z{yQ;O*s?V)&~gK-VKv&%yjb@EwdyTB@MBm_pc7KYcqB1Cukd7zC&ZY7%VBZ2jCluF z*)R?NIUfFOP=j89=hn4ZjR)}%L0JDTn2`P74pxwpAFb)oKS-Bc1fa2r3 z=+kz3VaI!|&w@|~htTI-;#h3nVtGs*_`0wJ}$sAGFwpAY)`38qR3C_xMAuO)I_fP(&3} zMWa8n8}oUK+gvE2M>lbRsfbG9o(o+~J^q7m(CxS#Hy8t|+;-1xOILy!i$Wy!^dvKe z1)j0Q)C$OperYoXUa_9GW~8@q=tXG89U$fmF|KSN8}u^JePx~}zj2tQ{&EQkSW zHyj_FPCuv{xp=CMr`J)6{N``zoqa88u3E*BM_bB+Tk=va)X*!Y?VtC2*KHRSJnH6V zbx4(Ng>`HKVEAO+L`Ip~zr`RIZ~;usJMl&9IC0Z8lk+q6aJF^<8U!&@A~eZ{U`n~Z z=AZ;q&uES}-+}koJ|ysCJg(-Kmv!1-2R;>4{_PYV3J+Kfn%k@tkU<w;o$@Eb z0)-sFuSd#O1wC9xC}igVQ4As2s&X}0Bu;k*R|OKLp3Z8A-I->;BBw_dmwP=6o=B})FlgebRa`^wz>Lr~ zNl@FOjVQLnMJ~4t3WdF}7wzD#?q|+47b*a8y8x!&27qIjTiXj2m}qhwq@P90pO=Zm zrW{i$j2U966dd;@fwaf55_Zx+E5SmSw@haNalO3L`BQMy9Glw#(H~=GIWBP1pxcW< zv5Q<(B^gHCFRB2!G!8sm~-l^hPxz}9fXNfNf1jTCNIv|t$6v*x4N3Q z!k8zIebL6PaEUh$;MJW0*&Pgm-o&eGbwS7h$uP#4x~zbLTo7}}0P!s^SHlJL3{2N~ zo%R!3rM7O3RG+2UEodF7?B6&5QbjybxN9iV%x_&E;;T8HWn{piZfT~_X$}$}++&Z9J zb;}qFCZ*l<2s-}ABQzXJylABjQvo>^mUcRR!Ymr38W`jVlGAV`YpDh~OhT(U{{2n# zV=2NzzuWR4{oWrQ{WcNj?tWmqm(ppt(eLFm=*(75DA(k`y2U)bJKq3?Sqh z?X@&RO@TdiR__59gD)tRv$5gtV1S8X_1P5Y%7UzK+X9Hermt>$J`c*R7C1c$Av4Rt z>Bo6OF6g$>0dh{c+FC#gbSXWAZq9?Uu0|#_spWYOOc{0eiGY<8C@A{%=8o(0q>vq2 zF#TT(NO=KmMoWwIhcK`5P<5vivFT6IG^nR}`>r1U71P-=C3o5pvanH>p57|QQ%izf zp?MNY>EsFs@Ju%I(PL9*Y)vMWR9i;Oqo5FZGRjr4QLL=yd6I`d*bL}+a1CI)eRtDecj7ly!4_lnzT_eOM>b1z77Fw);dM!#Z-ha@Fb~%g)^bC{z18W&;_59kvgomV^(hX~ zTz%=jN@Z(5-tM(>N0N*UX`V96riH@=^q{`J|jFW=olZrI8T_Qf3lO?f=MEAChfWDuNH5g0Xa_E#S1 zp8+d_^{X01Vp!y@A$O4i^{OSc^cIdmCv=W50Il)qOjjn?K5>67SKsiaMYk6vHk8bDP1;61?uHxvX$s_>P=5&C0724kpY)w_sWs*8~qfd95S zm7*Ag;C{3p)~a_=m;22I`JxapGV--Mjnku#X3)0ksShE0)g}|!1(H~|10)s2(8VHa zt@uF(X{@s|PXCcuFls(fm^R_&6dD5g6Se~)9n^uy;4A(K3sRGxY}ISf$7dP9H#5LNNOz@t3L? z6-%W@{kn8q8kEG+WY)B~4`-BnSEA_wdnKm{srxFdUd2ckTdLr;Pk*vf+1Stb<<|`W z6v~aX+kv*y)o3fsH#4b0Fo#f30VM+9p)1v7`HtRg^qYje{n{-@JwmHZ92DCf8-?XD zkOWq6O!K3DsSossCRvxbrAZUh2!5_2hjB2Clsc|U3tkWf+H4wVkfn10as_O4QfY06{ zF0F2ECKA<`>E9ZQ{SJ3@G)CA=oh@>^yrpBl)zsChu*qQz_a&9eihiEEZ)_^&{1&%a zPu0Azt(J{t*iw!sgcJU_GNs0r(jPlof7E&z{h_7(?UoBQT}4+*Y)z1m#vlear3ovmV$`70{}6$a_suRV>fW1 zoe=0PfglgJzZ}L*4fxnGOxsxpEQui@j@%mhFkEcPfTdwVa4?3oZWc`cW5xX1XQ&Bq zA`VMP&%`_i1~pDHl3(Qf4oIm`GzLRo z(QfJM*2)cSX}zHTI*uwa{f0e$4JqNA7B1_;bPTw;bC4FeHqc`MtsrdH@jC>ZD)h3$~aQ3fPOpAQz-epBFoseY730G! zt4*{`Z-T}wp-qSjPTp-J?p`kp^~LR2_L$PU67JPC!~*Er1;Fsiqf=+WU2X!x=G&8e zaZTbS0&zz-V3uLnW@e03%?#oQL<6rzeAjqy2yHgr8~m9IF1L!CaDT2tIUC0`ZZnR6 z=?&!Q>8rh@`}8l8#P_P*=yXvXR;Fcs+TAW~Z%#!!$1*Apw~OoiOS>-2>!N}Ww3;&s zNk-h%Mh|z3RekcYN@ZuwM?(%ZzbIpS4R#UAznq|^hCodXA{Gve)nbBZPd&=JgZ{+U zhPqk`DP&X|lM3J`>G|r&EWJxJfPSP_HmkMjW_p3lJ`9?h)15}p7S>oaEiDF~YbK}_ z%p#5JsZcf!IYSH+-Ay)NFqLk=K1o<}%jK62&49+B3|y?c&vHTyNhCbJ3ro~3o3d{T zbm~sV)z~HBwV!ARocIXW_~925YoA+R+VE5LP52@^+1P|@0Cpb$-}G(Ri!J2R(>JZh zPHKPNGOL4U6}C>ht+(Up{V*e8&$kTFW-!1dI;tnp+tBloxaFDGR>G-V^1`>T3ev;S z1JRhg+Sb<#IQ;g4JrrTBL6$SX#WRU;aiyJH zSFXAXbMLzA8z71ItM9a~Z9#{Hk!f}z2!H30OPm_A2#j1!P91tWg`A`{HJGqbQ2xW# zhr5G5t;pe&8KrKQ5d?o7Vx7d{KquF-Ql*FlL?-x-l(%0($!uIc5w#1g<}C*+71$m( zxVPH47bS!`UPkS^2d=_As8HJs3BHSD z(JhVXB8~FD|7$f5`6VwAaYZV1WDv;&b~_d@FzG2%;#i67-4E-;(S*H1BhMe#aq`LN zu6-Hk-fZ1HI@>QXYB(W|+CXzssr>_TvCq$z$|<*9C`=qLlYRSJkd-B~8-#kw>{75Z ziO|OFErgKWykU7yKxXEI*rpYbO)HBc1Dgl26BlMtd(oAL;qT!?7K^k`xfGkyWe1^uIYuev?qmBeY{bye$Gk^XdEE-WiQZbV{zk z#OEq?^kI>$QZz};r3#AC%h7M(TU?nse6$_vf>_PFb|&a|I4bxS8XlpUe)C>8Wf6rh zy>CGTzJ&t51&>l{=}U#Nt$uM}EAgup;!tl49uzVU5VJTINx5f91A5_por3aH4t3~p`Ronh;Tp-scR;bz~uBjlV-IpCNOyG-on zFgU^=V<$RcPwU_5?6~lYuJX+pQOupP#n8)5N-r$9(HgXww zGX^!YW#lW$ihGs-?LK>~^M$+!z`WZ=K_MRQ3$+I@yupPki^QQh2CJsxQLCDjI#rtR z^Yl?UU)4kps;JJX5dj|xrwO4|NJ8DTaA*#6pKeh%T@n9%==dKZC+LNI+mK#t9CAs_ zIh{-O?)R1%S8)4oiW~1ny$A zk*~)dTfykq0b ze-XWwV8y#U0_cV086(a%2_-jk_(aGeFq>BGEf)7}-t2#&luY^#xtn&Yt$m$3iM}^~ zhgakdsQfCw2fe}N#<*Pim%Q$25jBTWD!EAN?uETR@APrt9B-}%nf9U-&M|bT&t9K-ttf(uE8y~==AVxZ zm!Byh!v$BLX0s1``1tpCmLr%Cv)6O$WnB)4dq*qhw?9+WkZg+i#zVv z@ST5s=X>OJTY{IArq4^{!(yQY=2s;G{bC9LiGU1Q02_>gNdCav^V_DkyI6~_jrY{wt;~8Tx4i zwIR`VFGpw5vmGumZ4BTx;vm!qd2?cKe+LVMsoQ$3{D0vpTfQH+V*ro?zTnLwL{NBZ zYTUDg?S#Z0@T@+l12d4L1JzI&&1z{`)!O=MIvu62MUK|lZTa>&?Mi@Ul5k(>poGhJ zLbDJn7ZE$HheL{JL>0#!yc=H(FJC_2O)2DD%hcJk+=OM6AI<}lDg;)+05gEsG|GXP zfcUyArq5x{{^R3XMtD4&4;Yvfgv40KXdVFQ>p)ZWP6&x%ml%4l?jSU{BCfVSlT#xa ze3I*%qN)3k@gyhyv-72z&PLLBFVCG;R?Gasy{p}_`p@tI2p(NW+*cjOHryp`6g)PB@*DeSEpdTD!NaLp zQVHAVj>TNuShM<5a(Sg1FYV}*=5oy)dG!A2({a#5J|(tfG-6%PZKOOsEhVMYT%I-5 z;z;mfvs{#%ZJEk)2+ZmuUT1##H? zye`D~9h5Ed*Y6fu?-1ID@be@U680$)?}5H3+94>oVvdEr5cX`^=43g%;0wDHNlr~ z9JgQJ@{7*SH60xh`d@#oenQ+Km+FKfy+|c>DwJ-CT&fib^ddD>2*b1_g+wP5>O>mm z&*+RM?Qw95n9X=~LX%Jd{Vj4aL=TQ7-Tj|e^j9uKVbW-6oMEWuc zg9K6m-JwuU;^ah{6et&jDT~c8CA?|f;t#r{2?Iy1q0C_|YNPL+3mTg3FZW5pb4y&k zFgN5CMnthxgdY%w5@9LIq6q!^b_Y)vt+ayD8@stbrf0Ks(f$+*vZ3j6L`zkA6g@r; zOl0x5Bac8B61f#=sg+MJ2FJORTnrr_MP$!Q3l}Y6DR^_%XP(K)%uog3=i#b!0DzE0 z2&IBtkZmX27s+`Pl*0)~cK|9$tcQXUg9-|gc|5iLB}rh|#DYFdV@aOwNnbT&>h0|^ zfLgyQnNF%(xmK|ENukT@;G=!r{>$WT#Y#>O8k>|pH;~h4v;74h6a-!EO6qo@4MSW8xFpe8Yudo%eI1v0{cl+H* zw;Yqh80pUfc5@x%Ca_TU5s>b{{ALZrz&kz}V6`WaR!#BRw%2mqbt8^(PyLM4Zux(4 zMi`B!y3Ja!f=vI0}f)3CZ+?<684{;YE;plu^(e6%Z!pL_D zO%Xbw4hvHJ;0w$Vuv5BlInC2?lck6bPC%@F0xEC2C7X$(CYlP-&{>JD8Y%ajN51{k`gFAn52+FYe*pg;xP zSR5?3%dglb8a|m|OGK>bF)b;HF1O1q3w&tz=$((F!25fBpG2edrf$o(nrbJhOXyzD?0?qbx#u63r6{{f@Q!Ph_D>xclJlr6!v8 zAO6NnC|H<%*NJcjA^I&3dVo%C#br z1Ej&j;SMnctw=o5XBL}_gXNgSAaPM1wp)o z4H^W@DN|CwuD@g3iNJ5-{D2GIF_AJMbp;us#v}qrPukr8yKokPivz>+!sX8iV|L|o z#NG7&q6Jk+5ajfKZ+Y`gsEBxjeht6B`KBA$==W%O&(q5nJ()$zI={UXweK1WkskNb zHF1K+jxL{v)S1!kf!h{kZ>h-6RN~oaeaJ&e~cD4;V zDWN=(sX=zusWHgi`D)F&=(ON*!`}G+T;ls?Fc^#k0s*wpM{k4qX(^$O-^$eq)07k{ znAf|+8X22X^Efg!{XYwLq>VnFgw+i^0R2ZkGSa^jkgJx;f*nBvzx(B7&|dDotX3vYzqF@ zT{BTl*hHlov=>uP!vLrnxMfDi!hNYhWb8N_F{%q-aqVMlZ1K*Yb%8$9OZC~xu+!P> z^XR8^5RLTWq>eFgVtG0_q^v^E}}ABzQkQ|w*^^R3N1W%tZK zU-m|rtJ3h(AKjAgIvpX-jPm_mKuUSPmNjgFZMoJy)BzhB0uhSh3O12X)i{P-;a5IN?{T zuKrKyyt7>4XSVgT1qRUSK8?Qrq8^?C`cY&(zhQECSBlY)28&VEA$_J{&TeMGikgJA%%zXUzDXID_@+WlRkQkd_r&G z_!3@Dvy;A*SYI6={#m7V65{G#>aTAS*H%~G+2UL|7ULQPO`{`79BbLU($x{a<+V}? zRVqt5WxcCQz@jc4dltrMu7i+dbfJ_T3vDyU?vji zG)6JS;;>kROsKH&X3uusde~;mIUL7qHrGD{DurDKU4Il;u9esYdcD9Y^AfjSi)OB1 zd16LB%uC`qgAox|q~}nC+sHQ!P39K`l zyToXOAkQLVspBDD+t5H8uf5ke)PONe_YArm0})wa=Ul)cL#r}hj6=|Mbp9!i-@n^~ z65;T%(87fw{~LjQKHq!jKKh7KMG5RySam3VhUR}_@oj5-z98B)OC0TR3Hf@8GKNE+ z#Un~cbw2=It@s)>n)VvbttS3n>r)s7=!dDCdussjyy)RUcO(1pAaGdz>CNUtY;m*mVK)s3|atVw21i}330!s#j zTZiizz<7{sb8uyR0{W9!HW$|ubpuq#{jp5@J?`ezp{MA+nE(quU|#p3HJ~(xn&=-P z6r_KO=SR@PDUp(BCFF}cJCO{O$QGf*pL>xmE0oJyyrh6@3R66`J|or&QUcvw=t6ow zlt8?Y)p+=cuC&M?gE9m$$CKjvQYk+tn$nPkxfI| z$!I#aGBKy+#z1or{XO#MP%IP;q2~pflv1op9~_=`!-)j_2--`(px0Ae0Krh=z~K^8 zM247Bs7y<*iX^Aer!*ps2g+WXJz|#w3iWY9qM@TBfEq)rq|?WYfU8+djPdbCV>amC z`oJsL8LW(r?-2T8mbJ0*c%zxxedb1K>db1RID!p-ioc=eY=Qtb8sk`uXB%n02HESX zb4s52foW7EGwLVxj+jZ<7f!+N0b*X6uyE& zt2^Xm2s(W|^?C$7Mjz@7qk|pv-`Y>KOYM@7$V8uMkyyo1kp*wDycZJm^y=m+`rEtr-V2H7qF!PgKpL5)Q!CNswzVKp?Bl;_bQ}%|8De}y zW)T!S%z;b;7;uNgB5{3PuJ6*SbUi1yb{H(37I_11!OumyPOVteWhMi?YKTK+@t7&L zY=#+kg=oujQ93G8iCBCSD8(wF<}GpNok@ug?SO^ZEOl4qjK{I*es-Y zEaFh^(_hk4gm#azPvLb-(O*R^7hez;#V^=DD2c3Dv&b!RFIl?^#i8u`>det&`x0EJ z42W;rb72b_t=hB(l0&lCW?4Q81JDeuQIT81rJ%r69r6QA@|<}X`p|mMTCT`{u~<0p zz!N{x82{g%&p(%y2K;#EFW8oN-(x>1MH^f%srFN5H2&ZG9|mr zZZ^Dl&5$(4l>rWepA91~*klN&fP2Qtg;7#@`VUER*Xe`k>VbiGDjSk^u1ci|rDLW=Ynx4fGyCG+ z=<+4AoII6^Ybj5k?%hKxm>>B;P}1pQye9~1G9q^|NPjRH-SJL6k};pPAM~sviOayo zk0iPa>;9uBvK?Q0a5|y{thNict$4UnsorhShUdUy+;DC^rq3O?#YJlQh^zFseG;mf3=Px}Rtk(nHwo;PD* z;Hv{7i_I?Wme?%%dt!SoEiQkda=Ocu3<|S?K!Vtx9nAmxUE0dmTcq8(s1p4|kl3<5 zzz>XVEsEQZ?Td(A3sx*ggXBx}z4Rx`xll$v53x|;4oQ0V?y-O*xZ#3bP&G&i*xh^u zB=5C}ts8=d;HK@c$IXC{9v;W8xZ)F&-)*&f(>Rux1{((~YLKi3aV|KBjUlKFXT}ut z0!g`vBu`h{$qP^KN7oDtAVI%Uub zIGjC{%iR#Y;CPl=@?6E-E|dwnc+!{i&sG3KGSbS@Mw;W<0_LE(XMXB3Ex)bx=i)hWUGW*`kd_7DNW zDX$qK2L?Ff9;kj@RQ2n^cpzYMu+hScO(qG$zyIA2)v71Zj1q!lDCUbSYDKRL@p;Y; zkx0ztiv=Y8PDwMp1=mzGm;MjrLArd{8T)!dLRobho-=nem%A={!O=eM;-?1yhAR0z zh$nxc$dSnv{0vVf6(Uhy5}sdy(dLDj0q7sk(QoB)LK%C@S68))q+)^qoe(LD;823u z4_}Q8;zhTmxS((mJ@IJ&!8Hz!LdElLJXYSFJ@ZRi#nYN4J=&lgy(4Jexg{(JZ{9T^ zjI3U@z$J8#tX?_2Jv_E;Q%qpyhgPm0@xbxJD_!e?Zgd$KV8tVlh-B5|fM;-mEqI2p1vrYePjT0q?TfXO;;F}v*eZbN!dVsppe?>R=bi~%&EEhe z#Qt*mZGtM$2Xit!dGiltnNB;@Mo1`g%14Q)>cjObay?kU9JTcMiXLAP)P?wxmkT@v zwAHs@S3nlN=J@XJ-G#i1UTt;qD3$~a1d#qv(zz#h`j<41Z??<(^a&;UgrB-_dsGnJ zabZysT|3Dg;0OIl-Bw`Heiu`|5rY~rXz#^YzH=?WS*`#BhWZ*f6!k+6On)Q$1KT@k zX>fy0tbTm2jqN#} zG=k=(Q?)tUoMmyomK$F>V^2|}RCUJ)A>~N(1RUa$90L6&15a;)(;AYap9vCMp&vE4 zers6*jv*>_E?BwD*0((Crk9YF_~-`w1`aghb!lVfC*zMcLvwAJv)ns6b9 zf`br+^_g6Nga@R1nbMZp>c9fvgIvSDaQ(reHYy*1DP$s804kr8Il-P|6G@%^=Nw{M z_5K^kBd52cuM7^pIV5vQ@_dboUYb=|IAxYOOYDbo2I%iYsNWEw0_k)FSQ#N90<|A) zBFc?)WWwBZm!AF^2(tXUlU|lW!`*0Lvrb~`REuT)04de?>XiEIJM_u+znJNL2DvO2 z;fYwSU3z)g4;4$J01cdH-hhkSHx3(J3@U4ZN_aT-_$-W{Y1rz9v{D1yEYh+NF9K*+s~75VOqT=YTi~N$_ zlP6k5>C3KNB5B&Raiv%6TeE2+n*VEGp-J3v$hP7GngJaDaN zu>kpQ=6Uhap4eIFGOmZDlV_s?S=C5JpQE$k!7()Wiw<%O?{S*kar!X2dT{V3Wtl_L zBev5Ua&jxT#4-B_QT4Czx`(*6I)ZNOms=@M#LvgRlhWt~pdH}mTK#@2C)%X^1GJ7+ zcFrY0aB=F|9y{^R&aqC^zFi?Vr$PF^lO@xD7Nn+~KG@&CufIP{pE6w|=ZnG-4xdM~ zbz3E zfpN3E`&f><T6+SV26KO`6rl6&S4SW5CM3vM4&bZi!puSvEEb4~9YdOZ6?OS>-6xq}Rh#?ykUH zqF-#AnPMsoS1^@^S75y26g(}?AU3Wpu9q7}D4Ov!6ocUpWAwfQqxYvulhAt}(7T91 z?;jPkc@I|$)e+r#=ptUQoQPCke|A6-4yoD{0rvx)UwdpmG54WcyHPQ1&$i0iB`tkN zii-B#tGOo8l1}LovCdR`c7_Zq`f)2Pz4}K5s zI2Oxmb#1Y@M z&u;)(+R7EX=j;CA+;+<%7*fSv{MFswA3~hYw%ND>KB&P%b)np$CAmevXvhNi*Qn{Sh4qXXCl<2c< zF2UqSDz{qS$8lEr*jj#Tw;5$S&;f!?kr^y&MAM{t<5w2xL@uGEdD>XsRopp4NvX7a z!^oi-Xz6|l#dm-{Dj5Z(61NqtQo06?A33WNI)cesUqp>6e=mY1!^L1RwAY}~4YDM`n23k+#C?`7Yo6!RLYnSG7 zw?uaz&ru_%D!O(71PlNzrLW+aT$BdWCt5>zsy`nAYJ58SGc9?&P*A1J^Vhet@o5;F zbA`6FAPxnH@dafav5zroTE5vK?=&^5&>MoLEn`7pX#JL~r0vi}5s7pD@+E)F-FeeZ zUG)1z=JaZ`SC+eYm5mP!i(&reuJ#RcjeMKfw(6oDXts1gw(r?V9eG*+-yz7v;}L)h z8jK&ND3~0>Inn87u<1k#t_R{TH4Hn#=)4|iFjbD&Ki8%`f}yOj7EjcN#oSK6!cZ57 z``9DjDVZjyiwWa*A2eyakVEqda-DX1h7ePh)*w&Bqi3{Td-qH<_4bn;=+k`P6TjTX zR;Z|*Z$9+gphzd|;3S)vt0N1uL|_JWHSb*Td~^izJ*mi0k?aBNEnjNQesa0^!~ zf2)&Th~BRz9RTmyNbJXo+B^|rLnA)FRj5|*{?EAffx|IMtKkMNx&wVIc2^8y(==E~ z+^1X%VYra*c_f!R8QONBhd1x>k`{nG zj!<~==L$TXPSir-ICKOumBnHRs;kb>zrc05yHOFQ;S}lh=pEWg9Lyo&eOe;4x)eR8 zv>N@7Ah~l>SPvA7O-AukWFBN(O|2u_YZ&^Lfq6@HN;4l}Ws!0ZHyBB`1ji;02i9dS!s zOV_SO!&lKi$ZXB*?j<=7u3t}8pT+ZT01HIHpgl+G8F+>v4~9E!!BISOnRQg3l9aCq;Hq+x` zQOLOdotF8256g!oiy?WZQ6$YL|Y~A>k1$1B6W8ELf z-E-_J`}~KOs^x(>RykKH!pMtw7BHh(R^j6RLklmH8-UUO+G=Zz!xJf>cfneg{Q}~Ojw3~#&6n+&Bpqz zSxM``JzT?To>aPkUcPo6$XRZgp}IomqnM%v~i{2 zNcR}!j;Us)X?m;GlY{!wC(Lvs56ol-@#$@>?&ZNvdpdb@A1><7v$|+yclWx0A;b&wf+OjkyT3IZ2|1bl z7mk9g&pdh=)^*mS59ozG=#^ffT-F*OgdB5}lF*lQ+&dr5_$kK|AvL#eX zpujDYcp<+*#_Lg*8jMvM7)UH|It=0FJVriuCtT%8HkK)Yh3i{G@C-8v4H`_X+1bqG zM3p|be#0T<#mJm6(f2uCvJvz!H-KQFIQ`wUe><37iUU3SFs@CS&c3#z=V6g zNGuSV6!KOZ;!&0+p+L;xOGWGtTgANzQY__!T3Ak7QRz|SU+wHPpbUMAo`px+9nR&h z3U9f%8(#`Tn*c{jJlWIOdkR}H$ROrVpMGrGw08O~n_||rO_U0J*u~aNMkrygJTX5h zln8;S6g#0IlFbzk+ zN<(%e;;8H#!JlVI00{8pKg>cECC#HRYuJ^(r$(r`kDS-6pm+PWgKX6*`UdhaP1FDE zroRO_q$e~Wg}?&c1cU_Wbugk9xqSiJbnm@?oW z=o%-m0YRpP6a&$jwS_t>ugc&~e0aeNVPAt^`1E~tS!$`ITAH{C5A~5Xp=Z&*Xs$a; zsX@roVO3tH*MW2S(GnhP*;5zSi^mm#Mhq7jGPjo%9fSP%KpR!d5!3yF@znkOA z0G~4U7TwXx?qic?DBifU{rKev(;NwCH19dEuZ3E?_~gh)3w`ZK&-!lSK4w9Tl8Clf z7gL~L@RK_>h4`UOJMxm?@)h$za|Bq!ee_GPt|d4zcwtVFdFB$=l$&bHf(3NincBgT zy6Dh(o}1x+$8kD7Sq%L>>B4hydme~d-RQ=J%x!gslOg{>*jp$9<=g-{st$D<(2Ouh+lNTwK9T7szb)@0`kH*0#6D=)Y$Pl4vG5 zEJ95G3q*7%QsfjvRRXov4h07g=pm)qSTx#|;RuxVIe_qZg<*BDt;CX86AN2wSjG+J zTR?r_`YAU}^6O{aw^|TA?$~kaAEQ6qM1tR;J{{O-hy%c}d+H|@vv-{T$J={=w^?3o zz99H|9kjaG zE+!E4}x27yy7Gkr7#S7@KMW}eo7eYNdcI@DK?IDdo$5mA6wSWC<6a6r+ zV6lTck>l+Vo^XDpK5VEl#Hc@1!E^-|hE$y^LONw+gPRe|T<}6l!YktnD1}V#Tu~2K zYhtdJ?MAYcz|wMeWO1OND2BlyAO^0&VcsFUDL76%(vn-n?{T9fevca^@$Yb(NXup1 zZAngv`3C=CDbK}wgYTzi+nFIErsiXC+aeDHQa$(!>O=hfj5)A0kg6)*Z#p~ghYWa? zjyy^CkT=NdbPzVS-b)^!$LQOBNdKD5qt8&>_vyE>srRR3(ptSbBxzmhxu;#K=7cHL zTQLc+C4~B4hh*BaC`bMCl-we1mzds2aw|uAAu~?rAdOCxnIj?4d=<3%bW|?IDHB3W z;H!lknBm|MkyB21WkNk{AQx2$6%I%kIq9{|(7H$@LVWNA{mUIYI{x~_UAsabYrbzX zO5ECrwn|0)Kw^#pEi6{6DDTkA4GFQ#6gSBAi3Xqy=@rHl-8p#mEE_BvGUQft_3fM} z7r>%;Q}2qzFM(gk<#I#C1+=`v1q}-ucs?{uHEUJqy@cj^W;DVJuh>5kLkWl}ANTT6HII4G3G852ajBh5n zRl~hpqqs9yPWL6bws;7)&9(-ORA-9f7B9Grf6)coWu*%yJ;~&TM53AgEv$@Xzo1sH zb%z#(!(rltFX+0jnDlVdQ4QSmTM`58AJhh`l$KVFLfbBo8``xBU3-nv>enfu9njLh zWu^tDxOM5po!M>dO&j}`h2AO?Qatviogy{Ym5`dHTrOWEvRA-9P!m&O;ZjFM5oZs= zT^1`LM!5iYw6TO73Q=b46hOK^&87O$r~X&3E|jU^nM}f(R6q)7<89=%ytXY}!!sC! z)yY-?sD3S^zn{;O_j^<({cwmQ7nTQWg;D`0s~EfQXpjd;U(1bmZO;?EeCGW}13Z-i zzQ1#Oz7`}f&ljF_Rf&XLC3O9u`6(0wm!sm7pFy_WQ_QyIKryNTR|9+4E+hrIFvY6G>0?u!h_`hkTObNpI5g=oqX7H;tDsBJ9-qJU^#y0 z@K@9K#Z(n$eu`&ukYiCpW3{AHROO+*pZR?^{Zv&29*S&npa*eGsVKf+1X|vIqN|>ysR423{t9+cL^PZNOBpIIQuI?B?2 zKeVYPYt>JG5-xsXSfc_PpcqLq9y7DTP7eVp2Hvr_P-vIr1L|Ja;CwYc)ayX`IaEnqRS6$&voV%vJ*iZNhok~$@HO}@D zx!4(N5i7L82UlZdA9t|1>Q=u|N7sKIUzTy_+Nhvo#&dgNS zz~pE5kvRPl*^8t>dLi{zp>B+G^@Z#9cELn`Ia+yBA32+~%x>j@8oqCcelnt~6D9=J zWN*|OlqSXgm%FuQ<9Ldr6uRO~zzm|^kHunlcHWhyR;dDO=DV=p(Q>p`HGFFeU!mZ7 zZt5~PM{H)>OsB~)Vz=5yPtp1!M~Hz4CD1B!eDX4o@!3a!MuUPREs(ws!W=L25b$$P z8OzjHpZ>fASBOCkuV-pc{Nyl#iFhh28eDqy|H9Ab0++JN_YgiGvK^x+eMd&^3zviW z2%Cq*3w(9vk%yTNJl^WY~qW5l1mJ-<%i2{W>{fLKpvG=DnA449H@%adL;a{wH5PW+#Pl_cosnL*coF#7(9cEn6&sz(6L}bJ()oPmAtsS z6Fw-Tc#gjJ)23HSu%}E9&`Ut-)==9D*Hd$P_yQT{aCJot^YbH)KN`u33?65JQFp+Z>$| zK36CbyIaZsjNiR)yIGOZG5H(1DyLl&a*x z83ksOd$PLjdOmnAPm+GILtQP3iK@uW9jeL-aa81}q(rIvQ$+V<>*`hWtAs{9uVQF? zPQ&@aOPsc7GKsEhlWmlFnNL8Evy|Pi zet@tvUj&vJAOwwW>cNz75zs6cV6VguvPgxI(^O`Q;w6gTg zAx3wu2=o`1&O<*hfbJH*E#{`6`8heyqMz*9U%Hu~8$u{WE|B_!W?2Rz5|=(j=?g!i z6bgBB%j3Vg8ghHVoClAtwio`Vm#1%;-6gciQbYCX6AgF0buC{d=k0mt9^ZM!tM4W^ z&|B#vU8>LAHV0BFU}-l{>U?r-d;F4L8+w`u@>CI z=4rEui8-4keL`2dO{i7z!+E#3@NMP{uP1xy?Qn*gK-9rF@)0;gO{lX953zj?{X|4x zFG_+P-Vm{c-~qN#$_}MjCE-Y`BxO>Sp~@)c%=WC>xTX=ruDEpz7B8qx(H6?N_LZAq zd5A&Wa`x@3i3ASsAyw$gB~?7shB+~$3ay{-g3O`Jdn{$Bo?l_ESX6Csj+Z+evl-|0 z2zYPyRZ1Df;3_cGF!ZB}-Ww|<)&fW{#SECr71ecrKLzG$D z;EA1OGKJu(!&xKDv|*ULfyo;Vp@rG-bUa{TT_*5O@O5(^{WYi=g-L!TITST|#Ys^U zxjwNbNzMTFbgJqnp^eMO0ZZ5OZ9OyRdCB991$h^YmP5Hx=D9Yd%3t3IDQH>kw!GGw zF&Ru*o6*u`wwSZfkS&LY`Y3Y-m(?kv+dCh2?c0KL0Y3=cF_uyi(k2m$k6tbk*k)tu^{r@IihG^I}g$~$Q_P$8ytgH zvvt_1ca7W4x&WpQZs1Kk!yLR4I>c-bJYJmlV?qKH>KtIZ;p?4D$fkVZ)Y+CYhtIEm zf;i5=DXZ^%>}#*h74hbL?ZtcP9}Wr2LyK--%{54tADrbi4Od)w*F4qn}h{nDziq) zkyT2|WNP!w%%06ldd;#bu|7S%V&fIL%|kkPtRmCA8^*{x@o3@+#rWv}$mnyu$NH3` zC;fc6ysY_f4+Kz~**?1xkIiBqg442o@&M;M#iy!+o%S5e`x!mLwpq3Os|=#7JPzg4Yl^gyxK9ye*4J;WZ3 z#8&6y-PD0gNZ5+*5l+tzZt=@SdlN$jgDIOEf&uJFuaOm>$6XW?3idMj+F?L#LJmk&@ztHVxZ;7To9`wEVrsVo^0ff@ zagyGhq}J1qIO!9_MZd$T2UqljGQ4@I8>>g(UBk**cl#JmbS!VEn(Ht-CfrcP1awvi zgJJ*;zf}wYNWjBJH;z(y7)^Cp5Peng#ULwSN)iP_J(YSe-*sJ4XS98FRv; z@@cJFe;eGk5wfVqncFV)JDlKO0*t0S^Z6$iUBekndEQczH05_bT@2&zeFoQkRZ(x{ z3omw&2weBu(< zoGJ27;R1P?ZU^b5cc}N^v$7>ChI`+MA!TSSgFb;z&1+p_<;L>a4wIoRsI$Vb89grn zcZ}#78+)WPkgvybup%%ufSDuni5XN4ydyWlVfS~IuvIP?ybowsmv;GV67)9JQ+V>; zZgU3|SEhC!{qxLIZ~WkjviW{frkKXDC5M-ggokD zx3#C&QSTV&{Tcn*$N%8?;lLia2%_sh&O&s1do->QyWTzymD{l0WFIXSGT)pGJS9jj z4ehVF&?~u2SPp?A7)rY+6`xAOArxVLRXS+6fnxT~LY2G8QF<+X^kPIw9ZXd6ARY&2 z0=BDf6vah#~yRVAk^4l~!xk;uoz9T|0S&!$>-Oue2?`)-YT2-9UE}&q-@g~qI=wLP)cd<> zCr_>d%hss*|4?~WEUMI1EnZ3P3@U8~HBai2fKHYfY}5>1iG7nSEf|y2Ch)%zhVnfb z^RaM5Q~Ycc82#;3TLAmYC8b*C&4PV@fuw4fOsrweT*5`_OL|$?_LGBQ4b^gm|x)#j;T0s=z-h7;t?30rM4B$lEIm=dMPk|49ztR z3dMtGHfUaIaKpW*c z1{J&|qw&Wo_`uL<9VK^V_1z6vT|o`>3N)OdpWz}0BBmB`T+~d}$Fkv93-3EBMKHJA zASc+FLm|Y_jUoEG)F&Ms9dNQs#~eI4pn-dH%3j1J# z#g*A;s*2)Lxd0I2aq++$2AF^oV3x{3vj)cRrXP`)WqiYLxYT1QZAEqm^x$0w5FYHw zSbIksxS)|%*PkJO&S^}>St&{(fE92!!~IRtN`DKW<*VuI=tEhRw~Z+b8@tJw43;`* zvQTr!R5g;MxSCua)wM_yl4kl(VO?{*EGDUM`c)UnlE>387&^ADsD|Iqcg# z5(&x_$oLjWsdvB>&nf*Y=VB*_+k7yu9J-|ilQ7SXIhAABthbD~^tQao43d)9l-s+K z2DdStJCLCYzhk@~F8*SzO9idm${8%Do>lvt^nO!y&eT^^Impyohl42{G8}o4RS##3 zIUQ!P=a`h_dM4r?PTQ~s*9)75$UPbJ94~&|G7K=6vVxc3l>^LWYLzC$-ohuap6{V7 zb!{G2rp22mp@`>d2mVXJ&e?k52I5a9zne-?e+q>{x2tkDHiF%h)$d5EGS}4Oi*&Eg zX>B<`Bf86twjPVs(ziQR_&&9+@LQ`(Ea1YlBuJtNgv6C0roxLfRHnDELg5EWIzm`XkV}Zt+bBovr@NG`TXf)gCW2R$G%MdL@U0R&v(Qf z!;6-;^3)n(%d!OnzqAc6T;UbM8l;vLi$@*wK_+2gL7e^Q16hOW1*FwD)Qm5#shfT= z3L4`0;;xIDTO}!xm%Njr|Ck^j7OtiwhK`NPX4-{19pBtLe}%tg*+egh1?xrjnM>ET zkrY$A_^+75+R}l%s{a_1vNY`N)j9es2FrlMXzvBLHUNi&n^|8i+D@s9h}#N>8BN4# zw)5}uSJrkWXP}@K1b$T+wh!S~0Kc#BaHd``KcIB7Ny;@$zvh;UyQokzs@kx@RR%xBS)g!N$H?+`qQ#~+9eMhd$6-?({I!zg9;P6cKPT#_jc+JN- z>%hELm}cTPjdcY<5#&91Uk|B*Yv!{pvSYof;PTlOn3i~M%3+dkvW+{9j=^$^efU(P z*lL&hWaZ_1I^t1MHv7JV%i0pXVl_A2Z%b@G{rp^gbnh0A00vxY*KXP6rkzj}I6iq3 zWbCFedsbb7mFH$twqD%cvK9P)i^E z6<9^YbR{-NEq-V^`(Qc2PiZIlDdhc|3i}mFju9;5epPVQT;>#-kMyVpZ()eqF_GfGLD9$X$swP_WoWX;rE<7byEREp-g5;R%$lMsk0!> zb9WDDV=A>$nH6*wssQhEMWq14$@C(6Pd2Lvd2T$J2O$MP{*K+hM_pmElPx3D>edb@ z9Keqakdqn9oEA0;($7YqjEqAWc`yQCYFq@86k&x)r{E!mpw=2Ygx}-I z?uW!f&aJyTVX)^dW^=DYZ_Ap^mVEK_u{**CX*Vr{WF?q(Evl9>8%2kh1OYj7pE`TY zzu>Rp*~5T7GU1A6UvzhubM`-^LWMQdPYT=Jc>#=A=3svF}TI?G&HS|ECee4|jj z1IswUvy)>HKnoK9VIN%*doNl$ceFz67#iOci|GU_ma5^T2}oVY$|%^WBOO~v+6w!L z*Id_^@~eeZZ0N6d|lBaQgrn|tWTqPjYW3)N&_99&{b)OvsY^>+_)04y9iy}PbEc=U9S#3%@C z-nisl7+$;fVO*?CWI(+d%_;Qyo)AYN@MI+t0rgw3!E=hC+Zd>)abF&Ae-HLPYPR<1 zox@h6ZKPaZJ^+4kaCiOe9*anC5E#2>H~PmD8jvMWcstS)@qDTQUeL%_EwF@-T~^8$ zGG};xvdzoFuO(0s-Nt8zl+tN_I<8_3j4>L2OpQCDb72qbCWes%1IN&)EmjiH3K?z2 zlY_ME@vyQS*67*D;RrNp6Jp4ytpjtLv1iaUo_A4;3hS6dxku$& zF&pL(6lKl(a>{|DUVNAhd-6I{9BQwmSyw&;)&9s!g&&ef;tS&B18w^HjrDx3mRr4i zt2+Ts(g0xn>x>P_0UTqQ&K=+~`xmfOugK2J%%>j_@9)b6z{-lQf`Amg)u z;;}A`KkC3Lwq=-{%vtCA5QqoZ-~~WZMF~L_IS@7b;XqsO18(09WUfrsWZUuZQodO- zarR2%$JQlBCvbDmEx#w|HW+{S*57* zz#Dt~E1ufp!ajZN(N{MWJ!YwaK4pN&LY@gebHnACAd?1SB)iy~vO3U}Mc0c?68BYj)&qA}_2auM28tjg*TW!?XTOzZY3Iuh$ClWPD?ye@+X$c*7@86+vP68lX^C zz_$-XW)_0jGV|i~MY)uzSIh;J;9q)yI)4Cia4sC@<-CAjpnns)opfj-0G*=}nR8;5Ri@-!^Td_V@sk4vKq+fL zg$ZUN#2xD%*?tH85cOxU@q1Lk)hyx9d#qPEbXzMQ%)N16rxy4h2J48;1nW0#fF_Dz zSo#spy~UgoOFA41Ej9g$r;5hOnSPGb@+@!!rAgPzDP^F4SVR)DsER?!P`vEPEa8g8 z3NeIuRj2|&e7RpLmh)k>oOd%B$-kThmx{!hJq$F4uwy%0)${?S)G)*lXPWc$Gf}lu zkmNha;jpltQ=Q}kse-%V)UtM|O3EQbStCd8r*!Pm zBmTl`yU8ne zi0XIT@dZfK^?=@&I7lVm;Aa$n1}@hxOzHnj#_=L%Q#9XFKu1>EVIVV1HY)DP+LiOl*?eIi z_1jb`^?)k4asrAx@RosC=(V^)wXDxx<=g=U0G#|w`;0w3$0z<4xg>F)1fVPsv!fQ53>9Th;hK~I+wLA zWJyl5;X*V{=0c7{tbSPn-ufp%5^U2M1V9WGDLCoAa;?uxUi+u50(P`3Dsgaz2t@C- zh-`LQyS$ElN)|%YO)l+ z`_IrAqznA2svu|kg}vkt-giz4fRDfO;q8^CUS%tE_+gWPaPytB8>H`2*B0j1_m~G8 z_yD*xcKexJem7IaAIqwMMvf_iZ;~?xAov*lLKK<5kTUF!t6g?Mr?{24QcdfR8U;q9 zST}3$_}f?2jL)7mR4LTz1dd#9U#{X<;*2^A=_sxV-2N5>u}4(xYalOxL=1iA%#*Fi zoohaj*Ewg}jP^07UhiwwVhctD6qP49Pfdb8(|fTAIJe@%EW$oGp2&^~;4xwNhBHKh z{pY2luXK0cgs1c@b!*{@?{~eJrym3TaO6K<#nk4fGTJt%%^~tYZGJLmn*e1qqtHJS z2)x>A08rgP#R12c617k@g`2>x=odPvVftRuN3W)aAR|8u?B%(@K|&0$Th)K0nQ>~@ zb?GXGtVZjILtoB3X|NCr)Z~cyahaZ6Nf`mV_NbcAbe*xrxCl>%^3TVe_7Wje`OGj| zItVryh5hwRQd(6-3CTG9VUC1yO1-|Xjgs?ityMya;KFbHhfeniy6-s9#z774bJ=V= zQ(W(2xNtXT)P8V%U>dE%0CK4VDHr-aXj?whp>$gKQBgD571cLX3KOy@`A4$wcPdA( zu~h&*s)Vt2fR;h>P9w6r)M=H=AtUc6Yw7*eHDDKyDkEE#S7W{yJTsyUug4ZHP-t$+ z=#7y!oz=OZ+GOkq8EmcvFf?NM}4I zl+Fj4&$=7y3h20LkbGSHtdKben2!p)zp&D2g<8Z^LH3tEYvBOr#D%4+s5iThqz`8f zc2V!*XHtc)T3!v@7H;6~5fw0A&`C5O%jiv!5ROSi%%#s%IFzAGw2+*q`%6E;o8zqI zH;NCS6yR{lR|M*hS*7vS|LhZ{;9yL|+{HfbMQfm@-U%*>L!;ri*#^%6axHxgeIt_w z;OB4dC11#z20ZvRbYoA4wKc*x&=PKsTiazRNf4T90I%oCZ)igcmCw=X4Ecjx+T=U; zwf|ZKJGbV(_WW%g`swbrFI{u7W+H>i}&BB7H}#$*ABKRrA~>oCBGolsmxpp zW9k}S-G=tM?nu2<07Z|YB{S-UV>Ny9&B+;)>BovaM#N(-yR5}4z{(AC-O|@=!obql zZv{~vmi_1*MH)NAC$OsEEMzvg8Ghe^n6(XXzTh{2Ch!){FZFYB7oH*8;M*6dpB9|` z*qkgupG<23oaW(f_0Y}8J?1vtnAbDZsaciAicx6Hjt$a(dnPhFs-u7VW^{EFoQxf8 zsYGmHKQz0bgQe$Q#z*#0n1Z5!Nr@bRsQdJ00*;RyPOE&_zSoPI`jN~rhrxqdN9bqb zfCr@j4>}w*`GJFHbwWD71^{er|Q0e zMSHe(scadu)|9sz?0r^?rrB56k|K3UQdRgm`G^)kzw8lesPH)4bq&OjuQ5+Z2CJTQ zkQPlJk0`eB8A&N7Ua(lF5+;$0QTXDmFHAA+tS#nBa0Hk7_}V#}F6@6cXBlbWgL-mP zzm8f{SWjTV^1fbSW!IHsAkH8dSRS!|oL4&p)h%@*jYdET4Q62(=<)I@YU>?55aObb zkSh8|FzmI8zL^H7v8AIN5H}n#Ihj?(7y?Np2nj}E#d(rzg?^2$UKkhFkYJK5R%dVW zAZk{(!<=}Oeq0}2F%;E`pzok;=^SnSiAJIfw(%rFPAX?n)m2kJjK!jdRNjdJJG$Z8 zZAoRvI%dkNVnJGKW5}cs#d2n=8KJg%h+xlgvP@63#F}DvTB2Salkyp`wVSwGgJ7TO>6vsM55&llH+OHA_&|7 zc+7#(X^k5|br)G1Ha1IRl1B1U`!ns)5T&QzX?uEIA;U?ux3?eFG|cX^BOkHus;Dxx zwVDUZ87o)k)TWqTXGmBL#+cD;NWzCkGR+Z^CpYR_z-3NNk2ijLMHSl#z zv_|s(Y6}QO{W(YC3aP)M*A)oqNkHyU z8{14oDzthvX0@G|V{O);S4BQdTIq9YiNg&@l-nt%{u`d^LkRdVPTPB=R~cM|t$0Ly zvN{}FGU3<~>C1EC5f+YT3<_BcvVpYugYnIkD-CrwFr~U!l#a%rejy%I~|G{%Z zD*WW9!P^r}osYfp>Kr2E&HCyK_t5WvRlY|Z>ZQeb28yKLj?+JgbGA-LBvpgQ0g;3{ zZ%>xNX|1EqB2L@iCez6U1fm%c$uu$gIXC^|_kPXPcaL+vRJ1vytg(8>KG;)-#{ojX z@o6Eb=**^|X&o*+o5o@#f{hlhQQs{17jX_;xU!rxaN#j3+pPi| zCc=T~n-JD(w1^ozxsGiGW~`%-BtS_vK+bd-hZ?aX;{mOin4+BVPKP7LX21;^>2$!6 zXj8T;0tspn{m++Uvl3&8`{^$_AZg?%s&Ph=z`B&*L0)i&I(JherUmso6Uwe#Y&&^l zPHXKl8j;*?%~>p#eBnoRz`r##8G=60jkLq0)}xa}gdD~taLMitbML+Jpe*yPTpJSV>c2p7(zI@r4T{jL(^V;ge6^ z$;dPsRx=rtO36>Mgd-5iMN+F)9Yf5fqFn+z#ZiJB_8|&1Zaenst6kzM#t~k_%v{`> zQ3r5>(zlSGFL_R0o72P5P3WqX?1r@XqSf4PBCSOPDGES z&WFj)!XK;^AhIm0hPqfmUIQp+%l%h$0F(oWn6jFIawM~!J2C6Wo)s&X)Iq5O!Y#W3 zaH+OWjx8QjTgiDBF@`^lav_1rd5k{K*`6OEG7qPymGWsSygrfu_K+|77Zr z)o@XLDvC6c-MA5KD;c35CYm9~#D=Y5p-#i=KfSNXpz8DWE>m)^duDSA09+2C zR5kK4QYI8fHk{wNgTBAx-41#+M+OoNCsfVzhX1vn*rhe63`SF@RS!-M*p(#F@fhfa`Y8Fqri3$PRPi-yqlmF3O$726a{Hn6J*>r88{ zoyl4kuqYV})5d@j)(Hb02aBDcY$tg$xe^Ar{+AX}*GOA8ZC+Vts#(5qLx>Wdeft`h z%q2E&d}%*@!E5aqtO`~R4^UZzai<7)H|5j-Qc)#uqKLBbfPqqFUS z*RLp3s01rsIYl>9SMUqBKHbA9Z%uZ)frBD(Dfp%aSKH#DupeG(WxV#OR;z&>Fw#B!cd2x*~v~6vjP_GkIE?Gl0O3Uq%R%wOf zV{ou1)YB)uy7x6Aj#jrLqb~0T%)HNKv~`>8=3e?oS*q{>W4+S{8&FaWcjGv~y9QuH z6Q)t)aDwO%N}d%B6m!ta@uC2#)T5fXgM5o_?Vz%SXD3jMw~|v<=;|ihp}}>6dEBrB z2y4VH3%EYX_z+qzEZdBYCcEI5@v85vJyZ3(t^0(m$lO zqF;n`fT1EH698*NrLwGcYX-{`y)kPqy<91n+Y_)!hkd!2soQ{hfy+bZ!>rp?pj36k zR3cd-K4E!+{a3^fvAth3M`na_`c^8)#fv+7*{0&OY5L2s$QUEq`2_Mf8v>U0W?8$e zDF{Q8U1uA&-Pp-r@N%Bqnw8h}#(>($4`rac;)0BTFXF0rTq$g<0+tF9m&-wHmMaqp z%~GL5D1+UqLSQ^L(BFfCu{0N#EW&j#7pLz5vL9eLX($+hQJ)YvVHDWxlP08I@~329 z@{r3I?J(3CBk|Yh`-sqJk;iqQMEB}1JPQ|$IsseZ+VcZL)jy;C3LOV}W0X)JtTG7| zTvMx9B8P>Qu;r?jLV|NFzGVmVj$Ei4zeYR6yF=98_W-{si zW3ccQZ%POrwxm-Of+BKC%dTXXQyH4Bl-8EmwU^^uiI#km_TNIiS=f=K9?Gfo`rZ&n zCGg~>5)mB$N!!Oz(c76y-CiU-qte6S9L@xT?TV1p!KSwi+3&G1jI+jsb;xsrvI?ej z9&dj&UU-T+Solu46JSs|CR3<=L#!XQU)v56`u~6vx=YP)mto$%>86~rXFq1S+`649 z1F%}GmTpXK%{D6=g|O5v~Q6=;xPA>Pn^=bFj#FDct2h za93|x{6bG7M=TpS?ouh`HW>K|8FK;NDVnfFRX`_rsSjg zy=P%bmU#T!-r8*N=(%30LD+rf5PhCX=jom<4`xSX8{+}*1ad~$fzQx81l?8B7;tV4 zBJThUx#;ScspvxqAZMhZ(Xu;6e<9%_~H&P99qP)t!bX6`Vo$l1KAbI5E>tHe!iyU2d1465w6rx~u062gz z6g7E)-qK8!ClAoi+M#g@ZEC10`C>AW++%HCFk}aCm~YMuf7{~d?9dA|TAsGGo&HUh z&;y(fP;NV=@GTv6AP&@ULzlewP%{q(SL?6MXiQO^L60iF#gK~n7@y{il{!}tc^Iq_yI7ZA#8g$KICC$YBM1BY;TWGT+|f%N z?vZNM;X00-Z*LL8Ld+N2n-1JJ3Yz4Ck$Z1iP`UfjMF73?7Cs2v*RNevI|3IRt9KCp zxhsbpN}Na>pXoU-^b47KL1wj1~%9$hT~sNz?$ z=;exx5>)0i+76?}oHFZ7=?RY06l_roG<;=~SHo=AC=CYk!BLh9M^^KA9`JrP%-F_y zgaDlLMf%27ZaAFcU&N+HTOal*+YI zh0~<(h0W>WhHfQ{|6~2grB8RNd_elug2DFZqfgA`f~+TSB4C((PbPD`ZvD=vaP0B) ziejyPm|jmGO*8W!pH*3cWygRYv@c@vOJLlA420jsYLd6>sVkFmHPESmsah*9gH;-m z@cKu$Z&U`?An=JDZF-dyBpo%iGO{7{V_GYdlvk-^pqEem5&X!>&nq=yjK*l~tI$I; z!))sZqptwYz}JdFetL%r>!fZ5x|$60Qz!oUR*W8m(N&#R&@;&`WVI!#+mr@=g;!-fl^!08UMnDt4aTNAMUAr2+mKt=r4U!j zwL{lpHi`Yy(l8CSCD^r5?0_=}%3TG=!fZ-_zvB)foNi@&2oMJ@$LT(S%-nJEgTgPU z)rI3N)c1P}U(1oUVU<%6mYV5b6%lzHlslTnk_V0xh$;-6fqe?5( zq|95lhW|1|zxm-`$y3_uVVkCWoIJ*uQO{urLGm)s?zF0BA4q(F7u}gsm-m>p=01lG z5H_Q=|5GL3bSr8HD;g+mCc5OJ8Eps;jD<;=!(#YlOmYd<^)I`%IEwF}5(6=+ROl9aHqa0a;{>h2u0~lEg(o>X@>{h;R$s@J2smwFgRw)*sZdlp2MRU25~G7I^V$zslz8*F*N>wAjfXKLie#*{Sd6n++_moRfGt%v{% z#2=qx!!XNT;U5?Ais?a{`!6i){~Yz7Mj;P5wYYF6^Ru^Gsnd4{p(wPrR`H>#-c21Z zJeMbakUXkZE1GMs*Z>WEVe_)tRyx$!e$A$u#_B6~y;?kEloC0TwhV!Kh+f#xOHNG- z{V&9ncJQKzbQqd|FxWtiwbLK954DqFdNIREles|~9_KOd>;P5cpVD6H_Ofbgpg}3N z2&L5xx-E6$a;Kt6Sy@4RaO8*7i5+zq{;Stc3;%fygnym3!v&+NFLaieav=$zL<(TxBlH*-d4Log1fs&89&)Y|@=E*~^2*1f3L7Bg z7IHiW+A2vA@a;h8AWGq?gXa^8UsIM8eMRCNr?Oy6R&uNtentJMqXV$p%ykW1NXF|n zN0nKWPk|4EaTPDza!rY7tSpXV}=g2TvXBG zfDIa;j7~udZ2}rYYi4YnaqWzonAQ+{f~m*~GldL?2%1DCNQi>Mx(N_;c1F6?8`1&! znF_$@9Ot6Zxyykmx$tkkpYZ5^P}gLW?;hf5bi%{$%y-&4BN~?`oGSbPwx`xRF_<*e z!XDX94zNnaW{oQBBw|5Dn^-L8@`ZeAZMLkbcV3HLTPDG=x`xX3rNdzteWsWTprMC$xw8a_Ku&V_*xw={3dDl zf{T#^B^Fcod$sfC&#HuoROVT;zB!^53@!^wBw~ufnG)#ka(IHqxxK`E?Jpjh*O3=% z%91%-=GsTz{3iqFc^8hb+Eu$cRr$RQJeeHuytLZUYtiGBu_0MwlD-$SDtf;rhsp^efcSP%_ZdLH>B@ zj08HBvL{nvBMz`@0WH_VF*%``R?<>XLFt5Qr|ecK^s949Te=t=WRfX4rIb*5`K5n? zdp4#LqkngN_)4m(R&Wd#e&fYv`u8)|z9UR2?0f>W?%PM2@MHYQH8g9a!{0Rah5U0orJOWP=3lJ4&$-<7RC z-vJvYxUFY9YYZK2dXGL7`HFP;qajrD@}2IkH^rjH7GpdK$R3yaJJ{a6ir`8ZvIT={ zI@GHeyah(7WMz#vWwjvPYp{(u3@91{Qin`#{uoF)mIR(lY796@nE>GAiWys`Ah=7) z&5NyP_FRjNBkVSpR$EUmus~W3F==Ra3 z31ZMLJ03Clq;YXe;lkhl{_)2!%?=z-`WQ*4zm%fhPjiJ5W-vhAQBH}34tTmS7$BE& zFTBxq+k?Yp1NYqALG^TT6rMT#e48{kQX{240G{Jnb<1MV2LS0k&)$r>_W%q)VzW1E zv}6o6Q&*`mPrnzMA0n>gG1^Yf!M<2*C~tdkHPcXr79F56Wd!~U=6vZSJqJ9BEGaV^ zMb!2UZ#;ZcleAn|xAW8sjL$|uprnSuK6_N{!Sl~SZB*P1gIU598w4LeR-u<>y+y+0 zWG&0bh7olgvsJ5{{>61UQ>wR?tJRAl%jM+jv~dqOhJIM}{w2`!!)ri2zcxm@2J+l< zS(v#(q!>EyPsf#z=0hX+P}I~4wPiECy35u-yMe3K3Xw)yD)N-3rC1-o+Ou=3}iU{SlmFS^UM_Fe&2siB``Le}+6tNrlwR(sks+62Igpb00ZRaKC+y2y<&=tCr7 zEQO!RPz%(_Juuj(Qgb^V9npohudByB?d~OOJLn{NE>$l&_|1I{LcNh+x&66CiM?0N zv%sEIkz?tu18Fj!DY;5I20%Q??`eQh6>iOzZk-iO+?200*t$XgqL(golENE|iQ@XA zQWpbP6|(|1h*_1;)gs%3$ygbLip5cI;sQ?=f0R^MKq;e`c1)!YmvH89ba#I;gKD77 zU6dfF(CO0NG8OE8m52qjjp73{8-CVzR*Wz3@Zm}tCx*zbaKpkeOTsj~u<$qLtV^@K zpG|9cJ_3M#obM!81H>vxN*bv-uU5wB7D`Iztiayk61LeP5Rr<|V2J#}SU-}p2-F&$ zF`nZA)gfuEvUGNS08_npd^W{FXHGySm$Dj6DU;cl2EtQ0?HiJ}8WS_!IpDbL5Ejf%YQqqG5b3GlyCHw)DrrU?!)fo#V$jZ6}B#Q0{Y#1GtVH zqBqdTq0IL%Wqu#z`^Hfmni6^Y>1UV`bP%AtF=}X##KrZ0CI3eYoVbYaqg?K1zVMkx z24Kll`_3)P3a*!5J};8A=tEI!!WIpx=AXF#uv}ViJ-7^U$3=VeTdZ?;+&)Xv(c2%F zb0tEm{oSPx-muh3{S^%MHg$Rr&^@6ed{s;d!W#%)S8qz|!6BPX8Jo@!F&GW8!UsuG zop_fXC4cs7EE=w)Ld=z_becq>OkJ~NNrS$A$wc`Ji3BBm`X>Q_M#F3V>d94uOZ*xl zFq*{1*p>+}b|>V}Y&9%{cCr^7ONQBXI1bsxI*5kF+t5$u7mO@+X~rdBD`R|1nY&b| zO?i=0+A-y6{$0w!I_(f=JUSBuYXLD|*yx6N);#LD!(g?Fsy zLwH|za&eoPOJDGtd>(mF?rA0e+oc|80USZ-&k4L0nTV!U6G<0dFS;ED!I<9Uho1G^ z7WC{e=KeV2*`bm<8a0Eyh1g4#C1tV&w>G1>*X|}|KMby20c={>=FPWu4b7ftoRz!b z$~jS)&}0#-GK;s}m_1yrYN%H?z?!Ag(!m=c`<0f}>_|0eeSU4LJ{TYXLV`l@MO}Xw ztYL8ToW`Cv>CLF9!e|@;tpeF9rH6vM!K$FUgCa6(0L$GBXztz_M`qkU<8F8=VA*Kw zMHS{tGj;|wWZnr%fZ){9bS+6xJt}gfeeefQU0><(OkMG(14Z=BH>rt#{DU5s$^zz4 zyQ$OI=GV3#dHA?oR%gF!EmAO+A26M@&b#`q*^U`oz|Dc6qQEPv#t<&_+vKlbn! zM=3EcviF)buXJ^NH>6C=>8K0mjpwDLM0&}xBkc0F_h}o7Q z50VieWS_`c=b`u@mO#&gUO!Z(fX>5u5OG52p&aq`(GNMQMp(zFv<=U#eIg#GWDmd5 z3{$kc+Q*L0%g<|369G(B={weslTCh&UConJNbqGPCG@)YP8ro$4^>IaINIi#Z$-)J zSS)r@odu;F2<`RQ51G7IttD+R7&BIrIc>6;Gw|F{K9((6`9Nqd2?Paz9f!|uyfmZB zM2g8L_xT476%s&sSQkwVp&{pkiSlR*NVI80a}&U2{W} zOsi;@Y2{D*fQ%FrR1#}W9b7vXwI;@wHp{5Lfc2jQuLiqVfW*EzrbzCnGB|XZ4%aZ(q9Q{s)bP@Xz)gW!WkEN z3V)#fQQ+CBCks8xQT11jS~Jv|oWh{*X@`E4t3VIOC0EAHLQ1tek9=|#gW=14&0 zQ~EoozX5b~v%2fX;)Fn48Qti{!*wm|)q_@oNe{4*F>W*&k}E=?_E1M8e3bsKtsIt> z5*ZFn@*zzZ-t)CHhx82%s``3WiwbtevHM>i<_s{b4&>jk%p+WmTjDJ+ zSUd|Ev3v8t;^4qaHT&hVkj_(oDM%|hGYTLX_m>KLQsdO5=)IJ+@GC3%Ev;`ySdYxe zWa#^us{K0D*PxGgT3HQh=y{$@o5z|_b`E;+0Mbl zP*$m%F9hfM*9Bo@{dwvD*6XUSJ@}MCcRQ@iTwM=C;UIby*I3g=gQ?2`G1zP}`Co)f$f11R z9H^LBwK2#C>}dVU@q6vFR;~|#JTgej%ym+KhOF?m$*gckQkmRRgQOVO%Dmnf1Hr@u z(A+v<6r*cdFvziXF3UGbVU?@6Ha^~#lx6m|NUVbTs~SQx{St`_R*!@STj}3-9D>fN z*-)L0G%I8dv9#77D|dujYa}9sXGG|4j1m1Zta)+wx z#zvIhuG=0}M6ax2=37?uYD^Km(GWN2j8P+KqtM^#>)X@Y8-k+iR=K%FqtFHD+vxM( zij!|wR8Fi|0m53s+BtKE${FOn;b26OMf3F z$3A@a*>Baxnj8|aR7q7RQ7I3cD_p9q1|f=Kr#Vo`CFJH+rwZbpU0VhA_6VJ zIJ5+hKuZui0;&kLwy=@vD?CiK|LzNIdseRWy-l6{{10!iq@g&+51)aR2k38cCoJ3Z z&=i;Cu`7E@tDTns=Fjv!pc0%Sjo|nPW18S1r^pNFFaQ03IltKa!x#o~UPWIEN-2{< zYCN{&#|8nIevB-oPn=H4HENJll=7YJBGvtkTW?757rdCC%^X;fH9O75E@s3-3ptK5 zjevYe5)$uDqJ{Vdth7x?VB~iSto~UkzEKh#Xf_h66QZ_UDFs0qd5eV+Qx%CpOjRc3 zk+-7H7M`=&L19AbhTyLFk;r6IMD-pOH4=_QPE0!Gi)_sRO&7BvZ8MnDaNJ!F?cX1! zFAT;Wh;3apW|!E7=Dv9=ygI?a(x41=X#no4gfWsbuCQq$4|n5)w3e+RSxwb2q_eDU zAxc*uMfWh=4Q@A^&IRX#8eu6zCB|I=z6G?H#co!ZZ z)}*Kn1RPHC*tzwHaY>WZ62um2JA1Jyo&Y zTNWnHR9WI3nrd}N>?dvhJD&gVHDwCXVZwXM7HB#A$jeJ$m*Vcfe4U=bT=rgO6zE9O zG6I5B5D5CoohkD;1Y{5?9j2d&DPijs-%f5%=zFDh@&2P(xf zr$hoHrMs;);d+}$Y8MOLanc0g_@FAW9k@mEGWXh$GPc3ZmB~1+*7@{YjW^2NRW=Tx!Ifsm7`g=^u!_Vhmr*yo+?_Nur8U%IzV1oo^sVK2aR;F!m z^F86PN8sx)&|k?3^mUA=2|@uskVyT~az#{X5YUx5uDNwql4}r$d+K%H%_=N>N3BZ; z>I9UeQqIx1UHs~1H@~h)Mg0w4!QqPrgyS3CkU+sR$g0dKycL_#7=f%bzBJ%zd-ahG z-j(#-tn4ux3~@XCj(<4XAd@;p z;)@p3#3{;sQcOQHNgl-Zk=L7P7Sq}&|~B^{|h6M zq0X0FBBzAMTn=XQ94dD0=N!JU{@%2C4y-Oh)nM{Ze`PMB4ynRjh2KzH@`djaVYkL; z8jXV-b4A!AlnTj`+R!ccJz{my0N&Ou1aG^=q_RKjAFonjH00S%+@<1oJEGh*)Im{R^)4+TSE8o&&>Qt|Q@qjEJ`<`is z1+eo-9hPhjpw*Qz4A#MRF;Qa={Zvfh0GSCpxh)3U?tryh_$h~6_{2)RS_q|)WAy;% z+6&i^+j2RW(D@xTQuruGwd56gZBLkzA#}ip)bpQhZEgECkxkWD+Ey(ODkC5WAeEFk zm!(vAbee!cuWQqrbR9GOUN8Oab`lJd8v4Tpw?7($&e#t6zbv*AJy;-wv#SB%_?1b~ z06EjauPTl#_ClG3lBmqtp)oQBi6~`}!Uz?tdurJ`lnJ=X29h$s;vqUrWvc(#(aq-g zFMN}nU`Ax3)XxhJ>cx>${!)XZY^78{0Hr5zjpztf&+m z$0l~DS1xi(b@?oHQ(s@-QFZr%5i7vf9N+e|qPWwG@QiEy(5bQnl4)+He{C*^;GyD@ z7g`YG5>3k=ZWbIU0D4Rh8Uxuwi1kcgmVkebtaNWB z38tX?sc7T%^{ml)BUjl7h9DnR!3(WUjCF}xT?nzHJaSD?Ip0?RWfbN5 zCUYi0IyMjIgqO6v%h~Q?S?vxM;S@-LNGesp=X732@(_8Dp2Z?xpy$#*a9XncfL--x zS2(PNwA!f|C~&PqGaSK=THQhZXGCt77A3atlas^rjrHF!Jkw7VBR9wA=wg~`X|r$;o-F^kbUhmk-tTW7;f?}VE^!NWz5Z`@k?6zelQ zD2#mg3rhCZ3MfN6ftRv<%%_u_mb1D~{?LyUl;1HX@n94m80lQOk-3(!b&J#RCcad! zZz{$&E_W`q%v%Nimrcrklm7f!lTXB9K>YChER=Z#QGn76(BB>)p+q5hq0!MFRDz^9 zR|-a?GCE9Np~KTXns8X_*7k;|m;b}K(~#8}^s9qi?J4_~-4$3 zx(eQNfp4rxsZ`;Cj74k}T2jf7lHM*3#JUB&B4DvfsrQSe;w{SX@)kYp{1Wh8H61Y>#S94!)d;|$0O(mh{Z2y4FMi!;H)OSx6Lihvi>tmgJ^1w^fGHiIXP-lEIWm6;u-V%i{f2-Tr@3~6PZ&~CJC zv^9`k+KQ$*cqefezBMLk4b)j!tz=ld@%Ibg!8XQpI*1CZg<(^kzfgk4KYm#%z1r2t9+s2%IaTB&9)mzT!D>C7Cqrpb zEW-&R4sTV+aE-+mi_9uT)(Jw#_9Wm+93Gp}NF{#5qFrSUkb72MZ~L+Df$d@wf9Jyi zdf|J_U*D=oRjO==i22ThK*0OI3Qz5_B0JFC3I5C&ls^Xm%Ys5U+|Hg#%pGf1!YSS1mg*);K$Rt*Q{LudVW$?WY4(?^89~z)K+NCje{LJP@^}&-Y!y& z9~viIBVQG#Up+8XC^6Qbs{klxYF&J;csF9sW+B#oNFKOD+EWU#|03E);6XQk3`&y- z+#f_Oo!=lb`U5$-1$oH1^*>d}kE_+6)D$}XXbS56z>ruXXsn)m;!{`;gO(MbA#M;R z7SWF(+);wz_|;is1YA8r^hI4d*Z?Aw|GcWwQr2r=6y8$#S*6r?7cc7q z=TfeF{$iiCQa1OQ>NOKwB;20*Rx5x{Mng)>%HSH{b|0K}Y}(DIpEzMk0auOzIG9A) zWMjhRqc#+S9S93j&}a)GeXE(|hh^753_H z4wFX*PRwP`yd~2+k0^!an4b-MwUMy=gQ^tdgaB-A!eG?Rse!9+9R%#Te(gaWM;Gei ztCiefRL|=V$_;9Egrzi4e}+l%&8pzynJAIQ@$bsRx)$tp;JVg`-k8x^boowZE@!N4 z%Cc!S6=d53i#tRHo-!QM(!b$pjN+WiEqNZaN>UQ7fEreds7pfIcb^jhsakgC=#}X> zJ=@%Y_YU3}!WB>}<0`vB0QXjC?C|b+=aDE+trcdz`r*a&Hko5|&?>VGjlu=9f~sTF z(72hlb#TRy6fp#x(3ZOfrftNvFbd)x6Qt{@^Qft6e@xVLwvejRN$n3(#~Wv^Wvw`Q zD>*zgM1d68C9KL|W4K1xb$(}l%@9W`EGhScGUn;f>#P&eif1X?*uvmB!cB)I-38gCnjEZ6OXF}nSqN={H3yn10n`;W& zkVy@MQs6bBfeC|ipz1)Abc>TCd&@c!Y0u5Ja^=Kz!qy0XL47&FYz*U$PJ52hY%wR- zOaCdBHN#dfnMFTH*5eR=6JvA+;fsE*F4t(wQFw*jS)qu3d*GY{1@6-42FasP*C${K zdN&Esuaonc?j9_^qD|fI&=|RSP+j!kuDAy@e?hk!@DT^OJSFQe^D}&tjr^!QRz6m| zs|+iB&vzhrOJqJ7XhXjy&|75%RKj=$0D_wuYgk3N630{#*dxdNlkW3MiZV)*$vECE zDJ|#|m@IRxHcf9p(WwfC;p}W5KRwROYEI#7aGDbuZfhXVpJ<*Yo+N%ec$)B;Ae8Hv zi9JrBCbph=}TwpC3g+$4bUHHES@8O{aAzfY|xm;kkgyhB^vWG#LDKapob zK4^M}P0A3@9a!RJA#Ar`~V3yXR`|9JYx$uDQfH>aeN=aq@o4ro3&);XkiLNVrH#l!y?;=?XW z;kSgZhBTuyRAHgNY_yol8#?v<1A4z624BV9i_w}(U|Vx|`mevQlS#ckus@IXYvf&? zS5&-#0kMD&1qLNDi`azX@WOGpIPQef{YBHEpbqh;E|JPIJ(;x6O9I0H85-8+6Qg}xrmiT-E2`e_BRruWBjwoyf zk;p0%8Lcl44xV4HCxBq`OTZhBO=?$^g`Es2>snt?7}8pmHe=N2VGO0q!kIfiesR1# znabd3pFXSy&BE)%Tq$_hnKF5TOVCEaU9IbbR}Tv_yo$_OLmkitC2*YBY;dOJ?`oR> z3=4lX)BN5hhl_q1+>l_Z-2r(^Pd z>Biz5IXk^PLw2O@Z#+m|qQ65D;12okILP<$pqHa~Vg(Qa+>`bI+i2kwV%BQ>{|vbj z&T1SZM9dJ*0)CIDfG6``pQMaZG~W9Pa4!$ChU<+|^%;sZJ|<7ngDfgDL`(eDYLR4~i(efXISFXyl~88`DOk+MwUWCHzmh3~n>e?ZzU6d70q&S|oD@gGo%HSx%Xy zahla4RGoXgwtTLpzR$7eo;3oXao+lie)3*a*kP9@WlsA&V47e72+?Mu zAF?l69SZiWSn6e^v9_P;ns5wV6WBcm@+!xuMPnZ8FoFVt)iU!7>5XXsGvBhaG#hVR zWkGjD-GW1lo_r*@ZsY1M^b&~ezcBGIaA;?kHHJ#Z^E37@06R9F(DUpiaQ_j(ZSp*D z>Ax+J)Rd9T0ttEyg;ICod)>OukkC&)p!d&*J21IA=n&xi+N@T7|r?1CM^ozS=A4FvC-cOZ0D+~#+ZYVecr6oXK^2Zfp#Vgzdji|hv6!mcI3p1fiVIVC~)d9 zF}7)oF5Jx^*9RHe;guE39H1I9>*#l(dmq-iupxXOLR>{yHn}NpOh`+TSmQVjt^P={ z8jYV~sr`EhnDxQIKh*oabuLGx;qQ5FF*R?5&JE(KFf5qVK{^&%mhN*4%E60p6`c(V z6G~%FtJ4+CI;0XBEA)4=^sh5iEwk^17hdqGj=Y=$uX237Se)~Hp-5lf565lMt zG(SvMng&Vjfz?LfsxT*{YrR{%)>k+I@E2&8#7sx1#o6n4sfNWHlygiZ#rJKzn49?S z)Vzezw+#?X{1*c_iap`A*EBwL)$4QAHGXA%BkBBkg>Y*U6{rCb3C|W12)K_x4++t; zhrBna4{Ot!UO@K|XE{JHr-N1na8F>@5*+>RteF?U5(`Sn(qBpGdH`eelihh;Kv)p@ z7u9Nit}FD~p*Tw^=&7M4ojCo3O&L--)sYtJ54H|ujzy&dwmp?EE1xTC7#K0gd-INq&kWoeI(Cy}z0JQzWUH!44!)T&z!ct38J;ttAHLm>Bi%UHbXdwrkzgPH-S$w zVpvT};>A_V@Vo%{uJCi)eo2ngXTrx$c^W_Y)1ba|!C64_{$|bu40)v5{`qG=F z(x!YqLjN9|oPHQzvt-D~hwP)tOrP6L{=^hilf(iFyIM-;HHAI}kfOH5r|mD3LYx=9v5-vz~ov*)+y@ig$zabH%iXF=T|} zeIbhsI(`QPSsarKyXet^eMJ<+e)-WwUaH)68=)u{^Y@2hkBX!~SF5v2PuHVBjupR-*87&0 z+ih`y87S=95dEBWY)MZ5rq3=`U#SS=zsZJMqgSBbEysWUxZ#!=lnpy)9 z0*hgJp29N>xs?8-2>TeyCdSv8u{;=Yz5l$!|`0rPqrF;>FN-w$1S z9nj*LFzj0n5_8+9o!iRl@cK{W<7Vy-P#B0>8G{0;cqGLnjZ7j*jzl;(m{WdkbT>9Bzj#@3a)M)(C7k%-^l|tR#$1Z zUk$`mClFJ+9nr;u@ecY=@4ff%!}d&OHmO26cqxjWF!q0qFf{RiLP{e@c>I7G#(UF@dK|<;X!~8;^4nxr15lpE7|p z&2KVOpd-zxpg9u&M|HFV|%{O*z7r^G&@@u88-OTC07W=gzkOhE~;10}sV3nTMbHLPrwJrW?V(_pxiexUh z8Ld$`(*mPR?Zg8MBOe$u%@h%#&t|}P@(Wv#BX>j73#wrh=_d_Eg3BjqMxPI9wcCz6sAA*!ZLBL! zZY4VMCt5`@e`ECzJ@>{tTR?J^xBb^Yc$~h!UcZ)_QKxg&txTCZF^FYUt&jv=H7{#g zeuI8@21e<5fOn6j8Kd>!K#w`E3@EcyS88^eelYoXj1qJXU$9}09os9*%r$$Le6$U~ zeFOb2s{o+Q4XPTbdE8_adH#WX};Oj}pP-tOm-<>Gx1T%@QWWHCbnX{ORw4&$(YNkLweNdheYs=9 z6=S$8JNv4$J3%j6GDsh+F-`3aijm8E@tk`0mlb7ZKaTC%Fr)$qTdT*V;SwwjSGFY* zar%G5nHV{oATuQ2_^8GML-p*t?82rQ8U(bBi}wwG6C7WseLM}0(hPV1%Pm^w)CsB=Zj(1T;k%ep{r0lD zFKxpG1sEn=U9qi1jd(#~vYAuL5S3)aVfs;Uv^?L0QVLG$qQ*WV8XWu)#c%ut*hiWD zC1Yi}muC`o)-#@>dB&2a@W|Xs2E;-B3hY22buS#XBC{2!_7n8VTAN;J0#dilkpFw% zGkv8LSc{EPd+E3Op4h5$k5)_~*y>N0_i5uBR=9Yek^qt#>!S1!6GtDNq`%Z$*2YuB zMSQfNIRhxJ+a{mp=U?1OwFWDefMbm{!PrSh41-PRlF+lB8A=17)t>(}yP%7jW+f#v ztT4di2QJa=HN#jp&u9QObNcZ#48wB3CAuc32Q5ZXPvfIHUmtWMc-ZOJaoyCDjX^B> zY}AX5bbwmlxVB2Y*HDlVKy}})JoAIIs54)Fs`m1bA!$g;?Y1|gj(Sd=P-bh?$8gez zR7fGlR_CmKMRuc`D;BXj*A&&dKCM>Muh(kRdc8h9_Ev1~{@r1iF|&F%Z$CTq)5rTt zU+Vi_qTWZQy-)0f&1J>eJTCQ&#yxCSsUuOp19TE}9(|&ZiK*Wh=Noshy)Pq|c+TEJ6$b@(LfY*Snd;9h~3KrXNj#{aqG#>&IY& z8&?7w_pr8{JX)guub~~p4w76mH1u1_+IR;(H&I_|%%sk9W^aG=iP-}7tj8X@f%>q& zzwelW(Y*tUvK@JOVVjqO#I1EB8f{W-(DWNLpj%;3$G@DQ?~O&0)On37Ng$bAkw^sp zN!|$wWMUo>T41kHBx3--C!hyJ))8hOT;KGzIN0M_HF(*8HQ>;fKCzbtJt1XpOz*d(+_`+4_4WS#cow6O#H{m6&RBoo-}+ zCE@qf#S&g)VGB1w*%g>VP4(Zwzya!4k7kq(ZVp%D(&iYL#e~T%$rtHI2Hs3H{vguu z6j~9OQi)%&*hhw~cH4Bg59P)i)K+>fV_eFpg#!afL~S{h@Pk4P03?D)oenBlqiMQb zXPa(C4PPlp)V&1uaHEX+d~?i;T2)O;gE&(~flKvHINEk>WTa^E#e$>8o`G55I88+G zF!h^;Nkcu`D6c@r!RK(g0-vX-YZ@DfZDfR+DesU}Bo_Mb%v^joGZ()ebWFl+3H2cy ziv#EfWAW!u-=}~pm?;pZ&WZxRPxdGB{p5SO+@@SEO#f-tyVP|ubFWgSiCvlKOI#_h zfix2Es(rh%(t%BG{MNC2L}e};bjGS(Zz}37hB6$D^W$%ghs9G2b1Yt%3z~u9NFJ!YS7ktw6OBYM5yH z{hD?ZRp2P3)tA8@x&j*KHM*L}#A|)zSEbU{LLo}O!vpX7k|unnQ)J?6;wdJ5JltXg zPDW@3T8-%$P=s%T^=js%nEC|%-y;i^H6ES75*e!LPah>ufufsrHvaqg8HeE}zB?6q zPLZ$Dc`5lR?WQc)qJm>VZY_?M;qx%AE|S-(TBo3=uUDwm2q+1Tm4jV8S8veC4aT&@ zRg-Bnl?Y45_hrPw_BC#jp8$9sS4;g=`13lL`aydNmU*Bs1!Iz# zmHGj#Mw2mU0J+!c zbM%{;RbVoMMl%(fHd)b`z7x)w!zY_0u8K)!863^h?@>>kb=KX_+yN{IFBI!vZ58Vx zkOQ$ZaN{gE$c>CN(RrY}dJXXN?rNg+;};uiO(kYbw-EQXO_EEL@3a8$&{ezFVz4 zn$`2>_&uA>KbYaD1epW-)@j4xD{rZ@HT>G~i^&CP|CwDOb1u_3#Q29CAbaRT^tC1P z+#W_wcP2=dnCHWKFj|SwCvZ?ufGXq8BCH2jU_E#aZ2!jkNM7WgJ>4p>jm}Z9Me%c^ z66cH|1N}Xxf8&OETA2XWvL&6ke=3mXX3g8X_h}DEyo!R~yX;J}Io>S=vNPA%;Y!$T z0}(Ii4+#0rK;nNj;QlBR*aV`^UZ=;I*Etp4L4qqc7pn>|#(`4Ldp7XPci_G-uH2|} z{ThurrBeZ_t=8hcup4ezle#B@*Q4$F6M=@K&a5o0N6=?AJR*#8u~xnNX~Q&(et4@+ z=W)U-FqyLnkWgz?pD3xJ#uFpVA{a>8cR|hj;}TV`h?U9#KPBOI1kg}pS1$J=a4$nl z8FB%WTTUgzw6~Xl4Ab0Ry0NvrL<<%Yl@LyrtXyi!3-%@WDh0c6 z!;Sf$MMMf@9>NABUo3AWoThN$si7_n7+h1824-gy-QVZ;D|mY`so+-+e5RxwW{bPc ze?^!_2OqeO%mrRb1gxHV3qq0b{{{>}w;;=R1%N;ZQ{(zespAjLBV+g7kfGj({gK-y0X~Y+ z%R|WP>)Bs4!P=)yUof@!`(H0_N`IXBd4_}=Cv0{Eb{K0XzKEnO)>_$YH&^R`ssGYR z|6IgXX+;IGP9uQ#+W~H5-)_;9-Mv0;VsCz*!LAyCDtBz&T;}2EQR5l=f&x7cua8Ch7S$o2%3c`xS6~ zOlNk@8M5#+Dvmyt?^yM+R6zk>4^)f1X1hCMKsCiA2(Qbrh*`AI4%JD&JMGnFUN>~?G!Ms|d&;QLUb#=;n z^y%B;%vF16ysBu|zZ3&Zq$Y&?|Iw#MZL;G!9Tkb9fQG!O>VE}T5WYwC}|caeVTeW=H7nc|L8 zgGndw+PvF`G@#;cFx3HOMXQFPM&7Y#O>cM4@@3vvjLvFWhkDnxc@noFoi+H4+1#xq z(p7wp-b}87&)SIC?vy9xuFhjokQXZ+#rqCt76#055Qb@FKE2c(g#`!UM*l14<62XvTjd&SU-wSj)nn;?GT#(-YsF zT3G*`THCmOWuLqr;hKbJzK~UC&OM7`5H8==r%JOe`EwTYwd^Ik%XSXEhUI9ust%Ux zK@`bgH@I<+J zLR}qRv0%DYWEGgoBV#^$V%6-VMC_I;%Zt}0e%9Z(YGpqeaw+}tE@g0^Fulsb*Yd1$ zVorU(7T{SQ`R!+qFHYUR1ppj~c+K!A2fHUDvnYf1zo;vU%&isB^nk{89?rAP-++YC zWFz8J7;j#%ujarbX$H*Gc?MH$^HBVmq^X^aOGc}f`m8Q=CG(9G9w9H)=mSgf1wU9+ z4cKv0$q`e-wkOD=TCUj(w2XP@kLl=gt1`eeh70;lu|&k&V6T}EgVFF@`mq88urdU& z>vK(F$E=#Jco7)X%6Y4HrIhsQDyfmzQm<>vNA{qRHn>3T>%DseeM^QoA>uL(X1CSx=43G)pMqal@R7?LbgkF`p6 zNKrVC8^1hIYQevgVaHC3XG6`y%7?1UdXf%~R>u#O8^49EWXqnv{+0aoul8#7JwSD* ziNz7AN1ax72<~+X4ZWjDfr%d<37ObzOJZ&c2*~{0+_*{5_=tHvhZ#&1_@=Yl6AcJ` zGhsJXFANOQ-^^*d1SQy-K9IL2C1r4R{C(j8X@1XH9#E9$#BcT$F3ueTcfQ6(cpWaL z%q(%=cCWH?eJ|%cWpUQLQLES`vCNz|VlWKP1r1m@XWPvAvx>^|hzTO!aaHXgvxU*U zJF6_CjfD(sEGjD7uvudsv4Sm>)o4RV$qQGb>5loy@(gL^V?ZgNlrfqw{(pq#5h=ju z1z$P%J@b3Tq}}VbD(~IQDP6?OkB?O>v;9EJyvjHq^asre$P`G4Fg+*blpP z3^?sk2lOordAiL)YEF_TG!7sZjMM9&ORzB-2RGz_G7lX*twFI4Po1yna$tf5OEE54 zUa#B0DB*|H!p1$+>`O1DCFCQT>!MPP7s$V8A(xsrNGB^z(T>U8L2j$NIXJE=4M6kK zWI*`;HSbz400Fka$(l@>wiTBaph*NU+clxr4bL1Ciuy^i_a3b|>@5 zkd8i^ejL^ynMZbgTbAO@KyUEJ07dOl_b!3Cl1jz#?HH0;6Ka`mfX*ipEK7QB!pf7l z#B4)PCDiGPd-QCPQ_3?3@_zFDsQlv?WsF9n7pYTcd$|f3yK_~aG7Ew$fWUOF&LaW? z6g?RFwqX94j@1` zNvCaGwsk8$kMV!gcL*%xT0n!AB}KG}Cpdm0SiCMl|Cao_SPY&Z!sIzieuA1cpSl51 zgAD*ZYyg-iHUN6y2p|89!6&}j(?Qa5WqY^1`9@B8p_|#ST?DqiV%v++fP+VgU*Y#i z+jT)I#1qA;vKgnLqr>~qtR<(+K-+FIg5Vg;Kv8oXP#!Ri`z}zTL5bBtwx)GKVB`is z){my?t-tyex%%z5>BBF*M0Ow~>!?)di@LXFIPo<-&zE)88i*?MvS~H_4OXCGs=Hb8 zlkZdiVB~#z7K~bPvD0@>MvnCYBQk@4p9ThVMi|UNy^#G4=+R{0lj|evX#I^my(Aa4%{tHb^w&_W6Ifyj} zanT2)f9|XrW(SeF4)RN1$|>!P>&G#MZ!PEn-*_ORXy1Z&^$hwK8xr1a5un2HV(Uix ztaBFoIWi@$c+sH>VT0cH38bMK{A>Su%`lpgV)31?p z=$ALfy<1{z;1@;LFN@n3E)Rm}J+FG?NR{xUN{Pg*R`gjx=+P1piKSea0&?k}7I`Yj zFly>Aup)4yas-eLBon~YqIMCp!RXswSE1OP5ya+TAI<;_`CI!Q8%}@YJhgYakqa&_ zx@=D4uBLR%R^9y9b-Znt)?^YfN^D6Tz)EFvg@uC~568~w;`q1K`=5Y+cdy1b-GrN_ zx?D!>uBCNcIna?7zN+JIyR0sgiV5uJBcqjqCcJ!T!{I1s)cVebtTTC634ua1zHTzR zu{%KViMh}=LmuA=j}k*cP{uctV0E|d~_I40R`djIrT5UWYi%9GYB*+(1 zBf)SW5+;8716c6?E4erpiyeegs>vFIQVKLaIFQ{t&q~Q*X-=ul=ro2jK=@fWOcQAI zw5^MATxo{GjRFFTDleXuxxq}h65R&KArF=hZ*$5Z3B0E~Tc^9-4c&a}hr zn~5$mO*LwYX`lbw6X!54G6p2kAD~Q)-)zX`$aE0#KC7ay%n70Qp?`RQ98XvmuZ!{x zqUf4=7aK;F_QE)=_ly~)vr6{Wg95X-vh1Ux^T7Q};dXEro!IrJWAB~IK$?2RJz#ZwNEL2YPUgC7U%LS0)YA-G1(CvYJ_i(W=#6M0m?FT14%ZlQcAw<0s?Co)=} zFemVWAiEL9`JxDYK~`yI7gis8-O#*EwC*6;?g0 zSXm4O1vs&HsBLrLhM@y{n{+%u5b!ZlZMdd32kMR1WD##$yD($0TnKC!vtYQ@E}h3K z=hKN{W31ZAr>(e0brrR&v6%WpLqkS~hPISSFf2TnaxOo6XOeFc_3hZW$I~i(565M-VzHvJ*MkWwW-4ZK9y;r@k2EcSZ%Qg$?{ zmHR!Z@T`Jl-xh^(f`)@L`x&T`_qZF}oGJ8n*My`X@KJam%QE zMJ5xuhT&=;JicqHip%FGZM;ZK!iOh}EoV~{hxzy5;ZNcnCqVRjyrgUsov_8ni^o*% z072l-^SB=P4}mlf&S2uP=6|$_r(eh{G)|6U$7|*$(IhgPemx}hLp_Ug}yR-REq%rfica&d~h(g-1A?{MEwI-XJ2n0&2NB~wj0^*J-omL_B0c_a;>@>l$ z9XimYsq7lm8M0clE^jiR2%Ww_|2Z>~Axm7-t44`KWT?#acF)LaKwei@oPG^`)NJL! zHlGt3FzNlu_!=jg0Cp_USxxzj-mcFU$!q1tqtw-uDYQ8loaJ(aBoY=IIyNj>SZtn2 zVH@_l#zrg*Nb|_}L`24B6~$>YotX%lH|T|*B1$wbM= zEJlKeJ0ov(dg<+1M6KZ61!61(jntpM_c9^A%C9|@%AsKe;0dx0!Ug$@ub0V&npi3C z^AHiw?B(+~&q7rq{p?#eF}TVrJNPA(@n#q;;vOoKrTrPo`@8g}f6~AG8QIpjgZi@E zp3=$n#mDkMk-mn0&H&;#EM|d{%O&4$9Aph;v#>Hbq2)Gd1f?)$0qM<~pvz_0EKoE9 zhS=6_n|!74oEO3Qo&$?YcTD@zv=>gV7sE@1ADmWBl8bJ;-+~5G%fn$3W;S)h9i7x# zSMrnU7frS3ap`sz)D@G5_Dx*vTyi75hQ6lK0%>{xq^Vk#FhfEh0Ro$?*)3lIO03W} zyB3o!`hQMR-o~3huGQ`!53=c5#|vsF_&$WidKpV-mvCIYJXZuv9|95e-^xNmcPH!u z^89`Y6%~m?Vv95>((>rb%iOL7GuS#&b;SN?Nv!1${S8hAQ+-2Q$u0o)2aD`OJF1B0mI?umy%?cmv8?eJWcZT;-(vG4Ie%|=^ z(u%wmWPs$6k-pny0q)C8|W&U@GJPG^`I_0c@%;Qu1209)lOPnr-GfqV1z!ts8p; z{&=ECY%qve;0(jjhI{xusdNu7o;K1yYF%2S2!h4r7$dgWJwk3S>xOYSgjk4`0kq zr1i2cH}xw(_byWv&O@{xm4XzR&2B_q94ksHxU^chw6K7y)9VWG1aMLFvDOo44~xUo zP<#p5f$N=b<0Twb!ZmOCV0KXIn8?)#yr$MyY&eR7&!iR1`7iJ4(G;gTyLV z2en{#4csc70-%FvSs(C%UMNGu3@w}00Y}R2-d9u(LVlAe*uI?=t+r2XRQKz_AH--f z)()o*XFi^mqb{6J{}27nFaJy(DS-H-4} ziXu|Cgdzf-Rns{;?42{i2A!6l0T7!aS*M29e2eoxA4W8-g`WSmQp6{PcM5-=39;~% z1C>to{3DN=| z3=YntFVrzATgS;w^lCLyX*^^jeKp-3zUZ2vjc<(JU9FNwK_i?)T{*q+l}#vGdM0&N z;|A(q00$mX7WSY$L{m<*t&5*iX&G^Fjb0g5o7Az*iFoWp;;zKqu?kBd;=~0|KhC7D zBAe-}WU$Y#DkRHEc;hF$S|(Fpan67X%H#a$JTyTtt!1E9JfCqu2P^Ydb&iF?e|y&C z6;S)GRLHk#wZ^#^SYj;q$)DO$U*bwC*Z3NIc2lo4g1SlV&!ymi*Tu9y?WsUhCjq7c zNcS=mm+YKvTj{0nAMNQ6|qb za1ird(>nDKqkwXBl6C5dnsH8(<1

    itLk|&`U1M!dgmR6rh*Y&i|J4!uh`42hQzb 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

    r9NUq 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 z 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 z

    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%0DTYQfTU!32UhkLRG?#WlcJomXkr4zR+ zoYF5;ftk}>YS(n~>fG?^9;Z9U*{+I!!*91=umaUpaIfOX>VVVERVvjdc3v`(*LU72 z8Pt)}1?)^oVDnwl$tzG`v6SdWJgh`}aOkm~9_mc|`{FxAyz&87ZIHA}4LadB+Th$- z9=&JId}_tNOaSwu;5P&pmej`qJ;yeHXnvwzzGeJ4SaRd zB)S9a(Rqc>EB0tFH(Bscq0TI8*9H_HC>{OXR;{&n0u}Em@93evC@0|eCIRkKbTfCJ zl$=E(gYnIfXxA01mWOx?qHSKYH&72{l<=C!97;9y9wizlWt@N0bE1qWg?A8P9e3v3 zYlkOYeohNo(5m%Wfhf-6xf1w6=mK573f+TyXLePglCiMt;U4G?N%Mn~iwc`f2E9&& zz}%cbl>#JJ{ZoUy#U|@kgDV z%SnJl#*w|b+tc-!~+9XwiSHVS#Pxh+Y( zvnPPhYx}HioL5p1uVj;astU}R?$Wqt%!OB(gnr~bG{IpKXKDqZRWDF~*KHu73M3V3 zZvO$2P>ooKpW$X1t1dR#bN5SsIh+Qrth;(1hY8!~sqN*B=%2;*Yq-!!JvTN&`dA~oF~&ELE`E(QsdkVlCt8iq zMt;24(<8E^!vvk*5I3@)Dq3b0SglIXu^^|y@y^brglVc=hKqQ1E3bohPv@gcc=PV> zMf$ADrswB)VE7F9@Gb-jELXOkdiqHz259Eu$DDY4R=Mz&ZGJ`v>F;@utVY*73Mz1I z@3-N@pmXyVjB#1yRu$DA`PVAX;6#VoK5+`*9K4WzJVxiZgGjcw^m|9>{vpQoIfeVJJ->=nD(WO8Cj8sT~e^Mi`lq&!g@?)3SSx5@h zI$=|bRd`hFlpaap#N_*h!gQp@|J=J5_`r`(g1x`I?Up&bY1g-ZmzEopbPJ`>)A|k= znt!iUGorx;rrdD%8M``x>@HuT?5IeQC8aI8-8l^>< zS^Q7Ack)EL(lKc=9DxWRXC4?qG3dDiS`X|i;OwT<4kvhhF1CgPTiaI>&T@vy#&JD_ zX+Ocj@JNc3@}xeX+~td?+sczr80KJ)>$?4gKQHGU`r5O%cTt_W;LM4}ykX+ZZvY3p ziJr6nsy8F2-SX@TRw?Bl{_LISCeVk4_LuPw7xC4ib5PyWD7kud>&K8$cSBUpXLv;( z!w9Hz-1>aZ6fhMFRC%K_=Sfa)3yD}5ppiE9F3el)Q#MS{%Doa*$8v~~JP;1PK(}+d zt*KtYCQ!U7abr?d!vnuRFhr6KrU(-v=i8 z)=Ia(WbZPG{(#F57Fm!X%HH(NCFlKkca+f@MCr$o@QP3O_(xq(B_#fmxcZXPCH+q2 zpFRw(et0IlZWp-vU33As<#gaATe-7MXtm}7MH7kUM?)B08uVb{xO1bm5FV4T9rhG9 z95yu1OL79e;EI0ZYS7a=N*}ptsWnkAG_u|%D~PtqtO-9~ zCk!Sm66&lsyU!xDSo4VF$i98v*49%p{1X3;@X;r?^A|kShjbZkeRx_c=!x&Lxrm%= z0CGa4q84|QPo=JL$lIpO8iolvsddtn2}WbzltDWv@<7ltB`J>iKdZ8QG#0E<4|BH}Rc5`7_b_6^%h_XQ@1` zSe!v7;@^79+1z}55~7tW+HRT4pMFEfcOV6%=C#mj6IIuPj@!Q%2u1zc5=2|{`uzti zie$e?N#}a(>PQ2ni}?C2ASs+g%J=;Eg5sxb5bJNoZva=tevwVl2BGkWayPMkcCdY7 z7@WKX+Gw3sFJS(a52$W6$)HH_uxkIQG$E9$eDdEGrDiVCA1FonO9hZ$4ZPOd`=ngn z6u982HBi=LS3kJZiC^~|ebo{nn2AHL-5kK5mP!kW1k6`o`CD7hAlKlg_JF}L9@rIa~xTkKfn1VS`IGp)Ha@2 zB4}eIV&{Vog7jI(2m3mZK&q5UtXfsx1xO2bvrH@(h@lyRn+k*hW0% zb)~!K^Jm@Gg+yt&38@gP%DC81E z6L18mUh)`m&*|&XKVS9Za|&Np+~zCzdni|Y3q$Nhg;nyY+&gs$BBIIDz-`(O?1mnR zi90$3{9mEE;&Q|()nfyVg{t`+6E^+Qr2>i8h)?aN=kC8UM7VCygh`UbqHB%^HS7ha z%*@y>aUF5)FsqUareCz)hyMb8<}wO0U=#)yx~2QJXJ1{$I|YCK{Q@eHYMeXSlr;^` zrA_T~iw{pcX<0u|n~D{Y!o)etntG!WGGwY~ot48stzBFA8m4g@l?dD_RpN_S>JqoH zSTYB#9UWi>9T2)c1K#78=~fYH3!@3wFGC+V9K?ClcDGhS2c!>OiJnOIGOqeMw$a0} zs=+Zza;|`LmA;mi9cg|^a93pgwsziv2YQh%tANxj$J3b41HUpONY&xG6S^p6puYfa zSD5W^NpI?61X8|^fmRABl8WpyKw7XM%_j#$jzI1Zi$!$dML*u1|1ghNK!~~*{{W1o zWk#tLmlRIPXG-_bfL(2yG?{AZexuhn|B9_ky+VyvV4uD2>|wmp#fLHmUnfliZiDaa zlv~Ao0V@)DBCu}6s#NF<#898CMV2|ZO-n28V?+)BdR|qVLS~VF9cXao^%n~|#!lBN zShc3=QwS)fQKZ@5uE@(vyL#oZr8A&oC7d$9QHrOuw=X07RzLsj$>q)>#g$vR;=w9@N_&X$c2^B7cH4>H+2vpp{FyjkxL-FfdV z{j5&IbX|GfRlR=&gIhH;$5srD09-2+=_DU1J(DNdHIBh4FoZu}FV*B)L<(NVM7ydX zz@4&Ns>PP^Nqq+lavb!O9c)p^DI+{p5Vwp@bOP5^C5i)s^=e1QJkpf;{PX&J{xp*7 z-4kAaQoCS2WEi?k^*EUxLO|-dr@Q-yIh2~whkbk%hu%Vm7Go#uXrpCJ>+wg@ZLd4= z<@pctK*PEb?*(F{A7PSGT2lLD-;q~p(>Nv#BUfjAc`w}zQmgo(#L=7A#f2Ibzx9lB zO6b0nuHGqy`AeD82QS|Rhvi|qH13i`0nbr_FztWz@}b-ci%_F%%hTg3R1n^!lCQP5 zFChX1Kl~8L=g%f5;I7EV9UX#09_vGvjMAn9#XYU{Hc(o*wtD~_zz9WK{HsrF6DZXH z9-KKL(XG>nKMtoKNU9u3X@t*I$#|MN)tGuXhQ2YqaWzea1OrA<* zI`Kp9F28Q@;uC@Q1muy179WmwmR)W)sa*vX5WtDVunzSH9^`5}l{}f$bO_m59}L%# zD#^$`66iER?2=da%X(%FTJY<8bg%+7-CW3?b!i_h7j&Pq1wVkEkl#7#Rb6qzQnFFm zIzAHLfS?RmD3SwE>Y6*F4i=_wsM=;tR&LROZPuDjA<_q{UwY}wZaz_smRfbH7AGil zr6m$MUnH0Ch9}4(1rJydfwvHqD_`!B1e?7=hs2ct!du`$m{efQl7W5;UHEn2{*^$k z5tigO@jiuT>LiECJ~Z{`4s>5Tei1ks*Ic$FD^*GW0Hc5m2A~^~X}6q>PU<>om4~ka zX8bkVyM40Mx)lLXfb=e0j^7?kpgK8IC&`)8QoA|tQTx5nP%$`In0T;5Nqty!(%)bQB6=2$6HsfY<}F#fLSKVoyS{x&15Yn* znAWaswTzolBhm}%rgbnp1Q`H@`}*smVDJL0u5O7xJcHABUo)Yh;x_SuJfoAmmwB5i zy*qaP*&cyP&8>z>o#ch4m5YEAC@EUHE|gfmzyafzix-}``B3>_;)9hY1LXoP&L=8& zZ#Ps}<9gZfb_e9rEysm?nD zzRQtA83a0$6#J|HQ8_x>&03h(M4n3@Xs+tH^i&umsTT!5-bTJQBGyTE00@U2F#^^&_>>`f$JL@)@bSpL=~iXWlFSyemxwBbEK*jPZi*{=@Ccn*PyX&m?RfUm>SRoXpy~ z^(E%;vSs0Kz=CwF5$x@_bdu(CY3gFAe-frrsDCJCvpp89QvsivCoiq8N1L2dfDvC| zsRzfWszE?i24CWzv?tgy8Z($&5Xn=}KS-sPkTxhzajaS>v=iHZe}@dcna1{?0eG!O zzMl&_^9FE}J3x(+GNT%63qy^H26;m;SZz%-sp=HIIGuRYH5?qoez_1j6XMTREXw8R z?W1-cT|gugQj@6Z;Ne}Xt<}`me_yGotJl@(8yW}DqZarlByl4Q&<7U6=a72K01d?*SuoFKqXbc?e2ywfXrpmPb|(~wF@ z6}%1ipBj-V0l_2+NDo2bE))h%*|&BlQ*2d(p%vVk;j~#@UkyfMha=aKQ$~W~&GIM| zM_s17sQ#@BA4#IB#1g;|9RUs2MH50 zD%1`20wpJuE>u^SlCx_IeRb+`jVB0u)N$-hSh*mq97>O}WM)KU>H+kIv&n`T*r(Xc z8LSCe75@lT_eimp`k=M-O>|XVO*Ld*B#*}%)^Co|azS|Qa^`8cdyeFS%D3MZ2LfBN z$o0yNakhh{9tgIeovbED(#$z&dY)HT>XHG$L*^=p=`&8c=An zF%V~Am*BL|n<13olVTU##G+5t0NKUhNfDGo6d#@xzcAB>UpYB&Kd^fsroiqYuanoB znMYC%G=4*ikn36~xC_0ZP#+$Y4?ipk2Deo6g8Z8z`}^q$d*fu3N2*l;KC9GFr)3h< zs?0fLPvT4HY5bhoPj&nNTmSs%Z{Qn6b^zxB**jmt2%o6BSoWE;1h&2mDHn*u;z-%H z+zT`e!%bMw9Uli-=h=P}wrLQ8KWTO_3^t)IM6{3qqU3C8scBc$1z{YJL1=HP)IzV= z&wQLp%|nCf-+y;UB9~zBe4ys+t<4++;w=HCy^tT~n{4FG)b1qtIAf)EE7Iq$ti)-( zrKg-VD}Chf5cq?|o8jHDodvja;W2fN34Lr8_d29PNM6gnJ1d(IVJj*%Y6_zA<4(38 zhrK6!zqp$R(EEWhjX#{-1lhFG$(C#^wPs*{CLWu`nfmu;q5>m71t&x)bkAYeybXhp z&U^V-e(Uxi*%@lsa8Zns^CIV-zBDb?nw@Hil!$FouEu39@|PH8VC6>#@3k;DhYp2d zHURG3KVSk-MreX8$SnB+K~tLopa4>mWP0NN6g$*Ol~Ydr+NgD!MG}WtY<9%XeEaV8 z=}fu@8!|wWDAh1iNOrU~(KKEw^U* z#spiU!M4$3$pJ-KaV`Su^N~3B{kXQk^40M2y4|7GG3a*dWgIr+;@t1|kNxepr=NB- zHm<1V`MFp6uOG)7du8O4I(dPT_Cl}rrMTQ(q-s#QtUVERMNN&aPFGb`{HUc6ymjo7 z3eQyyK=S7KxO(%$HS3c6$m)i#&?lIQ6OK?Khl$K;(BTRN1;rr41;VFT$hiuBOI6z1 z1cj{7n}p~?H@{+JZVG)8f?IVN^C9bh`IE@12!bi_VVQeehfQYf8b_U>uUoOOR9m)W z#Zx-pnl;NRbrq+cy@qZyCt}8sDV6@hXh}s4c4MM>nZO_oNKF!|J{FTHxwn13ZL~rq zhgc_b0gaa@7PoHw_l-wZethtrOMQH$f>VFdZBM=h_mTzD{4BQvrJq@z1MX}brp6v% zr0TL23fm<>hCk*)|G#Mfxr5Tc=*%^3x&mWg3a((!WVuYj+!2YGKl|*KTbMVK$=TWT z-X02Fh&|Rj6OYa0^aF>C?^QdDyZ~r@Xl>e^u@)7Hgj_`hVo*dRqw1L$kR#5CWk_Tw zDwEHCP12~sB>qZO0*yiyq)>2#Ezl@DkfXEUfmXwHj85$sctY8*!=`(%p)gItufLq_ zi~_z!5k!^?ur^yx%9%Iu!|WMI^5OBe`FKg*-TB88vybQJ!Q;h`E~PI%x|Di9{qOWQ z&Gdx7^gM`MAB0zkee&b4CnSZ8cr_sw%RkB0gfBLqjJ%AEZ@7NG{T7*hY)32p_Ze)r zhW4qfI$ngMD?Eh&C6!O9Gv5MDsfa9McH(tSCqAiRcE^Cux&*R@ca9y)2+hi<(kA;t zWgpvS(OB9#sOD5Ak)$h+{ze6u8qgP?lasnKU@e6n5>>1-M#f9Uh&z?&jVA|ec zv1XM(Uj?>VfHjwj$?{nJhOKc*E{JS6jSjsCEsDtD2tceWnAZVo&hWKHX#{UYYt&=(?$bm7Mwx6 zQ;-(Pza!>DQfxqa) zaJ=RZzFH@VLrWZbem$Mos2WcWq%-fP$<`F9$lOJDe+LhPRGM4a7WvTKfLBT{$eKrd zn33uT3!dIcUBpdiGp- z_ho040F3UKw;pm`9At7I`}&2T?#Yi<#i3rK!46_tHYdRK7{o5wi$w>@nXLF2=XQbM zY9O^8DRz#uW61s3z0#9AnadO8(u7Q-j@D9Ao+BVsywHEg31#Kf{xW(ReD=30wY2qV;_ zMaV%?l1H3n(Yl$ov9b66^*s4fC;vRJr&9e{n6n&M z@_tT&`w)=ClAIZjwG(4dY0+|{(BmMD>9h&;a(l21WhD1DGw&qn=tv}a1>Sj9$skFd z+L`&CR3$RMrNEJ@gPg)_hvz9e_B`}5veaeq37H;jWBg)CVOWC0*GRjSy%L7yOOysP zBmAtP$}(^DlC^E$HZva&WK1RS);#*7YxQ{&zBUjSwUMnBM^}#VK zEHMo79dQIV=cL7qzy&M1D*&yAq?*x*}n9pbkd;ifC3PQd7w*ss&f& z8n2dg)m5Ih#!t)nzLg6yFvVs%rt@(51%nqMF14S1+tcA~YmqXUr3R-TEO}z>S`*{8 zD0Sfw0B|jxHg#Pkxj0bht<%Eja$S8B*$!aD6_K1o;x!o6C1bwl!P}21Y|{TIOF$r{ z0f7{pKWxvuJirTc3``>&a&h6C#*A=;hDAP2a{hUmG<=DqB*{G5g)rO2&CSydZT)q8 zow$B#yFP6lH@#Y9;MYv;IHy^r(Igs)j9(NI3Hh1L2tBb(nbO<}-CMo-f@~}_HYr*1 zwAMnIVl$JqFsZk_?v$BDa+lOG=QMBN)Tvf!k-|A+5woB9%48J^X&E{dfKkHxZ@8Gt zBj1LZ8K6kZuGM$g<4Y)Q((jce5EWQC39i-6KwvP#UgCqS6UKr>)j+UT zLnNDA_$e@K0gm)wjB}z{R`GG2zB*VJ5b_POh}c#i3pbOOf%0?(^+$$FeE~j@sxnPX z>6S3JVcGnyb@ui?NnmV8Q~?BdD)#Q;YnQpjR8i(q>cLD4@jx|oTH>x3-d;>!z8J1k;X<6KJW7*S>=K1H>l*X!^-3`fWxC3I6?vV^S<-Mnl)rbVOg)$r1J)(7V8+Z)7;slbN1K@tP?Wp%+7IL zR;LYka1y|*?*!lu`74<66+*qApV~4Nx&_MyqdW-w(KKSPkpm`n2(gSr9R!FaOFH-q zjq@z(O}-}oVyd{P)Vb}|S6@v+MODPr>xJ$z9gkd)B3y}FCN9*d{5B#K+F%B^lrNNu zIIkxuO*A2}NUIvbw0(3mIt4wSKL5P9sR>emDEIcV#jC>n-aEkZsZnR;`e=oY)+W}+ zcf=vJ+~PlX6Ih8#rF8A7t54p3BZ$Lp|YQWHY1DZ%az~D>sFR43fsm&_2Gm977H{Xs~SOZ05-BrYDT-Nv`iCHm$+_e0s$)Ny6MsY zsq@*R_0o{EF7#7E6LRu(I-$#_CR>h)!(gOWv zmE8b0wZTHSsLT6%ZEE}E{-;2z!eN`_|FAncJ8W(UP7lbMH&=6|5>Cb0MTt#GvMO^Y zz2i;m@g3GbKsJFFk?cRpq6ys&b)F%!4;V6o*eWI*m_GTTsGR`4tG}Fdcyj^V3#*sK z0$Gv*20IY#08Y-frHk3Tl)aNqEZ2axetwqL4+%Qb`XNETiCoZ}Nx4XndD@It^~a>L zs=~e%8&Z6uIC}Pyafa`lr(ZEaTqu~ldsRt$vo_dV0vtYmm+yf8B1!=NWstbO zlDQDXgD=cW(86ex)=s+gj7b)$OJwL?yrIoK?viCzp;P8ueSQCZ%GjC(rF@l&>%lxN zs}aClfPWl<)qr_g48*+%spfMpT#}JC(nzHawepnf-+1F(@_vH3EmlZ&F$W0(1kOi#%H36`ZHUuT9&9CQpGYgG1GG#{X~6)=?qN=)#vi?rwjBKkzGM75F6O%M zrx9i$q?qrqwA>7YZea`(w;!aX(VtO@J3b%tu{D!PyNIA!rcyPP z1FOzbE0llGqKWqf!Ddm=)Z?dib^rx zL}tgxmPF<-6)4L5V6=$@99fB!$mx`1$^-|jdA)PgbW=f@*zvVzzU8&eZ-Z%wUs`d+3-txJ5=SzW3l*7{|oFf zaYBXUDR*xd{3ni^z~WDL(O2b?bnNqGdqoJHj0VhMGK?I^?qzty?07mBONXC<7(cg{ z2jDmOcjm7v=zm~QjSd=lTdq6>0aKCVl2?{C3SExTzyA8vQ!vYJMK!kxx*XT_aK>H{ zIZ`jxDTs&2H9c5f&W%V)d_`!G<8E-tx7~EHL{y^PyjWn6#OEd?|0prmS4zvI74<|O zjb0X$t5uO|N+Li*FBnYp3QRW-e;#I50qXl6!@!8NKLiF@5C#K$Aa!<*vB<2WyQq$s zT`=pRYeQVnx_Nir*#ozn@K@&HaWLtm`nGQ_IasQ$u2I)$YwO5z;CKDw=;KzKP{@%M z1NaB%A8Z#ll%(jImd#aA@rW@sD~sxa6=k~=?77EngV7bPci0hd2(@Z{$(WdKe_GyD!qXcBC3Va* zvDh@?X5RnuOK7%U=%*s|ofS*hMMTKs;dyi}z8`p7;I?Y$giupzAf_M@Z z$pQ%-CLR)2HI}ty$x4UXfVDRX7HME%5WE3|9~#aq=8#S9*f5FSw=W!MyN-#p^x2 zmK)?<>A#_e+p#-*q(N>{(>_{h++C}P(Jj&``*sKU8W<6{^@dmC#FcrJBFtF{@+0#| zaPyY6wIYkKeEGVw8p$<>%0LJ3Sr!(47a3e4Gqlfa(odu=(2yx?ojqhrEkEOf1Q#b5 zJr0L58(gyH5?S;-iqyR!L}geTJ-arb9l~{jEj7}j9KUH`r@@}1`)mBWZfK_@ytb<@ zVzy9%%&$dce>3xb%1!1nyLUjcxO~ zDRvd|QnESzi)=Y81)VTzU9!4uY!_tt+3>dWUDTnr#@R#(tm<(w;6P+g(aDx!cq55A zzqNI~&l0GUhom)uuhNBG<&Y4GD%wXa;m1y=g*r3%OBk-P%C)zc7w?B z!4pV5x5ocIor|O%A#`HYTp;xn(5c6|ZRT{c&<*0~CS~NzQZCR$ix!?MyZ7@1v=aDD zZ;*$R@9qAuTA{Y{RV%YOC=qF7^a>0dODQkj@UFm$qbUa$j z8tLM{iUQ{V^r$+?_nmC*her&ui#)>wo@wS88>TdKjpA5WrEW)n*7^Mamp0UC$T`gf ziYkRfQm9qM-Js2KhouJSS@W6tPd+&q;0UB*kxn5k))GEnV;2Y{9KMLpxhX~){C-Gy z>+02=Km71cm=;PzBArTFrU$oa9dv6zM+2by((~HFQ@aG z$X5;W0u=|GRt(gk$c-)Q7WS9{axQ4?U&`!S{OIKkVgtWw%U$Fa9lw2gqeLo#T8xr8 zWgJQSn;7(Sxjtp&e_ zqNGkhxnX=w{QTvVfp_RPCKtPQ-BvlY6A@9m1r9kB^S-vh1S+~F`D^?UQ zI%D0N^+WMNv{3nmr$Ao2UHXHf1oCZ_b7CLRQcy4X0Gmi;;{d*2WHlo#Wg49J6+le+ z%WruQ+k(W5#mRE32IR?HMX%45oIrWXe+$hn?BKUN8;ecG((1F%iv9lcQ9yfp<*Dmq zbl?5WMCeB@BS?abB+*i`VLD7@5=>qNiOKs!B9qn>Z@YgcPbW^Ed+J03^JI<5TO+TN zReLXPtGsjx2aM;Ei^d4QW{!|ia%pAZjB~E&fqBwnwy&CGU>>ZuM0`q*qA|kmsa;{f z3$yk!Nc8#%{(po~=psR_G6^&R_VJUbi={1FeK72jTeHp)4%6DXyXIJAF0m@my(qG( zNM2m3EC=-Ad}+tEAyCb8U6ZEz0f|%hZ=IXcNnK)PsBcZjW{@FNYN|C=RS=t;VC3-3 zkhV!SOCG~^m}ZSSYvk8}nMgj`49$^|p<+2f`>v$fng^{(;LTwB7PdCqxWld;{BPhY z#(Vl{v~Ym({=N6m!T~{~zd`4k3l-jy+dHVj$n}{oG@+K(q*3aU8JkD97~yYe zlhi3TCPz1iHI#ulYijVVVDW@bo6yoRZgwc7;`MZZwH(})5-Z$;d_iI??0;>}3MKfxZ)%O$}!wJcgtJ zz=7X+$L95()d1!_H-`7Y((g%p4t zvTKf=z2Aja1+ob~kvY4@S{0~^*yEjLN78kXbK;Z(l;FW*%|abF_T4RF?<@ycvN?;L zlll)({Kt=tN(=Se=y!KK7CrhtJ?H3uEOvpALnOsAun!f%MlU^fBhpz_v(yA_f$+`+Jo2kn>hyg1mP;EINT zPY$6Tipam!(z1=rVy+>Npu? zJ1Coj<�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

    w?V@o-6U=%$eK!`U3PX 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�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

    K1GEYYY(OG)fi3VTVN4& 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

    3GixxS@PLM=rvgj?3ENud`4 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 OeI9%Lhi`R%^8W*Eakjqz literal 0 HcmV?d00001 diff --git a/src/imgui/renderer/imgui_core.cpp b/src/imgui/renderer/imgui_core.cpp new file mode 100644 index 0000000000..b972d99d01 --- /dev/null +++ b/src/imgui/renderer/imgui_core.cpp @@ -0,0 +1,210 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include +#include + +#include "common/config.h" +#include "common/path_util.h" +#include "imgui/imgui_layer.h" +#include "imgui_core.h" +#include "imgui_impl_sdl3.h" +#include "imgui_impl_vulkan.h" +#include "imgui_internal.h" +#include "sdl_window.h" +#include "texture_manager.h" +#include "video_core/renderer_vulkan/renderer_vulkan.h" + +#include "imgui_fonts/notosansjp_regular.ttf.g.cpp" + +static void CheckVkResult(const vk::Result err) { + LOG_ERROR(ImGui, "Vulkan error {}", vk::to_string(err)); +} + +static std::vector layers; + +// Update layers before rendering to allow layer changes to be applied during rendering. +// Using deque to keep the order of changes in case a Layer is removed then added again between +// frames. +std::deque>& GetChangeLayers() { + static std::deque>* change_layers = + new std::deque>; + return *change_layers; +} + +static std::mutex change_layers_mutex{}; + +namespace ImGui { + +namespace Core { + +void Initialize(const ::Vulkan::Instance& instance, const Frontend::WindowSDL& window, + const u32 image_count, vk::Format surface_format, + const vk::AllocationCallbacks* allocator) { + + const auto config_path = GetUserPath(Common::FS::PathType::UserDir) / "imgui.ini"; + const auto log_path = GetUserPath(Common::FS::PathType::LogDir) / "imgui_log.txt"; + + CreateContext(); + ImGuiIO& io = GetIO(); + io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; + io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; + io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; + io.DisplaySize = ImVec2((float)window.getWidth(), (float)window.getHeight()); + io.IniFilename = SDL_strdup(config_path.string().c_str()); + io.LogFilename = SDL_strdup(log_path.string().c_str()); + + ImFontGlyphRangesBuilder rb{}; + rb.AddRanges(io.Fonts->GetGlyphRangesDefault()); + rb.AddRanges(io.Fonts->GetGlyphRangesGreek()); + rb.AddRanges(io.Fonts->GetGlyphRangesKorean()); + rb.AddRanges(io.Fonts->GetGlyphRangesJapanese()); + rb.AddRanges(io.Fonts->GetGlyphRangesCyrillic()); + ImVector ranges{}; + rb.BuildRanges(&ranges); + ImFontConfig font_cfg{}; + font_cfg.OversampleH = 2; + font_cfg.OversampleV = 1; + io.Fonts->AddFontFromMemoryCompressedTTF(imgui_font_notosansjp_regular_compressed_data, + imgui_font_notosansjp_regular_compressed_size, 16.0f, + &font_cfg, ranges.Data); + + StyleColorsDark(); + + Sdl::Init(window.GetSdlWindow()); + + const Vulkan::InitInfo vk_info{ + .instance = instance.GetInstance(), + .physical_device = instance.GetPhysicalDevice(), + .device = instance.GetDevice(), + .queue_family = instance.GetPresentQueueFamilyIndex(), + .queue = instance.GetPresentQueue(), + .image_count = image_count, + .min_allocation_size = 1024 * 1024, + .pipeline_rendering_create_info{ + .colorAttachmentCount = 1, + .pColorAttachmentFormats = &surface_format, + }, + .allocator = allocator, + .check_vk_result_fn = &CheckVkResult, + }; + Vulkan::Init(vk_info); + + TextureManager::StartWorker(); +} + +void OnResize() { + Sdl::OnResize(); +} + +void Shutdown(const vk::Device& device) { + device.waitIdle(); + + TextureManager::StopWorker(); + + const ImGuiIO& io = GetIO(); + const auto ini_filename = (void*)io.IniFilename; + const auto log_filename = (void*)io.LogFilename; + + Vulkan::Shutdown(); + Sdl::Shutdown(); + DestroyContext(); + + SDL_free(ini_filename); + SDL_free(log_filename); +} + +bool ProcessEvent(SDL_Event* event) { + Sdl::ProcessEvent(event); + switch (event->type) { + // Don't block release/up events + case SDL_EVENT_MOUSE_MOTION: + case SDL_EVENT_MOUSE_WHEEL: + case SDL_EVENT_MOUSE_BUTTON_DOWN: + return GetIO().WantCaptureMouse; + case SDL_EVENT_TEXT_INPUT: + case SDL_EVENT_KEY_DOWN: + return GetIO().WantCaptureKeyboard; + case SDL_EVENT_GAMEPAD_BUTTON_DOWN: + case SDL_EVENT_GAMEPAD_AXIS_MOTION: + case SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN: + case SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION: + return GetIO().NavActive; + default: + return false; + } +} + +void NewFrame() { + { + std::scoped_lock lock{change_layers_mutex}; + while (!GetChangeLayers().empty()) { + const auto [to_be_added, layer] = GetChangeLayers().front(); + if (to_be_added) { + layers.push_back(layer); + } else { + const auto [begin, end] = std::ranges::remove(layers, layer); + layers.erase(begin, end); + } + GetChangeLayers().pop_front(); + } + } + + Sdl::NewFrame(); + ImGui::NewFrame(); + + for (auto* layer : layers) { + layer->Draw(); + } +} + +void Render(const vk::CommandBuffer& cmdbuf, ::Vulkan::Frame* frame) { + ImGui::Render(); + ImDrawData* draw_data = GetDrawData(); + if (draw_data->CmdListsCount == 0) { + return; + } + + if (Config::vkMarkersEnabled()) { + cmdbuf.beginDebugUtilsLabelEXT(vk::DebugUtilsLabelEXT{ + .pLabelName = "ImGui Render", + }); + } + + vk::RenderingAttachmentInfo color_attachments[1]{ + { + .imageView = frame->image_view, + .imageLayout = vk::ImageLayout::eColorAttachmentOptimal, + .loadOp = vk::AttachmentLoadOp::eLoad, + .storeOp = vk::AttachmentStoreOp::eStore, + }, + }; + vk::RenderingInfo render_info = {}; + render_info.renderArea = vk::Rect2D{ + .offset = {0, 0}, + .extent = {frame->width, frame->height}, + }; + render_info.layerCount = 1; + render_info.colorAttachmentCount = 1; + render_info.pColorAttachments = color_attachments; + cmdbuf.beginRendering(render_info); + Vulkan::RenderDrawData(*draw_data, cmdbuf); + cmdbuf.endRendering(); + if (Config::vkMarkersEnabled()) { + cmdbuf.endDebugUtilsLabelEXT(); + } +} + +} // namespace Core + +void Layer::AddLayer(Layer* layer) { + std::scoped_lock lock{change_layers_mutex}; + GetChangeLayers().emplace_back(true, layer); +} + +void Layer::RemoveLayer(Layer* layer) { + std::scoped_lock lock{change_layers_mutex}; + GetChangeLayers().emplace_back(false, layer); +} + +} // namespace ImGui diff --git a/src/imgui/renderer/imgui_core.h b/src/imgui/renderer/imgui_core.h new file mode 100644 index 0000000000..9ad708f818 --- /dev/null +++ b/src/imgui/renderer/imgui_core.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "video_core/renderer_vulkan/vk_instance.h" +#include "vulkan/vulkan_handles.hpp" + +union SDL_Event; + +namespace Vulkan { +struct Frame; +} + +namespace ImGui::Core { + +void Initialize(const Vulkan::Instance& instance, const Frontend::WindowSDL& window, + u32 image_count, vk::Format surface_format, + const vk::AllocationCallbacks* allocator = nullptr); + +void OnResize(); + +void Shutdown(const vk::Device& device); + +bool ProcessEvent(SDL_Event* event); + +void NewFrame(); + +void Render(const vk::CommandBuffer& cmdbuf, Vulkan::Frame* frame); + +} // namespace ImGui::Core diff --git a/src/imgui/renderer/imgui_impl_sdl3.cpp b/src/imgui/renderer/imgui_impl_sdl3.cpp new file mode 100644 index 0000000000..bb194bff77 --- /dev/null +++ b/src/imgui/renderer/imgui_impl_sdl3.cpp @@ -0,0 +1,789 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +// Based on imgui_impl_sdl3.cpp from Dear ImGui repository + +#include +#include "imgui_impl_sdl3.h" + +// SDL +#include +#if defined(__APPLE__) +#include +#endif +#ifdef _WIN32 +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#endif + +namespace ImGui::Sdl { + +// SDL Data +struct SdlData { + SDL_Window* window{}; + SDL_WindowID window_id{}; + Uint64 time{}; + const char* clipboard_text_data{}; + + // IME handling + SDL_Window* ime_window{}; + + // Mouse handling + Uint32 mouse_window_id{}; + int mouse_buttons_down{}; + SDL_Cursor* mouse_cursors[ImGuiMouseCursor_COUNT]{}; + SDL_Cursor* mouse_last_cursor{}; + int mouse_pending_leave_frame{}; + + // Gamepad handling + ImVector gamepads{}; + GamepadMode gamepad_mode{}; + bool want_update_gamepads_list{}; +}; + +// Backend data stored in io.BackendPlatformUserData to allow support for multiple Dear ImGui +// contexts It is STRONGLY preferred that you use docking branch with multi-viewports (== single +// Dear ImGui context + multiple windows) instead of multiple Dear ImGui contexts. +static SdlData* GetBackendData() { + return ImGui::GetCurrentContext() ? (SdlData*)ImGui::GetIO().BackendPlatformUserData : nullptr; +} + +static const char* GetClipboardText(ImGuiContext*) { + SdlData* bd = GetBackendData(); + if (bd->clipboard_text_data) + SDL_free((void*)bd->clipboard_text_data); + const char* sdl_clipboard_text = SDL_GetClipboardText(); + bd->clipboard_text_data = sdl_clipboard_text; + return bd->clipboard_text_data; +} + +static void SetClipboardText(ImGuiContext*, const char* text) { + SDL_SetClipboardText(text); +} + +static void PlatformSetImeData(ImGuiContext*, ImGuiViewport* viewport, ImGuiPlatformImeData* data) { + SdlData* bd = GetBackendData(); + auto window_id = (SDL_WindowID)(intptr_t)viewport->PlatformHandle; + SDL_Window* window = SDL_GetWindowFromID(window_id); + if ((!data->WantVisible || bd->ime_window != window) && bd->ime_window != nullptr) { + SDL_StopTextInput(bd->ime_window); + bd->ime_window = nullptr; + } + if (data->WantVisible) { + SDL_Rect r; + r.x = (int)data->InputPos.x; + r.y = (int)data->InputPos.y; + r.w = 1; + r.h = (int)data->InputLineHeight; + SDL_SetTextInputArea(window, &r, 0); + SDL_StartTextInput(window); + bd->ime_window = window; + } +} + +static ImGuiKey KeyEventToImGuiKey(SDL_Keycode keycode, SDL_Scancode scancode) { + // Keypad doesn't have individual key values in SDL3 + switch (scancode) { + case SDL_SCANCODE_KP_0: + return ImGuiKey_Keypad0; + case SDL_SCANCODE_KP_1: + return ImGuiKey_Keypad1; + case SDL_SCANCODE_KP_2: + return ImGuiKey_Keypad2; + case SDL_SCANCODE_KP_3: + return ImGuiKey_Keypad3; + case SDL_SCANCODE_KP_4: + return ImGuiKey_Keypad4; + case SDL_SCANCODE_KP_5: + return ImGuiKey_Keypad5; + case SDL_SCANCODE_KP_6: + return ImGuiKey_Keypad6; + case SDL_SCANCODE_KP_7: + return ImGuiKey_Keypad7; + case SDL_SCANCODE_KP_8: + return ImGuiKey_Keypad8; + case SDL_SCANCODE_KP_9: + return ImGuiKey_Keypad9; + case SDL_SCANCODE_KP_PERIOD: + return ImGuiKey_KeypadDecimal; + case SDL_SCANCODE_KP_DIVIDE: + return ImGuiKey_KeypadDivide; + case SDL_SCANCODE_KP_MULTIPLY: + return ImGuiKey_KeypadMultiply; + case SDL_SCANCODE_KP_MINUS: + return ImGuiKey_KeypadSubtract; + case SDL_SCANCODE_KP_PLUS: + return ImGuiKey_KeypadAdd; + case SDL_SCANCODE_KP_ENTER: + return ImGuiKey_KeypadEnter; + case SDL_SCANCODE_KP_EQUALS: + return ImGuiKey_KeypadEqual; + default: + break; + } + switch (keycode) { + case SDLK_TAB: + return ImGuiKey_Tab; + case SDLK_LEFT: + return ImGuiKey_LeftArrow; + case SDLK_RIGHT: + return ImGuiKey_RightArrow; + case SDLK_UP: + return ImGuiKey_UpArrow; + case SDLK_DOWN: + return ImGuiKey_DownArrow; + case SDLK_PAGEUP: + return ImGuiKey_PageUp; + case SDLK_PAGEDOWN: + return ImGuiKey_PageDown; + case SDLK_HOME: + return ImGuiKey_Home; + case SDLK_END: + return ImGuiKey_End; + case SDLK_INSERT: + return ImGuiKey_Insert; + case SDLK_DELETE: + return ImGuiKey_Delete; + case SDLK_BACKSPACE: + return ImGuiKey_Backspace; + case SDLK_SPACE: + return ImGuiKey_Space; + case SDLK_RETURN: + return ImGuiKey_Enter; + case SDLK_ESCAPE: + return ImGuiKey_Escape; + case SDLK_APOSTROPHE: + return ImGuiKey_Apostrophe; + case SDLK_COMMA: + return ImGuiKey_Comma; + case SDLK_MINUS: + return ImGuiKey_Minus; + case SDLK_PERIOD: + return ImGuiKey_Period; + case SDLK_SLASH: + return ImGuiKey_Slash; + case SDLK_SEMICOLON: + return ImGuiKey_Semicolon; + case SDLK_EQUALS: + return ImGuiKey_Equal; + case SDLK_LEFTBRACKET: + return ImGuiKey_LeftBracket; + case SDLK_BACKSLASH: + return ImGuiKey_Backslash; + case SDLK_RIGHTBRACKET: + return ImGuiKey_RightBracket; + case SDLK_GRAVE: + return ImGuiKey_GraveAccent; + case SDLK_CAPSLOCK: + return ImGuiKey_CapsLock; + case SDLK_SCROLLLOCK: + return ImGuiKey_ScrollLock; + case SDLK_NUMLOCKCLEAR: + return ImGuiKey_NumLock; + case SDLK_PRINTSCREEN: + return ImGuiKey_PrintScreen; + case SDLK_PAUSE: + return ImGuiKey_Pause; + case SDLK_LCTRL: + return ImGuiKey_LeftCtrl; + case SDLK_LSHIFT: + return ImGuiKey_LeftShift; + case SDLK_LALT: + return ImGuiKey_LeftAlt; + case SDLK_LGUI: + return ImGuiKey_LeftSuper; + case SDLK_RCTRL: + return ImGuiKey_RightCtrl; + case SDLK_RSHIFT: + return ImGuiKey_RightShift; + case SDLK_RALT: + return ImGuiKey_RightAlt; + case SDLK_RGUI: + return ImGuiKey_RightSuper; + case SDLK_APPLICATION: + return ImGuiKey_Menu; + case SDLK_0: + return ImGuiKey_0; + case SDLK_1: + return ImGuiKey_1; + case SDLK_2: + return ImGuiKey_2; + case SDLK_3: + return ImGuiKey_3; + case SDLK_4: + return ImGuiKey_4; + case SDLK_5: + return ImGuiKey_5; + case SDLK_6: + return ImGuiKey_6; + case SDLK_7: + return ImGuiKey_7; + case SDLK_8: + return ImGuiKey_8; + case SDLK_9: + return ImGuiKey_9; + case SDLK_A: + return ImGuiKey_A; + case SDLK_B: + return ImGuiKey_B; + case SDLK_C: + return ImGuiKey_C; + case SDLK_D: + return ImGuiKey_D; + case SDLK_E: + return ImGuiKey_E; + case SDLK_F: + return ImGuiKey_F; + case SDLK_G: + return ImGuiKey_G; + case SDLK_H: + return ImGuiKey_H; + case SDLK_I: + return ImGuiKey_I; + case SDLK_J: + return ImGuiKey_J; + case SDLK_K: + return ImGuiKey_K; + case SDLK_L: + return ImGuiKey_L; + case SDLK_M: + return ImGuiKey_M; + case SDLK_N: + return ImGuiKey_N; + case SDLK_O: + return ImGuiKey_O; + case SDLK_P: + return ImGuiKey_P; + case SDLK_Q: + return ImGuiKey_Q; + case SDLK_R: + return ImGuiKey_R; + case SDLK_S: + return ImGuiKey_S; + case SDLK_T: + return ImGuiKey_T; + case SDLK_U: + return ImGuiKey_U; + case SDLK_V: + return ImGuiKey_V; + case SDLK_W: + return ImGuiKey_W; + case SDLK_X: + return ImGuiKey_X; + case SDLK_Y: + return ImGuiKey_Y; + case SDLK_Z: + return ImGuiKey_Z; + case SDLK_F1: + return ImGuiKey_F1; + case SDLK_F2: + return ImGuiKey_F2; + case SDLK_F3: + return ImGuiKey_F3; + case SDLK_F4: + return ImGuiKey_F4; + case SDLK_F5: + return ImGuiKey_F5; + case SDLK_F6: + return ImGuiKey_F6; + case SDLK_F7: + return ImGuiKey_F7; + case SDLK_F8: + return ImGuiKey_F8; + case SDLK_F9: + return ImGuiKey_F9; + case SDLK_F10: + return ImGuiKey_F10; + case SDLK_F11: + return ImGuiKey_F11; + case SDLK_F12: + return ImGuiKey_F12; + case SDLK_F13: + return ImGuiKey_F13; + case SDLK_F14: + return ImGuiKey_F14; + case SDLK_F15: + return ImGuiKey_F15; + case SDLK_F16: + return ImGuiKey_F16; + case SDLK_F17: + return ImGuiKey_F17; + case SDLK_F18: + return ImGuiKey_F18; + case SDLK_F19: + return ImGuiKey_F19; + case SDLK_F20: + return ImGuiKey_F20; + case SDLK_F21: + return ImGuiKey_F21; + case SDLK_F22: + return ImGuiKey_F22; + case SDLK_F23: + return ImGuiKey_F23; + case SDLK_F24: + return ImGuiKey_F24; + case SDLK_AC_BACK: + return ImGuiKey_AppBack; + case SDLK_AC_FORWARD: + return ImGuiKey_AppForward; + default: + break; + } + return ImGuiKey_None; +} + +static void UpdateKeyModifiers(SDL_Keymod sdl_key_mods) { + ImGuiIO& io = ImGui::GetIO(); + io.AddKeyEvent(ImGuiMod_Ctrl, (sdl_key_mods & SDL_KMOD_CTRL) != 0); + io.AddKeyEvent(ImGuiMod_Shift, (sdl_key_mods & SDL_KMOD_SHIFT) != 0); + io.AddKeyEvent(ImGuiMod_Alt, (sdl_key_mods & SDL_KMOD_ALT) != 0); + io.AddKeyEvent(ImGuiMod_Super, (sdl_key_mods & SDL_KMOD_GUI) != 0); +} + +static ImGuiViewport* GetViewportForWindowId(SDL_WindowID window_id) { + SdlData* bd = GetBackendData(); + return (window_id == bd->window_id) ? ImGui::GetMainViewport() : nullptr; +} + +// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to +// use your inputs. +// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or +// clear/overwrite your copy of the mouse data. +// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main +// application, or clear/overwrite your copy of the keyboard data. Generally you may always pass all +// inputs to dear imgui, and hide them from your application based on those two flags. If you have +// multiple SDL events and some of them are not meant to be used by dear imgui, you may need to +// filter events based on their windowID field. +bool ProcessEvent(const SDL_Event* event) { + SdlData* bd = GetBackendData(); + IM_ASSERT(bd != nullptr && + "Context or backend not initialized! Did you call ImGui_ImplSDL3_Init()?"); + ImGuiIO& io = ImGui::GetIO(); + + switch (event->type) { + case SDL_EVENT_MOUSE_MOTION: { + if (GetViewportForWindowId(event->motion.windowID) == NULL) + return false; + ImVec2 mouse_pos((float)event->motion.x, (float)event->motion.y); + io.AddMouseSourceEvent(event->motion.which == SDL_TOUCH_MOUSEID + ? ImGuiMouseSource_TouchScreen + : ImGuiMouseSource_Mouse); + io.AddMousePosEvent(mouse_pos.x, mouse_pos.y); + return true; + } + case SDL_EVENT_MOUSE_WHEEL: { + if (GetViewportForWindowId(event->wheel.windowID) == NULL) + return false; + // IMGUI_DEBUG_LOG("wheel %.2f %.2f, precise %.2f %.2f\n", (float)event->wheel.x, + // (float)event->wheel.y, event->wheel.preciseX, event->wheel.preciseY); + float wheel_x = -event->wheel.x; + float wheel_y = event->wheel.y; +#ifdef __EMSCRIPTEN__ + wheel_x /= 100.0f; +#endif + io.AddMouseSourceEvent(event->wheel.which == SDL_TOUCH_MOUSEID + ? ImGuiMouseSource_TouchScreen + : ImGuiMouseSource_Mouse); + io.AddMouseWheelEvent(wheel_x, wheel_y); + return true; + } + case SDL_EVENT_MOUSE_BUTTON_DOWN: + case SDL_EVENT_MOUSE_BUTTON_UP: { + if (GetViewportForWindowId(event->button.windowID) == NULL) + return false; + int mouse_button = -1; + if (event->button.button == SDL_BUTTON_LEFT) { + mouse_button = 0; + } + if (event->button.button == SDL_BUTTON_RIGHT) { + mouse_button = 1; + } + if (event->button.button == SDL_BUTTON_MIDDLE) { + mouse_button = 2; + } + if (event->button.button == SDL_BUTTON_X1) { + mouse_button = 3; + } + if (event->button.button == SDL_BUTTON_X2) { + mouse_button = 4; + } + if (mouse_button == -1) + break; + io.AddMouseSourceEvent(event->button.which == SDL_TOUCH_MOUSEID + ? ImGuiMouseSource_TouchScreen + : ImGuiMouseSource_Mouse); + io.AddMouseButtonEvent(mouse_button, (event->type == SDL_EVENT_MOUSE_BUTTON_DOWN)); + bd->mouse_buttons_down = (event->type == SDL_EVENT_MOUSE_BUTTON_DOWN) + ? (bd->mouse_buttons_down | (1 << mouse_button)) + : (bd->mouse_buttons_down & ~(1 << mouse_button)); + return true; + } + case SDL_EVENT_TEXT_INPUT: { + if (GetViewportForWindowId(event->text.windowID) == NULL) + return false; + io.AddInputCharactersUTF8(event->text.text); + return true; + } + case SDL_EVENT_KEY_DOWN: + case SDL_EVENT_KEY_UP: { + if (GetViewportForWindowId(event->key.windowID) == NULL) + return false; + // IMGUI_DEBUG_LOG("SDL_EVENT_KEY_%d: key=%d, scancode=%d, mod=%X\n", (event->type == + // SDL_EVENT_KEY_DOWN) ? "DOWN" : "UP", event->key.key, event->key.scancode, + // event->key.mod); + UpdateKeyModifiers((SDL_Keymod)event->key.mod); + ImGuiKey key = KeyEventToImGuiKey(event->key.key, event->key.scancode); + io.AddKeyEvent(key, (event->type == SDL_EVENT_KEY_DOWN)); + io.SetKeyEventNativeData( + key, event->key.key, event->key.scancode, + event->key.scancode); // To support legacy indexing (<1.87 user code). Legacy backend + // uses SDLK_*** as indices to IsKeyXXX() functions. + return true; + } + case SDL_EVENT_WINDOW_MOUSE_ENTER: { + if (GetViewportForWindowId(event->window.windowID) == NULL) + return false; + bd->mouse_window_id = event->window.windowID; + bd->mouse_pending_leave_frame = 0; + return true; + } + // - In some cases, when detaching a window from main viewport SDL may send + // SDL_WINDOWEVENT_ENTER one frame too late, + // causing SDL_WINDOWEVENT_LEAVE on previous frame to interrupt drag operation by clear mouse + // position. This is why we delay process the SDL_WINDOWEVENT_LEAVE events by one frame. See + // issue #5012 for details. + // FIXME: Unconfirmed whether this is still needed with SDL3. + case SDL_EVENT_WINDOW_MOUSE_LEAVE: { + if (GetViewportForWindowId(event->window.windowID) == NULL) + return false; + bd->mouse_pending_leave_frame = ImGui::GetFrameCount() + 1; + return true; + } + case SDL_EVENT_WINDOW_FOCUS_GAINED: + case SDL_EVENT_WINDOW_FOCUS_LOST: { + if (GetViewportForWindowId(event->window.windowID) == NULL) + return false; + io.AddFocusEvent(event->type == SDL_EVENT_WINDOW_FOCUS_GAINED); + return true; + } + case SDL_EVENT_GAMEPAD_ADDED: + case SDL_EVENT_GAMEPAD_REMOVED: { + bd->want_update_gamepads_list = true; + return true; + } + } + return false; +} + +static void SetupPlatformHandles(ImGuiViewport* viewport, SDL_Window* window) { + viewport->PlatformHandle = (void*)(intptr_t)SDL_GetWindowID(window); + viewport->PlatformHandleRaw = nullptr; +#if defined(_WIN32) && !defined(__WINRT__) + viewport->PlatformHandleRaw = (HWND)SDL_GetPointerProperty( + SDL_GetWindowProperties(window), SDL_PROP_WINDOW_WIN32_HWND_POINTER, nullptr); +#elif defined(__APPLE__) && defined(SDL_VIDEO_DRIVER_COCOA) + viewport->PlatformHandleRaw = SDL_GetPointerProperty( + SDL_GetWindowProperties(window), SDL_PROP_WINDOW_COCOA_WINDOW_POINTER, nullptr); +#endif +} + +bool Init(SDL_Window* window) { + ImGuiIO& io = ImGui::GetIO(); + IMGUI_CHECKVERSION(); + IM_ASSERT(io.BackendPlatformUserData == nullptr && "Already initialized a platform backend!"); + + // Setup backend capabilities flags + SdlData* bd = IM_NEW(SdlData)(); + io.BackendPlatformUserData = (void*)bd; + io.BackendPlatformName = "imgui_impl_sdl3_shadps4"; + io.BackendFlags |= ImGuiBackendFlags_HasMouseCursors; // We can honor GetMouseCursor() values + io.BackendFlags |= ImGuiBackendFlags_HasSetMousePos; // We can honor io.WantSetMousePos requests + // (optional, rarely used) + + bd->window = window; + bd->window_id = SDL_GetWindowID(window); + + ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO(); + platform_io.Platform_SetClipboardTextFn = SetClipboardText; + platform_io.Platform_GetClipboardTextFn = GetClipboardText; + platform_io.Platform_SetImeDataFn = PlatformSetImeData; + + // Gamepad handling + bd->gamepad_mode = ImGui_ImplSDL3_GamepadMode_AutoFirst; + bd->want_update_gamepads_list = true; + + // Load mouse cursors +#define CURSOR(left, right) \ + bd->mouse_cursors[ImGuiMouseCursor_##left] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_##right) + CURSOR(Arrow, DEFAULT); + CURSOR(TextInput, TEXT); + CURSOR(ResizeAll, MOVE); + CURSOR(ResizeNS, NS_RESIZE); + CURSOR(ResizeEW, EW_RESIZE); + CURSOR(ResizeNESW, NESW_RESIZE); + CURSOR(ResizeNWSE, NWSE_RESIZE); + CURSOR(Hand, POINTER); + CURSOR(NotAllowed, NOT_ALLOWED); +#undef CURSOR + + // Set platform dependent data in viewport + // Our mouse update function expect PlatformHandle to be filled for the main viewport + ImGuiViewport* main_viewport = ImGui::GetMainViewport(); + SetupPlatformHandles(main_viewport, window); + + // From 2.0.5: Set SDL hint to receive mouse click events on window focus, otherwise SDL doesn't + // emit the event. Without this, when clicking to gain focus, our widgets wouldn't activate even + // though they showed as hovered. (This is unfortunately a global SDL setting, so enabling it + // might have a side-effect on your application. It is unlikely to make a difference, but if + // your app absolutely needs to ignore the initial on-focus click: you can ignore + // SDL_EVENT_MOUSE_BUTTON_DOWN events coming right after a SDL_WINDOWEVENT_FOCUS_GAINED) +#ifdef SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH + SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, "1"); +#endif + + // From 2.0.22: Disable auto-capture, this is preventing drag and drop across multiple windows + // (see #5710) +#ifdef SDL_HINT_MOUSE_AUTO_CAPTURE + SDL_SetHint(SDL_HINT_MOUSE_AUTO_CAPTURE, "0"); +#endif + + return true; +} + +static void CloseGamepads(); + +void Shutdown() { + SdlData* bd = GetBackendData(); + IM_ASSERT(bd != nullptr && "No platform backend to shutdown, or already shutdown?"); + ImGuiIO& io = ImGui::GetIO(); + + if (bd->clipboard_text_data) { + SDL_free((void*)bd->clipboard_text_data); + } + for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++) + SDL_DestroyCursor(bd->mouse_cursors[cursor_n]); + CloseGamepads(); + + io.BackendPlatformName = nullptr; + io.BackendPlatformUserData = nullptr; + io.BackendFlags &= ~(ImGuiBackendFlags_HasMouseCursors | ImGuiBackendFlags_HasSetMousePos | + ImGuiBackendFlags_HasGamepad); + IM_DELETE(bd); +} + +static void UpdateMouseData() { + SdlData* bd = GetBackendData(); + ImGuiIO& io = ImGui::GetIO(); + + // We forward mouse input when hovered or captured (via SDL_EVENT_MOUSE_MOTION) or when focused + // (below) + // SDL_CaptureMouse() let the OS know e.g. that our imgui drag outside the SDL window boundaries + // shouldn't e.g. trigger other operations outside + SDL_CaptureMouse((bd->mouse_buttons_down != 0) ? SDL_TRUE : SDL_FALSE); + SDL_Window* focused_window = SDL_GetKeyboardFocus(); + const bool is_app_focused = (bd->window == focused_window); + + if (is_app_focused) { + // (Optional) Set OS mouse position from Dear ImGui if requested (rarely used, only when + // ImGuiConfigFlags_NavEnableSetMousePos is enabled by user) + if (io.WantSetMousePos) + SDL_WarpMouseInWindow(bd->window, io.MousePos.x, io.MousePos.y); + + // (Optional) Fallback to provide mouse position when focused (SDL_EVENT_MOUSE_MOTION + // already provides this when hovered or captured) + if (bd->mouse_buttons_down == 0) { + // Single-viewport mode: mouse position in client window coordinates (io.MousePos is + // (0,0) when the mouse is on the upper-left corner of the app window) + float mouse_x_global, mouse_y_global; + int window_x, window_y; + SDL_GetGlobalMouseState(&mouse_x_global, &mouse_y_global); + SDL_GetWindowPosition(focused_window, &window_x, &window_y); + io.AddMousePosEvent(mouse_x_global - (float)window_x, mouse_y_global - (float)window_y); + } + } +} + +static void UpdateMouseCursor() { + ImGuiIO& io = ImGui::GetIO(); + if (io.ConfigFlags & ImGuiConfigFlags_NoMouseCursorChange) + return; + SdlData* bd = GetBackendData(); + + ImGuiMouseCursor imgui_cursor = ImGui::GetMouseCursor(); + if (io.MouseDrawCursor || imgui_cursor == ImGuiMouseCursor_None) { + // Hide OS mouse cursor if imgui is drawing it or if it wants no cursor + SDL_HideCursor(); + } else { + // Show OS mouse cursor + SDL_Cursor* expected_cursor = bd->mouse_cursors[imgui_cursor] + ? bd->mouse_cursors[imgui_cursor] + : bd->mouse_cursors[ImGuiMouseCursor_Arrow]; + if (bd->mouse_last_cursor != expected_cursor) { + SDL_SetCursor(expected_cursor); // SDL function doesn't have an early out (see #6113) + bd->mouse_last_cursor = expected_cursor; + } + SDL_ShowCursor(); + } +} + +static void CloseGamepads() { + SdlData* bd = GetBackendData(); + if (bd->gamepad_mode != ImGui_ImplSDL3_GamepadMode_Manual) + for (SDL_Gamepad* gamepad : bd->gamepads) + SDL_CloseGamepad(gamepad); + bd->gamepads.resize(0); +} + +void SetGamepadMode(GamepadMode mode, SDL_Gamepad** manual_gamepads_array, + int manual_gamepads_count) { + SdlData* bd = GetBackendData(); + CloseGamepads(); + if (mode == ImGui_ImplSDL3_GamepadMode_Manual) { + IM_ASSERT(manual_gamepads_array != nullptr && manual_gamepads_count > 0); + for (int n = 0; n < manual_gamepads_count; n++) + bd->gamepads.push_back(manual_gamepads_array[n]); + } else { + IM_ASSERT(manual_gamepads_array == nullptr && manual_gamepads_count <= 0); + bd->want_update_gamepads_list = true; + } + bd->gamepad_mode = mode; +} + +static void UpdateGamepadButton(SdlData* bd, ImGuiIO& io, ImGuiKey key, + SDL_GamepadButton button_no) { + bool merged_value = false; + for (SDL_Gamepad* gamepad : bd->gamepads) + merged_value |= SDL_GetGamepadButton(gamepad, button_no) != 0; + io.AddKeyEvent(key, merged_value); +} + +static inline float Saturate(float v) { + return v < 0.0f ? 0.0f : v > 1.0f ? 1.0f : v; +} +static void UpdateGamepadAnalog(SdlData* bd, ImGuiIO& io, ImGuiKey key, SDL_GamepadAxis axis_no, + float v0, float v1) { + float merged_value = 0.0f; + for (SDL_Gamepad* gamepad : bd->gamepads) { + float vn = Saturate((float)(SDL_GetGamepadAxis(gamepad, axis_no) - v0) / (float)(v1 - v0)); + if (merged_value < vn) + merged_value = vn; + } + io.AddKeyAnalogEvent(key, merged_value > 0.1f, merged_value); +} + +static void UpdateGamepads() { + ImGuiIO& io = ImGui::GetIO(); + SdlData* bd = GetBackendData(); + + // Update list of gamepads to use + if (bd->want_update_gamepads_list && bd->gamepad_mode != ImGui_ImplSDL3_GamepadMode_Manual) { + CloseGamepads(); + int sdl_gamepads_count = 0; + const SDL_JoystickID* sdl_gamepads = SDL_GetGamepads(&sdl_gamepads_count); + for (int n = 0; n < sdl_gamepads_count; n++) + if (SDL_Gamepad* gamepad = SDL_OpenGamepad(sdl_gamepads[n])) { + bd->gamepads.push_back(gamepad); + if (bd->gamepad_mode == ImGui_ImplSDL3_GamepadMode_AutoFirst) + break; + } + bd->want_update_gamepads_list = false; + } + + // FIXME: Technically feeding gamepad shouldn't depend on this now that they are regular inputs. + if ((io.ConfigFlags & ImGuiConfigFlags_NavEnableGamepad) == 0) + return; + io.BackendFlags &= ~ImGuiBackendFlags_HasGamepad; + if (bd->gamepads.Size == 0) + return; + io.BackendFlags |= ImGuiBackendFlags_HasGamepad; + + // Update gamepad inputs + const int thumb_dead_zone = 8000; // SDL_gamepad.h suggests using this value. + UpdateGamepadButton(bd, io, ImGuiKey_GamepadStart, SDL_GAMEPAD_BUTTON_START); + UpdateGamepadButton(bd, io, ImGuiKey_GamepadBack, SDL_GAMEPAD_BUTTON_BACK); + /*UpdateGamepadButton(bd, io, ImGuiKey_GamepadFaceLeft, + SDL_GAMEPAD_BUTTON_WEST); // Xbox X, PS Square*/ // Disable to avoid menu toggle + UpdateGamepadButton(bd, io, ImGuiKey_GamepadFaceRight, + SDL_GAMEPAD_BUTTON_EAST); // Xbox B, PS Circle + UpdateGamepadButton(bd, io, ImGuiKey_GamepadFaceUp, + SDL_GAMEPAD_BUTTON_NORTH); // Xbox Y, PS Triangle + UpdateGamepadButton(bd, io, ImGuiKey_GamepadFaceDown, + SDL_GAMEPAD_BUTTON_SOUTH); // Xbox A, PS Cross + UpdateGamepadButton(bd, io, ImGuiKey_GamepadDpadLeft, SDL_GAMEPAD_BUTTON_DPAD_LEFT); + UpdateGamepadButton(bd, io, ImGuiKey_GamepadDpadRight, SDL_GAMEPAD_BUTTON_DPAD_RIGHT); + UpdateGamepadButton(bd, io, ImGuiKey_GamepadDpadUp, SDL_GAMEPAD_BUTTON_DPAD_UP); + UpdateGamepadButton(bd, io, ImGuiKey_GamepadDpadDown, SDL_GAMEPAD_BUTTON_DPAD_DOWN); + UpdateGamepadButton(bd, io, ImGuiKey_GamepadL1, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER); + UpdateGamepadButton(bd, io, ImGuiKey_GamepadR1, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadL2, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, 0.0f, 32767); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadR2, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, 0.0f, 32767); + UpdateGamepadButton(bd, io, ImGuiKey_GamepadL3, SDL_GAMEPAD_BUTTON_LEFT_STICK); + UpdateGamepadButton(bd, io, ImGuiKey_GamepadR3, SDL_GAMEPAD_BUTTON_RIGHT_STICK); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadLStickLeft, SDL_GAMEPAD_AXIS_LEFTX, + -thumb_dead_zone, -32768); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadLStickRight, SDL_GAMEPAD_AXIS_LEFTX, + +thumb_dead_zone, +32767); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadLStickUp, SDL_GAMEPAD_AXIS_LEFTY, -thumb_dead_zone, + -32768); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadLStickDown, SDL_GAMEPAD_AXIS_LEFTY, + +thumb_dead_zone, +32767); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadRStickLeft, SDL_GAMEPAD_AXIS_RIGHTX, + -thumb_dead_zone, -32768); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadRStickRight, SDL_GAMEPAD_AXIS_RIGHTX, + +thumb_dead_zone, +32767); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadRStickUp, SDL_GAMEPAD_AXIS_RIGHTY, -thumb_dead_zone, + -32768); + UpdateGamepadAnalog(bd, io, ImGuiKey_GamepadRStickDown, SDL_GAMEPAD_AXIS_RIGHTY, + +thumb_dead_zone, +32767); +} + +void NewFrame() { + SdlData* bd = GetBackendData(); + IM_ASSERT(bd != nullptr && "No platform backend to shutdown, or already shutdown?"); + ImGuiIO& io = ImGui::GetIO(); + + // Setup time step (we don't use SDL_GetTicks() because it is using millisecond resolution) + // (Accept SDL_GetPerformanceCounter() not returning a monotonically increasing value. Happens + // in VMs and Emscripten, see #6189, #6114, #3644) + static Uint64 frequency = SDL_GetPerformanceFrequency(); + Uint64 current_time = SDL_GetPerformanceCounter(); + if (current_time <= bd->time) + current_time = bd->time + 1; + io.DeltaTime = bd->time > 0 ? (float)((double)(current_time - bd->time) / (double)frequency) + : (float)(1.0f / 60.0f); + bd->time = current_time; + + if (bd->mouse_pending_leave_frame && bd->mouse_pending_leave_frame >= ImGui::GetFrameCount() && + bd->mouse_buttons_down == 0) { + bd->mouse_window_id = 0; + bd->mouse_pending_leave_frame = 0; + io.AddMousePosEvent(-FLT_MAX, -FLT_MAX); + } + + UpdateMouseData(); + UpdateMouseCursor(); + + // Update game controllers (if enabled and available) + UpdateGamepads(); +} + +void OnResize() { + SdlData* bd = GetBackendData(); + ImGuiIO& io = ImGui::GetIO(); + + int w, h; + int display_w, display_h; + SDL_GetWindowSize(bd->window, &w, &h); + if (SDL_GetWindowFlags(bd->window) & SDL_WINDOW_MINIMIZED) { + w = h = 0; + } + SDL_GetWindowSizeInPixels(bd->window, &display_w, &display_h); + io.DisplaySize = ImVec2((float)w, (float)h); + if (w > 0 && h > 0) { + io.DisplayFramebufferScale = {(float)display_w / (float)w, (float)display_h / (float)h}; + } +} + +} // namespace ImGui::Sdl diff --git a/src/imgui/renderer/imgui_impl_sdl3.h b/src/imgui/renderer/imgui_impl_sdl3.h new file mode 100644 index 0000000000..59b1a68567 --- /dev/null +++ b/src/imgui/renderer/imgui_impl_sdl3.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +// Based on imgui_impl_sdl3.h from Dear ImGui repository + +#pragma once + +struct SDL_Window; +struct SDL_Renderer; +struct SDL_Gamepad; +typedef union SDL_Event SDL_Event; + +namespace ImGui::Sdl { + +bool Init(SDL_Window* window); +void Shutdown(); +void NewFrame(); +bool ProcessEvent(const SDL_Event* event); +void OnResize(); + +// Gamepad selection automatically starts in AutoFirst mode, picking first available SDL_Gamepad. +// You may override this. When using manual mode, caller is responsible for opening/closing gamepad. +enum GamepadMode { + ImGui_ImplSDL3_GamepadMode_AutoFirst, + ImGui_ImplSDL3_GamepadMode_AutoAll, + ImGui_ImplSDL3_GamepadMode_Manual +}; +void SetGamepadMode(GamepadMode mode, SDL_Gamepad** manual_gamepads_array = NULL, + int manual_gamepads_count = -1); + +}; // namespace ImGui::Sdl diff --git a/src/imgui/renderer/imgui_impl_vulkan.cpp b/src/imgui/renderer/imgui_impl_vulkan.cpp new file mode 100644 index 0000000000..cf8c5ea4ee --- /dev/null +++ b/src/imgui/renderer/imgui_impl_vulkan.cpp @@ -0,0 +1,1307 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +// Based on imgui_impl_vulkan.cpp from Dear ImGui repository + +#include +#include + +#include + +#include "imgui_impl_vulkan.h" + +#ifndef IM_MAX +#define IM_MAX(A, B) (((A) >= (B)) ? (A) : (B)) +#endif + +#define IDX_SIZE sizeof(ImDrawIdx) + +namespace ImGui::Vulkan { + +struct RenderBuffer { + vk::DeviceMemory buffer_memory{}; + vk::DeviceSize buffer_size{}; + vk::Buffer buffer{}; +}; + +// Reusable buffers used for rendering 1 current in-flight frame, for RenderDrawData() +struct FrameRenderBuffers { + RenderBuffer vertex; + RenderBuffer index; +}; + +// Each viewport will hold 1 WindowRenderBuffers +struct WindowRenderBuffers { + uint32_t index{}; + uint32_t count{}; + std::vector frame_render_buffers{}; +}; + +// Vulkan data +struct VkData { + const InitInfo init_info; + vk::DeviceSize buffer_memory_alignment = 256; + vk::PipelineCreateFlags pipeline_create_flags{}; + vk::DescriptorPool descriptor_pool{}; + vk::DescriptorSetLayout descriptor_set_layout{}; + vk::PipelineLayout pipeline_layout{}; + vk::Pipeline pipeline{}; + vk::ShaderModule shader_module_vert{}; + vk::ShaderModule shader_module_frag{}; + + std::mutex command_pool_mutex; + vk::CommandPool command_pool{}; + vk::Sampler simple_sampler{}; + + // Font data + vk::DeviceMemory font_memory{}; + vk::Image font_image{}; + vk::ImageView font_view{}; + vk::DescriptorSet font_descriptor_set{}; + vk::CommandBuffer font_command_buffer{}; + + // Render buffers + WindowRenderBuffers render_buffers{}; + + VkData(const InitInfo init_info) : init_info(init_info) { + render_buffers.count = init_info.image_count; + render_buffers.frame_render_buffers.resize(render_buffers.count); + } +}; + +//----------------------------------------------------------------------------- +// SHADERS +//----------------------------------------------------------------------------- + +// backends/vulkan/glsl_shader.vert, compiled with: +// # glslangValidator -V -x -o glsl_shader.vert.u32 glsl_shader.vert +/* +#version 450 core +layout(location = 0) in vec2 aPos; +layout(location = 1) in vec2 aUV; +layout(location = 2) in vec4 aColor; +layout(push_constant) uniform uPushConstant { vec2 uScale; vec2 uTranslate; } pc; + +out gl_PerVertex { vec4 gl_Position; }; +layout(location = 0) out struct { vec4 Color; vec2 UV; } Out; + +void main() +{ + Out.Color = aColor; + Out.UV = aUV; + gl_Position = vec4(aPos * pc.uScale + pc.uTranslate, 0, 1); +} +*/ +static uint32_t glsl_shader_vert_spv[] = { + 0x07230203, 0x00010000, 0x00080001, 0x0000002e, 0x00000000, 0x00020011, 0x00000001, 0x0006000b, + 0x00000001, 0x4c534c47, 0x6474732e, 0x3035342e, 0x00000000, 0x0003000e, 0x00000000, 0x00000001, + 0x000a000f, 0x00000000, 0x00000004, 0x6e69616d, 0x00000000, 0x0000000b, 0x0000000f, 0x00000015, + 0x0000001b, 0x0000001c, 0x00030003, 0x00000002, 0x000001c2, 0x00040005, 0x00000004, 0x6e69616d, + 0x00000000, 0x00030005, 0x00000009, 0x00000000, 0x00050006, 0x00000009, 0x00000000, 0x6f6c6f43, + 0x00000072, 0x00040006, 0x00000009, 0x00000001, 0x00005655, 0x00030005, 0x0000000b, 0x0074754f, + 0x00040005, 0x0000000f, 0x6c6f4361, 0x0000726f, 0x00030005, 0x00000015, 0x00565561, 0x00060005, + 0x00000019, 0x505f6c67, 0x65567265, 0x78657472, 0x00000000, 0x00060006, 0x00000019, 0x00000000, + 0x505f6c67, 0x7469736f, 0x006e6f69, 0x00030005, 0x0000001b, 0x00000000, 0x00040005, 0x0000001c, + 0x736f5061, 0x00000000, 0x00060005, 0x0000001e, 0x73755075, 0x6e6f4368, 0x6e617473, 0x00000074, + 0x00050006, 0x0000001e, 0x00000000, 0x61635375, 0x0000656c, 0x00060006, 0x0000001e, 0x00000001, + 0x61725475, 0x616c736e, 0x00006574, 0x00030005, 0x00000020, 0x00006370, 0x00040047, 0x0000000b, + 0x0000001e, 0x00000000, 0x00040047, 0x0000000f, 0x0000001e, 0x00000002, 0x00040047, 0x00000015, + 0x0000001e, 0x00000001, 0x00050048, 0x00000019, 0x00000000, 0x0000000b, 0x00000000, 0x00030047, + 0x00000019, 0x00000002, 0x00040047, 0x0000001c, 0x0000001e, 0x00000000, 0x00050048, 0x0000001e, + 0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x0000001e, 0x00000001, 0x00000023, 0x00000008, + 0x00030047, 0x0000001e, 0x00000002, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, + 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, 0x00000006, 0x00000004, 0x00040017, + 0x00000008, 0x00000006, 0x00000002, 0x0004001e, 0x00000009, 0x00000007, 0x00000008, 0x00040020, + 0x0000000a, 0x00000003, 0x00000009, 0x0004003b, 0x0000000a, 0x0000000b, 0x00000003, 0x00040015, + 0x0000000c, 0x00000020, 0x00000001, 0x0004002b, 0x0000000c, 0x0000000d, 0x00000000, 0x00040020, + 0x0000000e, 0x00000001, 0x00000007, 0x0004003b, 0x0000000e, 0x0000000f, 0x00000001, 0x00040020, + 0x00000011, 0x00000003, 0x00000007, 0x0004002b, 0x0000000c, 0x00000013, 0x00000001, 0x00040020, + 0x00000014, 0x00000001, 0x00000008, 0x0004003b, 0x00000014, 0x00000015, 0x00000001, 0x00040020, + 0x00000017, 0x00000003, 0x00000008, 0x0003001e, 0x00000019, 0x00000007, 0x00040020, 0x0000001a, + 0x00000003, 0x00000019, 0x0004003b, 0x0000001a, 0x0000001b, 0x00000003, 0x0004003b, 0x00000014, + 0x0000001c, 0x00000001, 0x0004001e, 0x0000001e, 0x00000008, 0x00000008, 0x00040020, 0x0000001f, + 0x00000009, 0x0000001e, 0x0004003b, 0x0000001f, 0x00000020, 0x00000009, 0x00040020, 0x00000021, + 0x00000009, 0x00000008, 0x0004002b, 0x00000006, 0x00000028, 0x00000000, 0x0004002b, 0x00000006, + 0x00000029, 0x3f800000, 0x00050036, 0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200f8, + 0x00000005, 0x0004003d, 0x00000007, 0x00000010, 0x0000000f, 0x00050041, 0x00000011, 0x00000012, + 0x0000000b, 0x0000000d, 0x0003003e, 0x00000012, 0x00000010, 0x0004003d, 0x00000008, 0x00000016, + 0x00000015, 0x00050041, 0x00000017, 0x00000018, 0x0000000b, 0x00000013, 0x0003003e, 0x00000018, + 0x00000016, 0x0004003d, 0x00000008, 0x0000001d, 0x0000001c, 0x00050041, 0x00000021, 0x00000022, + 0x00000020, 0x0000000d, 0x0004003d, 0x00000008, 0x00000023, 0x00000022, 0x00050085, 0x00000008, + 0x00000024, 0x0000001d, 0x00000023, 0x00050041, 0x00000021, 0x00000025, 0x00000020, 0x00000013, + 0x0004003d, 0x00000008, 0x00000026, 0x00000025, 0x00050081, 0x00000008, 0x00000027, 0x00000024, + 0x00000026, 0x00050051, 0x00000006, 0x0000002a, 0x00000027, 0x00000000, 0x00050051, 0x00000006, + 0x0000002b, 0x00000027, 0x00000001, 0x00070050, 0x00000007, 0x0000002c, 0x0000002a, 0x0000002b, + 0x00000028, 0x00000029, 0x00050041, 0x00000011, 0x0000002d, 0x0000001b, 0x0000000d, 0x0003003e, + 0x0000002d, 0x0000002c, 0x000100fd, 0x00010038}; + +// backends/vulkan/glsl_shader.frag, compiled with: +// # glslangValidator -V -x -o glsl_shader.frag.u32 glsl_shader.frag +/* +#version 450 core +layout(location = 0) out vec4 fColor; +layout(set=0, binding=0) uniform sampler2D sTexture; +layout(location = 0) in struct { vec4 Color; vec2 UV; } In; +void main() +{ + fColor = In.Color * texture(sTexture, In.UV.st); +} +*/ +static uint32_t glsl_shader_frag_spv[] = { + 0x07230203, 0x00010000, 0x00080001, 0x0000001e, 0x00000000, 0x00020011, 0x00000001, 0x0006000b, + 0x00000001, 0x4c534c47, 0x6474732e, 0x3035342e, 0x00000000, 0x0003000e, 0x00000000, 0x00000001, + 0x0007000f, 0x00000004, 0x00000004, 0x6e69616d, 0x00000000, 0x00000009, 0x0000000d, 0x00030010, + 0x00000004, 0x00000007, 0x00030003, 0x00000002, 0x000001c2, 0x00040005, 0x00000004, 0x6e69616d, + 0x00000000, 0x00040005, 0x00000009, 0x6c6f4366, 0x0000726f, 0x00030005, 0x0000000b, 0x00000000, + 0x00050006, 0x0000000b, 0x00000000, 0x6f6c6f43, 0x00000072, 0x00040006, 0x0000000b, 0x00000001, + 0x00005655, 0x00030005, 0x0000000d, 0x00006e49, 0x00050005, 0x00000016, 0x78655473, 0x65727574, + 0x00000000, 0x00040047, 0x00000009, 0x0000001e, 0x00000000, 0x00040047, 0x0000000d, 0x0000001e, + 0x00000000, 0x00040047, 0x00000016, 0x00000022, 0x00000000, 0x00040047, 0x00000016, 0x00000021, + 0x00000000, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, + 0x00000020, 0x00040017, 0x00000007, 0x00000006, 0x00000004, 0x00040020, 0x00000008, 0x00000003, + 0x00000007, 0x0004003b, 0x00000008, 0x00000009, 0x00000003, 0x00040017, 0x0000000a, 0x00000006, + 0x00000002, 0x0004001e, 0x0000000b, 0x00000007, 0x0000000a, 0x00040020, 0x0000000c, 0x00000001, + 0x0000000b, 0x0004003b, 0x0000000c, 0x0000000d, 0x00000001, 0x00040015, 0x0000000e, 0x00000020, + 0x00000001, 0x0004002b, 0x0000000e, 0x0000000f, 0x00000000, 0x00040020, 0x00000010, 0x00000001, + 0x00000007, 0x00090019, 0x00000013, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000001, 0x00000000, 0x0003001b, 0x00000014, 0x00000013, 0x00040020, 0x00000015, 0x00000000, + 0x00000014, 0x0004003b, 0x00000015, 0x00000016, 0x00000000, 0x0004002b, 0x0000000e, 0x00000018, + 0x00000001, 0x00040020, 0x00000019, 0x00000001, 0x0000000a, 0x00050036, 0x00000002, 0x00000004, + 0x00000000, 0x00000003, 0x000200f8, 0x00000005, 0x00050041, 0x00000010, 0x00000011, 0x0000000d, + 0x0000000f, 0x0004003d, 0x00000007, 0x00000012, 0x00000011, 0x0004003d, 0x00000014, 0x00000017, + 0x00000016, 0x00050041, 0x00000019, 0x0000001a, 0x0000000d, 0x00000018, 0x0004003d, 0x0000000a, + 0x0000001b, 0x0000001a, 0x00050057, 0x00000007, 0x0000001c, 0x00000017, 0x0000001b, 0x00050085, + 0x00000007, 0x0000001d, 0x00000012, 0x0000001c, 0x0003003e, 0x00000009, 0x0000001d, 0x000100fd, + 0x00010038}; + +// Backend data stored in io.BackendRendererUserData to allow support for multiple Dear ImGui +// contexts It is STRONGLY preferred that you use docking branch with multi-viewports (== single +// Dear ImGui context + multiple windows) instead of multiple Dear ImGui contexts. +static VkData* GetBackendData() { + return ImGui::GetCurrentContext() ? (VkData*)ImGui::GetIO().BackendRendererUserData : nullptr; +} + +static uint32_t FindMemoryType(vk::MemoryPropertyFlags properties, uint32_t type_bits) { + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + const auto prop = v.physical_device.getMemoryProperties(); + for (uint32_t i = 0; i < prop.memoryTypeCount; i++) + if ((prop.memoryTypes[i].propertyFlags & properties) == properties && type_bits & (1 << i)) + return i; + return 0xFFFFFFFF; // Unable to find memoryType +} + +template +static T CheckVkResult(vk::ResultValue res) { + if (res.result == vk::Result::eSuccess) { + return res.value; + } + const VkData* bd = GetBackendData(); + if (!bd) { + return res.value; + } + const InitInfo& v = bd->init_info; + if (v.check_vk_result_fn) { + v.check_vk_result_fn(res.result); + } + return res.value; +} + +static void CheckVkErr(vk::Result res) { + if (res == vk::Result::eSuccess) { + return; + } + const VkData* bd = GetBackendData(); + if (!bd) { + return; + } + const InitInfo& v = bd->init_info; + if (v.check_vk_result_fn) { + v.check_vk_result_fn(res); + } +} + +// Same as IM_MEMALIGN(). 'alignment' must be a power of two. +static inline vk::DeviceSize AlignBufferSize(vk::DeviceSize size, vk::DeviceSize alignment) { + return (size + alignment - 1) & ~(alignment - 1); +} + +void UploadTextureData::Upload() { + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + + vk::SubmitInfo submit_info{ + .commandBufferCount = 1, + .pCommandBuffers = &command_buffer, + }; + CheckVkErr(v.queue.submit({submit_info})); + CheckVkErr(v.queue.waitIdle()); + + v.device.destroyBuffer(upload_buffer, v.allocator); + v.device.freeMemory(upload_buffer_memory, v.allocator); + { + std::unique_lock lk(bd->command_pool_mutex); + v.device.freeCommandBuffers(bd->command_pool, {command_buffer}); + } + upload_buffer = VK_NULL_HANDLE; + upload_buffer_memory = VK_NULL_HANDLE; +} + +void UploadTextureData::Destroy() { + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + + CheckVkErr(v.device.waitIdle()); + RemoveTexture(descriptor_set); + descriptor_set = VK_NULL_HANDLE; + + v.device.destroyImageView(image_view, v.allocator); + image_view = VK_NULL_HANDLE; + v.device.destroyImage(image, v.allocator); + image = VK_NULL_HANDLE; + v.device.freeMemory(image_memory, v.allocator); + image_memory = VK_NULL_HANDLE; +} + +// Register a texture +vk::DescriptorSet AddTexture(vk::ImageView image_view, vk::ImageLayout image_layout, + vk::Sampler sampler) { + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + + if (sampler == VK_NULL_HANDLE) { + sampler = bd->simple_sampler; + } + + // Create Descriptor Set: + vk::DescriptorSet descriptor_set; + { + vk::DescriptorSetAllocateInfo alloc_info{ + .sType = vk::StructureType::eDescriptorSetAllocateInfo, + .descriptorPool = bd->descriptor_pool, + .descriptorSetCount = 1, + .pSetLayouts = &bd->descriptor_set_layout, + }; + descriptor_set = CheckVkResult(v.device.allocateDescriptorSets(alloc_info)).front(); + } + + // Update the Descriptor Set: + { + vk::DescriptorImageInfo desc_image[1]{ + { + .sampler = sampler, + .imageView = image_view, + .imageLayout = image_layout, + }, + }; + vk::WriteDescriptorSet write_desc[1]{ + { + .sType = vk::StructureType::eWriteDescriptorSet, + .dstSet = descriptor_set, + .descriptorCount = 1, + .descriptorType = vk::DescriptorType::eCombinedImageSampler, + .pImageInfo = desc_image, + }, + }; + v.device.updateDescriptorSets({write_desc}, {}); + } + return descriptor_set; +} +UploadTextureData UploadTexture(const void* data, vk::Format format, u32 width, u32 height, + size_t size) { + ImGuiIO& io = GetIO(); + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + + UploadTextureData info{}; + { + std::unique_lock lk(bd->command_pool_mutex); + info.command_buffer = + CheckVkResult(v.device.allocateCommandBuffers(vk::CommandBufferAllocateInfo{ + .commandPool = bd->command_pool, + .commandBufferCount = 1, + })) + .front(); + CheckVkErr(info.command_buffer.begin(vk::CommandBufferBeginInfo{ + .flags = vk::CommandBufferUsageFlagBits::eOneTimeSubmit, + })); + } + + // Create Image + { + vk::ImageCreateInfo image_info{ + .imageType = vk::ImageType::e2D, + .format = format, + .extent{ + .width = width, + .height = height, + .depth = 1, + }, + .mipLevels = 1, + .arrayLayers = 1, + .samples = vk::SampleCountFlagBits::e1, + .tiling = vk::ImageTiling::eOptimal, + .usage = vk::ImageUsageFlagBits::eTransferDst | vk::ImageUsageFlagBits::eSampled, + .sharingMode = vk::SharingMode::eExclusive, + .initialLayout = vk::ImageLayout::eUndefined, + }; + info.image = CheckVkResult(v.device.createImage(image_info, v.allocator)); + auto req = v.device.getImageMemoryRequirements(info.image); + vk::MemoryAllocateInfo alloc_info{ + .allocationSize = IM_MAX(v.min_allocation_size, req.size), + .memoryTypeIndex = + FindMemoryType(vk::MemoryPropertyFlagBits::eDeviceLocal, req.memoryTypeBits), + }; + info.image_memory = CheckVkResult(v.device.allocateMemory(alloc_info, v.allocator)); + CheckVkErr(v.device.bindImageMemory(info.image, info.image_memory, 0)); + } + + // Create Image View + { + vk::ImageViewCreateInfo view_info{ + .image = info.image, + .viewType = vk::ImageViewType::e2D, + .format = format, + .subresourceRange{ + .aspectMask = vk::ImageAspectFlagBits::eColor, + .levelCount = 1, + .layerCount = 1, + }, + }; + info.image_view = CheckVkResult(v.device.createImageView(view_info, v.allocator)); + } + + // Create descriptor set (ImTextureID) + info.descriptor_set = AddTexture(info.image_view, vk::ImageLayout::eShaderReadOnlyOptimal); + + // Create Upload Buffer + { + vk::BufferCreateInfo buffer_info{ + .size = size, + .usage = vk::BufferUsageFlagBits::eTransferSrc, + .sharingMode = vk::SharingMode::eExclusive, + }; + info.upload_buffer = CheckVkResult(v.device.createBuffer(buffer_info, v.allocator)); + auto req = v.device.getBufferMemoryRequirements(info.upload_buffer); + auto alignemtn = IM_MAX(bd->buffer_memory_alignment, req.alignment); + vk::MemoryAllocateInfo alloc_info{ + .allocationSize = IM_MAX(v.min_allocation_size, req.size), + .memoryTypeIndex = + FindMemoryType(vk::MemoryPropertyFlagBits::eHostVisible, req.memoryTypeBits), + }; + info.upload_buffer_memory = CheckVkResult(v.device.allocateMemory(alloc_info, v.allocator)); + CheckVkErr(v.device.bindBufferMemory(info.upload_buffer, info.upload_buffer_memory, 0)); + } + + // Upload to Buffer + { + char* map = (char*)CheckVkResult(v.device.mapMemory(info.upload_buffer_memory, 0, size)); + memcpy(map, data, size); + vk::MappedMemoryRange range[1]{ + { + .memory = info.upload_buffer_memory, + .size = size, + }, + }; + CheckVkErr(v.device.flushMappedMemoryRanges(range)); + v.device.unmapMemory(info.upload_buffer_memory); + } + + // Copy to Image + { + vk::ImageMemoryBarrier copy_barrier[1]{ + { + .sType = vk::StructureType::eImageMemoryBarrier, + .dstAccessMask = vk::AccessFlagBits::eTransferWrite, + .oldLayout = vk::ImageLayout::eUndefined, + .newLayout = vk::ImageLayout::eTransferDstOptimal, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = info.image, + .subresourceRange{ + .aspectMask = vk::ImageAspectFlagBits::eColor, + .levelCount = 1, + .layerCount = 1, + }, + }, + }; + info.command_buffer.pipelineBarrier(vk::PipelineStageFlagBits::eHost, + vk::PipelineStageFlagBits::eTransfer, {}, {}, {}, + {copy_barrier}); + + vk::BufferImageCopy region{ + .imageSubresource{ + .aspectMask = vk::ImageAspectFlagBits::eColor, + .layerCount = 1, + }, + .imageExtent{ + .width = width, + .height = height, + .depth = 1, + }, + }; + info.command_buffer.copyBufferToImage(info.upload_buffer, info.image, + vk::ImageLayout::eTransferDstOptimal, {region}); + + vk::ImageMemoryBarrier use_barrier[1]{{ + .sType = vk::StructureType::eImageMemoryBarrier, + .srcAccessMask = vk::AccessFlagBits::eTransferWrite, + .dstAccessMask = vk::AccessFlagBits::eShaderRead, + .oldLayout = vk::ImageLayout::eTransferDstOptimal, + .newLayout = vk::ImageLayout::eShaderReadOnlyOptimal, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = info.image, + .subresourceRange{ + .aspectMask = vk::ImageAspectFlagBits::eColor, + .levelCount = 1, + .layerCount = 1, + }, + }}; + info.command_buffer.pipelineBarrier(vk::PipelineStageFlagBits::eTransfer, + vk::PipelineStageFlagBits::eFragmentShader, {}, {}, {}, + {use_barrier}); + } + + CheckVkErr(info.command_buffer.end()); + + return info; +} + +void RemoveTexture(vk::DescriptorSet descriptor_set) { + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + v.device.freeDescriptorSets(bd->descriptor_pool, {descriptor_set}); +} + +static void CreateOrResizeBuffer(RenderBuffer& rb, size_t new_size, vk::BufferUsageFlagBits usage) { + VkData* bd = GetBackendData(); + IM_ASSERT(bd != nullptr); + const InitInfo& v = bd->init_info; + if (rb.buffer != VK_NULL_HANDLE) { + v.device.destroyBuffer(rb.buffer, v.allocator); + } + if (rb.buffer_memory != VK_NULL_HANDLE) { + v.device.freeMemory(rb.buffer_memory, v.allocator); + } + + const vk::DeviceSize buffer_size_aligned = + AlignBufferSize(IM_MAX(v.min_allocation_size, new_size), bd->buffer_memory_alignment); + vk::BufferCreateInfo buffer_info{ + .sType = vk::StructureType::eBufferCreateInfo, + .size = buffer_size_aligned, + .usage = usage, + .sharingMode = vk::SharingMode::eExclusive, + }; + rb.buffer = CheckVkResult(v.device.createBuffer(buffer_info, v.allocator)); + + const vk::MemoryRequirements req = v.device.getBufferMemoryRequirements(rb.buffer); + bd->buffer_memory_alignment = IM_MAX(bd->buffer_memory_alignment, req.alignment); + vk::MemoryAllocateInfo alloc_info{ + .sType = vk::StructureType::eMemoryAllocateInfo, + .allocationSize = req.size, + .memoryTypeIndex = + FindMemoryType(vk::MemoryPropertyFlagBits::eHostVisible, req.memoryTypeBits), + }; + rb.buffer_memory = CheckVkResult(v.device.allocateMemory(alloc_info, v.allocator)); + + CheckVkErr(v.device.bindBufferMemory(rb.buffer, rb.buffer_memory, 0)); + rb.buffer_size = buffer_size_aligned; +} + +static void SetupRenderState(ImDrawData& draw_data, vk::Pipeline pipeline, vk::CommandBuffer cmdbuf, + FrameRenderBuffers& frb, int fb_width, int fb_height) { + VkData* bd = GetBackendData(); + + // Bind pipeline: + cmdbuf.bindPipeline(vk::PipelineBindPoint::eGraphics, pipeline); + + // Bind Vertex And Index Buffer: + if (draw_data.TotalVtxCount > 0) { + vk::Buffer vertex_buffers[1] = {frb.vertex.buffer}; + vk::DeviceSize vertex_offset[1] = {0}; + cmdbuf.bindVertexBuffers(0, {vertex_buffers}, vertex_offset); + cmdbuf.bindIndexBuffer(frb.index.buffer, 0, + IDX_SIZE == 2 ? vk::IndexType::eUint16 : vk::IndexType::eUint32); + } + + // Setup viewport: + { + vk::Viewport viewport{ + .x = 0, + .y = 0, + .width = (float)fb_width, + .height = (float)fb_height, + .minDepth = 0.0f, + .maxDepth = 1.0f, + }; + cmdbuf.setViewport(0, {viewport}); + } + + // Setup scale and translation: + // Our visible imgui space lies from draw_data->DisplayPps (top left) to + // draw_data->DisplayPos+data_data->DisplaySize (bottom right). DisplayPos is (0,0) for single + // viewport apps. + { + float scale[2]; + scale[0] = 2.0f / draw_data.DisplaySize.x; + scale[1] = 2.0f / draw_data.DisplaySize.y; + float translate[2]; + translate[0] = -1.0f - draw_data.DisplayPos.x * scale[0]; + translate[1] = -1.0f - draw_data.DisplayPos.y * scale[1]; + cmdbuf.pushConstants(bd->pipeline_layout, vk::ShaderStageFlagBits::eVertex, + sizeof(float) * 0, sizeof(float) * 2, scale); + cmdbuf.pushConstants(bd->pipeline_layout, vk::ShaderStageFlagBits::eVertex, + sizeof(float) * 2, sizeof(float) * 2, translate); + } +} + +// Render function +void RenderDrawData(ImDrawData& draw_data, vk::CommandBuffer command_buffer, + vk::Pipeline pipeline) { + // Avoid rendering when minimized, scale coordinates for retina displays (screen coordinates != + // framebuffer coordinates) + int fb_width = (int)(draw_data.DisplaySize.x * draw_data.FramebufferScale.x); + int fb_height = (int)(draw_data.DisplaySize.y * draw_data.FramebufferScale.y); + if (fb_width <= 0 || fb_height <= 0) { + return; + } + + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + if (pipeline == VK_NULL_HANDLE) { + pipeline = bd->pipeline; + } + + // Allocate array to store enough vertex/index buffers + WindowRenderBuffers& wrb = bd->render_buffers; + wrb.index = (wrb.index + 1) % wrb.count; + FrameRenderBuffers& frb = wrb.frame_render_buffers[wrb.index]; + + if (draw_data.TotalVtxCount > 0) { + // Create or resize the vertex/index buffers + size_t vertex_size = AlignBufferSize(draw_data.TotalVtxCount * sizeof(ImDrawVert), + bd->buffer_memory_alignment); + size_t index_size = + AlignBufferSize(draw_data.TotalIdxCount * IDX_SIZE, bd->buffer_memory_alignment); + if (frb.vertex.buffer == VK_NULL_HANDLE || frb.vertex.buffer_size < vertex_size) { + CreateOrResizeBuffer(frb.vertex, vertex_size, vk::BufferUsageFlagBits::eVertexBuffer); + } + if (frb.index.buffer == VK_NULL_HANDLE || frb.index.buffer_size < index_size) { + CreateOrResizeBuffer(frb.index, index_size, vk::BufferUsageFlagBits::eIndexBuffer); + } + + // Upload vertex/index data into a single contiguous GPU buffer + ImDrawVert* vtx_dst = nullptr; + ImDrawIdx* idx_dst = nullptr; + vtx_dst = (ImDrawVert*)CheckVkResult( + v.device.mapMemory(frb.vertex.buffer_memory, 0, vertex_size, vk::MemoryMapFlags{})); + idx_dst = (ImDrawIdx*)CheckVkResult( + v.device.mapMemory(frb.index.buffer_memory, 0, index_size, vk::MemoryMapFlags{})); + for (int n = 0; n < draw_data.CmdListsCount; n++) { + const ImDrawList* cmd_list = draw_data.CmdLists[n]; + memcpy(vtx_dst, cmd_list->VtxBuffer.Data, + cmd_list->VtxBuffer.Size * sizeof(ImDrawVert)); + memcpy(idx_dst, cmd_list->IdxBuffer.Data, cmd_list->IdxBuffer.Size * IDX_SIZE); + vtx_dst += cmd_list->VtxBuffer.Size; + idx_dst += cmd_list->IdxBuffer.Size; + } + vk::MappedMemoryRange range[2]{ + { + .sType = vk::StructureType::eMappedMemoryRange, + .memory = frb.vertex.buffer_memory, + .size = VK_WHOLE_SIZE, + }, + { + .sType = vk::StructureType::eMappedMemoryRange, + .memory = frb.index.buffer_memory, + .size = VK_WHOLE_SIZE, + }, + }; + CheckVkErr(v.device.flushMappedMemoryRanges({range})); + v.device.unmapMemory(frb.vertex.buffer_memory); + v.device.unmapMemory(frb.index.buffer_memory); + } + + // Setup desired Vulkan state + SetupRenderState(draw_data, pipeline, command_buffer, frb, fb_width, fb_height); + + // Will project scissor/clipping rectangles into framebuffer space + + // (0,0) unless using multi-viewports + ImVec2 clip_off = draw_data.DisplayPos; + // (1,1) unless using retina display which are often (2,2) + ImVec2 clip_scale = draw_data.FramebufferScale; + + // Render command lists + // (Because we merged all buffers into a single one, we maintain our own offset into them) + int global_vtx_offset = 0; + int global_idx_offset = 0; + for (int n = 0; n < draw_data.CmdListsCount; n++) { + const ImDrawList* cmd_list = draw_data.CmdLists[n]; + for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++) { + const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i]; + if (pcmd->UserCallback != nullptr) { + // User callback, registered via ImDrawList::AddCallback() + // (ImDrawCallback_ResetRenderState is a special callback value used by the user to + // request the renderer to reset render state.) + if (pcmd->UserCallback == ImDrawCallback_ResetRenderState) { + SetupRenderState(draw_data, pipeline, command_buffer, frb, fb_width, fb_height); + } else { + pcmd->UserCallback(cmd_list, pcmd); + } + } else { + // Project scissor/clipping rectangles into framebuffer space + ImVec2 clip_min((pcmd->ClipRect.x - clip_off.x) * clip_scale.x, + (pcmd->ClipRect.y - clip_off.y) * clip_scale.y); + ImVec2 clip_max((pcmd->ClipRect.z - clip_off.x) * clip_scale.x, + (pcmd->ClipRect.w - clip_off.y) * clip_scale.y); + + // Clamp to viewport as vk::CmdSetScissor() won't accept values that are off bounds + if (clip_min.x < 0.0f) { + clip_min.x = 0.0f; + } + if (clip_min.y < 0.0f) { + clip_min.y = 0.0f; + } + if (clip_max.x > fb_width) { + clip_max.x = (float)fb_width; + } + if (clip_max.y > fb_height) { + clip_max.y = (float)fb_height; + } + if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y) + continue; + + // Apply scissor/clipping rectangle + vk::Rect2D scissor{ + .offset{ + .x = (int32_t)(clip_min.x), + .y = (int32_t)(clip_min.y), + }, + .extent{ + .width = (uint32_t)(clip_max.x - clip_min.x), + .height = (uint32_t)(clip_max.y - clip_min.y), + }, + }; + command_buffer.setScissor(0, 1, &scissor); + + // Bind DescriptorSet with font or user texture + vk::DescriptorSet desc_set[1]{(VkDescriptorSet)pcmd->TextureId}; + if (sizeof(ImTextureID) < sizeof(ImU64)) { + // We don't support texture switches if ImTextureID hasn't been redefined to be + // 64-bit. Do a flaky check that other textures haven't been used. + IM_ASSERT(pcmd->TextureId == (ImTextureID)bd->font_descriptor_set); + desc_set[0] = bd->font_descriptor_set; + } + command_buffer.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, + bd->pipeline_layout, 0, {desc_set}, {}); + + // Draw + command_buffer.drawIndexed(pcmd->ElemCount, 1, pcmd->IdxOffset + global_idx_offset, + pcmd->VtxOffset + global_vtx_offset, 0); + } + } + global_idx_offset += cmd_list->IdxBuffer.Size; + global_vtx_offset += cmd_list->VtxBuffer.Size; + } + // vk::Rect2D scissor = {{0, 0}, {(uint32_t)fb_width, (uint32_t)fb_height}}; + // command_buffer.setScissor(0, 1, &scissor); +} + +static void DestroyFontsTexture(); + +static bool CreateFontsTexture() { + ImGuiIO& io = ImGui::GetIO(); + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + + // Destroy existing texture (if any) + if (bd->font_view || bd->font_image || bd->font_memory || bd->font_descriptor_set) { + CheckVkErr(v.queue.waitIdle()); + DestroyFontsTexture(); + } + + // Create command buffer + if (bd->font_command_buffer == VK_NULL_HANDLE) { + vk::CommandBufferAllocateInfo info{ + .sType = vk::StructureType::eCommandBufferAllocateInfo, + .commandPool = bd->command_pool, + .commandBufferCount = 1, + }; + std::unique_lock lk(bd->command_pool_mutex); + bd->font_command_buffer = CheckVkResult(v.device.allocateCommandBuffers(info)).front(); + } + + // Start command buffer + { + CheckVkErr(bd->font_command_buffer.reset()); + vk::CommandBufferBeginInfo begin_info{}; + begin_info.sType = vk::StructureType::eCommandBufferBeginInfo; + begin_info.flags |= vk::CommandBufferUsageFlagBits::eOneTimeSubmit; + CheckVkErr(bd->font_command_buffer.begin(&begin_info)); + } + + unsigned char* pixels; + int width, height; + io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height); + size_t upload_size = width * height * 4 * sizeof(char); + + // Create the Image: + { + vk::ImageCreateInfo info{ + .sType = vk::StructureType::eImageCreateInfo, + .imageType = vk::ImageType::e2D, + .format = vk::Format::eR8G8B8A8Unorm, + .extent{ + .width = static_cast(width), + .height = static_cast(height), + .depth = 1, + }, + .mipLevels = 1, + .arrayLayers = 1, + .samples = vk::SampleCountFlagBits::e1, + .tiling = vk::ImageTiling::eOptimal, + .usage = vk::ImageUsageFlagBits::eSampled | vk::ImageUsageFlagBits::eTransferDst, + .sharingMode = vk::SharingMode::eExclusive, + .initialLayout = vk::ImageLayout::eUndefined, + }; + bd->font_image = CheckVkResult(v.device.createImage(info, v.allocator)); + vk::MemoryRequirements req = v.device.getImageMemoryRequirements(bd->font_image); + vk::MemoryAllocateInfo alloc_info{ + .sType = vk::StructureType::eMemoryAllocateInfo, + .allocationSize = IM_MAX(v.min_allocation_size, req.size), + .memoryTypeIndex = + FindMemoryType(vk::MemoryPropertyFlagBits::eDeviceLocal, req.memoryTypeBits), + }; + bd->font_memory = CheckVkResult(v.device.allocateMemory(alloc_info, v.allocator)); + CheckVkErr(v.device.bindImageMemory(bd->font_image, bd->font_memory, 0)); + } + + // Create the Image View: + { + vk::ImageViewCreateInfo info{ + .sType = vk::StructureType::eImageViewCreateInfo, + .image = bd->font_image, + .viewType = vk::ImageViewType::e2D, + .format = vk::Format::eR8G8B8A8Unorm, + .subresourceRange{ + .aspectMask = vk::ImageAspectFlagBits::eColor, + .levelCount = 1, + .layerCount = 1, + }, + }; + bd->font_view = CheckVkResult(v.device.createImageView(info, v.allocator)); + } + + // Create the Descriptor Set: + bd->font_descriptor_set = AddTexture(bd->font_view, vk::ImageLayout::eShaderReadOnlyOptimal); + + // Create the Upload Buffer: + vk::DeviceMemory upload_buffer_memory{}; + vk::Buffer upload_buffer{}; + { + vk::BufferCreateInfo buffer_info{ + .sType = vk::StructureType::eBufferCreateInfo, + .size = upload_size, + .usage = vk::BufferUsageFlagBits::eTransferSrc, + .sharingMode = vk::SharingMode::eExclusive, + }; + upload_buffer = CheckVkResult(v.device.createBuffer(buffer_info, v.allocator)); + vk::MemoryRequirements req = v.device.getBufferMemoryRequirements(upload_buffer); + bd->buffer_memory_alignment = IM_MAX(bd->buffer_memory_alignment, req.alignment); + vk::MemoryAllocateInfo alloc_info{ + .sType = vk::StructureType::eMemoryAllocateInfo, + .allocationSize = IM_MAX(v.min_allocation_size, req.size), + .memoryTypeIndex = + FindMemoryType(vk::MemoryPropertyFlagBits::eHostVisible, req.memoryTypeBits), + }; + upload_buffer_memory = CheckVkResult(v.device.allocateMemory(alloc_info, v.allocator)); + CheckVkErr(v.device.bindBufferMemory(upload_buffer, upload_buffer_memory, 0)); + } + + // Upload to Buffer: + { + char* map = (char*)CheckVkResult(v.device.mapMemory(upload_buffer_memory, 0, upload_size)); + memcpy(map, pixels, upload_size); + vk::MappedMemoryRange range[1]{ + { + .sType = vk::StructureType::eMappedMemoryRange, + .memory = upload_buffer_memory, + .size = upload_size, + }, + }; + CheckVkErr(v.device.flushMappedMemoryRanges({range})); + v.device.unmapMemory(upload_buffer_memory); + } + + // Copy to Image: + { + vk::ImageMemoryBarrier copy_barrier[1]{ + { + .sType = vk::StructureType::eImageMemoryBarrier, + .dstAccessMask = vk::AccessFlagBits::eTransferWrite, + .oldLayout = vk::ImageLayout::eUndefined, + .newLayout = vk::ImageLayout::eTransferDstOptimal, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = bd->font_image, + .subresourceRange{ + .aspectMask = vk::ImageAspectFlagBits::eColor, + .levelCount = 1, + .layerCount = 1, + }, + }, + }; + bd->font_command_buffer.pipelineBarrier(vk::PipelineStageFlagBits::eHost, + vk::PipelineStageFlagBits::eTransfer, {}, {}, {}, + {copy_barrier}); + + vk::BufferImageCopy region{ + .imageSubresource{ + .aspectMask = vk::ImageAspectFlagBits::eColor, + .layerCount = 1, + }, + .imageExtent{ + .width = static_cast(width), + .height = static_cast(height), + .depth = 1, + }, + }; + bd->font_command_buffer.copyBufferToImage(upload_buffer, bd->font_image, + vk::ImageLayout::eTransferDstOptimal, {region}); + + vk::ImageMemoryBarrier use_barrier[1]{{ + .sType = vk::StructureType::eImageMemoryBarrier, + .srcAccessMask = vk::AccessFlagBits::eTransferWrite, + .dstAccessMask = vk::AccessFlagBits::eShaderRead, + .oldLayout = vk::ImageLayout::eTransferDstOptimal, + .newLayout = vk::ImageLayout::eShaderReadOnlyOptimal, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = bd->font_image, + .subresourceRange{ + .aspectMask = vk::ImageAspectFlagBits::eColor, + .levelCount = 1, + .layerCount = 1, + }, + }}; + bd->font_command_buffer.pipelineBarrier(vk::PipelineStageFlagBits::eTransfer, + vk::PipelineStageFlagBits::eFragmentShader, {}, {}, + {}, {use_barrier}); + } + + // Store our identifier + io.Fonts->SetTexID((ImTextureID)bd->font_descriptor_set); + + // End command buffer + vk::SubmitInfo end_info = {}; + end_info.sType = vk::StructureType::eSubmitInfo; + end_info.commandBufferCount = 1; + end_info.pCommandBuffers = &bd->font_command_buffer; + CheckVkErr(bd->font_command_buffer.end()); + CheckVkErr(v.queue.submit({end_info})); + + CheckVkErr(v.queue.waitIdle()); + + v.device.destroyBuffer(upload_buffer, v.allocator); + v.device.freeMemory(upload_buffer_memory, v.allocator); + + return true; +} + +// You probably never need to call this, as it is called by CreateFontsTexture() +// and Shutdown(). +static void DestroyFontsTexture() { + ImGuiIO& io = ImGui::GetIO(); + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + + if (bd->font_descriptor_set) { + RemoveTexture(bd->font_descriptor_set); + bd->font_descriptor_set = VK_NULL_HANDLE; + io.Fonts->SetTexID(nullptr); + } + + if (bd->font_view) { + v.device.destroyImageView(bd->font_view, v.allocator); + bd->font_view = VK_NULL_HANDLE; + } + if (bd->font_image) { + v.device.destroyImage(bd->font_image, v.allocator); + bd->font_image = VK_NULL_HANDLE; + } + if (bd->font_memory) { + v.device.freeMemory(bd->font_memory, v.allocator); + bd->font_memory = VK_NULL_HANDLE; + } +} + +static void DestroyFrameRenderBuffers(vk::Device device, RenderBuffer& rb, + const vk::AllocationCallbacks* allocator) { + if (rb.buffer) { + device.destroyBuffer(rb.buffer, allocator); + rb.buffer = VK_NULL_HANDLE; + } + if (rb.buffer_memory) { + device.freeMemory(rb.buffer_memory, allocator); + rb.buffer_memory = VK_NULL_HANDLE; + } + rb.buffer_size = 0; +} + +static void DestroyWindowRenderBuffers(vk::Device device, WindowRenderBuffers& buffers, + const vk::AllocationCallbacks* allocator) { + for (uint32_t n = 0; n < buffers.count; n++) { + auto& frb = buffers.frame_render_buffers[n]; + DestroyFrameRenderBuffers(device, frb.index, allocator); + DestroyFrameRenderBuffers(device, frb.vertex, allocator); + } + buffers = {}; +} + +static void CreateShaderModules(vk::Device device, const vk::AllocationCallbacks* allocator) { + // Create the shader modules + VkData* bd = GetBackendData(); + if (bd->shader_module_vert == VK_NULL_HANDLE) { + vk::ShaderModuleCreateInfo vert_info{ + .sType = vk::StructureType::eShaderModuleCreateInfo, + .codeSize = sizeof(glsl_shader_vert_spv), + .pCode = (uint32_t*)glsl_shader_vert_spv, + }; + bd->shader_module_vert = CheckVkResult(device.createShaderModule(vert_info, allocator)); + } + if (bd->shader_module_frag == VK_NULL_HANDLE) { + vk::ShaderModuleCreateInfo frag_info{ + .sType = vk::StructureType::eShaderModuleCreateInfo, + .codeSize = sizeof(glsl_shader_frag_spv), + .pCode = (uint32_t*)glsl_shader_frag_spv, + }; + bd->shader_module_frag = CheckVkResult(device.createShaderModule(frag_info, allocator)); + } +} + +static void CreatePipeline(vk::Device device, const vk::AllocationCallbacks* allocator, + vk::PipelineCache pipeline_cache, vk::RenderPass render_pass, + vk::Pipeline* pipeline, uint32_t subpass) { + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + + CreateShaderModules(device, allocator); + + vk::PipelineShaderStageCreateInfo stage[2]{ + { + .sType = vk::StructureType::ePipelineShaderStageCreateInfo, + .stage = vk::ShaderStageFlagBits::eVertex, + .module = bd->shader_module_vert, + .pName = "main", + }, + { + .sType = vk::StructureType::ePipelineShaderStageCreateInfo, + .stage = vk::ShaderStageFlagBits::eFragment, + .module = bd->shader_module_frag, + .pName = "main", + }, + }; + + vk::VertexInputBindingDescription binding_desc[1]{ + { + .stride = sizeof(ImDrawVert), + .inputRate = vk::VertexInputRate::eVertex, + }, + }; + + vk::VertexInputAttributeDescription attribute_desc[3]{ + { + .location = 0, + .binding = binding_desc[0].binding, + .format = vk::Format::eR32G32Sfloat, + .offset = offsetof(ImDrawVert, pos), + }, + { + .location = 1, + .binding = binding_desc[0].binding, + .format = vk::Format::eR32G32Sfloat, + .offset = offsetof(ImDrawVert, uv), + }, + { + .location = 2, + .binding = binding_desc[0].binding, + .format = vk::Format::eR8G8B8A8Unorm, + .offset = offsetof(ImDrawVert, col), + }, + }; + + vk::PipelineVertexInputStateCreateInfo vertex_info{ + .sType = vk::StructureType::ePipelineVertexInputStateCreateInfo, + .vertexBindingDescriptionCount = 1, + .pVertexBindingDescriptions = binding_desc, + .vertexAttributeDescriptionCount = 3, + .pVertexAttributeDescriptions = attribute_desc, + }; + + vk::PipelineInputAssemblyStateCreateInfo ia_info{ + .sType = vk::StructureType::ePipelineInputAssemblyStateCreateInfo, + .topology = vk::PrimitiveTopology::eTriangleList, + }; + + vk::PipelineViewportStateCreateInfo viewport_info{ + .sType = vk::StructureType::ePipelineViewportStateCreateInfo, + .viewportCount = 1, + .scissorCount = 1, + }; + + vk::PipelineRasterizationStateCreateInfo raster_info{ + .sType = vk::StructureType::ePipelineRasterizationStateCreateInfo, + .polygonMode = vk::PolygonMode::eFill, + .cullMode = vk::CullModeFlagBits::eNone, + .frontFace = vk::FrontFace::eCounterClockwise, + .lineWidth = 1.0f, + }; + + vk::PipelineMultisampleStateCreateInfo ms_info{ + .sType = vk::StructureType::ePipelineMultisampleStateCreateInfo, + .rasterizationSamples = vk::SampleCountFlagBits::e1, + }; + + vk::PipelineColorBlendAttachmentState color_attachment[1]{ + { + .blendEnable = VK_TRUE, + .srcColorBlendFactor = vk::BlendFactor::eSrcAlpha, + .dstColorBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, + .colorBlendOp = vk::BlendOp::eAdd, + .srcAlphaBlendFactor = vk::BlendFactor::eOne, + .dstAlphaBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, + .alphaBlendOp = vk::BlendOp::eAdd, + .colorWriteMask = vk::ColorComponentFlagBits::eR | vk::ColorComponentFlagBits::eG | + vk::ColorComponentFlagBits::eB | vk::ColorComponentFlagBits::eA, + }, + }; + + vk::PipelineDepthStencilStateCreateInfo depth_info{ + .sType = vk::StructureType::ePipelineDepthStencilStateCreateInfo, + }; + + vk::PipelineColorBlendStateCreateInfo blend_info{ + .sType = vk::StructureType::ePipelineColorBlendStateCreateInfo, + .attachmentCount = 1, + .pAttachments = color_attachment, + }; + + vk::DynamicState dynamic_states[2]{ + vk::DynamicState::eViewport, + vk::DynamicState::eScissor, + }; + vk::PipelineDynamicStateCreateInfo dynamic_state{ + .sType = vk::StructureType::ePipelineDynamicStateCreateInfo, + .dynamicStateCount = (uint32_t)IM_ARRAYSIZE(dynamic_states), + .pDynamicStates = dynamic_states, + }; + + vk::GraphicsPipelineCreateInfo info{ + .sType = vk::StructureType::eGraphicsPipelineCreateInfo, + .pNext = &v.pipeline_rendering_create_info, + .flags = bd->pipeline_create_flags, + .stageCount = 2, + .pStages = stage, + .pVertexInputState = &vertex_info, + .pInputAssemblyState = &ia_info, + .pViewportState = &viewport_info, + .pRasterizationState = &raster_info, + .pMultisampleState = &ms_info, + .pDepthStencilState = &depth_info, + .pColorBlendState = &blend_info, + .pDynamicState = &dynamic_state, + .layout = bd->pipeline_layout, + .renderPass = render_pass, + .subpass = subpass, + }; + + *pipeline = + CheckVkResult(device.createGraphicsPipelines(pipeline_cache, {info}, allocator)).front(); +} + +bool CreateDeviceObjects() { + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + vk::Result err; + + if (!bd->descriptor_pool) { + // large enough descriptor pool + vk::DescriptorPoolSize pool_sizes[]{ + {vk::DescriptorType::eSampler, 1000}, + {vk::DescriptorType::eCombinedImageSampler, 1000}, + {vk::DescriptorType::eSampledImage, 1000}, + {vk::DescriptorType::eStorageImage, 1000}, + {vk::DescriptorType::eUniformTexelBuffer, 1000}, + {vk::DescriptorType::eStorageTexelBuffer, 1000}, + {vk::DescriptorType::eUniformBuffer, 1000}, + {vk::DescriptorType::eStorageBuffer, 1000}, + {vk::DescriptorType::eUniformBufferDynamic, 1000}, + {vk::DescriptorType::eStorageBufferDynamic, 1000}, + {vk::DescriptorType::eInputAttachment, 1000}, + }; + + vk::DescriptorPoolCreateInfo pool_info{ + .sType = vk::StructureType::eDescriptorPoolCreateInfo, + .flags = vk::DescriptorPoolCreateFlagBits::eFreeDescriptorSet, + .maxSets = 1000, + .poolSizeCount = std::size(pool_sizes), + .pPoolSizes = pool_sizes, + }; + + bd->descriptor_pool = CheckVkResult(v.device.createDescriptorPool(pool_info)); + } + + if (!bd->descriptor_set_layout) { + vk::DescriptorSetLayoutBinding binding[1]{ + { + .descriptorType = vk::DescriptorType::eCombinedImageSampler, + .descriptorCount = 1, + .stageFlags = vk::ShaderStageFlagBits::eFragment, + }, + }; + vk::DescriptorSetLayoutCreateInfo info{ + .sType = vk::StructureType::eDescriptorSetLayoutCreateInfo, + .bindingCount = 1, + .pBindings = binding, + }; + bd->descriptor_set_layout = + CheckVkResult(v.device.createDescriptorSetLayout(info, v.allocator)); + } + + if (!bd->pipeline_layout) { + // Constants: we are using 'vec2 offset' and 'vec2 scale' instead of a full 3d projection + // matrix + vk::PushConstantRange push_constants[1]{ + { + .stageFlags = vk::ShaderStageFlagBits::eVertex, + .offset = sizeof(float) * 0, + .size = sizeof(float) * 4, + }, + }; + vk::DescriptorSetLayout set_layout[1] = {bd->descriptor_set_layout}; + vk::PipelineLayoutCreateInfo layout_info{ + .sType = vk::StructureType::ePipelineLayoutCreateInfo, + .setLayoutCount = 1, + .pSetLayouts = set_layout, + .pushConstantRangeCount = 1, + .pPushConstantRanges = push_constants, + }; + bd->pipeline_layout = + CheckVkResult(v.device.createPipelineLayout(layout_info, v.allocator)); + } + + CreatePipeline(v.device, v.allocator, v.pipeline_cache, nullptr, &bd->pipeline, v.subpass); + + if (bd->command_pool == VK_NULL_HANDLE) { + vk::CommandPoolCreateInfo info{ + .sType = vk::StructureType::eCommandPoolCreateInfo, + .flags = vk::CommandPoolCreateFlagBits::eResetCommandBuffer, + .queueFamilyIndex = v.queue_family, + }; + std::unique_lock lk(bd->command_pool_mutex); + bd->command_pool = CheckVkResult(v.device.createCommandPool(info, v.allocator)); + } + + if (!bd->simple_sampler) { + // Bilinear sampling is required by default. Set 'io.Fonts->Flags |= + // ImFontAtlasFlags_NoBakedLines' or 'style.AntiAliasedLinesUseTex = false' to allow + // point/nearest sampling. + vk::SamplerCreateInfo info{ + .sType = vk::StructureType::eSamplerCreateInfo, + .magFilter = vk::Filter::eLinear, + .minFilter = vk::Filter::eLinear, + .mipmapMode = vk::SamplerMipmapMode::eLinear, + .addressModeU = vk::SamplerAddressMode::eRepeat, + .addressModeV = vk::SamplerAddressMode::eRepeat, + .addressModeW = vk::SamplerAddressMode::eRepeat, + .maxAnisotropy = 1.0f, + .minLod = -1000, + .maxLod = 1000, + }; + bd->simple_sampler = CheckVkResult(v.device.createSampler(info, v.allocator)); + } + + return true; +} + +void ImGuiImplVulkanDestroyDeviceObjects() { + VkData* bd = GetBackendData(); + const InitInfo& v = bd->init_info; + DestroyWindowRenderBuffers(v.device, bd->render_buffers, v.allocator); + DestroyFontsTexture(); + + if (bd->font_command_buffer) { + std::unique_lock lk(bd->command_pool_mutex); + v.device.freeCommandBuffers(bd->command_pool, {bd->font_command_buffer}); + bd->font_command_buffer = VK_NULL_HANDLE; + } + if (bd->command_pool) { + std::unique_lock lk(bd->command_pool_mutex); + v.device.destroyCommandPool(bd->command_pool, v.allocator); + bd->command_pool = VK_NULL_HANDLE; + } + if (bd->shader_module_vert) { + v.device.destroyShaderModule(bd->shader_module_vert, v.allocator); + bd->shader_module_vert = VK_NULL_HANDLE; + } + if (bd->shader_module_frag) { + v.device.destroyShaderModule(bd->shader_module_frag, v.allocator); + bd->shader_module_frag = VK_NULL_HANDLE; + } + if (bd->simple_sampler) { + v.device.destroySampler(bd->simple_sampler, v.allocator); + bd->simple_sampler = VK_NULL_HANDLE; + } + if (bd->descriptor_set_layout) { + v.device.destroyDescriptorSetLayout(bd->descriptor_set_layout, v.allocator); + bd->descriptor_set_layout = VK_NULL_HANDLE; + } + if (bd->pipeline_layout) { + v.device.destroyPipelineLayout(bd->pipeline_layout, v.allocator); + bd->pipeline_layout = VK_NULL_HANDLE; + } + if (bd->pipeline) { + v.device.destroyPipeline(bd->pipeline, v.allocator); + bd->pipeline = VK_NULL_HANDLE; + } +} + +bool Init(InitInfo info) { + + IM_ASSERT(info.instance != VK_NULL_HANDLE); + IM_ASSERT(info.physical_device != VK_NULL_HANDLE); + IM_ASSERT(info.device != VK_NULL_HANDLE); + IM_ASSERT(info.image_count >= 2); + + ImGuiIO& io = ImGui::GetIO(); + IMGUI_CHECKVERSION(); + IM_ASSERT(io.BackendRendererUserData == nullptr && "Already initialized a renderer backend!"); + + // Setup backend capabilities flags + auto* bd = IM_NEW(VkData)(info); + io.BackendRendererUserData = (void*)bd; + io.BackendRendererName = "imgui_impl_vulkan_shadps4"; + // We can honor the ImDrawCmd::VtxOffset field, allowing for large meshes. + io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset; + + CreateDeviceObjects(); + CreateFontsTexture(); + + return true; +} + +void Shutdown() { + VkData* bd = GetBackendData(); + IM_ASSERT(bd != nullptr && "No renderer backend to shutdown, or already shutdown?"); + ImGuiIO& io = ImGui::GetIO(); + + ImGuiImplVulkanDestroyDeviceObjects(); + io.BackendRendererName = nullptr; + io.BackendRendererUserData = nullptr; + io.BackendFlags &= ~ImGuiBackendFlags_RendererHasVtxOffset; + IM_DELETE(bd); +} + +} // namespace ImGui::Vulkan diff --git a/src/imgui/renderer/imgui_impl_vulkan.h b/src/imgui/renderer/imgui_impl_vulkan.h new file mode 100644 index 0000000000..ca76fda6d9 --- /dev/null +++ b/src/imgui/renderer/imgui_impl_vulkan.h @@ -0,0 +1,63 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +// Based on imgui_impl_vulkan.h from Dear ImGui repository + +#pragma once + +#define VULKAN_HPP_NO_EXCEPTIONS +#include "common/types.h" +#include "video_core/renderer_vulkan/vk_common.h" + +struct ImDrawData; + +namespace ImGui::Vulkan { + +struct InitInfo { + vk::Instance instance; + vk::PhysicalDevice physical_device; + vk::Device device; + uint32_t queue_family; + vk::Queue queue; + uint32_t image_count; // >= 2 + vk::DeviceSize min_allocation_size; // Minimum allocation size + vk::PipelineCache pipeline_cache; + uint32_t subpass; + vk::PipelineRenderingCreateInfoKHR pipeline_rendering_create_info; + + // (Optional) Allocation, Logging + const vk::AllocationCallbacks* allocator{}; + void (*check_vk_result_fn)(vk::Result err); +}; + +// Prepare all resources needed for uploading textures +// Caller should clean up the returned data. +struct UploadTextureData { + vk::Image image; + vk::ImageView image_view; + vk::DescriptorSet descriptor_set; + vk::DeviceMemory image_memory; + + vk::CommandBuffer command_buffer; // Submit to the queue + vk::Buffer upload_buffer; + vk::DeviceMemory upload_buffer_memory; + + void Upload(); + + void Destroy(); +}; + +vk::DescriptorSet AddTexture(vk::ImageView image_view, vk::ImageLayout image_layout, + vk::Sampler sampler = VK_NULL_HANDLE); + +UploadTextureData UploadTexture(const void* data, vk::Format format, u32 width, u32 height, + size_t size); + +void RemoveTexture(vk::DescriptorSet descriptor_set); + +bool Init(InitInfo info); +void Shutdown(); +void RenderDrawData(ImDrawData& draw_data, vk::CommandBuffer command_buffer, + vk::Pipeline pipeline = VK_NULL_HANDLE); + +} // namespace ImGui::Vulkan \ No newline at end of file diff --git a/src/imgui/renderer/texture_manager.cpp b/src/imgui/renderer/texture_manager.cpp new file mode 100644 index 0000000000..ba4a05d015 --- /dev/null +++ b/src/imgui/renderer/texture_manager.cpp @@ -0,0 +1,243 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include +#include + +#include + +#include "common/assert.h" +#include "common/io_file.h" +#include "common/polyfill_thread.h" +#include "imgui_impl_vulkan.h" +#include "texture_manager.h" + +namespace ImGui { + +namespace Core::TextureManager { +struct Inner { + std::atomic_int count = 0; + ImTextureID texture_id = nullptr; + u32 width = 0; + u32 height = 0; + + Vulkan::UploadTextureData upload_data; + + ~Inner(); +}; +} // namespace Core::TextureManager + +using namespace Core::TextureManager; + +RefCountedTexture::RefCountedTexture(Inner* inner) : inner(inner) { + ++inner->count; +} + +RefCountedTexture RefCountedTexture::DecodePngTexture(std::vector data) { + const auto core = new Inner; + Core::TextureManager::DecodePngTexture(std::move(data), core); + return RefCountedTexture(core); +} + +RefCountedTexture RefCountedTexture::DecodePngFile(std::filesystem::path path) { + const auto core = new Inner; + Core::TextureManager::DecodePngFile(std::move(path), core); + return RefCountedTexture(core); +} + +RefCountedTexture::RefCountedTexture() : inner(nullptr) {} + +RefCountedTexture::RefCountedTexture(const RefCountedTexture& other) : inner(other.inner) { + if (inner != nullptr) { + ++inner->count; + } +} + +RefCountedTexture::RefCountedTexture(RefCountedTexture&& other) noexcept : inner(other.inner) { + other.inner = nullptr; +} + +RefCountedTexture& RefCountedTexture::operator=(const RefCountedTexture& other) { + if (this == &other) + return *this; + inner = other.inner; + if (inner != nullptr) { + ++inner->count; + } + return *this; +} + +RefCountedTexture& RefCountedTexture::operator=(RefCountedTexture&& other) noexcept { + if (this == &other) + return *this; + std::swap(inner, other.inner); + return *this; +} + +RefCountedTexture::~RefCountedTexture() { + if (inner != nullptr) { + if (inner->count.fetch_sub(1) == 1) { + delete inner; + } + } +} +RefCountedTexture::Image RefCountedTexture::GetTexture() const { + if (inner == nullptr) { + return {}; + } + return Image{ + .im_id = inner->texture_id, + .width = inner->width, + .height = inner->height, + }; +} +RefCountedTexture::operator bool() const { + return inner != nullptr && inner->texture_id != nullptr; +} + +struct Job { + Inner* core; + std::vector data; + std::filesystem::path path; +}; + +struct UploadJob { + Inner* core = nullptr; + Vulkan::UploadTextureData data; + int tick = 0; // Used to skip the first frame when destroying to await the current frame to draw +}; + +static bool g_is_worker_running = false; +static std::jthread g_worker_thread; +static std::condition_variable g_worker_cv; + +static std::mutex g_job_list_mtx; +static std::deque g_job_list; + +static std::mutex g_upload_mtx; +static std::deque g_upload_list; + +namespace Core::TextureManager { + +Inner::~Inner() { + if (upload_data.descriptor_set != nullptr) { + std::unique_lock lk{g_upload_mtx}; + g_upload_list.emplace_back(UploadJob{ + .data = this->upload_data, + .tick = 2, + }); + } +} + +void WorkerLoop() { + std::mutex mtx; + while (g_is_worker_running) { + std::unique_lock lk{mtx}; + g_worker_cv.wait(lk); + if (!g_is_worker_running) { + break; + } + while (true) { + g_job_list_mtx.lock(); + if (g_job_list.empty()) { + g_job_list_mtx.unlock(); + break; + } + auto [core, png_raw, path] = std::move(g_job_list.front()); + g_job_list.pop_front(); + g_job_list_mtx.unlock(); + + if (!path.empty()) { // Decode PNG from file + Common::FS::IOFile file(path, Common::FS::FileAccessMode::Read); + if (!file.IsOpen()) { + LOG_ERROR(ImGui, "Failed to open PNG file: {}", path.string()); + continue; + } + png_raw.resize(file.GetSize()); + file.Seek(0); + file.ReadRaw(png_raw.data(), png_raw.size()); + file.Close(); + } + + int width, height; + const stbi_uc* pixels = + stbi_load_from_memory(png_raw.data(), png_raw.size(), &width, &height, nullptr, 4); + + auto texture = Vulkan::UploadTexture(pixels, vk::Format::eR8G8B8A8Unorm, width, height, + width * height * 4 * sizeof(stbi_uc)); + + core->upload_data = texture; + core->width = width; + core->height = height; + + std::unique_lock upload_lk{g_upload_mtx}; + g_upload_list.emplace_back(UploadJob{ + .core = core, + }); + } + } +} + +void StartWorker() { + ASSERT(!g_is_worker_running); + g_worker_thread = std::jthread(WorkerLoop); + g_is_worker_running = true; +} + +void StopWorker() { + ASSERT(g_is_worker_running); + g_is_worker_running = false; + g_worker_cv.notify_one(); +} + +void DecodePngTexture(std::vector data, Inner* core) { + ++core->count; + Job job{ + .core = core, + .data = std::move(data), + }; + std::unique_lock lk{g_job_list_mtx}; + g_job_list.push_back(std::move(job)); + g_worker_cv.notify_one(); +} + +void DecodePngFile(std::filesystem::path path, Inner* core) { + ++core->count; + Job job{ + .core = core, + .path = std::move(path), + }; + std::unique_lock lk{g_job_list_mtx}; + g_job_list.push_back(std::move(job)); + g_worker_cv.notify_one(); +} + +void Submit() { + UploadJob upload; + { + std::unique_lock lk{g_upload_mtx}; + if (g_upload_list.empty()) { + return; + } + // Upload one texture at a time to avoid slow down + upload = g_upload_list.front(); + g_upload_list.pop_front(); + if (upload.tick > 0) { + --upload.tick; + g_upload_list.emplace_back(upload); + return; + } + } + if (upload.core != nullptr) { + upload.core->upload_data.Upload(); + upload.core->texture_id = upload.core->upload_data.descriptor_set; + if (upload.core->count.fetch_sub(1) == 1) { + delete upload.core; + } + } else { + upload.data.Destroy(); + } +} +} // namespace Core::TextureManager + +} // namespace ImGui \ No newline at end of file diff --git a/src/imgui/renderer/texture_manager.h b/src/imgui/renderer/texture_manager.h new file mode 100644 index 0000000000..4fa7b99241 --- /dev/null +++ b/src/imgui/renderer/texture_manager.h @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +#include "common/types.h" +#include "imgui/imgui_texture.h" + +namespace vk { +class CommandBuffer; +} + +namespace ImGui::Core::TextureManager { + +struct Inner; + +void StartWorker(); + +void StopWorker(); + +void DecodePngTexture(std::vector data, Inner* core); + +void DecodePngFile(std::filesystem::path path, Inner* core); + +void Submit(); + +}; // namespace ImGui::Core::TextureManager \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 9df14f1384..cea92be07b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include "common/memory_patcher.h" #include "emulator.h" int main(int argc, char* argv[]) { @@ -9,8 +10,22 @@ int main(int argc, char* argv[]) { fmt::print("Usage: {} \n", argv[0]); return -1; } + // check if eboot file exists + if (!std::filesystem::exists(argv[1])) { + fmt::print("Eboot.bin file not found\n"); + return -1; + } + + for (int i = 0; i < argc; i++) { + std::string curArg = argv[i]; + if (curArg == "-p") { + std::string patchFile = argv[i + 1]; + MemoryPatcher::patchFile = patchFile; + } + } Core::Emulator emulator; emulator.Run(argv[1]); + return 0; } diff --git a/src/qt_gui/cheats_patches.cpp b/src/qt_gui/cheats_patches.cpp index fd0bc4e14f..a58106cb31 100644 --- a/src/qt_gui/cheats_patches.cpp +++ b/src/qt_gui/cheats_patches.cpp @@ -28,9 +28,9 @@ #include #include #include "cheats_patches.h" +#include "common/memory_patcher.h" #include "common/path_util.h" #include "core/module.h" -#include "qt_gui/memory_patcher.h" using namespace Common::FS; @@ -147,13 +147,13 @@ void CheatsPatches::setupUI() { controlLayout->addWidget(downloadComboBox); QPushButton* downloadButton = new QPushButton(tr("Download Cheats")); - connect(downloadButton, &QPushButton::clicked, [=]() { + connect(downloadButton, &QPushButton::clicked, [this, downloadComboBox]() { QString source = downloadComboBox->currentData().toString(); downloadCheats(source, m_gameSerial, m_gameVersion, true); }); QPushButton* deleteCheatButton = new QPushButton(tr("Delete File")); - connect(deleteCheatButton, &QPushButton::clicked, [=]() { + connect(deleteCheatButton, &QPushButton::clicked, [this, CHEATS_DIR_QString]() { QStringListModel* model = qobject_cast(listView_selectFile->model()); if (!model) { return; @@ -232,7 +232,7 @@ void CheatsPatches::setupUI() { patchesControlLayout->addWidget(patchesComboBox); QPushButton* patchesButton = new QPushButton(tr("Download Patches")); - connect(patchesButton, &QPushButton::clicked, [=]() { + connect(patchesButton, &QPushButton::clicked, [this]() { QString selectedOption = patchesComboBox->currentData().toString(); downloadPatches(selectedOption, true); }); @@ -444,8 +444,8 @@ QCheckBox* CheatsPatches::findCheckBoxByName(const QString& name) { return nullptr; } -void CheatsPatches::downloadCheats(const QString& source, const QString& m_gameSerial, - const QString& m_gameVersion, const bool showMessageBox) { +void CheatsPatches::downloadCheats(const QString& source, const QString& gameSerial, + const QString& gameVersion, const bool showMessageBox) { QDir dir(Common::FS::GetUserPath(Common::FS::PathType::CheatsDir)); if (!dir.exists()) { dir.mkpath("."); @@ -455,7 +455,7 @@ void CheatsPatches::downloadCheats(const QString& source, const QString& m_gameS if (source == "GoldHEN") { url = "https://raw.githubusercontent.com/GoldHEN/GoldHEN_Cheat_Repository/main/json.txt"; } else if (source == "wolf2022") { - url = "https://wolf2022.ir/trainer/" + m_gameSerial + "_" + m_gameVersion + ".json"; + url = "https://wolf2022.ir/trainer/" + gameSerial + "_" + gameVersion + ".json"; } else if (source == "shadPS4") { url = "https://raw.githubusercontent.com/shadps4-emu/ps4_cheats/main/" "CHEATS_JSON.txt"; @@ -468,7 +468,7 @@ void CheatsPatches::downloadCheats(const QString& source, const QString& m_gameS QNetworkRequest request(url); QNetworkReply* reply = manager->get(request); - connect(reply, &QNetworkReply::finished, [=]() { + connect(reply, &QNetworkReply::finished, [=, this]() { if (reply->error() == QNetworkReply::NoError) { QByteArray jsonData = reply->readAll(); bool foundFiles = false; @@ -476,7 +476,7 @@ void CheatsPatches::downloadCheats(const QString& source, const QString& m_gameS if (source == "GoldHEN" || source == "shadPS4") { QString textContent(jsonData); QRegularExpression regex( - QString("%1_%2[^=]*\.json").arg(m_gameSerial).arg(m_gameVersion)); + QString("%1_%2[^=]*\\.json").arg(gameSerial).arg(gameVersion)); QRegularExpressionMatchIterator matches = regex.globalMatch(textContent); QString baseUrl; @@ -519,7 +519,7 @@ void CheatsPatches::downloadCheats(const QString& source, const QString& m_gameS QNetworkRequest fileRequest(fileUrl); QNetworkReply* fileReply = manager->get(fileRequest); - connect(fileReply, &QNetworkReply::finished, [=]() { + connect(fileReply, &QNetworkReply::finished, [=, this]() { if (fileReply->error() == QNetworkReply::NoError) { QByteArray fileData = fileReply->readAll(); QFile localFile(localFilePath); @@ -669,105 +669,86 @@ void CheatsPatches::populateFileListPatches() { void CheatsPatches::downloadPatches(const QString repository, const bool showMessageBox) { QString url; if (repository == "GoldHEN") { - url = "https://github.com/GoldHEN/GoldHEN_Patch_Repository/tree/main/" - "patches/xml"; + url = "https://api.github.com/repos/illusion0001/PS4-PS5-Game-Patch/contents/patches/xml"; } if (repository == "shadPS4") { - url = "https://github.com/shadps4-emu/ps4_cheats/tree/main/" - "PATCHES"; + url = "https://api.github.com/repos/shadps4-emu/ps4_cheats/contents/PATCHES"; } QNetworkAccessManager* manager = new QNetworkAccessManager(this); QNetworkRequest request(url); + request.setRawHeader("Accept", "application/vnd.github.v3+json"); QNetworkReply* reply = manager->get(request); connect(reply, &QNetworkReply::finished, [=]() { if (reply->error() == QNetworkReply::NoError) { - QByteArray htmlData = reply->readAll(); + QByteArray jsonData = reply->readAll(); reply->deleteLater(); - // Parsear HTML e extrair JSON usando QRegularExpression - QString htmlString = QString::fromUtf8(htmlData); - QRegularExpression jsonRegex( - R"()"); - QRegularExpressionMatch match = jsonRegex.match(htmlString); - - if (match.hasMatch()) { - QByteArray jsonData = match.captured(1).toUtf8(); - QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); - QJsonObject jsonObj = jsonDoc.object(); - QJsonArray itemsArray = - jsonObj["payload"].toObject()["tree"].toObject()["items"].toArray(); - - QDir dir(Common::FS::GetUserPath(Common::FS::PathType::PatchesDir)); - QString fullPath = dir.filePath(repository); - if (!dir.exists(fullPath)) { - dir.mkpath(fullPath); + QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); + QJsonArray itemsArray = jsonDoc.array(); + + if (itemsArray.isEmpty()) { + if (showMessageBox) { + QMessageBox::warning(this, tr("Error"), + tr("Failed to parse JSON data from HTML.")); } - dir.setPath(fullPath); - - foreach (const QJsonValue& value, itemsArray) { - QJsonObject fileObj = value.toObject(); - QString fileName = fileObj["name"].toString(); - QString filePath = fileObj["path"].toString(); - - if (fileName.endsWith(".xml")) { - QString fileUrl; - if (repository == "GoldHEN") { - fileUrl = QString("https://raw.githubusercontent.com/GoldHEN/" - "GoldHEN_Patch_Repository/main/%1") - .arg(filePath); - } - if (repository == "shadPS4") { - fileUrl = QString("https://raw.githubusercontent.com/shadps4-emu/" - "ps4_cheats/main/%1") - .arg(filePath); - } - QNetworkRequest fileRequest(fileUrl); - QNetworkReply* fileReply = manager->get(fileRequest); + return; + } - connect(fileReply, &QNetworkReply::finished, [=]() { - if (fileReply->error() == QNetworkReply::NoError) { - QByteArray fileData = fileReply->readAll(); - QFile localFile(dir.filePath(fileName)); - if (localFile.open(QIODevice::WriteOnly)) { - localFile.write(fileData); - localFile.close(); - } else { - if (showMessageBox) { - QMessageBox::warning( - this, tr("Error"), - QString(tr("Failed to save:") + "\n%1").arg(fileName)); - } - } + QDir dir(Common::FS::GetUserPath(Common::FS::PathType::PatchesDir)); + QString fullPath = dir.filePath(repository); + if (!dir.exists(fullPath)) { + dir.mkpath(fullPath); + } + dir.setPath(fullPath); + + foreach (const QJsonValue& value, itemsArray) { + QJsonObject fileObj = value.toObject(); + QString fileName = fileObj["name"].toString(); + QString filePath = fileObj["path"].toString(); + QString downloadUrl = fileObj["download_url"].toString(); + + if (fileName.endsWith(".xml")) { + QNetworkRequest fileRequest(downloadUrl); + QNetworkReply* fileReply = manager->get(fileRequest); + + connect(fileReply, &QNetworkReply::finished, [=]() { + if (fileReply->error() == QNetworkReply::NoError) { + QByteArray fileData = fileReply->readAll(); + QFile localFile(dir.filePath(fileName)); + if (localFile.open(QIODevice::WriteOnly)) { + localFile.write(fileData); + localFile.close(); } else { if (showMessageBox) { QMessageBox::warning( this, tr("Error"), - QString(tr("Failed to download:") + "\n%1").arg(fileUrl)); + QString(tr("Failed to save:") + "\n%1").arg(fileName)); } } - fileReply->deleteLater(); - }); - } - } - if (showMessageBox) { - QMessageBox::information(this, tr("Download Complete"), - QString(tr("DownloadComplete_MSG"))); - } - - // Create the files.json file with the identification of which file to open - createFilesJson(repository); - populateFileListPatches(); - - } else { - if (showMessageBox) { - QMessageBox::warning(this, tr("Error"), - tr("Failed to parse JSON data from HTML.")); + } else { + if (showMessageBox) { + QMessageBox::warning( + this, tr("Error"), + QString(tr("Failed to download:") + "\n%1").arg(downloadUrl)); + } + } + fileReply->deleteLater(); + }); } } + if (showMessageBox) { + QMessageBox::information(this, tr("Download Complete"), + QString(tr("DownloadComplete_MSG"))); + } + // Create the files.json file with the identification of which file to open + createFilesJson(repository); + populateFileListPatches(); } else { if (showMessageBox) { - QMessageBox::warning(this, tr("Error"), tr("Failed to retrieve HTML page.")); + QMessageBox::warning(this, tr("Error"), + QString(tr("Failed to retrieve HTML page.") + "\n%1") + .arg(reply->errorString())); } } emit downloadFinished(); @@ -864,7 +845,7 @@ void CheatsPatches::addCheatsToLayout(const QJsonArray& modsArray, const QJsonAr rightLayout->addWidget(cheatCheckBox); m_cheatCheckBoxes.append(cheatCheckBox); connect(cheatCheckBox, &QCheckBox::toggled, - [=](bool checked) { applyCheat(modName, checked); }); + [this, modName](bool checked) { applyCheat(modName, checked); }); } else if (modType == "button") { QPushButton* cheatButton = new QPushButton(modName); cheatButton->adjustSize(); @@ -880,7 +861,8 @@ void CheatsPatches::addCheatsToLayout(const QJsonArray& modsArray, const QJsonAr buttonLayout->addStretch(); rightLayout->addLayout(buttonLayout); - connect(cheatButton, &QPushButton::clicked, [=]() { applyCheat(modName, true); }); + connect(cheatButton, &QPushButton::clicked, + [this, modName]() { applyCheat(modName, true); }); } } @@ -1093,7 +1075,7 @@ void CheatsPatches::addPatchesToLayout(const QString& filePath) { patchCheckBox->installEventFilter(this); connect(patchCheckBox, &QCheckBox::toggled, - [=](bool checked) { applyPatch(patchName, checked); }); + [this, patchName](bool checked) { applyPatch(patchName, checked); }); patchName.clear(); patchAuthor.clear(); @@ -1158,6 +1140,13 @@ void CheatsPatches::applyCheat(const QString& modName, bool enabled) { if (!m_cheats.contains(modName)) return; + if (MemoryPatcher::g_eboot_address == 0 && enabled) { + QMessageBox::critical(this, tr("Error"), + tr("Can't apply cheats before the game is started")); + uncheckAllCheatCheckBoxes(); + return; + } + Cheat cheat = m_cheats[modName]; for (const MemoryMod& memoryMod : cheat.memoryMods) { @@ -1167,16 +1156,9 @@ void CheatsPatches::applyCheat(const QString& modName, bool enabled) { std::string offsetStr = memoryMod.offset.toStdString(); std::string valueStr = value.toStdString(); - if (MemoryPatcher::g_eboot_address == 0) { - MemoryPatcher::patchInfo addingPatch; - addingPatch.modNameStr = modNameStr; - addingPatch.offsetStr = offsetStr; - addingPatch.valueStr = valueStr; - addingPatch.isOffset = true; + if (MemoryPatcher::g_eboot_address == 0) + return; - MemoryPatcher::AddPatchToQueue(addingPatch); - continue; - } // Determine if the hint field is present bool isHintPresent = m_cheats[modName].hasHint; MemoryPatcher::PatchMemory(modNameStr, offsetStr, valueStr, !isHintPresent, false); @@ -1196,7 +1178,8 @@ void CheatsPatches::applyPatch(const QString& patchName, bool enabled) { QString patchValue = lineObject["Value"].toString(); QString maskOffsetStr = lineObject["Offset"].toString(); - patchValue = MemoryPatcher::convertValueToHex(type, patchValue); + patchValue = QString::fromStdString( + MemoryPatcher::convertValueToHex(type.toStdString(), patchValue.toStdString())); bool littleEndian = false; diff --git a/src/qt_gui/game_grid_frame.cpp b/src/qt_gui/game_grid_frame.cpp index 3d5ab14ec8..9fba0c47cb 100644 --- a/src/qt_gui/game_grid_frame.cpp +++ b/src/qt_gui/game_grid_frame.cpp @@ -114,8 +114,8 @@ void GameGridFrame::SetGridBackgroundImage(int row, int column) { QWidget* item = this->cellWidget(row, column); if (item) { QString pic1Path = QString::fromStdString((*m_games_shared)[itemID].pic_path); - const auto blurredPic1Path = Common::FS::GetUserPath(Common::FS::PathType::UserDir) / - "game_data" / (*m_games_shared)[itemID].serial / "pic1.png"; + const auto blurredPic1Path = Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / + (*m_games_shared)[itemID].serial / "pic1.png"; #ifdef _WIN32 const auto blurredPic1PathQt = QString::fromStdWString(blurredPic1Path.wstring()); #else @@ -128,7 +128,8 @@ void GameGridFrame::SetGridBackgroundImage(int row, int column) { backgroundImage = m_game_list_utils.BlurImage(image, image.rect(), 16); std::filesystem::path img_path = - std::filesystem::path("user/game_data/") / (*m_games_shared)[itemID].serial; + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / + (*m_games_shared)[itemID].serial; std::filesystem::create_directories(img_path); if (!backgroundImage.save(blurredPic1PathQt, "PNG")) { // qDebug() << "Error: Unable to save image."; diff --git a/src/qt_gui/game_info.h b/src/qt_gui/game_info.h index ae02114a23..a4bcd20ee2 100644 --- a/src/qt_gui/game_info.h +++ b/src/qt_gui/game_info.h @@ -27,21 +27,36 @@ class GameInfoClass : public QObject { game.path = filePath; PSF psf; - if (psf.open(game.path + "/sce_sys/param.sfo", {})) { + if (psf.Open(std::filesystem::path(game.path) / "sce_sys" / "param.sfo")) { game.icon_path = game.path + "/sce_sys/icon0.png"; QString iconpath = QString::fromStdString(game.icon_path); game.icon = QImage(iconpath); game.pic_path = game.path + "/sce_sys/pic1.png"; - game.name = psf.GetString("TITLE"); - game.serial = psf.GetString("TITLE_ID"); - game.region = GameListUtils::GetRegion(psf.GetString("CONTENT_ID").at(0)).toStdString(); - u32 fw_int = psf.GetInteger("SYSTEM_VER"); - QString fw = QString::number(fw_int, 16); - QString fw_ = fw.length() > 7 ? QString::number(fw_int, 16).left(3).insert(2, '.') - : fw.left(3).insert(1, '.'); - game.fw = (fw_int == 0) ? "0.00" : fw_.toStdString(); - game.version = psf.GetString("APP_VER"); - game.category = psf.GetString("CATEGORY"); + if (const auto title = psf.GetString("TITLE"); title.has_value()) { + game.name = *title; + } + if (const auto title_id = psf.GetString("TITLE_ID"); title_id.has_value()) { + game.serial = *title_id; + } + if (const auto content_id = psf.GetString("CONTENT_ID"); + content_id.has_value() && !content_id->empty()) { + game.region = GameListUtils::GetRegion(content_id->at(0)).toStdString(); + } + if (const auto fw_int_opt = psf.GetInteger("SYSTEM_VER"); fw_int_opt.has_value()) { + auto fw_int = *fw_int_opt; + if (fw_int == 0) { + game.fw = "0.00"; + } else { + QString fw = QString::number(fw_int, 16); + QString fw_ = fw.length() > 7 + ? QString::number(fw_int, 16).left(3).insert(2, '.') + : fw.left(3).insert(1, '.'); + game.fw = fw_.toStdString(); + } + } + if (auto app_ver = psf.GetString("APP_VER"); app_ver.has_value()) { + game.version = *app_ver; + } } return game; } diff --git a/src/qt_gui/game_list_frame.cpp b/src/qt_gui/game_list_frame.cpp index 2699c96155..b17da127e8 100644 --- a/src/qt_gui/game_list_frame.cpp +++ b/src/qt_gui/game_list_frame.cpp @@ -23,24 +23,16 @@ GameListFrame::GameListFrame(std::shared_ptr game_info_get, QWidg this->horizontalHeader()->setSortIndicatorShown(true); this->horizontalHeader()->setStretchLastSection(true); this->setContextMenuPolicy(Qt::CustomContextMenu); - this->setColumnCount(9); - this->setColumnWidth(1, 250); - this->setColumnWidth(2, 110); - this->setColumnWidth(3, 80); - this->setColumnWidth(4, 90); - this->setColumnWidth(5, 80); - this->setColumnWidth(6, 80); - this->setColumnWidth(7, 80); + this->setColumnCount(8); + this->setColumnWidth(1, 300); // Name + this->setColumnWidth(2, 120); // Serial + this->setColumnWidth(3, 90); // Region + this->setColumnWidth(4, 90); // Firmware + this->setColumnWidth(5, 90); // Size + this->setColumnWidth(6, 90); // Version QStringList headers; - headers << "Icon" - << "Name" - << "Serial" - << "Region" - << "Firmware" - << "Size" - << "Version" - << "Category" - << "Path"; + headers << tr("Icon") << tr("Name") << tr("Serial") << tr("Region") << tr("Firmware") + << tr("Size") << tr("Version") << tr("Path"); this->setHorizontalHeaderLabels(headers); this->horizontalHeader()->setSortIndicatorShown(true); this->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); @@ -87,8 +79,7 @@ void GameListFrame::PopulateGameList() { SetTableItem(i, 4, QString::fromStdString(m_game_info->m_games[i].fw)); SetTableItem(i, 5, QString::fromStdString(m_game_info->m_games[i].size)); SetTableItem(i, 6, QString::fromStdString(m_game_info->m_games[i].version)); - SetTableItem(i, 7, QString::fromStdString(m_game_info->m_games[i].category)); - SetTableItem(i, 8, QString::fromStdString(m_game_info->m_games[i].path)); + SetTableItem(i, 7, QString::fromStdString(m_game_info->m_games[i].path)); } } @@ -99,9 +90,8 @@ void GameListFrame::SetListBackgroundImage(QTableWidgetItem* item) { } QString pic1Path = QString::fromStdString(m_game_info->m_games[item->row()].pic_path); - const auto blurredPic1Path = Common::FS::GetUserPath(Common::FS::PathType::UserDir) / - "game_data" / m_game_info->m_games[item->row()].serial / - "pic1.png"; + const auto blurredPic1Path = Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / + m_game_info->m_games[item->row()].serial / "pic1.png"; #ifdef _WIN32 const auto blurredPic1PathQt = QString::fromStdWString(blurredPic1Path.wstring()); #else @@ -114,7 +104,8 @@ void GameListFrame::SetListBackgroundImage(QTableWidgetItem* item) { backgroundImage = m_game_list_utils.BlurImage(image, image.rect(), 16); std::filesystem::path img_path = - std::filesystem::path("user/game_data/") / m_game_info->m_games[item->row()].serial; + Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / + m_game_info->m_games[item->row()].serial; std::filesystem::create_directories(img_path); if (!backgroundImage.save(blurredPic1PathQt, "PNG")) { // qDebug() << "Error: Unable to save image."; @@ -168,7 +159,7 @@ void GameListFrame::SetTableItem(int row, int column, QString itemStr) { QVBoxLayout* layout = new QVBoxLayout(widget); QLabel* label = new QLabel(itemStr, widget); - label->setStyleSheet("color: white; font-size: 15px; font-weight: bold;"); + label->setStyleSheet("color: white; font-size: 16px; font-weight: bold;"); // Create shadow effect QGraphicsDropShadowEffect* shadowEffect = new QGraphicsDropShadowEffect(); diff --git a/src/qt_gui/game_list_utils.h b/src/qt_gui/game_list_utils.h index 7911ce46f1..476c900359 100644 --- a/src/qt_gui/game_list_utils.h +++ b/src/qt_gui/game_list_utils.h @@ -14,7 +14,6 @@ struct GameInfo { std::string serial = "Unknown"; std::string version = "Unknown"; std::string region = "Unknown"; - std::string category = "Unknown"; std::string fw = "Unknown"; }; diff --git a/src/qt_gui/gui_context_menus.h b/src/qt_gui/gui_context_menus.h index fb1994bb0f..a2f7f28ffe 100644 --- a/src/qt_gui/gui_context_menus.h +++ b/src/qt_gui/gui_context_menus.h @@ -80,8 +80,8 @@ class GuiContextMenus : public QObject { if (selected == &openSfoViewer) { PSF psf; - if (psf.open(m_games[itemID].path + "/sce_sys/param.sfo", {})) { - int rows = psf.map_strings.size() + psf.map_integers.size(); + if (psf.Open(std::filesystem::path(m_games[itemID].path) / "sce_sys" / "param.sfo")) { + int rows = psf.GetEntries().size(); QTableWidget* tableWidget = new QTableWidget(rows, 2); tableWidget->setAttribute(Qt::WA_DeleteOnClose); connect(widget->parent(), &QWidget::destroyed, tableWidget, @@ -90,23 +90,45 @@ class GuiContextMenus : public QObject { tableWidget->verticalHeader()->setVisible(false); // Hide vertical header int row = 0; - for (const auto& pair : psf.map_strings) { + for (const auto& entry : psf.GetEntries()) { QTableWidgetItem* keyItem = - new QTableWidgetItem(QString::fromStdString(pair.first)); - QTableWidgetItem* valueItem = - new QTableWidgetItem(QString::fromStdString(pair.second)); - - tableWidget->setItem(row, 0, keyItem); - tableWidget->setItem(row, 1, valueItem); - keyItem->setFlags(keyItem->flags() & ~Qt::ItemIsEditable); - valueItem->setFlags(valueItem->flags() & ~Qt::ItemIsEditable); - row++; - } - for (const auto& pair : psf.map_integers) { - QTableWidgetItem* keyItem = - new QTableWidgetItem(QString::fromStdString(pair.first)); - QTableWidgetItem* valueItem = new QTableWidgetItem( - QString("0x").append(QString::number(pair.second, 16))); + new QTableWidgetItem(QString::fromStdString(entry.key)); + QTableWidgetItem* valueItem; + switch (entry.param_fmt) { + case PSFEntryFmt::Binary: { + const auto bin = psf.GetBinary(entry.key); + if (!bin.has_value()) { + valueItem = new QTableWidgetItem(QString("Unknown")); + } else { + std::string text; + text.reserve(bin->size() * 2); + for (const auto& c : *bin) { + static constexpr char hex[] = "0123456789ABCDEF"; + text.push_back(hex[c >> 4 & 0xF]); + text.push_back(hex[c & 0xF]); + } + valueItem = new QTableWidgetItem(QString::fromStdString(text)); + } + } break; + case PSFEntryFmt::Text: { + auto text = psf.GetString(entry.key); + if (!text.has_value()) { + valueItem = new QTableWidgetItem(QString("Unknown")); + } else { + valueItem = + new QTableWidgetItem(QString::fromStdString(std::string{*text})); + } + } break; + case PSFEntryFmt::Integer: { + auto integer = psf.GetInteger(entry.key); + if (!integer.has_value()) { + valueItem = new QTableWidgetItem(QString("Unknown")); + } else { + valueItem = + new QTableWidgetItem(QString("0x") + QString::number(*integer, 16)); + } + } break; + } tableWidget->setItem(row, 0, keyItem); tableWidget->setItem(row, 1, valueItem); diff --git a/src/qt_gui/main.cpp b/src/qt_gui/main.cpp index 02957c6d53..68a674f5e7 100644 --- a/src/qt_gui/main.cpp +++ b/src/qt_gui/main.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "common/config.h" +#include "common/memory_patcher.h" #include "core/file_sys/fs.h" #include "emulator.h" #include "game_install_dialog.h" @@ -16,7 +17,6 @@ int main(int argc, char* argv[]) { // Load configurations and initialize Qt application const auto user_dir = Common::FS::GetUserPath(Common::FS::PathType::UserDir); Config::load(user_dir / "config.toml"); - std::filesystem::create_directory(user_dir / "game_data"); // Check if elf or eboot.bin path was passed as a command line argument bool has_command_line_argument = argc > 1; @@ -37,6 +37,13 @@ int main(int argc, char* argv[]) { // Check for command line arguments if (has_command_line_argument) { Core::Emulator emulator; + for (int i = 0; i < argc; i++) { + std::string curArg = argv[i]; + if (curArg == "-p") { + std::string patchFile = argv[i + 1]; + MemoryPatcher::patchFile = patchFile; + } + } emulator.Run(argv[1]); } diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 988e01a505..c603606650 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -34,12 +34,12 @@ bool MainWindow::Init() { CreateActions(); CreateRecentGameActions(); ConfigureGuiFromSettings(); + LoadTranslation(); CreateDockWindows(); CreateConnects(); SetLastUsedTheme(); SetLastIconSizeBullet(); GetPhysicalDevices(); - LoadTranslation(); // show ui setMinimumSize(350, minimumSizeHint().height()); setWindowTitle(QString::fromStdString("shadPS4 v" + std::string(Common::VERSION))); @@ -88,6 +88,7 @@ void MainWindow::AddUiWidgets() { ui->toolBar->addWidget(ui->playButton); ui->toolBar->addWidget(ui->pauseButton); ui->toolBar->addWidget(ui->stopButton); + ui->toolBar->addWidget(ui->refreshButton); ui->toolBar->addWidget(ui->settingsButton); ui->toolBar->addWidget(ui->controllerButton); QFrame* line = new QFrame(this); @@ -103,7 +104,7 @@ void MainWindow::CreateDockWindows() { QWidget* phCentralWidget = new QWidget(this); setCentralWidget(phCentralWidget); - m_dock_widget.reset(new QDockWidget("Game List", this)); + m_dock_widget.reset(new QDockWidget(tr("Game List"), this)); m_game_list_frame.reset(new GameListFrame(m_game_info, this)); m_game_list_frame->setObjectName("gamelist"); m_game_grid_frame.reset(new GameGridFrame(m_game_info, this)); @@ -177,6 +178,7 @@ void MainWindow::CreateConnects() { connect(ui->mw_searchbar, &QLineEdit::textChanged, this, &MainWindow::SearchGameTable); connect(ui->exitAct, &QAction::triggered, this, &QWidget::close); connect(ui->refreshGameListAct, &QAction::triggered, this, &MainWindow::RefreshGameTable); + connect(ui->refreshButton, &QPushButton::clicked, this, &MainWindow::RefreshGameTable); connect(ui->showGameListAct, &QAction::triggered, this, &MainWindow::ShowGameList); connect(this, &MainWindow::ExtractionFinished, this, &MainWindow::RefreshGameTable); @@ -507,6 +509,10 @@ void MainWindow::StartGame() { if (gamePath != "") { AddRecentFiles(gamePath); Core::Emulator emulator; + if (!std::filesystem::exists(gamePath.toUtf8().constData())) { + QMessageBox::critical(nullptr, tr("Run Game"), QString(tr("Eboot.bin file not found"))); + return; + } emulator.Run(gamePath.toUtf8().constData()); } } @@ -575,7 +581,7 @@ void MainWindow::SaveWindowState() const { void MainWindow::InstallPkg() { QFileDialog dialog; dialog.setFileMode(QFileDialog::ExistingFiles); - dialog.setNameFilter(tr("PKG File (*.PKG)")); + dialog.setNameFilter(tr("PKG File (*.PKG *.pkg)")); if (dialog.exec()) { QStringList fileNames = dialog.selectedFiles(); int nPkg = fileNames.size(); @@ -608,6 +614,11 @@ void MainWindow::BootGame() { path = std::filesystem::path(fileNames[0].toStdWString()); #endif Core::Emulator emulator; + if (!std::filesystem::exists(path)) { + QMessageBox::critical(nullptr, tr("Run Game"), + QString(tr("Eboot.bin file not found"))); + return; + } emulator.Run(path); } } @@ -625,9 +636,19 @@ void MainWindow::InstallDragDropPkg(std::filesystem::path file, int pkgNum, int QMessageBox msgBox; msgBox.setWindowTitle(tr("PKG Extraction")); - psf.open("", pkg.sfo); + if (!psf.Open(pkg.sfo)) { + QMessageBox::critical(this, tr("PKG ERROR"), + "Could not read SFO. Check log for details"); + return; + } - std::string content_id = psf.GetString("CONTENT_ID"); + std::string content_id; + if (auto value = psf.GetString("CONTENT_ID"); value.has_value()) { + content_id = std::string{*value}; + } else { + QMessageBox::critical(this, tr("PKG ERROR"), "PSF file there is no CONTENT_ID"); + return; + } std::string entitlement_label = Common::SplitString(content_id, '-')[2]; auto addon_extract_path = Common::FS::GetUserPath(Common::FS::PathType::AddonsDir) / @@ -636,9 +657,21 @@ void MainWindow::InstallDragDropPkg(std::filesystem::path file, int pkgNum, int auto category = psf.GetString("CATEGORY"); if (pkgType.contains("PATCH")) { - QString pkg_app_version = QString::fromStdString(psf.GetString("APP_VER")); - psf.open(extract_path.string() + "/sce_sys/param.sfo", {}); - QString game_app_version = QString::fromStdString(psf.GetString("APP_VER")); + QString pkg_app_version; + if (auto app_ver = psf.GetString("APP_VER"); app_ver.has_value()) { + pkg_app_version = QString::fromStdString(std::string{*app_ver}); + } else { + QMessageBox::critical(this, tr("PKG ERROR"), "PSF file there is no APP_VER"); + return; + } + psf.Open(extract_path / "sce_sys" / "param.sfo"); + QString game_app_version; + if (auto app_ver = psf.GetString("APP_VER"); app_ver.has_value()) { + game_app_version = QString::fromStdString(std::string{*app_ver}); + } else { + QMessageBox::critical(this, tr("PKG ERROR"), "PSF file there is no APP_VER"); + return; + } double appD = game_app_version.toDouble(); double pkgD = pkg_app_version.toDouble(); if (pkgD == appD) { @@ -852,6 +885,7 @@ void MainWindow::SetUiIcons(bool isWhite) { ui->playButton->setIcon(RecolorIcon(ui->playButton->icon(), isWhite)); ui->pauseButton->setIcon(RecolorIcon(ui->pauseButton->icon(), isWhite)); ui->stopButton->setIcon(RecolorIcon(ui->stopButton->icon(), isWhite)); + ui->refreshButton->setIcon(RecolorIcon(ui->refreshButton->icon(), isWhite)); ui->settingsButton->setIcon(RecolorIcon(ui->settingsButton->icon(), isWhite)); ui->controllerButton->setIcon(RecolorIcon(ui->controllerButton->icon(), isWhite)); ui->refreshGameListAct->setIcon(RecolorIcon(ui->refreshGameListAct->icon(), isWhite)); @@ -912,6 +946,10 @@ void MainWindow::CreateRecentGameActions() { QString gamePath = action->text(); AddRecentFiles(gamePath); // Update the list. Core::Emulator emulator; + if (!std::filesystem::exists(gamePath.toUtf8().constData())) { + QMessageBox::critical(nullptr, tr("Run Game"), QString(tr("Eboot.bin file not found"))); + return; + } emulator.Run(gamePath.toUtf8().constData()); }); } @@ -946,4 +984,4 @@ void MainWindow::OnLanguageChanged(const std::string& locale) { Config::setEmulatorLanguage(locale); LoadTranslation(); -} \ No newline at end of file +} diff --git a/src/qt_gui/main_window_themes.cpp b/src/qt_gui/main_window_themes.cpp index c89fa5a009..35e64ef741 100644 --- a/src/qt_gui/main_window_themes.cpp +++ b/src/qt_gui/main_window_themes.cpp @@ -8,13 +8,13 @@ void WindowThemes::SetWindowTheme(Theme theme, QLineEdit* mw_searchbar) { switch (theme) { case Theme::Dark: - mw_searchbar->setStyleSheet("background-color: #1e1e1e; /* Dark background */" - "color: #ffffff; /* White text */" - "border: 1px solid #ffffff; /* White border */" + mw_searchbar->setStyleSheet("background-color: #1e1e1e;" // Dark background + "color: #ffffff;" // White text + "border: 2px solid #ffffff;" // White border "padding: 5px;"); - themePalette.setColor(QPalette::Window, QColor(53, 53, 53)); + themePalette.setColor(QPalette::Window, QColor(50, 50, 50)); themePalette.setColor(QPalette::WindowText, Qt::white); - themePalette.setColor(QPalette::Base, QColor(25, 25, 25)); + themePalette.setColor(QPalette::Base, QColor(20, 20, 20)); themePalette.setColor(QPalette::AlternateBase, QColor(25, 25, 25)); themePalette.setColor(QPalette::AlternateBase, QColor(53, 53, 53)); themePalette.setColor(QPalette::ToolTipBase, Qt::white); @@ -30,8 +30,9 @@ void WindowThemes::SetWindowTheme(Theme theme, QLineEdit* mw_searchbar) { break; case Theme::Light: - mw_searchbar->setStyleSheet("background-color: #ffffff; /* Light gray background */" - "color: #000000; /* Black text */" + mw_searchbar->setStyleSheet("background-color: #ffffff;" // Light gray background + "color: #000000;" // Black text + "border: 2px solid #000000;" // Black border "padding: 5px;"); themePalette.setColor(QPalette::Window, QColor(240, 240, 240)); // Light gray themePalette.setColor(QPalette::WindowText, Qt::black); // Black @@ -49,9 +50,9 @@ void WindowThemes::SetWindowTheme(Theme theme, QLineEdit* mw_searchbar) { break; case Theme::Green: - mw_searchbar->setStyleSheet("background-color: #354535; /* Dark green background */" - "color: #ffffff; /* White text */" - "border: 1px solid #ffffff; /* White border */" + mw_searchbar->setStyleSheet("background-color: #1e1e1e;" // Dark background + "color: #ffffff;" // White text + "border: 2px solid #ffffff;" // White border "padding: 5px;"); themePalette.setColor(QPalette::Window, QColor(53, 69, 53)); // Dark green background themePalette.setColor(QPalette::WindowText, Qt::white); // White text @@ -72,9 +73,9 @@ void WindowThemes::SetWindowTheme(Theme theme, QLineEdit* mw_searchbar) { break; case Theme::Blue: - mw_searchbar->setStyleSheet("background-color: #283c5a; /* Dark blue background */" - "color: #ffffff; /* White text */" - "border: 1px solid #ffffff; /* White border */" + mw_searchbar->setStyleSheet("background-color: #1e1e1e;" // Dark background + "color: #ffffff;" // White text + "border: 2px solid #ffffff;" // White border "padding: 5px;"); themePalette.setColor(QPalette::Window, QColor(40, 60, 90)); // Dark blue background themePalette.setColor(QPalette::WindowText, Qt::white); // White text @@ -95,9 +96,9 @@ void WindowThemes::SetWindowTheme(Theme theme, QLineEdit* mw_searchbar) { break; case Theme::Violet: - mw_searchbar->setStyleSheet("background-color: #643278; /* Violet background */" - "color: #ffffff; /* White text */" - "border: 1px solid #ffffff; /* White border */" + mw_searchbar->setStyleSheet("background-color: #1e1e1e;" // Dark background + "color: #ffffff;" // White text + "border: 2px solid #ffffff;" // White border "padding: 5px;"); themePalette.setColor(QPalette::Window, QColor(100, 50, 120)); // Violet background themePalette.setColor(QPalette::WindowText, Qt::white); // White text diff --git a/src/qt_gui/main_window_ui.h b/src/qt_gui/main_window_ui.h index 498cec735c..6ddc4155e9 100644 --- a/src/qt_gui/main_window_ui.h +++ b/src/qt_gui/main_window_ui.h @@ -7,8 +7,6 @@ #include #include -QT_BEGIN_NAMESPACE - class Ui_MainWindow { public: QAction* bootInstallPkgAct; @@ -40,6 +38,7 @@ class Ui_MainWindow { QPushButton* playButton; QPushButton* pauseButton; QPushButton* stopButton; + QPushButton* refreshButton; QPushButton* settingsButton; QPushButton* controllerButton; @@ -178,6 +177,10 @@ class Ui_MainWindow { stopButton->setFlat(true); stopButton->setIcon(QIcon(":images/stop_icon.png")); stopButton->setIconSize(QSize(40, 40)); + refreshButton = new QPushButton(centralWidget); + refreshButton->setFlat(true); + refreshButton->setIcon(QIcon(":images/refresh_icon.png")); + refreshButton->setIconSize(QSize(32, 32)); settingsButton = new QPushButton(centralWidget); settingsButton->setFlat(true); settingsButton->setIcon(QIcon(":images/settings_icon.png")); @@ -264,8 +267,8 @@ class Ui_MainWindow { menuView->addAction(menuGame_List_Mode->menuAction()); menuView->addAction(menuGame_List_Icons->menuAction()); menuView->addAction(menuThemes->menuAction()); - menuThemes->addAction(setThemeLight); menuThemes->addAction(setThemeDark); + menuThemes->addAction(setThemeLight); menuThemes->addAction(setThemeGreen); menuThemes->addAction(setThemeBlue); menuThemes->addAction(setThemeViolet); @@ -354,6 +357,4 @@ class Ui_MainWindow { namespace Ui { class MainWindow : public Ui_MainWindow {}; -} // namespace Ui - -QT_END_NAMESPACE \ No newline at end of file +} // namespace Ui \ No newline at end of file diff --git a/src/qt_gui/pkg_viewer.cpp b/src/qt_gui/pkg_viewer.cpp index 49005c720a..8f20f6929b 100644 --- a/src/qt_gui/pkg_viewer.cpp +++ b/src/qt_gui/pkg_viewer.cpp @@ -109,13 +109,17 @@ void PKGViewer::ProcessPKGInfo() { path = std::filesystem::path(m_pkg_list[i].toStdWString()); #endif package.Open(path); - psf.open("", package.sfo); - QString title_name = QString::fromStdString(psf.GetString("TITLE")); - QString title_id = QString::fromStdString(psf.GetString("TITLE_ID")); - QString app_type = game_list_util.GetAppType(psf.GetInteger("APP_TYPE")); - QString app_version = QString::fromStdString(psf.GetString("APP_VER")); - QString title_category = QString::fromStdString(psf.GetString("CATEGORY")); - QString pkg_size = game_list_util.FormatSize(package.GetPkgHeader().pkg_size); + psf.Open(package.sfo); + QString title_name = + QString::fromStdString(std::string{psf.GetString("TITLE").value_or("Unknown")}); + QString title_id = + QString::fromStdString(std::string{psf.GetString("TITLE_ID").value_or("Unknown")}); + QString app_type = GameListUtils::GetAppType(psf.GetInteger("APP_TYPE").value_or(0)); + QString app_version = + QString::fromStdString(std::string{psf.GetString("APP_VER").value_or("Unknown")}); + QString title_category = + QString::fromStdString(std::string{psf.GetString("CATEGORY").value_or("Unknown")}); + QString pkg_size = GameListUtils::FormatSize(package.GetPkgHeader().pkg_size); pkg_content_flag = package.GetPkgHeader().pkg_content_flags; QString flagss = ""; for (const auto& flag : package.flagNames) { @@ -126,11 +130,17 @@ void PKGViewer::ProcessPKGInfo() { } } - u32 fw_int = psf.GetInteger("SYSTEM_VER"); - QString fw = QString::number(fw_int, 16); - QString fw_ = fw.length() > 7 ? QString::number(fw_int, 16).left(3).insert(2, '.') + QString fw_ = "Unknown"; + if (const auto fw_int_opt = psf.GetInteger("SYSTEM_VER"); fw_int_opt.has_value()) { + const u32 fw_int = *fw_int_opt; + if (fw_int == 0) { + fw_ = "0.00"; + } else { + QString fw = QString::number(fw_int, 16); + fw_ = fw.length() > 7 ? QString::number(fw_int, 16).left(3).insert(2, '.') : fw.left(3).insert(1, '.'); - fw_ = (fw_int == 0) ? "0.00" : fw_; + } + } char region = package.GetPkgHeader().pkg_content_id[0]; QString pkg_info = ""; if (title_category == "gd" && !flagss.contains("PATCH")) { diff --git a/src/qt_gui/pkg_viewer.h b/src/qt_gui/pkg_viewer.h index 9598328a07..265a03b92d 100644 --- a/src/qt_gui/pkg_viewer.h +++ b/src/qt_gui/pkg_viewer.h @@ -33,7 +33,6 @@ class PKGViewer : public QMainWindow { PKGHeader pkgheader; PKGEntry entry; PSFHeader header; - PSFEntry psfentry; char pkgTitleID[9]; std::vector pkg; u64 pkgSize = 0; diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index d572915c61..720c68b78e 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -4,6 +4,8 @@ #include #include +#include "common/logging/backend.h" +#include "common/logging/filter.h" #include "main_window.h" #include "settings_dialog.h" #include "ui_settings_dialog.h" @@ -78,11 +80,20 @@ SettingsDialog::SettingsDialog(std::span physical_devices, QWidge Config::setDefaultValues(); LoadValuesFromConfig(); } + if (Common::Log::IsActive()) { + Common::Log::Filter filter; + filter.ParseFilterString(Config::getLogFilter()); + Common::Log::SetGlobalFilter(filter); + } }); - connect(ui->tabWidgetSettings, &QTabWidget::currentChanged, this, [this]() { - ui->buttonBox->button(QDialogButtonBox::StandardButton::Close)->setFocus(); - }); + ui->buttonBox->button(QDialogButtonBox::Save)->setText(tr("Save")); + ui->buttonBox->button(QDialogButtonBox::Apply)->setText(tr("Apply")); + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setText(tr("Restore Defaults")); + ui->buttonBox->button(QDialogButtonBox::Close)->setText(tr("Close")); + + connect(ui->tabWidgetSettings, &QTabWidget::currentChanged, this, + [this]() { ui->buttonBox->button(QDialogButtonBox::Close)->setFocus(); }); // GENERAL TAB { diff --git a/src/qt_gui/translations/ar.ts b/src/qt_gui/translations/ar.ts new file mode 100644 index 0000000000..12b1e7ba6a --- /dev/null +++ b/src/qt_gui/translations/ar.ts @@ -0,0 +1,991 @@ + + + + + + AboutDialog + + + About shadPS4 + حول shadPS4 + + + + shadPS4 + shadPS4 + + + + shadPS4 is an experimental open-source emulator for the PlayStation 4. + shadPS4 هو محاكي تجريبي مفتوح المصدر لجهاز PlayStation 4. + + + + This software should not be used to play games you have not legally obtained. + يجب عدم استخدام هذا البرنامج لتشغيل الألعاب التي لم تحصل عليها بشكل قانوني. + + + + ElfViewer + + + Open Folder + فتح المجلد + + + + GameInfoClass + + + Loading game list, please wait :3 + جارٍ تحميل قائمة الألعاب، يرجى الانتظار :3 + + + + Cancel + إلغاء + + + + Loading... + ...جارٍ التحميل + + + + GameInstallDialog + + + shadPS4 - Choose directory + shadPS4 - اختر المجلد + + + + Directory to install games + مجلد تثبيت الألعاب + + + + Browse + تصفح + + + + Error + خطأ + + + + The value for location to install games is not valid. + قيمة موقع تثبيت الألعاب غير صالحة. + + + + GuiContextMenus + + + Create Shortcut + إنشاء اختصار + + + + Open Game Folder + فتح مجلد اللعبة + + + + Cheats / Patches + الغش / التصحيحات + + + + SFO Viewer + عارض SFO + + + + Trophy Viewer + عارض الجوائز + + + + Copy info + نسخ المعلومات + + + + Copy Name + نسخ الاسم + + + + Copy Serial + نسخ الرقم التسلسلي + + + + Copy All + نسخ الكل + + + + Shortcut creation + إنشاء اختصار + + + + Shortcut created successfully!\n %1 + تم إنشاء الاختصار بنجاح!\n %1 + + + + Error + خطأ + + + + Error creating shortcut!\n %1 + !\n %1 خطأ في إنشاء الاختصار + + + + Install PKG + PKG تثبيت + + + + MainWindow + + + Open/Add Elf Folder + Elf فتح/إضافة مجلد + + + + Install Packages (PKG) + (PKG) تثبيت الحزم + + + + Boot Game + تشغيل اللعبة + + + + About shadPS4 + shadPS4 حول + + + + Configure... + ...تكوين + + + + Install application from a .pkg file + .pkg تثبيت التطبيق من ملف + + + + Recent Games + الألعاب الأخيرة + + + + Exit + خروج + + + + Exit shadPS4 + الخروج من shadPS4 + + + + Exit the application. + الخروج من التطبيق. + + + + Show Game List + إظهار قائمة الألعاب + + + + Game List Refresh + تحديث قائمة الألعاب + + + + Tiny + صغير جدًا + + + + Small + صغير + + + + Medium + متوسط + + + + Large + كبير + + + + List View + عرض القائمة + + + + Grid View + عرض الشبكة + + + + Elf Viewer + عارض Elf + + + + Game Install Directory + دليل تثبيت اللعبة + + + + Download Cheats/Patches + تنزيل الغش/التصحيحات + + + + Dump Game List + تفريغ قائمة الألعاب + + + + PKG Viewer + عارض PKG + + + + Search... + ...بحث + + + + File + ملف + + + + View + عرض + + + + Game List Icons + أيقونات قائمة الألعاب + + + + Game List Mode + وضع قائمة الألعاب + + + + Settings + الإعدادات + + + + Utils + الأدوات + + + + Themes + السمات + + + + About + حول + + + + Dark + داكن + + + + Light + فاتح + + + + Green + أخضر + + + + Blue + أزرق + + + + Violet + بنفسجي + + + + toolBar + شريط الأدوات + + + + PKGViewer + + + Open Folder + فتح المجلد + + + + TrophyViewer + + + Trophy Viewer + عارض الجوائز + + + + SettingsDialog + + + Settings + الإعدادات + + + + General + عام + + + + System + النظام + + + + Console Language + لغة وحدة التحكم + + + + Emulator Language + لغة المحاكي + + + + Emulator + المحاكي + + + + Enable Fullscreen + تمكين ملء الشاشة + + + + Show Splash + إظهار شاشة البداية + + + + Is PS4 Pro + PS4 Pro هل هو + + + + Username + اسم المستخدم + + + + Logger + المسجل + + + + Log Type + نوع السجل + + + + Log Filter + مرشح السجل + + + + Graphics + الرسومات + + + + Graphics Device + جهاز الرسومات + + + + Width + العرض + + + + Height + الارتفاع + + + + Vblank Divider + Vblank مقسم + + + + Advanced + متقدم + + + + Enable Shaders Dumping + تمكين تفريغ الشيدرات + + + + Enable NULL GPU + تمكين وحدة معالجة الرسومات الفارغة + + + + Enable PM4 Dumping + PM4 تمكين تفريغ + + + + Debug + تصحيح الأخطاء + + + + Enable Debug Dumping + تمكين تفريغ التصحيح + + + + Enable Vulkan Validation Layers + Vulkan تمكين طبقات التحقق من + + + + Enable Vulkan Synchronization Validation + Vulkan تمكين التحقق من تزامن + + + + Enable RenderDoc Debugging + RenderDoc تمكين تصحيح أخطاء + + + + MainWindow + + + Game List + ققائمة الألعاب + + + + * Unsupported Vulkan Version + * إصدار Vulkan غير مدعوم + + + + Download Cheats For All Installed Games + تنزيل الغش لجميع الألعاب المثبتة + + + + Download Patches For All Games + تنزيل التصحيحات لجميع الألعاب + + + + Download Complete + اكتمل التنزيل + + + + You have downloaded cheats for all the games you have installed. + لقد قمت بتنزيل الغش لجميع الألعاب التي قمت بتثبيتها. + + + + Patches Downloaded Successfully! + !تم تنزيل التصحيحات بنجاح + + + + All Patches available for all games have been downloaded. + .تم تنزيل جميع التصحيحات المتاحة لجميع الألعاب + + + + Games: + :الألعاب + + + + PKG File (*.PKG) + PKG (*.PKG) ملف + + + + ELF files (*.bin *.elf *.oelf) + ELF (*.bin *.elf *.oelf) ملفات + + + + Game Boot + تشغيل اللعبة + + + + Only one file can be selected! + !يمكن تحديد ملف واحد فقط + + + + PKG Extraction + PKG استخراج + + + + Patch detected! + تم اكتشاف تصحيح! + + + + PKG and Game versions match: + :واللعبة تتطابق إصدارات PKG + + + + Would you like to overwrite? + هل ترغب في الكتابة فوق الملف الموجود؟ + + + + PKG Version %1 is older than installed version: + :أقدم من الإصدار المثبت PKG Version %1 + + + + Game is installed: + :اللعبة مثبتة + + + + Would you like to install Patch: + :هل ترغب في تثبيت التصحيح + + + + DLC Installation + تثبيت المحتوى القابل للتنزيل + + + + Would you like to install DLC: %1? + هل ترغب في تثبيت المحتوى القابل للتنزيل: 1%؟ + + + + DLC already installed: + :المحتوى القابل للتنزيل مثبت بالفعل + + + + Game already installed + اللعبة مثبتة بالفعل + + + + PKG is a patch, please install the game first! + !PKG هو تصحيح، يرجى تثبيت اللعبة أولاً + + + + PKG ERROR + PKG خطأ في + + + + Extracting PKG %1/%2 + PKG %1/%2 جاري استخراج + + + + Extraction Finished + اكتمل الاستخراج + + + + Game successfully installed at %1 + تم تثبيت اللعبة بنجاح في %1 + + + + File doesn't appear to be a valid PKG file + يبدو أن الملف ليس ملف PKG صالحًا + + + + CheatsPatches + + + Cheats / Patches + الغش / التصحيحات + + + + defaultTextEdit_MSG + الغش والتصحيحات هي ميزات تجريبية. + استخدمها بحذر. + + قم بتنزيل الغش بشكل فردي عن طريق اختيار المستودع والنقر على زر التنزيل. + في علامة تبويب التصحيحات، يمكنك تنزيل جميع التصحيحات دفعة واحدة، واختيار ما تريد استخدامه، وحفظ اختياراتك. + + نظرًا لأننا لا نقوم بتطوير الغش/التصحيحات، + يرجى الإبلاغ عن أي مشاكل إلى مؤلف الغش. + + هل قمت بإنشاء غش جديد؟ قم بزيارة: + https://github.com/shadps4-emu/ps4_cheats + + + + No Image Available + لا تتوفر صورة + + + + Serial: + الرقم التسلسلي: + + + + Version: + الإصدار: + + + + Size: + الحجم: + + + + Select Cheat File: + اختر ملف الغش: + + + + Repository: + المستودع: + + + + Download Cheats + تنزيل الغش + + + + Delete File + حذف الملف + + + + No files selected. + لم يتم اختيار أي ملفات. + + + + You can delete the cheats you don't want after downloading them. + يمكنك حذف الغش الذي لا تريده بعد تنزيله. + + + + Do you want to delete the selected file?\n%1 + هل تريد حذف الملف المحدد؟ + %1 + + + + Select Patch File: + اختر ملف التصحيح: + + + + Download Patches + تنزيل التصحيحات + + + + Save + حفظ + + + + Cheats + الغش + + + + Patches + التصحيحات + + + + Error + خطأ + + + + No patch selected. + لم يتم اختيار أي تصحيح. + + + + Unable to open files.json for reading. + تعذر فتح files.json للقراءة. + + + + No patch file found for the current serial. + لم يتم العثور على ملف تصحيح للرقم التسلسلي الحالي. + + + + Unable to open the file for reading. + تعذر فتح الملف للقراءة. + + + + Unable to open the file for writing. + تعذر فتح الملف للكتابة. + + + + Failed to parse XML: + :فشل في تحليل XML + + + + Success + نجاح + + + + Options saved successfully. + تم حفظ الخيارات بنجاح. + + + + Invalid Source + مصدر غير صالح + + + + The selected source is invalid. + المصدر المحدد غير صالح. + + + + File Exists + الملف موجود + + + + File already exists. Do you want to replace it? + الملف موجود بالفعل. هل تريد استبداله؟ + + + + Failed to save file: + :فشل في حفظ الملف + + + + Failed to download file: + :فشل في تنزيل الملف + + + + Cheats Not Found + لم يتم العثور على الغش + + + + CheatsNotFound_MSG + لم يتم العثور على غش لهذه اللعبة في هذا الإصدار من المستودع المحدد. حاول استخدام مستودع آخر أو إصدار آخر من اللعبة. + + + + Cheats Downloaded Successfully + تم تنزيل الغش بنجاح + + + + CheatsDownloadedSuccessfully_MSG + لقد نجحت في تنزيل الغش لهذا الإصدار من اللعبة من المستودع المحدد. يمكنك محاولة التنزيل من مستودع آخر. إذا كان متاحًا، يمكنك اختياره عن طريق تحديد الملف من القائمة. + + + + Failed to save: + :فشل في الحفظ + + + + Failed to download: + :فشل في التنزيل + + + + Download Complete + اكتمل التنزيل + + + + DownloadComplete_MSG + تم تنزيل التصحيحات بنجاح! تم تنزيل جميع التصحيحات لجميع الألعاب، ولا داعي لتنزيلها بشكل فردي لكل لعبة كما هو الحال مع الغش. إذا لم يظهر التحديث، قد يكون السبب أنه غير متوفر للإصدار وسيريال اللعبة المحدد. قد تحتاج إلى تحديث اللعبة. + + + + Failed to parse JSON data from HTML. + فشل في تحليل بيانات JSON من HTML. + + + + Failed to retrieve HTML page. + .HTML فشل في استرجاع صفحة + + + + Failed to open file: + :فشل في فتح الملف + + + + XML ERROR: + :خطأ في XML + + + + Failed to open files.json for writing + فشل في فتح files.json للكتابة + + + + Author: + :المؤلف + + + + Directory does not exist: + :المجلد غير موجود + + + + Failed to open files.json for reading. + فشل في فتح files.json للقراءة. + + + + Name: + :الاسم + + + + Can't apply cheats before the game is started + لا يمكن تطبيق الغش قبل بدء اللعبة. + + + + SettingsDialog + + + Save + حفظ + + + + Apply + تطبيق + + + + Restore Defaults + استعادة الإعدادات الافتراضية + + + + Close + إغلاق + + + + GameListFrame + + + Icon + أيقونة + + + + Name + اسم + + + + Serial + سيريال + + + + Region + منطقة + + + + Firmware + البرمجيات الثابتة + + + + Size + حجم + + + + Version + إصدار + + + + Path + مسار + + + diff --git a/src/qt_gui/translations/da_DK.ts b/src/qt_gui/translations/da_DK.ts index c67d29b1d3..bb405ec0ae 100644 --- a/src/qt_gui/translations/da_DK.ts +++ b/src/qt_gui/translations/da_DK.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Spiloversigt + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patcher hentet med succes! Alle patches til alle spil er blevet hentet, der er ikke behov for at hente dem individuelt for hvert spil, som det sker med snyd. + Patcher hentet med succes! Alle patches til alle spil er blevet hentet, der er ikke behov for at hente dem individuelt for hvert spil, som det sker med snyd. Hvis opdateringen ikke vises, kan det være, at den ikke findes for den specifikke serie og version af spillet. Det kan være nødvendigt at opdatere spillet. @@ -898,5 +903,76 @@ Name: Navn: + + + Can't apply cheats before the game is started + Kan ikke anvende snyd før spillet er startet. + + + SettingsDialog + + + Save + Gem + + + + Apply + Anvend + + + + Restore Defaults + Gendan standardindstillinger + + + + Close + Luk + + + + GameListFrame + + + Icon + Ikon + + + + Name + Navn + + + + Serial + Seriel + + + + Region + Region + + + + Firmware + Firmware + + + + Size + Størrelse + + + + Version + Version + + + + Path + Sti + + \ No newline at end of file diff --git a/src/qt_gui/translations/de.ts b/src/qt_gui/translations/de.ts index c833f2e28f..1482686cec 100644 --- a/src/qt_gui/translations/de.ts +++ b/src/qt_gui/translations/de.ts @@ -6,7 +6,7 @@ About shadPS4 - About shadPS4 + Über shadPS4 @@ -16,12 +16,12 @@ shadPS4 is an experimental open-source emulator for the PlayStation 4. - shadPS4 is an experimental open-source emulator for the PlayStation 4. + shadPS4 ist ein experimenteller Open-Source-Emulator für die Playstation 4. This software should not be used to play games you have not legally obtained. - This software should not be used to play games you have not legally obtained. + Diese Software soll nicht dazu benutzt werden illegal kopierte Spiele zu spielen. @@ -29,7 +29,7 @@ Open Folder - Open Folder + Ordner öffnen @@ -37,17 +37,17 @@ Loading game list, please wait :3 - Loading game list, please wait :3 + Lade Spielliste, bitte warten :3 Cancel - Cancel + Abbrechen Loading... - Loading... + Lade... @@ -55,27 +55,27 @@ shadPS4 - Choose directory - shadPS4 - Choose directory + shadPS4 - Wähle Ordner Directory to install games - Directory to install games + Installationsverzeichnis für Spiele Browse - Browse + Durchsuchen Error - Error + Fehler The value for location to install games is not valid. - The value for location to install games is not valid. + Der ausgewählte Ordner ist nicht gültig. @@ -83,12 +83,12 @@ Create Shortcut - Create Shortcut + Verknüpfung erstellen Open Game Folder - Open Game Folder + Spieleordner öffnen @@ -98,57 +98,57 @@ SFO Viewer - SFO Viewer + SFO anzeigen Trophy Viewer - Trophy Viewer + Trophäen anzeigen Copy info - Copy info + Infos kopieren Copy Name - Copy Name + Namen kopieren Copy Serial - Copy Serial + Seriennummer kopieren Copy All - Copy All + Alles kopieren Shortcut creation - Shortcut creation + Verknüpfungserstellung Shortcut created successfully!\n %1 - Shortcut created successfully!\n %1 + Verknüpfung erfolgreich erstellt!\n %1 Error - Error + Fehler Error creating shortcut!\n %1 - Error creating shortcut!\n %1 + Fehler beim Erstellen der Verknüpfung!\n %1 Install PKG - Install PKG + PKG installieren @@ -156,102 +156,102 @@ Open/Add Elf Folder - Open/Add Elf Folder + Elf-Ordner öffnen/hinzufügen Install Packages (PKG) - Install Packages (PKG) + Pakete installieren (PKG) Boot Game - Boot Game + Spiel starten About shadPS4 - About shadPS4 + Über shadPS4 Configure... - Configure... + Konfigurieren... Install application from a .pkg file - Install application from a .pkg file + Installiere Anwendung aus .pkg-Datei Recent Games - Recent Games + Zuletzt gespielt Exit - Exit + Beenden Exit shadPS4 - Exit shadPS4 + shadPS4 beenden Exit the application. - Exit the application. + Die Anwendung beenden. Show Game List - Show Game List + Spielliste anzeigen Game List Refresh - Game List Refresh + Spielliste aktualisieren Tiny - Tiny + Winzig Small - Small + Klein Medium - Medium + Mittel Large - Large + Groß List View - List View + Listenansicht Grid View - Grid View + Gitteransicht Elf Viewer - Elf Viewer + Elf-Ansicht Game Install Directory - Game Install Directory + Installationsverzeichnis für Spiele @@ -261,27 +261,27 @@ Dump Game List - Dump Game List + Spielliste ausgeben PKG Viewer - PKG Viewer + PKG-Ansicht Search... - Search... + Suchen... File - File + Datei View - View + Ansicht @@ -291,52 +291,52 @@ Game List Mode - Game List Mode + Spiellisten-Symoble Settings - Settings + Einstellungen Utils - Utils + Werkzeuge Themes - Themes + Stile About - About + Über Dark - Dark + Dunkel Light - Light + Hell Green - Green + Grün Blue - Blue + Blau Violet - Violet + Violett @@ -349,7 +349,7 @@ Open Folder - Open Folder + Ordner öffnen @@ -357,7 +357,7 @@ Trophy Viewer - Trophy Viewer + Trophäenansicht @@ -365,12 +365,12 @@ Settings - Settings + Einstellungen General - General + Allgemein @@ -380,12 +380,12 @@ Console Language - Console Language + Konsolensprache Emulator Language - Emulator Language + Emulatorsprache @@ -395,22 +395,22 @@ Enable Fullscreen - Enable Fullscreen + Vollbild aktivieren Show Splash - Show Splash + Startbildschirm anzeigen Is PS4 Pro - Is PS4 Pro + Ist PS4 Pro Username - Username + Benutzername @@ -420,57 +420,57 @@ Log Type - Log Type + Logtyp Log Filter - Log Filter + Log-Filter Graphics - Graphics + Grafik Graphics Device - Graphics Device + Grafikgerät Width - Width + Breite Height - Height + Höhe Vblank Divider - Vblank Divider + Vblank-Teiler Advanced - Advanced + Erweitert Enable Shaders Dumping - Enable Shaders Dumping + Shader-Dumping aktivieren Enable NULL GPU - Enable NULL GPU + NULL GPU aktivieren Enable PM4 Dumping - Enable PM4 Dumping + PM4-Dumping aktivieren @@ -480,26 +480,31 @@ Enable Debug Dumping - Enable Debug Dumping + Debug-Dumping aktivieren Enable Vulkan Validation Layers - Enable Vulkan Validation Layers + Vulkan Validations-Ebenen aktivieren Enable Vulkan Synchronization Validation - Enable Vulkan Synchronization Validation + Vulkan Synchronisations-Validierung aktivieren Enable RenderDoc Debugging - Enable RenderDoc Debugging + RenderDoc-Debugging aktivieren MainWindow + + + Game List + Spieleliste + * Unsupported Vulkan Version @@ -578,7 +583,7 @@ Would you like to overwrite? - Würden Sie gerne überschreiben? + Willst du überschreiben? @@ -593,7 +598,7 @@ Would you like to install Patch: - Möchten Sie den Patch installieren: + Willst du den Patch installieren: @@ -603,7 +608,7 @@ Would you like to install DLC: %1? - Würden Sie gerne DLC installieren: %1? + Willst du den DLC installieren: %1? @@ -623,7 +628,7 @@ PKG ERROR - PKG-ERROR + PKG-FEHLER @@ -656,7 +661,7 @@ defaultTextEdit_MSG - Cheats/Patches sind experimentell.\nVerwenden Sie sie mit Vorsicht.\n\nLaden Sie Cheats einzeln herunter, indem Sie das Repository auswählen und auf die Download-Schaltfläche klicken.\nAuf der Registerkarte Patches können Sie alle Patches auf einmal herunterladen, auswählen, welche Sie verwenden möchten, und die Auswahl speichern.\n\nDa wir die Cheats/Patches nicht entwickeln,\nbitte melden Sie Probleme an den Cheat-Autor.\n\nHaben Sie einen neuen Cheat erstellt? Besuchen Sie:\nhttps://github.com/shadps4-emu/ps4_cheats + Cheats/Patches sind experimentell.\nVerwende sie mit Vorsicht.\n\nLade Cheats einzeln herunter, indem du das Repository auswählst und auf die Download-Schaltfläche klickst.\nAuf der Registerkarte Patches kannst du alle Patches auf einmal herunterladen, auswählen, welche du verwenden möchtest, und die Auswahl speichern.\n\nDa wir die Cheats/Patches nicht entwickeln,\nbitte melde Probleme an den Cheat-Autor.\n\nHast du einen neuen Cheat erstellt? Besuche:\nhttps://github.com/shadps4-emu/ps4_cheats @@ -706,12 +711,12 @@ You can delete the cheats you don't want after downloading them. - Sie können die Cheats, die Sie nicht möchten, nach dem Herunterladen löschen. + Du kannst die Cheats, die du nicht möchtest, nach dem Herunterladen löschen. Do you want to delete the selected file?\n%1 - Wollen Sie die ausgewählte Datei löschen?\n%1 + Willst du die ausgewählte Datei löschen?\n%1 @@ -801,7 +806,7 @@ File already exists. Do you want to replace it? - Datei existiert bereits. Möchten Sie sie ersetzen? + Datei existiert bereits. Möchtest du sie ersetzen? @@ -821,7 +826,7 @@ CheatsNotFound_MSG - Keine Cheats für dieses Spiel in dieser Version des gewählten Repositories gefunden. Versuchen Sie es mit einem anderen Repository oder einer anderen Version des Spiels. + Keine Cheats für dieses Spiel in dieser Version des gewählten Repositories gefunden. Versuche es mit einem anderen Repository oder einer anderen Version des Spiels. @@ -831,7 +836,7 @@ CheatsDownloadedSuccessfully_MSG - Sie haben erfolgreich Cheats für diese Version des Spiels aus dem gewählten Repository heruntergeladen. Sie können versuchen, von einem anderen Repository herunterzuladen. Wenn verfügbar, können Sie es auswählen, indem Sie die Datei aus der Liste auswählen. + Du hast erfolgreich Cheats für diese Version des Spiels aus dem gewählten Repository heruntergeladen. Du kannst auch versuchen, Cheats von einem anderen Repository herunterzuladen. Wenn verfügbar, kannst du sie auswählen, indem du die Datei aus der Liste auswählst. @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patches erfolgreich heruntergeladen! Alle Patches für alle Spiele wurden heruntergeladen, es ist nicht notwendig, sie einzeln für jedes Spiel herunterzuladen, wie es bei Cheats der Fall ist. + Patches erfolgreich heruntergeladen! Alle Patches für alle Spiele wurden heruntergeladen, es ist nicht notwendig, sie einzeln für jedes Spiel herunterzuladen, wie es bei Cheats der Fall ist. Wenn der Patch nicht angezeigt wird, könnte es sein, dass er für die spezifische Seriennummer und Version des Spiels nicht existiert. Möglicherweise müssen Sie das Spiel aktualisieren. @@ -898,5 +903,76 @@ Name: Name: + + + Can't apply cheats before the game is started + Kann keine Cheats anwenden, bevor das Spiel gestartet ist. + + + SettingsDialog + + + Save + Speichern + + + + Apply + Übernehmen + + + + Restore Defaults + Werkseinstellungen wiederherstellen + + + + Close + Schließen + + + + GameListFrame + + + Icon + Symbol + + + + Name + Name + + + + Serial + Seriennummer + + + + Region + Region + + + + Firmware + Firmware + + + + Size + Größe + + + + Version + Version + + + + Path + Pfad + + \ No newline at end of file diff --git a/src/qt_gui/translations/el.ts b/src/qt_gui/translations/el.ts index ef831fb09d..4a3aa54ff6 100644 --- a/src/qt_gui/translations/el.ts +++ b/src/qt_gui/translations/el.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Λίστα παιχνιδιών + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Τα Patches κατεβάστηκαν επιτυχώς! Όλα τα Patches για όλα τα παιχνίδια έχουν κατέβει, δεν είναι απαραίτητο να τα κατεβάσετε ένα-ένα για κάθε παιχνίδι, όπως με τα Cheats. + Τα Patches κατεβάστηκαν επιτυχώς! Όλα τα Patches για όλα τα παιχνίδια έχουν κατέβει, δεν είναι απαραίτητο να τα κατεβάσετε ένα-ένα για κάθε παιχνίδι, όπως με τα Cheats. Εάν η ενημέρωση δεν εμφανίζεται, μπορεί να μην υπάρχει για τον συγκεκριμένο σειριακό αριθμό και έκδοση του παιχνιδιού. Μπορεί να χρειαστεί να ενημερώσετε το παιχνίδι. @@ -898,5 +903,76 @@ Name: Όνομα: + + + Can't apply cheats before the game is started + Δεν μπορείτε να εφαρμόσετε cheats πριν ξεκινήσει το παιχνίδι. + + + SettingsDialog + + + Save + Αποθήκευση + + + + Apply + Εφαρμογή + + + + Restore Defaults + Επαναφορά Προεπιλογών + + + + Close + Κλείσιμο + + + + GameListFrame + + + Icon + Εικονίδιο + + + + Name + Όνομα + + + + Serial + Σειριακός αριθμός + + + + Region + Περιοχή + + + + Firmware + Λογισμικό + + + + Size + Μέγεθος + + + + Version + Έκδοση + + + + Path + Διαδρομή + + \ No newline at end of file diff --git a/src/qt_gui/translations/en.ts b/src/qt_gui/translations/en.ts index b3c3b699be..9696610bca 100644 --- a/src/qt_gui/translations/en.ts +++ b/src/qt_gui/translations/en.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Game List + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patches Downloaded Successfully! All Patches available for all games have been downloaded, there is no need to download them individually for each game as happens in Cheats. + Patches Downloaded Successfully! All Patches available for all games have been downloaded, there is no need to download them individually for each game as happens in Cheats. If the patch does not appear, it may be that it does not exist for the specific serial and version of the game. It may be necessary to update the game. @@ -898,5 +903,76 @@ Name: Name: - + + + Can't apply cheats before the game is started + Can't apply cheats before the game is started. + + + + SettingsDialog + + + Save + Save + + + + Apply + Apply + + + + Restore Defaults + Restore Defaults + + + + Close + Close + + + + GameListFrame + + + Icon + Icon + + + + Name + Name + + + + Serial + Serial + + + + Region + Region + + + + Firmware + Firmware + + + + Size + Size + + + + Version + Version + + + + Path + Path + + \ No newline at end of file diff --git a/src/qt_gui/translations/es_ES.ts b/src/qt_gui/translations/es_ES.ts index c34dc3d446..8690b2e883 100644 --- a/src/qt_gui/translations/es_ES.ts +++ b/src/qt_gui/translations/es_ES.ts @@ -21,7 +21,7 @@ This software should not be used to play games you have not legally obtained. - Este software no debe utilizarse para jugar juegos que no hayas obtenido legalmente. + Este software no debe utilizarse para jugar juegos que hayas obtenido ilegalmente. @@ -118,7 +118,7 @@ Copy Serial - Copiar serial + Copiar número de serie @@ -296,7 +296,7 @@ Settings - Configuraciones + Configuración @@ -341,7 +341,7 @@ toolBar - barra de herramientas + Barra de herramientas @@ -365,7 +365,7 @@ Settings - Configuraciones + Configuración @@ -500,6 +500,11 @@ MainWindow + + + Game List + Lista de juegos + * Unsupported Vulkan Version @@ -533,7 +538,7 @@ All Patches available for all games have been downloaded. - Todos los parches disponibles para todos los juegos han sido descargados. + Todos los parches disponibles han sido descargados para todos los juegos. @@ -643,7 +648,7 @@ File doesn't appear to be a valid PKG file - El archivo no parece ser un archivo PKG válido + El archivo parece no ser un archivo PKG válido @@ -666,7 +671,7 @@ Serial: - Serie: + Número de serie: @@ -706,7 +711,7 @@ You can delete the cheats you don't want after downloading them. - Puedes eliminar los trucos que no quieras después de descargarlos. + Puedes eliminar los trucos que no quieras una vez descargados. @@ -736,7 +741,7 @@ Patches - Parche + Parches @@ -756,7 +761,7 @@ No patch file found for the current serial. - No se encontró ningún archivo de parche para la serie actual. + No se encontró ningún archivo de parche para el número de serie actual. @@ -851,7 +856,7 @@ DownloadComplete_MSG - ¡Parches descargados exitosamente! Todos los parches disponibles para todos los juegos han sido descargados, no es necesario descargarlos individualmente para cada juego como ocurre con los trucos. + ¡Parches descargados exitosamente! Todos los parches disponibles para todos los juegos han sido descargados, no es necesario descargarlos individualmente para cada juego como ocurre con los trucos. Si el parche no aparece, puede ser que no exista para el número de serie y versión específicos del juego. Puede ser necesario actualizar el juego. @@ -898,5 +903,76 @@ Name: Nombre: + + + Can't apply cheats before the game is started + No se pueden aplicar trucos antes de que se inicie el juego. + + + + SettingsDialog + + + Save + Guardar + + + + Apply + Aplicar + + + + Restore Defaults + Restaurar Valores Predeterminados + + + + Close + Cerrar + + + + GameListFrame + + + Icon + Icono + + + + Name + Nombre + + + + Serial + Numero de serie + + + + Region + Región + + + + Firmware + Firmware + + + + Size + Tamaño + + + + Version + Versión + + + + Path + Ruta + \ No newline at end of file diff --git a/src/qt_gui/translations/fa_IR.ts b/src/qt_gui/translations/fa_IR.ts new file mode 100644 index 0000000000..0896530696 --- /dev/null +++ b/src/qt_gui/translations/fa_IR.ts @@ -0,0 +1,978 @@ + + + + AboutDialog + + + About shadPS4 + درباره ShadPS4 + + + + shadPS4 + ShadPS4 + + + + shadPS4 is an experimental open-source emulator for the PlayStation 4. + یک شبیه ساز متن باز برای پلی استیشن 4 است. + + + + This software should not be used to play games you have not legally obtained. + این برنامه نباید برای بازی هایی که شما به صورت غیرقانونی به دست آوردید استفاده شود. + + + + ElfViewer + + + Open Folder + فولدر را بازکن + + + + GameInfoClass + + + Loading game list, please wait :3 + درحال بارگیری لیست بازی ها,لطفا کمی صبرکنید :3 + + + + Cancel + لغو + + + + Loading... + ...درحال بارگیری + + + + GameInstallDialog + + + shadPS4 - Choose directory + ShadPS4 - انتخاب محل نصب بازی + + + + Directory to install games + محل نصب بازی ها + + + + Browse + انتخاب دستی + + + + Error + ارور + + + + The value for location to install games is not valid. + .مکان داده شده برای نصب بازی درست نمی باشد + + + + GuiContextMenus + + + Create Shortcut + ساخت شورتکات + + + + Open Game Folder + بازکردن محل نصب بازی + + + + Cheats / Patches + چیت/پچ ها + + + + SFO Viewer + SFO مشاهده + + + + Trophy Viewer + مشاهده تروفی ها + + + + Copy info + کپی کردن اطلاعات + + + + Copy Name + کپی کردن نام + + + + Copy Serial + کپی کردن سریال + + + + Copy All + کپی کردن تمامی مقادیر + + + + Shortcut creation + سازنده شورتکات + + + + Shortcut created successfully!\n %1 + شورتکات با موفقیت ساخته شد! \n %1 + + + + Error + ارور + + + + Error creating shortcut!\n %1 + مشکلی در هنگام ساخت شورتکات بوجود آمد!\n %1 + + + + Install PKG + نصب PKG + + + + MainWindow + + + Open/Add Elf Folder + ELF بازکردن/ساختن پوشه + + + + Install Packages (PKG) + نصب بسته (PKG) + + + + Boot Game + اجرای بازی + + + + About shadPS4 + ShadPS4 درباره + + + + Configure... + ...تنظیمات + + + + Install application from a .pkg file + .PKG نصب بازی از فایل + + + + Recent Games + بازی های اخیر + + + + Exit + خروج + + + + Exit shadPS4 + ShadPS4 بستن + + + + Exit the application. + بستن برنامه + + + + Show Game List + نشان دادن بازی ها + + + + Game List Refresh + رفرش لیست بازی ها + + + + Tiny + کوچک ترین + + + + Small + کوچک + + + + Medium + متوسط + + + + Large + بزرگ + + + + List View + لیستی + + + + Grid View + شبکه ای (چهارخونه) + + + + Elf Viewer + Elf Viewer + + + + Game Install Directory + محل نصب بازی + + + + Download Cheats/Patches + دانلود چیت/پچ + + + + Dump Game List + استخراج لیست بازی ها + + + + PKG Viewer + PKG مشاهده گر + + + + Search... + جست و جو... + + + + File + فایل + + + + View + شخصی سازی + + + + Game List Icons + آیکون ها + + + + Game List Mode + حالت نمایش لیست بازی ها + + + + Settings + تنظیمات + + + + Utils + ابزارها + + + + Themes + تم ها + + + + About + درباره ما + + + + Dark + تیره + + + + Light + روشن + + + + Green + سبز + + + + Blue + آبی + + + + Violet + بنفش + + + + toolBar + نوار ابزار + + + + PKGViewer + + + Open Folder + بازکردن پوشه + + + + TrophyViewer + + + Trophy Viewer + تروفی ها + + + + SettingsDialog + + + Settings + تنظیمات + + + + General + عمومی + + + + System + سیستم + + + + Console Language + زبان کنسول + + + + Emulator Language + زبان شبیه ساز + + + + Emulator + شبیه ساز + + + + Enable Fullscreen + تمام صفحه + + + + Show Splash + Splash نمایش + + + + Is PS4 Pro + PS4 Pro حالت + + + + Username + نام کاربری + + + + Logger + Logger + + + + Log Type + Log نوع + + + + Log Filter + Log فیلتر + + + + Graphics + گرافیک + + + + Graphics Device + کارت گرافیک مورداستفاده + + + + Width + عرض + + + + Height + طول + + + + Vblank Divider + Vblank Divider + + + + Advanced + ...بیشتر + + + + Enable Shaders Dumping + Shaders Dumping فعال کردن + + + + Enable NULL GPU + NULL GPU فعال کردن + + + + Enable PM4 Dumping + PM4 Dumping فعال کردن + + + + Debug + Debug + + + + Enable Debug Dumping + Debug Dumping + + + + Enable Vulkan Validation Layers + Vulkan Validation Layers + + + + Enable Vulkan Synchronization Validation + Vulkan Synchronization Validation + + + + Enable RenderDoc Debugging + RenderDoc Debugging + + + + MainWindow + + + Game List + لیست بازی + + + + * Unsupported Vulkan Version + شما پشتیبانی نمیشود Vulkan ورژن* + + + + Download Cheats For All Installed Games + دانلود چیت برای همه بازی ها + + + + Download Patches For All Games + دانلود پچ برای همه بازی ها + + + + Download Complete + دانلود کامل شد✅ + + + + You have downloaded cheats for all the games you have installed. + چیت برای همه بازی های شما دانلودشد✅ + + + + Patches Downloaded Successfully! + پچ ها با موفقیت دانلود شد✅ + + + + All Patches available for all games have been downloaded. + ✅تمام پچ های موجود برای همه بازی های شما دانلود شد + + + + Games: + بازی ها: + + + + PKG File (*.PKG) + PKG فایل (*.PKG) + + + + ELF files (*.bin *.elf *.oelf) + ELF فایل های (*.bin *.elf *.oelf) + + + + Game Boot + اجرای بازی + + + + Only one file can be selected! + فقط یک فایل انتخاب کنید! + + + + PKG Extraction + PKG استخراج فایل + + + + Patch detected! + پچ شناسایی شد! + + + + PKG and Game versions match: + و نسخه بازی همخوانی دارد PKG فایل: + + + + Would you like to overwrite? + آیا مایل به جایگزینی فایل هستید؟ + + + + PKG Version %1 is older than installed version: + نسخه فایل PKG %1 قدیمی تر از نسخه نصب شده است: + + + + Game is installed: + بازی نصب شد: + + + + Would you like to install Patch: + آیا مایل به نصب پچ هستید: + + + + DLC Installation + نصب DLC + + + + Would you like to install DLC: %1? + آیا مایل به نصب DLC هستید: %1 + + + + DLC already installed: + قبلا نصب شده DLC این: + + + + Game already installed + این بازی قبلا نصب شده + + + + PKG is a patch, please install the game first! + فایل انتخاب شده یک پچ است, لطفا اول بازی را نصب کنید + + + + PKG ERROR + PKG ارور فایل + + + + Extracting PKG %1/%2 + درحال استخراج PKG %1/%2 + + + + Extraction Finished + استخراج به پایان رسید + + + + Game successfully installed at %1 + بازی با موفقیت در %1 نصب شد + + + + File doesn't appear to be a valid PKG file + این فایل یک PKG درست به نظر نمی آید + + + + CheatsPatches + + + Cheats / Patches + چیت / پچ ها + + + + defaultTextEdit_MSG + defaultTextEdit_MSG + + + + No Image Available + تصویری موجود نمی باشد + + + + Serial: + سریال: + + + + Version: + ورژن: + + + + Size: + حجم: + + + + Select Cheat File: + فایل چیت را انتخاب کنید: + + + + Repository: + :منبع + + + + Download Cheats + دانلود چیت ها + + + + Delete File + پاک کردن فایل + + + + No files selected. + فایلی انتخاب نشده. + + + + You can delete the cheats you don't want after downloading them. + شما میتوانید بعد از دانلود چیت هایی که نمیخواهید را پاک کنید + + + + Do you want to delete the selected file?\n%1 + آیا میخواهید فایل های انتخاب شده را پاک کنید؟ \n%1 + + + + Select Patch File: + فایل پچ را انتخاب کنید + + + + Download Patches + دانلود کردن پچ ها + + + + Save + ذخیره + + + + Cheats + چیت ها + + + + Patches + پچ ها + + + + Error + ارور + + + + No patch selected. + هیچ پچ انتخاب نشده + + + + Unable to open files.json for reading. + .json مشکل در خواندن فایل + + + + No patch file found for the current serial. + هیچ فایل پچ برای سریال بازی شما پیدا نشد. + + + + Unable to open the file for reading. + خطا در خواندن فایل + + + + Unable to open the file for writing. + خطا در نوشتن فایل + + + + Failed to parse XML: + انجام نشد XML تجزیه فایل: + + + + Success + عملیات موفق بود + + + + Options saved successfully. + تغییرات با موفقیت ذخیره شد✅ + + + + Invalid Source + منبع نامعتبر❌ + + + + The selected source is invalid. + منبع انتخاب شده نامعتبر است + + + + File Exists + فایل وجود دارد + + + + File already exists. Do you want to replace it? + فایل از قبل وجود دارد. آیا می خواهید آن را جایگزین کنید؟ + + + + Failed to save file: + ذخیره فایل موفقیت آمیز نبود: + + + + Failed to download file: + خطا در دانلود فایل: + + + + Cheats Not Found + چیت یافت نشد + + + + CheatsNotFound_MSG + متاسفانه هیچ چیتی از منبع انتخاب شده پیدا نشد! شما میتوانید منابع دیگری را برای دانلود انتخاب و یا چیت های خود را به صورت دستی واردکنید. + + + + Cheats Downloaded Successfully + دانلود چیت ها موفقیت آمیز بود✅ + + + + CheatsDownloadedSuccessfully_MSG + تمامی چیت های موجود برای این بازی از منبع انتخاب شده دانلود شد! شما همچنان میتوانید چیت های دیگری را ازمنابع مختلف دانلود کنید و درصورت موجود بودن از آنها استفاده کنید. + + + + Failed to save: + خطا در ذخیره اطلاعات: + + + + Failed to download: + خطا در دانلود❌ + + + + Download Complete + پچ ها با موفقیت بارگیری شدند! تمام وصله های موجود برای همه بازی ها دانلود شده اند، نیازی به دانلود جداگانه آنها برای هر بازی نیست، همانطور که در Cheats اتفاق می افتد. اگر پچ ظاهر نشد، ممکن است برای سریال و نسخه خاصی از بازی وجود نداشته باشد. ممکن است نیاز به آپدیت بازی باشد.✅ + + + + DownloadComplete_MSG + دانلود با موفقیت به اتمام رسید✅ + + + + Failed to parse JSON data from HTML. + HTML از JSON خطا در تجزیه اطلاعات. + + + + Failed to retrieve HTML page. + HTML خطا دربازیابی صفحه + + + + Failed to open file: + خطا در اجرای فایل: + + + + XML ERROR: + XML ERROR: + + + + Failed to open files.json for writing + .json خطا در نوشتن فایل + + + + Author: + تولید کننده: + + + + Directory does not exist: + پوشه وجود ندارد: + + + + Failed to open files.json for reading. + .json خطا در خواندن فایل + + + + Name: + نام: + + + + Can't apply cheats before the game is started + قبل از شروع بازی نمی توانید تقلب ها را اعمال کنید. + + + + SettingsDialog + + + Save + ذخیره + + + + Apply + اعمال + + + + Restore Defaults + بازیابی پیش فرض ها + + + + Close + بستن + + + + GameListFrame + + + Icon + آیکون + + + + Name + نام + + + + Serial + سریال + + + + Region + منطقه + + + + Firmware + فریمور + + + + Size + اندازه + + + + Version + نسخه + + + + Path + مسیر + + + \ No newline at end of file diff --git a/src/qt_gui/translations/fi.ts b/src/qt_gui/translations/fi.ts index d667dd3798..50e24fce69 100644 --- a/src/qt_gui/translations/fi.ts +++ b/src/qt_gui/translations/fi.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Pelilista + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Korjaukset ladattu onnistuneesti! Kaikki saatavilla olevat korjaukset kaikille peleille on ladattu, eikä niitä tarvitse ladata yksittäin jokaiselle pelille kuten huijauksissa. + Korjaukset ladattu onnistuneesti! Kaikki saatavilla olevat korjaukset kaikille peleille on ladattu, eikä niitä tarvitse ladata yksittäin jokaiselle pelille kuten huijauksissa. Jos päivitystä ei näy, se saattaa olla, että sitä ei ole saatavilla tietylle sarjanumerolle ja peliversiolle. Saattaa olla tarpeen päivittää peli. @@ -898,5 +903,76 @@ Name: Nimi: + + + Can't apply cheats before the game is started + Ei voi käyttää huijauksia ennen kuin peli on aloitettu. + + + SettingsDialog + + + Save + Tallenna + + + + Apply + Ota käyttöön + + + + Restore Defaults + Palauta oletukset + + + + Close + Sulje + + + + GameListFrame + + + Icon + Ikoni + + + + Name + Nimi + + + + Serial + Sarjanumero + + + + Region + Alue + + + + Firmware + Ohjelmisto + + + + Size + Koko + + + + Version + Versio + + + + Path + Polku + + \ No newline at end of file diff --git a/src/qt_gui/translations/fr.ts b/src/qt_gui/translations/fr.ts index 388912d239..5ba5e7e2e1 100644 --- a/src/qt_gui/translations/fr.ts +++ b/src/qt_gui/translations/fr.ts @@ -21,7 +21,7 @@ This software should not be used to play games you have not legally obtained. - Ce logiciel ne doit pas être utilisé pour jouer à des jeux que vous n'avez pas obtenus légalement. + Ce logiciel ne doit pas être utilisé pour jouer à des jeux que vous n'avez pas obtenus légalement. @@ -60,7 +60,7 @@ Directory to install games - Répertoire d'installation des jeux + Répertoire d'installation des jeux @@ -75,7 +75,7 @@ The value for location to install games is not valid. - Le répertoire d'installation des jeux n'est pas valide. + Le répertoire d'installation des jeux n'est pas valide. @@ -118,7 +118,7 @@ Copy Serial - Copier le numéro de série + Copier le N° de série @@ -201,7 +201,7 @@ Exit the application. - Fermer l'application. + Fermer l'application. @@ -291,7 +291,7 @@ Game List Mode - Mode d'affichage + Mode d'affichage @@ -301,7 +301,7 @@ Utils - Utilitaire + Utilitaires @@ -316,12 +316,12 @@ Dark - Noir + Sombre Light - Blanc + Clair @@ -341,7 +341,7 @@ toolBar - Bare d'outils + Bare d'outils @@ -385,7 +385,7 @@ Emulator Language - Langage de l'émulateur + Langage de l'émulateur @@ -400,7 +400,7 @@ Show Splash - Afficher l'image du jeu + Afficher l'image du jeu @@ -410,7 +410,7 @@ Username - Nom d'utilisateur + Nom d'utilisateur @@ -500,6 +500,11 @@ MainWindow + + + Game List + Liste de jeux + * Unsupported Vulkan Version @@ -533,7 +538,7 @@ All Patches available for all games have been downloaded. - Tous les patchs disponibles pour les jeux ont été téléchargés. + Tous les patchs disponibles ont été téléchargés. @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patchs téléchargés avec succès ! Tous les patches disponibles pour tous les jeux ont été téléchargés, il n'est pas nécessaire de les télécharger individuellement pour chaque jeu comme c'est le cas pour les Cheats. + Patchs téléchargés avec succès ! Tous les patches disponibles pour tous les jeux ont été téléchargés, il n'est pas nécessaire de les télécharger individuellement pour chaque jeu comme c'est le cas pour les Cheats. Si le correctif n'apparaît pas, il se peut qu'il n'existe pas pour le numéro de série et la version spécifiques du jeu. Il peut être nécessaire de mettre à jour le jeu. @@ -898,5 +903,76 @@ Name: Nom : + + + Can't apply cheats before the game is started + Impossible d'appliquer les Cheats avant que le jeu ne commence. + - + + SettingsDialog + + + Save + Enregistrer + + + + Apply + Appliquer + + + + Restore Defaults + Restaurer les paramètres par défaut + + + + Close + Fermer + + + + GameListFrame + + + Icon + Icône + + + + Name + Nom + + + + Serial + Série + + + + Region + Région + + + + Firmware + Firmware + + + + Size + Taille + + + + Version + Version + + + + Path + Répertoire + + + \ No newline at end of file diff --git a/src/qt_gui/translations/hu_HU.ts b/src/qt_gui/translations/hu_HU.ts index e5fb25a5db..0f69822e79 100644 --- a/src/qt_gui/translations/hu_HU.ts +++ b/src/qt_gui/translations/hu_HU.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Játéklista + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Frissítések sikeresen letöltve! Minden elérhető frissítés letöltésre került, nem szükséges egyesével letölteni őket minden játékhoz, mint a csalások esetében. + Frissítések sikeresen letöltve! Minden elérhető frissítés letöltésre került, nem szükséges egyesével letölteni őket minden játékhoz, mint a csalások esetében. Ha a javítás nem jelenik meg, lehet, hogy nem létezik a játék adott sorozatszámához és verziójához. Lehet, hogy frissítenie kell a játékot. @@ -898,5 +903,76 @@ Name: Név: + + + Can't apply cheats before the game is started + Nem lehet csalásokat alkalmazni, mielőtt a játék elindul. + + + + SettingsDialog + + + Save + Mentés + + + + Apply + Alkalmaz + + + + Restore Defaults + Alapértelmezett értékek visszaállítása + + + + Close + Bezárás + + + + GameListFrame + + + Icon + Ikon + + + + Name + Név + + + + Serial + Sorozatszám + + + + Region + Régió + + + + Firmware + Firmware + + + + Size + Méret + + + + Version + Verzió + + + + Path + Útvonal + diff --git a/src/qt_gui/translations/id.ts b/src/qt_gui/translations/id.ts index b8ce27cde5..6108ffa20b 100644 --- a/src/qt_gui/translations/id.ts +++ b/src/qt_gui/translations/id.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Daftar game + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patch Berhasil Diunduh! Semua Patch yang tersedia untuk semua game telah diunduh, tidak perlu mengunduhnya satu per satu seperti yang terjadi pada Cheat. + Patch Berhasil Diunduh! Semua Patch yang tersedia untuk semua game telah diunduh, tidak perlu mengunduhnya satu per satu seperti yang terjadi pada Cheat. Jika patch tidak muncul, mungkin patch tersebut tidak ada untuk nomor seri dan versi game yang spesifik. Mungkin perlu memperbarui game. @@ -898,5 +903,76 @@ Name: Nama: + + + Can't apply cheats before the game is started + Tidak bisa menerapkan cheat sebelum permainan dimulai. + + + + SettingsDialog + + + Save + Simpan + + + + Apply + Terapkan + + + + Restore Defaults + Kembalikan Pengaturan Default + + + + Close + Tutup + + + + GameListFrame + + + Icon + Ikon + + + + Name + Nama + + + + Serial + Serial + + + + Region + Wilayah + + + + Firmware + Firmware + + + + Size + Ukuran + + + + Version + Versi + + + + Path + Jalur + \ No newline at end of file diff --git a/src/qt_gui/translations/it.ts b/src/qt_gui/translations/it.ts index 380a8e43b8..39cb35dd3f 100644 --- a/src/qt_gui/translations/it.ts +++ b/src/qt_gui/translations/it.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Elenco giochi + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patch scaricata con successo! Vengono scaricate tutte le patch disponibili per tutti i giochi, non è necessario scaricarle singolarmente per ogni gioco come nel caso dei trucchi. + Patch scaricata con successo! Vengono scaricate tutte le patch disponibili per tutti i giochi, non è necessario scaricarle singolarmente per ogni gioco come nel caso dei trucchi. Se la patch non appare, potrebbe essere che non esista per il numero di serie e la versione specifica del gioco. Potrebbe essere necessario aggiornare il gioco. @@ -898,5 +903,76 @@ Name: Nome: + + + Can't apply cheats before the game is started + Non è possibile applicare i trucchi prima dell'inizio del gioco. + + + SettingsDialog + + + Save + Salva + + + + Apply + Applica + + + + Restore Defaults + Ripristina Impostazioni Predefinite + + + + Close + Chiudi + + + + GameListFrame + + + Icon + Icona + + + + Name + Nome + + + + Serial + Seriale + + + + Region + Regione + + + + Firmware + Firmware + + + + Size + Dimensione + + + + Version + Versione + + + + Path + Percorso + + diff --git a/src/qt_gui/translations/ja_JP.ts b/src/qt_gui/translations/ja_JP.ts index 3d62de0def..680d4ebd57 100644 --- a/src/qt_gui/translations/ja_JP.ts +++ b/src/qt_gui/translations/ja_JP.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + ゲームリスト + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - パッチが正常にダウンロードされました! すべてのゲームに利用可能なパッチがダウンロードされました。チートとは異なり、各ゲームごとに個別にダウンロードする必要はありません。 + パッチが正常にダウンロードされました! すべてのゲームに利用可能なパッチがダウンロードされました。チートとは異なり、各ゲームごとに個別にダウンロードする必要はありません。 パッチが表示されない場合、特定のシリアル番号とバージョンのゲームには存在しない可能性があります。ゲームを更新する必要があるかもしれません。 @@ -898,5 +903,76 @@ Name: 名前: - + + + Can't apply cheats before the game is started + ゲームが開始される前にチートを適用することはできません。 + + + + SettingsDialog + + + Save + 保存 + + + + Apply + 適用 + + + + Restore Defaults + デフォルトに戻す + + + + Close + 閉じる + + + + GameListFrame + + + Icon + アイコン + + + + Name + 名前 + + + + Serial + シリアル + + + + Region + 地域 + + + + Firmware + ファームウェア + + + + Size + サイズ + + + + Version + バージョン + + + + Path + パス + + \ No newline at end of file diff --git a/src/qt_gui/translations/ko_KR.ts b/src/qt_gui/translations/ko_KR.ts index f7f171dc66..a167311b90 100644 --- a/src/qt_gui/translations/ko_KR.ts +++ b/src/qt_gui/translations/ko_KR.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Game List + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patches Downloaded Successfully! All Patches available for all games have been downloaded, there is no need to download them individually for each game as happens in Cheats. + Patches Downloaded Successfully! All Patches available for all games have been downloaded, there is no need to download them individually for each game as happens in Cheats. If the patch does not appear, it may be that it does not exist for the specific serial and version of the game. It may be necessary to update the game. @@ -898,5 +903,76 @@ Name: Name: - + + + Can't apply cheats before the game is started + Can't apply cheats before the game is started. + + + + SettingsDialog + + + Save + Save + + + + Apply + Apply + + + + Restore Defaults + Restore Defaults + + + + Close + Close + + + + GameListFrame + + + Icon + Icon + + + + Name + Name + + + + Serial + Serial + + + + Region + Region + + + + Firmware + Firmware + + + + Size + Size + + + + Version + Version + + + + Path + Path + + \ No newline at end of file diff --git a/src/qt_gui/translations/lt_LT.ts b/src/qt_gui/translations/lt_LT.ts index 7aa4402e68..2c86ec0a00 100644 --- a/src/qt_gui/translations/lt_LT.ts +++ b/src/qt_gui/translations/lt_LT.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Žaidimų sąrašas + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Pataisos sėkmingai atsisiųstos! Visos pataisos visiems žaidimams buvo atsisiųstos, nebėra reikalo jas atsisiųsti atskirai kiekvienam žaidimui, kaip tai vyksta su sukčiavimais. + Pataisos sėkmingai atsisiųstos! Visos pataisos visiems žaidimams buvo atsisiųstos, nebėra reikalo jas atsisiųsti atskirai kiekvienam žaidimui, kaip tai vyksta su sukčiavimais. Jei pleistras nepasirodo, gali būti, kad jo nėra tam tikram žaidimo serijos numeriui ir versijai. Gali prireikti atnaujinti žaidimą. @@ -898,5 +903,76 @@ Name: Pavadinimas: + + + Can't apply cheats before the game is started + Negalima taikyti sukčiavimų prieš pradedant žaidimą. + + + + SettingsDialog + + + Save + Įrašyti + + + + Apply + Taikyti + + + + Restore Defaults + Atkurti numatytuosius nustatymus + + + + Close + Uždaryti + + + + GameListFrame + + + Icon + Ikona + + + + Name + Vardas + + + + Serial + Serijinis numeris + + + + Region + Regionas + + + + Firmware + Firmvare + + + + Size + Dydis + + + + Version + Versija + + + + Path + Kelias + \ No newline at end of file diff --git a/src/qt_gui/translations/nb.ts b/src/qt_gui/translations/nb.ts index 76cad45b29..b62791e05e 100644 --- a/src/qt_gui/translations/nb.ts +++ b/src/qt_gui/translations/nb.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Spilliste + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Oppdateringer lastet ned vellykket! Alle oppdateringer tilgjengelige for alle spill har blitt lastet ned, det er ikke nødvendig å laste dem ned individuelt for hvert spill som skjer med jukser. + Oppdateringer lastet ned vellykket! Alle oppdateringer tilgjengelige for alle spill har blitt lastet ned, det er ikke nødvendig å laste dem ned individuelt for hvert spill som skjer med jukser. Hvis oppdateringen ikke vises, kan det hende at den ikke finnes for den spesifikke serienummeret og versjonen av spillet. Det kan være nødvendig å oppdatere spillet. @@ -898,5 +903,76 @@ Name: Navn: - + + + Can't apply cheats before the game is started + Kan ikke bruke juksetriks før spillet er startet. + + + + SettingsDialog + + + Save + Lag + + + + Apply + Bruk + + + + Restore Defaults + Gjenopprett standardinnstillinger + + + + Close + Lukk + + + + GameListFrame + + + Icon + Ikon + + + + Name + Navn + + + + Serial + Serienummer + + + + Region + Region + + + + Firmware + Firmware + + + + Size + Størrelse + + + + Version + Versjon + + + + Path + Sti + + \ No newline at end of file diff --git a/src/qt_gui/translations/nl.ts b/src/qt_gui/translations/nl.ts index b00460479a..3d5edfc5d3 100644 --- a/src/qt_gui/translations/nl.ts +++ b/src/qt_gui/translations/nl.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Lijst met spellen + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patches succesvol gedownload! Alle beschikbare patches voor alle spellen zijn gedownload. Het is niet nodig om ze afzonderlijk te downloaden voor elk spel dat cheats heeft. + Patches succesvol gedownload! Alle beschikbare patches voor alle spellen zijn gedownload. Het is niet nodig om ze afzonderlijk te downloaden voor elk spel dat cheats heeft. Als de patch niet verschijnt, kan het zijn dat deze niet bestaat voor het specifieke serienummer en de versie van het spel. Het kan nodig zijn om het spel bij te werken. @@ -898,5 +903,76 @@ Name: Naam: + + + Can't apply cheats before the game is started + Je kunt geen cheats toepassen voordat het spel is gestart. + + + SettingsDialog + + + Save + Opslaan + + + + Apply + Toepassen + + + + Restore Defaults + Standaardinstellingen herstellen + + + + Close + Sluiten + + + + GameListFrame + + + Icon + Pictogram + + + + Name + Naam + + + + Serial + Serienummer + + + + Region + Regio + + + + Firmware + Firmware + + + + Size + Grootte + + + + Version + Versie + + + + Path + Pad + + \ No newline at end of file diff --git a/src/qt_gui/translations/pl_PL.ts b/src/qt_gui/translations/pl_PL.ts index 80f0aa5c41..af8330bbdd 100644 --- a/src/qt_gui/translations/pl_PL.ts +++ b/src/qt_gui/translations/pl_PL.ts @@ -93,7 +93,7 @@ Cheats / Patches - Kody / Patche + Kody / poprawki @@ -251,12 +251,12 @@ Game Install Directory - Katalog zainstalowanej gry + Katalog zainstalowanych gier Download Cheats/Patches - Pobierz Kody / Patche + Pobierz kody / poprawki @@ -349,7 +349,7 @@ Open Folder - Open Folder + Otwórz folder @@ -450,7 +450,7 @@ Vblank Divider - Dzielnik pionowego blankingu (Vblank) + Dzielnik przerwy pionowej (Vblank) @@ -500,6 +500,11 @@ MainWindow + + + Game List + Lista gier + * Unsupported Vulkan Version @@ -563,7 +568,7 @@ PKG Extraction - Ekstrakcja PKG + Wypakowywanie PKG @@ -628,12 +633,12 @@ Extracting PKG %1/%2 - Ekstrakcja PKG %1/%2 + Wypakowywanie PKG %1/%2 Extraction Finished - Ekstrakcja zakończona + Wypakowywanie zakończone @@ -651,7 +656,7 @@ Cheats / Patches - Kody / Poprawki + Kody / poprawki @@ -771,7 +776,7 @@ Failed to parse XML: - Nie udało się sparsować XML: + Nie udało się przeanalizować XML: @@ -821,7 +826,7 @@ CheatsNotFound_MSG - Nie znaleziono kodów do tej gry w tej wersji wybranego repozytorium.Spróbuj innego repozytorium lub innej wersji gry. + Nie znaleziono kodów do tej gry w tej wersji wybranego repozytorium. Spróbuj innego repozytorium lub innej wersji gry. @@ -851,12 +856,12 @@ DownloadComplete_MSG - Poprawki zostały pomyślnie pobrane! Wszystkie dostępne poprawki dla wszystkich gier zostały pobrane. Nie ma potrzeby pobierania ich osobno dla każdej gry, która ma kody. + Poprawki zostały pomyślnie pobrane! Wszystkie dostępne poprawki dla wszystkich gier zostały pobrane. Nie ma potrzeby pobierania ich osobno dla każdej gry, która ma kody. Jeśli poprawka się nie pojawia, możliwe, że nie istnieje dla konkretnego numeru seryjnego i wersji gry. Może być konieczne zaktualizowanie gry. Failed to parse JSON data from HTML. - Nie udało się sparsować danych JSON z HTML. + Nie udało się przeanalizować danych JSON z HTML. @@ -896,7 +901,78 @@ Failed to parse JSON: - Nie udało się sparsować JSON: + Nie udało się przeanlizować JSON: + + + Can't apply cheats before the game is started + Nie można zastosować kodów przed uruchomieniem gry. + - \ No newline at end of file + + SettingsDialog + + + Save + Zapisz + + + + Apply + Zastosuj + + + + Restore Defaults + Przywróć ustawienia domyślne + + + + Close + Zamknij + + + + GameListFrame + + + Icon + Ikona + + + + Name + Nazwa + + + + Serial + Numer seryjny + + + + Region + Region + + + + Firmware + Oprogramowanie + + + + Size + Rozmiar + + + + Version + Wersja + + + + Path + Ścieżka + + + diff --git a/src/qt_gui/translations/pt_BR.ts b/src/qt_gui/translations/pt_BR.ts index 8b4538b9db..e774a30b4a 100644 --- a/src/qt_gui/translations/pt_BR.ts +++ b/src/qt_gui/translations/pt_BR.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Lista de Jogos + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patches Baixados com Sucesso! Todos os patches disponíveis para todos os jogos foram baixados, não é necessário baixá-los individualmente para cada jogo como acontece com os Cheats. + Patches Baixados com Sucesso! Todos os patches disponíveis para todos os jogos foram baixados, não é necessário baixá-los individualmente para cada jogo como acontece com os Cheats. Se o patch não aparecer, pode ser que ele não exista para o número de série e a versão específicos do jogo. Pode ser necessário atualizar o jogo. @@ -897,6 +902,77 @@ Name: Nome: + + + + Can't apply cheats before the game is started + Não é possível aplicar cheats antes que o jogo comece. + + + + SettingsDialog + + + Save + Salvar + + + + Apply + Aplicar + + + + Restore Defaults + Restaurar Padrões + + + + Close + Fechar + + + + GameListFrame + + + Icon + Icone + + + + Name + Nome + + + + Serial + Serial + + + + Region + Região + + + + Firmware + Firmware + + + + Size + Tamanho + + + + Version + Versão + + + + Path + Diretório \ No newline at end of file diff --git a/src/qt_gui/translations/ro_RO.ts b/src/qt_gui/translations/ro_RO.ts index 8b2fda0c13..56df113f56 100644 --- a/src/qt_gui/translations/ro_RO.ts +++ b/src/qt_gui/translations/ro_RO.ts @@ -499,6 +499,11 @@ + + + Game List + Lista jocurilor + MainWindow @@ -851,7 +856,7 @@ DownloadComplete_MSG - Patches descărcate cu succes! Toate Patches disponibile pentru toate jocurile au fost descărcate; nu este nevoie să le descarci individual pentru fiecare joc, așa cum se întâmplă cu Cheats. + Patches descărcate cu succes! Toate Patches disponibile pentru toate jocurile au fost descărcate; nu este nevoie să le descarci individual pentru fiecare joc, așa cum se întâmplă cu Cheats. Dacă patch-ul nu apare, este posibil să nu existe pentru seria și versiunea specifică a jocului. Poate fi necesar să actualizați jocul. @@ -898,5 +903,76 @@ Name: Nume: + + + Can't apply cheats before the game is started + Nu poți aplica cheats înainte ca jocul să înceapă. + + + SettingsDialog + + + Save + Salvează + + + + Apply + Aplică + + + + Restore Defaults + Restabilește Impozitivele + + + + Close + Închide + + + + GameListFrame + + + Icon + Icon + + + + Name + Nume + + + + Serial + Serie + + + + Region + Regiune + + + + Firmware + Firmware + + + + Size + Dimensiune + + + + Version + Versiune + + + + Path + Drum + + \ No newline at end of file diff --git a/src/qt_gui/translations/ru_RU.ts b/src/qt_gui/translations/ru_RU.ts index 9e3446ad4c..1eac3e515f 100644 --- a/src/qt_gui/translations/ru_RU.ts +++ b/src/qt_gui/translations/ru_RU.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Список игр + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Патчи успешно скачаны! Все доступные патчи для всех игр были скачаны, нет необходимости скачивать их по отдельности для каждой игры, как это происходит с читами. + Патчи успешно скачаны! Все доступные патчи для всех игр были скачаны, нет необходимости скачивать их по отдельности для каждой игры, как это происходит с читами. Если патч не появляется, возможно, его не существует для конкретного серийного номера и версии игры. Возможно, потребуется обновить игру. @@ -898,5 +903,76 @@ Name: Имя: + + + Can't apply cheats before the game is started + Невозможно применить читы до начала игрыs + + + + SettingsDialog + + + Save + Сохранить + + + + Apply + Применить + + + + Restore Defaults + Восстановить умолчания + + + + Close + Закрыть + + + + GameListFrame + + + Icon + Иконка + + + + Name + Название + + + + Serial + Серийный номер + + + + Region + Регион + + + + Firmware + Прошивка + + + + Size + Размер + + + + Version + Версия + + + + Path + Путь + \ No newline at end of file diff --git a/src/qt_gui/translations/sq.ts b/src/qt_gui/translations/sq.ts new file mode 100644 index 0000000000..85110c6ae5 --- /dev/null +++ b/src/qt_gui/translations/sq.ts @@ -0,0 +1,978 @@ + + + + AboutDialog + + + About shadPS4 + Rreth shadPS4 + + + + shadPS4 + shadPS4 + + + + shadPS4 is an experimental open-source emulator for the PlayStation 4. + shadPS4 është një emulator eksperimental me burim të hapur për PlayStation 4. + + + + This software should not be used to play games you have not legally obtained. + Ky program nuk duhet përdorur për të luajtur lojëra që nuk ke marrë ligjërisht. + + + + ElfViewer + + + Open Folder + Hap Dosjen + + + + GameInfoClass + + + Loading game list, please wait :3 + Po ngarkohet lista e lojërave, të lutem prit :3 + + + + Cancel + Anulo + + + + Loading... + Duke ngarkuar... + + + + GameInstallDialog + + + shadPS4 - Choose directory + shadPS4 - Përzgjidh dosjen + + + + Directory to install games + Dosja ku do instalohen lojërat + + + + Browse + Shfleto + + + + Error + Gabim + + + + The value for location to install games is not valid. + Vlera për vendndodhjen e instalimit të lojërave nuk është e vlefshme. + + + + GuiContextMenus + + + Create Shortcut + Krijo Shkurtore + + + + Open Game Folder + Hap Dosjen e Lojës + + + + Cheats / Patches + Mashtrime / Arna + + + + SFO Viewer + Shikuesi i SFO + + + + Trophy Viewer + Shikuesi i Trofeve + + + + Copy info + Kopjo informacionin + + + + Copy Name + Kopjo Emrin + + + + Copy Serial + Kopjo Serikun + + + + Copy All + Kopjo të Gjitha + + + + Shortcut creation + Krijim i shkurtores + + + + Shortcut created successfully!\n %1 + Shkurtorja u krijua me sukses!\n %1 + + + + Error + Gabim + + + + Error creating shortcut!\n %1 + Gabim në krijimin e shkurtores!\n %1 + + + + Install PKG + Instalo PKG + + + + MainWindow + + + Open/Add Elf Folder + Hap/Shto Dosje ELF + + + + Install Packages (PKG) + Instalo Paketat (PKG) + + + + Boot Game + Nis Lojën + + + + About shadPS4 + Rreth shadPS4 + + + + Configure... + Formëso... + + + + Install application from a .pkg file + Instalo aplikacionin nga një skedar .pkg + + + + Recent Games + Lojërat e fundit + + + + Exit + Dil + + + + Exit shadPS4 + Dil nga shadPS4 + + + + Exit the application. + Dil nga aplikacioni. + + + + Show Game List + Shfaq Listën e Lojërave + + + + Game List Refresh + Rifresko Listën e Lojërave + + + + Tiny + Të vockla + + + + Small + Të vogla + + + + Medium + Të mesme + + + + Large + Të mëdha + + + + List View + Pamja e Listës + + + + Grid View + Pamja e Rrjetës + + + + Elf Viewer + Shikuesi i Elf + + + + Game Install Directory + Dosja e Instalimit të Lojës + + + + Download Cheats/Patches + Shkarko Mashtrime/Arna + + + + Dump Game List + Zbraz Listën e Lojërave + + + + PKG Viewer + Shikuesi i PKG + + + + Search... + Kërko... + + + + File + Skedari + + + + View + Pamja + + + + Game List Icons + Ikonat e Listës së Lojërave + + + + Game List Mode + Mënyra e Listës së Lojërave + + + + Settings + Cilësimet + + + + Utils + Shërbimet + + + + Themes + Motivet + + + + About + Rreth + + + + Dark + E errët + + + + Light + E çelët + + + + Green + E gjelbër + + + + Blue + E kaltër + + + + Violet + Vjollcë + + + + toolBar + Shiriti i veglave + + + + PKGViewer + + + Open Folder + Hap Dosjen + + + + TrophyViewer + + + Trophy Viewer + Shikuesi i Trofeve + + + + SettingsDialog + + + Settings + Cilësimet + + + + General + Të përgjithshme + + + + System + Sistemi + + + + Console Language + Gjuha e Konsolës + + + + Emulator Language + Gjuha e emulatorit + + + + Emulator + Emulatori + + + + Enable Fullscreen + Aktivizo Ekranin e plotë + + + + Show Splash + Shfaq Pamjen e nisjes + + + + Is PS4 Pro + Mënyra PS4 Pro + + + + Username + Nofka + + + + Logger + Regjistruesi i të dhënave + + + + Log Type + Lloji i Ditarit + + + + Log Filter + Filtri i Ditarit + + + + Graphics + Grafika + + + + Graphics Device + Pajisja e Grafikës + + + + Width + Gjerësia + + + + Height + Lartësia + + + + Vblank Divider + Ndarës Vblank + + + + Advanced + Të përparuara + + + + Enable Shaders Dumping + Aktivizo Zbrazjen e Shaders-ave + + + + Enable NULL GPU + Aktivizo GPU-në NULL + + + + Enable PM4 Dumping + Aktivizo Zbrazjen PM4 + + + + Debug + Korrigjim + + + + Enable Debug Dumping + Aktivizo Zbrazjen për Korrigjim + + + + Enable Vulkan Validation Layers + Aktivizo Shtresat e Vlefshmërisë Vulkan + + + + Enable Vulkan Synchronization Validation + Aktivizo Vërtetimin e Sinkronizimit Vulkan + + + + Enable RenderDoc Debugging + Aktivizo Korrigjimin RenderDoc + + + + MainWindow + + + Game List + Lista e lojërave + + + + * Unsupported Vulkan Version + * Version i pambështetur i Vulkan + + + + Download Cheats For All Installed Games + Shkarko Mashtrime Për Të Gjitha Lojërat e Instaluara + + + + Download Patches For All Games + Shkarko Arna Për Të Gjitha Lojërat e Instaluara + + + + Download Complete + Shkarkimi Përfundoi + + + + You have downloaded cheats for all the games you have installed. + Ke shkarkuar mashtrimet për të gjitha lojërat që ke instaluar. + + + + Patches Downloaded Successfully! + Arnat u shkarkuan me sukses! + + + + All Patches available for all games have been downloaded. + Të gjitha arnat e ofruara për të gjitha lojërat janë shkarkuar. + + + + Games: + Lojërat: + + + + PKG File (*.PKG) + Skedar PKG (*.PKG) + + + + ELF files (*.bin *.elf *.oelf) + Skedarë ELF (*.bin *.elf *.oelf) + + + + Game Boot + Nis Lojën + + + + Only one file can be selected! + Mund të përzgjidhet vetëm një skedar! + + + + PKG Extraction + Nxjerrja e PKG-së + + + + Patch detected! + U zbulua një arnë! + + + + PKG and Game versions match: + PKG-ja dhe versioni i Lojës përputhen: + + + + Would you like to overwrite? + Dëshiron të mbishkruash? + + + + PKG Version %1 is older than installed version: + Versioni %1 i PKG-së është më i vjetër se versioni i instaluar: + + + + Game is installed: + Loja është instaluar: + + + + Would you like to install Patch: + Dëshiron të instalosh Arnën: + + + + DLC Installation + Instalimi i DLC-ve + + + + Would you like to install DLC: %1? + Dëshiron të instalosh DLC-në: %1? + + + + DLC already installed: + DLC-ja është instaluar tashmë: + + + + Game already installed + Loja është instaluar tashmë + + + + PKG is a patch, please install the game first! + PKG-ja është një arnë, të lutem instalo lojën fillimisht! + + + + PKG ERROR + GABIM PKG + + + + Extracting PKG %1/%2 + Po nxirret PKG-ja %1/%2 + + + + Extraction Finished + Nxjerrja Përfundoi + + + + Game successfully installed at %1 + Loja u instalua me sukses në %1 + + + + File doesn't appear to be a valid PKG file + Skedari nuk duket si skedar PKG i vlefshëm + + + + CheatsPatches + + + Cheats / Patches + Mashtrime / Arna + + + + defaultTextEdit_MSG + Mashtrimet/Arnat janë eksperimentale.\nPërdori me kujdes.\n\nShkarko mashtrimet individualisht duke zgjedhur depon dhe duke klikuar butonin e shkarkimit.\nNë skedën Arna, mund t'i shkarkosh të gjitha arnat menjëherë, të zgjidhësh cilat dëshiron të përdorësh dhe të ruash zgjedhjen tënde.\n\nMeqenëse ne nuk zhvillojmë Mashtrimet/Arnat,\ntë lutem raporto problemet te autori i mashtrimit.\n\nKe krijuar një mashtrim të ri? Vizito:\nhttps://github.com/shadps4-emu/ps4_cheats + + + + No Image Available + Nuk ofrohet asnjë imazh + + + + Serial: + Seriku: + + + + Version: + Versioni: + + + + Size: + Madhësia: + + + + Select Cheat File: + Përzgjidh Skedarin e Mashtrimit: + + + + Repository: + Depo: + + + + Download Cheats + Shkarko Mashtrimet + + + + Delete File + Fshi Skedarin + + + + No files selected. + Nuk u zgjodh asnjë skedar. + + + + You can delete the cheats you don't want after downloading them. + Mund t'i fshish mashtrimet që nuk dëshiron pasi t'i kesh shkarkuar. + + + + Do you want to delete the selected file?\n%1 + Dëshiron të fshish skedarin e përzgjedhur?\n%1 + + + + Select Patch File: + Përzgjidh Skedarin e Arnës: + + + + Download Patches + Shkarko Arnat + + + + Save + Ruaj + + + + Cheats + Mashtrime + + + + Patches + Arna + + + + Error + Gabim + + + + No patch selected. + Asnjë arnë e përzgjedhur. + + + + Unable to open files.json for reading. + files.json nuk mund të hapet për lexim. + + + + No patch file found for the current serial. + Nuk u gjet asnjë skedar patch për serikun aktual. + + + + Unable to open the file for reading. + Skedari nuk mund të hapet për lexim. + + + + Unable to open the file for writing. + Skedari nuk mund të hapet për shkrim. + + + + Failed to parse XML: + Analiza e XML-së dështoi: + + + + Success + Sukses + + + + Options saved successfully. + Rregullimet u ruajtën me sukses. + + + + Invalid Source + Burim i pavlefshëm + + + + The selected source is invalid. + Burimi i përzgjedhur është i pavlefshëm. + + + + File Exists + Skedari Ekziston + + + + File already exists. Do you want to replace it? + Skedari ekziston tashmë. Dëshiron ta zëvendësosh? + + + + Failed to save file: + Ruajtja e skedarit dështoi: + + + + Failed to download file: + Shkarkimi i skedarit dështoi: + + + + Cheats Not Found + Mashtrimet nuk u gjetën + + + + CheatsNotFound_MSG + Nuk u gjetën mashtrime për këtë lojë në këtë version të depove të përzgjedhura, provo një depo tjetër ose një version tjetër të lojës. + + + + Cheats Downloaded Successfully + Mashtrimet u shkarkuan me sukses + + + + CheatsDownloadedSuccessfully_MSG + Ke shkarkuar me sukses mashtrimet për këtë version të lojës nga depoja e përzgjedhur. Mund të provosh të shkarkosh nga një depo tjetër, nëse ofrohet do të jetë e mundur gjithashtu ta përdorësh duke përzgjedhur skedarin nga lista. + + + + Failed to save: + Ruajtja dështoi: + + + + Failed to download: + Shkarkimi dështoi: + + + + Download Complete + Shkarkimi përfundoi + + + + DownloadComplete_MSG + Arnat u shkarkuan me sukses! Të gjitha arnat e ofruara për të gjitha lojërat janë shkarkuar, nuk ka nevojë t'i shkarkosh ato individualisht për secilën lojë siç ndodh me Mashtrimet. Nëse patch-i nuk shfaqet, mund të mos ekzistojë për numrin e serisë dhe versionin specifik të lojës. Mund të jetë e nevojshme të përditësosh lojën. + + + + Failed to parse JSON data from HTML. + Analiza e të dhënave JSON nga HTML dështoi. + + + + Failed to retrieve HTML page. + Gjetja e faqes HTML dështoi. + + + + Failed to open file: + Hapja e skedarit dështoi: + + + + XML ERROR: + GABIM XML: + + + + Failed to open files.json for writing + Hapja e files.json për shkrim dështoi + + + + Author: + Autori: + + + + Directory does not exist: + Dosja nuk ekziston: + + + + Failed to open files.json for reading. + Hapja e files.json për lexim dështoi. + + + + Name: + Emri: + + + + Can't apply cheats before the game is started + Nuk mund të zbatohen mashtrime para se të fillojë loja. + + + + SettingsDialog + + + Save + Ruaj + + + + Apply + Zbato + + + + Restore Defaults + Rikthe paracaktimet + + + + Close + Mbyll + + + + GameListFrame + + + Icon + Ikona + + + + Name + Emri + + + + Serial + Seriku + + + + Region + Rajoni + + + + Firmware + Firmueri + + + + Size + Madhësia + + + + Version + Versioni + + + + Path + Shtegu + + + diff --git a/src/qt_gui/translations/tr_TR.ts b/src/qt_gui/translations/tr_TR.ts index e11a2d960a..83f62c85e3 100644 --- a/src/qt_gui/translations/tr_TR.ts +++ b/src/qt_gui/translations/tr_TR.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Oyun Listesi + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Yamalar başarıyla indirildi! Tüm oyunlar için mevcut tüm yamalar indirildi, her oyun için ayrı ayrı indirme yapmanız gerekmez, hilelerle olduğu gibi. + Yamalar başarıyla indirildi! Tüm oyunlar için mevcut tüm yamalar indirildi, her oyun için ayrı ayrı indirme yapmanız gerekmez, hilelerle olduğu gibi. Yamanın görünmemesi durumunda, belirli seri numarası ve oyun sürümü için mevcut olmayabilir. Oyunu güncellemeniz gerekebilir. @@ -969,5 +974,76 @@ Apply Changes Değişiklikleri Uygula + + + Can't apply cheats before the game is started + Hileleri oyuna başlamadan önce uygulayamazsınız. + + + SettingsDialog + + + Save + Kaydet + + + + Apply + Uygula + + + + Restore Defaults + Varsayılanları Geri Yükle + + + + Close + Kapat + + + + GameListFrame + + + Icon + Simge + + + + Name + Ad + + + + Serial + Seri Numarası + + + + Region + Bölge + + + + Firmware + Yazılım + + + + Size + Boyut + + + + Version + Sürüm + + + + Path + Yol + + \ No newline at end of file diff --git a/src/qt_gui/translations/vi_VN.ts b/src/qt_gui/translations/vi_VN.ts index aead45a63c..017e61af52 100644 --- a/src/qt_gui/translations/vi_VN.ts +++ b/src/qt_gui/translations/vi_VN.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + Danh sách trò chơi + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - Bản vá đã tải xuống thành công! Tất cả các bản vá có sẵn cho tất cả các trò chơi đã được tải xuống, không cần tải xuống riêng lẻ cho mỗi trò chơi như trong Cheat. + Bản vá đã tải xuống thành công! Tất cả các bản vá có sẵn cho tất cả các trò chơi đã được tải xuống, không cần tải xuống riêng lẻ cho mỗi trò chơi như trong Cheat. Nếu bản vá không xuất hiện, có thể là nó không tồn tại cho số seri và phiên bản cụ thể của trò chơi. Có thể bạn cần phải cập nhật trò chơi. @@ -898,5 +903,76 @@ Name: Tên: + + + Can't apply cheats before the game is started + Không thể áp dụng cheat trước khi trò chơi bắt đầu. + + + SettingsDialog + + + Save + Lưu + + + + Apply + Áp dụng + + + + Restore Defaults + Khôi phục cài đặt mặc định + + + + Close + Đóng + + + + GameListFrame + + + Icon + Biểu tượng + + + + Name + Tên + + + + Serial + Số seri + + + + Region + Khu vực + + + + Firmware + Phần mềm + + + + Size + Kích thước + + + + Version + Phiên bản + + + + Path + Đường dẫn + + \ No newline at end of file diff --git a/src/qt_gui/translations/zh_CN.ts b/src/qt_gui/translations/zh_CN.ts index a1b2523b83..f8675ed01d 100644 --- a/src/qt_gui/translations/zh_CN.ts +++ b/src/qt_gui/translations/zh_CN.ts @@ -6,7 +6,7 @@ About shadPS4 - About shadPS4 + 关于 shadPS4 @@ -16,12 +16,12 @@ shadPS4 is an experimental open-source emulator for the PlayStation 4. - shadPS4 is an experimental open-source emulator for the PlayStation 4. + shadPS4 是一款实验性质的开源 PlayStation 4模拟器软件。 This software should not be used to play games you have not legally obtained. - This software should not be used to play games you have not legally obtained. + 本软件不得用于运行未经合法授权而获得的游戏。 @@ -29,7 +29,7 @@ Open Folder - Open Folder + 打开文件夹 @@ -37,17 +37,17 @@ Loading game list, please wait :3 - Loading game list, please wait :3 + 加载游戏列表中, 请稍等 :3 Cancel - Cancel + 取消 Loading... - Loading... + 加载中... @@ -55,27 +55,27 @@ shadPS4 - Choose directory - shadPS4 - Choose directory + shadPS4 - 选择文件目录 Directory to install games - Directory to install games + 要安装游戏的目录 Browse - Browse + 浏览 Error - Error + 错误 The value for location to install games is not valid. - The value for location to install games is not valid. + 游戏安装位置无效。 @@ -83,72 +83,72 @@ Create Shortcut - Create Shortcut + 创建快捷方式 Open Game Folder - Open Game Folder + 打开游戏文件夹 Cheats / Patches - Zuòbì / Bǔdīng + 作弊码 / 补丁 SFO Viewer - SFO Viewer + SFO 查看器 Trophy Viewer - Trophy Viewer + Trophy 查看器 Copy info - Copy info + 复制信息 Copy Name - Copy Name + 复制名称 Copy Serial - Copy Serial + 复制序列号 Copy All - Copy All + 复制全部 Shortcut creation - Shortcut creation + 创建快捷方式 Shortcut created successfully!\n %1 - Shortcut created successfully!\n %1 + 创建快捷方式成功!\n %1 Error - Error + 错误 Error creating shortcut!\n %1 - Error creating shortcut!\n %1 + 创建快捷方式出错!\n %1 Install PKG - Install PKG + 安装 PKG @@ -156,162 +156,162 @@ Open/Add Elf Folder - Open/Add Elf Folder + 打开/添加Elf文件夹 Install Packages (PKG) - Install Packages (PKG) + 安装 Packages (PKG) Boot Game - Boot Game + 启动游戏 About shadPS4 - About shadPS4 + 关于 shadPS4 Configure... - Configure... + 设置... Install application from a .pkg file - Install application from a .pkg file + 从 .pkg 文件安装应用程序 Recent Games - Recent Games + 最近启动的游戏 Exit - Exit + 退出 Exit shadPS4 - Exit shadPS4 + 退出 shadPS4 Exit the application. - Exit the application. + 退出应用程序. Show Game List - Show Game List + 显示游戏列表 Game List Refresh - Game List Refresh + 刷新游戏列表 Tiny - Tiny + 微小 Small - Small + Medium - Medium + 中等 Large - Large + 巨大 List View - List View + 列表视图 Grid View - Grid View + 表格视图 Elf Viewer - Elf Viewer + Elf 查看器 Game Install Directory - Game Install Directory + 游戏安装目录 Download Cheats/Patches - Xiàzài Zuòbì / Bǔdīng + 下载作弊码/补丁 Dump Game List - Dump Game List + 转储游戏列表 PKG Viewer - PKG Viewer + PKG 查看器 Search... - Search... + 搜索... File - File + 文件 View - View + 显示 Game List Icons - Game List Icons + 游戏列表图标 Game List Mode - Game List Mode + 游戏列表模式 Settings - Settings + 设置 Utils - Utils + 工具 Themes - Themes + 主题 About - About + 关于 @@ -341,7 +341,7 @@ toolBar - toolBar + 工具栏 @@ -349,7 +349,7 @@ Open Folder - Open Folder + 打开文件夹 @@ -357,7 +357,7 @@ Trophy Viewer - Trophy Viewer + Trophy 查看器 @@ -365,87 +365,87 @@ Settings - Settings + 设置 General - General + 通用 System - System + 系统 Console Language - Console Language + 主机语言 Emulator Language - Emulator Language + 模拟器语言 Emulator - Emulator + 模拟器 Enable Fullscreen - Enable Fullscreen + 启用全屏 Show Splash - Show Splash + 显示Splash Is PS4 Pro - Is PS4 Pro + 是否是 PS4 Pro Username - Username + 用户名 Logger - Logger + 日志 Log Type - Log Type + 日志类型 Log Filter - Log Filter + 日志过滤 Graphics - Graphics + 图像 Graphics Device - Graphics Device + 图像设备 Width - Width + 宽带 Height - Height + 高度 @@ -455,51 +455,56 @@ Advanced - Advanced + 高级 Enable Shaders Dumping - Enable Shaders Dumping + 启用着色器转储 Enable NULL GPU - Enable NULL GPU + 启用 NULL GPU Enable PM4 Dumping - Enable PM4 Dumping + 启用 PM4 转储 Debug - Debug + 调试 Enable Debug Dumping - Enable Debug Dumping + 启用调试转储 Enable Vulkan Validation Layers - Enable Vulkan Validation Layers + 启用 Vulkan 验证层 Enable Vulkan Synchronization Validation - Enable Vulkan Synchronization Validation + 启用 Vulkan 同步验证 Enable RenderDoc Debugging - Enable RenderDoc Debugging + 启用 RenderDoc 调试 MainWindow + + + Game List + 游戏列表 + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - 补丁下载成功!所有可用的补丁已下载完成,无需像作弊码那样单独下载每个游戏的补丁。 + 补丁下载成功!所有可用的补丁已下载完成,无需像作弊码那样单独下载每个游戏的补丁。如果补丁没有出现,可能是该补丁不存在于特定的序列号和游戏版本中。可能需要更新游戏。 @@ -898,5 +903,76 @@ Name: 名称: - + + + Can't apply cheats before the game is started + 在游戏开始之前无法应用作弊。 + + + + SettingsDialog + + + Save + 保存 + + + + Apply + 应用 + + + + Restore Defaults + 恢复默认 + + + + Close + 关闭 + + + + GameListFrame + + + Icon + 图标 + + + + Name + 名称 + + + + Serial + 序列号 + + + + Region + 区域 + + + + Firmware + 固件 + + + + Size + 大小 + + + + Version + 版本 + + + + Path + 路径 + + \ No newline at end of file diff --git a/src/qt_gui/translations/zh_TW.ts b/src/qt_gui/translations/zh_TW.ts index 3836ed18a9..77fe691fe9 100644 --- a/src/qt_gui/translations/zh_TW.ts +++ b/src/qt_gui/translations/zh_TW.ts @@ -500,6 +500,11 @@ MainWindow + + + Game List + 遊戲列表 + * Unsupported Vulkan Version @@ -851,7 +856,7 @@ DownloadComplete_MSG - 修補檔下載成功!所有遊戲的修補檔已下載完成,無需像作弊碼那樣為每個遊戲單獨下載。 + 修補檔下載成功!所有遊戲的修補檔已下載完成,無需像作弊碼那樣為每個遊戲單獨下載。如果補丁未顯示,可能是該補丁不適用於特定的序號和遊戲版本。可能需要更新遊戲。 @@ -898,5 +903,76 @@ Name: 名稱: + + + Can't apply cheats before the game is started + 在遊戲開始之前無法應用作弊。 + + + SettingsDialog + + + Save + 儲存 + + + + Apply + 應用 + + + + Restore Defaults + 還原預設值 + + + + Close + 關閉 + + + + GameListFrame + + + Icon + 圖示 + + + + Name + 名稱 + + + + Serial + 序號 + + + + Region + 區域 + + + + Firmware + 固件 + + + + Size + 大小 + + + + Version + 版本 + + + + Path + 路徑 + + \ No newline at end of file diff --git a/src/qt_gui/trophy_viewer.cpp b/src/qt_gui/trophy_viewer.cpp index 57dce6b4e3..8b96948cbd 100644 --- a/src/qt_gui/trophy_viewer.cpp +++ b/src/qt_gui/trophy_viewer.cpp @@ -9,7 +9,8 @@ TrophyViewer::TrophyViewer(QString trophyPath, QString gameTrpPath) : QMainWindo this->setAttribute(Qt::WA_DeleteOnClose); tabWidget = new QTabWidget(this); gameTrpPath_ = gameTrpPath; - headers << "Trophy" + headers << "Unlocked" + << "Trophy" << "Name" << "Description" << "ID" @@ -21,11 +22,11 @@ TrophyViewer::TrophyViewer(QString trophyPath, QString gameTrpPath) : QMainWindo void TrophyViewer::PopulateTrophyWidget(QString title) { #ifdef _WIN32 - const auto trophyDir = Common::FS::GetUserPath(Common::FS::PathType::UserDir) / "game_data" / + const auto trophyDir = Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / title.toStdWString() / "TrophyFiles"; const auto trophyDirQt = QString::fromStdWString(trophyDir.wstring()); #else - const auto trophyDir = Common::FS::GetUserPath(Common::FS::PathType::UserDir) / "game_data" / + const auto trophyDir = Common::FS::GetUserPath(Common::FS::PathType::MetaDataDir) / title.toStdString() / "TrophyFiles"; const auto trophyDirQt = QString::fromStdString(trophyDir.string()); #endif @@ -61,6 +62,7 @@ void TrophyViewer::PopulateTrophyWidget(QString title) { QStringList trpId; QStringList trpHidden; + QStringList trpUnlocked; QStringList trpType; QStringList trpPid; QStringList trophyNames; @@ -81,6 +83,15 @@ void TrophyViewer::PopulateTrophyWidget(QString title) { trpHidden.append(reader.attributes().value("hidden").toString()); trpType.append(reader.attributes().value("ttype").toString()); trpPid.append(reader.attributes().value("pid").toString()); + if (reader.attributes().hasAttribute("unlockstate")) { + if (reader.attributes().value("unlockstate").toString() == "unlocked") { + trpUnlocked.append("unlocked"); + } else { + trpUnlocked.append("locked"); + } + } else { + trpUnlocked.append("locked"); + } } if (reader.name().toString() == "name" && !trpId.isEmpty()) { @@ -93,7 +104,7 @@ void TrophyViewer::PopulateTrophyWidget(QString title) { } QTableWidget* tableWidget = new QTableWidget(this); tableWidget->setShowGrid(false); - tableWidget->setColumnCount(7); + tableWidget->setColumnCount(8); tableWidget->setHorizontalHeaderLabels(headers); tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); @@ -105,21 +116,22 @@ void TrophyViewer::PopulateTrophyWidget(QString title) { QTableWidgetItem* item = new QTableWidgetItem(); item->setData(Qt::DecorationRole, icon); item->setFlags(item->flags() & ~Qt::ItemIsEditable); - tableWidget->setItem(row, 0, item); + tableWidget->setItem(row, 1, item); if (!trophyNames.isEmpty() && !trophyDetails.isEmpty()) { - SetTableItem(tableWidget, row, 1, trophyNames[row]); - SetTableItem(tableWidget, row, 2, trophyDetails[row]); - SetTableItem(tableWidget, row, 3, trpId[row]); - SetTableItem(tableWidget, row, 4, trpHidden[row]); - SetTableItem(tableWidget, row, 5, GetTrpType(trpType[row].at(0))); - SetTableItem(tableWidget, row, 6, trpPid[row]); + SetTableItem(tableWidget, row, 0, trpUnlocked[row]); + SetTableItem(tableWidget, row, 2, trophyNames[row]); + SetTableItem(tableWidget, row, 3, trophyDetails[row]); + SetTableItem(tableWidget, row, 4, trpId[row]); + SetTableItem(tableWidget, row, 5, trpHidden[row]); + SetTableItem(tableWidget, row, 6, GetTrpType(trpType[row].at(0))); + SetTableItem(tableWidget, row, 7, trpPid[row]); } tableWidget->verticalHeader()->resizeSection(row, icon.height()); row++; } tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); int width = 16; - for (int i = 0; i < 7; i++) { + for (int i = 0; i < 8; i++) { width += tableWidget->horizontalHeader()->sectionSize(i); } tableWidget->resize(width, 720); diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index b83afd299c..f3418c8f90 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -9,6 +9,7 @@ #include "common/config.h" #include "common/version.h" #include "core/libraries/pad/pad.h" +#include "imgui/renderer/imgui_core.h" #include "input/controller.h" #include "sdl_window.h" #include "video_core/renderdoc.h" @@ -80,6 +81,10 @@ void WindowSDL::waitEvent() { return; } + if (ImGui::Core::ProcessEvent(&event)) { + return; + } + switch (event.type) { case SDL_EVENT_WINDOW_RESIZED: case SDL_EVENT_WINDOW_MAXIMIZED: @@ -115,6 +120,7 @@ void WindowSDL::waitEvent() { void WindowSDL::onResize() { SDL_GetWindowSizeInPixels(window, &width, &height); + ImGui::Core::OnResize(); } void WindowSDL::onKeyPress(const SDL_Event* event) { @@ -194,11 +200,6 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; case SDLK_S: - if (event->key.mod == SDL_KMOD_LCTRL) { - // Trigger rdoc capture - VideoCore::TriggerCapture(); - break; - } axis = Input::Axis::LeftY; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += 127; @@ -287,6 +288,12 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } } break; + case SDLK_F12: + if (event->type == SDL_EVENT_KEY_DOWN) { + // Trigger rdoc capture + VideoCore::TriggerCapture(); + } + break; default: break; } diff --git a/src/sdl_window.h b/src/sdl_window.h index 11ee92896c..2a5aeb38c0 100644 --- a/src/sdl_window.h +++ b/src/sdl_window.h @@ -58,6 +58,10 @@ class WindowSDL { return is_open; } + [[nodiscard]] SDL_Window* GetSdlWindow() const { + return window; + } + WindowSystemInfo getWindowInfo() const { return window_info; } diff --git a/src/shader_recompiler/backend/bindings.h b/src/shader_recompiler/backend/bindings.h index 1b53c74eb1..510b0c0ec7 100644 --- a/src/shader_recompiler/backend/bindings.h +++ b/src/shader_recompiler/backend/bindings.h @@ -9,10 +9,10 @@ namespace Shader::Backend { struct Bindings { u32 unified{}; - u32 uniform_buffer{}; - u32 storage_buffer{}; - u32 texture{}; - u32 image{}; + u32 buffer{}; + u32 user_data{}; + + auto operator<=>(const Bindings&) const = default; }; } // namespace Shader::Backend diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.cpp b/src/shader_recompiler/backend/spirv/emit_spirv.cpp index 98eac08190..8aa292b1c7 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv.cpp @@ -184,6 +184,9 @@ void DefineEntryPoint(const IR::Program& program, EmitContext& ctx, Id main) { ctx.AddCapability(spv::Capability::Float16); ctx.AddCapability(spv::Capability::Int16); } + if (info.uses_fp64) { + ctx.AddCapability(spv::Capability::Float64); + } ctx.AddCapability(spv::Capability::Int64); if (info.has_storage_images || info.has_image_buffers) { ctx.AddCapability(spv::Capability::StorageImageExtendedFormats); @@ -208,9 +211,12 @@ void DefineEntryPoint(const IR::Program& program, EmitContext& ctx, Id main) { if (info.uses_group_quad) { ctx.AddCapability(spv::Capability::GroupNonUniformQuad); } + if (info.uses_group_ballot) { + ctx.AddCapability(spv::Capability::GroupNonUniformBallot); + } switch (program.info.stage) { case Stage::Compute: { - const std::array workgroup_size{program.info.workgroup_size}; + const std::array workgroup_size{ctx.runtime_info.cs_info.workgroup_size}; execution_model = spv::ExecutionModel::GLCompute; ctx.AddExecutionMode(main, spv::ExecutionMode::LocalSize, workgroup_size[0], workgroup_size[1], workgroup_size[2]); @@ -258,8 +264,9 @@ void PatchPhiNodes(const IR::Program& program, EmitContext& ctx) { } } // Anonymous namespace -std::vector EmitSPIRV(const Profile& profile, const IR::Program& program, u32& binding) { - EmitContext ctx{profile, program.info, binding}; +std::vector EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info, + const IR::Program& program, Bindings& binding) { + EmitContext ctx{profile, runtime_info, program.info, binding}; const Id main{DefineMain(ctx, program)}; DefineEntryPoint(program, ctx, main); if (program.info.stage == Stage::Vertex) { @@ -326,6 +333,10 @@ void EmitGetVccHi(EmitContext& ctx) { UNREACHABLE_MSG("Unreachable instruction"); } +void EmitGetM0(EmitContext& ctx) { + UNREACHABLE_MSG("Unreachable instruction"); +} + void EmitSetScc(EmitContext& ctx) { UNREACHABLE_MSG("Unreachable instruction"); } @@ -350,4 +361,8 @@ void EmitSetVccHi(EmitContext& ctx) { UNREACHABLE_MSG("Unreachable instruction"); } +void EmitSetM0(EmitContext& ctx) { + UNREACHABLE_MSG("Unreachable instruction"); +} + } // namespace Shader::Backend::SPIRV diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.h b/src/shader_recompiler/backend/spirv/emit_spirv.h index 4c862185fe..5b8da44961 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv.h +++ b/src/shader_recompiler/backend/spirv/emit_spirv.h @@ -4,12 +4,13 @@ #pragma once #include +#include "shader_recompiler/backend/bindings.h" #include "shader_recompiler/ir/program.h" #include "shader_recompiler/profile.h" namespace Shader::Backend::SPIRV { -[[nodiscard]] std::vector EmitSPIRV(const Profile& profile, const IR::Program& program, - u32& binding); +[[nodiscard]] std::vector EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info, + const IR::Program& program, Bindings& binding); } // namespace Shader::Backend::SPIRV diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp index 1d553dc568..a58b2778fd 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp @@ -152,4 +152,20 @@ Id EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id co return ImageAtomicU32(ctx, inst, handle, coords, value, &Sirit::Module::OpAtomicExchange); } +Id EmitDataAppend(EmitContext& ctx, u32 gds_addr, u32 binding) { + auto& buffer = ctx.buffers[binding]; + const Id ptr = ctx.OpAccessChain(buffer.pointer_type, buffer.id, ctx.u32_zero_value, + ctx.ConstU32(gds_addr)); + const auto [scope, semantics]{AtomicArgs(ctx)}; + return ctx.OpAtomicIIncrement(ctx.U32[1], ptr, scope, semantics); +} + +Id EmitDataConsume(EmitContext& ctx, u32 gds_addr, u32 binding) { + auto& buffer = ctx.buffers[binding]; + const Id ptr = ctx.OpAccessChain(buffer.pointer_type, buffer.id, ctx.u32_zero_value, + ctx.ConstU32(gds_addr)); + const auto [scope, semantics]{AtomicArgs(ctx)}; + return ctx.OpAtomicIDecrement(ctx.U32[1], ptr, scope, semantics); +} + } // namespace Shader::Backend::SPIRV diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp index 03a0a00f08..02ac74e19d 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp @@ -14,8 +14,8 @@ Id EmitBitCastU32F32(EmitContext& ctx, Id value) { return ctx.OpBitcast(ctx.U32[1], value); } -void EmitBitCastU64F64(EmitContext&) { - UNREACHABLE_MSG("SPIR-V Instruction"); +Id EmitBitCastU64F64(EmitContext& ctx, Id value) { + return ctx.OpBitcast(ctx.U64, value); } Id EmitBitCastF16U16(EmitContext& ctx, Id value) { @@ -38,6 +38,10 @@ Id EmitUnpackUint2x32(EmitContext& ctx, Id value) { return ctx.OpBitcast(ctx.U32[2], value); } +Id EmitPackFloat2x32(EmitContext& ctx, Id value) { + return ctx.OpBitcast(ctx.F64[1], value); +} + Id EmitPackFloat2x16(EmitContext& ctx, Id value) { return ctx.OpBitcast(ctx.U32[1], value); } diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp index 7bdc98de94..92279c5fb0 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp @@ -59,7 +59,7 @@ Id OutputAttrPointer(EmitContext& ctx, IR::Attribute attr, u32 element) { case IR::Attribute::Position2: case IR::Attribute::Position3: { const u32 index = u32(attr) - u32(IR::Attribute::Position1); - return VsOutputAttrPointer(ctx, ctx.info.vs_outputs[index][element]); + return VsOutputAttrPointer(ctx, ctx.runtime_info.vs_info.outputs[index][element]); } case IR::Attribute::RenderTarget0: case IR::Attribute::RenderTarget1: @@ -86,7 +86,14 @@ Id OutputAttrPointer(EmitContext& ctx, IR::Attribute attr, u32 element) { } // Anonymous namespace Id EmitGetUserData(EmitContext& ctx, IR::ScalarReg reg) { - return ctx.ConstU32(ctx.info.user_data[static_cast(reg)]); + const u32 index = ctx.binding.user_data + ctx.info.ud_mask.Index(reg); + const u32 half = PushData::UdRegsIndex + (index >> 2); + const Id ud_ptr{ctx.OpAccessChain(ctx.TypePointer(spv::StorageClass::PushConstant, ctx.U32[1]), + ctx.push_data_block, ctx.ConstU32(half), + ctx.ConstU32(index & 3))}; + const Id ud_reg{ctx.OpLoad(ctx.U32[1], ud_ptr)}; + ctx.Name(ud_reg, fmt::format("ud_{}", u32(reg))); + return ud_reg; } void EmitGetThreadBitScalarReg(EmitContext& ctx) { @@ -133,10 +140,6 @@ Id EmitReadConstBuffer(EmitContext& ctx, u32 handle, Id index) { return ctx.OpLoad(buffer.data_types->Get(1), ptr); } -Id EmitReadConstBufferU32(EmitContext& ctx, u32 handle, Id index) { - return ctx.OpBitcast(ctx.U32[1], EmitReadConstBuffer(ctx, handle, index)); -} - Id EmitReadStepRate(EmitContext& ctx, int rate_idx) { return ctx.OpLoad( ctx.U32[1], ctx.OpAccessChain(ctx.TypePointer(spv::StorageClass::PushConstant, ctx.U32[1]), @@ -222,12 +225,8 @@ void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, Id value, u32 elemen ctx.OpStore(pointer, ctx.OpBitcast(ctx.F32[1], value)); } -Id EmitLoadBufferU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address) { - return EmitLoadBufferF32(ctx, inst, handle, address); -} - template -static Id EmitLoadBufferF32xN(EmitContext& ctx, u32 handle, Id address) { +static Id EmitLoadBufferU32xN(EmitContext& ctx, u32 handle, Id address) { auto& buffer = ctx.buffers[handle]; address = ctx.OpIAdd(ctx.U32[1], address, buffer.offset); const Id index = ctx.OpShiftRightLogical(ctx.U32[1], address, ctx.ConstU32(2u)); @@ -246,20 +245,20 @@ static Id EmitLoadBufferF32xN(EmitContext& ctx, u32 handle, Id address) { } } -Id EmitLoadBufferF32(EmitContext& ctx, IR::Inst*, u32 handle, Id address) { - return EmitLoadBufferF32xN<1>(ctx, handle, address); +Id EmitLoadBufferU32(EmitContext& ctx, IR::Inst*, u32 handle, Id address) { + return EmitLoadBufferU32xN<1>(ctx, handle, address); } -Id EmitLoadBufferF32x2(EmitContext& ctx, IR::Inst*, u32 handle, Id address) { - return EmitLoadBufferF32xN<2>(ctx, handle, address); +Id EmitLoadBufferU32x2(EmitContext& ctx, IR::Inst*, u32 handle, Id address) { + return EmitLoadBufferU32xN<2>(ctx, handle, address); } -Id EmitLoadBufferF32x3(EmitContext& ctx, IR::Inst*, u32 handle, Id address) { - return EmitLoadBufferF32xN<3>(ctx, handle, address); +Id EmitLoadBufferU32x3(EmitContext& ctx, IR::Inst*, u32 handle, Id address) { + return EmitLoadBufferU32xN<3>(ctx, handle, address); } -Id EmitLoadBufferF32x4(EmitContext& ctx, IR::Inst*, u32 handle, Id address) { - return EmitLoadBufferF32xN<4>(ctx, handle, address); +Id EmitLoadBufferU32x4(EmitContext& ctx, IR::Inst*, u32 handle, Id address) { + return EmitLoadBufferU32xN<4>(ctx, handle, address); } Id EmitLoadBufferFormatF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address) { @@ -275,7 +274,7 @@ Id EmitLoadBufferFormatF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id addr } template -static void EmitStoreBufferF32xN(EmitContext& ctx, u32 handle, Id address, Id value) { +static void EmitStoreBufferU32xN(EmitContext& ctx, u32 handle, Id address, Id value) { auto& buffer = ctx.buffers[handle]; address = ctx.OpIAdd(ctx.U32[1], address, buffer.offset); const Id index = ctx.OpShiftRightLogical(ctx.U32[1], address, ctx.ConstU32(2u)); @@ -287,29 +286,25 @@ static void EmitStoreBufferF32xN(EmitContext& ctx, u32 handle, Id address, Id va const Id index_i = ctx.OpIAdd(ctx.U32[1], index, ctx.ConstU32(i)); const Id ptr = ctx.OpAccessChain(buffer.pointer_type, buffer.id, ctx.u32_zero_value, index_i); - ctx.OpStore(ptr, ctx.OpCompositeExtract(ctx.F32[1], value, i)); + ctx.OpStore(ptr, ctx.OpCompositeExtract(buffer.data_types->Get(1), value, i)); } } } -void EmitStoreBufferF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { - EmitStoreBufferF32xN<1>(ctx, handle, address, value); -} - -void EmitStoreBufferF32x2(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { - EmitStoreBufferF32xN<2>(ctx, handle, address, value); +void EmitStoreBufferU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { + EmitStoreBufferU32xN<1>(ctx, handle, address, value); } -void EmitStoreBufferF32x3(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { - EmitStoreBufferF32xN<3>(ctx, handle, address, value); +void EmitStoreBufferU32x2(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { + EmitStoreBufferU32xN<2>(ctx, handle, address, value); } -void EmitStoreBufferF32x4(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { - EmitStoreBufferF32xN<4>(ctx, handle, address, value); +void EmitStoreBufferU32x3(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { + EmitStoreBufferU32xN<3>(ctx, handle, address, value); } -void EmitStoreBufferU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { - EmitStoreBufferF32xN<1>(ctx, handle, address, value); +void EmitStoreBufferU32x4(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { + EmitStoreBufferU32xN<4>(ctx, handle, address, value); } void EmitStoreBufferFormatF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) { @@ -317,7 +312,7 @@ void EmitStoreBufferFormatF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id a const Id tex_buffer = ctx.OpLoad(buffer.image_type, buffer.id); const Id coord = ctx.OpIAdd(ctx.U32[1], address, buffer.coord_offset); if (buffer.is_integer) { - value = ctx.OpBitcast(ctx.U32[4], value); + value = ctx.OpBitcast(buffer.result_type, value); } ctx.OpImageWrite(tex_buffer, coord, value); } diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp index 530f381d77..50d9cc8cb8 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp @@ -157,17 +157,20 @@ Id EmitImageFetch(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, const ImageOperands operands; operands.AddOffset(ctx, offset); operands.Add(spv::ImageOperandsMask::Lod, lod); - return ctx.OpBitcast( - ctx.F32[4], ctx.OpImageFetch(result_type, image, coords, operands.mask, operands.operands)); + const Id texel = + texture.is_storage + ? ctx.OpImageRead(result_type, image, coords, operands.mask, operands.operands) + : ctx.OpImageFetch(result_type, image, coords, operands.mask, operands.operands); + return ctx.OpBitcast(ctx.F32[4], texel); } -Id EmitImageQueryDimensions(EmitContext& ctx, IR::Inst* inst, u32 handle, Id lod, bool skip_mips) { +Id EmitImageQueryDimensions(EmitContext& ctx, IR::Inst* inst, u32 handle, Id lod, bool has_mips) { const auto& texture = ctx.images[handle & 0xFFFF]; const Id image = ctx.OpLoad(texture.image_type, texture.id); const auto type = ctx.info.images[handle & 0xFFFF].type; const Id zero = ctx.u32_zero_value; - const auto mips{[&] { return skip_mips ? zero : ctx.OpImageQueryLevels(ctx.U32[1], image); }}; - const bool uses_lod{type != AmdGpu::ImageType::Color2DMsaa}; + const auto mips{[&] { return has_mips ? ctx.OpImageQueryLevels(ctx.U32[1], image) : zero; }}; + const bool uses_lod{type != AmdGpu::ImageType::Color2DMsaa && !texture.is_storage}; const auto query{[&](Id type) { return uses_lod ? ctx.OpImageQuerySizeLod(type, image, lod) : ctx.OpImageQuerySize(type, image); @@ -178,6 +181,7 @@ Id EmitImageQueryDimensions(EmitContext& ctx, IR::Inst* inst, u32 handle, Id lod case AmdGpu::ImageType::Color1DArray: case AmdGpu::ImageType::Color2D: case AmdGpu::ImageType::Cube: + case AmdGpu::ImageType::Color2DMsaa: return ctx.OpCompositeConstruct(ctx.U32[4], query(ctx.U32[2]), zero, mips()); case AmdGpu::ImageType::Color2DArray: case AmdGpu::ImageType::Color3D: diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h index ce4d3f1378..3bdea9c1a9 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h +++ b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h @@ -36,12 +36,14 @@ void EmitGetVcc(EmitContext& ctx); void EmitGetSccLo(EmitContext& ctx); void EmitGetVccLo(EmitContext& ctx); void EmitGetVccHi(EmitContext& ctx); +void EmitGetM0(EmitContext& ctx); void EmitSetScc(EmitContext& ctx); void EmitSetExec(EmitContext& ctx); void EmitSetVcc(EmitContext& ctx); void EmitSetSccLo(EmitContext& ctx); void EmitSetVccLo(EmitContext& ctx); void EmitSetVccHi(EmitContext& ctx); +void EmitSetM0(EmitContext& ctx); void EmitFPCmpClass32(EmitContext& ctx); void EmitPrologue(EmitContext& ctx); void EmitEpilogue(EmitContext& ctx); @@ -62,25 +64,16 @@ void EmitGetGotoVariable(EmitContext& ctx); void EmitSetScc(EmitContext& ctx); Id EmitReadConst(EmitContext& ctx); Id EmitReadConstBuffer(EmitContext& ctx, u32 handle, Id index); -Id EmitReadConstBufferU32(EmitContext& ctx, u32 handle, Id index); -Id EmitLoadBufferF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); -Id EmitLoadBufferF32x2(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); -Id EmitLoadBufferF32x3(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); -Id EmitLoadBufferF32x4(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); -Id EmitLoadBufferFormatF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); -Id EmitLoadBufferFormatF32x2(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); -Id EmitLoadBufferFormatF32x3(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); -Id EmitLoadBufferFormatF32x4(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); Id EmitLoadBufferU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); -void EmitStoreBufferF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); -void EmitStoreBufferF32x2(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); -void EmitStoreBufferF32x3(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); -void EmitStoreBufferF32x4(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); -void EmitStoreBufferFormatF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); -void EmitStoreBufferFormatF32x2(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); -void EmitStoreBufferFormatF32x3(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); -void EmitStoreBufferFormatF32x4(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); +Id EmitLoadBufferU32x2(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); +Id EmitLoadBufferU32x3(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); +Id EmitLoadBufferU32x4(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); +Id EmitLoadBufferFormatF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address); void EmitStoreBufferU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); +void EmitStoreBufferU32x2(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); +void EmitStoreBufferU32x3(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); +void EmitStoreBufferU32x4(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); +void EmitStoreBufferFormatF32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); Id EmitBufferAtomicIAdd32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); Id EmitBufferAtomicSMin32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); Id EmitBufferAtomicUMin32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value); @@ -165,12 +158,13 @@ Id EmitSelectF32(EmitContext& ctx, Id cond, Id true_value, Id false_value); Id EmitSelectF64(EmitContext& ctx, Id cond, Id true_value, Id false_value); Id EmitBitCastU16F16(EmitContext& ctx, Id value); Id EmitBitCastU32F32(EmitContext& ctx, Id value); -void EmitBitCastU64F64(EmitContext& ctx); +Id EmitBitCastU64F64(EmitContext& ctx, Id value); Id EmitBitCastF16U16(EmitContext& ctx, Id value); Id EmitBitCastF32U32(EmitContext& ctx, Id value); void EmitBitCastF64U64(EmitContext& ctx); Id EmitPackUint2x32(EmitContext& ctx, Id value); Id EmitUnpackUint2x32(EmitContext& ctx, Id value); +Id EmitPackFloat2x32(EmitContext& ctx, Id value); Id EmitPackFloat2x16(EmitContext& ctx, Id value); Id EmitUnpackFloat2x16(EmitContext& ctx, Id value); Id EmitPackHalf2x16(EmitContext& ctx, Id value); @@ -276,6 +270,8 @@ Id EmitIMul32(EmitContext& ctx, Id a, Id b); Id EmitIMul64(EmitContext& ctx, Id a, Id b); Id EmitSDiv32(EmitContext& ctx, Id a, Id b); Id EmitUDiv32(EmitContext& ctx, Id a, Id b); +Id EmitSMod32(EmitContext& ctx, Id a, Id b); +Id EmitUMod32(EmitContext& ctx, Id a, Id b); Id EmitINeg32(EmitContext& ctx, Id value); Id EmitINeg64(EmitContext& ctx, Id value); Id EmitIAbs32(EmitContext& ctx, Id value); @@ -404,12 +400,13 @@ Id EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id EmitImageAtomicOr32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value); Id EmitImageAtomicXor32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value); Id EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value); - Id EmitLaneId(EmitContext& ctx); Id EmitWarpId(EmitContext& ctx); Id EmitQuadShuffle(EmitContext& ctx, Id value, Id index); Id EmitReadFirstLane(EmitContext& ctx, Id value); Id EmitReadLane(EmitContext& ctx, Id value, u32 lane); Id EmitWriteLane(EmitContext& ctx, Id value, Id write_value, u32 lane); +Id EmitDataAppend(EmitContext& ctx, u32 gds_addr, u32 binding); +Id EmitDataConsume(EmitContext& ctx, u32 gds_addr, u32 binding); } // namespace Shader::Backend::SPIRV diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp index a9becb1eb8..02af92385d 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp @@ -96,6 +96,14 @@ Id EmitUDiv32(EmitContext& ctx, Id a, Id b) { return ctx.OpUDiv(ctx.U32[1], a, b); } +Id EmitSMod32(EmitContext& ctx, Id a, Id b) { + return ctx.OpSMod(ctx.U32[1], a, b); +} + +Id EmitUMod32(EmitContext& ctx, Id a, Id b) { + return ctx.OpUMod(ctx.U32[1], a, b); +} + Id EmitINeg32(EmitContext& ctx, Id value) { return ctx.OpSNegate(ctx.U32[1], value); } diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp index 3ed89692bd..283c9b16f1 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp @@ -10,7 +10,21 @@ void EmitPrologue(EmitContext& ctx) { ctx.DefineBufferOffsets(); } -void EmitEpilogue(EmitContext& ctx) {} +void ConvertDepthMode(EmitContext& ctx) { + const Id type{ctx.F32[1]}; + const Id position{ctx.OpLoad(ctx.F32[4], ctx.output_position)}; + const Id z{ctx.OpCompositeExtract(type, position, 2u)}; + const Id w{ctx.OpCompositeExtract(type, position, 3u)}; + const Id screen_depth{ctx.OpFMul(type, ctx.OpFAdd(type, z, w), ctx.Constant(type, 0.5f))}; + const Id vector{ctx.OpCompositeInsert(ctx.F32[4], screen_depth, position, 2u)}; + ctx.OpStore(ctx.output_position, vector); +} + +void EmitEpilogue(EmitContext& ctx) { + if (ctx.stage == Stage::Vertex && ctx.runtime_info.vs_info.emulate_depth_negative_one_to_one) { + ConvertDepthMode(ctx); + } +} void EmitDiscard(EmitContext& ctx) { ctx.OpDemoteToHelperInvocationEXT(); diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp index c55763c5d9..2d13d09f0a 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp @@ -23,11 +23,12 @@ Id EmitQuadShuffle(EmitContext& ctx, Id value, Id index) { } Id EmitReadFirstLane(EmitContext& ctx, Id value) { - UNREACHABLE(); + return ctx.OpGroupNonUniformBroadcastFirst(ctx.U32[1], SubgroupScope(ctx), value); } Id EmitReadLane(EmitContext& ctx, Id value, u32 lane) { - UNREACHABLE(); + return ctx.OpGroupNonUniformBroadcast(ctx.U32[1], SubgroupScope(ctx), value, + ctx.ConstU32(lane)); } Id EmitWriteLane(EmitContext& ctx, Id value, Id write_value, u32 lane) { diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp index 4ae6e68d98..06dc268738 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp @@ -41,9 +41,10 @@ void Name(EmitContext& ctx, Id object, std::string_view format_str, Args&&... ar } // Anonymous namespace -EmitContext::EmitContext(const Profile& profile_, const Shader::Info& info_, u32& binding_) - : Sirit::Module(profile_.supported_spirv), info{info_}, profile{profile_}, stage{info.stage}, - binding{binding_} { +EmitContext::EmitContext(const Profile& profile_, const RuntimeInfo& runtime_info_, + const Info& info_, Bindings& binding_) + : Sirit::Module(profile_.supported_spirv), info{info_}, runtime_info{runtime_info_}, + profile{profile_}, stage{info.stage}, binding{binding_} { AddCapability(spv::Capability::Shader); DefineArithmeticTypes(); DefineInterfaces(); @@ -84,6 +85,9 @@ void EmitContext::DefineArithmeticTypes() { F16[1] = Name(TypeFloat(16), "f16_id"); U16 = Name(TypeUInt(16), "u16_id"); } + if (info.uses_fp64) { + F64[1] = Name(TypeFloat(64), "f64_id"); + } F32[1] = Name(TypeFloat(32), "f32_id"); S32[1] = Name(TypeSInt(32), "i32_id"); U32[1] = Name(TypeUInt(32), "u32_id"); @@ -93,6 +97,9 @@ void EmitContext::DefineArithmeticTypes() { if (info.uses_fp16) { F16[i] = Name(TypeVector(F16[1], i), fmt::format("f16vec{}_id", i)); } + if (info.uses_fp64) { + F64[i] = Name(TypeVector(F64[1], i), fmt::format("f64vec{}_id", i)); + } F32[i] = Name(TypeVector(F32[1], i), fmt::format("f32vec{}_id", i)); S32[i] = Name(TypeVector(S32[1], i), fmt::format("i32vec{}_id", i)); U32[i] = Name(TypeVector(U32[1], i), fmt::format("u32vec{}_id", i)); @@ -166,26 +173,29 @@ EmitContext::SpirvAttribute EmitContext::GetAttributeInfo(AmdGpu::NumberFormat f } void EmitContext::DefineBufferOffsets() { - for (auto& buffer : buffers) { + for (BufferDefinition& buffer : buffers) { const u32 binding = buffer.binding; - const u32 half = Shader::PushData::BufOffsetIndex + (binding >> 4); + const u32 half = PushData::BufOffsetIndex + (binding >> 4); const u32 comp = (binding & 0xf) >> 2; const u32 offset = (binding & 0x3) << 3; const Id ptr{OpAccessChain(TypePointer(spv::StorageClass::PushConstant, U32[1]), push_data_block, ConstU32(half), ConstU32(comp))}; const Id value{OpLoad(U32[1], ptr)}; buffer.offset = OpBitFieldUExtract(U32[1], value, ConstU32(offset), ConstU32(8U)); + Name(buffer.offset, fmt::format("buf{}_off", binding)); buffer.offset_dwords = OpShiftRightLogical(U32[1], buffer.offset, ConstU32(2U)); + Name(buffer.offset_dwords, fmt::format("buf{}_dword_off", binding)); } - for (auto& tex_buffer : texture_buffers) { + for (TextureBufferDefinition& tex_buffer : texture_buffers) { const u32 binding = tex_buffer.binding; - const u32 half = Shader::PushData::BufOffsetIndex + (binding >> 4); + const u32 half = PushData::BufOffsetIndex + (binding >> 4); const u32 comp = (binding & 0xf) >> 2; const u32 offset = (binding & 0x3) << 3; const Id ptr{OpAccessChain(TypePointer(spv::StorageClass::PushConstant, U32[1]), push_data_block, ConstU32(half), ConstU32(comp))}; const Id value{OpLoad(U32[1], ptr)}; - tex_buffer.coord_offset = OpBitFieldUExtract(U32[1], value, ConstU32(offset), ConstU32(8U)); + tex_buffer.coord_offset = OpBitFieldUExtract(U32[1], value, ConstU32(offset), ConstU32(6U)); + Name(tex_buffer.coord_offset, fmt::format("texbuf{}_off", binding)); } } @@ -247,7 +257,7 @@ void EmitContext::DefineInputs() { frag_coord = DefineVariable(F32[4], spv::BuiltIn::FragCoord, spv::StorageClass::Input); frag_depth = DefineVariable(F32[1], spv::BuiltIn::FragDepth, spv::StorageClass::Output); front_facing = DefineVariable(U1[1], spv::BuiltIn::FrontFacing, spv::StorageClass::Input); - for (const auto& input : info.ps_inputs) { + for (const auto& input : runtime_info.fs_info.inputs) { const u32 semantic = input.param_index; if (input.is_default && !input.is_flat) { input_params[semantic] = {MakeDefaultValue(*this, input.default_value), F32[1], @@ -323,16 +333,25 @@ void EmitContext::DefineOutputs() { void EmitContext::DefinePushDataBlock() { // Create push constants block for instance steps rates - const Id struct_type{Name(TypeStruct(U32[1], U32[1], U32[4], U32[4]), "AuxData")}; + const Id struct_type{Name( + TypeStruct(U32[1], U32[1], U32[4], U32[4], U32[4], U32[4], U32[4], U32[4]), "AuxData")}; Decorate(struct_type, spv::Decoration::Block); MemberName(struct_type, 0, "sr0"); MemberName(struct_type, 1, "sr1"); MemberName(struct_type, 2, "buf_offsets0"); MemberName(struct_type, 3, "buf_offsets1"); + MemberName(struct_type, 4, "ud_regs0"); + MemberName(struct_type, 5, "ud_regs1"); + MemberName(struct_type, 6, "ud_regs2"); + MemberName(struct_type, 7, "ud_regs3"); MemberDecorate(struct_type, 0, spv::Decoration::Offset, 0U); MemberDecorate(struct_type, 1, spv::Decoration::Offset, 4U); MemberDecorate(struct_type, 2, spv::Decoration::Offset, 8U); MemberDecorate(struct_type, 3, spv::Decoration::Offset, 24U); + MemberDecorate(struct_type, 4, spv::Decoration::Offset, 40U); + MemberDecorate(struct_type, 5, spv::Decoration::Offset, 56U); + MemberDecorate(struct_type, 6, spv::Decoration::Offset, 72U); + MemberDecorate(struct_type, 7, spv::Decoration::Offset, 88U); push_data_block = DefineVar(struct_type, spv::StorageClass::PushConstant); Name(push_data_block, "push_data"); interfaces.push_back(push_data_block); @@ -370,7 +389,7 @@ void EmitContext::DefineBuffers() { const Id struct_pointer_type{TypePointer(storage_class, struct_type)}; const Id pointer_type = TypePointer(storage_class, data_type); const Id id{AddGlobalVariable(struct_pointer_type, storage_class)}; - Decorate(id, spv::Decoration::Binding, binding); + Decorate(id, spv::Decoration::Binding, binding.unified++); Decorate(id, spv::Decoration::DescriptorSet, 0U); if (is_storage && !desc.is_written) { Decorate(id, spv::Decoration::NonWritable); @@ -379,7 +398,7 @@ void EmitContext::DefineBuffers() { buffers.push_back({ .id = id, - .binding = binding++, + .binding = binding.buffer++, .data_types = data_types, .pointer_type = pointer_type, }); @@ -397,12 +416,12 @@ void EmitContext::DefineTextureBuffers() { sampled, spv::ImageFormat::Unknown)}; const Id pointer_type{TypePointer(spv::StorageClass::UniformConstant, image_type)}; const Id id{AddGlobalVariable(pointer_type, spv::StorageClass::UniformConstant)}; - Decorate(id, spv::Decoration::Binding, binding); + Decorate(id, spv::Decoration::Binding, binding.unified++); Decorate(id, spv::Decoration::DescriptorSet, 0U); Name(id, fmt::format("{}_{}", desc.is_written ? "imgbuf" : "texbuf", desc.sgpr_base)); texture_buffers.push_back({ .id = id, - .binding = binding++, + .binding = binding.buffer++, .image_type = image_type, .result_type = sampled_type[4], .is_integer = is_integer, @@ -506,10 +525,13 @@ Id ImageType(EmitContext& ctx, const ImageResource& desc, Id sampled_type) { return ctx.TypeImage(sampled_type, spv::Dim::Dim2D, false, false, false, sampled, format); case AmdGpu::ImageType::Color2DArray: return ctx.TypeImage(sampled_type, spv::Dim::Dim2D, false, true, false, sampled, format); + case AmdGpu::ImageType::Color2DMsaa: + return ctx.TypeImage(sampled_type, spv::Dim::Dim2D, false, false, true, sampled, format); case AmdGpu::ImageType::Color3D: return ctx.TypeImage(sampled_type, spv::Dim::Dim3D, false, false, false, sampled, format); case AmdGpu::ImageType::Cube: - return ctx.TypeImage(sampled_type, spv::Dim::Cube, false, false, false, sampled, format); + return ctx.TypeImage(sampled_type, spv::Dim::Cube, false, desc.is_array, false, sampled, + format); default: break; } @@ -523,7 +545,7 @@ void EmitContext::DefineImagesAndSamplers() { const Id image_type{ImageType(*this, image_desc, sampled_type)}; const Id pointer_type{TypePointer(spv::StorageClass::UniformConstant, image_type)}; const Id id{AddGlobalVariable(pointer_type, spv::StorageClass::UniformConstant)}; - Decorate(id, spv::Decoration::Binding, binding); + Decorate(id, spv::Decoration::Binding, binding.unified++); Decorate(id, spv::Decoration::DescriptorSet, 0U); Name(id, fmt::format("{}_{}{}_{:02x}", stage, "img", image_desc.sgpr_base, image_desc.dword_offset)); @@ -533,9 +555,9 @@ void EmitContext::DefineImagesAndSamplers() { .sampled_type = image_desc.is_storage ? sampled_type : TypeSampledImage(image_type), .pointer_type = pointer_type, .image_type = image_type, + .is_storage = image_desc.is_storage, }); interfaces.push_back(id); - ++binding; } if (std::ranges::any_of(info.images, &ImageResource::is_atomic)) { image_u32 = TypePointer(spv::StorageClass::Image, U32[1]); @@ -547,13 +569,12 @@ void EmitContext::DefineImagesAndSamplers() { sampler_pointer_type = TypePointer(spv::StorageClass::UniformConstant, sampler_type); for (const auto& samp_desc : info.samplers) { const Id id{AddGlobalVariable(sampler_pointer_type, spv::StorageClass::UniformConstant)}; - Decorate(id, spv::Decoration::Binding, binding); + Decorate(id, spv::Decoration::Binding, binding.unified++); Decorate(id, spv::Decoration::DescriptorSet, 0U); Name(id, fmt::format("{}_{}{}_{:02x}", stage, "samp", samp_desc.sgpr_base, samp_desc.dword_offset)); samplers.push_back(id); interfaces.push_back(id); - ++binding; } } @@ -562,7 +583,7 @@ void EmitContext::DefineSharedMemory() { if (!info.uses_shared) { return; } - u32 shared_memory_size = info.shared_memory_size; + u32 shared_memory_size = runtime_info.cs_info.shared_memory_size; if (shared_memory_size == 0) { shared_memory_size = DefaultSharedMemSize; } diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.h b/src/shader_recompiler/backend/spirv/spirv_emit_context.h index d3646382f6..9029866b09 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.h +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.h @@ -6,9 +6,10 @@ #include #include +#include "shader_recompiler/backend/bindings.h" +#include "shader_recompiler/info.h" #include "shader_recompiler/ir/program.h" #include "shader_recompiler/profile.h" -#include "shader_recompiler/runtime_info.h" namespace Shader::Backend::SPIRV { @@ -36,7 +37,8 @@ struct VectorIds { class EmitContext final : public Sirit::Module { public: - explicit EmitContext(const Profile& profile, const Shader::Info& info, u32& binding); + explicit EmitContext(const Profile& profile, const RuntimeInfo& runtime_info, const Info& info, + Bindings& binding); ~EmitContext(); Id Def(const IR::Value& value); @@ -125,6 +127,7 @@ class EmitContext final : public Sirit::Module { } const Info& info; + const RuntimeInfo& runtime_info; const Profile& profile; Stage stage{}; @@ -198,6 +201,7 @@ class EmitContext final : public Sirit::Module { Id sampled_type; Id pointer_type; Id image_type; + bool is_storage = false; }; struct BufferDefinition { @@ -214,11 +218,11 @@ class EmitContext final : public Sirit::Module { u32 binding; Id image_type; Id result_type; - bool is_integer; - bool is_storage; + bool is_integer = false; + bool is_storage = false; }; - u32& binding; + Bindings& binding; boost::container::small_vector buffers; boost::container::small_vector texture_buffers; boost::container::small_vector images; diff --git a/src/shader_recompiler/frontend/control_flow_graph.cpp b/src/shader_recompiler/frontend/control_flow_graph.cpp index 276bd9db03..9d481d32c4 100644 --- a/src/shader_recompiler/frontend/control_flow_graph.cpp +++ b/src/shader_recompiler/frontend/control_flow_graph.cpp @@ -23,7 +23,6 @@ struct Compare { static IR::Condition MakeCondition(const GcnInst& inst) { if (inst.IsCmpx()) { - ASSERT(inst.opcode == Opcode::V_CMPX_NE_U32); return IR::Condition::Execnz; } @@ -99,7 +98,7 @@ void CFG::EmitDivergenceLabels() { // with SAVEEXEC to mask the threads that didn't pass the condition // of initial branch. (inst.opcode == Opcode::S_ANDN2_B64 && inst.dst[0].field == OperandField::ExecLo) || - inst.opcode == Opcode::V_CMPX_NE_U32; + inst.IsCmpx(); }; const auto is_close_scope = [](const GcnInst& inst) { // Closing an EXEC scope can be either a branch instruction @@ -109,7 +108,7 @@ void CFG::EmitDivergenceLabels() { // Sometimes compiler might insert instructions between the SAVEEXEC and the branch. // Those instructions need to be wrapped in the condition as well so allow branch // as end scope instruction. - inst.opcode == Opcode::S_CBRANCH_EXECZ || + inst.opcode == Opcode::S_CBRANCH_EXECZ || inst.opcode == Opcode::S_ENDPGM || (inst.opcode == Opcode::S_ANDN2_B64 && inst.dst[0].field == OperandField::ExecLo); }; @@ -127,7 +126,8 @@ void CFG::EmitDivergenceLabels() { s32 curr_begin = -1; for (size_t index = GetIndex(start); index < end_index; index++) { const auto& inst = inst_list[index]; - if (is_close_scope(inst) && curr_begin != -1) { + const bool is_close = is_close_scope(inst); + if ((is_close || index == end_index - 1) && curr_begin != -1) { // If there are no instructions inside scope don't do anything. if (index - curr_begin == 1) { curr_begin = -1; @@ -138,8 +138,16 @@ void CFG::EmitDivergenceLabels() { const auto& save_inst = inst_list[curr_begin]; const Label label = index_to_pc[curr_begin] + save_inst.length; AddLabel(label); - // Add a label to the close scope instruction as well. - AddLabel(index_to_pc[index]); + // Add a label to the close scope instruction. + // There are 3 cases where we need to close a scope. + // * Close scope instruction inside the block + // * Close scope instruction at the end of the block (cbranch or endpgm) + // * Normal instruction at the end of the block + // For the last case we must NOT add a label as that would cause + // the instruction to be separated into its own basic block. + if (is_close) { + AddLabel(index_to_pc[index]); + } // Reset scope begin. curr_begin = -1; } @@ -194,7 +202,7 @@ void CFG::LinkBlocks() { const auto end_inst{block.end_inst}; // Handle divergence block inserted here. if (end_inst.opcode == Opcode::S_AND_SAVEEXEC_B64 || - end_inst.opcode == Opcode::S_ANDN2_B64 || end_inst.opcode == Opcode::V_CMPX_NE_U32) { + end_inst.opcode == Opcode::S_ANDN2_B64 || end_inst.IsCmpx()) { // Blocks are stored ordered by address in the set auto next_it = std::next(it); auto* target_block = &(*next_it); diff --git a/src/shader_recompiler/frontend/decode.cpp b/src/shader_recompiler/frontend/decode.cpp index b5c02d7471..99e3a16f1a 100644 --- a/src/shader_recompiler/frontend/decode.cpp +++ b/src/shader_recompiler/frontend/decode.cpp @@ -5,6 +5,8 @@ #include "common/assert.h" #include "shader_recompiler/frontend/decode.h" +#include "magic_enum.hpp" + namespace Shader::Gcn { namespace bit { @@ -160,6 +162,8 @@ uint32_t GcnDecodeContext::getEncodingLength(InstEncoding encoding) { case InstEncoding::EXP: instLength = sizeof(uint64_t); break; + default: + break; } return instLength; } @@ -215,6 +219,8 @@ uint32_t GcnDecodeContext::getOpMapOffset(InstEncoding encoding) { case InstEncoding::VOP2: offset = (uint32_t)OpcodeMap::OP_MAP_VOP2; break; + default: + break; } return offset; } @@ -253,7 +259,9 @@ void GcnDecodeContext::updateInstructionMeta(InstEncoding encoding) { ASSERT_MSG(instFormat.src_type != ScalarType::Undefined && instFormat.dst_type != ScalarType::Undefined, - "TODO: Instruction format table not complete, please fix it manually."); + "Instruction format table incomplete for opcode {} ({}, encoding = {})", + magic_enum::enum_name(m_instruction.opcode), u32(m_instruction.opcode), + magic_enum::enum_name(encoding)); m_instruction.inst_class = instFormat.inst_class; m_instruction.category = instFormat.inst_category; @@ -307,6 +315,8 @@ void GcnDecodeContext::repairOperandType() { case Opcode::IMAGE_GATHER4_C: m_instruction.src[0].type = ScalarType::Any; break; + default: + break; } } @@ -359,6 +369,8 @@ void GcnDecodeContext::decodeInstruction32(InstEncoding encoding, GcnCodeSlice& case InstEncoding::VINTRP: decodeInstructionVINTRP(hexInstruction); break; + default: + break; } } @@ -383,6 +395,8 @@ void GcnDecodeContext::decodeInstruction64(InstEncoding encoding, GcnCodeSlice& case InstEncoding::EXP: decodeInstructionEXP(hexInstruction); break; + default: + break; } } @@ -489,9 +503,8 @@ void GcnDecodeContext::decodeInstructionVOP1(u32 hexInstruction) { OpcodeVOP1 vop1Op = static_cast(op); if (vop1Op == OpcodeVOP1::V_READFIRSTLANE_B32) { - m_instruction.dst[1].field = getOperandField(vdst); - m_instruction.dst[1].type = ScalarType::Uint32; - m_instruction.dst[1].code = vdst; + m_instruction.dst[0].field = getOperandField(vdst); + m_instruction.dst[0].type = ScalarType::Uint32; } } @@ -533,13 +546,15 @@ void GcnDecodeContext::decodeInstructionVOP2(u32 hexInstruction) { m_instruction.dst_count = 1; OpcodeVOP2 vop2Op = static_cast(op); - if (vop2Op == OpcodeVOP2::V_READLANE_B32 || vop2Op == OpcodeVOP2::V_WRITELANE_B32) { + if (vop2Op == OpcodeVOP2::V_READLANE_B32) { // vsrc1 is scalar for lane instructions m_instruction.src[1].field = getOperandField(vsrc1); // dst is sgpr - m_instruction.dst[1].field = OperandField::ScalarGPR; - m_instruction.dst[1].type = ScalarType::Uint32; - m_instruction.dst[1].code = vdst; + m_instruction.dst[0].field = getOperandField(vdst); + m_instruction.dst[0].type = ScalarType::Uint32; + } else if (vop2Op == OpcodeVOP2::V_WRITELANE_B32) { + m_instruction.src[1].field = getOperandField(vsrc1); + // dst is vgpr, as normal } else if (IsVop3BEncoding(m_instruction.opcode)) { m_instruction.dst[1].field = OperandField::VccLo; m_instruction.dst[1].type = ScalarType::Uint64; @@ -646,13 +661,11 @@ void GcnDecodeContext::decodeInstructionVOP3(uint64_t hexInstruction) { m_instruction.dst[1].field = getOperandField(vdst); m_instruction.dst[1].type = ScalarType::Uint64; m_instruction.dst[1].code = vdst; - } else if (vop3Op >= OpcodeVOP3::V_READLANE_B32 && vop3Op <= OpcodeVOP3::V_WRITELANE_B32) { - // vsrc1 is scalar for lane instructions - m_instruction.src[1].field = getOperandField(src1); - // dst is sgpr for lane instruction - m_instruction.dst[1].field = OperandField::ScalarGPR; - m_instruction.dst[1].type = ScalarType::Uint32; - m_instruction.dst[1].code = vdst; + } else if (vop3Op == OpcodeVOP3::V_READLANE_B32 || + vop3Op == OpcodeVOP3::V_READFIRSTLANE_B32) { + m_instruction.dst[0].field = getOperandField(vdst); + m_instruction.dst[0].type = ScalarType::Uint32; + // WRITELANE can be decoded like other VOP3's } } @@ -991,6 +1004,8 @@ u32 GcnDecodeContext::getMimgModifier(Opcode opcode) { flags.set(MimgModifier::Pcf, MimgModifier::CoarseDerivative, MimgModifier::LodClamp, MimgModifier::Offset); break; + default: + break; } return flags.raw(); @@ -1016,6 +1031,7 @@ void GcnDecodeContext::decodeInstructionMIMG(uint64_t hexInstruction) { m_instruction.control.mimg = *reinterpret_cast(&hexInstruction); m_instruction.control.mimg.mod = getMimgModifier(m_instruction.opcode); + ASSERT(m_instruction.control.mimg.r128 == 0); } void GcnDecodeContext::decodeInstructionDS(uint64_t hexInstruction) { @@ -1094,4 +1110,4 @@ void GcnDecodeContext::decodeInstructionEXP(uint64_t hexInstruction) { m_instruction.control.exp = *reinterpret_cast(&hexInstruction); } -} // namespace Shader::Gcn +} // namespace Shader::Gcn \ No newline at end of file diff --git a/src/shader_recompiler/frontend/format.cpp b/src/shader_recompiler/frontend/format.cpp index 8df3ac3640..90f10498a0 100644 --- a/src/shader_recompiler/frontend/format.cpp +++ b/src/shader_recompiler/frontend/format.cpp @@ -1786,8 +1786,7 @@ constexpr std::array InstructionFormatVOP3 = {{ constexpr std::array InstructionFormatVOP1 = {{ // 0 = V_NOP - {InstClass::VectorMisc, InstCategory::VectorALU, 0, 1, ScalarType::Undefined, - ScalarType::Undefined}, + {InstClass::VectorMisc, InstCategory::VectorALU, 0, 1, ScalarType::Any, ScalarType::Any}, // 1 = V_MOV_B32 {InstClass::VectorRegMov, InstCategory::VectorALU, 1, 1, ScalarType::Uint32, ScalarType::Uint32}, @@ -3603,8 +3602,8 @@ constexpr std::array InstructionFormatMIMG = {{ {InstClass::VectorMemImgSmp, InstCategory::VectorMemory, 4, 1, ScalarType::Undefined, ScalarType::Undefined}, // 79 = IMAGE_GATHER4_C_LZ - {InstClass::VectorMemImgSmp, InstCategory::VectorMemory, 4, 1, ScalarType::Undefined, - ScalarType::Undefined}, + {InstClass::VectorMemImgSmp, InstCategory::VectorMemory, 4, 1, ScalarType::Uint32, + ScalarType::Uint32}, // 80 = IMAGE_GATHER4_O {InstClass::VectorMemImgSmp, InstCategory::VectorMemory, 4, 1, ScalarType::Undefined, ScalarType::Undefined}, @@ -3656,8 +3655,8 @@ constexpr std::array InstructionFormatMIMG = {{ {}, {}, // 104 = IMAGE_SAMPLE_CD - {InstClass::VectorMemImgSmp, InstCategory::VectorMemory, 4, 1, ScalarType::Undefined, - ScalarType::Undefined}, + {InstClass::VectorMemImgSmp, InstCategory::VectorMemory, 4, 1, ScalarType::Float32, + ScalarType::Float32}, // 105 = IMAGE_SAMPLE_CD_CL {InstClass::VectorMemImgSmp, InstCategory::VectorMemory, 4, 1, ScalarType::Undefined, ScalarType::Undefined}, @@ -3719,8 +3718,9 @@ InstFormat InstructionFormat(InstEncoding encoding, uint32_t opcode) { return InstructionFormatSOP2[opcode]; case InstEncoding::VOP2: return InstructionFormatVOP2[opcode]; + default: + UNREACHABLE(); } - UNREACHABLE(); return {}; } diff --git a/src/shader_recompiler/frontend/structured_control_flow.cpp b/src/shader_recompiler/frontend/structured_control_flow.cpp index fefc623fc9..bf5ba6bce3 100644 --- a/src/shader_recompiler/frontend/structured_control_flow.cpp +++ b/src/shader_recompiler/frontend/structured_control_flow.cpp @@ -602,13 +602,14 @@ class TranslatePass { Common::ObjectPool& block_pool_, Common::ObjectPool& stmt_pool_, Statement& root_stmt, IR::AbstractSyntaxList& syntax_list_, std::span inst_list_, - Info& info_, const Profile& profile_) + Info& info_, const RuntimeInfo& runtime_info_, const Profile& profile_) : stmt_pool{stmt_pool_}, inst_pool{inst_pool_}, block_pool{block_pool_}, - syntax_list{syntax_list_}, inst_list{inst_list_}, info{info_}, profile{profile_} { + syntax_list{syntax_list_}, inst_list{inst_list_}, info{info_}, + runtime_info{runtime_info_}, profile{profile_} { Visit(root_stmt, nullptr, nullptr); IR::Block& first_block{*syntax_list.front().data.block}; - Translator{&first_block, info, profile}.EmitPrologue(); + Translator{&first_block, info, runtime_info, profile}.EmitPrologue(); } private: @@ -637,7 +638,7 @@ class TranslatePass { const u32 start = stmt.block->begin_index; const u32 size = stmt.block->end_index - start + 1; Translate(current_block, stmt.block->begin, inst_list.subspan(start, size), - info, profile); + info, runtime_info, profile); } break; } @@ -817,19 +818,20 @@ class TranslatePass { const Block dummy_flow_block{.is_dummy = true}; std::span inst_list; Info& info; + const RuntimeInfo& runtime_info; const Profile& profile; }; } // Anonymous namespace IR::AbstractSyntaxList BuildASL(Common::ObjectPool& inst_pool, Common::ObjectPool& block_pool, CFG& cfg, Info& info, - const Profile& profile) { + const RuntimeInfo& runtime_info, const Profile& profile) { Common::ObjectPool stmt_pool{64}; GotoPass goto_pass{cfg, stmt_pool}; Statement& root{goto_pass.RootStatement()}; IR::AbstractSyntaxList syntax_list; - TranslatePass{inst_pool, block_pool, stmt_pool, root, - syntax_list, cfg.inst_list, info, profile}; + TranslatePass{inst_pool, block_pool, stmt_pool, root, syntax_list, + cfg.inst_list, info, runtime_info, profile}; ASSERT_MSG(!info.translation_failed, "Shader translation has failed"); return syntax_list; } diff --git a/src/shader_recompiler/frontend/structured_control_flow.h b/src/shader_recompiler/frontend/structured_control_flow.h index f5a540518f..2119484e36 100644 --- a/src/shader_recompiler/frontend/structured_control_flow.h +++ b/src/shader_recompiler/frontend/structured_control_flow.h @@ -11,12 +11,14 @@ namespace Shader { struct Info; struct Profile; +struct RuntimeInfo; } // namespace Shader namespace Shader::Gcn { [[nodiscard]] IR::AbstractSyntaxList BuildASL(Common::ObjectPool& inst_pool, Common::ObjectPool& block_pool, CFG& cfg, - Info& info, const Profile& profile); + Info& info, const RuntimeInfo& runtime_info, + const Profile& profile); } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/data_share.cpp b/src/shader_recompiler/frontend/translate/data_share.cpp index c487ed424c..f5fce311c6 100644 --- a/src/shader_recompiler/frontend/translate/data_share.cpp +++ b/src/shader_recompiler/frontend/translate/data_share.cpp @@ -7,128 +7,89 @@ namespace Shader::Gcn { void Translator::EmitDataShare(const GcnInst& inst) { switch (inst.opcode) { - case Opcode::DS_SWIZZLE_B32: - return DS_SWIZZLE_B32(inst); - case Opcode::DS_READ_B32: - return DS_READ(32, false, false, inst); - case Opcode::DS_READ_B64: - return DS_READ(64, false, false, inst); - case Opcode::DS_READ2_B32: - return DS_READ(32, false, true, inst); - case Opcode::DS_READ2_B64: - return DS_READ(64, false, true, inst); - case Opcode::DS_WRITE_B32: - return DS_WRITE(32, false, false, false, inst); - case Opcode::DS_WRITE2ST64_B32: - return DS_WRITE(32, false, true, true, inst); - case Opcode::DS_WRITE_B64: - return DS_WRITE(64, false, false, false, inst); - case Opcode::DS_WRITE2_B32: - return DS_WRITE(32, false, true, false, inst); - case Opcode::DS_WRITE2_B64: - return DS_WRITE(64, false, true, false, inst); + // DS case Opcode::DS_ADD_U32: return DS_ADD_U32(inst, false); - case Opcode::DS_MIN_U32: - return DS_MIN_U32(inst, false, false); case Opcode::DS_MIN_I32: return DS_MIN_U32(inst, true, false); - case Opcode::DS_MAX_U32: - return DS_MAX_U32(inst, false, false); case Opcode::DS_MAX_I32: return DS_MAX_U32(inst, true, false); + case Opcode::DS_MIN_U32: + return DS_MIN_U32(inst, false, false); + case Opcode::DS_MAX_U32: + return DS_MAX_U32(inst, false, false); + case Opcode::DS_WRITE_B32: + return DS_WRITE(32, false, false, false, inst); + case Opcode::DS_WRITE2_B32: + return DS_WRITE(32, false, true, false, inst); + case Opcode::DS_WRITE2ST64_B32: + return DS_WRITE(32, false, true, true, inst); case Opcode::DS_ADD_RTN_U32: return DS_ADD_U32(inst, true); case Opcode::DS_MIN_RTN_U32: return DS_MIN_U32(inst, false, true); case Opcode::DS_MAX_RTN_U32: return DS_MAX_U32(inst, false, true); + case Opcode::DS_SWIZZLE_B32: + return DS_SWIZZLE_B32(inst); + case Opcode::DS_READ_B32: + return DS_READ(32, false, false, false, inst); + case Opcode::DS_READ2_B32: + return DS_READ(32, false, true, false, inst); + case Opcode::DS_READ2ST64_B32: + return DS_READ(32, false, true, true, inst); + case Opcode::DS_CONSUME: + return DS_CONSUME(inst); + case Opcode::DS_APPEND: + return DS_APPEND(inst); + case Opcode::DS_WRITE_B64: + return DS_WRITE(64, false, false, false, inst); + case Opcode::DS_WRITE2_B64: + return DS_WRITE(64, false, true, false, inst); + case Opcode::DS_READ_B64: + return DS_READ(64, false, false, false, inst); + case Opcode::DS_READ2_B64: + return DS_READ(64, false, true, false, inst); default: LogMissingOpcode(inst); } } -void Translator::DS_SWIZZLE_B32(const GcnInst& inst) { - const u8 offset0 = inst.control.ds.offset0; - const u8 offset1 = inst.control.ds.offset1; - const IR::U32 src{GetSrc(inst.src[1])}; - ASSERT(offset1 & 0x80); - const IR::U32 lane_id = ir.LaneId(); - const IR::U32 id_in_group = ir.BitwiseAnd(lane_id, ir.Imm32(0b11)); - const IR::U32 base = ir.ShiftLeftLogical(id_in_group, ir.Imm32(1)); - const IR::U32 index = - ir.IAdd(lane_id, ir.BitFieldExtract(ir.Imm32(offset0), base, ir.Imm32(2))); - SetDst(inst.dst[0], ir.QuadShuffle(src, index)); +// SOPP + +void Translator::S_BARRIER() { + ir.Barrier(); } -void Translator::DS_READ(int bit_size, bool is_signed, bool is_pair, const GcnInst& inst) { - const IR::U32 addr{ir.GetVectorReg(IR::VectorReg(inst.src[0].code))}; - IR::VectorReg dst_reg{inst.dst[0].code}; - if (is_pair) { - // Pair loads are either 32 or 64-bit - const u32 adj = bit_size == 32 ? 4 : 8; - const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0 * adj))); - const IR::Value data0 = ir.LoadShared(bit_size, is_signed, addr0); - if (bit_size == 32) { - ir.SetVectorReg(dst_reg++, IR::U32{data0}); - } else { - ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data0, 0)}); - ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data0, 1)}); - } - const IR::U32 addr1 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset1 * adj))); - const IR::Value data1 = ir.LoadShared(bit_size, is_signed, addr1); - if (bit_size == 32) { - ir.SetVectorReg(dst_reg++, IR::U32{data1}); - } else { - ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data1, 0)}); - ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data1, 1)}); - } - } else if (bit_size == 64) { - const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); - const IR::Value data = ir.LoadShared(bit_size, is_signed, addr0); - ir.SetVectorReg(dst_reg, IR::U32{ir.CompositeExtract(data, 0)}); - ir.SetVectorReg(dst_reg + 1, IR::U32{ir.CompositeExtract(data, 1)}); +// VOP2 + +void Translator::V_READFIRSTLANE_B32(const GcnInst& inst) { + const IR::U32 value{GetSrc(inst.src[0])}; + + if (info.stage != Stage::Compute) { + SetDst(inst.dst[0], value); } else { - const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); - const IR::U32 data = IR::U32{ir.LoadShared(bit_size, is_signed, addr0)}; - ir.SetVectorReg(dst_reg, data); + SetDst(inst.dst[0], ir.ReadFirstLane(value)); } } -void Translator::DS_WRITE(int bit_size, bool is_signed, bool is_pair, bool stride64, - const GcnInst& inst) { - const IR::U32 addr{ir.GetVectorReg(IR::VectorReg(inst.src[0].code))}; - const IR::VectorReg data0{inst.src[1].code}; - const IR::VectorReg data1{inst.src[2].code}; - if (is_pair) { - const u32 adj = (bit_size == 32 ? 4 : 8) * (stride64 ? 64 : 1); - const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0 * adj))); - if (bit_size == 32) { - ir.WriteShared(32, ir.GetVectorReg(data0), addr0); - } else { - ir.WriteShared( - 64, ir.CompositeConstruct(ir.GetVectorReg(data0), ir.GetVectorReg(data0 + 1)), - addr0); - } - const IR::U32 addr1 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset1 * adj))); - if (bit_size == 32) { - ir.WriteShared(32, ir.GetVectorReg(data1), addr1); - } else { - ir.WriteShared( - 64, ir.CompositeConstruct(ir.GetVectorReg(data1), ir.GetVectorReg(data1 + 1)), - addr1); - } - } else if (bit_size == 64) { - const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); - const IR::Value data = - ir.CompositeConstruct(ir.GetVectorReg(data0), ir.GetVectorReg(data0 + 1)); - ir.WriteShared(bit_size, data, addr0); - } else { - const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); - ir.WriteShared(bit_size, ir.GetVectorReg(data0), addr0); - } +void Translator::V_READLANE_B32(const GcnInst& inst) { + const IR::ScalarReg dst{inst.dst[0].code}; + const IR::U32 value{GetSrc(inst.src[0])}; + const IR::U32 lane{GetSrc(inst.src[1])}; + ir.SetScalarReg(dst, ir.ReadLane(value, lane)); +} + +void Translator::V_WRITELANE_B32(const GcnInst& inst) { + const IR::VectorReg dst{inst.dst[0].code}; + const IR::U32 value{GetSrc(inst.src[0])}; + const IR::U32 lane{GetSrc(inst.src[1])}; + const IR::U32 old_value{GetSrc(inst.dst[0])}; + ir.SetVectorReg(dst, ir.WriteLane(old_value, value, lane)); } +// DS + void Translator::DS_ADD_U32(const GcnInst& inst, bool rtn) { const IR::U32 addr{GetSrc(inst.src[0])}; const IR::U32 data{GetSrc(inst.src[1])}; @@ -162,32 +123,100 @@ void Translator::DS_MAX_U32(const GcnInst& inst, bool is_signed, bool rtn) { } } -void Translator::S_BARRIER() { - ir.Barrier(); +void Translator::DS_WRITE(int bit_size, bool is_signed, bool is_pair, bool stride64, + const GcnInst& inst) { + const IR::U32 addr{ir.GetVectorReg(IR::VectorReg(inst.src[0].code))}; + const IR::VectorReg data0{inst.src[1].code}; + const IR::VectorReg data1{inst.src[2].code}; + if (is_pair) { + const u32 adj = (bit_size == 32 ? 4 : 8) * (stride64 ? 64 : 1); + const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0 * adj))); + if (bit_size == 32) { + ir.WriteShared(32, ir.GetVectorReg(data0), addr0); + } else { + ir.WriteShared( + 64, ir.CompositeConstruct(ir.GetVectorReg(data0), ir.GetVectorReg(data0 + 1)), + addr0); + } + const IR::U32 addr1 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset1 * adj))); + if (bit_size == 32) { + ir.WriteShared(32, ir.GetVectorReg(data1), addr1); + } else { + ir.WriteShared( + 64, ir.CompositeConstruct(ir.GetVectorReg(data1), ir.GetVectorReg(data1 + 1)), + addr1); + } + } else if (bit_size == 64) { + const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); + const IR::Value data = + ir.CompositeConstruct(ir.GetVectorReg(data0), ir.GetVectorReg(data0 + 1)); + ir.WriteShared(bit_size, data, addr0); + } else { + const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); + ir.WriteShared(bit_size, ir.GetVectorReg(data0), addr0); + } } -// TEMP: for Amplitude 2016 -// These are "warp instructions" and are stubbed to work outside of compute shaders. -// The game makes use of them and works fine when the assertions are removed. +void Translator::DS_SWIZZLE_B32(const GcnInst& inst) { + const u8 offset0 = inst.control.ds.offset0; + const u8 offset1 = inst.control.ds.offset1; + const IR::U32 src{GetSrc(inst.src[1])}; + ASSERT(offset1 & 0x80); + const IR::U32 lane_id = ir.LaneId(); + const IR::U32 id_in_group = ir.BitwiseAnd(lane_id, ir.Imm32(0b11)); + const IR::U32 base = ir.ShiftLeftLogical(id_in_group, ir.Imm32(1)); + const IR::U32 index = + ir.IAdd(lane_id, ir.BitFieldExtract(ir.Imm32(offset0), base, ir.Imm32(2))); + SetDst(inst.dst[0], ir.QuadShuffle(src, index)); +} -void Translator::V_READFIRSTLANE_B32(const GcnInst& inst) { - // ASSERT(info.stage != Stage::Compute); - SetDst(inst.dst[0], GetSrc(inst.src[0])); +void Translator::DS_READ(int bit_size, bool is_signed, bool is_pair, bool stride64, + const GcnInst& inst) { + const IR::U32 addr{ir.GetVectorReg(IR::VectorReg(inst.src[0].code))}; + IR::VectorReg dst_reg{inst.dst[0].code}; + if (is_pair) { + // Pair loads are either 32 or 64-bit + const u32 adj = (bit_size == 32 ? 4 : 8) * (stride64 ? 64 : 1); + const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0 * adj))); + const IR::Value data0 = ir.LoadShared(bit_size, is_signed, addr0); + if (bit_size == 32) { + ir.SetVectorReg(dst_reg++, IR::U32{data0}); + } else { + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data0, 0)}); + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data0, 1)}); + } + const IR::U32 addr1 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset1 * adj))); + const IR::Value data1 = ir.LoadShared(bit_size, is_signed, addr1); + if (bit_size == 32) { + ir.SetVectorReg(dst_reg++, IR::U32{data1}); + } else { + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data1, 0)}); + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data1, 1)}); + } + } else if (bit_size == 64) { + const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); + const IR::Value data = ir.LoadShared(bit_size, is_signed, addr0); + ir.SetVectorReg(dst_reg, IR::U32{ir.CompositeExtract(data, 0)}); + ir.SetVectorReg(dst_reg + 1, IR::U32{ir.CompositeExtract(data, 1)}); + } else { + const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); + const IR::U32 data = IR::U32{ir.LoadShared(bit_size, is_signed, addr0)}; + ir.SetVectorReg(dst_reg, data); + } } -void Translator::V_READLANE_B32(const GcnInst& inst) { - const IR::ScalarReg dst{inst.dst[0].code}; - const IR::U32 value{GetSrc(inst.src[0])}; - const IR::U32 lane{GetSrc(inst.src[1])}; - ir.SetScalarReg(dst, ir.ReadLane(value, lane)); +void Translator::DS_APPEND(const GcnInst& inst) { + const u32 inst_offset = inst.control.ds.offset0; + const IR::U32 gds_offset = ir.IAdd(ir.GetM0(), ir.Imm32(inst_offset)); + const IR::U32 prev = ir.DataAppend(gds_offset); + SetDst(inst.dst[0], prev); } -void Translator::V_WRITELANE_B32(const GcnInst& inst) { - const IR::VectorReg dst{inst.dst[0].code}; - const IR::U32 value{GetSrc(inst.src[0])}; - const IR::U32 lane{GetSrc(inst.src[1])}; - const IR::U32 old_value{GetSrc(inst.dst[0])}; - ir.SetVectorReg(dst, ir.WriteLane(old_value, value, lane)); +void Translator::DS_CONSUME(const GcnInst& inst) { + const u32 inst_offset = inst.control.ds.offset0; + const IR::U32 gds_offset = ir.IAdd(ir.GetM0(), ir.Imm32(inst_offset)); + const IR::U32 prev = ir.DataConsume(gds_offset); + SetDst(inst.dst[0], prev); } } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/export.cpp b/src/shader_recompiler/frontend/translate/export.cpp index d80de002c9..7d901822d9 100644 --- a/src/shader_recompiler/frontend/translate/export.cpp +++ b/src/shader_recompiler/frontend/translate/export.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "shader_recompiler/frontend/translate/translate.h" +#include "shader_recompiler/runtime_info.h" namespace Shader::Gcn { @@ -19,12 +20,34 @@ void Translator::EmitExport(const GcnInst& inst) { IR::VectorReg(inst.src[3].code), }; + const auto swizzle = [&](u32 comp) { + if (!IR::IsMrt(attrib)) { + return comp; + } + const u32 index = u32(attrib) - u32(IR::Attribute::RenderTarget0); + switch (runtime_info.fs_info.mrt_swizzles[index]) { + case MrtSwizzle::Identity: + return comp; + case MrtSwizzle::Alt: + static constexpr std::array AltSwizzle = {2, 1, 0, 3}; + return AltSwizzle[comp]; + case MrtSwizzle::Reverse: + static constexpr std::array RevSwizzle = {3, 2, 1, 0}; + return RevSwizzle[comp]; + case MrtSwizzle::ReverseAlt: + static constexpr std::array AltRevSwizzle = {3, 0, 1, 2}; + return AltRevSwizzle[comp]; + default: + UNREACHABLE(); + } + }; + const auto unpack = [&](u32 idx) { const IR::Value value = ir.UnpackHalf2x16(ir.GetVectorReg(vsrc[idx])); const IR::F32 r = IR::F32{ir.CompositeExtract(value, 0)}; const IR::F32 g = IR::F32{ir.CompositeExtract(value, 1)}; - ir.SetAttribute(attrib, r, idx * 2); - ir.SetAttribute(attrib, g, idx * 2 + 1); + ir.SetAttribute(attrib, r, swizzle(idx * 2)); + ir.SetAttribute(attrib, g, swizzle(idx * 2 + 1)); }; // Components are float16 packed into a VGPR @@ -45,9 +68,12 @@ void Translator::EmitExport(const GcnInst& inst) { continue; } const IR::F32 comp = ir.GetVectorReg(vsrc[i]); - ir.SetAttribute(attrib, comp, i); + ir.SetAttribute(attrib, comp, swizzle(i)); } } + if (IR::IsMrt(attrib)) { + info.mrt_mask |= 1u << u8(attrib); + } } } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/scalar_alu.cpp b/src/shader_recompiler/frontend/translate/scalar_alu.cpp index af258cd196..1e572a97f9 100644 --- a/src/shader_recompiler/frontend/translate/scalar_alu.cpp +++ b/src/shader_recompiler/frontend/translate/scalar_alu.cpp @@ -17,67 +17,83 @@ void Translator::EmitScalarAlu(const GcnInst& inst) { } default: switch (inst.opcode) { - case Opcode::S_MOV_B32: - return S_MOV(inst); - case Opcode::S_MUL_I32: - return S_MUL_I32(inst); - case Opcode::S_AND_SAVEEXEC_B64: - return S_AND_SAVEEXEC_B64(inst); - case Opcode::S_MOV_B64: - return S_MOV_B64(inst); + // SOP2 + case Opcode::S_ADD_U32: + return S_ADD_U32(inst); + case Opcode::S_SUB_U32: + return S_SUB_U32(inst); + case Opcode::S_ADD_I32: + return S_ADD_I32(inst); + case Opcode::S_SUB_I32: + return S_SUB_U32(inst); + case Opcode::S_ADDC_U32: + return S_ADDC_U32(inst); + case Opcode::S_MIN_I32: + return S_MIN_U32(true, inst); + case Opcode::S_MIN_U32: + return S_MIN_U32(false, inst); + case Opcode::S_MAX_I32: + return S_MAX_U32(true, inst); + case Opcode::S_MAX_U32: + return S_MAX_U32(false, inst); + case Opcode::S_CSELECT_B32: + return S_CSELECT_B32(inst); + case Opcode::S_CSELECT_B64: + return S_CSELECT_B64(inst); + case Opcode::S_AND_B32: + return S_AND_B32(NegateMode::None, inst); + case Opcode::S_AND_B64: + return S_AND_B64(NegateMode::None, inst); + case Opcode::S_OR_B32: + return S_OR_B32(inst); case Opcode::S_OR_B64: return S_OR_B64(NegateMode::None, false, inst); - case Opcode::S_NOR_B64: - return S_OR_B64(NegateMode::Result, false, inst); + case Opcode::S_XOR_B32: + return S_XOR_B32(inst); case Opcode::S_XOR_B64: return S_OR_B64(NegateMode::None, true, inst); - case Opcode::S_XNOR_B64: - return S_OR_B64(NegateMode::Result, true, inst); + case Opcode::S_ANDN2_B32: + return S_AND_B32(NegateMode::Src1, inst); + case Opcode::S_ANDN2_B64: + return S_AND_B64(NegateMode::Src1, inst); case Opcode::S_ORN2_B64: return S_OR_B64(NegateMode::Src1, false, inst); - case Opcode::S_AND_B64: - return S_AND_B64(NegateMode::None, inst); + case Opcode::S_NAND_B32: + return S_AND_B32(NegateMode::Result, inst); case Opcode::S_NAND_B64: return S_AND_B64(NegateMode::Result, inst); - case Opcode::S_ANDN2_B64: - return S_AND_B64(NegateMode::Src1, inst); - case Opcode::S_NOT_B64: - return S_NOT_B64(inst); - case Opcode::S_ADD_I32: - return S_ADD_I32(inst); - case Opcode::S_AND_B32: - return S_AND_B32(inst); - case Opcode::S_ASHR_I32: - return S_ASHR_I32(inst); - case Opcode::S_OR_B32: - return S_OR_B32(inst); + case Opcode::S_NOR_B64: + return S_OR_B64(NegateMode::Result, false, inst); + case Opcode::S_XNOR_B64: + return S_OR_B64(NegateMode::Result, true, inst); case Opcode::S_LSHL_B32: return S_LSHL_B32(inst); case Opcode::S_LSHR_B32: return S_LSHR_B32(inst); - case Opcode::S_CSELECT_B32: - return S_CSELECT_B32(inst); - case Opcode::S_CSELECT_B64: - return S_CSELECT_B64(inst); - case Opcode::S_BFE_U32: - return S_BFE_U32(inst); + case Opcode::S_ASHR_I32: + return S_ASHR_I32(inst); case Opcode::S_BFM_B32: return S_BFM_B32(inst); - case Opcode::S_BREV_B32: - return S_BREV_B32(inst); - case Opcode::S_ADD_U32: - return S_ADD_U32(inst); - case Opcode::S_ADDC_U32: - return S_ADDC_U32(inst); - case Opcode::S_SUB_U32: - case Opcode::S_SUB_I32: - return S_SUB_U32(inst); - case Opcode::S_MIN_U32: - return S_MIN_U32(inst); - case Opcode::S_MAX_U32: - return S_MAX_U32(inst); + case Opcode::S_MUL_I32: + return S_MUL_I32(inst); + case Opcode::S_BFE_U32: + return S_BFE_U32(inst); + case Opcode::S_ABSDIFF_I32: + return S_ABSDIFF_I32(inst); + + // SOP1 + case Opcode::S_MOV_B32: + return S_MOV(inst); + case Opcode::S_MOV_B64: + return S_MOV_B64(inst); + case Opcode::S_NOT_B64: + return S_NOT_B64(inst); case Opcode::S_WQM_B64: break; + case Opcode::S_BREV_B32: + return S_BREV_B32(inst); + case Opcode::S_AND_SAVEEXEC_B64: + return S_AND_SAVEEXEC_B64(inst); default: LogMissingOpcode(inst); } @@ -119,6 +135,7 @@ void Translator::EmitSOPC(const GcnInst& inst) { void Translator::EmitSOPK(const GcnInst& inst) { switch (inst.opcode) { + // SOPK case Opcode::S_MOVK_I32: return S_MOVK(inst); @@ -157,165 +174,129 @@ void Translator::EmitSOPK(const GcnInst& inst) { } } -void Translator::S_MOVK(const GcnInst& inst) { - const auto simm16 = inst.control.sopk.simm; - if (simm16 & (1 << 15)) { - // TODO: need to verify the case of imm sign extension - UNREACHABLE(); - } - SetDst(inst.dst[0], ir.Imm32(simm16)); -} +// SOP2 -void Translator::S_ADDK_I32(const GcnInst& inst) { - const s32 simm16 = inst.control.sopk.simm; - SetDst(inst.dst[0], ir.IAdd(GetSrc(inst.dst[0]), ir.Imm32(simm16))); +void Translator::S_ADD_U32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.IAdd(src0, src1)); + // TODO: Carry out + ir.SetScc(ir.Imm1(false)); } -void Translator::S_MULK_I32(const GcnInst& inst) { - const s32 simm16 = inst.control.sopk.simm; - SetDst(inst.dst[0], ir.IMul(GetSrc(inst.dst[0]), ir.Imm32(simm16))); +void Translator::S_SUB_U32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ISub(src0, src1)); + // TODO: Carry out + ir.SetScc(ir.Imm1(false)); } -void Translator::S_MOV(const GcnInst& inst) { - SetDst(inst.dst[0], GetSrc(inst.src[0])); +void Translator::S_ADD_I32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.IAdd(src0, src1)); + // TODO: Overflow flag } -void Translator::S_MUL_I32(const GcnInst& inst) { - SetDst(inst.dst[0], ir.IMul(GetSrc(inst.src[0]), GetSrc(inst.src[1]))); +void Translator::S_ADDC_U32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 carry{ir.Select(ir.GetScc(), ir.Imm32(1U), ir.Imm32(0U))}; + SetDst(inst.dst[0], ir.IAdd(ir.IAdd(src0, src1), carry)); } -void Translator::S_CMP(ConditionOp cond, bool is_signed, const GcnInst& inst) { - const IR::U32 lhs = GetSrc(inst.src[0]); - const IR::U32 rhs = GetSrc(inst.src[1]); - const IR::U1 result = [&] { - switch (cond) { - case ConditionOp::EQ: - return ir.IEqual(lhs, rhs); - case ConditionOp::LG: - return ir.INotEqual(lhs, rhs); - case ConditionOp::GT: - return ir.IGreaterThan(lhs, rhs, is_signed); - case ConditionOp::GE: - return ir.IGreaterThanEqual(lhs, rhs, is_signed); - case ConditionOp::LT: - return ir.ILessThan(lhs, rhs, is_signed); - case ConditionOp::LE: - return ir.ILessThanEqual(lhs, rhs, is_signed); - default: - UNREACHABLE(); - } - }(); - ir.SetScc(result); +void Translator::S_MIN_U32(bool is_signed, const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 result = ir.IMin(src0, src1, is_signed); + SetDst(inst.dst[0], result); + ir.SetScc(ir.IEqual(result, src0)); } -void Translator::S_CMPK(ConditionOp cond, bool is_signed, const GcnInst& inst) { - const s32 simm16 = inst.control.sopk.simm; - const IR::U32 lhs = GetSrc(inst.dst[0]); - const IR::U32 rhs = ir.Imm32(simm16); - const IR::U1 result = [&] { - switch (cond) { - case ConditionOp::EQ: - return ir.IEqual(lhs, rhs); - case ConditionOp::LG: - return ir.INotEqual(lhs, rhs); - case ConditionOp::GT: - return ir.IGreaterThan(lhs, rhs, is_signed); - case ConditionOp::GE: - return ir.IGreaterThanEqual(lhs, rhs, is_signed); - case ConditionOp::LT: - return ir.ILessThan(lhs, rhs, is_signed); - case ConditionOp::LE: - return ir.ILessThanEqual(lhs, rhs, is_signed); - default: - UNREACHABLE(); - } - }(); - ir.SetScc(result); +void Translator::S_MAX_U32(bool is_signed, const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 result = ir.IMax(src0, src1, is_signed); + SetDst(inst.dst[0], result); + ir.SetScc(ir.IEqual(result, src0)); } -void Translator::S_AND_SAVEEXEC_B64(const GcnInst& inst) { - // This instruction normally operates on 64-bit data (EXEC, VCC, SGPRs) - // However here we flatten it to 1-bit EXEC and 1-bit VCC. For the destination - // SGPR we have a special IR opcode for SPGRs that act as thread masks. - const IR::U1 exec{ir.GetExec()}; - const IR::U1 src = [&] { - switch (inst.src[0].field) { - case OperandField::VccLo: - return ir.GetVcc(); - case OperandField::ScalarGPR: - return ir.GetThreadBitScalarReg(IR::ScalarReg(inst.src[0].code)); - default: - UNREACHABLE(); - } - }(); - - switch (inst.dst[0].field) { - case OperandField::ScalarGPR: - ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), exec); - break; - case OperandField::VccLo: - ir.SetVcc(exec); - break; - default: - UNREACHABLE(); - } - - // Update EXEC. - const IR::U1 result = ir.LogicalAnd(exec, src); - ir.SetExec(result); - ir.SetScc(result); +void Translator::S_CSELECT_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], IR::U32{ir.Select(ir.GetScc(), src0, src1)}); } -void Translator::S_MOV_B64(const GcnInst& inst) { - const IR::U1 src = [&] { - switch (inst.src[0].field) { +void Translator::S_CSELECT_B64(const GcnInst& inst) { + const auto get_src = [&](const InstOperand& operand) { + switch (operand.field) { case OperandField::VccLo: return ir.GetVcc(); case OperandField::ExecLo: return ir.GetExec(); case OperandField::ScalarGPR: - return ir.GetThreadBitScalarReg(IR::ScalarReg(inst.src[0].code)); + return ir.GetThreadBitScalarReg(IR::ScalarReg(operand.code)); case OperandField::ConstZero: return ir.Imm1(false); default: UNREACHABLE(); } - }(); + }; + const IR::U1 src0{get_src(inst.src[0])}; + const IR::U1 src1{get_src(inst.src[1])}; + const IR::U1 result{ir.Select(ir.GetScc(), src0, src1)}; switch (inst.dst[0].field) { - case OperandField::ScalarGPR: - ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), src); - break; - case OperandField::ExecLo: - ir.SetExec(src); - break; case OperandField::VccLo: - ir.SetVcc(src); + ir.SetVcc(result); + break; + case OperandField::ScalarGPR: + ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), result); break; default: UNREACHABLE(); } } -void Translator::S_OR_B64(NegateMode negate, bool is_xor, const GcnInst& inst) { +void Translator::S_AND_B32(NegateMode negate, const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + IR::U32 src1{GetSrc(inst.src[1])}; + if (negate == NegateMode::Src1) { + src1 = ir.BitwiseNot(src1); + } + IR::U32 result{ir.BitwiseAnd(src0, src1)}; + if (negate == NegateMode::Result) { + result = ir.BitwiseNot(result); + } + SetDst(inst.dst[0], result); + ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); +} + +void Translator::S_AND_B64(NegateMode negate, const GcnInst& inst) { const auto get_src = [&](const InstOperand& operand) { switch (operand.field) { - case OperandField::ExecLo: - return ir.GetExec(); case OperandField::VccLo: return ir.GetVcc(); + case OperandField::ExecLo: + return ir.GetExec(); case OperandField::ScalarGPR: return ir.GetThreadBitScalarReg(IR::ScalarReg(operand.code)); + case OperandField::ConstZero: + return ir.Imm1(false); + case OperandField::SignedConstIntNeg: + ASSERT_MSG(-s32(operand.code) + SignedConstIntNegMin - 1 == -1, + "SignedConstIntNeg must be -1"); + return ir.Imm1(true); default: UNREACHABLE(); } }; - const IR::U1 src0{get_src(inst.src[0])}; IR::U1 src1{get_src(inst.src[1])}; if (negate == NegateMode::Src1) { src1 = ir.LogicalNot(src1); } - IR::U1 result = is_xor ? ir.LogicalXor(src0, src1) : ir.LogicalOr(src0, src1); + IR::U1 result = ir.LogicalAnd(src0, src1); if (negate == NegateMode::Result) { result = ir.LogicalNot(result); } @@ -327,30 +308,42 @@ void Translator::S_OR_B64(NegateMode negate, bool is_xor, const GcnInst& inst) { case OperandField::ScalarGPR: ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), result); break; + case OperandField::ExecLo: + ir.SetExec(result); + break; default: UNREACHABLE(); } } -void Translator::S_AND_B64(NegateMode negate, const GcnInst& inst) { +void Translator::S_OR_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 result{ir.BitwiseOr(src0, src1)}; + SetDst(inst.dst[0], result); + ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); +} + +void Translator::S_OR_B64(NegateMode negate, bool is_xor, const GcnInst& inst) { const auto get_src = [&](const InstOperand& operand) { switch (operand.field) { - case OperandField::VccLo: - return ir.GetVcc(); case OperandField::ExecLo: return ir.GetExec(); + case OperandField::VccLo: + return ir.GetVcc(); case OperandField::ScalarGPR: return ir.GetThreadBitScalarReg(IR::ScalarReg(operand.code)); default: UNREACHABLE(); } }; + const IR::U1 src0{get_src(inst.src[0])}; IR::U1 src1{get_src(inst.src[1])}; if (negate == NegateMode::Src1) { src1 = ir.LogicalNot(src1); } - IR::U1 result = ir.LogicalAnd(src0, src1); + IR::U1 result = is_xor ? ir.LogicalXor(src0, src1) : ir.LogicalOr(src0, src1); if (negate == NegateMode::Result) { result = ir.LogicalNot(result); } @@ -362,114 +355,154 @@ void Translator::S_AND_B64(NegateMode negate, const GcnInst& inst) { case OperandField::ScalarGPR: ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), result); break; - case OperandField::ExecLo: - ir.SetExec(result); - break; default: UNREACHABLE(); } } -void Translator::S_ADD_I32(const GcnInst& inst) { +void Translator::S_XOR_B32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.IAdd(src0, src1)); - // TODO: Overflow flag + const IR::U32 result{ir.BitwiseXor(src0, src1)}; + SetDst(inst.dst[0], result); + ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); } -void Translator::S_AND_B32(const GcnInst& inst) { +void Translator::S_LSHL_B32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 result{ir.BitwiseAnd(src0, src1)}; + const IR::U32 result = ir.ShiftLeftLogical(src0, ir.BitwiseAnd(src1, ir.Imm32(0x1F))); SetDst(inst.dst[0], result); ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); } -void Translator::S_ASHR_I32(const GcnInst& inst) { +void Translator::S_LSHR_B32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 result{ir.ShiftRightArithmetic(src0, src1)}; + const IR::U32 result{ir.ShiftRightLogical(src0, src1)}; SetDst(inst.dst[0], result); ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); } -void Translator::S_OR_B32(const GcnInst& inst) { +void Translator::S_ASHR_I32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 result{ir.BitwiseOr(src0, src1)}; + const IR::U32 result{ir.ShiftRightArithmetic(src0, src1)}; SetDst(inst.dst[0], result); ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); } -void Translator::S_LSHR_B32(const GcnInst& inst) { +void Translator::S_BFM_B32(const GcnInst& inst) { + const IR::U32 src0{ir.BitwiseAnd(GetSrc(inst.src[0]), ir.Imm32(0x1F))}; + const IR::U32 src1{ir.BitwiseAnd(GetSrc(inst.src[1]), ir.Imm32(0x1F))}; + const IR::U32 mask{ir.ISub(ir.ShiftLeftLogical(ir.Imm32(1u), src0), ir.Imm32(1))}; + SetDst(inst.dst[0], ir.ShiftLeftLogical(mask, src1)); +} + +void Translator::S_MUL_I32(const GcnInst& inst) { + SetDst(inst.dst[0], ir.IMul(GetSrc(inst.src[0]), GetSrc(inst.src[1]))); +} + +void Translator::S_BFE_U32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 result{ir.ShiftRightLogical(src0, src1)}; + const IR::U32 offset{ir.BitwiseAnd(src1, ir.Imm32(0x1F))}; + const IR::U32 count{ir.BitFieldExtract(src1, ir.Imm32(16), ir.Imm32(7))}; + const IR::U32 result{ir.BitFieldExtract(src0, offset, count)}; SetDst(inst.dst[0], result); ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); } -void Translator::S_CSELECT_B32(const GcnInst& inst) { +void Translator::S_ABSDIFF_I32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], IR::U32{ir.Select(ir.GetScc(), src0, src1)}); + const IR::U32 result{ir.IAbs(ir.ISub(src0, src1))}; + SetDst(inst.dst[0], result); + ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); } -void Translator::S_CSELECT_B64(const GcnInst& inst) { - const auto get_src = [&](const InstOperand& operand) { - switch (operand.field) { +// SOPK + +void Translator::S_MOVK(const GcnInst& inst) { + const auto simm16 = inst.control.sopk.simm; + if (simm16 & (1 << 15)) { + // TODO: need to verify the case of imm sign extension + UNREACHABLE(); + } + SetDst(inst.dst[0], ir.Imm32(simm16)); +} + +void Translator::S_CMPK(ConditionOp cond, bool is_signed, const GcnInst& inst) { + const s32 simm16 = inst.control.sopk.simm; + const IR::U32 lhs = GetSrc(inst.dst[0]); + const IR::U32 rhs = ir.Imm32(simm16); + const IR::U1 result = [&] { + switch (cond) { + case ConditionOp::EQ: + return ir.IEqual(lhs, rhs); + case ConditionOp::LG: + return ir.INotEqual(lhs, rhs); + case ConditionOp::GT: + return ir.IGreaterThan(lhs, rhs, is_signed); + case ConditionOp::GE: + return ir.IGreaterThanEqual(lhs, rhs, is_signed); + case ConditionOp::LT: + return ir.ILessThan(lhs, rhs, is_signed); + case ConditionOp::LE: + return ir.ILessThanEqual(lhs, rhs, is_signed); + default: + UNREACHABLE(); + } + }(); + ir.SetScc(result); +} + +void Translator::S_ADDK_I32(const GcnInst& inst) { + const s32 simm16 = inst.control.sopk.simm; + SetDst(inst.dst[0], ir.IAdd(GetSrc(inst.dst[0]), ir.Imm32(simm16))); +} + +void Translator::S_MULK_I32(const GcnInst& inst) { + const s32 simm16 = inst.control.sopk.simm; + SetDst(inst.dst[0], ir.IMul(GetSrc(inst.dst[0]), ir.Imm32(simm16))); +} + +// SOP1 + +void Translator::S_MOV(const GcnInst& inst) { + SetDst(inst.dst[0], GetSrc(inst.src[0])); +} + +void Translator::S_MOV_B64(const GcnInst& inst) { + const IR::U1 src = [&] { + switch (inst.src[0].field) { case OperandField::VccLo: return ir.GetVcc(); case OperandField::ExecLo: return ir.GetExec(); case OperandField::ScalarGPR: - return ir.GetThreadBitScalarReg(IR::ScalarReg(operand.code)); + return ir.GetThreadBitScalarReg(IR::ScalarReg(inst.src[0].code)); case OperandField::ConstZero: return ir.Imm1(false); default: UNREACHABLE(); } - }; - const IR::U1 src0{get_src(inst.src[0])}; - const IR::U1 src1{get_src(inst.src[1])}; - const IR::U1 result{ir.Select(ir.GetScc(), src0, src1)}; + }(); switch (inst.dst[0].field) { - case OperandField::VccLo: - ir.SetVcc(result); - break; case OperandField::ScalarGPR: - ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), result); + ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), src); + break; + case OperandField::ExecLo: + ir.SetExec(src); + break; + case OperandField::VccLo: + ir.SetVcc(src); break; default: UNREACHABLE(); } } -void Translator::S_BFE_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 offset{ir.BitwiseAnd(src1, ir.Imm32(0x1F))}; - const IR::U32 count{ir.BitFieldExtract(src1, ir.Imm32(16), ir.Imm32(7))}; - const IR::U32 result{ir.BitFieldExtract(src0, offset, count)}; - SetDst(inst.dst[0], result); - ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); -} - -void Translator::S_LSHL_B32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 result = ir.ShiftLeftLogical(src0, ir.BitwiseAnd(src1, ir.Imm32(0x1F))); - SetDst(inst.dst[0], result); - ir.SetScc(ir.INotEqual(result, ir.Imm32(0))); -} - -void Translator::S_BFM_B32(const GcnInst& inst) { - const IR::U32 src0{ir.BitwiseAnd(GetSrc(inst.src[0]), ir.Imm32(0x1F))}; - const IR::U32 src1{ir.BitwiseAnd(GetSrc(inst.src[1]), ir.Imm32(0x1F))}; - const IR::U32 mask{ir.ISub(ir.ShiftLeftLogical(ir.Imm32(1u), src0), ir.Imm32(1))}; - SetDst(inst.dst[0], ir.ShiftLeftLogical(mask, src1)); -} - void Translator::S_NOT_B64(const GcnInst& inst) { const auto get_src = [&](const InstOperand& operand) { switch (operand.field) { @@ -479,6 +512,8 @@ void Translator::S_NOT_B64(const GcnInst& inst) { return ir.GetExec(); case OperandField::ScalarGPR: return ir.GetThreadBitScalarReg(IR::ScalarReg(operand.code)); + case OperandField::ConstZero: + return ir.Imm1(false); default: UNREACHABLE(); } @@ -493,6 +528,9 @@ void Translator::S_NOT_B64(const GcnInst& inst) { case OperandField::ScalarGPR: ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), result); break; + case OperandField::ExecLo: + ir.SetExec(result); + break; default: UNREACHABLE(); } @@ -502,22 +540,6 @@ void Translator::S_BREV_B32(const GcnInst& inst) { SetDst(inst.dst[0], ir.BitReverse(GetSrc(inst.src[0]))); } -void Translator::S_ADD_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.IAdd(src0, src1)); - // TODO: Carry out - ir.SetScc(ir.Imm1(false)); -} - -void Translator::S_SUB_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.ISub(src0, src1)); - // TODO: Carry out - ir.SetScc(ir.Imm1(false)); -} - void Translator::S_GETPC_B64(u32 pc, const GcnInst& inst) { // This only really exists to let resource tracking pass know // there is an inline cbuf. @@ -526,27 +548,63 @@ void Translator::S_GETPC_B64(u32 pc, const GcnInst& inst) { ir.SetScalarReg(dst + 1, ir.Imm32(0)); } -void Translator::S_ADDC_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 carry{ir.Select(ir.GetScc(), ir.Imm32(1U), ir.Imm32(0U))}; - SetDst(inst.dst[0], ir.IAdd(ir.IAdd(src0, src1), carry)); -} +void Translator::S_AND_SAVEEXEC_B64(const GcnInst& inst) { + // This instruction normally operates on 64-bit data (EXEC, VCC, SGPRs) + // However here we flatten it to 1-bit EXEC and 1-bit VCC. For the destination + // SGPR we have a special IR opcode for SPGRs that act as thread masks. + const IR::U1 exec{ir.GetExec()}; + const IR::U1 src = [&] { + switch (inst.src[0].field) { + case OperandField::VccLo: + return ir.GetVcc(); + case OperandField::ScalarGPR: + return ir.GetThreadBitScalarReg(IR::ScalarReg(inst.src[0].code)); + default: + UNREACHABLE(); + } + }(); -void Translator::S_MAX_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 result = ir.UMax(src0, src1); - SetDst(inst.dst[0], result); - ir.SetScc(ir.IEqual(result, src0)); + switch (inst.dst[0].field) { + case OperandField::ScalarGPR: + ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), exec); + break; + case OperandField::VccLo: + ir.SetVcc(exec); + break; + default: + UNREACHABLE(); + } + + // Update EXEC. + const IR::U1 result = ir.LogicalAnd(exec, src); + ir.SetExec(result); + ir.SetScc(result); } -void Translator::S_MIN_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 result = ir.UMin(src0, src1); - SetDst(inst.dst[0], result); - ir.SetScc(ir.IEqual(result, src0)); +// SOPC + +void Translator::S_CMP(ConditionOp cond, bool is_signed, const GcnInst& inst) { + const IR::U32 lhs = GetSrc(inst.src[0]); + const IR::U32 rhs = GetSrc(inst.src[1]); + const IR::U1 result = [&] { + switch (cond) { + case ConditionOp::EQ: + return ir.IEqual(lhs, rhs); + case ConditionOp::LG: + return ir.INotEqual(lhs, rhs); + case ConditionOp::GT: + return ir.IGreaterThan(lhs, rhs, is_signed); + case ConditionOp::GE: + return ir.IGreaterThanEqual(lhs, rhs, is_signed); + case ConditionOp::LT: + return ir.ILessThan(lhs, rhs, is_signed); + case ConditionOp::LE: + return ir.ILessThanEqual(lhs, rhs, is_signed); + default: + UNREACHABLE(); + } + }(); + ir.SetScc(result); } } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/scalar_memory.cpp b/src/shader_recompiler/frontend/translate/scalar_memory.cpp index 29f2acc277..a6f8cafd7a 100644 --- a/src/shader_recompiler/frontend/translate/scalar_memory.cpp +++ b/src/shader_recompiler/frontend/translate/scalar_memory.cpp @@ -9,6 +9,7 @@ static constexpr u32 SQ_SRC_LITERAL = 0xFF; void Translator::EmitScalarMemory(const GcnInst& inst) { switch (inst.opcode) { + // SMRD case Opcode::S_LOAD_DWORDX4: return S_LOAD_DWORD(4, inst); case Opcode::S_LOAD_DWORDX8: @@ -30,6 +31,8 @@ void Translator::EmitScalarMemory(const GcnInst& inst) { } } +// SMRD + void Translator::S_LOAD_DWORD(int num_dwords, const GcnInst& inst) { const auto& smrd = inst.control.smrd; const u32 dword_offset = [&] -> u32 { diff --git a/src/shader_recompiler/frontend/translate/translate.cpp b/src/shader_recompiler/frontend/translate/translate.cpp index eb86310b84..cfef5858a4 100644 --- a/src/shader_recompiler/frontend/translate/translate.cpp +++ b/src/shader_recompiler/frontend/translate/translate.cpp @@ -7,6 +7,7 @@ #include "shader_recompiler/exception.h" #include "shader_recompiler/frontend/fetch_shader.h" #include "shader_recompiler/frontend/translate/translate.h" +#include "shader_recompiler/info.h" #include "shader_recompiler/runtime_info.h" #include "video_core/amdgpu/resource.h" @@ -16,8 +17,9 @@ namespace Shader::Gcn { -Translator::Translator(IR::Block* block_, Info& info_, const Profile& profile_) - : ir{*block_, block_->begin()}, info{info_}, profile{profile_} {} +Translator::Translator(IR::Block* block_, Info& info_, const RuntimeInfo& runtime_info_, + const Profile& profile_) + : ir{*block_, block_->begin()}, info{info_}, runtime_info{runtime_info_}, profile{profile_} {} void Translator::EmitPrologue() { ir.Prologue(); @@ -25,7 +27,7 @@ void Translator::EmitPrologue() { // Initialize user data. IR::ScalarReg dst_sreg = IR::ScalarReg::S0; - for (u32 i = 0; i < info.num_user_data; i++) { + for (u32 i = 0; i < runtime_info.num_user_data; i++) { ir.SetScalarReg(dst_sreg, ir.GetUserData(dst_sreg)); ++dst_sreg; } @@ -36,15 +38,15 @@ void Translator::EmitPrologue() { // v0: vertex ID, always present ir.SetVectorReg(dst_vreg++, ir.GetAttributeU32(IR::Attribute::VertexId)); // v1: instance ID, step rate 0 - if (info.num_input_vgprs > 0) { + if (runtime_info.num_input_vgprs > 0) { ir.SetVectorReg(dst_vreg++, ir.GetAttributeU32(IR::Attribute::InstanceId0)); } // v2: instance ID, step rate 1 - if (info.num_input_vgprs > 1) { + if (runtime_info.num_input_vgprs > 1) { ir.SetVectorReg(dst_vreg++, ir.GetAttributeU32(IR::Attribute::InstanceId1)); } // v3: instance ID, plain - if (info.num_input_vgprs > 2) { + if (runtime_info.num_input_vgprs > 2) { ir.SetVectorReg(dst_vreg++, ir.GetAttributeU32(IR::Attribute::InstanceId)); } break; @@ -64,13 +66,13 @@ void Translator::EmitPrologue() { ir.SetVectorReg(dst_vreg++, ir.GetAttributeU32(IR::Attribute::LocalInvocationId, 1)); ir.SetVectorReg(dst_vreg++, ir.GetAttributeU32(IR::Attribute::LocalInvocationId, 2)); - if (info.tgid_enable[0]) { + if (runtime_info.cs_info.tgid_enable[0]) { ir.SetScalarReg(dst_sreg++, ir.GetAttributeU32(IR::Attribute::WorkgroupId, 0)); } - if (info.tgid_enable[1]) { + if (runtime_info.cs_info.tgid_enable[1]) { ir.SetScalarReg(dst_sreg++, ir.GetAttributeU32(IR::Attribute::WorkgroupId, 1)); } - if (info.tgid_enable[2]) { + if (runtime_info.cs_info.tgid_enable[2]) { ir.SetScalarReg(dst_sreg++, ir.GetAttributeU32(IR::Attribute::WorkgroupId, 2)); } break; @@ -151,10 +153,11 @@ T Translator::GetSrc(const InstOperand& operand) { break; case OperandField::M0: if constexpr (is_float) { - UNREACHABLE(); + value = ir.BitCast(ir.GetM0()); } else { - return m0_value; + value = ir.GetM0(); } + break; default: UNREACHABLE(); } @@ -168,10 +171,10 @@ T Translator::GetSrc(const InstOperand& operand) { } } else { if (operand.input_modifier.abs) { - LOG_WARNING(Render_Vulkan, "Input abs modifier on integer instruction"); + value = ir.IAbs(value); } if (operand.input_modifier.neg) { - UNREACHABLE(); + value = ir.INeg(value); } } return value; @@ -208,7 +211,7 @@ T Translator::GetSrc64(const InstOperand& operand) { const auto value_lo = ir.GetVectorReg(IR::VectorReg(operand.code)); const auto value_hi = ir.GetVectorReg(IR::VectorReg(operand.code + 1)); if constexpr (is_float) { - UNREACHABLE(); + value = ir.PackFloat2x32(ir.CompositeConstruct(value_lo, value_hi)); } else { value = ir.PackUint2x32(ir.CompositeConstruct(value_lo, value_hi)); } @@ -278,12 +281,15 @@ template IR::F64 Translator::GetSrc64(const InstOperand&); void Translator::SetDst(const InstOperand& operand, const IR::U32F32& value) { IR::U32F32 result = value; - if (operand.output_modifier.multiplier != 0.f) { - result = ir.FPMul(result, ir.Imm32(operand.output_modifier.multiplier)); - } - if (operand.output_modifier.clamp) { - result = ir.FPSaturate(value); + if (value.Type() == IR::Type::F32) { + if (operand.output_modifier.multiplier != 0.f) { + result = ir.FPMul(result, ir.Imm32(operand.output_modifier.multiplier)); + } + if (operand.output_modifier.clamp) { + result = ir.FPSaturate(value); + } } + switch (operand.field) { case OperandField::ScalarGPR: return ir.SetScalarReg(IR::ScalarReg(operand.code), result); @@ -294,8 +300,7 @@ void Translator::SetDst(const InstOperand& operand, const IR::U32F32& value) { case OperandField::VccHi: return ir.SetVccHi(result); case OperandField::M0: - m0_value = result; - break; + return ir.SetM0(result); default: UNREACHABLE(); } @@ -445,7 +450,6 @@ void Translator::EmitFlowControl(u32 pc, const GcnInst& inst) { } void Translator::LogMissingOpcode(const GcnInst& inst) { - const u32 opcode = u32(inst.opcode); LOG_ERROR(Render_Recompiler, "Unknown opcode {} ({}, category = {})", magic_enum::enum_name(inst.opcode), u32(inst.opcode), magic_enum::enum_name(inst.category)); @@ -453,11 +457,11 @@ void Translator::LogMissingOpcode(const GcnInst& inst) { } void Translate(IR::Block* block, u32 pc, std::span inst_list, Info& info, - const Profile& profile) { + const RuntimeInfo& runtime_info, const Profile& profile) { if (inst_list.empty()) { return; } - Translator translator{block, info, profile}; + Translator translator{block, info, runtime_info, profile}; for (const auto& inst : inst_list) { pc += inst.length; diff --git a/src/shader_recompiler/frontend/translate/translate.h b/src/shader_recompiler/frontend/translate/translate.h index 8d418421cf..7559b85335 100644 --- a/src/shader_recompiler/frontend/translate/translate.h +++ b/src/shader_recompiler/frontend/translate/translate.h @@ -5,9 +5,9 @@ #include #include "shader_recompiler/frontend/instruction.h" +#include "shader_recompiler/info.h" #include "shader_recompiler/ir/basic_block.h" #include "shader_recompiler/ir/ir_emitter.h" -#include "shader_recompiler/runtime_info.h" namespace Shader { struct Info; @@ -55,172 +55,209 @@ enum class NegateMode : u32 { class Translator { public: - explicit Translator(IR::Block* block_, Info& info, const Profile& profile); + explicit Translator(IR::Block* block_, Info& info, const RuntimeInfo& runtime_info, + const Profile& profile); // Instruction categories void EmitPrologue(); void EmitFetch(const GcnInst& inst); - void EmitDataShare(const GcnInst& inst); - void EmitVectorInterpolation(const GcnInst& inst); - void EmitScalarMemory(const GcnInst& inst); - void EmitVectorMemory(const GcnInst& inst); void EmitExport(const GcnInst& inst); void EmitFlowControl(u32 pc, const GcnInst& inst); void EmitScalarAlu(const GcnInst& inst); + void EmitScalarMemory(const GcnInst& inst); void EmitVectorAlu(const GcnInst& inst); + void EmitVectorInterpolation(const GcnInst& inst); + void EmitDataShare(const GcnInst& inst); + void EmitVectorMemory(const GcnInst& inst); // Instruction encodings void EmitSOPC(const GcnInst& inst); void EmitSOPK(const GcnInst& inst); // Scalar ALU - void S_MOVK(const GcnInst& inst); - void S_MOV(const GcnInst& inst); - void S_MUL_I32(const GcnInst& inst); - void S_CMP(ConditionOp cond, bool is_signed, const GcnInst& inst); - void S_AND_SAVEEXEC_B64(const GcnInst& inst); - void S_MOV_B64(const GcnInst& inst); - void S_OR_B64(NegateMode negate, bool is_xor, const GcnInst& inst); - void S_AND_B64(NegateMode negate, const GcnInst& inst); + // SOP2 + void S_ADD_U32(const GcnInst& inst); + void S_SUB_U32(const GcnInst& inst); void S_ADD_I32(const GcnInst& inst); - void S_AND_B32(const GcnInst& inst); - void S_ASHR_I32(const GcnInst& inst); - void S_OR_B32(const GcnInst& inst); - void S_LSHR_B32(const GcnInst& inst); + void S_ADDC_U32(const GcnInst& inst); + void S_MIN_U32(bool is_signed, const GcnInst& inst); + void S_MAX_U32(bool is_signed, const GcnInst& inst); void S_CSELECT_B32(const GcnInst& inst); void S_CSELECT_B64(const GcnInst& inst); - void S_BFE_U32(const GcnInst& inst); + void S_AND_B32(NegateMode negate, const GcnInst& inst); + void S_AND_B64(NegateMode negate, const GcnInst& inst); + void S_OR_B32(const GcnInst& inst); + void S_OR_B64(NegateMode negate, bool is_xor, const GcnInst& inst); + void S_XOR_B32(const GcnInst& inst); void S_LSHL_B32(const GcnInst& inst); + void S_LSHR_B32(const GcnInst& inst); + void S_ASHR_I32(const GcnInst& inst); void S_BFM_B32(const GcnInst& inst); + void S_MUL_I32(const GcnInst& inst); + void S_BFE_U32(const GcnInst& inst); + void S_ABSDIFF_I32(const GcnInst& inst); + + // SOPK + void S_MOVK(const GcnInst& inst); + void S_CMPK(ConditionOp cond, bool is_signed, const GcnInst& inst); + void S_ADDK_I32(const GcnInst& inst); + void S_MULK_I32(const GcnInst& inst); + + // SOP1 + void S_MOV(const GcnInst& inst); + void S_MOV_B64(const GcnInst& inst); void S_NOT_B64(const GcnInst& inst); void S_BREV_B32(const GcnInst& inst); - void S_ADD_U32(const GcnInst& inst); - void S_SUB_U32(const GcnInst& inst); void S_GETPC_B64(u32 pc, const GcnInst& inst); - void S_ADDC_U32(const GcnInst& inst); - void S_MULK_I32(const GcnInst& inst); - void S_ADDK_I32(const GcnInst& inst); - void S_MAX_U32(const GcnInst& inst); - void S_MIN_U32(const GcnInst& inst); - void S_CMPK(ConditionOp cond, bool is_signed, const GcnInst& inst); + void S_AND_SAVEEXEC_B64(const GcnInst& inst); + + // SOPC + void S_CMP(ConditionOp cond, bool is_signed, const GcnInst& inst); + + // SOPP + void S_BARRIER(); // Scalar Memory + // SMRD void S_LOAD_DWORD(int num_dwords, const GcnInst& inst); void S_BUFFER_LOAD_DWORD(int num_dwords, const GcnInst& inst); // Vector ALU - void V_MOV(const GcnInst& inst); - void V_SAD(const GcnInst& inst); - void V_MAC_F32(const GcnInst& inst); - void V_CVT_PKRTZ_F16_F32(const GcnInst& inst); - void V_CVT_F32_F16(const GcnInst& inst); - void V_CVT_F16_F32(const GcnInst& inst); - void V_MUL_F32(const GcnInst& inst); + // VOP2 void V_CNDMASK_B32(const GcnInst& inst); - void V_OR_B32(bool is_xor, const GcnInst& inst); - void V_AND_B32(const GcnInst& inst); - void V_LSHLREV_B32(const GcnInst& inst); + void V_READLANE_B32(const GcnInst& inst); + void V_WRITELANE_B32(const GcnInst& inst); + void V_ADD_F32(const GcnInst& inst); + void V_SUB_F32(const GcnInst& inst); + void V_SUBREV_F32(const GcnInst& inst); + void V_MUL_F32(const GcnInst& inst); + void V_MUL_I32_I24(const GcnInst& inst); + void V_MIN_F32(const GcnInst& inst, bool is_legacy = false); + void V_MAX_F32(const GcnInst& inst, bool is_legacy = false); + void V_MIN_I32(const GcnInst& inst); + void V_MIN_U32(const GcnInst& inst); + void V_MAX_U32(bool is_signed, const GcnInst& inst); + void V_LSHR_B32(const GcnInst& inst); + void V_LSHRREV_B32(const GcnInst& inst); + void V_ASHR_I32(const GcnInst& inst); + void V_ASHRREV_I32(const GcnInst& inst); void V_LSHL_B32(const GcnInst& inst); - void V_LSHL_B64(const GcnInst& inst); + void V_LSHLREV_B32(const GcnInst& inst); + void V_AND_B32(const GcnInst& inst); + void V_OR_B32(bool is_xor, const GcnInst& inst); + void V_BFM_B32(const GcnInst& inst); + void V_MAC_F32(const GcnInst& inst); + void V_MADMK_F32(const GcnInst& inst); + void V_BCNT_U32_B32(const GcnInst& inst); + void V_MBCNT_U32_B32(bool is_low, const GcnInst& inst); void V_ADD_I32(const GcnInst& inst); + void V_SUB_I32(const GcnInst& inst); + void V_SUBREV_I32(const GcnInst& inst); void V_ADDC_U32(const GcnInst& inst); + void V_LDEXP_F32(const GcnInst& inst); + void V_CVT_PKNORM_U16_F32(const GcnInst& inst); + void V_CVT_PKRTZ_F16_F32(const GcnInst& inst); + + // VOP1 + void V_MOV(const GcnInst& inst); + void V_READFIRSTLANE_B32(const GcnInst& inst); void V_CVT_F32_I32(const GcnInst& inst); void V_CVT_F32_U32(const GcnInst& inst); - void V_MAD_F32(const GcnInst& inst); - void V_FRACT_F32(const GcnInst& inst); - void V_ADD_F32(const GcnInst& inst); + void V_CVT_U32_F32(const GcnInst& inst); + void V_CVT_I32_F32(const GcnInst& inst); + void V_CVT_F16_F32(const GcnInst& inst); + void V_CVT_F32_F16(const GcnInst& inst); + void V_CVT_FLR_I32_F32(const GcnInst& inst); void V_CVT_OFF_F32_I4(const GcnInst& inst); - void V_MED3_F32(const GcnInst& inst); - void V_MED3_I32(const GcnInst& inst); + void V_CVT_F32_UBYTE(u32 index, const GcnInst& inst); + void V_FRACT_F32(const GcnInst& inst); + void V_TRUNC_F32(const GcnInst& inst); + void V_CEIL_F32(const GcnInst& inst); + void V_RNDNE_F32(const GcnInst& inst); void V_FLOOR_F32(const GcnInst& inst); - void V_SUB_F32(const GcnInst& inst); + void V_EXP_F32(const GcnInst& inst); + void V_LOG_F32(const GcnInst& inst); void V_RCP_F32(const GcnInst& inst); - void V_FMA_F32(const GcnInst& inst); - void V_CMP_F32(ConditionOp op, bool set_exec, const GcnInst& inst); - void V_MAX_F32(const GcnInst& inst, bool is_legacy = false); - void V_MAX_U32(bool is_signed, const GcnInst& inst); + void V_RCP_F64(const GcnInst& inst); void V_RSQ_F32(const GcnInst& inst); - void V_SIN_F32(const GcnInst& inst); - void V_LOG_F32(const GcnInst& inst); - void V_EXP_F32(const GcnInst& inst); void V_SQRT_F32(const GcnInst& inst); - void V_MIN_F32(const GcnInst& inst, bool is_legacy = false); - void V_MIN3_F32(const GcnInst& inst); - void V_MIN3_I32(const GcnInst& inst); - void V_MADMK_F32(const GcnInst& inst); - void V_CUBEMA_F32(const GcnInst& inst); - void V_CUBESC_F32(const GcnInst& inst); - void V_CUBETC_F32(const GcnInst& inst); - void V_CUBEID_F32(const GcnInst& inst); - void V_CVT_U32_F32(const GcnInst& inst); - void V_SUBREV_F32(const GcnInst& inst); - void V_SUBREV_I32(const GcnInst& inst); - void V_MAD_U64_U32(const GcnInst& inst); - void V_CMP_U32(ConditionOp op, bool is_signed, bool set_exec, const GcnInst& inst); - void V_LSHRREV_B32(const GcnInst& inst); - void V_MUL_HI_U32(bool is_signed, const GcnInst& inst); - void V_SAD_U32(const GcnInst& inst); - void V_BFE_U32(bool is_signed, const GcnInst& inst); - void V_MAD_I32_I24(const GcnInst& inst, bool is_signed = true); - void V_MUL_I32_I24(const GcnInst& inst); - void V_SUB_I32(const GcnInst& inst); - void V_LSHR_B32(const GcnInst& inst); - void V_ASHRREV_I32(const GcnInst& inst); - void V_ASHR_I32(const GcnInst& inst); - void V_MAD_U32_U24(const GcnInst& inst); - void V_RNDNE_F32(const GcnInst& inst); - void V_BCNT_U32_B32(const GcnInst& inst); + void V_SIN_F32(const GcnInst& inst); void V_COS_F32(const GcnInst& inst); - void V_MAX3_F32(const GcnInst& inst); - void V_MAX3_U32(const GcnInst& inst); - void V_CVT_I32_F32(const GcnInst& inst); - void V_MIN_I32(const GcnInst& inst); - void V_MUL_LO_U32(const GcnInst& inst); - void V_TRUNC_F32(const GcnInst& inst); - void V_CEIL_F32(const GcnInst& inst); - void V_MIN_U32(const GcnInst& inst); - void V_CMP_NE_U64(const GcnInst& inst); - void V_BFI_B32(const GcnInst& inst); void V_NOT_B32(const GcnInst& inst); - void V_CVT_F32_UBYTE(u32 index, const GcnInst& inst); void V_BFREV_B32(const GcnInst& inst); - void V_LDEXP_F32(const GcnInst& inst); - void V_CVT_FLR_I32_F32(const GcnInst& inst); - void V_CMP_CLASS_F32(const GcnInst& inst); + void V_FFBH_U32(const GcnInst& inst); void V_FFBL_B32(const GcnInst& inst); - void V_MBCNT_U32_B32(bool is_low, const GcnInst& inst); + void V_MOVRELD_B32(const GcnInst& inst); + void V_MOVRELS_B32(const GcnInst& inst); + void V_MOVRELSD_B32(const GcnInst& inst); - // Vector Memory - void BUFFER_LOAD(u32 num_dwords, bool is_typed, const GcnInst& inst); - void BUFFER_LOAD_FORMAT(u32 num_dwords, const GcnInst& inst); - void BUFFER_STORE(u32 num_dwords, bool is_typed, const GcnInst& inst); - void BUFFER_STORE_FORMAT(u32 num_dwords, const GcnInst& inst); - void BUFFER_ATOMIC(AtomicOp op, const GcnInst& inst); + // VOPC + void V_CMP_F32(ConditionOp op, bool set_exec, const GcnInst& inst); + void V_CMP_U32(ConditionOp op, bool is_signed, bool set_exec, const GcnInst& inst); + void V_CMP_NE_U64(const GcnInst& inst); + void V_CMP_CLASS_F32(const GcnInst& inst); + + // VOP3a + void V_MAD_F32(const GcnInst& inst); + void V_MAD_I32_I24(const GcnInst& inst, bool is_signed = false); + void V_MAD_U32_U24(const GcnInst& inst); + void V_CUBEID_F32(const GcnInst& inst); + void V_CUBESC_F32(const GcnInst& inst); + void V_CUBETC_F32(const GcnInst& inst); + void V_CUBEMA_F32(const GcnInst& inst); + void V_BFE_U32(bool is_signed, const GcnInst& inst); + void V_BFI_B32(const GcnInst& inst); + void V_FMA_F32(const GcnInst& inst); + void V_FMA_F64(const GcnInst& inst); + void V_MIN3_F32(const GcnInst& inst); + void V_MIN3_I32(const GcnInst& inst); + void V_MAX3_F32(const GcnInst& inst); + void V_MAX3_U32(bool is_signed, const GcnInst& inst); + void V_MED3_F32(const GcnInst& inst); + void V_MED3_I32(const GcnInst& inst); + void V_SAD(const GcnInst& inst); + void V_SAD_U32(const GcnInst& inst); + void V_CVT_PK_U8_F32(const GcnInst& inst); + void V_LSHL_B64(const GcnInst& inst); + void V_MUL_F64(const GcnInst& inst); + void V_MAX_F64(const GcnInst& inst); + void V_MUL_LO_U32(const GcnInst& inst); + void V_MUL_HI_U32(bool is_signed, const GcnInst& inst); + void V_MAD_U64_U32(const GcnInst& inst); // Vector interpolation + // VINTRP void V_INTERP_P2_F32(const GcnInst& inst); void V_INTERP_MOV_F32(const GcnInst& inst); // Data share - void DS_SWIZZLE_B32(const GcnInst& inst); - void DS_READ(int bit_size, bool is_signed, bool is_pair, const GcnInst& inst); - void DS_WRITE(int bit_size, bool is_signed, bool is_pair, bool stride64, const GcnInst& inst); + // DS void DS_ADD_U32(const GcnInst& inst, bool rtn); void DS_MIN_U32(const GcnInst& inst, bool is_signed, bool rtn); void DS_MAX_U32(const GcnInst& inst, bool is_signed, bool rtn); - void V_READFIRSTLANE_B32(const GcnInst& inst); - void V_READLANE_B32(const GcnInst& inst); - void V_WRITELANE_B32(const GcnInst& inst); - void S_BARRIER(); + void DS_WRITE(int bit_size, bool is_signed, bool is_pair, bool stride64, const GcnInst& inst); + void DS_SWIZZLE_B32(const GcnInst& inst); + void DS_READ(int bit_size, bool is_signed, bool is_pair, bool stride64, const GcnInst& inst); + void DS_APPEND(const GcnInst& inst); + void DS_CONSUME(const GcnInst& inst); + // Buffer Memory + // MUBUF / MTBUF + void BUFFER_LOAD(u32 num_dwords, bool is_typed, const GcnInst& inst); + void BUFFER_LOAD_FORMAT(u32 num_dwords, const GcnInst& inst); + void BUFFER_STORE(u32 num_dwords, bool is_typed, const GcnInst& inst); + void BUFFER_STORE_FORMAT(u32 num_dwords, const GcnInst& inst); + void BUFFER_ATOMIC(AtomicOp op, const GcnInst& inst); + + // Image Memory // MIMG + void IMAGE_LOAD(bool has_mip, const GcnInst& inst); + void IMAGE_STORE(const GcnInst& inst); void IMAGE_GET_RESINFO(const GcnInst& inst); + void IMAGE_ATOMIC(AtomicOp op, const GcnInst& inst); void IMAGE_SAMPLE(const GcnInst& inst); void IMAGE_GATHER(const GcnInst& inst); - void IMAGE_STORE(const GcnInst& inst); - void IMAGE_LOAD(bool has_mip, const GcnInst& inst); void IMAGE_GET_LOD(const GcnInst& inst); - void IMAGE_ATOMIC(AtomicOp op, const GcnInst& inst); private: template @@ -230,17 +267,21 @@ class Translator { void SetDst(const InstOperand& operand, const IR::U32F32& value); void SetDst64(const InstOperand& operand, const IR::U64F64& value_raw); + // Vector ALU Helprers + IR::U32 VMovRelSHelper(u32 src_vgprno, const IR::U32 m0); + void VMovRelDHelper(u32 dst_vgprno, const IR::U32 src_val, const IR::U32 m0); + void LogMissingOpcode(const GcnInst& inst); private: IR::IREmitter ir; Info& info; + const RuntimeInfo& runtime_info; const Profile& profile; - IR::U32 m0_value; bool opcode_missing = false; }; void Translate(IR::Block* block, u32 block_base, std::span inst_list, Info& info, - const Profile& profile); + const RuntimeInfo& runtime_info, const Profile& profile); } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/vector_alu.cpp b/src/shader_recompiler/frontend/translate/vector_alu.cpp index 61a0440e3c..debc39f352 100644 --- a/src/shader_recompiler/frontend/translate/vector_alu.cpp +++ b/src/shader_recompiler/frontend/translate/vector_alu.cpp @@ -1,61 +1,120 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include "shader_recompiler/frontend/opcodes.h" #include "shader_recompiler/frontend/translate/translate.h" namespace Shader::Gcn { void Translator::EmitVectorAlu(const GcnInst& inst) { switch (inst.opcode) { - case Opcode::V_LSHLREV_B32: - return V_LSHLREV_B32(inst); - case Opcode::V_LSHL_B32: - return V_LSHL_B32(inst); - case Opcode::V_LSHL_B64: - return V_LSHL_B64(inst); - case Opcode::V_BFREV_B32: - return V_BFREV_B32(inst); - case Opcode::V_BFE_U32: - return V_BFE_U32(false, inst); - case Opcode::V_BFE_I32: - return V_BFE_U32(true, inst); - case Opcode::V_BFI_B32: - return V_BFI_B32(inst); + // VOP2 + case Opcode::V_CNDMASK_B32: + return V_CNDMASK_B32(inst); + case Opcode::V_READLANE_B32: + return V_READLANE_B32(inst); + case Opcode::V_WRITELANE_B32: + return V_WRITELANE_B32(inst); + case Opcode::V_ADD_F32: + return V_ADD_F32(inst); + case Opcode::V_SUB_F32: + return V_SUB_F32(inst); + case Opcode::V_SUBREV_F32: + return V_SUBREV_F32(inst); + case Opcode::V_MAC_LEGACY_F32: + return V_MAC_F32(inst); + case Opcode::V_MUL_LEGACY_F32: + return V_MUL_F32(inst); + case Opcode::V_MUL_F32: + return V_MUL_F32(inst); + case Opcode::V_MUL_I32_I24: + return V_MUL_I32_I24(inst); + case Opcode::V_MUL_U32_U24: + return V_MUL_I32_I24(inst); + case Opcode::V_MIN_LEGACY_F32: + return V_MIN_F32(inst, true); + case Opcode::V_MAX_LEGACY_F32: + return V_MAX_F32(inst, true); + case Opcode::V_MIN_F32: + return V_MIN_F32(inst, false); + case Opcode::V_MAX_F32: + return V_MAX_F32(inst); + case Opcode::V_MIN_I32: + return V_MIN_I32(inst); + case Opcode::V_MAX_I32: + return V_MAX_U32(true, inst); + case Opcode::V_MIN_U32: + return V_MIN_U32(inst); + case Opcode::V_MAX_U32: + return V_MAX_U32(false, inst); case Opcode::V_LSHR_B32: return V_LSHR_B32(inst); - case Opcode::V_ASHRREV_I32: - return V_ASHRREV_I32(inst); - case Opcode::V_ASHR_I32: - return V_ASHR_I32(inst); case Opcode::V_LSHRREV_B32: return V_LSHRREV_B32(inst); - case Opcode::V_NOT_B32: - return V_NOT_B32(inst); + case Opcode::V_ASHR_I32: + return V_ASHR_I32(inst); + case Opcode::V_ASHRREV_I32: + return V_ASHRREV_I32(inst); + case Opcode::V_LSHL_B32: + return V_LSHL_B32(inst); + case Opcode::V_LSHLREV_B32: + return V_LSHLREV_B32(inst); case Opcode::V_AND_B32: return V_AND_B32(inst); case Opcode::V_OR_B32: return V_OR_B32(false, inst); case Opcode::V_XOR_B32: return V_OR_B32(true, inst); - case Opcode::V_FFBL_B32: - return V_FFBL_B32(inst); - - case Opcode::V_MOV_B32: - return V_MOV(inst); + case Opcode::V_BFM_B32: + return V_BFM_B32(inst); + case Opcode::V_MAC_F32: + return V_MAC_F32(inst); + case Opcode::V_MADMK_F32: + return V_MADMK_F32(inst); + case Opcode::V_MADAK_F32: + return V_FMA_F32(inst); + case Opcode::V_BCNT_U32_B32: + return V_BCNT_U32_B32(inst); + case Opcode::V_MBCNT_LO_U32_B32: + return V_MBCNT_U32_B32(true, inst); + case Opcode::V_MBCNT_HI_U32_B32: + return V_MBCNT_U32_B32(false, inst); case Opcode::V_ADD_I32: return V_ADD_I32(inst); + case Opcode::V_SUB_I32: + return V_SUB_I32(inst); + case Opcode::V_SUBREV_I32: + return V_SUBREV_I32(inst); case Opcode::V_ADDC_U32: return V_ADDC_U32(inst); + case Opcode::V_LDEXP_F32: + return V_LDEXP_F32(inst); + case Opcode::V_CVT_PKNORM_U16_F32: + return V_CVT_PKNORM_U16_F32(inst); + case Opcode::V_CVT_PKRTZ_F16_F32: + return V_CVT_PKRTZ_F16_F32(inst); + + // VOP1 + case Opcode::V_MOV_B32: + return V_MOV(inst); + case Opcode::V_READFIRSTLANE_B32: + return V_READFIRSTLANE_B32(inst); case Opcode::V_CVT_F32_I32: return V_CVT_F32_I32(inst); case Opcode::V_CVT_F32_U32: return V_CVT_F32_U32(inst); - case Opcode::V_CVT_PKRTZ_F16_F32: - return V_CVT_PKRTZ_F16_F32(inst); - case Opcode::V_CVT_F32_F16: - return V_CVT_F32_F16(inst); + case Opcode::V_CVT_U32_F32: + return V_CVT_U32_F32(inst); + case Opcode::V_CVT_I32_F32: + return V_CVT_I32_F32(inst); case Opcode::V_CVT_F16_F32: return V_CVT_F16_F32(inst); + case Opcode::V_CVT_F32_F16: + return V_CVT_F32_F16(inst); + case Opcode::V_CVT_FLR_I32_F32: + return V_CVT_FLR_I32_F32(inst); + case Opcode::V_CVT_OFF_F32_I4: + return V_CVT_OFF_F32_I4(inst); case Opcode::V_CVT_F32_UBYTE0: return V_CVT_F32_UBYTE(0, inst); case Opcode::V_CVT_F32_UBYTE1: @@ -64,34 +123,55 @@ void Translator::EmitVectorAlu(const GcnInst& inst) { return V_CVT_F32_UBYTE(2, inst); case Opcode::V_CVT_F32_UBYTE3: return V_CVT_F32_UBYTE(3, inst); - case Opcode::V_CVT_OFF_F32_I4: - return V_CVT_OFF_F32_I4(inst); - case Opcode::V_MAD_U64_U32: - return V_MAD_U64_U32(inst); - case Opcode::V_CMP_GE_I32: - return V_CMP_U32(ConditionOp::GE, true, false, inst); - case Opcode::V_CMP_EQ_I32: - return V_CMP_U32(ConditionOp::EQ, true, false, inst); - case Opcode::V_CMP_LE_I32: - return V_CMP_U32(ConditionOp::LE, true, false, inst); - case Opcode::V_CMP_NE_I32: - return V_CMP_U32(ConditionOp::LG, true, false, inst); - case Opcode::V_CMP_NE_U32: - return V_CMP_U32(ConditionOp::LG, false, false, inst); - case Opcode::V_CMP_EQ_U32: - return V_CMP_U32(ConditionOp::EQ, false, false, inst); - case Opcode::V_CMP_F_U32: - return V_CMP_U32(ConditionOp::F, false, false, inst); - case Opcode::V_CMP_LT_U32: - return V_CMP_U32(ConditionOp::LT, false, false, inst); - case Opcode::V_CMP_GT_U32: - return V_CMP_U32(ConditionOp::GT, false, false, inst); - case Opcode::V_CMP_GE_U32: - return V_CMP_U32(ConditionOp::GE, false, false, inst); - case Opcode::V_CMP_TRU_U32: - return V_CMP_U32(ConditionOp::TRU, false, false, inst); - case Opcode::V_CMP_NEQ_F32: - return V_CMP_F32(ConditionOp::LG, false, inst); + case Opcode::V_FRACT_F32: + return V_FRACT_F32(inst); + case Opcode::V_TRUNC_F32: + return V_TRUNC_F32(inst); + case Opcode::V_CEIL_F32: + return V_CEIL_F32(inst); + case Opcode::V_RNDNE_F32: + return V_RNDNE_F32(inst); + case Opcode::V_FLOOR_F32: + return V_FLOOR_F32(inst); + case Opcode::V_EXP_F32: + return V_EXP_F32(inst); + case Opcode::V_LOG_F32: + return V_LOG_F32(inst); + case Opcode::V_RCP_F32: + return V_RCP_F32(inst); + case Opcode::V_RCP_F64: + return V_RCP_F64(inst); + case Opcode::V_RCP_IFLAG_F32: + return V_RCP_F32(inst); + case Opcode::V_RSQ_CLAMP_F32: + return V_RSQ_F32(inst); + case Opcode::V_RSQ_LEGACY_F32: + return V_RSQ_F32(inst); + case Opcode::V_RSQ_F32: + return V_RSQ_F32(inst); + case Opcode::V_SQRT_F32: + return V_SQRT_F32(inst); + case Opcode::V_SIN_F32: + return V_SIN_F32(inst); + case Opcode::V_COS_F32: + return V_COS_F32(inst); + case Opcode::V_NOT_B32: + return V_NOT_B32(inst); + case Opcode::V_BFREV_B32: + return V_BFREV_B32(inst); + case Opcode::V_FFBH_U32: + return V_FFBH_U32(inst); + case Opcode::V_FFBL_B32: + return V_FFBL_B32(inst); + case Opcode::V_MOVRELD_B32: + return V_MOVRELD_B32(inst); + case Opcode::V_MOVRELS_B32: + return V_MOVRELS_B32(inst); + case Opcode::V_MOVRELSD_B32: + return V_MOVRELSD_B32(inst); + + // VOPC + // V_CMP_{OP16}_F32 case Opcode::V_CMP_F_F32: return V_CMP_F32(ConditionOp::F, false, inst); case Opcode::V_CMP_LT_F32: @@ -106,145 +186,20 @@ void Translator::EmitVectorAlu(const GcnInst& inst) { return V_CMP_F32(ConditionOp::LG, false, inst); case Opcode::V_CMP_GE_F32: return V_CMP_F32(ConditionOp::GE, false, inst); + case Opcode::V_CMP_U_F32: + return V_CMP_F32(ConditionOp::U, false, inst); + case Opcode::V_CMP_NGE_F32: + return V_CMP_F32(ConditionOp::LT, false, inst); + case Opcode::V_CMP_NGT_F32: + return V_CMP_F32(ConditionOp::LE, false, inst); case Opcode::V_CMP_NLE_F32: return V_CMP_F32(ConditionOp::GT, false, inst); + case Opcode::V_CMP_NEQ_F32: + return V_CMP_F32(ConditionOp::LG, false, inst); case Opcode::V_CMP_NLT_F32: return V_CMP_F32(ConditionOp::GE, false, inst); - case Opcode::V_CMP_NGT_F32: - return V_CMP_F32(ConditionOp::LE, false, inst); - case Opcode::V_CMP_NGE_F32: - return V_CMP_F32(ConditionOp::LT, false, inst); - case Opcode::V_CMP_U_F32: - return V_CMP_F32(ConditionOp::U, false, inst); - case Opcode::V_CNDMASK_B32: - return V_CNDMASK_B32(inst); - case Opcode::V_MAX_I32: - return V_MAX_U32(true, inst); - case Opcode::V_MAX_U32: - return V_MAX_U32(false, inst); - case Opcode::V_MIN_I32: - return V_MIN_I32(inst); - case Opcode::V_CUBEMA_F32: - return V_CUBEMA_F32(inst); - case Opcode::V_CUBESC_F32: - return V_CUBESC_F32(inst); - case Opcode::V_CUBETC_F32: - return V_CUBETC_F32(inst); - case Opcode::V_CUBEID_F32: - return V_CUBEID_F32(inst); - case Opcode::V_CVT_U32_F32: - return V_CVT_U32_F32(inst); - case Opcode::V_CVT_I32_F32: - return V_CVT_I32_F32(inst); - case Opcode::V_CVT_FLR_I32_F32: - return V_CVT_FLR_I32_F32(inst); - case Opcode::V_SUBREV_I32: - return V_SUBREV_I32(inst); - case Opcode::V_MUL_HI_U32: - return V_MUL_HI_U32(false, inst); - case Opcode::V_MUL_LO_I32: - return V_MUL_LO_U32(inst); - case Opcode::V_SAD_U32: - return V_SAD_U32(inst); - case Opcode::V_SUB_I32: - return V_SUB_I32(inst); - case Opcode::V_MAD_I32_I24: - return V_MAD_I32_I24(inst); - case Opcode::V_MUL_I32_I24: - case Opcode::V_MUL_U32_U24: - return V_MUL_I32_I24(inst); - case Opcode::V_MAD_U32_U24: - return V_MAD_U32_U24(inst); - case Opcode::V_BCNT_U32_B32: - return V_BCNT_U32_B32(inst); - case Opcode::V_MUL_LO_U32: - return V_MUL_LO_U32(inst); - case Opcode::V_MIN_U32: - return V_MIN_U32(inst); - case Opcode::V_CMP_NE_U64: - return V_CMP_NE_U64(inst); - case Opcode::V_READFIRSTLANE_B32: - return V_READFIRSTLANE_B32(inst); - case Opcode::V_READLANE_B32: - return V_READLANE_B32(inst); - case Opcode::V_WRITELANE_B32: - return V_WRITELANE_B32(inst); - - case Opcode::V_MAD_F32: - return V_MAD_F32(inst); - case Opcode::V_MAC_F32: - return V_MAC_F32(inst); - case Opcode::V_MUL_F32: - return V_MUL_F32(inst); - case Opcode::V_RCP_F32: - return V_RCP_F32(inst); - case Opcode::V_LDEXP_F32: - return V_LDEXP_F32(inst); - case Opcode::V_FRACT_F32: - return V_FRACT_F32(inst); - case Opcode::V_ADD_F32: - return V_ADD_F32(inst); - case Opcode::V_MED3_F32: - return V_MED3_F32(inst); - case Opcode::V_MED3_I32: - return V_MED3_I32(inst); - case Opcode::V_FLOOR_F32: - return V_FLOOR_F32(inst); - case Opcode::V_SUB_F32: - return V_SUB_F32(inst); - case Opcode::V_FMA_F32: - case Opcode::V_MADAK_F32: - return V_FMA_F32(inst); - case Opcode::V_MAX_F32: - return V_MAX_F32(inst); - case Opcode::V_RSQ_F32: - return V_RSQ_F32(inst); - case Opcode::V_SIN_F32: - return V_SIN_F32(inst); - case Opcode::V_COS_F32: - return V_COS_F32(inst); - case Opcode::V_LOG_F32: - return V_LOG_F32(inst); - case Opcode::V_EXP_F32: - return V_EXP_F32(inst); - case Opcode::V_SQRT_F32: - return V_SQRT_F32(inst); - case Opcode::V_MIN_F32: - return V_MIN_F32(inst, false); - case Opcode::V_MIN3_F32: - return V_MIN3_F32(inst); - case Opcode::V_MIN3_I32: - return V_MIN3_I32(inst); - case Opcode::V_MIN_LEGACY_F32: - return V_MIN_F32(inst, true); - case Opcode::V_MADMK_F32: - return V_MADMK_F32(inst); - case Opcode::V_SUBREV_F32: - return V_SUBREV_F32(inst); - case Opcode::V_RNDNE_F32: - return V_RNDNE_F32(inst); - case Opcode::V_MAX3_F32: - return V_MAX3_F32(inst); - case Opcode::V_MAX3_U32: - return V_MAX3_U32(inst); - case Opcode::V_TRUNC_F32: - return V_TRUNC_F32(inst); - case Opcode::V_CEIL_F32: - return V_CEIL_F32(inst); - case Opcode::V_MUL_LEGACY_F32: - return V_MUL_F32(inst); - case Opcode::V_MAC_LEGACY_F32: - return V_MAC_F32(inst); - case Opcode::V_MAD_LEGACY_F32: - return V_MAD_F32(inst); - case Opcode::V_MAX_LEGACY_F32: - return V_MAX_F32(inst, true); - case Opcode::V_RSQ_LEGACY_F32: - case Opcode::V_RSQ_CLAMP_F32: - return V_RSQ_F32(inst); - case Opcode::V_RCP_IFLAG_F32: - return V_RCP_F32(inst); + // V_CMPX_{OP16}_F32 case Opcode::V_CMPX_F_F32: return V_CMP_F32(ConditionOp::F, true, inst); case Opcode::V_CMPX_LT_F32: @@ -273,19 +228,50 @@ void Translator::EmitVectorAlu(const GcnInst& inst) { return V_CMP_F32(ConditionOp::GE, true, inst); case Opcode::V_CMPX_TRU_F32: return V_CMP_F32(ConditionOp::TRU, true, inst); - case Opcode::V_CMP_CLASS_F32: - return V_CMP_CLASS_F32(inst); - case Opcode::V_CMP_LE_U32: - return V_CMP_U32(ConditionOp::LE, false, false, inst); - case Opcode::V_CMP_GT_I32: - return V_CMP_U32(ConditionOp::GT, true, false, inst); + // V_CMP_{OP8}_I32 case Opcode::V_CMP_LT_I32: return V_CMP_U32(ConditionOp::LT, true, false, inst); - case Opcode::V_CMPX_GT_I32: - return V_CMP_U32(ConditionOp::GT, true, true, inst); + case Opcode::V_CMP_EQ_I32: + return V_CMP_U32(ConditionOp::EQ, true, false, inst); + case Opcode::V_CMP_LE_I32: + return V_CMP_U32(ConditionOp::LE, true, false, inst); + case Opcode::V_CMP_GT_I32: + return V_CMP_U32(ConditionOp::GT, true, false, inst); + case Opcode::V_CMP_NE_I32: + return V_CMP_U32(ConditionOp::LG, true, false, inst); + case Opcode::V_CMP_GE_I32: + return V_CMP_U32(ConditionOp::GE, true, false, inst); + + // V_CMPX_{OP8}_I32 case Opcode::V_CMPX_LT_I32: return V_CMP_U32(ConditionOp::LT, true, true, inst); + case Opcode::V_CMPX_EQ_I32: + return V_CMP_U32(ConditionOp::EQ, true, true, inst); + case Opcode::V_CMPX_GT_I32: + return V_CMP_U32(ConditionOp::GT, true, true, inst); + case Opcode::V_CMPX_LG_I32: + return V_CMP_U32(ConditionOp::LG, true, true, inst); + + // V_CMP_{OP8}_U32 + case Opcode::V_CMP_F_U32: + return V_CMP_U32(ConditionOp::F, false, false, inst); + case Opcode::V_CMP_LT_U32: + return V_CMP_U32(ConditionOp::LT, false, false, inst); + case Opcode::V_CMP_EQ_U32: + return V_CMP_U32(ConditionOp::EQ, false, false, inst); + case Opcode::V_CMP_LE_U32: + return V_CMP_U32(ConditionOp::LE, false, false, inst); + case Opcode::V_CMP_GT_U32: + return V_CMP_U32(ConditionOp::GT, false, false, inst); + case Opcode::V_CMP_NE_U32: + return V_CMP_U32(ConditionOp::LG, false, false, inst); + case Opcode::V_CMP_GE_U32: + return V_CMP_U32(ConditionOp::GE, false, false, inst); + case Opcode::V_CMP_TRU_U32: + return V_CMP_U32(ConditionOp::TRU, false, false, inst); + + // V_CMPX_{OP8}_U32 case Opcode::V_CMPX_F_U32: return V_CMP_U32(ConditionOp::F, false, true, inst); case Opcode::V_CMPX_LT_U32: @@ -302,16 +288,74 @@ void Translator::EmitVectorAlu(const GcnInst& inst) { return V_CMP_U32(ConditionOp::GE, false, true, inst); case Opcode::V_CMPX_TRU_U32: return V_CMP_U32(ConditionOp::TRU, false, true, inst); - case Opcode::V_CMPX_LG_I32: - return V_CMP_U32(ConditionOp::LG, true, true, inst); + case Opcode::V_CMPX_LE_I32: + return V_CMP_U32(ConditionOp::LE, true, true, inst); + // V_CMP_{OP8}_U64 + case Opcode::V_CMP_NE_U64: + return V_CMP_NE_U64(inst); - case Opcode::V_MBCNT_LO_U32_B32: - return V_MBCNT_U32_B32(true, inst); - case Opcode::V_MBCNT_HI_U32_B32: - return V_MBCNT_U32_B32(false, inst); - //Rock Band 4 and Amplitude 2016 use this opcode but are playable with it skipped. - case Opcode::V_MOVRELS_B32: - return; + case Opcode::V_CMP_CLASS_F32: + return V_CMP_CLASS_F32(inst); + + // VOP3a + case Opcode::V_MAD_LEGACY_F32: + return V_MAD_F32(inst); + case Opcode::V_MAD_F32: + return V_MAD_F32(inst); + case Opcode::V_MAD_I32_I24: + return V_MAD_I32_I24(inst); + case Opcode::V_MAD_U32_U24: + return V_MAD_U32_U24(inst); + case Opcode::V_CUBEID_F32: + return V_CUBEID_F32(inst); + case Opcode::V_CUBESC_F32: + return V_CUBESC_F32(inst); + case Opcode::V_CUBETC_F32: + return V_CUBETC_F32(inst); + case Opcode::V_CUBEMA_F32: + return V_CUBEMA_F32(inst); + case Opcode::V_BFE_U32: + return V_BFE_U32(false, inst); + case Opcode::V_BFE_I32: + return V_BFE_U32(true, inst); + case Opcode::V_BFI_B32: + return V_BFI_B32(inst); + case Opcode::V_FMA_F32: + return V_FMA_F32(inst); + case Opcode::V_FMA_F64: + return V_FMA_F64(inst); + case Opcode::V_MIN3_F32: + return V_MIN3_F32(inst); + case Opcode::V_MIN3_I32: + return V_MIN3_I32(inst); + case Opcode::V_MAX3_F32: + return V_MAX3_F32(inst); + case Opcode::V_MAX3_I32: + return V_MAX3_U32(true, inst); + case Opcode::V_MAX3_U32: + return V_MAX3_U32(false, inst); + case Opcode::V_MED3_F32: + return V_MED3_F32(inst); + case Opcode::V_MED3_I32: + return V_MED3_I32(inst); + case Opcode::V_SAD_U32: + return V_SAD_U32(inst); + case Opcode::V_CVT_PK_U8_F32: + return V_CVT_PK_U8_F32(inst); + case Opcode::V_LSHL_B64: + return V_LSHL_B64(inst); + case Opcode::V_MUL_F64: + return V_MUL_F64(inst); + case Opcode::V_MAX_F64: + return V_MAX_F64(inst); + case Opcode::V_MUL_LO_U32: + return V_MUL_LO_U32(inst); + case Opcode::V_MUL_HI_U32: + return V_MUL_HI_U32(false, inst); + case Opcode::V_MUL_LO_I32: + return V_MUL_LO_U32(inst); + case Opcode::V_MAD_U64_U32: + return V_MAD_U64_U32(inst); case Opcode::V_NOP: return; default: @@ -319,74 +363,98 @@ void Translator::EmitVectorAlu(const GcnInst& inst) { } } -void Translator::V_MOV(const GcnInst& inst) { - SetDst(inst.dst[0], GetSrc(inst.src[0])); +// VOP2 + +void Translator::V_CNDMASK_B32(const GcnInst& inst) { + const IR::ScalarReg flag_reg{inst.src[2].code}; + const IR::U1 flag = inst.src[2].field == OperandField::ScalarGPR + ? ir.GetThreadBitScalarReg(flag_reg) + : ir.GetVcc(); + const IR::Value result = + ir.Select(flag, GetSrc(inst.src[1]), GetSrc(inst.src[0])); + SetDst(inst.dst[0], IR::U32F32{result}); } -void Translator::V_SAD(const GcnInst& inst) { - const IR::U32 abs_diff = ir.IAbs(ir.ISub(GetSrc(inst.src[0]), GetSrc(inst.src[1]))); - SetDst(inst.dst[0], ir.IAdd(abs_diff, GetSrc(inst.src[2]))); +void Translator::V_ADD_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.FPAdd(src0, src1)); } -void Translator::V_MAC_F32(const GcnInst& inst) { - SetDst(inst.dst[0], ir.FPFma(GetSrc(inst.src[0]), GetSrc(inst.src[1]), - GetSrc(inst.dst[0]))); +void Translator::V_SUB_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.FPSub(src0, src1)); } -void Translator::V_CVT_PKRTZ_F16_F32(const GcnInst& inst) { - const IR::VectorReg dst_reg{inst.dst[0].code}; - const IR::Value vec_f32 = - ir.CompositeConstruct(GetSrc(inst.src[0]), GetSrc(inst.src[1])); - ir.SetVectorReg(dst_reg, ir.PackHalf2x16(vec_f32)); +void Translator::V_SUBREV_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.FPSub(src1, src0)); } -void Translator::V_CVT_F32_F16(const GcnInst& inst) { - const IR::U32 src0 = GetSrc(inst.src[0]); - const IR::U16 src0l = ir.UConvert(16, src0); - SetDst(inst.dst[0], ir.FPConvert(32, ir.BitCast(src0l))); +void Translator::V_MUL_F32(const GcnInst& inst) { + SetDst(inst.dst[0], ir.FPMul(GetSrc(inst.src[0]), GetSrc(inst.src[1]))); } -void Translator::V_CVT_F16_F32(const GcnInst& inst) { - const IR::F32 src0 = GetSrc(inst.src[0]); - const IR::F16 src0fp16 = ir.FPConvert(16, src0); - SetDst(inst.dst[0], ir.UConvert(32, ir.BitCast(src0fp16))); +void Translator::V_MUL_I32_I24(const GcnInst& inst) { + const IR::U32 src0{ir.BitFieldExtract(GetSrc(inst.src[0]), ir.Imm32(0), ir.Imm32(24), true)}; + const IR::U32 src1{ir.BitFieldExtract(GetSrc(inst.src[1]), ir.Imm32(0), ir.Imm32(24), true)}; + SetDst(inst.dst[0], ir.IMul(src0, src1)); } -void Translator::V_MUL_F32(const GcnInst& inst) { - SetDst(inst.dst[0], ir.FPMul(GetSrc(inst.src[0]), GetSrc(inst.src[1]))); +void Translator::V_MIN_F32(const GcnInst& inst, bool is_legacy) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.FPMin(src0, src1, is_legacy)); } -void Translator::V_CNDMASK_B32(const GcnInst& inst) { - const IR::VectorReg dst_reg{inst.dst[0].code}; - const IR::ScalarReg flag_reg{inst.src[2].code}; - const IR::U1 flag = inst.src[2].field == OperandField::ScalarGPR - ? ir.GetThreadBitScalarReg(flag_reg) - : ir.GetVcc(); - const IR::Value result = - ir.Select(flag, GetSrc(inst.src[1]), GetSrc(inst.src[0])); - ir.SetVectorReg(dst_reg, IR::U32F32{result}); +void Translator::V_MAX_F32(const GcnInst& inst, bool is_legacy) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.FPMax(src0, src1, is_legacy)); } -void Translator::V_OR_B32(bool is_xor, const GcnInst& inst) { +void Translator::V_MIN_I32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, - is_xor ? ir.BitwiseXor(src0, src1) : IR::U32(ir.BitwiseOr(src0, src1))); + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.SMin(src0, src1)); } -void Translator::V_AND_B32(const GcnInst& inst) { +void Translator::V_MIN_U32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, ir.BitwiseAnd(src0, src1)); + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.IMin(src0, src1, false)); } -void Translator::V_LSHLREV_B32(const GcnInst& inst) { +void Translator::V_MAX_U32(bool is_signed, const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, ir.ShiftLeftLogical(src1, ir.BitwiseAnd(src0, ir.Imm32(0x1F)))); + SetDst(inst.dst[0], ir.IMax(src0, src1, is_signed)); +} + +void Translator::V_LSHR_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ShiftRightLogical(src0, ir.BitwiseAnd(src1, ir.Imm32(0x1F)))); +} + +void Translator::V_LSHRREV_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ShiftRightLogical(src1, ir.BitwiseAnd(src0, ir.Imm32(0x1F)))); +} + +void Translator::V_ASHR_I32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ShiftRightArithmetic(src0, ir.BitwiseAnd(src1, ir.Imm32(0x1F)))); +} + +void Translator::V_ASHRREV_I32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ShiftRightArithmetic(src1, ir.BitwiseAnd(src0, ir.Imm32(0x1F)))); } void Translator::V_LSHL_B32(const GcnInst& inst) { @@ -395,26 +463,98 @@ void Translator::V_LSHL_B32(const GcnInst& inst) { SetDst(inst.dst[0], ir.ShiftLeftLogical(src0, ir.BitwiseAnd(src1, ir.Imm32(0x1F)))); } -void Translator::V_LSHL_B64(const GcnInst& inst) { - const IR::U64 src0{GetSrc64(inst.src[0])}; - const IR::U64 src1{GetSrc64(inst.src[1])}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ASSERT_MSG(src0.IsImmediate() && src0.U64() == 0 && src1.IsImmediate() && src1.U64() == 0, - "V_LSHL_B64 with non-zero src0 or src1 is not supported"); - ir.SetVectorReg(dst_reg, ir.Imm32(0)); - ir.SetVectorReg(dst_reg + 1, ir.Imm32(0)); +void Translator::V_LSHLREV_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ShiftLeftLogical(src1, ir.BitwiseAnd(src0, ir.Imm32(0x1F)))); +} + +void Translator::V_AND_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; + SetDst(inst.dst[0], ir.BitwiseAnd(src0, src1)); +} + +void Translator::V_OR_B32(bool is_xor, const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; + SetDst(inst.dst[0], is_xor ? ir.BitwiseXor(src0, src1) : IR::U32(ir.BitwiseOr(src0, src1))); +} + +void Translator::V_BFM_B32(const GcnInst& inst) { + // bitmask width + const IR::U32 src0{ir.BitFieldExtract(GetSrc(inst.src[0]), ir.Imm32(0), ir.Imm32(4))}; + // bitmask offset + const IR::U32 src1{ir.BitFieldExtract(GetSrc(inst.src[1]), ir.Imm32(0), ir.Imm32(4))}; + const IR::U32 ones = ir.ISub(ir.ShiftLeftLogical(ir.Imm32(1), src0), ir.Imm32(1)); + SetDst(inst.dst[0], ir.ShiftLeftLogical(ones, src1)); +} + +void Translator::V_MAC_F32(const GcnInst& inst) { + SetDst(inst.dst[0], ir.FPFma(GetSrc(inst.src[0]), GetSrc(inst.src[1]), + GetSrc(inst.dst[0]))); +} + +void Translator::V_MADMK_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + const IR::F32 k{GetSrc(inst.src[2])}; + SetDst(inst.dst[0], ir.FPFma(src0, k, src1)); +} + +void Translator::V_BCNT_U32_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.IAdd(ir.BitCount(src0), src1)); +} + +void Translator::V_MBCNT_U32_B32(bool is_low, const GcnInst& inst) { + if (!is_low) { + // v_mbcnt_hi_u32_b32 v2, -1, 0 + if (inst.src[0].field == OperandField::SignedConstIntNeg && inst.src[0].code == 193 && + inst.src[1].field == OperandField::ConstZero) { + return; + } + // v_mbcnt_hi_u32_b32 vX, exec_hi, 0 + if (inst.src[0].field == OperandField::ExecHi && + inst.src[1].field == OperandField::ConstZero) { + return; + } + } else { + // v_mbcnt_lo_u32_b32 v2, -1, vX + // used combined with above to fetch lane id in non-compute stages + if (inst.src[0].field == OperandField::SignedConstIntNeg && inst.src[0].code == 193) { + SetDst(inst.dst[0], ir.LaneId()); + } + // v_mbcnt_lo_u32_b32 v20, exec_lo, vX + // used combined in above for append buffer indexing. + if (inst.src[0].field == OperandField::ExecLo) { + SetDst(inst.dst[0], ir.Imm32(0)); + } + } } void Translator::V_ADD_I32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, ir.IAdd(src0, src1)); + SetDst(inst.dst[0], ir.IAdd(src0, src1)); // TODO: Carry } -void Translator::V_ADDC_U32(const GcnInst& inst) { +void Translator::V_SUB_I32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ISub(src0, src1)); +} + +void Translator::V_SUBREV_I32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ISub(src1, src0)); + // TODO: Carry-out +} +void Translator::V_ADDC_U32(const GcnInst& inst) { const auto src0 = GetSrc(inst.src[0]); const auto src1 = GetSrc(inst.src[1]); @@ -434,8 +574,7 @@ void Translator::V_ADDC_U32(const GcnInst& inst) { const IR::U32 scarry = IR::U32{ir.Select(carry, ir.Imm32(1), ir.Imm32(0))}; const IR::U32 result = ir.IAdd(ir.IAdd(src0, src1), scarry); - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, result); + SetDst(inst.dst[0], result); const IR::U1 less_src0 = ir.ILessThan(result, src0, false); const IR::U1 less_src1 = ir.ILessThan(result, src1, false); @@ -443,86 +582,203 @@ void Translator::V_ADDC_U32(const GcnInst& inst) { ir.SetVcc(did_overflow); } -void Translator::V_CVT_F32_I32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, ir.ConvertSToF(32, 32, src0)); +void Translator::V_LDEXP_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.FPLdexp(src0, src1)); +} + +void Translator::V_CVT_PKNORM_U16_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + const IR::U32 dst0 = ir.ConvertFToU(32, ir.FPMul(src0, ir.Imm32(65535.f))); + const IR::U32 dst1 = ir.ConvertFToU(32, ir.FPMul(src1, ir.Imm32(65535.f))); + const IR::VectorReg dst_reg{inst.dst[0].code}; + ir.SetVectorReg(dst_reg, ir.BitFieldInsert(dst0, dst1, ir.Imm32(16), ir.Imm32(16))); +} + +void Translator::V_CVT_PKRTZ_F16_F32(const GcnInst& inst) { + const IR::Value vec_f32 = + ir.CompositeConstruct(GetSrc(inst.src[0]), GetSrc(inst.src[1])); + SetDst(inst.dst[0], ir.PackHalf2x16(vec_f32)); +} + +// VOP1 + +void Translator::V_MOV(const GcnInst& inst) { + SetDst(inst.dst[0], GetSrc(inst.src[0])); +} + +void Translator::V_CVT_F32_I32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.ConvertSToF(32, 32, src0)); +} + +void Translator::V_CVT_F32_U32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.ConvertUToF(32, 32, src0)); +} + +void Translator::V_CVT_U32_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.ConvertFToU(32, src0)); +} + +void Translator::V_CVT_I32_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.ConvertFToS(32, src0)); +} + +void Translator::V_CVT_F16_F32(const GcnInst& inst) { + const IR::F32 src0 = GetSrc(inst.src[0]); + const IR::F16 src0fp16 = ir.FPConvert(16, src0); + SetDst(inst.dst[0], ir.UConvert(32, ir.BitCast(src0fp16))); +} + +void Translator::V_CVT_F32_F16(const GcnInst& inst) { + const IR::U32 src0 = GetSrc(inst.src[0]); + const IR::U16 src0l = ir.UConvert(16, src0); + SetDst(inst.dst[0], ir.FPConvert(32, ir.BitCast(src0l))); +} + +void Translator::V_CVT_FLR_I32_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.ConvertFToI(32, true, ir.FPFloor(src0))); +} + +void Translator::V_CVT_OFF_F32_I4(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + ASSERT(src0.IsImmediate()); + static constexpr std::array IntToFloat = { + 0.0f, 0.0625f, 0.1250f, 0.1875f, 0.2500f, 0.3125f, 0.3750f, 0.4375f, + -0.5000f, -0.4375f, -0.3750f, -0.3125f, -0.2500f, -0.1875f, -0.1250f, -0.0625f}; + SetDst(inst.dst[0], ir.Imm32(IntToFloat[src0.U32() & 0xF])); +} + +void Translator::V_CVT_F32_UBYTE(u32 index, const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 byte = ir.BitFieldExtract(src0, ir.Imm32(8 * index), ir.Imm32(8)); + SetDst(inst.dst[0], ir.ConvertUToF(32, 32, byte)); +} + +void Translator::V_FRACT_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.Fract(src0)); +} + +void Translator::V_TRUNC_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.FPTrunc(src0)); } -void Translator::V_CVT_F32_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, ir.ConvertUToF(32, 32, src0)); +void Translator::V_CEIL_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.FPCeil(src0)); } -void Translator::V_MAD_F32(const GcnInst& inst) { +void Translator::V_RNDNE_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - const IR::F32 src2{GetSrc(inst.src[2])}; - SetDst(inst.dst[0], ir.FPFma(src0, src1, src2)); + SetDst(inst.dst[0], ir.FPRoundEven(src0)); } -void Translator::V_FRACT_F32(const GcnInst& inst) { +void Translator::V_FLOOR_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, ir.Fract(src0)); + SetDst(inst.dst[0], ir.FPFloor(src0)); } -void Translator::V_ADD_F32(const GcnInst& inst) { +void Translator::V_EXP_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.FPAdd(src0, src1)); + SetDst(inst.dst[0], ir.FPExp2(src0)); } -void Translator::V_CVT_OFF_F32_I4(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg( - dst_reg, - ir.FPMul(ir.ConvertUToF(32, 32, ir.ISub(ir.BitwiseAnd(src0, ir.Imm32(0xF)), ir.Imm32(8))), - ir.Imm32(1.f / 16.f))); +void Translator::V_LOG_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.FPLog2(src0)); } -void Translator::V_MED3_F32(const GcnInst& inst) { +void Translator::V_RCP_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - const IR::F32 src2{GetSrc(inst.src[2])}; - const IR::F32 mmx = ir.FPMin(ir.FPMax(src0, src1), src2); - SetDst(inst.dst[0], ir.FPMax(ir.FPMin(src0, src1), mmx)); + SetDst(inst.dst[0], ir.FPRecip(src0)); } -void Translator::V_MED3_I32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 src2{GetSrc(inst.src[2])}; - const IR::U32 mmx = ir.SMin(ir.SMax(src0, src1), src2); - SetDst(inst.dst[0], ir.SMax(ir.SMin(src0, src1), mmx)); +void Translator::V_RCP_F64(const GcnInst& inst) { + const IR::F64 src0{GetSrc64(inst.src[0])}; + SetDst64(inst.dst[0], ir.FPRecip(src0)); } -void Translator::V_FLOOR_F32(const GcnInst& inst) { +void Translator::V_RSQ_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, ir.FPFloor(src0)); + SetDst(inst.dst[0], ir.FPRecipSqrt(src0)); } -void Translator::V_SUB_F32(const GcnInst& inst) { +void Translator::V_SQRT_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.FPSub(src0, src1)); + SetDst(inst.dst[0], ir.FPSqrt(src0)); } -void Translator::V_RCP_F32(const GcnInst& inst) { +void Translator::V_SIN_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPRecip(src0)); + SetDst(inst.dst[0], ir.FPSin(src0)); } -void Translator::V_FMA_F32(const GcnInst& inst) { +void Translator::V_COS_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - const IR::F32 src2{GetSrc(inst.src[2])}; - SetDst(inst.dst[0], ir.FPFma(src0, src1, src2)); + SetDst(inst.dst[0], ir.FPCos(src0)); } +void Translator::V_NOT_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.BitwiseNot(src0)); +} + +void Translator::V_BFREV_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.BitReverse(src0)); +} + +void Translator::V_FFBH_U32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + // Gcn wants the MSB position counting from the left, but SPIR-V counts from the rightmost (LSB) + // position + const IR::U32 msb_pos = ir.FindUMsb(src0); + const IR::U32 pos_from_left = ir.ISub(ir.Imm32(31), msb_pos); + // Select 0xFFFFFFFF if src0 was 0 + const IR::U1 cond = ir.INotEqual(src0, ir.Imm32(0)); + SetDst(inst.dst[0], IR::U32{ir.Select(cond, pos_from_left, ir.Imm32(~0U))}); +} + +void Translator::V_FFBL_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.FindILsb(src0)); +} + +void Translator::V_MOVRELD_B32(const GcnInst& inst) { + const IR::U32 src_val{GetSrc(inst.src[0])}; + u32 dst_vgprno = inst.dst[0].code - static_cast(IR::VectorReg::V0); + IR::U32 m0 = ir.GetM0(); + + VMovRelDHelper(dst_vgprno, src_val, m0); +} + +void Translator::V_MOVRELS_B32(const GcnInst& inst) { + u32 src_vgprno = inst.src[0].code - static_cast(IR::VectorReg::V0); + const IR::U32 m0 = ir.GetM0(); + + const IR::U32 src_val = VMovRelSHelper(src_vgprno, m0); + SetDst(inst.dst[0], src_val); +} + +void Translator::V_MOVRELSD_B32(const GcnInst& inst) { + u32 src_vgprno = inst.src[0].code - static_cast(IR::VectorReg::V0); + u32 dst_vgprno = inst.dst[0].code - static_cast(IR::VectorReg::V0); + IR::U32 m0 = ir.GetM0(); + + const IR::U32 src_val = VMovRelSHelper(src_vgprno, m0); + VMovRelDHelper(dst_vgprno, src_val, m0); +} + +// VOPC + void Translator::V_CMP_F32(ConditionOp op, bool set_exec, const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; const IR::F32 src1{GetSrc(inst.src[1])}; @@ -564,122 +820,6 @@ void Translator::V_CMP_F32(ConditionOp op, bool set_exec, const GcnInst& inst) { } } -void Translator::V_MAX_F32(const GcnInst& inst, bool is_legacy) { - const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.FPMax(src0, src1, is_legacy)); -} - -void Translator::V_MAX_U32(bool is_signed, const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.IMax(src0, src1, is_signed)); -} - -void Translator::V_RSQ_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPRecipSqrt(src0)); -} - -void Translator::V_SIN_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPSin(src0)); -} - -void Translator::V_LOG_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPLog2(src0)); -} - -void Translator::V_EXP_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPExp2(src0)); -} - -void Translator::V_SQRT_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPSqrt(src0)); -} - -void Translator::V_MIN_F32(const GcnInst& inst, bool is_legacy) { - const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.FPMin(src0, src1, is_legacy)); -} - -void Translator::V_MIN3_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - const IR::F32 src2{GetSrc(inst.src[2])}; - SetDst(inst.dst[0], ir.FPMin(src0, ir.FPMin(src1, src2))); -} - -void Translator::V_MIN3_I32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 src2{GetSrc(inst.src[2])}; - SetDst(inst.dst[0], ir.SMin(src0, ir.SMin(src1, src2))); -} - -void Translator::V_MADMK_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - const IR::F32 k{GetSrc(inst.src[2])}; - SetDst(inst.dst[0], ir.FPFma(src0, k, src1)); -} - -void Translator::V_CUBEMA_F32(const GcnInst& inst) { - SetDst(inst.dst[0], ir.Imm32(1.f)); -} - -void Translator::V_CUBESC_F32(const GcnInst& inst) { - SetDst(inst.dst[0], GetSrc(inst.src[0])); -} - -void Translator::V_CUBETC_F32(const GcnInst& inst) { - SetDst(inst.dst[0], GetSrc(inst.src[1])); -} - -void Translator::V_CUBEID_F32(const GcnInst& inst) { - SetDst(inst.dst[0], GetSrc(inst.src[2])); -} - -void Translator::V_CVT_U32_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.ConvertFToU(32, src0)); -} - -void Translator::V_SUBREV_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::F32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.FPSub(src1, src0)); -} - -void Translator::V_SUBREV_I32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.ISub(src1, src0)); - // TODO: Carry-out -} - -void Translator::V_MAD_U64_U32(const GcnInst& inst) { - const auto src0 = GetSrc(inst.src[0]); - const auto src1 = GetSrc(inst.src[1]); - const auto src2 = GetSrc64(inst.src[2]); - - // const IR::U64 mul_result = ir.UConvert(64, ir.IMul(src0, src1)); - const IR::U64 mul_result = - ir.PackUint2x32(ir.CompositeConstruct(ir.IMul(src0, src1), ir.Imm32(0U))); - const IR::U64 sum_result = ir.IAdd(mul_result, src2); - - SetDst64(inst.dst[0], sum_result); - - const IR::U1 less_src0 = ir.ILessThan(sum_result, mul_result, false); - const IR::U1 less_src1 = ir.ILessThan(sum_result, src2, false); - const IR::U1 did_overflow = ir.LogicalOr(less_src0, less_src1); - ir.SetVcc(did_overflow); -} - void Translator::V_CMP_U32(ConditionOp op, bool is_signed, bool set_exec, const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; @@ -718,41 +858,68 @@ void Translator::V_CMP_U32(ConditionOp op, bool is_signed, bool set_exec, const } } -void Translator::V_LSHRREV_B32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.ShiftRightLogical(src1, ir.BitwiseAnd(src0, ir.Imm32(0x1F)))); -} - -void Translator::V_MUL_HI_U32(bool is_signed, const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 hi{ir.CompositeExtract(ir.IMulExt(src0, src1, is_signed), 1)}; - SetDst(inst.dst[0], hi); +void Translator::V_CMP_NE_U64(const GcnInst& inst) { + const auto get_src = [&](const InstOperand& operand) { + switch (operand.field) { + case OperandField::VccLo: + return ir.GetVcc(); + case OperandField::ExecLo: + return ir.GetExec(); + case OperandField::ScalarGPR: + return ir.GetThreadBitScalarReg(IR::ScalarReg(operand.code)); + case OperandField::ConstZero: + return ir.Imm1(false); + default: + UNREACHABLE(); + } + }; + const IR::U1 src0{get_src(inst.src[0])}; + ASSERT(inst.src[1].field == OperandField::ConstZero); // src0 != 0 + switch (inst.dst[1].field) { + case OperandField::VccLo: + ir.SetVcc(src0); + break; + case OperandField::ScalarGPR: + ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[1].code), src0); + break; + default: + UNREACHABLE(); + } } -void Translator::V_SAD_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 src2{GetSrc(inst.src[2])}; - IR::U32 result; - if (src0.IsImmediate() && src0.U32() == 0U) { - result = src1; - } else if (src1.IsImmediate() && src1.U32() == 0U) { - result = src0; +void Translator::V_CMP_CLASS_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + IR::U1 value; + if (src1.IsImmediate()) { + const auto class_mask = static_cast(src1.U32()); + if ((class_mask & IR::FloatClassFunc::NaN) == IR::FloatClassFunc::NaN) { + value = ir.FPIsNan(src0); + } else if ((class_mask & IR::FloatClassFunc::Infinity) == IR::FloatClassFunc::Infinity) { + value = ir.FPIsInf(src0); + } else { + UNREACHABLE(); + } } else { - const IR::U32 max{ir.IMax(src0, src1, false)}; - const IR::U32 min{ir.IMin(src0, src1, false)}; - result = ir.ISub(max, min); + // We don't know the type yet, delay its resolution. + value = ir.FPCmpClass32(src0, src1); + } + + switch (inst.dst[1].field) { + case OperandField::VccLo: + return ir.SetVcc(value); + default: + UNREACHABLE(); } - SetDst(inst.dst[0], ir.IAdd(result, src2)); } -void Translator::V_BFE_U32(bool is_signed, const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{ir.BitwiseAnd(GetSrc(inst.src[1]), ir.Imm32(0x1F))}; - const IR::U32 src2{ir.BitwiseAnd(GetSrc(inst.src[2]), ir.Imm32(0x1F))}; - SetDst(inst.dst[0], ir.BitFieldExtract(src0, src1, src2, is_signed)); +// VOP3a + +void Translator::V_MAD_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + const IR::F32 src2{GetSrc(inst.src[2])}; + SetDst(inst.dst[0], ir.FPFma(src0, src1, src2)); } void Translator::V_MAD_I32_I24(const GcnInst& inst, bool is_signed) { @@ -764,54 +931,67 @@ void Translator::V_MAD_I32_I24(const GcnInst& inst, bool is_signed) { SetDst(inst.dst[0], ir.IAdd(ir.IMul(src0, src1), src2)); } -void Translator::V_MUL_I32_I24(const GcnInst& inst) { - const IR::U32 src0{ir.BitFieldExtract(GetSrc(inst.src[0]), ir.Imm32(0), ir.Imm32(24), true)}; - const IR::U32 src1{ir.BitFieldExtract(GetSrc(inst.src[1]), ir.Imm32(0), ir.Imm32(24), true)}; - SetDst(inst.dst[0], ir.IMul(src0, src1)); +void Translator::V_MAD_U32_U24(const GcnInst& inst) { + V_MAD_I32_I24(inst, false); } -void Translator::V_SUB_I32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.ISub(src0, src1)); +void Translator::V_CUBEID_F32(const GcnInst& inst) { + SetDst(inst.dst[0], GetSrc(inst.src[2])); } -void Translator::V_LSHR_B32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.ShiftRightLogical(src0, ir.BitwiseAnd(src1, ir.Imm32(0x1F)))); +void Translator::V_CUBESC_F32(const GcnInst& inst) { + SetDst(inst.dst[0], GetSrc(inst.src[0])); } -void Translator::V_ASHRREV_I32(const GcnInst& inst) { +void Translator::V_CUBETC_F32(const GcnInst& inst) { + SetDst(inst.dst[0], GetSrc(inst.src[1])); +} + +void Translator::V_CUBEMA_F32(const GcnInst& inst) { + SetDst(inst.dst[0], ir.Imm32(1.f)); +} + +void Translator::V_BFE_U32(bool is_signed, const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.ShiftRightArithmetic(src1, ir.BitwiseAnd(src0, ir.Imm32(0x1F)))); + const IR::U32 src1{ir.BitwiseAnd(GetSrc(inst.src[1]), ir.Imm32(0x1F))}; + const IR::U32 src2{ir.BitwiseAnd(GetSrc(inst.src[2]), ir.Imm32(0x1F))}; + SetDst(inst.dst[0], ir.BitFieldExtract(src0, src1, src2, is_signed)); } -void Translator::V_ASHR_I32(const GcnInst& inst) { +void Translator::V_BFI_B32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.ShiftRightArithmetic(src0, ir.BitwiseAnd(src1, ir.Imm32(0x1F)))); + const IR::U32 src2{GetSrc(inst.src[2])}; + SetDst(inst.dst[0], + ir.BitwiseOr(ir.BitwiseAnd(src0, src1), ir.BitwiseAnd(ir.BitwiseNot(src0), src2))); } -void Translator::V_MAD_U32_U24(const GcnInst& inst) { - V_MAD_I32_I24(inst, false); +void Translator::V_FMA_F32(const GcnInst& inst) { + const IR::F32 src0{GetSrc(inst.src[0])}; + const IR::F32 src1{GetSrc(inst.src[1])}; + const IR::F32 src2{GetSrc(inst.src[2])}; + SetDst(inst.dst[0], ir.FPFma(src0, src1, src2)); } -void Translator::V_RNDNE_F32(const GcnInst& inst) { +void Translator::V_FMA_F64(const GcnInst& inst) { + const IR::F64 src0{GetSrc64(inst.src[0])}; + const IR::F64 src1{GetSrc64(inst.src[1])}; + const IR::F64 src2{GetSrc64(inst.src[2])}; + SetDst64(inst.dst[0], ir.FPFma(src0, src1, src2)); +} + +void Translator::V_MIN3_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPRoundEven(src0)); + const IR::F32 src1{GetSrc(inst.src[1])}; + const IR::F32 src2{GetSrc(inst.src[2])}; + SetDst(inst.dst[0], ir.FPMin(src0, ir.FPMin(src1, src2))); } -void Translator::V_BCNT_U32_B32(const GcnInst& inst) { +void Translator::V_MIN3_I32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.IAdd(ir.BitCount(src0), src1)); -} - -void Translator::V_COS_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPCos(src0)); + const IR::U32 src2{GetSrc(inst.src[2])}; + SetDst(inst.dst[0], ir.SMin(src0, ir.SMin(src1, src2))); } void Translator::V_MAX3_F32(const GcnInst& inst) { @@ -821,150 +1001,140 @@ void Translator::V_MAX3_F32(const GcnInst& inst) { SetDst(inst.dst[0], ir.FPMax(src0, ir.FPMax(src1, src2))); } -void Translator::V_MAX3_U32(const GcnInst& inst) { +void Translator::V_MAX3_U32(bool is_signed, const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; const IR::U32 src2{GetSrc(inst.src[2])}; - SetDst(inst.dst[0], ir.UMax(src0, ir.UMax(src1, src2))); + SetDst(inst.dst[0], ir.IMax(src0, ir.IMax(src1, src2, is_signed), is_signed)); } -void Translator::V_CVT_I32_F32(const GcnInst& inst) { +void Translator::V_MED3_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.ConvertFToS(32, src0)); + const IR::F32 src1{GetSrc(inst.src[1])}; + const IR::F32 src2{GetSrc(inst.src[2])}; + const IR::F32 mmx = ir.FPMin(ir.FPMax(src0, src1), src2); + SetDst(inst.dst[0], ir.FPMax(ir.FPMin(src0, src1), mmx)); } -void Translator::V_MIN_I32(const GcnInst& inst) { +void Translator::V_MED3_I32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.SMin(src0, src1)); + const IR::U32 src2{GetSrc(inst.src[2])}; + const IR::U32 mmx = ir.SMin(ir.SMax(src0, src1), src2); + SetDst(inst.dst[0], ir.SMax(ir.SMin(src0, src1), mmx)); } -void Translator::V_MUL_LO_U32(const GcnInst& inst) { +void Translator::V_SAD(const GcnInst& inst) { + const IR::U32 abs_diff = ir.IAbs(ir.ISub(GetSrc(inst.src[0]), GetSrc(inst.src[1]))); + SetDst(inst.dst[0], ir.IAdd(abs_diff, GetSrc(inst.src[2]))); +} + +void Translator::V_SAD_U32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.IMul(src0, src1)); + const IR::U32 src2{GetSrc(inst.src[2])}; + IR::U32 result; + if (src0.IsImmediate() && src0.U32() == 0U) { + result = src1; + } else if (src1.IsImmediate() && src1.U32() == 0U) { + result = src0; + } else { + const IR::U32 max{ir.IMax(src0, src1, false)}; + const IR::U32 min{ir.IMin(src0, src1, false)}; + result = ir.ISub(max, min); + } + SetDst(inst.dst[0], ir.IAdd(result, src2)); } -void Translator::V_TRUNC_F32(const GcnInst& inst) { +void Translator::V_CVT_PK_U8_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPTrunc(src0)); + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 src2{GetSrc(inst.src[2])}; + + const IR::U32 value_uint = ir.ConvertFToU(32, src0); + const IR::U32 offset = ir.ShiftLeftLogical(src1, ir.Imm32(3)); + SetDst(inst.dst[0], ir.BitFieldInsert(src2, value_uint, offset, ir.Imm32(8))); } -void Translator::V_CEIL_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FPCeil(src0)); +void Translator::V_LSHL_B64(const GcnInst& inst) { + const IR::U64 src0{GetSrc64(inst.src[0])}; + const IR::U64 src1{GetSrc64(inst.src[1])}; + const IR::VectorReg dst_reg{inst.dst[0].code}; + if (src0.IsImmediate() && src0.U64() == -1) { + ir.SetVectorReg(dst_reg, ir.Imm32(0xFFFFFFFF)); + ir.SetVectorReg(dst_reg + 1, ir.Imm32(0xFFFFFFFF)); + return; + } + ASSERT_MSG(src0.IsImmediate() && src0.U64() == 0 && src1.IsImmediate() && src1.U64() == 0, + "V_LSHL_B64 with non-zero src0 or src1 is not supported"); + ir.SetVectorReg(dst_reg, ir.Imm32(0)); + ir.SetVectorReg(dst_reg + 1, ir.Imm32(0)); } -void Translator::V_MIN_U32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.IMin(src0, src1, false)); +void Translator::V_MUL_F64(const GcnInst& inst) { + const IR::F64 src0{GetSrc64(inst.src[0])}; + const IR::F64 src1{GetSrc64(inst.src[1])}; + SetDst64(inst.dst[0], ir.FPMul(src0, src1)); } -void Translator::V_CMP_NE_U64(const GcnInst& inst) { - const auto get_src = [&](const InstOperand& operand) { - switch (operand.field) { - case OperandField::VccLo: - return ir.GetVcc(); - case OperandField::ExecLo: - return ir.GetExec(); - case OperandField::ScalarGPR: - return ir.GetThreadBitScalarReg(IR::ScalarReg(operand.code)); - case OperandField::ConstZero: - return ir.Imm1(false); - default: - UNREACHABLE(); - } - }; - const IR::U1 src0{get_src(inst.src[0])}; - ASSERT(inst.src[1].field == OperandField::ConstZero); // src0 != 0 - switch (inst.dst[1].field) { - case OperandField::VccLo: - ir.SetVcc(src0); - break; - case OperandField::ScalarGPR: - ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[1].code), src0); - break; - default: - UNREACHABLE(); - } +void Translator::V_MAX_F64(const GcnInst& inst) { + const IR::F64 src0{GetSrc64(inst.src[0])}; + const IR::F64 src1{GetSrc64(inst.src[1])}; + SetDst64(inst.dst[0], ir.FPMax(src0, src1)); } -void Translator::V_BFI_B32(const GcnInst& inst) { +void Translator::V_MUL_LO_U32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; - const IR::U32 src2{GetSrc(inst.src[2])}; - SetDst(inst.dst[0], - ir.BitwiseOr(ir.BitwiseAnd(src0, src1), ir.BitwiseAnd(ir.BitwiseNot(src0), src2))); + SetDst(inst.dst[0], ir.IMul(src0, src1)); } -void Translator::V_NOT_B32(const GcnInst& inst) { +void Translator::V_MUL_HI_U32(bool is_signed, const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.BitwiseNot(src0)); + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 hi{ir.CompositeExtract(ir.IMulExt(src0, src1, is_signed), 1)}; + SetDst(inst.dst[0], hi); } -void Translator::V_CVT_F32_UBYTE(u32 index, const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 byte = ir.BitFieldExtract(src0, ir.Imm32(8 * index), ir.Imm32(8)); - SetDst(inst.dst[0], ir.ConvertUToF(32, 32, byte)); -} +void Translator::V_MAD_U64_U32(const GcnInst& inst) { + const auto src0 = GetSrc(inst.src[0]); + const auto src1 = GetSrc(inst.src[1]); + const auto src2 = GetSrc64(inst.src[2]); -void Translator::V_BFREV_B32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.BitReverse(src0)); -} + // const IR::U64 mul_result = ir.UConvert(64, ir.IMul(src0, src1)); + const IR::U64 mul_result = + ir.PackUint2x32(ir.CompositeConstruct(ir.IMul(src0, src1), ir.Imm32(0U))); + const IR::U64 sum_result = ir.IAdd(mul_result, src2); -void Translator::V_LDEXP_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - SetDst(inst.dst[0], ir.FPLdexp(src0, src1)); -} + SetDst64(inst.dst[0], sum_result); -void Translator::V_CVT_FLR_I32_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.ConvertFToI(32, true, ir.FPFloor(src0))); + const IR::U1 less_src0 = ir.ILessThan(sum_result, mul_result, false); + const IR::U1 less_src1 = ir.ILessThan(sum_result, src2, false); + const IR::U1 did_overflow = ir.LogicalOr(less_src0, less_src1); + ir.SetVcc(did_overflow); } -void Translator::V_CMP_CLASS_F32(const GcnInst& inst) { - const IR::F32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - IR::U1 value; - if (src1.IsImmediate()) { - const auto class_mask = static_cast(src1.U32()); - if ((class_mask & IR::FloatClassFunc::NaN) == IR::FloatClassFunc::NaN) { - value = ir.FPIsNan(src0); - } else if ((class_mask & IR::FloatClassFunc::Infinity) == IR::FloatClassFunc::Infinity) { - value = ir.FPIsInf(src0); - } else { - UNREACHABLE(); - } - } else { - // We don't know the type yet, delay its resolution. - value = ir.FPCmpClass32(src0, src1); - } +// TODO: add range analysis pass to hopefully put an upper bound on m0, and only select one of +// [src_vgprno, src_vgprno + max_m0]. Same for dst regs we may write back to - switch (inst.dst[1].field) { - case OperandField::VccLo: - return ir.SetVcc(value); - default: - UNREACHABLE(); +IR::U32 Translator::VMovRelSHelper(u32 src_vgprno, const IR::U32 m0) { + // Read from VGPR0 by default when src_vgprno + m0 > num_allocated_vgprs + IR::U32 src_val = ir.GetVectorReg(IR::VectorReg::V0); + for (u32 i = src_vgprno; i < runtime_info.num_allocated_vgprs; i++) { + const IR::U1 cond = ir.IEqual(m0, ir.Imm32(i - src_vgprno)); + src_val = + IR::U32{ir.Select(cond, ir.GetVectorReg(IR::VectorReg::V0 + i), src_val)}; } + return src_val; } -void Translator::V_FFBL_B32(const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - SetDst(inst.dst[0], ir.FindILsb(src0)); -} - -void Translator::V_MBCNT_U32_B32(bool is_low, const GcnInst& inst) { - const IR::U32 src0{GetSrc(inst.src[0])}; - const IR::U32 src1{GetSrc(inst.src[1])}; - if (!is_low) { - ASSERT(src0.IsImmediate() && src0.U32() == ~0U && src1.IsImmediate() && src1.U32() == 0U); - return; +void Translator::VMovRelDHelper(u32 dst_vgprno, const IR::U32 src_val, const IR::U32 m0) { + for (u32 i = dst_vgprno; i < runtime_info.num_allocated_vgprs; i++) { + const IR::U1 cond = ir.IEqual(m0, ir.Imm32(i - dst_vgprno)); + const IR::U32 dst_val = + IR::U32{ir.Select(cond, src_val, ir.GetVectorReg(IR::VectorReg::V0 + i))}; + ir.SetVectorReg(IR::VectorReg::V0 + i, dst_val); } - ASSERT(src0.IsImmediate() && src0.U32() == ~0U); - SetDst(inst.dst[0], ir.LaneId()); } } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/vector_interpolation.cpp b/src/shader_recompiler/frontend/translate/vector_interpolation.cpp index 4ff846cf8c..431cb2f046 100644 --- a/src/shader_recompiler/frontend/translate/vector_interpolation.cpp +++ b/src/shader_recompiler/frontend/translate/vector_interpolation.cpp @@ -5,22 +5,9 @@ namespace Shader::Gcn { -void Translator::V_INTERP_P2_F32(const GcnInst& inst) { - const IR::VectorReg dst_reg{inst.dst[0].code}; - auto& attr = info.ps_inputs.at(inst.control.vintrp.attr); - const IR::Attribute attrib{IR::Attribute::Param0 + attr.param_index}; - ir.SetVectorReg(dst_reg, ir.GetAttribute(attrib, inst.control.vintrp.chan)); -} - -void Translator::V_INTERP_MOV_F32(const GcnInst& inst) { - const IR::VectorReg dst_reg{inst.dst[0].code}; - auto& attr = info.ps_inputs.at(inst.control.vintrp.attr); - const IR::Attribute attrib{IR::Attribute::Param0 + attr.param_index}; - ir.SetVectorReg(dst_reg, ir.GetAttribute(attrib, inst.control.vintrp.chan)); -} - void Translator::EmitVectorInterpolation(const GcnInst& inst) { switch (inst.opcode) { + // VINTRP case Opcode::V_INTERP_P1_F32: return; case Opcode::V_INTERP_P2_F32: @@ -32,4 +19,18 @@ void Translator::EmitVectorInterpolation(const GcnInst& inst) { } } +// VINTRP + +void Translator::V_INTERP_P2_F32(const GcnInst& inst) { + auto& attr = runtime_info.fs_info.inputs.at(inst.control.vintrp.attr); + const IR::Attribute attrib{IR::Attribute::Param0 + attr.param_index}; + SetDst(inst.dst[0], ir.GetAttribute(attrib, inst.control.vintrp.chan)); +} + +void Translator::V_INTERP_MOV_F32(const GcnInst& inst) { + auto& attr = runtime_info.fs_info.inputs.at(inst.control.vintrp.attr); + const IR::Attribute attrib{IR::Attribute::Param0 + attr.param_index}; + SetDst(inst.dst[0], ir.GetAttribute(attrib, inst.control.vintrp.chan)); +} + } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/vector_memory.cpp b/src/shader_recompiler/frontend/translate/vector_memory.cpp index 73530dadeb..7ecc2e762f 100644 --- a/src/shader_recompiler/frontend/translate/vector_memory.cpp +++ b/src/shader_recompiler/frontend/translate/vector_memory.cpp @@ -7,52 +7,7 @@ namespace Shader::Gcn { void Translator::EmitVectorMemory(const GcnInst& inst) { switch (inst.opcode) { - case Opcode::IMAGE_SAMPLE_LZ_O: - case Opcode::IMAGE_SAMPLE_O: - case Opcode::IMAGE_SAMPLE_C: - case Opcode::IMAGE_SAMPLE_C_LZ: - case Opcode::IMAGE_SAMPLE_LZ: - case Opcode::IMAGE_SAMPLE: - case Opcode::IMAGE_SAMPLE_L: - case Opcode::IMAGE_SAMPLE_C_O: - case Opcode::IMAGE_SAMPLE_B: - case Opcode::IMAGE_SAMPLE_C_LZ_O: - case Opcode::IMAGE_SAMPLE_D: - return IMAGE_SAMPLE(inst); - case Opcode::IMAGE_GATHER4_C: - case Opcode::IMAGE_GATHER4_LZ: - case Opcode::IMAGE_GATHER4_LZ_O: - return IMAGE_GATHER(inst); - case Opcode::IMAGE_ATOMIC_ADD: - return IMAGE_ATOMIC(AtomicOp::Add, inst); - case Opcode::IMAGE_ATOMIC_AND: - return IMAGE_ATOMIC(AtomicOp::And, inst); - case Opcode::IMAGE_ATOMIC_OR: - return IMAGE_ATOMIC(AtomicOp::Or, inst); - case Opcode::IMAGE_ATOMIC_XOR: - return IMAGE_ATOMIC(AtomicOp::Xor, inst); - case Opcode::IMAGE_ATOMIC_UMAX: - return IMAGE_ATOMIC(AtomicOp::Umax, inst); - case Opcode::IMAGE_ATOMIC_SMAX: - return IMAGE_ATOMIC(AtomicOp::Smax, inst); - case Opcode::IMAGE_ATOMIC_UMIN: - return IMAGE_ATOMIC(AtomicOp::Umin, inst); - case Opcode::IMAGE_ATOMIC_SMIN: - return IMAGE_ATOMIC(AtomicOp::Smin, inst); - case Opcode::IMAGE_ATOMIC_INC: - return IMAGE_ATOMIC(AtomicOp::Inc, inst); - case Opcode::IMAGE_ATOMIC_DEC: - return IMAGE_ATOMIC(AtomicOp::Dec, inst); - case Opcode::IMAGE_GET_LOD: - return IMAGE_GET_LOD(inst); - case Opcode::IMAGE_STORE: - return IMAGE_STORE(inst); - case Opcode::IMAGE_LOAD_MIP: - return IMAGE_LOAD(true, inst); - case Opcode::IMAGE_LOAD: - return IMAGE_LOAD(false, inst); - case Opcode::IMAGE_GET_RESINFO: - return IMAGE_GET_RESINFO(inst); + // MUBUF / MTBUF // Buffer load operations case Opcode::TBUFFER_LOAD_FORMAT_X: @@ -98,6 +53,8 @@ void Translator::EmitVectorMemory(const GcnInst& inst) { return BUFFER_STORE(2, true, inst); case Opcode::TBUFFER_STORE_FORMAT_XYZ: return BUFFER_STORE(3, true, inst); + case Opcode::TBUFFER_STORE_FORMAT_XYZW: + return BUFFER_STORE(4, true, inst); case Opcode::BUFFER_STORE_DWORD: return BUFFER_STORE(1, false, inst); @@ -113,240 +70,91 @@ void Translator::EmitVectorMemory(const GcnInst& inst) { return BUFFER_ATOMIC(AtomicOp::Add, inst); case Opcode::BUFFER_ATOMIC_SWAP: return BUFFER_ATOMIC(AtomicOp::Swap, inst); - default: - LogMissingOpcode(inst); - } -} - -void Translator::IMAGE_GET_RESINFO(const GcnInst& inst) { - IR::VectorReg dst_reg{inst.dst[0].code}; - const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; - const auto flags = ImageResFlags(inst.control.mimg.dmask); - const bool has_mips = flags.test(ImageResComponent::MipCount); - const IR::U32 lod = ir.GetVectorReg(IR::VectorReg(inst.src[0].code)); - const IR::Value tsharp = ir.GetScalarReg(tsharp_reg); - const IR::Value size = ir.ImageQueryDimension(tsharp, lod, ir.Imm1(has_mips)); - - if (flags.test(ImageResComponent::Width)) { - ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(size, 0)}); - } - if (flags.test(ImageResComponent::Height)) { - ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(size, 1)}); - } - if (flags.test(ImageResComponent::Depth)) { - ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(size, 2)}); - } - if (has_mips) { - ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(size, 3)}); - } -} - -void Translator::IMAGE_SAMPLE(const GcnInst& inst) { - const auto& mimg = inst.control.mimg; - if (mimg.da) { - LOG_WARNING(Render_Vulkan, "Image instruction declares an array"); - } - - IR::VectorReg addr_reg{inst.src[0].code}; - IR::VectorReg dest_reg{inst.dst[0].code}; - const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; - const IR::ScalarReg sampler_reg{inst.src[3].code * 4}; - const auto flags = MimgModifierFlags(mimg.mod); - - // Load first dword of T# and S#. We will use them as the handle that will guide resource - // tracking pass where to read the sharps. This will later also get patched to the SPIRV texture - // binding index. - const IR::Value handle = - ir.CompositeConstruct(ir.GetScalarReg(tsharp_reg), ir.GetScalarReg(sampler_reg)); - - // Load first address components as denoted in 8.2.4 VGPR Usage Sea Islands Series Instruction - // Set Architecture - const IR::U32 offset = - flags.test(MimgModifier::Offset) ? ir.GetVectorReg(addr_reg++) : IR::U32{}; - const IR::F32 bias = - flags.test(MimgModifier::LodBias) ? ir.GetVectorReg(addr_reg++) : IR::F32{}; - const IR::F32 dref = - flags.test(MimgModifier::Pcf) ? ir.GetVectorReg(addr_reg++) : IR::F32{}; - const IR::Value derivatives = [&] -> IR::Value { - if (!flags.test(MimgModifier::Derivative)) { - return {}; - } - addr_reg = addr_reg + 4; - return ir.CompositeConstruct( - ir.GetVectorReg(addr_reg - 4), ir.GetVectorReg(addr_reg - 3), - ir.GetVectorReg(addr_reg - 2), ir.GetVectorReg(addr_reg - 1)); - }(); - - // Now we can load body components as noted in Table 8.9 Image Opcodes with Sampler - // Since these are at most 4 dwords, we load them into a single uvec4 and place them - // in coords field of the instruction. Then the resource tracking pass will patch the - // IR instruction to fill in lod_clamp field. - const IR::Value body = ir.CompositeConstruct( - ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), - ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); - - // Derivatives are tricky because their number depends on the texture type which is located in - // T#. We don't have access to T# though until resource tracking pass. For now assume if - // derivatives are present, that a 2D image is bound. - const bool has_derivatives = flags.test(MimgModifier::Derivative); - const bool explicit_lod = flags.any(MimgModifier::Level0, MimgModifier::Lod); - - IR::TextureInstInfo info{}; - info.is_depth.Assign(flags.test(MimgModifier::Pcf)); - info.has_bias.Assign(flags.test(MimgModifier::LodBias)); - info.has_lod_clamp.Assign(flags.test(MimgModifier::LodClamp)); - info.force_level0.Assign(flags.test(MimgModifier::Level0)); - info.has_offset.Assign(flags.test(MimgModifier::Offset)); - info.explicit_lod.Assign(explicit_lod); - info.has_derivatives.Assign(has_derivatives); - - // Issue IR instruction, leaving unknown fields blank to patch later. - const IR::Value texel = [&]() -> IR::Value { - if (has_derivatives) { - return ir.ImageGradient(handle, body, derivatives, offset, {}, info); - } - if (!flags.test(MimgModifier::Pcf)) { - if (explicit_lod) { - return ir.ImageSampleExplicitLod(handle, body, offset, info); - } else { - return ir.ImageSampleImplicitLod(handle, body, bias, offset, info); - } - } - if (explicit_lod) { - return ir.ImageSampleDrefExplicitLod(handle, body, dref, offset, info); - } - return ir.ImageSampleDrefImplicitLod(handle, body, dref, bias, offset, info); - }(); - - for (u32 i = 0; i < 4; i++) { - if (((mimg.dmask >> i) & 1) == 0) { - continue; - } - IR::F32 value; - if (flags.test(MimgModifier::Pcf)) { - value = i < 3 ? IR::F32{texel} : ir.Imm32(1.0f); - } else { - value = IR::F32{ir.CompositeExtract(texel, i)}; - } - ir.SetVectorReg(dest_reg++, value); - } -} - -void Translator::IMAGE_GATHER(const GcnInst& inst) { - const auto& mimg = inst.control.mimg; - if (mimg.da) { - LOG_WARNING(Render_Vulkan, "Image instruction declares an array"); - } - - IR::VectorReg addr_reg{inst.src[0].code}; - IR::VectorReg dest_reg{inst.dst[0].code}; - const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; - const IR::ScalarReg sampler_reg{inst.src[3].code * 4}; - const auto flags = MimgModifierFlags(mimg.mod); - - // Load first dword of T# and S#. We will use them as the handle that will guide resource - // tracking pass where to read the sharps. This will later also get patched to the SPIRV texture - // binding index. - const IR::Value handle = - ir.CompositeConstruct(ir.GetScalarReg(tsharp_reg), ir.GetScalarReg(sampler_reg)); - - // Load first address components as denoted in 8.2.4 VGPR Usage Sea Islands Series Instruction - // Set Architecture - const IR::Value offset = - flags.test(MimgModifier::Offset) ? ir.GetVectorReg(addr_reg++) : IR::Value{}; - const IR::F32 bias = - flags.test(MimgModifier::LodBias) ? ir.GetVectorReg(addr_reg++) : IR::F32{}; - const IR::F32 dref = - flags.test(MimgModifier::Pcf) ? ir.GetVectorReg(addr_reg++) : IR::F32{}; - - // Derivatives are tricky because their number depends on the texture type which is located in - // T#. We don't have access to T# though until resource tracking pass. For now assume no - // derivatives are present, otherwise we don't know where coordinates are placed in the address - // stream. - ASSERT_MSG(!flags.test(MimgModifier::Derivative), "Derivative image instruction"); - - // Now we can load body components as noted in Table 8.9 Image Opcodes with Sampler - // Since these are at most 4 dwords, we load them into a single uvec4 and place them - // in coords field of the instruction. Then the resource tracking pass will patch the - // IR instruction to fill in lod_clamp field. - const IR::Value body = ir.CompositeConstruct( - ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), - ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); - - const bool explicit_lod = flags.any(MimgModifier::Level0, MimgModifier::Lod); - - IR::TextureInstInfo info{}; - info.is_depth.Assign(flags.test(MimgModifier::Pcf)); - info.has_bias.Assign(flags.test(MimgModifier::LodBias)); - info.has_lod_clamp.Assign(flags.test(MimgModifier::LodClamp)); - info.force_level0.Assign(flags.test(MimgModifier::Level0)); - // info.explicit_lod.Assign(explicit_lod); - info.gather_comp.Assign(std::bit_width(mimg.dmask) - 1); - - // Issue IR instruction, leaving unknown fields blank to patch later. - const IR::Value texel = [&]() -> IR::Value { - const IR::F32 lod = flags.test(MimgModifier::Level0) ? ir.Imm32(0.f) : IR::F32{}; - if (!flags.test(MimgModifier::Pcf)) { - return ir.ImageGather(handle, body, offset, info); - } - ASSERT(mimg.dmask & 1); // should be always 1st (R) component - return ir.ImageGatherDref(handle, body, offset, dref, info); - }(); - - // For gather4 instructions dmask selects which component to read and must have - // only one bit set to 1 - ASSERT_MSG(std::popcount(mimg.dmask) == 1, "Unexpected bits in gather dmask"); - for (u32 i = 0; i < 4; i++) { - const IR::F32 value = IR::F32{ir.CompositeExtract(texel, i)}; - ir.SetVectorReg(dest_reg++, value); - } -} + case Opcode::BUFFER_ATOMIC_SMIN: + return BUFFER_ATOMIC(AtomicOp::Smin, inst); + case Opcode::BUFFER_ATOMIC_UMIN: + return BUFFER_ATOMIC(AtomicOp::Umin, inst); + case Opcode::BUFFER_ATOMIC_SMAX: + return BUFFER_ATOMIC(AtomicOp::Smax, inst); + case Opcode::BUFFER_ATOMIC_UMAX: + return BUFFER_ATOMIC(AtomicOp::Umax, inst); + case Opcode::BUFFER_ATOMIC_AND: + return BUFFER_ATOMIC(AtomicOp::And, inst); + case Opcode::BUFFER_ATOMIC_OR: + return BUFFER_ATOMIC(AtomicOp::Or, inst); + case Opcode::BUFFER_ATOMIC_XOR: + return BUFFER_ATOMIC(AtomicOp::Xor, inst); + case Opcode::BUFFER_ATOMIC_INC: + return BUFFER_ATOMIC(AtomicOp::Inc, inst); + case Opcode::BUFFER_ATOMIC_DEC: + return BUFFER_ATOMIC(AtomicOp::Dec, inst); + + // MIMG + // Image load operations + case Opcode::IMAGE_LOAD: + return IMAGE_LOAD(false, inst); + case Opcode::IMAGE_LOAD_MIP: + return IMAGE_LOAD(true, inst); -void Translator::IMAGE_LOAD(bool has_mip, const GcnInst& inst) { - const auto& mimg = inst.control.mimg; - IR::VectorReg addr_reg{inst.src[0].code}; - IR::VectorReg dest_reg{inst.dst[0].code}; - const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; + // Buffer store operations + case Opcode::IMAGE_STORE: + return IMAGE_STORE(inst); - const IR::Value handle = ir.GetScalarReg(tsharp_reg); - const IR::Value body = - ir.CompositeConstruct(ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), - ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); + // Image misc operations + case Opcode::IMAGE_GET_RESINFO: + return IMAGE_GET_RESINFO(inst); - IR::TextureInstInfo info{}; - info.explicit_lod.Assign(has_mip); - const IR::Value texel = ir.ImageFetch(handle, body, {}, {}, {}, info); + // Image atomic operations + case Opcode::IMAGE_ATOMIC_ADD: + return IMAGE_ATOMIC(AtomicOp::Add, inst); + case Opcode::IMAGE_ATOMIC_SMIN: + return IMAGE_ATOMIC(AtomicOp::Smin, inst); + case Opcode::IMAGE_ATOMIC_UMIN: + return IMAGE_ATOMIC(AtomicOp::Umin, inst); + case Opcode::IMAGE_ATOMIC_SMAX: + return IMAGE_ATOMIC(AtomicOp::Smax, inst); + case Opcode::IMAGE_ATOMIC_UMAX: + return IMAGE_ATOMIC(AtomicOp::Umax, inst); + case Opcode::IMAGE_ATOMIC_AND: + return IMAGE_ATOMIC(AtomicOp::And, inst); + case Opcode::IMAGE_ATOMIC_OR: + return IMAGE_ATOMIC(AtomicOp::Or, inst); + case Opcode::IMAGE_ATOMIC_XOR: + return IMAGE_ATOMIC(AtomicOp::Xor, inst); + case Opcode::IMAGE_ATOMIC_INC: + return IMAGE_ATOMIC(AtomicOp::Inc, inst); + case Opcode::IMAGE_ATOMIC_DEC: + return IMAGE_ATOMIC(AtomicOp::Dec, inst); - for (u32 i = 0; i < 4; i++) { - if (((mimg.dmask >> i) & 1) == 0) { - continue; - } - IR::F32 value = IR::F32{ir.CompositeExtract(texel, i)}; - ir.SetVectorReg(dest_reg++, value); - } -} + case Opcode::IMAGE_SAMPLE: + case Opcode::IMAGE_SAMPLE_D: + case Opcode::IMAGE_SAMPLE_L: + case Opcode::IMAGE_SAMPLE_B: + case Opcode::IMAGE_SAMPLE_LZ: + case Opcode::IMAGE_SAMPLE_C: + case Opcode::IMAGE_SAMPLE_C_LZ: + case Opcode::IMAGE_SAMPLE_O: + case Opcode::IMAGE_SAMPLE_L_O: + case Opcode::IMAGE_SAMPLE_LZ_O: + case Opcode::IMAGE_SAMPLE_C_O: + case Opcode::IMAGE_SAMPLE_C_LZ_O: + case Opcode::IMAGE_SAMPLE_CD: + return IMAGE_SAMPLE(inst); -void Translator::IMAGE_STORE(const GcnInst& inst) { - const auto& mimg = inst.control.mimg; - IR::VectorReg addr_reg{inst.src[0].code}; - IR::VectorReg data_reg{inst.dst[0].code}; - const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; + // Image gather operations + case Opcode::IMAGE_GATHER4_LZ: + case Opcode::IMAGE_GATHER4_C: + case Opcode::IMAGE_GATHER4_C_LZ: + case Opcode::IMAGE_GATHER4_LZ_O: + return IMAGE_GATHER(inst); - const IR::Value handle = ir.GetScalarReg(tsharp_reg); - const IR::Value body = - ir.CompositeConstruct(ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), - ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); + // Image misc operations + case Opcode::IMAGE_GET_LOD: + return IMAGE_GET_LOD(inst); - boost::container::static_vector comps; - for (u32 i = 0; i < 4; i++) { - if (((mimg.dmask >> i) & 1) == 0) { - comps.push_back(ir.Imm32(0.f)); - continue; - } - comps.push_back(ir.GetVectorReg(data_reg++)); + default: + LogMissingOpcode(inst); } - const IR::Value value = ir.CompositeConstruct(comps[0], comps[1], comps[2], comps[3]); - ir.ImageWrite(handle, body, value, {}); } void Translator::BUFFER_LOAD(u32 num_dwords, bool is_typed, const GcnInst& inst) { @@ -384,11 +192,11 @@ void Translator::BUFFER_LOAD(u32 num_dwords, bool is_typed, const GcnInst& inst) const IR::Value value = ir.LoadBuffer(num_dwords, handle, address, info); const IR::VectorReg dst_reg{inst.src[1].code}; if (num_dwords == 1) { - ir.SetVectorReg(dst_reg, IR::F32{value}); + ir.SetVectorReg(dst_reg, IR::U32{value}); return; } for (u32 i = 0; i < num_dwords; i++) { - ir.SetVectorReg(dst_reg + i, IR::F32{ir.CompositeExtract(value, i)}); + ir.SetVectorReg(dst_reg + i, IR::U32{ir.CompositeExtract(value, i)}); } } @@ -452,21 +260,18 @@ void Translator::BUFFER_STORE(u32 num_dwords, bool is_typed, const GcnInst& inst const IR::VectorReg src_reg{inst.src[1].code}; switch (num_dwords) { case 1: - value = ir.GetVectorReg(src_reg); + value = ir.GetVectorReg(src_reg); break; case 2: - value = ir.CompositeConstruct(ir.GetVectorReg(src_reg), - ir.GetVectorReg(src_reg + 1)); + value = ir.CompositeConstruct(ir.GetVectorReg(src_reg), ir.GetVectorReg(src_reg + 1)); break; case 3: - value = ir.CompositeConstruct(ir.GetVectorReg(src_reg), - ir.GetVectorReg(src_reg + 1), - ir.GetVectorReg(src_reg + 2)); + value = ir.CompositeConstruct(ir.GetVectorReg(src_reg), ir.GetVectorReg(src_reg + 1), + ir.GetVectorReg(src_reg + 2)); break; case 4: - value = ir.CompositeConstruct( - ir.GetVectorReg(src_reg), ir.GetVectorReg(src_reg + 1), - ir.GetVectorReg(src_reg + 2), ir.GetVectorReg(src_reg + 3)); + value = ir.CompositeConstruct(ir.GetVectorReg(src_reg), ir.GetVectorReg(src_reg + 1), + ir.GetVectorReg(src_reg + 2), ir.GetVectorReg(src_reg + 3)); break; } const IR::Value handle = @@ -514,6 +319,15 @@ void Translator::BUFFER_ATOMIC(AtomicOp op, const GcnInst& inst) { const IR::VectorReg vaddr{inst.src[0].code}; const IR::VectorReg vdata{inst.src[1].code}; const IR::ScalarReg srsrc{inst.src[2].code * 4}; + const IR::Value address = [&] -> IR::Value { + if (mubuf.idxen && mubuf.offen) { + return ir.CompositeConstruct(ir.GetVectorReg(vaddr), ir.GetVectorReg(vaddr + 1)); + } + if (mubuf.idxen || mubuf.offen) { + return ir.GetVectorReg(vaddr); + } + return {}; + }(); const IR::U32 soffset{GetSrc(inst.src[3])}; ASSERT_MSG(soffset.IsImmediate() && soffset.U32() == 0, "Non immediate offset not supported"); @@ -523,7 +337,6 @@ void Translator::BUFFER_ATOMIC(AtomicOp op, const GcnInst& inst) { info.offset_enable.Assign(mubuf.offen); IR::Value vdata_val = ir.GetVectorReg(vdata); - const IR::U32 address = ir.GetVectorReg(vaddr); const IR::Value handle = ir.CompositeConstruct(ir.GetScalarReg(srsrc), ir.GetScalarReg(srsrc + 1), ir.GetScalarReg(srsrc + 2), ir.GetScalarReg(srsrc + 3)); @@ -562,19 +375,77 @@ void Translator::BUFFER_ATOMIC(AtomicOp op, const GcnInst& inst) { } } -void Translator::IMAGE_GET_LOD(const GcnInst& inst) { +// Image Memory +// MIMG + +void Translator::IMAGE_LOAD(bool has_mip, const GcnInst& inst) { const auto& mimg = inst.control.mimg; - IR::VectorReg dst_reg{inst.dst[0].code}; IR::VectorReg addr_reg{inst.src[0].code}; + IR::VectorReg dest_reg{inst.dst[0].code}; const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; const IR::Value handle = ir.GetScalarReg(tsharp_reg); - const IR::Value body = ir.CompositeConstruct( - ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), - ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); - const IR::Value lod = ir.ImageQueryLod(handle, body, {}); - ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(lod, 0)}); - ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(lod, 1)}); + const IR::Value body = + ir.CompositeConstruct(ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), + ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); + + IR::TextureInstInfo info{}; + info.explicit_lod.Assign(has_mip); + const IR::Value texel = ir.ImageFetch(handle, body, {}, {}, {}, info); + + for (u32 i = 0; i < 4; i++) { + if (((mimg.dmask >> i) & 1) == 0) { + continue; + } + IR::F32 value = IR::F32{ir.CompositeExtract(texel, i)}; + ir.SetVectorReg(dest_reg++, value); + } +} + +void Translator::IMAGE_STORE(const GcnInst& inst) { + const auto& mimg = inst.control.mimg; + IR::VectorReg addr_reg{inst.src[0].code}; + IR::VectorReg data_reg{inst.dst[0].code}; + const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; + + const IR::Value handle = ir.GetScalarReg(tsharp_reg); + const IR::Value body = + ir.CompositeConstruct(ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), + ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); + + boost::container::static_vector comps; + for (u32 i = 0; i < 4; i++) { + if (((mimg.dmask >> i) & 1) == 0) { + comps.push_back(ir.Imm32(0.f)); + continue; + } + comps.push_back(ir.GetVectorReg(data_reg++)); + } + const IR::Value value = ir.CompositeConstruct(comps[0], comps[1], comps[2], comps[3]); + ir.ImageWrite(handle, body, value, {}); +} + +void Translator::IMAGE_GET_RESINFO(const GcnInst& inst) { + IR::VectorReg dst_reg{inst.dst[0].code}; + const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; + const auto flags = ImageResFlags(inst.control.mimg.dmask); + const bool has_mips = flags.test(ImageResComponent::MipCount); + const IR::U32 lod = ir.GetVectorReg(IR::VectorReg(inst.src[0].code)); + const IR::Value tsharp = ir.GetScalarReg(tsharp_reg); + const IR::Value size = ir.ImageQueryDimension(tsharp, lod, ir.Imm1(has_mips)); + + if (flags.test(ImageResComponent::Width)) { + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(size, 0)}); + } + if (flags.test(ImageResComponent::Height)) { + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(size, 1)}); + } + if (flags.test(ImageResComponent::Depth)) { + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(size, 2)}); + } + if (has_mips) { + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(size, 3)}); + } } void Translator::IMAGE_ATOMIC(AtomicOp op, const GcnInst& inst) { @@ -621,4 +492,179 @@ void Translator::IMAGE_ATOMIC(AtomicOp op, const GcnInst& inst) { } } +void Translator::IMAGE_SAMPLE(const GcnInst& inst) { + const auto& mimg = inst.control.mimg; + IR::VectorReg addr_reg{inst.src[0].code}; + IR::VectorReg dest_reg{inst.dst[0].code}; + const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; + const IR::ScalarReg sampler_reg{inst.src[3].code * 4}; + const auto flags = MimgModifierFlags(mimg.mod); + + // Load first dword of T# and S#. We will use them as the handle that will guide resource + // tracking pass where to read the sharps. This will later also get patched to the SPIRV texture + // binding index. + const IR::Value handle = + ir.CompositeConstruct(ir.GetScalarReg(tsharp_reg), ir.GetScalarReg(sampler_reg)); + + // Load first address components as denoted in 8.2.4 VGPR Usage Sea Islands Series Instruction + // Set Architecture + const IR::U32 offset = + flags.test(MimgModifier::Offset) ? ir.GetVectorReg(addr_reg++) : IR::U32{}; + const IR::F32 bias = + flags.test(MimgModifier::LodBias) ? ir.GetVectorReg(addr_reg++) : IR::F32{}; + const IR::F32 dref = + flags.test(MimgModifier::Pcf) ? ir.GetVectorReg(addr_reg++) : IR::F32{}; + const IR::Value derivatives = [&] -> IR::Value { + if (!flags.test(MimgModifier::Derivative)) { + return {}; + } + addr_reg = addr_reg + 4; + return ir.CompositeConstruct( + ir.GetVectorReg(addr_reg - 4), ir.GetVectorReg(addr_reg - 3), + ir.GetVectorReg(addr_reg - 2), ir.GetVectorReg(addr_reg - 1)); + }(); + + // Now we can load body components as noted in Table 8.9 Image Opcodes with Sampler + // Since these are at most 4 dwords, we load them into a single uvec4 and place them + // in coords field of the instruction. Then the resource tracking pass will patch the + // IR instruction to fill in lod_clamp field. + const IR::Value body = ir.CompositeConstruct( + ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), + ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); + + // Derivatives are tricky because their number depends on the texture type which is located in + // T#. We don't have access to T# though until resource tracking pass. For now assume if + // derivatives are present, that a 2D image is bound. + const bool has_derivatives = flags.test(MimgModifier::Derivative); + const bool explicit_lod = flags.any(MimgModifier::Level0, MimgModifier::Lod); + + IR::TextureInstInfo info{}; + info.is_depth.Assign(flags.test(MimgModifier::Pcf)); + info.has_bias.Assign(flags.test(MimgModifier::LodBias)); + info.has_lod_clamp.Assign(flags.test(MimgModifier::LodClamp)); + info.force_level0.Assign(flags.test(MimgModifier::Level0)); + info.has_offset.Assign(flags.test(MimgModifier::Offset)); + info.explicit_lod.Assign(explicit_lod); + info.has_derivatives.Assign(has_derivatives); + info.is_array.Assign(mimg.da); + + // Issue IR instruction, leaving unknown fields blank to patch later. + const IR::Value texel = [&]() -> IR::Value { + if (has_derivatives) { + return ir.ImageGradient(handle, body, derivatives, offset, {}, info); + } + if (!flags.test(MimgModifier::Pcf)) { + if (explicit_lod) { + return ir.ImageSampleExplicitLod(handle, body, offset, info); + } else { + return ir.ImageSampleImplicitLod(handle, body, bias, offset, info); + } + } + if (explicit_lod) { + return ir.ImageSampleDrefExplicitLod(handle, body, dref, offset, info); + } + return ir.ImageSampleDrefImplicitLod(handle, body, dref, bias, offset, info); + }(); + + for (u32 i = 0; i < 4; i++) { + if (((mimg.dmask >> i) & 1) == 0) { + continue; + } + IR::F32 value; + if (flags.test(MimgModifier::Pcf)) { + value = i < 3 ? IR::F32{texel} : ir.Imm32(1.0f); + } else { + value = IR::F32{ir.CompositeExtract(texel, i)}; + } + ir.SetVectorReg(dest_reg++, value); + } +} + +void Translator::IMAGE_GATHER(const GcnInst& inst) { + const auto& mimg = inst.control.mimg; + if (mimg.da) { + LOG_WARNING(Render_Vulkan, "Image instruction declares an array"); + } + + IR::VectorReg addr_reg{inst.src[0].code}; + IR::VectorReg dest_reg{inst.dst[0].code}; + const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; + const IR::ScalarReg sampler_reg{inst.src[3].code * 4}; + const auto flags = MimgModifierFlags(mimg.mod); + + // Load first dword of T# and S#. We will use them as the handle that will guide resource + // tracking pass where to read the sharps. This will later also get patched to the SPIRV texture + // binding index. + const IR::Value handle = + ir.CompositeConstruct(ir.GetScalarReg(tsharp_reg), ir.GetScalarReg(sampler_reg)); + + // Load first address components as denoted in 8.2.4 VGPR Usage Sea Islands Series Instruction + // Set Architecture + const IR::Value offset = + flags.test(MimgModifier::Offset) ? ir.GetVectorReg(addr_reg++) : IR::Value{}; + const IR::F32 bias = + flags.test(MimgModifier::LodBias) ? ir.GetVectorReg(addr_reg++) : IR::F32{}; + const IR::F32 dref = + flags.test(MimgModifier::Pcf) ? ir.GetVectorReg(addr_reg++) : IR::F32{}; + + // Derivatives are tricky because their number depends on the texture type which is located in + // T#. We don't have access to T# though until resource tracking pass. For now assume no + // derivatives are present, otherwise we don't know where coordinates are placed in the address + // stream. + ASSERT_MSG(!flags.test(MimgModifier::Derivative), "Derivative image instruction"); + + // Now we can load body components as noted in Table 8.9 Image Opcodes with Sampler + // Since these are at most 4 dwords, we load them into a single uvec4 and place them + // in coords field of the instruction. Then the resource tracking pass will patch the + // IR instruction to fill in lod_clamp field. + const IR::Value body = ir.CompositeConstruct( + ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), + ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); + + const bool explicit_lod = flags.any(MimgModifier::Level0, MimgModifier::Lod); + + IR::TextureInstInfo info{}; + info.is_depth.Assign(flags.test(MimgModifier::Pcf)); + info.has_bias.Assign(flags.test(MimgModifier::LodBias)); + info.has_lod_clamp.Assign(flags.test(MimgModifier::LodClamp)); + info.force_level0.Assign(flags.test(MimgModifier::Level0)); + info.has_offset.Assign(flags.test(MimgModifier::Offset)); + // info.explicit_lod.Assign(explicit_lod); + info.gather_comp.Assign(std::bit_width(mimg.dmask) - 1); + info.is_array.Assign(mimg.da); + + // Issue IR instruction, leaving unknown fields blank to patch later. + const IR::Value texel = [&]() -> IR::Value { + const IR::F32 lod = flags.test(MimgModifier::Level0) ? ir.Imm32(0.f) : IR::F32{}; + if (!flags.test(MimgModifier::Pcf)) { + return ir.ImageGather(handle, body, offset, info); + } + ASSERT(mimg.dmask & 1); // should be always 1st (R) component + return ir.ImageGatherDref(handle, body, offset, dref, info); + }(); + + // For gather4 instructions dmask selects which component to read and must have + // only one bit set to 1 + ASSERT_MSG(std::popcount(mimg.dmask) == 1, "Unexpected bits in gather dmask"); + for (u32 i = 0; i < 4; i++) { + const IR::F32 value = IR::F32{ir.CompositeExtract(texel, i)}; + ir.SetVectorReg(dest_reg++, value); + } +} + +void Translator::IMAGE_GET_LOD(const GcnInst& inst) { + const auto& mimg = inst.control.mimg; + IR::VectorReg dst_reg{inst.dst[0].code}; + IR::VectorReg addr_reg{inst.src[0].code}; + const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; + + const IR::Value handle = ir.GetScalarReg(tsharp_reg); + const IR::Value body = ir.CompositeConstruct( + ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), + ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); + const IR::Value lod = ir.ImageQueryLod(handle, body, {}); + ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(lod, 0)}); + ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(lod, 1)}); +} + } // namespace Shader::Gcn diff --git a/src/shader_recompiler/info.h b/src/shader_recompiler/info.h new file mode 100644 index 0000000000..739214ec99 --- /dev/null +++ b/src/shader_recompiler/info.h @@ -0,0 +1,272 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include +#include +#include +#include "common/assert.h" +#include "common/types.h" +#include "shader_recompiler/backend/bindings.h" +#include "shader_recompiler/ir/attribute.h" +#include "shader_recompiler/ir/reg.h" +#include "shader_recompiler/ir/type.h" +#include "shader_recompiler/params.h" +#include "shader_recompiler/runtime_info.h" +#include "video_core/amdgpu/resource.h" + +namespace Shader { + +static constexpr size_t NumUserDataRegs = 16; + +enum class TextureType : u32 { + Color1D, + ColorArray1D, + Color2D, + ColorArray2D, + Color3D, + ColorCube, + Buffer, +}; +constexpr u32 NUM_TEXTURE_TYPES = 7; + +struct Info; + +struct BufferResource { + u32 sgpr_base; + u32 dword_offset; + IR::Type used_types; + AmdGpu::Buffer inline_cbuf; + bool is_gds_buffer{}; + bool is_instance_data{}; + bool is_written{}; + + bool IsStorage(AmdGpu::Buffer buffer) const noexcept { + static constexpr size_t MaxUboSize = 65536; + return buffer.GetSize() > MaxUboSize || is_written || is_gds_buffer; + } + + constexpr AmdGpu::Buffer GetSharp(const Info& info) const noexcept; +}; +using BufferResourceList = boost::container::small_vector; + +struct TextureBufferResource { + u32 sgpr_base; + u32 dword_offset; + AmdGpu::NumberFormat nfmt; + bool is_written{}; + + constexpr AmdGpu::Buffer GetSharp(const Info& info) const noexcept; +}; +using TextureBufferResourceList = boost::container::small_vector; + +struct ImageResource { + u32 sgpr_base; + u32 dword_offset; + AmdGpu::ImageType type; + AmdGpu::NumberFormat nfmt; + bool is_storage{}; + bool is_depth{}; + bool is_atomic{}; + bool is_array{}; + + constexpr AmdGpu::Image GetSharp(const Info& info) const noexcept; +}; +using ImageResourceList = boost::container::small_vector; + +struct SamplerResource { + u32 sgpr_base; + u32 dword_offset; + AmdGpu::Sampler inline_sampler{}; + u32 associated_image : 4; + u32 disable_aniso : 1; + + constexpr AmdGpu::Sampler GetSharp(const Info& info) const noexcept; +}; +using SamplerResourceList = boost::container::small_vector; + +struct PushData { + static constexpr u32 BufOffsetIndex = 2; + static constexpr u32 UdRegsIndex = 4; + + u32 step0; + u32 step1; + std::array buf_offsets; + std::array ud_regs; + + void AddOffset(u32 binding, u32 offset) { + ASSERT(offset < 256 && binding < buf_offsets.size()); + buf_offsets[binding] = offset; + } +}; +static_assert(sizeof(PushData) <= 128, + "PushData size is greater than minimum size guaranteed by Vulkan spec"); + +/** + * Contains general information generated by the shader recompiler for an input program. + */ +struct Info { + struct VsInput { + enum InstanceIdType : u8 { + None = 0, + OverStepRate0 = 1, + OverStepRate1 = 2, + Plain = 3, + }; + + AmdGpu::NumberFormat fmt; + u16 binding; + u16 num_components; + u8 sgpr_base; + u8 dword_offset; + InstanceIdType instance_step_rate; + s32 instance_data_buf; + }; + boost::container::static_vector vs_inputs{}; + + struct AttributeFlags { + bool Get(IR::Attribute attrib, u32 comp = 0) const { + return flags[Index(attrib)] & (1 << comp); + } + + bool GetAny(IR::Attribute attrib) const { + return flags[Index(attrib)]; + } + + void Set(IR::Attribute attrib, u32 comp = 0) { + flags[Index(attrib)] |= (1 << comp); + } + + u32 NumComponents(IR::Attribute attrib) const { + return 4; + } + + static size_t Index(IR::Attribute attrib) { + return static_cast(attrib); + } + + std::array flags; + }; + AttributeFlags loads{}; + AttributeFlags stores{}; + + struct UserDataMask { + void Set(IR::ScalarReg reg) noexcept { + mask |= 1 << static_cast(reg); + } + + u32 Index(IR::ScalarReg reg) const noexcept { + const u32 reg_mask = (1 << static_cast(reg)) - 1; + return std::popcount(mask & reg_mask); + } + + u32 NumRegs() const noexcept { + return std::popcount(mask); + } + + u32 mask; + }; + UserDataMask ud_mask{}; + + s8 vertex_offset_sgpr = -1; + s8 instance_offset_sgpr = -1; + + BufferResourceList buffers; + TextureBufferResourceList texture_buffers; + ImageResourceList images; + SamplerResourceList samplers; + + std::span user_data; + Stage stage; + + u64 pgm_hash{}; + VAddr pgm_base; + bool has_storage_images{}; + bool has_image_buffers{}; + bool has_texel_buffers{}; + bool has_discard{}; + bool has_image_gather{}; + bool has_image_query{}; + bool uses_lane_id{}; + bool uses_group_quad{}; + bool uses_group_ballot{}; + bool uses_shared{}; + bool uses_fp16{}; + bool uses_fp64{}; + bool uses_step_rates{}; + bool translation_failed{}; // indicates that shader has unsupported instructions + u8 mrt_mask{0u}; + + explicit Info(Stage stage_, ShaderParams params) + : stage{stage_}, pgm_hash{params.hash}, pgm_base{params.Base()}, + user_data{params.user_data} {} + + template + T ReadUd(u32 ptr_index, u32 dword_offset) const noexcept { + T data; + const u32* base = user_data.data(); + if (ptr_index != IR::NumScalarRegs) { + std::memcpy(&base, &user_data[ptr_index], sizeof(base)); + base = reinterpret_cast(VAddr(base) & 0xFFFFFFFFFFFFULL); + } + std::memcpy(&data, base + dword_offset, sizeof(T)); + return data; + } + + void PushUd(Backend::Bindings& bnd, PushData& push) const { + u32 mask = ud_mask.mask; + while (mask) { + const u32 index = std::countr_zero(mask); + ASSERT(bnd.user_data < NumUserDataRegs && index < NumUserDataRegs); + mask &= ~(1U << index); + push.ud_regs[bnd.user_data++] = user_data[index]; + } + } + + void AddBindings(Backend::Bindings& bnd) const { + bnd.buffer += buffers.size() + texture_buffers.size(); + bnd.unified += bnd.buffer + images.size() + samplers.size(); + bnd.user_data += ud_mask.NumRegs(); + } + + [[nodiscard]] std::pair GetDrawOffsets() const { + u32 vertex_offset = 0; + u32 instance_offset = 0; + if (vertex_offset_sgpr != -1) { + vertex_offset = user_data[vertex_offset_sgpr]; + } + if (instance_offset_sgpr != -1) { + instance_offset = user_data[instance_offset_sgpr]; + } + return {vertex_offset, instance_offset}; + } +}; + +constexpr AmdGpu::Buffer BufferResource::GetSharp(const Info& info) const noexcept { + return inline_cbuf ? inline_cbuf : info.ReadUd(sgpr_base, dword_offset); +} + +constexpr AmdGpu::Buffer TextureBufferResource::GetSharp(const Info& info) const noexcept { + return info.ReadUd(sgpr_base, dword_offset); +} + +constexpr AmdGpu::Image ImageResource::GetSharp(const Info& info) const noexcept { + return info.ReadUd(sgpr_base, dword_offset); +} + +constexpr AmdGpu::Sampler SamplerResource::GetSharp(const Info& info) const noexcept { + return inline_sampler ? inline_sampler : info.ReadUd(sgpr_base, dword_offset); +} + +} // namespace Shader + +template <> +struct fmt::formatter { + constexpr auto parse(format_parse_context& ctx) { + return ctx.begin(); + } + auto format(const Shader::Stage stage, format_context& ctx) const { + constexpr static std::array names = {"fs", "vs", "gs", "es", "hs", "ls", "cs"}; + return fmt::format_to(ctx.out(), "{}", names[static_cast(stage)]); + } +}; diff --git a/src/shader_recompiler/ir/basic_block.h b/src/shader_recompiler/ir/basic_block.h index 1eb11469c9..11ae969bc2 100644 --- a/src/shader_recompiler/ir/basic_block.h +++ b/src/shader_recompiler/ir/basic_block.h @@ -147,6 +147,7 @@ class Block { /// Intrusively store the value of a register in the block. std::array ssa_sreg_values; + std::array ssa_sbit_values; std::array ssa_vreg_values; bool has_multiple_predecessors{false}; diff --git a/src/shader_recompiler/ir/ir_emitter.cpp b/src/shader_recompiler/ir/ir_emitter.cpp index 473ae4f66e..a7edb6d9c0 100644 --- a/src/shader_recompiler/ir/ir_emitter.cpp +++ b/src/shader_recompiler/ir/ir_emitter.cpp @@ -217,6 +217,10 @@ U32 IREmitter::GetVccHi() { return Inst(Opcode::GetVccHi); } +U32 IREmitter::GetM0() { + return Inst(Opcode::GetM0); +} + void IREmitter::SetScc(const U1& value) { Inst(Opcode::SetScc, value); } @@ -241,6 +245,10 @@ void IREmitter::SetVccHi(const U32& value) { Inst(Opcode::SetVccHi, value); } +void IREmitter::SetM0(const U32& value) { + Inst(Opcode::SetM0, value); +} + F32 IREmitter::GetAttribute(IR::Attribute attribute, u32 comp) { return Inst(Opcode::GetAttribute, attribute, Imm32(comp)); } @@ -305,21 +313,21 @@ U32 IREmitter::ReadConst(const Value& base, const U32& offset) { return Inst(Opcode::ReadConst, base, offset); } -F32 IREmitter::ReadConstBuffer(const Value& handle, const U32& index) { - return Inst(Opcode::ReadConstBuffer, handle, index); +U32 IREmitter::ReadConstBuffer(const Value& handle, const U32& index) { + return Inst(Opcode::ReadConstBuffer, handle, index); } Value IREmitter::LoadBuffer(int num_dwords, const Value& handle, const Value& address, BufferInstInfo info) { switch (num_dwords) { case 1: - return Inst(Opcode::LoadBufferF32, Flags{info}, handle, address); + return Inst(Opcode::LoadBufferU32, Flags{info}, handle, address); case 2: - return Inst(Opcode::LoadBufferF32x2, Flags{info}, handle, address); + return Inst(Opcode::LoadBufferU32x2, Flags{info}, handle, address); case 3: - return Inst(Opcode::LoadBufferF32x3, Flags{info}, handle, address); + return Inst(Opcode::LoadBufferU32x3, Flags{info}, handle, address); case 4: - return Inst(Opcode::LoadBufferF32x4, Flags{info}, handle, address); + return Inst(Opcode::LoadBufferU32x4, Flags{info}, handle, address); default: UNREACHABLE_MSG("Invalid number of dwords {}", num_dwords); } @@ -333,17 +341,16 @@ void IREmitter::StoreBuffer(int num_dwords, const Value& handle, const Value& ad const Value& data, BufferInstInfo info) { switch (num_dwords) { case 1: - Inst(data.Type() == Type::F32 ? Opcode::StoreBufferF32 : Opcode::StoreBufferU32, - Flags{info}, handle, address, data); + Inst(Opcode::StoreBufferU32, Flags{info}, handle, address, data); break; case 2: - Inst(Opcode::StoreBufferF32x2, Flags{info}, handle, address, data); + Inst(Opcode::StoreBufferU32x2, Flags{info}, handle, address, data); break; case 3: - Inst(Opcode::StoreBufferF32x3, Flags{info}, handle, address, data); + Inst(Opcode::StoreBufferU32x3, Flags{info}, handle, address, data); break; case 4: - Inst(Opcode::StoreBufferF32x4, Flags{info}, handle, address, data); + Inst(Opcode::StoreBufferU32x4, Flags{info}, handle, address, data); break; default: UNREACHABLE_MSG("Invalid number of dwords {}", num_dwords); @@ -402,6 +409,14 @@ void IREmitter::StoreBufferFormat(const Value& handle, const Value& address, con Inst(Opcode::StoreBufferFormatF32, Flags{info}, handle, address, data); } +U32 IREmitter::DataAppend(const U32& counter) { + return Inst(Opcode::DataAppend, counter, Imm32(0)); +} + +U32 IREmitter::DataConsume(const U32& counter) { + return Inst(Opcode::DataConsume, counter, Imm32(0)); +} + U32 IREmitter::LaneId() { return Inst(Opcode::LaneId); } @@ -614,6 +629,10 @@ Value IREmitter::UnpackUint2x32(const U64& value) { return Inst(Opcode::UnpackUint2x32, value); } +F64 IREmitter::PackFloat2x32(const Value& vector) { + return Inst(Opcode::PackFloat2x32, vector); +} + U32 IREmitter::PackFloat2x16(const Value& vector) { return Inst(Opcode::PackFloat2x16, vector); } @@ -1040,6 +1059,10 @@ U32 IREmitter::IDiv(const U32& a, const U32& b, bool is_signed) { return Inst(is_signed ? Opcode::SDiv32 : Opcode::UDiv32, a, b); } +U32 IREmitter::IMod(const U32& a, const U32& b, bool is_signed) { + return Inst(is_signed ? Opcode::SMod32 : Opcode::UMod32, a, b); +} + U32U64 IREmitter::INeg(const U32U64& value) { switch (value.Type()) { case Type::U32: @@ -1056,6 +1079,10 @@ U32 IREmitter::IAbs(const U32& value) { } U32U64 IREmitter::ShiftLeftLogical(const U32U64& base, const U32& shift) { + if (shift.IsImmediate() && shift.U32() == 0) { + return base; + } + switch (base.Type()) { case Type::U32: return Inst(Opcode::ShiftLeftLogical32, base, shift); @@ -1067,6 +1094,10 @@ U32U64 IREmitter::ShiftLeftLogical(const U32U64& base, const U32& shift) { } U32U64 IREmitter::ShiftRightLogical(const U32U64& base, const U32& shift) { + if (shift.IsImmediate() && shift.U32() == 0) { + return base; + } + switch (base.Type()) { case Type::U32: return Inst(Opcode::ShiftRightLogical32, base, shift); @@ -1078,6 +1109,10 @@ U32U64 IREmitter::ShiftRightLogical(const U32U64& base, const U32& shift) { } U32U64 IREmitter::ShiftRightArithmetic(const U32U64& base, const U32& shift) { + if (shift.IsImmediate() && shift.U32() == 0) { + return base; + } + switch (base.Type()) { case Type::U32: return Inst(Opcode::ShiftRightArithmetic32, base, shift); @@ -1345,6 +1380,8 @@ U16U32U64 IREmitter::UConvert(size_t result_bitsize, const U16U32U64& value) { switch (value.Type()) { case Type::U16: return Inst(Opcode::ConvertU32U16, value); + default: + break; } default: break; diff --git a/src/shader_recompiler/ir/ir_emitter.h b/src/shader_recompiler/ir/ir_emitter.h index de8fe450d2..958f2e88b9 100644 --- a/src/shader_recompiler/ir/ir_emitter.h +++ b/src/shader_recompiler/ir/ir_emitter.h @@ -67,12 +67,14 @@ class IREmitter { [[nodiscard]] U1 GetVcc(); [[nodiscard]] U32 GetVccLo(); [[nodiscard]] U32 GetVccHi(); + [[nodiscard]] U32 GetM0(); void SetScc(const U1& value); void SetExec(const U1& value); void SetVcc(const U1& value); void SetSccLo(const U32& value); void SetVccLo(const U32& value); void SetVccHi(const U32& value); + void SetM0(const U32& value); [[nodiscard]] U1 Condition(IR::Condition cond); @@ -88,7 +90,7 @@ class IREmitter { [[nodiscard]] U32 SharedAtomicIMax(const U32& address, const U32& data, bool is_signed); [[nodiscard]] U32 ReadConst(const Value& base, const U32& offset); - [[nodiscard]] F32 ReadConstBuffer(const Value& handle, const U32& index); + [[nodiscard]] U32 ReadConstBuffer(const Value& handle, const U32& index); [[nodiscard]] Value LoadBuffer(int num_dwords, const Value& handle, const Value& address, BufferInstInfo info); @@ -118,6 +120,8 @@ class IREmitter { [[nodiscard]] Value BufferAtomicSwap(const Value& handle, const Value& address, const Value& value, BufferInstInfo info); + [[nodiscard]] U32 DataAppend(const U32& counter); + [[nodiscard]] U32 DataConsume(const U32& counter); [[nodiscard]] U32 LaneId(); [[nodiscard]] U32 WarpId(); [[nodiscard]] U32 QuadShuffle(const U32& value, const U32& index); @@ -138,6 +142,8 @@ class IREmitter { [[nodiscard]] U64 PackUint2x32(const Value& vector); [[nodiscard]] Value UnpackUint2x32(const U64& value); + [[nodiscard]] F64 PackFloat2x32(const Value& vector); + [[nodiscard]] U32 PackFloat2x16(const Value& vector); [[nodiscard]] Value UnpackFloat2x16(const U32& value); @@ -190,6 +196,7 @@ class IREmitter { [[nodiscard]] Value IMulExt(const U32& a, const U32& b, bool is_signed = false); [[nodiscard]] U32U64 IMul(const U32U64& a, const U32U64& b); [[nodiscard]] U32 IDiv(const U32& a, const U32& b, bool is_signed = false); + [[nodiscard]] U32 IMod(const U32& a, const U32& b, bool is_signed = false); [[nodiscard]] U32U64 INeg(const U32U64& value); [[nodiscard]] U32 IAbs(const U32& value); [[nodiscard]] U32U64 ShiftLeftLogical(const U32U64& base, const U32& shift); diff --git a/src/shader_recompiler/ir/microinstruction.cpp b/src/shader_recompiler/ir/microinstruction.cpp index d6ef49cf7a..601c453d9a 100644 --- a/src/shader_recompiler/ir/microinstruction.cpp +++ b/src/shader_recompiler/ir/microinstruction.cpp @@ -51,12 +51,11 @@ bool Inst::MayHaveSideEffects() const noexcept { case Opcode::Discard: case Opcode::DiscardCond: case Opcode::SetAttribute: - case Opcode::StoreBufferF32: - case Opcode::StoreBufferF32x2: - case Opcode::StoreBufferF32x3: - case Opcode::StoreBufferF32x4: - case Opcode::StoreBufferFormatF32: case Opcode::StoreBufferU32: + case Opcode::StoreBufferU32x2: + case Opcode::StoreBufferU32x3: + case Opcode::StoreBufferU32x4: + case Opcode::StoreBufferFormatF32: case Opcode::BufferAtomicIAdd32: case Opcode::BufferAtomicSMin32: case Opcode::BufferAtomicUMin32: @@ -68,6 +67,8 @@ bool Inst::MayHaveSideEffects() const noexcept { case Opcode::BufferAtomicOr32: case Opcode::BufferAtomicXor32: case Opcode::BufferAtomicSwap32: + case Opcode::DataAppend: + case Opcode::DataConsume: case Opcode::WriteSharedU128: case Opcode::WriteSharedU64: case Opcode::WriteSharedU32: diff --git a/src/shader_recompiler/ir/opcodes.inc b/src/shader_recompiler/ir/opcodes.inc index 1e33d6d453..41cc553f99 100644 --- a/src/shader_recompiler/ir/opcodes.inc +++ b/src/shader_recompiler/ir/opcodes.inc @@ -17,8 +17,7 @@ OPCODE(DiscardCond, Void, U1, // Constant memory operations OPCODE(ReadConst, U32, U32x2, U32, ) -OPCODE(ReadConstBuffer, F32, Opaque, U32, ) -OPCODE(ReadConstBufferU32, U32, Opaque, U32, ) +OPCODE(ReadConstBuffer, U32, Opaque, U32, ) // Barriers OPCODE(Barrier, Void, ) @@ -35,9 +34,9 @@ OPCODE(WriteSharedU128, Void, U32, // Shared atomic operations OPCODE(SharedAtomicIAdd32, U32, U32, U32, ) -OPCODE(SharedAtomicSMin32, U32, U32, U32, ) +OPCODE(SharedAtomicSMin32, U32, U32, U32, ) OPCODE(SharedAtomicUMin32, U32, U32, U32, ) -OPCODE(SharedAtomicSMax32, U32, U32, U32, ) +OPCODE(SharedAtomicSMax32, U32, U32, U32, ) OPCODE(SharedAtomicUMax32, U32, U32, U32, ) // Context getters/setters @@ -55,17 +54,19 @@ OPCODE(GetAttributeU32, U32, Attr OPCODE(SetAttribute, Void, Attribute, F32, U32, ) // Flags -OPCODE(GetScc, U1, Void, ) -OPCODE(GetExec, U1, Void, ) -OPCODE(GetVcc, U1, Void, ) -OPCODE(GetVccLo, U32, Void, ) -OPCODE(GetVccHi, U32, Void, ) -OPCODE(SetScc, Void, U1, ) -OPCODE(SetExec, Void, U1, ) -OPCODE(SetVcc, Void, U1, ) -OPCODE(SetSccLo, Void, U32, ) -OPCODE(SetVccLo, Void, U32, ) -OPCODE(SetVccHi, Void, U32, ) +OPCODE(GetScc, U1, Void, ) +OPCODE(GetExec, U1, Void, ) +OPCODE(GetVcc, U1, Void, ) +OPCODE(GetVccLo, U32, Void, ) +OPCODE(GetVccHi, U32, Void, ) +OPCODE(GetM0, U32, Void, ) +OPCODE(SetScc, Void, U1, ) +OPCODE(SetExec, Void, U1, ) +OPCODE(SetVcc, Void, U1, ) +OPCODE(SetSccLo, Void, U32, ) +OPCODE(SetVccLo, Void, U32, ) +OPCODE(SetVccHi, Void, U32, ) +OPCODE(SetM0, Void, U32, ) // Undefined OPCODE(UndefU1, U1, ) @@ -75,31 +76,29 @@ OPCODE(UndefU32, U32, OPCODE(UndefU64, U64, ) // Buffer operations -OPCODE(LoadBufferF32, F32, Opaque, Opaque, ) -OPCODE(LoadBufferF32x2, F32x2, Opaque, Opaque, ) -OPCODE(LoadBufferF32x3, F32x3, Opaque, Opaque, ) -OPCODE(LoadBufferF32x4, F32x4, Opaque, Opaque, ) -OPCODE(LoadBufferFormatF32, F32x4, Opaque, Opaque, ) OPCODE(LoadBufferU32, U32, Opaque, Opaque, ) -OPCODE(StoreBufferF32, Void, Opaque, Opaque, F32, ) -OPCODE(StoreBufferF32x2, Void, Opaque, Opaque, F32x2, ) -OPCODE(StoreBufferF32x3, Void, Opaque, Opaque, F32x3, ) -OPCODE(StoreBufferF32x4, Void, Opaque, Opaque, F32x4, ) -OPCODE(StoreBufferFormatF32, Void, Opaque, Opaque, F32x4, ) +OPCODE(LoadBufferU32x2, U32x2, Opaque, Opaque, ) +OPCODE(LoadBufferU32x3, U32x3, Opaque, Opaque, ) +OPCODE(LoadBufferU32x4, U32x4, Opaque, Opaque, ) +OPCODE(LoadBufferFormatF32, F32x4, Opaque, Opaque, ) OPCODE(StoreBufferU32, Void, Opaque, Opaque, U32, ) +OPCODE(StoreBufferU32x2, Void, Opaque, Opaque, U32x2, ) +OPCODE(StoreBufferU32x3, Void, Opaque, Opaque, U32x3, ) +OPCODE(StoreBufferU32x4, Void, Opaque, Opaque, U32x4, ) +OPCODE(StoreBufferFormatF32, Void, Opaque, Opaque, U32x4, ) // Buffer atomic operations -OPCODE(BufferAtomicIAdd32, U32, Opaque, Opaque, U32 ) -OPCODE(BufferAtomicSMin32, U32, Opaque, Opaque, U32 ) -OPCODE(BufferAtomicUMin32, U32, Opaque, Opaque, U32 ) -OPCODE(BufferAtomicSMax32, U32, Opaque, Opaque, U32 ) -OPCODE(BufferAtomicUMax32, U32, Opaque, Opaque, U32 ) -OPCODE(BufferAtomicInc32, U32, Opaque, Opaque, U32, ) -OPCODE(BufferAtomicDec32, U32, Opaque, Opaque, U32, ) -OPCODE(BufferAtomicAnd32, U32, Opaque, Opaque, U32, ) -OPCODE(BufferAtomicOr32, U32, Opaque, Opaque, U32, ) -OPCODE(BufferAtomicXor32, U32, Opaque, Opaque, U32, ) -OPCODE(BufferAtomicSwap32, U32, Opaque, Opaque, U32, ) +OPCODE(BufferAtomicIAdd32, U32, Opaque, Opaque, U32 ) +OPCODE(BufferAtomicSMin32, U32, Opaque, Opaque, U32 ) +OPCODE(BufferAtomicUMin32, U32, Opaque, Opaque, U32 ) +OPCODE(BufferAtomicSMax32, U32, Opaque, Opaque, U32 ) +OPCODE(BufferAtomicUMax32, U32, Opaque, Opaque, U32 ) +OPCODE(BufferAtomicInc32, U32, Opaque, Opaque, U32, ) +OPCODE(BufferAtomicDec32, U32, Opaque, Opaque, U32, ) +OPCODE(BufferAtomicAnd32, U32, Opaque, Opaque, U32, ) +OPCODE(BufferAtomicOr32, U32, Opaque, Opaque, U32, ) +OPCODE(BufferAtomicXor32, U32, Opaque, Opaque, U32, ) +OPCODE(BufferAtomicSwap32, U32, Opaque, Opaque, U32, ) // Vector utility OPCODE(CompositeConstructU32x2, U32x2, U32, U32, ) @@ -157,6 +156,7 @@ OPCODE(BitCastF32U32, F32, U32, OPCODE(BitCastF64U64, F64, U64, ) OPCODE(PackUint2x32, U64, U32x2, ) OPCODE(UnpackUint2x32, U32x2, U64, ) +OPCODE(PackFloat2x32, F64, F32x2, ) OPCODE(PackFloat2x16, U32, F16x2, ) OPCODE(UnpackFloat2x16, F16x2, U32, ) OPCODE(PackHalf2x16, U32, F32x2, ) @@ -244,6 +244,8 @@ OPCODE(SMulExt, U32x2, U32, OPCODE(UMulExt, U32x2, U32, U32, ) OPCODE(SDiv32, U32, U32, U32, ) OPCODE(UDiv32, U32, U32, U32, ) +OPCODE(SMod32, U32, U32, U32, ) +OPCODE(UMod32, U32, U32, U32, ) OPCODE(INeg32, U32, U32, ) OPCODE(INeg64, U64, U64, ) OPCODE(IAbs32, U32, U32, ) @@ -340,6 +342,8 @@ OPCODE(ImageAtomicExchange32, U32, Opaq OPCODE(LaneId, U32, ) OPCODE(WarpId, U32, ) OPCODE(QuadShuffle, U32, U32, U32 ) -OPCODE(ReadFirstLane, U32, U32, U32 ) +OPCODE(ReadFirstLane, U32, U32, ) OPCODE(ReadLane, U32, U32, U32 ) OPCODE(WriteLane, U32, U32, U32, U32 ) +OPCODE(DataAppend, U32, U32, U32 ) +OPCODE(DataConsume, U32, U32, U32 ) diff --git a/src/shader_recompiler/ir/passes/constant_propagation_pass.cpp b/src/shader_recompiler/ir/passes/constant_propagation_pass.cpp index 87a069338b..775aed5b31 100644 --- a/src/shader_recompiler/ir/passes/constant_propagation_pass.cpp +++ b/src/shader_recompiler/ir/passes/constant_propagation_pass.cpp @@ -278,6 +278,12 @@ void ConstantPropagation(IR::Block& block, IR::Inst& inst) { case IR::Opcode::FPCmpClass32: FoldCmpClass(inst); return; + case IR::Opcode::ShiftLeftLogical32: + FoldWhenAllImmediates(inst, [](u32 a, u32 b) { return static_cast(a << b); }); + return; + case IR::Opcode::ShiftRightLogical32: + FoldWhenAllImmediates(inst, [](u32 a, u32 b) { return static_cast(a >> b); }); + return; case IR::Opcode::ShiftRightArithmetic32: FoldWhenAllImmediates(inst, [](s32 a, s32 b) { return static_cast(a >> b); }); return; @@ -347,7 +353,6 @@ void ConstantPropagation(IR::Block& block, IR::Inst& inst) { return; case IR::Opcode::INotEqual: FoldWhenAllImmediates(inst, [](u32 a, u32 b) { return a != b; }); - FoldBooleanConvert(inst); return; case IR::Opcode::BitwiseAnd32: FoldWhenAllImmediates(inst, [](u32 a, u32 b) { return a & b; }); diff --git a/src/shader_recompiler/ir/passes/lower_shared_mem_to_registers.cpp b/src/shader_recompiler/ir/passes/lower_shared_mem_to_registers.cpp index a87cf31b1c..76bfcf9111 100644 --- a/src/shader_recompiler/ir/passes/lower_shared_mem_to_registers.cpp +++ b/src/shader_recompiler/ir/passes/lower_shared_mem_to_registers.cpp @@ -21,8 +21,7 @@ void LowerSharedMemToRegisters(IR::Program& program) { const IR::Inst* prod = inst.Arg(0).InstRecursive(); const auto it = std::ranges::find_if(ds_writes, [&](const IR::Inst* write) { const IR::Inst* write_prod = write->Arg(0).InstRecursive(); - return write_prod->Arg(1).U32() == prod->Arg(1).U32() && - write_prod->Arg(0) == prod->Arg(0); + return write_prod->Arg(1).U32() == prod->Arg(1).U32(); }); ASSERT(it != ds_writes.end()); // Replace data read with value written. diff --git a/src/shader_recompiler/ir/passes/resource_tracking_pass.cpp b/src/shader_recompiler/ir/passes/resource_tracking_pass.cpp index f446ac476d..db0d75f0c2 100644 --- a/src/shader_recompiler/ir/passes/resource_tracking_pass.cpp +++ b/src/shader_recompiler/ir/passes/resource_tracking_pass.cpp @@ -3,12 +3,11 @@ #include #include -#include "common/alignment.h" +#include "shader_recompiler/info.h" #include "shader_recompiler/ir/basic_block.h" #include "shader_recompiler/ir/breadth_first_search.h" #include "shader_recompiler/ir/ir_emitter.h" #include "shader_recompiler/ir/program.h" -#include "shader_recompiler/runtime_info.h" #include "video_core/amdgpu/resource.h" namespace Shader::Optimization { @@ -42,11 +41,10 @@ bool IsBufferAtomic(const IR::Inst& inst) { bool IsBufferStore(const IR::Inst& inst) { switch (inst.GetOpcode()) { - case IR::Opcode::StoreBufferF32: - case IR::Opcode::StoreBufferF32x2: - case IR::Opcode::StoreBufferF32x3: - case IR::Opcode::StoreBufferF32x4: case IR::Opcode::StoreBufferU32: + case IR::Opcode::StoreBufferU32x2: + case IR::Opcode::StoreBufferU32x3: + case IR::Opcode::StoreBufferU32x4: return true; default: return IsBufferAtomic(inst); @@ -55,25 +53,28 @@ bool IsBufferStore(const IR::Inst& inst) { bool IsBufferInstruction(const IR::Inst& inst) { switch (inst.GetOpcode()) { - case IR::Opcode::LoadBufferF32: - case IR::Opcode::LoadBufferF32x2: - case IR::Opcode::LoadBufferF32x3: - case IR::Opcode::LoadBufferF32x4: case IR::Opcode::LoadBufferU32: + case IR::Opcode::LoadBufferU32x2: + case IR::Opcode::LoadBufferU32x3: + case IR::Opcode::LoadBufferU32x4: case IR::Opcode::ReadConstBuffer: - case IR::Opcode::ReadConstBufferU32: return true; default: return IsBufferStore(inst); } } +bool IsDataRingInstruction(const IR::Inst& inst) { + return inst.GetOpcode() == IR::Opcode::DataAppend || + inst.GetOpcode() == IR::Opcode::DataConsume; +} + bool IsTextureBufferInstruction(const IR::Inst& inst) { return inst.GetOpcode() == IR::Opcode::LoadBufferFormatF32 || inst.GetOpcode() == IR::Opcode::StoreBufferFormatF32; } -static bool UseFP16(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat num_format) { +bool UseFP16(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat num_format) { switch (num_format) { case AmdGpu::NumberFormat::Float: switch (data_format) { @@ -97,26 +98,7 @@ static bool UseFP16(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat num_for } IR::Type BufferDataType(const IR::Inst& inst, AmdGpu::NumberFormat num_format) { - switch (inst.GetOpcode()) { - case IR::Opcode::LoadBufferF32: - case IR::Opcode::LoadBufferF32x2: - case IR::Opcode::LoadBufferF32x3: - case IR::Opcode::LoadBufferF32x4: - case IR::Opcode::ReadConstBuffer: - case IR::Opcode::StoreBufferF32: - case IR::Opcode::StoreBufferF32x2: - case IR::Opcode::StoreBufferF32x3: - case IR::Opcode::StoreBufferF32x4: - return IR::Type::F32; - case IR::Opcode::LoadBufferU32: - case IR::Opcode::ReadConstBufferU32: - case IR::Opcode::StoreBufferU32: - case IR::Opcode::BufferAtomicIAdd32: - case IR::Opcode::BufferAtomicSwap32: - return IR::Type::U32; - default: - UNREACHABLE(); - } + return IR::Type::U32; } bool IsImageAtomicInstruction(const IR::Inst& inst) { @@ -191,6 +173,10 @@ class Descriptors { u32 Add(const BufferResource& desc) { const u32 index{Add(buffer_resources, desc, [&desc](const auto& existing) { + // Only one GDS binding can exist. + if (desc.is_gds_buffer && existing.is_gds_buffer) { + return true; + } return desc.sgpr_base == existing.sgpr_base && desc.dword_offset == existing.dword_offset && desc.inline_cbuf == existing.inline_cbuf; @@ -214,20 +200,17 @@ class Descriptors { u32 Add(const ImageResource& desc) { const u32 index{Add(image_resources, desc, [&desc](const auto& existing) { return desc.sgpr_base == existing.sgpr_base && - desc.dword_offset == existing.dword_offset && desc.type == existing.type && - desc.is_storage == existing.is_storage; + desc.dword_offset == existing.dword_offset; })}; + auto& image = image_resources[index]; + image.is_storage |= desc.is_storage; return index; } u32 Add(const SamplerResource& desc) { const u32 index{Add(sampler_resources, desc, [this, &desc](const auto& existing) { - if (desc.sgpr_base == existing.sgpr_base && - desc.dword_offset == existing.dword_offset) { - return true; - } - // Samplers with different bindings might still be the same. - return existing.GetSharp(info) == desc.GetSharp(info); + return desc.sgpr_base == existing.sgpr_base && + desc.dword_offset == existing.dword_offset; })}; return index; } @@ -396,25 +379,45 @@ void PatchBufferInstruction(IR::Block& block, IR::Inst& inst, Info& info, // Replace handle with binding index in buffer resource list. IR::IREmitter ir{block, IR::Block::InstructionList::s_iterator_to(inst)}; inst.SetArg(0, ir.Imm32(binding)); - ASSERT(!buffer.swizzle_enable && !buffer.add_tid_enable); + ASSERT(!buffer.add_tid_enable); // Address of constant buffer reads can be calculated at IR emittion time. - if (inst.GetOpcode() == IR::Opcode::ReadConstBuffer || - inst.GetOpcode() == IR::Opcode::ReadConstBufferU32) { + if (inst.GetOpcode() == IR::Opcode::ReadConstBuffer) { return; } + const IR::U32 index_stride = ir.Imm32(buffer.index_stride); + const IR::U32 element_size = ir.Imm32(buffer.element_size); + // Compute address of the buffer using the stride. IR::U32 address = ir.Imm32(inst_info.inst_offset.Value()); if (inst_info.index_enable) { const IR::U32 index = inst_info.offset_enable ? IR::U32{ir.CompositeExtract(inst.Arg(1), 0)} : IR::U32{inst.Arg(1)}; - address = ir.IAdd(address, ir.IMul(index, ir.Imm32(buffer.GetStride()))); + if (buffer.swizzle_enable) { + const IR::U32 stride_index_stride = + ir.Imm32(static_cast(buffer.stride * buffer.index_stride)); + const IR::U32 index_msb = ir.IDiv(index, index_stride); + const IR::U32 index_lsb = ir.IMod(index, index_stride); + address = ir.IAdd(address, ir.IAdd(ir.IMul(index_msb, stride_index_stride), + ir.IMul(index_lsb, element_size))); + } else { + address = ir.IAdd(address, ir.IMul(index, ir.Imm32(buffer.GetStride()))); + } } if (inst_info.offset_enable) { const IR::U32 offset = inst_info.index_enable ? IR::U32{ir.CompositeExtract(inst.Arg(1), 1)} : IR::U32{inst.Arg(1)}; - address = ir.IAdd(address, offset); + if (buffer.swizzle_enable) { + const IR::U32 element_size_index_stride = + ir.Imm32(buffer.element_size * buffer.index_stride); + const IR::U32 offset_msb = ir.IDiv(offset, element_size); + const IR::U32 offset_lsb = ir.IMod(offset, element_size); + address = ir.IAdd(address, + ir.IAdd(ir.IMul(offset_msb, element_size_index_stride), offset_lsb)); + } else { + address = ir.IAdd(address, offset); + } } inst.SetArg(1, address); } @@ -439,18 +442,29 @@ void PatchTextureBufferInstruction(IR::Block& block, IR::Inst& inst, Info& info, } IR::Value PatchCubeCoord(IR::IREmitter& ir, const IR::Value& s, const IR::Value& t, - const IR::Value& z, bool is_storage) { + const IR::Value& z, bool is_storage, bool is_array) { // When cubemap is written with imageStore it is treated like 2DArray. if (is_storage) { return ir.CompositeConstruct(s, t, z); } + + ASSERT(s.Type() == IR::Type::F32); // in case of fetched image need to adjust the code below + // We need to fix x and y coordinate, // because the s and t coordinate will be scaled and plus 1.5 by v_madak_f32. // We already force the scale value to be 1.0 when handling v_cubema_f32, // here we subtract 1.5 to recover the original value. const IR::Value x = ir.FPSub(IR::F32{s}, ir.Imm32(1.5f)); const IR::Value y = ir.FPSub(IR::F32{t}, ir.Imm32(1.5f)); - return ir.CompositeConstruct(x, y, z); + if (is_array) { + const IR::U32 array_index = ir.ConvertFToU(32, IR::F32{z}); + const IR::U32 face_id = ir.BitwiseAnd(array_index, ir.Imm32(7u)); + const IR::U32 slice_id = ir.ShiftRightLogical(array_index, ir.Imm32(3u)); + return ir.CompositeConstruct(x, y, ir.ConvertIToF(32, 32, false, face_id), + ir.ConvertIToF(32, 32, false, slice_id)); + } else { + return ir.CompositeConstruct(x, y, z); + } } void PatchImageInstruction(IR::Block& block, IR::Inst& inst, Info& info, Descriptors& descriptors) { @@ -471,25 +485,24 @@ void PatchImageInstruction(IR::Block& block, IR::Inst& inst, Info& info, Descrip // Read image sharp. const auto tsharp = TrackSharp(tsharp_handle); - const auto image = info.ReadUd(tsharp.sgpr_base, tsharp.dword_offset); const auto inst_info = inst.Flags(); + auto image = info.ReadUd(tsharp.sgpr_base, tsharp.dword_offset); if (!image.Valid()) { LOG_ERROR(Render_Vulkan, "Shader compiled with unbound image!"); - IR::IREmitter ir{block, IR::Block::InstructionList::s_iterator_to(inst)}; - inst.ReplaceUsesWith( - ir.CompositeConstruct(ir.Imm32(0.f), ir.Imm32(0.f), ir.Imm32(0.f), ir.Imm32(0.f))); - return; + image = AmdGpu::Image::Null(); } ASSERT(image.GetType() != AmdGpu::ImageType::Invalid); const bool is_storage = IsImageStorageInstruction(inst); + const auto type = image.IsPartialCubemap() ? AmdGpu::ImageType::Color2DArray : image.GetType(); u32 image_binding = descriptors.Add(ImageResource{ .sgpr_base = tsharp.sgpr_base, .dword_offset = tsharp.dword_offset, - .type = image.GetType(), + .type = type, .nfmt = static_cast(image.GetNumberFmt()), .is_storage = is_storage, .is_depth = bool(inst_info.is_depth), .is_atomic = IsImageAtomicInstruction(inst), + .is_array = bool(inst_info.is_array), }); // Read sampler sharp. This doesn't exist for IMAGE_LOAD/IMAGE_STORE instructions @@ -546,7 +559,8 @@ void PatchImageInstruction(IR::Block& block, IR::Inst& inst, Info& info, Descrip case AmdGpu::ImageType::Color3D: // x, y, z return {ir.CompositeConstruct(body->Arg(0), body->Arg(1), body->Arg(2)), body->Arg(3)}; case AmdGpu::ImageType::Cube: // x, y, face - return {PatchCubeCoord(ir, body->Arg(0), body->Arg(1), body->Arg(2), is_storage), + return {PatchCubeCoord(ir, body->Arg(0), body->Arg(1), body->Arg(2), is_storage, + inst_info.is_array), body->Arg(3)}; default: UNREACHABLE_MSG("Unknown image type {}", image.GetType()); @@ -585,7 +599,8 @@ void PatchImageInstruction(IR::Block& block, IR::Inst& inst, Info& info, Descrip } } if (inst_info.has_derivatives) { - ASSERT_MSG(image.GetType() == AmdGpu::ImageType::Color2D, + ASSERT_MSG(image.GetType() == AmdGpu::ImageType::Color2D || + image.GetType() == AmdGpu::ImageType::Color2DArray, "User derivatives only supported for 2D images"); } if (inst_info.has_lod_clamp) { @@ -612,6 +627,51 @@ void PatchImageInstruction(IR::Block& block, IR::Inst& inst, Info& info, Descrip } } +void PatchDataRingInstruction(IR::Block& block, IR::Inst& inst, Info& info, + Descriptors& descriptors) { + // Insert gds binding in the shader if it doesn't exist already. + // The buffer is used for append/consume counters. + constexpr static AmdGpu::Buffer GdsSharp{.base_address = 1}; + const u32 binding = descriptors.Add(BufferResource{ + .used_types = IR::Type::U32, + .inline_cbuf = GdsSharp, + .is_gds_buffer = true, + .is_written = true, + }); + + const auto pred = [](const IR::Inst* inst) -> std::optional { + if (inst->GetOpcode() == IR::Opcode::GetUserData) { + return inst; + } + return std::nullopt; + }; + + // Attempt to deduce the GDS address of counter at compile time. + const u32 gds_addr = [&] { + const IR::Value& gds_offset = inst.Arg(0); + if (gds_offset.IsImmediate()) { + // Nothing to do, offset is known. + return gds_offset.U32() & 0xFFFF; + } + const auto result = IR::BreadthFirstSearch(&inst, pred); + ASSERT_MSG(result, "Unable to track M0 source"); + + // M0 must be set by some user data register. + const IR::Inst* prod = gds_offset.InstRecursive(); + const u32 ud_reg = u32(result.value()->Arg(0).ScalarReg()); + u32 m0_val = info.user_data[ud_reg] >> 16; + if (prod->GetOpcode() == IR::Opcode::IAdd32) { + m0_val += prod->Arg(1).U32(); + } + return m0_val & 0xFFFF; + }(); + + // Patch instruction. + IR::IREmitter ir{block, IR::Block::InstructionList::s_iterator_to(inst)}; + inst.SetArg(0, ir.Imm32(gds_addr >> 2)); + inst.SetArg(1, ir.Imm32(binding)); +} + void ResourceTrackingPass(IR::Program& program) { // Iterate resource instructions and patch them after finding the sharp. auto& info = program.info; @@ -628,6 +688,10 @@ void ResourceTrackingPass(IR::Program& program) { } if (IsImageInstruction(inst)) { PatchImageInstruction(*block, inst, info, descriptors); + continue; + } + if (IsDataRingInstruction(inst)) { + PatchDataRingInstruction(*block, inst, info, descriptors); } } } diff --git a/src/shader_recompiler/ir/passes/shader_info_collection_pass.cpp b/src/shader_recompiler/ir/passes/shader_info_collection_pass.cpp index 7105f01f15..e995852d51 100644 --- a/src/shader_recompiler/ir/passes/shader_info_collection_pass.cpp +++ b/src/shader_recompiler/ir/passes/shader_info_collection_pass.cpp @@ -8,24 +8,29 @@ namespace Shader::Optimization { void Visit(Info& info, IR::Inst& inst) { switch (inst.GetOpcode()) { case IR::Opcode::GetAttribute: - case IR::Opcode::GetAttributeU32: { + case IR::Opcode::GetAttributeU32: info.loads.Set(inst.Arg(0).Attribute(), inst.Arg(1).U32()); break; - } - case IR::Opcode::SetAttribute: { + case IR::Opcode::SetAttribute: info.stores.Set(inst.Arg(0).Attribute(), inst.Arg(2).U32()); break; - } + case IR::Opcode::GetUserData: + info.ud_mask.Set(inst.Arg(0).ScalarReg()); + break; case IR::Opcode::LoadSharedU32: case IR::Opcode::LoadSharedU64: case IR::Opcode::WriteSharedU32: case IR::Opcode::WriteSharedU64: info.uses_shared = true; break; + case IR::Opcode::ConvertF16F32: case IR::Opcode::ConvertF32F16: case IR::Opcode::BitCastF16U16: info.uses_fp16 = true; break; + case IR::Opcode::BitCastU64F64: + info.uses_fp64 = true; + break; case IR::Opcode::ImageWrite: info.has_storage_images = true; break; @@ -38,6 +43,11 @@ void Visit(Info& info, IR::Inst& inst) { case IR::Opcode::QuadShuffle: info.uses_group_quad = true; break; + case IR::Opcode::ReadLane: + case IR::Opcode::ReadFirstLane: + case IR::Opcode::WriteLane: + info.uses_group_ballot = true; + break; case IR::Opcode::Discard: case IR::Opcode::DiscardCond: info.has_discard = true; diff --git a/src/shader_recompiler/ir/passes/ssa_rewrite_pass.cpp b/src/shader_recompiler/ir/passes/ssa_rewrite_pass.cpp index 9edb157db5..df73c1bc80 100644 --- a/src/shader_recompiler/ir/passes/ssa_rewrite_pass.cpp +++ b/src/shader_recompiler/ir/passes/ssa_rewrite_pass.cpp @@ -33,6 +33,7 @@ struct ExecFlagTag : FlagTag {}; struct VccFlagTag : FlagTag {}; struct VccLoTag : FlagTag {}; struct VccHiTag : FlagTag {}; +struct M0Tag : FlagTag {}; struct GotoVariable : FlagTag { GotoVariable() = default; @@ -43,8 +44,17 @@ struct GotoVariable : FlagTag { u32 index; }; -using Variant = std::variant; +struct ThreadBitScalar : FlagTag { + ThreadBitScalar() = default; + explicit ThreadBitScalar(IR::ScalarReg sgpr_) : sgpr{sgpr_} {} + + auto operator<=>(const ThreadBitScalar&) const noexcept = default; + + IR::ScalarReg sgpr; +}; + +using Variant = std::variant; using ValueMap = std::unordered_map; struct DefTable { @@ -69,6 +79,13 @@ struct DefTable { goto_vars[variable.index].insert_or_assign(block, value); } + const IR::Value& Def(IR::Block* block, ThreadBitScalar variable) { + return block->ssa_sbit_values[RegIndex(variable.sgpr)]; + } + void SetDef(IR::Block* block, ThreadBitScalar variable, const IR::Value& value) { + block->ssa_sbit_values[RegIndex(variable.sgpr)] = value; + } + const IR::Value& Def(IR::Block* block, SccFlagTag) { return scc_flag[block]; } @@ -103,6 +120,12 @@ struct DefTable { void SetDef(IR::Block* block, VccFlagTag, const IR::Value& value) { vcc_flag.insert_or_assign(block, value); } + const IR::Value& Def(IR::Block* block, M0Tag) { + return m0_flag[block]; + } + void SetDef(IR::Block* block, M0Tag, const IR::Value& value) { + m0_flag.insert_or_assign(block, value); + } std::unordered_map goto_vars; ValueMap scc_flag; @@ -111,6 +134,7 @@ struct DefTable { ValueMap scc_lo_flag; ValueMap vcc_lo_flag; ValueMap vcc_hi_flag; + ValueMap m0_flag; }; IR::Opcode UndefOpcode(IR::ScalarReg) noexcept { @@ -129,6 +153,10 @@ IR::Opcode UndefOpcode(const VccHiTag) noexcept { return IR::Opcode::UndefU32; } +IR::Opcode UndefOpcode(const M0Tag) noexcept { + return IR::Opcode::UndefU32; +} + IR::Opcode UndefOpcode(const FlagTag) noexcept { return IR::Opcode::UndefU1; } @@ -161,7 +189,7 @@ class Pass { } template - IR::Value ReadVariable(Type variable, IR::Block* root_block, bool is_thread_bit = false) { + IR::Value ReadVariable(Type variable, IR::Block* root_block) { boost::container::small_vector, 64> stack{ ReadState(nullptr), ReadState(root_block), @@ -189,7 +217,7 @@ class Pass { } else if (!block->IsSsaSealed()) { // Incomplete CFG IR::Inst* phi{&*block->PrependNewInst(block->begin(), IR::Opcode::Phi)}; - phi->SetFlags(is_thread_bit ? IR::Type::U1 : IR::TypeOf(UndefOpcode(variable))); + phi->SetFlags(IR::TypeOf(UndefOpcode(variable))); incomplete_phis[block].insert_or_assign(variable, phi); stack.back().result = IR::Value{&*phi}; @@ -202,7 +230,7 @@ class Pass { } else { // Break potential cycles with operandless phi IR::Inst* const phi{&*block->PrependNewInst(block->begin(), IR::Opcode::Phi)}; - phi->SetFlags(is_thread_bit ? IR::Type::U1 : IR::TypeOf(UndefOpcode(variable))); + phi->SetFlags(IR::TypeOf(UndefOpcode(variable))); WriteVariable(variable, block, IR::Value{phi}); @@ -251,9 +279,7 @@ class Pass { template IR::Value AddPhiOperands(Type variable, IR::Inst& phi, IR::Block* block) { for (IR::Block* const imm_pred : block->ImmPredecessors()) { - const bool is_thread_bit = - std::is_same_v && phi.Flags() == IR::Type::U1; - phi.AddPhiOperand(imm_pred, ReadVariable(variable, imm_pred, is_thread_bit)); + phi.AddPhiOperand(imm_pred, ReadVariable(variable, imm_pred)); } return TryRemoveTrivialPhi(phi, block, UndefOpcode(variable)); } @@ -301,7 +327,11 @@ class Pass { void VisitInst(Pass& pass, IR::Block* block, IR::Inst& inst) { const IR::Opcode opcode{inst.GetOpcode()}; switch (opcode) { - case IR::Opcode::SetThreadBitScalarReg: + case IR::Opcode::SetThreadBitScalarReg: { + const IR::ScalarReg reg{inst.Arg(0).ScalarReg()}; + pass.WriteVariable(ThreadBitScalar{reg}, block, inst.Arg(1)); + break; + } case IR::Opcode::SetScalarRegister: { const IR::ScalarReg reg{inst.Arg(0).ScalarReg()}; pass.WriteVariable(reg, block, inst.Arg(1)); @@ -330,11 +360,18 @@ void VisitInst(Pass& pass, IR::Block* block, IR::Inst& inst) { case IR::Opcode::SetVccHi: pass.WriteVariable(VccHiTag{}, block, inst.Arg(0)); break; - case IR::Opcode::GetThreadBitScalarReg: + case IR::Opcode::SetM0: + pass.WriteVariable(M0Tag{}, block, inst.Arg(0)); + break; + case IR::Opcode::GetThreadBitScalarReg: { + const IR::ScalarReg reg{inst.Arg(0).ScalarReg()}; + const IR::Value value = pass.ReadVariable(ThreadBitScalar{reg}, block); + inst.ReplaceUsesWith(value); + break; + } case IR::Opcode::GetScalarRegister: { const IR::ScalarReg reg{inst.Arg(0).ScalarReg()}; - const bool thread_bit = opcode == IR::Opcode::GetThreadBitScalarReg; - const IR::Value value = pass.ReadVariable(reg, block, thread_bit); + const IR::Value value = pass.ReadVariable(reg, block); inst.ReplaceUsesWith(value); break; } @@ -362,6 +399,9 @@ void VisitInst(Pass& pass, IR::Block* block, IR::Inst& inst) { case IR::Opcode::GetVccHi: inst.ReplaceUsesWith(pass.ReadVariable(VccHiTag{}, block)); break; + case IR::Opcode::GetM0: + inst.ReplaceUsesWith(pass.ReadVariable(M0Tag{}, block)); + break; default: break; } diff --git a/src/shader_recompiler/ir/program.h b/src/shader_recompiler/ir/program.h index f7abba6410..84a1a2d406 100644 --- a/src/shader_recompiler/ir/program.h +++ b/src/shader_recompiler/ir/program.h @@ -5,9 +5,9 @@ #include #include "shader_recompiler/frontend/instruction.h" +#include "shader_recompiler/info.h" #include "shader_recompiler/ir/abstract_syntax_list.h" #include "shader_recompiler/ir/basic_block.h" -#include "shader_recompiler/runtime_info.h" namespace Shader::IR { diff --git a/src/shader_recompiler/ir/reg.h b/src/shader_recompiler/ir/reg.h index fba04f33e7..4783d08e55 100644 --- a/src/shader_recompiler/ir/reg.h +++ b/src/shader_recompiler/ir/reg.h @@ -59,6 +59,7 @@ union TextureInstInfo { BitField<5, 1, u32> has_offset; BitField<6, 2, u32> gather_comp; BitField<8, 1, u32> has_derivatives; + BitField<9, 1, u32> is_array; }; union BufferInstInfo { diff --git a/src/shader_recompiler/ir/value.cpp b/src/shader_recompiler/ir/value.cpp index 9cbb9e7cf1..86e5dd141b 100644 --- a/src/shader_recompiler/ir/value.cpp +++ b/src/shader_recompiler/ir/value.cpp @@ -81,6 +81,7 @@ bool Value::operator==(const Value& other) const { case Type::F64x2: case Type::F64x3: case Type::F64x4: + default: break; } UNREACHABLE_MSG("Invalid type {}", type); diff --git a/src/shader_recompiler/params.h b/src/shader_recompiler/params.h new file mode 100644 index 0000000000..0dce9a0f3e --- /dev/null +++ b/src/shader_recompiler/params.h @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include "common/types.h" + +namespace Shader { + +/** + * Compilation parameters used to identify and locate a guest shader program. + */ +struct ShaderParams { + static constexpr u32 NumShaderUserData = 16; + + std::span user_data; + std::span code; + u64 hash; + + VAddr Base() const noexcept { + return reinterpret_cast(code.data()); + } +}; + +} // namespace Shader diff --git a/src/shader_recompiler/recompiler.cpp b/src/shader_recompiler/recompiler.cpp index dfcf9ed1b2..12dbc6c1b3 100644 --- a/src/shader_recompiler/recompiler.cpp +++ b/src/shader_recompiler/recompiler.cpp @@ -6,6 +6,7 @@ #include "shader_recompiler/frontend/structured_control_flow.h" #include "shader_recompiler/ir/passes/ir_passes.h" #include "shader_recompiler/ir/post_order.h" +#include "shader_recompiler/recompiler.h" namespace Shader { @@ -27,29 +28,32 @@ IR::BlockList GenerateBlocks(const IR::AbstractSyntaxList& syntax_list) { return blocks; } -IR::Program TranslateProgram(Common::ObjectPool& inst_pool, - Common::ObjectPool& block_pool, std::span token, - Info& info, const Profile& profile) { +IR::Program TranslateProgram(std::span code, Pools& pools, Info& info, + const RuntimeInfo& runtime_info, const Profile& profile) { // Ensure first instruction is expected. constexpr u32 token_mov_vcchi = 0xBEEB03FF; - ASSERT_MSG(token[0] == token_mov_vcchi, "First instruction is not s_mov_b32 vcc_hi, #imm"); + ASSERT_MSG(code[0] == token_mov_vcchi, "First instruction is not s_mov_b32 vcc_hi, #imm"); - Gcn::GcnCodeSlice slice(token.data(), token.data() + token.size()); + Gcn::GcnCodeSlice slice(code.data(), code.data() + code.size()); Gcn::GcnDecodeContext decoder; // Decode and save instructions IR::Program program{info}; - program.ins_list.reserve(token.size()); + program.ins_list.reserve(code.size()); while (!slice.atEnd()) { program.ins_list.emplace_back(decoder.decodeInstruction(slice)); } + // Clear any previous pooled data. + pools.ReleaseContents(); + // Create control flow graph Common::ObjectPool gcn_block_pool{64}; Gcn::CFG cfg{gcn_block_pool, program.ins_list}; // Structurize control flow graph and create program. - program.syntax_list = Shader::Gcn::BuildASL(inst_pool, block_pool, cfg, program.info, profile); + program.syntax_list = Shader::Gcn::BuildASL(pools.inst_pool, pools.block_pool, cfg, + program.info, runtime_info, profile); program.blocks = GenerateBlocks(program.syntax_list); program.post_order_blocks = Shader::IR::PostOrder(program.syntax_list.front()); @@ -63,7 +67,6 @@ IR::Program TranslateProgram(Common::ObjectPool& inst_pool, Shader::Optimization::IdentityRemovalPass(program.blocks); Shader::Optimization::DeadCodeEliminationPass(program); Shader::Optimization::CollectShaderInfoPass(program); - LOG_DEBUG(Render_Vulkan, "{}", Shader::IR::DumpProgram(program)); return program; } diff --git a/src/shader_recompiler/recompiler.h b/src/shader_recompiler/recompiler.h index 3a22951897..f8acf6c9ed 100644 --- a/src/shader_recompiler/recompiler.h +++ b/src/shader_recompiler/recompiler.h @@ -10,10 +10,24 @@ namespace Shader { struct Profile; +struct RuntimeInfo; -[[nodiscard]] IR::Program TranslateProgram(Common::ObjectPool& inst_pool, - Common::ObjectPool& block_pool, - std::span code, Info& info, - const Profile& profile); +struct Pools { + static constexpr u32 InstPoolSize = 8192; + static constexpr u32 BlockPoolSize = 32; + + Common::ObjectPool inst_pool; + Common::ObjectPool block_pool; + + explicit Pools() : inst_pool{InstPoolSize}, block_pool{BlockPoolSize} {} + + void ReleaseContents() { + inst_pool.ReleaseContents(); + block_pool.ReleaseContents(); + } +}; + +[[nodiscard]] IR::Program TranslateProgram(std::span code, Pools& pools, Info& info, + const RuntimeInfo& runtime_info, const Profile& profile); } // namespace Shader diff --git a/src/shader_recompiler/runtime_info.h b/src/shader_recompiler/runtime_info.h index 77c57e9476..1bb065544b 100644 --- a/src/shader_recompiler/runtime_info.h +++ b/src/shader_recompiler/runtime_info.h @@ -3,20 +3,14 @@ #pragma once -#include -#include +#include #include + #include "common/assert.h" #include "common/types.h" -#include "shader_recompiler/ir/attribute.h" -#include "shader_recompiler/ir/reg.h" -#include "shader_recompiler/ir/type.h" -#include "video_core/amdgpu/resource.h" namespace Shader { -static constexpr size_t NumUserDataRegs = 16; - enum class Stage : u32 { Fragment, Vertex, @@ -29,21 +23,18 @@ enum class Stage : u32 { constexpr u32 MaxStageTypes = 6; [[nodiscard]] constexpr Stage StageFromIndex(size_t index) noexcept { - return static_cast(static_cast(Stage::Vertex) + index); + return static_cast(index); } -enum class TextureType : u32 { - Color1D, - ColorArray1D, - Color2D, - ColorArray2D, - Color3D, - ColorCube, - Buffer, +enum class MrtSwizzle : u8 { + Identity = 0, + Alt = 1, + Reverse = 2, + ReverseAlt = 3, }; -constexpr u32 NUM_TEXTURE_TYPES = 7; +static constexpr u32 MaxColorBuffers = 8; -enum class VsOutput : u32 { +enum class VsOutput : u8 { None, PointSprite, EdgeFlag, @@ -70,211 +61,71 @@ enum class VsOutput : u32 { }; using VsOutputMap = std::array; -struct Info; - -struct BufferResource { - u32 sgpr_base; - u32 dword_offset; - IR::Type used_types; - AmdGpu::Buffer inline_cbuf; - bool is_instance_data{}; - bool is_written{}; - - bool IsStorage(AmdGpu::Buffer buffer) const noexcept { - static constexpr size_t MaxUboSize = 65536; - return buffer.GetSize() > MaxUboSize || is_written; - } - - constexpr AmdGpu::Buffer GetSharp(const Info& info) const noexcept; -}; -using BufferResourceList = boost::container::small_vector; - -struct TextureBufferResource { - u32 sgpr_base; - u32 dword_offset; - AmdGpu::NumberFormat nfmt; - bool is_written{}; - - constexpr AmdGpu::Buffer GetSharp(const Info& info) const noexcept; -}; -using TextureBufferResourceList = boost::container::small_vector; - -struct ImageResource { - u32 sgpr_base; - u32 dword_offset; - AmdGpu::ImageType type; - AmdGpu::NumberFormat nfmt; - bool is_storage; - bool is_depth; - bool is_atomic{}; - - constexpr AmdGpu::Image GetSharp(const Info& info) const noexcept; -}; -using ImageResourceList = boost::container::small_vector; - -struct SamplerResource { - u32 sgpr_base; - u32 dword_offset; - AmdGpu::Sampler inline_sampler{}; - u32 associated_image : 4; - u32 disable_aniso : 1; - - constexpr AmdGpu::Sampler GetSharp(const Info& info) const noexcept; -}; -using SamplerResourceList = boost::container::small_vector; - -struct PushData { - static constexpr size_t BufOffsetIndex = 2; +struct VertexRuntimeInfo { + boost::container::static_vector outputs; + bool emulate_depth_negative_one_to_one{}; - u32 step0; - u32 step1; - std::array buf_offsets; - - void AddOffset(u32 binding, u32 offset) { - ASSERT(offset < 256 && binding < buf_offsets.size()); - buf_offsets[binding] = offset; + bool operator==(const VertexRuntimeInfo& other) const noexcept { + return emulate_depth_negative_one_to_one == other.emulate_depth_negative_one_to_one; } }; -struct Info { - struct VsInput { - enum InstanceIdType : u8 { - None = 0, - OverStepRate0 = 1, - OverStepRate1 = 2, - Plain = 3, - }; - - AmdGpu::NumberFormat fmt; - u16 binding; - u16 num_components; - u8 sgpr_base; - u8 dword_offset; - InstanceIdType instance_step_rate; - s32 instance_data_buf; - }; - boost::container::static_vector vs_inputs{}; - +struct FragmentRuntimeInfo { struct PsInput { - u32 param_index; + u8 param_index; bool is_default; bool is_flat; - u32 default_value; - }; - boost::container::static_vector ps_inputs{}; - - struct AttributeFlags { - bool Get(IR::Attribute attrib, u32 comp = 0) const { - return flags[Index(attrib)] & (1 << comp); - } - - bool GetAny(IR::Attribute attrib) const { - return flags[Index(attrib)]; - } - - void Set(IR::Attribute attrib, u32 comp = 0) { - flags[Index(attrib)] |= (1 << comp); - } - - u32 NumComponents(IR::Attribute attrib) const { - return 4; - } + u8 default_value; - static size_t Index(IR::Attribute attrib) { - return static_cast(attrib); - } - - std::array flags; + auto operator<=>(const PsInput&) const noexcept = default; }; - AttributeFlags loads{}; - AttributeFlags stores{}; - boost::container::static_vector vs_outputs; + boost::container::static_vector inputs; + std::array mrt_swizzles; - s8 vertex_offset_sgpr = -1; - s8 instance_offset_sgpr = -1; - - BufferResourceList buffers; - TextureBufferResourceList texture_buffers; - ImageResourceList images; - SamplerResourceList samplers; + bool operator==(const FragmentRuntimeInfo& other) const noexcept { + return std::ranges::equal(mrt_swizzles, other.mrt_swizzles) && + std::ranges::equal(inputs, other.inputs); + } +}; - std::array workgroup_size{}; +struct ComputeRuntimeInfo { + u32 shared_memory_size; + std::array workgroup_size; std::array tgid_enable; - u32 num_user_data; - u32 num_input_vgprs; - std::span user_data; - Stage stage; - - uintptr_t pgm_base{}; - u64 pgm_hash{}; - u32 shared_memory_size{}; - bool has_storage_images{}; - bool has_image_buffers{}; - bool has_texel_buffers{}; - bool has_discard{}; - bool has_image_gather{}; - bool has_image_query{}; - bool uses_lane_id{}; - bool uses_group_quad{}; - bool uses_shared{}; - bool uses_fp16{}; - bool uses_step_rates{}; - bool translation_failed{}; // indicates that shader has unsupported instructions - - template - T ReadUd(u32 ptr_index, u32 dword_offset) const noexcept { - T data; - const u32* base = user_data.data(); - if (ptr_index != IR::NumScalarRegs) { - std::memcpy(&base, &user_data[ptr_index], sizeof(base)); - } - std::memcpy(&data, base + dword_offset, sizeof(T)); - return data; - } - - size_t NumBindings() const noexcept { - return buffers.size() + texture_buffers.size() + images.size() + samplers.size(); + bool operator==(const ComputeRuntimeInfo& other) const noexcept { + return workgroup_size == other.workgroup_size && tgid_enable == other.tgid_enable; } +}; - [[nodiscard]] std::pair GetDrawOffsets() const noexcept { - u32 vertex_offset = 0; - u32 instance_offset = 0; - if (vertex_offset_sgpr != -1) { - vertex_offset = user_data[vertex_offset_sgpr]; - } - if (instance_offset_sgpr != -1) { - instance_offset = user_data[instance_offset_sgpr]; +/** + * Stores information relevant to shader compilation sourced from liverpool registers. + * It may potentially differ with the same shader module so must be checked. + * It's also possible to store any other custom information that needs to be part of shader key. + */ +struct RuntimeInfo { + Stage stage; + u32 num_user_data; + u32 num_input_vgprs; + u32 num_allocated_vgprs; + VertexRuntimeInfo vs_info; + FragmentRuntimeInfo fs_info; + ComputeRuntimeInfo cs_info; + + RuntimeInfo(Stage stage_) : stage{stage_} {} + + bool operator==(const RuntimeInfo& other) const noexcept { + switch (stage) { + case Stage::Fragment: + return fs_info == other.fs_info; + case Stage::Vertex: + return vs_info == other.vs_info; + case Stage::Compute: + return cs_info == other.cs_info; + default: + return true; } - return {vertex_offset, instance_offset}; } }; -constexpr AmdGpu::Buffer BufferResource::GetSharp(const Info& info) const noexcept { - return inline_cbuf ? inline_cbuf : info.ReadUd(sgpr_base, dword_offset); -} - -constexpr AmdGpu::Buffer TextureBufferResource::GetSharp(const Info& info) const noexcept { - return info.ReadUd(sgpr_base, dword_offset); -} - -constexpr AmdGpu::Image ImageResource::GetSharp(const Info& info) const noexcept { - return info.ReadUd(sgpr_base, dword_offset); -} - -constexpr AmdGpu::Sampler SamplerResource::GetSharp(const Info& info) const noexcept { - return inline_sampler ? inline_sampler : info.ReadUd(sgpr_base, dword_offset); -} - } // namespace Shader - -template <> -struct fmt::formatter { - constexpr auto parse(format_parse_context& ctx) { - return ctx.begin(); - } - auto format(const Shader::Stage stage, format_context& ctx) const { - constexpr static std::array names = {"fs", "vs", "gs", "es", "hs", "ls", "cs"}; - return fmt::format_to(ctx.out(), "{}", names[static_cast(stage)]); - } -}; diff --git a/src/video_core/renderer_vulkan/vk_shader_cache.h b/src/shader_recompiler/specialization.h similarity index 51% rename from src/video_core/renderer_vulkan/vk_shader_cache.h rename to src/shader_recompiler/specialization.h index 191e1b08ce..0a3a696bc2 100644 --- a/src/video_core/renderer_vulkan/vk_shader_cache.h +++ b/src/shader_recompiler/specialization.h @@ -4,18 +4,12 @@ #pragma once #include -#include -#include -#include "common/object_pool.h" -#include "shader_recompiler/ir/basic_block.h" -#include "shader_recompiler/profile.h" -#include "shader_recompiler/runtime_info.h" -#include "video_core/amdgpu/liverpool.h" -#include "video_core/renderer_vulkan/vk_common.h" -namespace Vulkan { +#include "common/types.h" +#include "shader_recompiler/backend/bindings.h" +#include "shader_recompiler/info.h" -class Instance; +namespace Shader { struct BufferSpecialization { u16 stride : 14; @@ -25,43 +19,38 @@ struct BufferSpecialization { }; struct TextureBufferSpecialization { - bool is_integer; + bool is_integer = false; auto operator<=>(const TextureBufferSpecialization&) const = default; }; struct ImageSpecialization { - AmdGpu::ImageType type; - bool is_integer; + AmdGpu::ImageType type = AmdGpu::ImageType::Color2D; + bool is_integer = false; auto operator<=>(const ImageSpecialization&) const = default; }; +/** + * Alongside runtime information, this structure also checks bound resources + * for compatibility. Can be used as a key for storing shader permutations. + * Is separate from runtime information, because resource layout can only be deduced + * after the first compilation of a module. + */ struct StageSpecialization { - static constexpr size_t MaxStageResources = 32; + static constexpr size_t MaxStageResources = 64; const Shader::Info* info; + RuntimeInfo runtime_info; std::bitset bitset{}; boost::container::small_vector buffers; boost::container::small_vector tex_buffers; - boost::container::small_vector images; - u32 start_binding{}; + boost::container::small_vector images; + Backend::Bindings start{}; - void ForEachSharp(u32& binding, auto& spec_list, auto& desc_list, auto&& func) { - for (const auto& desc : desc_list) { - auto& spec = spec_list.emplace_back(); - const auto sharp = desc.GetSharp(*info); - if (!sharp) { - binding++; - continue; - } - bitset.set(binding++); - func(spec, desc, sharp); - } - } - - StageSpecialization(const Shader::Info& info_, u32 start_binding_) - : info{&info_}, start_binding{start_binding_} { + explicit StageSpecialization(const Shader::Info& info_, RuntimeInfo runtime_info_, + Backend::Bindings start_) + : info{&info_}, runtime_info{runtime_info_}, start{start_} { u32 binding{}; ForEachSharp(binding, buffers, info->buffers, [](auto& spec, const auto& desc, AmdGpu::Buffer sharp) { @@ -74,13 +63,30 @@ struct StageSpecialization { }); ForEachSharp(binding, images, info->images, [](auto& spec, const auto& desc, AmdGpu::Image sharp) { - spec.type = sharp.GetType(); + spec.type = sharp.IsPartialCubemap() ? AmdGpu::ImageType::Color2DArray + : sharp.GetType(); spec.is_integer = AmdGpu::IsInteger(sharp.GetNumberFmt()); }); } + void ForEachSharp(u32& binding, auto& spec_list, auto& desc_list, auto&& func) { + for (const auto& desc : desc_list) { + auto& spec = spec_list.emplace_back(); + const auto sharp = desc.GetSharp(*info); + if (!sharp) { + binding++; + continue; + } + bitset.set(binding++); + func(spec, desc, sharp); + } + } + bool operator==(const StageSpecialization& other) const { - if (start_binding != other.start_binding) { + if (start != other.start) { + return false; + } + if (runtime_info != other.runtime_info) { return false; } u32 binding{}; @@ -103,54 +109,4 @@ struct StageSpecialization { } }; -struct Program { - struct Module { - vk::ShaderModule module; - StageSpecialization spec; - }; - - Shader::Info info; - boost::container::small_vector modules; - - explicit Program(const Shader::Info& info_) : info{info_} {} -}; - -struct GuestProgram { - Shader::Stage stage; - std::span user_data; - std::span code; - u64 hash; - - explicit GuestProgram(const auto* pgm, Shader::Stage stage_) - : stage{stage_}, user_data{pgm->user_data}, code{pgm->Code()} { - const auto* bininfo = AmdGpu::Liverpool::GetBinaryInfo(*pgm); - hash = bininfo->shader_hash; - } -}; - -class ShaderCache { -public: - explicit ShaderCache(const Instance& instance, AmdGpu::Liverpool* liverpool); - ~ShaderCache() = default; - - std::tuple GetProgram(const GuestProgram& pgm, - u32& binding); - -private: - void DumpShader(std::span code, u64 hash, Shader::Stage stage, size_t perm_idx, - std::string_view ext); - vk::ShaderModule CompileModule(Shader::Info& info, std::span code, size_t perm_idx, - u32& binding); - Program* CreateProgram(const GuestProgram& pgm, u32& binding); - -private: - const Instance& instance; - AmdGpu::Liverpool* liverpool; - Shader::Profile profile{}; - tsl::robin_map program_cache; - Common::ObjectPool inst_pool; - Common::ObjectPool block_pool; - Common::ObjectPool program_pool; -}; - -} // namespace Vulkan +} // namespace Shader diff --git a/src/video_core/amdgpu/liverpool.cpp b/src/video_core/amdgpu/liverpool.cpp index 1889ef8ae7..b8e2ac9880 100644 --- a/src/video_core/amdgpu/liverpool.cpp +++ b/src/video_core/amdgpu/liverpool.cpp @@ -20,6 +20,20 @@ static const char* acb_task_name{"ACB_TASK"}; std::array Liverpool::ConstantEngine::constants_heap; +static std::span NextPacket(std::span span, size_t offset) { + if (offset > span.size()) { + LOG_ERROR( + Lib_GnmDriver, + ": packet length exceeds remaining submission size. Packet dword count={}, remaining " + "submission dwords={}", + offset, span.size()); + // Return empty subspan so check for next packet bails out + return {}; + } + + return span.subspan(offset); +} + Liverpool::Liverpool() { process_thread = std::jthread{std::bind_front(&Liverpool::Process, this)}; } @@ -150,7 +164,7 @@ Liverpool::Task Liverpool::ProcessCeUpdate(std::span ccb) { UNREACHABLE_MSG("Unknown PM4 type 3 opcode {:#x} with count {}", static_cast(opcode), count); } - ccb = ccb.subspan(header->type3.NumWords() + 1); + ccb = NextPacket(ccb, header->type3.NumWords() + 1); } TracyFiberLeave; @@ -184,7 +198,7 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::spantype3.NumWords(); @@ -207,11 +221,15 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::spanheader.count.Value() * 2; const std::string_view label{reinterpret_cast(&nop->data_block[1]), marker_sz}; - rasterizer->ScopeMarkerBegin(label); + if (rasterizer) { + rasterizer->ScopeMarkerBegin(label); + } break; } case PM4CmdNop::PayloadType::DebugMarkerPop: { - rasterizer->ScopeMarkerEnd(); + if (rasterizer) { + rasterizer->ScopeMarkerEnd(); + } break; } default: @@ -333,7 +351,6 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); rasterizer->ScopeMarkerBegin(fmt::format("dcb:{}:DrawIndex2", cmd_address)); - rasterizer->Breadcrumb(u64(cmd_address)); rasterizer->Draw(true); rasterizer->ScopeMarkerEnd(); } @@ -349,7 +366,6 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); rasterizer->ScopeMarkerBegin( fmt::format("dcb:{}:DrawIndexOffset2", cmd_address)); - rasterizer->Breadcrumb(u64(cmd_address)); rasterizer->Draw(true, draw_index_off->index_offset); rasterizer->ScopeMarkerEnd(); } @@ -362,12 +378,39 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); rasterizer->ScopeMarkerBegin(fmt::format("dcb:{}:DrawIndexAuto", cmd_address)); - rasterizer->Breadcrumb(u64(cmd_address)); rasterizer->Draw(false); rasterizer->ScopeMarkerEnd(); } break; } + case PM4ItOpcode::DrawIndirect: { + const auto* draw_indirect = reinterpret_cast(header); + const auto offset = draw_indirect->data_offset; + const auto ib_address = mapped_queues[GfxQueueId].indirect_args_addr; + const auto size = sizeof(PM4CmdDrawIndirect::DrawInstancedArgs); + if (rasterizer) { + const auto cmd_address = reinterpret_cast(header); + rasterizer->ScopeMarkerBegin(fmt::format("dcb:{}:DrawIndirect", cmd_address)); + rasterizer->DrawIndirect(false, ib_address, offset, size); + rasterizer->ScopeMarkerEnd(); + } + break; + } + case PM4ItOpcode::DrawIndexIndirect: { + const auto* draw_index_indirect = + reinterpret_cast(header); + const auto offset = draw_index_indirect->data_offset; + const auto ib_address = mapped_queues[GfxQueueId].indirect_args_addr; + const auto size = sizeof(PM4CmdDrawIndexIndirect::DrawIndexInstancedArgs); + if (rasterizer) { + const auto cmd_address = reinterpret_cast(header); + rasterizer->ScopeMarkerBegin( + fmt::format("dcb:{}:DrawIndexIndirect", cmd_address)); + rasterizer->DrawIndirect(true, ib_address, offset, size); + rasterizer->ScopeMarkerEnd(); + } + break; + } case PM4ItOpcode::DispatchDirect: { const auto* dispatch_direct = reinterpret_cast(header); regs.cs_program.dim_x = dispatch_direct->dim_x; @@ -377,7 +420,6 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); rasterizer->ScopeMarkerBegin(fmt::format("dcb:{}:Dispatch", cmd_address)); - rasterizer->Breadcrumb(u64(cmd_address)); rasterizer->DispatchDirect(); rasterizer->ScopeMarkerEnd(); } @@ -393,7 +435,6 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); rasterizer->ScopeMarkerBegin( fmt::format("dcb:{}:DispatchIndirect", cmd_address)); - rasterizer->Breadcrumb(u64(cmd_address)); rasterizer->DispatchIndirect(ib_address, offset, size); rasterizer->ScopeMarkerEnd(); } @@ -428,6 +469,14 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); event_eos->SignalFence(); + if (event_eos->command == PM4CmdEventWriteEos::Command::GdsStore) { + ASSERT(event_eos->size == 1); + if (rasterizer) { + rasterizer->Finish(); + const u32 value = rasterizer->ReadDataFromGds(event_eos->gds_index); + *event_eos->Address() = value; + } + } break; } case PM4ItOpcode::EventWriteEop: { @@ -437,6 +486,9 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); + if (dma_data->src_sel == DmaDataSrc::Data && dma_data->dst_sel == DmaDataDst::Gds) { + rasterizer->InlineDataToGds(dma_data->dst_addr_lo, dma_data->data); + } break; } case PM4ItOpcode::WriteData: { @@ -491,13 +543,16 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::spanCpSync(); + } break; } default: UNREACHABLE_MSG("Unknown PM4 type 3 opcode {:#x} with count {}", static_cast(opcode), count); } - dcb = dcb.subspan(header->type3.NumWords() + 1); + dcb = NextPacket(dcb, header->type3.NumWords() + 1); break; } } @@ -560,7 +615,6 @@ Liverpool::Task Liverpool::ProcessCompute(std::span acb, int vqid) { if (rasterizer && (regs.cs_program.dispatch_initiator & 1)) { const auto cmd_address = reinterpret_cast(header); rasterizer->ScopeMarkerBegin(fmt::format("acb[{}]:{}:Dispatch", vqid, cmd_address)); - rasterizer->Breadcrumb(u64(cmd_address)); rasterizer->DispatchDirect(); rasterizer->ScopeMarkerEnd(); } @@ -599,7 +653,7 @@ Liverpool::Task Liverpool::ProcessCompute(std::span acb, int vqid) { static_cast(opcode), count); } - acb = acb.subspan(header->type3.NumWords() + 1); + acb = NextPacket(acb, header->type3.NumWords() + 1); } TracyFiberLeave; @@ -609,6 +663,12 @@ std::pair, std::span> Liverpool::CopyCmdBuffers( std::span dcb, std::span ccb) { auto& queue = mapped_queues[GfxQueueId]; + // std::vector resize can invalidate spans for commands in flight + ASSERT_MSG(queue.dcb_buffer.capacity() >= queue.dcb_buffer_offset + dcb.size(), + "dcb copy buffer out of reserved space"); + ASSERT_MSG(queue.ccb_buffer.capacity() >= queue.ccb_buffer_offset + ccb.size(), + "ccb copy buffer out of reserved space"); + queue.dcb_buffer.resize( std::max(queue.dcb_buffer.size(), queue.dcb_buffer_offset + dcb.size())); queue.ccb_buffer.resize( diff --git a/src/video_core/amdgpu/liverpool.h b/src/video_core/amdgpu/liverpool.h index 7f262e1f44..411b25ed16 100644 --- a/src/video_core/amdgpu/liverpool.h +++ b/src/video_core/amdgpu/liverpool.h @@ -18,6 +18,7 @@ #include "common/polyfill_thread.h" #include "common/types.h" #include "common/unique_function.h" +#include "shader_recompiler/params.h" #include "video_core/amdgpu/pixel_format.h" #include "video_core/amdgpu/resource.h" @@ -171,6 +172,15 @@ struct Liverpool { return bininfo; } + static constexpr Shader::ShaderParams GetParams(const auto& sh) { + auto* bininfo = GetBinaryInfo(sh); + return { + .user_data = sh.user_data, + .code = sh.Code(), + .hash = bininfo->shader_hash, + }; + } + union PsInputControl { u32 raw; BitField<0, 5, u32> input_offset; @@ -463,6 +473,11 @@ struct Liverpool { CullMode CullingMode() const { return static_cast(cull_front | cull_back << 1); } + + bool NeedsBias() const { + return enable_polygon_offset_back || enable_polygon_offset_front || + enable_polygon_offset_para; + } }; union VsOutputConfig { @@ -496,6 +511,11 @@ struct Liverpool { u32 GetMask(int buf_id) const { return (raw >> (buf_id * 4)) & 0xfu; } + + void SetMask(int buf_id, u32 mask) { + raw &= ~(0xf << (buf_id * 4)); + raw |= (mask << (buf_id * 4)); + } }; struct IndexBufferBase { @@ -1078,6 +1098,15 @@ struct Liverpool { submit_cv.notify_one(); } + void reserveCopyBufferSpace() { + GpuQueue& gfx_queue = mapped_queues[GfxQueueId]; + std::scoped_lock lk(gfx_queue.m_access); + + constexpr size_t GfxReservedSize = 2_MB >> 2; + gfx_queue.ccb_buffer.reserve(GfxReservedSize); + gfx_queue.dcb_buffer.reserve(GfxReservedSize); + } + private: struct Task { struct promise_type { diff --git a/src/video_core/amdgpu/pm4_cmds.h b/src/video_core/amdgpu/pm4_cmds.h index 50e4c93a1e..5d9c0f9eee 100644 --- a/src/video_core/amdgpu/pm4_cmds.h +++ b/src/video_core/amdgpu/pm4_cmds.h @@ -187,6 +187,11 @@ struct PM4CmdSetData { BitField<28, 4, u32> index; ///< Index for UCONFIG/CONTEXT on CI+ ///< Program to zero for other opcodes and on SI }; + u32 data[0]; + + [[nodiscard]] u32 Size() const { + return header.count << 2u; + } template static constexpr u32* SetContextReg(u32* cmdbuf, Args... data) { @@ -253,20 +258,6 @@ struct PM4CmdDrawIndexAuto { u32 draw_initiator; }; -struct PM4CmdDrawIndirect { - PM4Type3Header header; ///< header - u32 data_offset; ///< DWORD aligned offset - union { - u32 dw2; - BitField<0, 16, u32> base_vtx_loc; ///< base vertex location - }; - union { - u32 dw3; - BitField<0, 16, u32> start_inst_loc; ///< start instance location - }; - u32 draw_initiator; ///< Draw Initiator Register -}; - enum class DataSelect : u32 { None = 0, Data32Low = 1, @@ -364,6 +355,27 @@ struct PM4CmdEventWriteEop { } }; +struct PM4CmdAcquireMem { + PM4Type3Header header; + u32 cp_coher_cntl; + u32 cp_coher_size_lo; + u32 cp_coher_size_hi; + u32 cp_coher_base_lo; + u32 cp_coher_base_hi; + u32 poll_interval; +}; + +enum class DmaDataDst : u32 { + Memory = 0, + Gds = 1, +}; + +enum class DmaDataSrc : u32 { + Memory = 0, + Gds = 1, + Data = 2, +}; + struct PM4DmaData { PM4Type3Header header; union { @@ -371,11 +383,11 @@ struct PM4DmaData { BitField<12, 1, u32> src_atc; BitField<13, 2, u32> src_cache_policy; BitField<15, 1, u32> src_volatile; - BitField<20, 2, u32> dst_sel; + BitField<20, 2, DmaDataDst> dst_sel; BitField<24, 1, u32> dst_atc; BitField<25, 2, u32> dst_cache_policy; BitField<27, 1, u32> dst_volatile; - BitField<29, 2, u32> src_sel; + BitField<29, 2, DmaDataSrc> src_sel; BitField<31, 1, u32> cp_sync; }; union { @@ -470,6 +482,10 @@ struct PM4CmdWriteData { }; u32 data[0]; + u32 Size() const { + return (header.count.Value() - 2) * 4; + } + template void Address(T addr) { addr64 = static_cast(addr); @@ -484,7 +500,7 @@ struct PM4CmdWriteData { struct PM4CmdEventWriteEos { enum class Command : u32 { GdsStore = 1u, - SingalFence = 2u, + SignalFence = 2u, }; PM4Type3Header header; @@ -516,13 +532,17 @@ struct PM4CmdEventWriteEos { } void SignalFence() const { - switch (command.Value()) { - case Command::SingalFence: { + const auto cmd = command.Value(); + switch (cmd) { + case Command::SignalFence: { *Address() = DataDWord(); break; } + case Command::GdsStore: { + break; + } default: { - UNREACHABLE(); + UNREACHABLE_MSG("Unknown command {}", u32(cmd)); } } } @@ -740,4 +760,51 @@ struct PM4CmdDispatchIndirect { u32 dispatch_initiator; ///< Dispatch Initiator Register }; +struct PM4CmdDrawIndirect { + struct DrawInstancedArgs { + u32 vertex_count_per_instance; + u32 instance_count; + u32 start_vertex_location; + u32 start_instance_location; + }; + + PM4Type3Header header; ///< header + u32 data_offset; ///< Byte aligned offset where the required data structure starts + union { + u32 dw2; + BitField<0, 16, u32> base_vtx_loc; ///< Offset where the CP will write the + ///< BaseVertexLocation it fetched from memory + }; + union { + u32 dw3; + BitField<0, 16, u32> start_inst_loc; ///< Offset where the CP will write the + ///< StartInstanceLocation it fetched from memory + }; + u32 draw_initiator; ///< Draw Initiator Register +}; + +struct PM4CmdDrawIndexIndirect { + struct DrawIndexInstancedArgs { + u32 index_count_per_instance; + u32 instance_count; + u32 start_index_location; + u32 base_vertex_location; + u32 start_instance_location; + }; + + PM4Type3Header header; ///< header + u32 data_offset; ///< Byte aligned offset where the required data structure starts + union { + u32 dw2; + BitField<0, 16, u32> base_vtx_loc; ///< Offset where the CP will write the + ///< BaseVertexLocation it fetched from memory + }; + union { // NOTE: this one is undocumented in AMD spec, but Gnm driver writes this field + u32 dw3; + BitField<0, 16, u32> start_inst_loc; ///< Offset where the CP will write the + ///< StartInstanceLocation it fetched from memory + }; + u32 draw_initiator; ///< Draw Initiator Register +}; + } // namespace AmdGpu diff --git a/src/video_core/amdgpu/pm4_opcodes.h b/src/video_core/amdgpu/pm4_opcodes.h index 83c1deaa4e..4b853138b2 100644 --- a/src/video_core/amdgpu/pm4_opcodes.h +++ b/src/video_core/amdgpu/pm4_opcodes.h @@ -32,6 +32,7 @@ enum class PM4ItOpcode : u32 { NumInstances = 0x2F, DrawIndexMultiAuto = 0x30, IndirectBufferConst = 0x33, + StrmoutBufferUpdate = 0x34, DrawIndexOffset2 = 0x35, WriteData = 0x37, DrawIndexIndirectMulti = 0x38, @@ -52,6 +53,7 @@ enum class PM4ItOpcode : u32 { DmaData = 0x50, ContextRegRmw = 0x51, AcquireMem = 0x58, + Rewind = 0x59, LoadShReg = 0x5F, LoadConfigReg = 0x60, LoadContextReg = 0x61, @@ -60,7 +62,9 @@ enum class PM4ItOpcode : u32 { SetContextRegIndirect = 0x73, SetShReg = 0x76, SetShRegOffset = 0x77, + SetQueueReg = 0x78, SetUconfigReg = 0x79, + LoadConstRam = 0x80, WriteConstRam = 0x81, DumpConstRam = 0x83, IncrementCeCounter = 0x84, diff --git a/src/video_core/amdgpu/resource.h b/src/video_core/amdgpu/resource.h index b85a3788b1..fc572a04b9 100644 --- a/src/video_core/amdgpu/resource.h +++ b/src/video_core/amdgpu/resource.h @@ -66,7 +66,7 @@ struct Buffer { } u32 GetStride() const noexcept { - return stride == 0 ? 1U : stride; + return stride; } u32 NumDwords() const noexcept { @@ -74,7 +74,7 @@ struct Buffer { } u32 GetSize() const noexcept { - return GetStride() * num_records; + return stride == 0 ? num_records : (stride * num_records); } }; static_assert(sizeof(Buffer) == 16); // 128bits @@ -176,6 +176,18 @@ struct Image { u64 lod_hw_cnt_en : 1; u64 : 43; + static constexpr Image Null() { + Image image{}; + image.data_format = u64(DataFormat::Format8_8_8_8); + image.dst_sel_x = 4; + image.dst_sel_y = 5; + image.dst_sel_z = 6; + image.dst_sel_w = 7; + image.tiling_index = u64(TilingMode::Texture_MicroTiled); + image.type = u64(ImageType::Color2D); + return image; + } + bool Valid() const { return (type & 0x8u) != 0; } @@ -226,10 +238,15 @@ struct Image { return pitch + 1; } - u32 NumLayers() const { + u32 NumLayers(bool is_array) const { u32 slices = GetType() == ImageType::Color3D ? 1 : depth + 1; if (GetType() == ImageType::Cube) { - slices *= 6; + if (is_array) { + slices = last_array + 1; + ASSERT(slices % 6 == 0); + } else { + slices = 6; + } } if (pow2pad) { slices = std::bit_ceil(slices); @@ -270,6 +287,11 @@ struct Image { bool IsTiled() const { return GetTilingMode() != TilingMode::Display_Linear; } + + bool IsPartialCubemap() const { + const auto viewed_slice = last_array - base_array + 1; + return GetType() == ImageType::Cube && viewed_slice < 6; + } }; static_assert(sizeof(Image) == 32); // 256bits diff --git a/src/video_core/buffer_cache/buffer.cpp b/src/video_core/buffer_cache/buffer.cpp index 372b6f7454..7029580344 100644 --- a/src/video_core/buffer_cache/buffer.cpp +++ b/src/video_core/buffer_cache/buffer.cpp @@ -9,7 +9,10 @@ #include "video_core/renderer_vulkan/vk_platform.h" #include "video_core/renderer_vulkan/vk_scheduler.h" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnullability-completeness" #include +#pragma GCC diagnostic pop namespace VideoCore { @@ -88,10 +91,10 @@ void UniqueBuffer::Create(const vk::BufferCreateInfo& buffer_ci, MemoryUsage usa buffer = vk::Buffer{unsafe_buffer}; } -Buffer::Buffer(const Vulkan::Instance& instance_, MemoryUsage usage_, VAddr cpu_addr_, - vk::BufferUsageFlags flags, u64 size_bytes_) - : cpu_addr{cpu_addr_}, size_bytes{size_bytes_}, instance{&instance_}, usage{usage_}, - buffer{instance->GetDevice(), instance->GetAllocator()} { +Buffer::Buffer(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, MemoryUsage usage_, + VAddr cpu_addr_, vk::BufferUsageFlags flags, u64 size_bytes_) + : cpu_addr{cpu_addr_}, size_bytes{size_bytes_}, instance{&instance_}, scheduler{&scheduler_}, + usage{usage_}, buffer{instance->GetDevice(), instance->GetAllocator()} { // Create buffer object. const vk::BufferCreateInfo buffer_ci = { .size = size_bytes, @@ -114,13 +117,6 @@ Buffer::Buffer(const Vulkan::Instance& instance_, MemoryUsage usage_, VAddr cpu_ vk::BufferView Buffer::View(u32 offset, u32 size, bool is_written, AmdGpu::DataFormat dfmt, AmdGpu::NumberFormat nfmt) { - const auto it{std::ranges::find_if(views, [=](const BufferView& view) { - return offset == view.offset && size == view.size && is_written == view.is_written && - dfmt == view.dfmt && nfmt == view.nfmt; - })}; - if (it != views.end()) { - return *it->handle; - } const vk::BufferUsageFlags2CreateInfoKHR usage_flags = { .usage = is_written ? vk::BufferUsageFlagBits2KHR::eStorageTexelBuffer : vk::BufferUsageFlagBits2KHR::eUniformTexelBuffer, @@ -132,23 +128,18 @@ vk::BufferView Buffer::View(u32 offset, u32 size, bool is_written, AmdGpu::DataF .offset = offset, .range = size, }; - views.push_back({ - .offset = offset, - .size = size, - .is_written = is_written, - .dfmt = dfmt, - .nfmt = nfmt, - .handle = instance->GetDevice().createBufferViewUnique(view_ci), - }); - return *views.back().handle; + const auto view = instance->GetDevice().createBufferView(view_ci); + scheduler->DeferOperation( + [view, device = instance->GetDevice()] { device.destroyBufferView(view); }); + return view; } constexpr u64 WATCHES_INITIAL_RESERVE = 0x4000; constexpr u64 WATCHES_RESERVE_CHUNK = 0x1000; -StreamBuffer::StreamBuffer(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler_, +StreamBuffer::StreamBuffer(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler, MemoryUsage usage, u64 size_bytes) - : Buffer{instance, usage, 0, AllFlags, size_bytes}, scheduler{scheduler_} { + : Buffer{instance, scheduler, usage, 0, AllFlags, size_bytes} { ReserveWatches(current_watches, WATCHES_INITIAL_RESERVE); ReserveWatches(previous_watches, WATCHES_INITIAL_RESERVE); const auto device = instance.GetDevice(); @@ -203,7 +194,7 @@ void StreamBuffer::Commit() { auto& watch = current_watches[current_watch_cursor++]; watch.upper_bound = offset; - watch.tick = scheduler.CurrentTick(); + watch.tick = scheduler->CurrentTick(); } void StreamBuffer::ReserveWatches(std::vector& watches, std::size_t grow_size) { @@ -217,7 +208,7 @@ void StreamBuffer::WaitPendingOperations(u64 requested_upper_bound) { while (requested_upper_bound > wait_bound && wait_cursor < *invalidation_mark) { auto& watch = previous_watches[wait_cursor]; wait_bound = watch.upper_bound; - scheduler.Wait(watch.tick); + scheduler->Wait(watch.tick); ++wait_cursor; } } diff --git a/src/video_core/buffer_cache/buffer.h b/src/video_core/buffer_cache/buffer.h index 26d48eaefe..403d4ed85c 100644 --- a/src/video_core/buffer_cache/buffer.h +++ b/src/video_core/buffer_cache/buffer.h @@ -73,8 +73,9 @@ struct UniqueBuffer { class Buffer { public: - explicit Buffer(const Vulkan::Instance& instance, MemoryUsage usage, VAddr cpu_addr_, - vk::BufferUsageFlags flags, u64 size_bytes_); + explicit Buffer(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler, + MemoryUsage usage, VAddr cpu_addr_, vk::BufferUsageFlags flags, + u64 size_bytes_); Buffer& operator=(const Buffer&) = delete; Buffer(const Buffer&) = delete; @@ -118,6 +119,25 @@ class Buffer { return buffer; } + std::optional GetBarrier(vk::AccessFlagBits2 dst_acess_mask, + vk::PipelineStageFlagBits2 dst_stage) { + if (dst_acess_mask == access_mask && stage == dst_stage) { + return {}; + } + + auto barrier = vk::BufferMemoryBarrier2{ + .srcStageMask = stage, + .srcAccessMask = access_mask, + .dstStageMask = dst_stage, + .dstAccessMask = dst_acess_mask, + .buffer = buffer.buffer, + .size = size_bytes, + }; + access_mask = dst_acess_mask; + stage = dst_stage; + return barrier; + } + public: VAddr cpu_addr = 0; bool is_picked{}; @@ -125,18 +145,12 @@ class Buffer { int stream_score = 0; size_t size_bytes = 0; std::span mapped_data; - const Vulkan::Instance* instance{}; + const Vulkan::Instance* instance; + Vulkan::Scheduler* scheduler; MemoryUsage usage; UniqueBuffer buffer; - struct BufferView { - u32 offset; - u32 size; - bool is_written; - AmdGpu::DataFormat dfmt; - AmdGpu::NumberFormat nfmt; - vk::UniqueBufferView handle; - }; - std::vector views; + vk::AccessFlagBits2 access_mask{vk::AccessFlagBits2::eNone}; + vk::PipelineStageFlagBits2 stage{vk::PipelineStageFlagBits2::eNone}; }; class StreamBuffer : public Buffer { @@ -175,7 +189,6 @@ class StreamBuffer : public Buffer { void WaitPendingOperations(u64 requested_upper_bound); private: - Vulkan::Scheduler& scheduler; u64 offset{}; u64 mapped_size{}; std::vector current_watches; diff --git a/src/video_core/buffer_cache/buffer_cache.cpp b/src/video_core/buffer_cache/buffer_cache.cpp index 0151f2c134..caffee6ba0 100644 --- a/src/video_core/buffer_cache/buffer_cache.cpp +++ b/src/video_core/buffer_cache/buffer_cache.cpp @@ -4,26 +4,38 @@ #include #include "common/alignment.h" #include "common/scope_exit.h" -#include "shader_recompiler/runtime_info.h" +#include "shader_recompiler/info.h" #include "video_core/amdgpu/liverpool.h" #include "video_core/buffer_cache/buffer_cache.h" #include "video_core/renderer_vulkan/liverpool_to_vk.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_scheduler.h" +#include "video_core/texture_cache/texture_cache.h" namespace VideoCore { -static constexpr size_t StagingBufferSize = 512_MB; +static constexpr size_t NumVertexBuffers = 32; +static constexpr size_t GdsBufferSize = 64_KB; +static constexpr size_t StagingBufferSize = 1_GB; static constexpr size_t UboStreamBufferSize = 64_MB; BufferCache::BufferCache(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, - const AmdGpu::Liverpool* liverpool_, PageManager& tracker_) - : instance{instance_}, scheduler{scheduler_}, liverpool{liverpool_}, tracker{tracker_}, + const AmdGpu::Liverpool* liverpool_, TextureCache& texture_cache_, + PageManager& tracker_) + : instance{instance_}, scheduler{scheduler_}, liverpool{liverpool_}, + texture_cache{texture_cache_}, tracker{tracker_}, staging_buffer{instance, scheduler, MemoryUsage::Upload, StagingBufferSize}, stream_buffer{instance, scheduler, MemoryUsage::Stream, UboStreamBufferSize}, + gds_buffer{instance, scheduler, MemoryUsage::Stream, 0, AllFlags, GdsBufferSize}, memory_tracker{&tracker} { + Vulkan::SetObjectName(instance.GetDevice(), gds_buffer.Handle(), "GDS Buffer"); + // Ensure the first slot is used for the null buffer - void(slot_buffers.insert(instance, MemoryUsage::DeviceLocal, 0, ReadFlags, 1)); + const auto null_id = + slot_buffers.insert(instance, scheduler, MemoryUsage::DeviceLocal, 0, ReadFlags, 1); + ASSERT(null_id.index == 0); + const vk::Buffer& null_buffer = slot_buffers[null_id].buffer; + Vulkan::SetObjectName(instance.GetDevice(), null_buffer, "Null Buffer"); } BufferCache::~BufferCache() = default; @@ -100,9 +112,9 @@ bool BufferCache::BindVertexBuffers(const Shader::Info& vs_info) { return false; } - std::array host_buffers; - std::array host_offsets; - boost::container::static_vector guest_buffers; + std::array host_buffers; + std::array host_offsets; + boost::container::static_vector guest_buffers; struct BufferRange { VAddr base_address; @@ -117,7 +129,7 @@ bool BufferCache::BindVertexBuffers(const Shader::Info& vs_info) { // Calculate buffers memory overlaps bool has_step_rate = false; - boost::container::static_vector ranges{}; + boost::container::static_vector ranges{}; for (const auto& input : vs_info.vs_inputs) { if (input.instance_step_rate == Shader::Info::VsInput::InstanceIdType::OverStepRate0 || input.instance_step_rate == Shader::Info::VsInput::InstanceIdType::OverStepRate1) { @@ -152,7 +164,7 @@ bool BufferCache::BindVertexBuffers(const Shader::Info& vs_info) { return lhv.base_address < rhv.base_address; }); - boost::container::static_vector ranges_merged{ranges[0]}; + boost::container::static_vector ranges_merged{ranges[0]}; for (auto range : ranges) { auto& prev_range = ranges_merged.back(); if (prev_range.end_address < range.base_address) { @@ -228,12 +240,32 @@ u32 BufferCache::BindIndexBuffer(bool& is_indexed, u32 index_offset) { return regs.num_indices; } +void BufferCache::InlineDataToGds(u32 gds_offset, u32 value) { + ASSERT_MSG(gds_offset % 4 == 0, "GDS offset must be dword aligned"); + scheduler.EndRendering(); + const auto cmdbuf = scheduler.CommandBuffer(); + const vk::BufferMemoryBarrier2 buf_barrier = { + .srcStageMask = vk::PipelineStageFlagBits2::eTransfer, + .srcAccessMask = vk::AccessFlagBits2::eTransferWrite, + .dstStageMask = vk::PipelineStageFlagBits2::eAllCommands, + .dstAccessMask = vk::AccessFlagBits2::eMemoryRead, + .buffer = gds_buffer.Handle(), + .offset = gds_offset, + .size = sizeof(u32), + }; + cmdbuf.pipelineBarrier2(vk::DependencyInfo{ + .dependencyFlags = vk::DependencyFlagBits::eByRegion, + .bufferMemoryBarrierCount = 1, + .pBufferMemoryBarriers = &buf_barrier, + }); + cmdbuf.updateBuffer(gds_buffer.Handle(), gds_offset, sizeof(u32), &value); +} + std::pair BufferCache::ObtainBuffer(VAddr device_addr, u32 size, bool is_written, bool is_texel_buffer) { - std::scoped_lock lk{mutex}; static constexpr u64 StreamThreshold = CACHING_PAGESIZE; const bool is_gpu_dirty = memory_tracker.IsRegionGpuModified(device_addr, size); - if (!is_written && !is_texel_buffer && size <= StreamThreshold && !is_gpu_dirty) { + if (!is_written && size <= StreamThreshold && !is_gpu_dirty) { // For small uniform buffers that have not been modified by gpu // use device local stream buffer to reduce renderpass breaks. const u64 offset = stream_buffer.Copy(device_addr, size, instance.UniformMinAlignment()); @@ -242,19 +274,20 @@ std::pair BufferCache::ObtainBuffer(VAddr device_addr, u32 size, b const BufferId buffer_id = FindBuffer(device_addr, size); Buffer& buffer = slot_buffers[buffer_id]; - SynchronizeBuffer(buffer, device_addr, size); + SynchronizeBuffer(buffer, device_addr, size, is_texel_buffer); if (is_written) { memory_tracker.MarkRegionAsGpuModified(device_addr, size); } return {&buffer, buffer.Offset(device_addr)}; } -std::pair BufferCache::ObtainTempBuffer(VAddr gpu_addr, u32 size) { +std::pair BufferCache::ObtainTempBuffer(VAddr gpu_addr, u32 size) { const u64 page = gpu_addr >> CACHING_PAGEBITS; const BufferId buffer_id = page_table[page]; if (buffer_id) { - const Buffer& buffer = slot_buffers[buffer_id]; + Buffer& buffer = slot_buffers[buffer_id]; if (buffer.IsInBounds(gpu_addr, size)) { + SynchronizeBuffer(buffer, gpu_addr, size, false); return {&buffer, buffer.Offset(gpu_addr)}; } } @@ -421,8 +454,8 @@ BufferId BufferCache::CreateBuffer(VAddr device_addr, u32 wanted_size) { wanted_size = static_cast(device_addr_end - device_addr); const OverlapResult overlap = ResolveOverlaps(device_addr, wanted_size); const u32 size = static_cast(overlap.end - overlap.begin); - const BufferId new_buffer_id = - slot_buffers.insert(instance, MemoryUsage::DeviceLocal, overlap.begin, AllFlags, size); + const BufferId new_buffer_id = slot_buffers.insert( + instance, scheduler, MemoryUsage::DeviceLocal, overlap.begin, AllFlags, size); auto& new_buffer = slot_buffers[new_buffer_id]; const size_t size_bytes = new_buffer.SizeBytes(); const auto cmdbuf = scheduler.CommandBuffer(); @@ -460,7 +493,9 @@ void BufferCache::ChangeRegister(BufferId buffer_id) { } } -bool BufferCache::SynchronizeBuffer(Buffer& buffer, VAddr device_addr, u32 size) { +void BufferCache::SynchronizeBuffer(Buffer& buffer, VAddr device_addr, u32 size, + bool is_texel_buffer) { + std::scoped_lock lk{mutex}; boost::container::small_vector copies; u64 total_size_bytes = 0; u64 largest_copy = 0; @@ -479,8 +514,13 @@ bool BufferCache::SynchronizeBuffer(Buffer& buffer, VAddr device_addr, u32 size) // Prevent uploading to gpu modified regions. // gpu_modified_ranges.ForEachNotInRange(device_addr_out, range_size, add_copy); }); + SCOPE_EXIT { + if (is_texel_buffer) { + SynchronizeBufferFromImage(buffer, device_addr, size); + } + }; if (total_size_bytes == 0) { - return true; + return; } vk::Buffer src_buffer = staging_buffer.Handle(); if (total_size_bytes < StagingBufferSize) { @@ -496,7 +536,11 @@ bool BufferCache::SynchronizeBuffer(Buffer& buffer, VAddr device_addr, u32 size) } else { // For large one time transfers use a temporary host buffer. // RenderDoc can lag quite a bit if the stream buffer is too large. - Buffer temp_buffer{instance, MemoryUsage::Upload, 0, vk::BufferUsageFlagBits::eTransferSrc, + Buffer temp_buffer{instance, + scheduler, + MemoryUsage::Upload, + 0, + vk::BufferUsageFlagBits::eTransferSrc, total_size_bytes}; src_buffer = temp_buffer.Handle(); u8* const staging = temp_buffer.mapped_data.data(); @@ -524,7 +568,61 @@ bool BufferCache::SynchronizeBuffer(Buffer& buffer, VAddr device_addr, u32 size) cmdbuf.pipelineBarrier(vk::PipelineStageFlagBits::eTransfer, vk::PipelineStageFlagBits::eAllCommands, vk::DependencyFlagBits::eByRegion, WRITE_BARRIER, {}, {}); - return false; +} + +bool BufferCache::SynchronizeBufferFromImage(Buffer& buffer, VAddr device_addr, u32 size) { + static constexpr FindFlags find_flags = + FindFlags::NoCreate | FindFlags::RelaxDim | FindFlags::RelaxFmt | FindFlags::RelaxSize; + ImageInfo info{}; + info.guest_address = device_addr; + info.guest_size_bytes = size; + const ImageId image_id = texture_cache.FindImage(info, find_flags); + if (!image_id) { + return false; + } + Image& image = texture_cache.GetImage(image_id); + if (False(image.flags & ImageFlagBits::GpuModified)) { + return false; + } + ASSERT_MSG(device_addr == image.info.guest_address, + "Texel buffer aliases image subresources {:x} : {:x}", device_addr, + image.info.guest_address); + boost::container::small_vector copies; + u32 offset = buffer.Offset(image.cpu_addr); + const u32 num_layers = image.info.resources.layers; + const u32 max_offset = offset + size; + for (u32 m = 0; m < image.info.resources.levels; m++) { + const u32 width = std::max(image.info.size.width >> m, 1u); + const u32 height = std::max(image.info.size.height >> m, 1u); + const u32 depth = + image.info.props.is_volume ? std::max(image.info.size.depth >> m, 1u) : 1u; + const auto& [mip_size, mip_pitch, mip_height, mip_ofs] = image.info.mips_layout[m]; + offset += mip_ofs * num_layers; + if (offset + (mip_size * num_layers) > max_offset) { + break; + } + copies.push_back({ + .bufferOffset = offset, + .bufferRowLength = static_cast(mip_pitch), + .bufferImageHeight = static_cast(mip_height), + .imageSubresource{ + .aspectMask = image.aspect_mask & ~vk::ImageAspectFlagBits::eStencil, + .mipLevel = m, + .baseArrayLayer = 0, + .layerCount = num_layers, + }, + .imageOffset = {0, 0, 0}, + .imageExtent = {width, height, depth}, + }); + } + if (!copies.empty()) { + scheduler.EndRendering(); + image.Transit(vk::ImageLayout::eTransferSrcOptimal, vk::AccessFlagBits2::eTransferRead, {}); + const auto cmdbuf = scheduler.CommandBuffer(); + cmdbuf.copyImageToBuffer(image.image, vk::ImageLayout::eTransferSrcOptimal, buffer.buffer, + copies); + } + return true; } void BufferCache::DeleteBuffer(BufferId buffer_id, bool do_not_mark) { diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index a07470b8ec..8927083cd2 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -28,7 +28,7 @@ using BufferId = Common::SlotId; static constexpr BufferId NULL_BUFFER_ID{0}; -static constexpr u32 NUM_VERTEX_BUFFERS = 32; +class TextureCache; class BufferCache { public: @@ -53,9 +53,20 @@ class BufferCache { public: explicit BufferCache(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler, - const AmdGpu::Liverpool* liverpool, PageManager& tracker); + const AmdGpu::Liverpool* liverpool, TextureCache& texture_cache, + PageManager& tracker); ~BufferCache(); + /// Returns a pointer to GDS device local buffer. + [[nodiscard]] const Buffer* GetGdsBuffer() const noexcept { + return &gds_buffer; + } + + /// Retrieves the buffer with the specified id. + [[nodiscard]] Buffer& GetBuffer(BufferId id) { + return slot_buffers[id]; + } + /// Invalidates any buffer in the logical page range. void InvalidateMemory(VAddr device_addr, u64 size); @@ -65,12 +76,15 @@ class BufferCache { /// Bind host index buffer for the current draw. u32 BindIndexBuffer(bool& is_indexed, u32 index_offset); + /// Writes a value to GDS buffer. + void InlineDataToGds(u32 gds_offset, u32 value); + /// Obtains a buffer for the specified region. [[nodiscard]] std::pair ObtainBuffer(VAddr gpu_addr, u32 size, bool is_written, bool is_texel_buffer = false); /// Obtains a temporary buffer for usage in texture cache. - [[nodiscard]] std::pair ObtainTempBuffer(VAddr gpu_addr, u32 size); + [[nodiscard]] std::pair ObtainTempBuffer(VAddr gpu_addr, u32 size); /// Return true when a region is registered on the cache [[nodiscard]] bool IsRegionRegistered(VAddr addr, size_t size); @@ -116,17 +130,21 @@ class BufferCache { template void ChangeRegister(BufferId buffer_id); - bool SynchronizeBuffer(Buffer& buffer, VAddr device_addr, u32 size); + void SynchronizeBuffer(Buffer& buffer, VAddr device_addr, u32 size, bool is_texel_buffer); + + bool SynchronizeBufferFromImage(Buffer& buffer, VAddr device_addr, u32 size); void DeleteBuffer(BufferId buffer_id, bool do_not_mark = false); const Vulkan::Instance& instance; Vulkan::Scheduler& scheduler; const AmdGpu::Liverpool* liverpool; + TextureCache& texture_cache; PageManager& tracker; StreamBuffer staging_buffer; StreamBuffer stream_buffer; - std::recursive_mutex mutex; + Buffer gds_buffer; + std::mutex mutex; Common::SlotVector slot_buffers; MemoryTracker memory_tracker; PageTable page_table; diff --git a/src/video_core/page_manager.cpp b/src/video_core/page_manager.cpp index 18b8aee218..fb09e70f2b 100644 --- a/src/video_core/page_manager.cpp +++ b/src/video_core/page_manager.cpp @@ -2,20 +2,22 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include #include "common/alignment.h" #include "common/assert.h" #include "common/error.h" +#include "common/signal_context.h" +#include "core/signals.h" #include "video_core/page_manager.h" #include "video_core/renderer_vulkan/vk_rasterizer.h" #ifndef _WIN64 -#include -#include -#include -#include #include #ifdef ENABLE_USERFAULTFD +#include #include +#include +#include #endif #else #include @@ -26,45 +28,7 @@ namespace VideoCore { constexpr size_t PAGESIZE = 4_KB; constexpr size_t PAGEBITS = 12; -#ifdef _WIN64 -struct PageManager::Impl { - Impl(Vulkan::Rasterizer* rasterizer_) { - rasterizer = rasterizer_; - - veh_handle = AddVectoredExceptionHandler(0, GuestFaultSignalHandler); - ASSERT_MSG(veh_handle, "Failed to register an exception handler"); - } - - void OnMap(VAddr address, size_t size) {} - - void OnUnmap(VAddr address, size_t size) {} - - void Protect(VAddr address, size_t size, bool allow_write) { - DWORD prot = allow_write ? PAGE_READWRITE : PAGE_READONLY; - DWORD old_prot{}; - BOOL result = VirtualProtect(std::bit_cast(address), size, prot, &old_prot); - ASSERT_MSG(result != 0, "Region protection failed"); - } - - static LONG WINAPI GuestFaultSignalHandler(EXCEPTION_POINTERS* pExp) noexcept { - const u32 ec = pExp->ExceptionRecord->ExceptionCode; - if (ec == EXCEPTION_ACCESS_VIOLATION) { - const auto info = pExp->ExceptionRecord->ExceptionInformation; - if (info[0] == 1) { // Write violation - const VAddr addr_aligned = Common::AlignDown(info[1], PAGESIZE); - rasterizer->InvalidateMemory(addr_aligned, PAGESIZE); - return EXCEPTION_CONTINUE_EXECUTION; - } /* else { - UNREACHABLE(); - }*/ - } - return EXCEPTION_CONTINUE_SEARCH; // pass further - } - - inline static Vulkan::Rasterizer* rasterizer; - void* veh_handle{}; -}; -#elif ENABLE_USERFAULTFD +#if ENABLE_USERFAULTFD struct PageManager::Impl { Impl(Vulkan::Rasterizer* rasterizer_) : rasterizer{rasterizer_} { uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK); @@ -163,52 +127,45 @@ struct PageManager::Impl { Impl(Vulkan::Rasterizer* rasterizer_) { rasterizer = rasterizer_; -#ifdef __APPLE__ - // Read-only memory write results in SIGBUS on Apple. - static constexpr int SignalType = SIGBUS; -#else - static constexpr int SignalType = SIGSEGV; -#endif - sigset_t signal_mask; - sigemptyset(&signal_mask); - sigaddset(&signal_mask, SignalType); - - using HandlerType = decltype(sigaction::sa_sigaction); - - struct sigaction guest_access_fault {}; - guest_access_fault.sa_flags = SA_SIGINFO | SA_ONSTACK; - guest_access_fault.sa_sigaction = &GuestFaultSignalHandler; - guest_access_fault.sa_mask = signal_mask; - sigaction(SignalType, &guest_access_fault, nullptr); + // Should be called first. + constexpr auto priority = std::numeric_limits::min(); + Core::Signals::Instance()->RegisterAccessViolationHandler(GuestFaultSignalHandler, + priority); } - void OnMap(VAddr address, size_t size) {} + void OnMap(VAddr address, size_t size) { + owned_ranges += boost::icl::interval::right_open(address, address + size); + } - void OnUnmap(VAddr address, size_t size) {} + void OnUnmap(VAddr address, size_t size) { + owned_ranges -= boost::icl::interval::right_open(address, address + size); + } void Protect(VAddr address, size_t size, bool allow_write) { +#ifdef _WIN32 + DWORD prot = allow_write ? PAGE_READWRITE : PAGE_READONLY; + DWORD old_prot{}; + BOOL result = VirtualProtect(std::bit_cast(address), size, prot, &old_prot); + ASSERT_MSG(result != 0, "Region protection failed"); +#else mprotect(reinterpret_cast(address), size, PROT_READ | (allow_write ? PROT_WRITE : 0)); +#endif } - static void GuestFaultSignalHandler(int sig, siginfo_t* info, void* raw_context) { - ucontext_t* ctx = reinterpret_cast(raw_context); - const VAddr address = reinterpret_cast(info->si_addr); -#ifdef __APPLE__ - const u32 err = ctx->uc_mcontext->__es.__err; -#else - const greg_t err = ctx->uc_mcontext.gregs[REG_ERR]; -#endif - if (err & 0x2) { - const VAddr addr_aligned = Common::AlignDown(address, PAGESIZE); + static bool GuestFaultSignalHandler(void* context, void* fault_address) { + const auto addr = reinterpret_cast(fault_address); + const bool is_write = Common::IsWriteError(context); + if (is_write && owned_ranges.find(addr) != owned_ranges.end()) { + const VAddr addr_aligned = Common::AlignDown(addr, PAGESIZE); rasterizer->InvalidateMemory(addr_aligned, PAGESIZE); - } else { - // Read not supported! - UNREACHABLE(); + return true; } + return false; } inline static Vulkan::Rasterizer* rasterizer; + inline static boost::icl::interval_set owned_ranges; }; #endif diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index 57593e919e..c4b779fad1 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -199,8 +199,17 @@ vk::SamplerAddressMode ClampMode(AmdGpu::ClampMode mode) { return vk::SamplerAddressMode::eMirroredRepeat; case AmdGpu::ClampMode::ClampLastTexel: return vk::SamplerAddressMode::eClampToEdge; + case AmdGpu::ClampMode::MirrorOnceHalfBorder: + case AmdGpu::ClampMode::MirrorOnceBorder: + LOG_WARNING(Render_Vulkan, "Unimplemented clamp mode {}, using closest equivalent.", + static_cast(mode)); + [[fallthrough]]; case AmdGpu::ClampMode::MirrorOnceLastTexel: return vk::SamplerAddressMode::eMirrorClampToEdge; + case AmdGpu::ClampMode::ClampHalfBorder: + LOG_WARNING(Render_Vulkan, "Unimplemented clamp mode {}, using closest equivalent.", + static_cast(mode)); + [[fallthrough]]; case AmdGpu::ClampMode::ClampBorder: return vk::SamplerAddressMode::eClampToBorder; default: @@ -312,6 +321,7 @@ std::span GetAllFormats() { vk::Format::eD32SfloatS8Uint, vk::Format::eR4G4B4A4UnormPack16, vk::Format::eR5G6B5UnormPack16, + vk::Format::eR5G5B5A1UnormPack16, vk::Format::eR8G8B8A8Srgb, vk::Format::eR8G8B8A8Uint, vk::Format::eR8G8B8A8Unorm, @@ -386,6 +396,10 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eB5G6R5UnormPack16; } + if (data_format == AmdGpu::DataFormat::Format1_5_5_5 && + num_format == AmdGpu::NumberFormat::Unorm) { + return vk::Format::eR5G5B5A1UnormPack16; + } if (data_format == AmdGpu::DataFormat::Format8 && num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eR8Unorm; } @@ -580,11 +594,10 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu vk::Format AdjustColorBufferFormat(vk::Format base_format, Liverpool::ColorBuffer::SwapMode comp_swap, bool is_vo_surface) { - ASSERT_MSG(comp_swap == Liverpool::ColorBuffer::SwapMode::Standard || - comp_swap == Liverpool::ColorBuffer::SwapMode::Alternate, - "Unsupported component swap mode {}", static_cast(comp_swap)); - const bool comp_swap_alt = comp_swap == Liverpool::ColorBuffer::SwapMode::Alternate; + const bool comp_swap_reverse = comp_swap == Liverpool::ColorBuffer::SwapMode::StandardReverse; + const bool comp_swap_alt_reverse = + comp_swap == Liverpool::ColorBuffer::SwapMode::AlternateReverse; if (comp_swap_alt) { switch (base_format) { case vk::Format::eR8G8B8A8Unorm: @@ -595,9 +608,23 @@ vk::Format AdjustColorBufferFormat(vk::Format base_format, return is_vo_surface ? vk::Format::eB8G8R8A8Unorm : vk::Format::eB8G8R8A8Srgb; case vk::Format::eB8G8R8A8Srgb: return is_vo_surface ? vk::Format::eR8G8B8A8Unorm : vk::Format::eR8G8B8A8Srgb; + case vk::Format::eA2B10G10R10UnormPack32: + return vk::Format::eA2R10G10B10UnormPack32; default: break; } + } else if (comp_swap_reverse) { + switch (base_format) { + case vk::Format::eR8G8B8A8Unorm: + return vk::Format::eA8B8G8R8UnormPack32; + case vk::Format::eR8G8B8A8Srgb: + return is_vo_surface ? vk::Format::eA8B8G8R8UnormPack32 + : vk::Format::eA8B8G8R8SrgbPack32; + default: + break; + } + } else if (comp_swap_alt_reverse) { + return base_format; } else { if (is_vo_surface && base_format == vk::Format::eR8G8B8A8Srgb) { return vk::Format::eR8G8B8A8Unorm; @@ -642,8 +669,8 @@ void EmitQuadToTriangleListIndices(u8* out_ptr, u32 num_vertices) { *out_data++ = i; *out_data++ = i + 1; *out_data++ = i + 2; - *out_data++ = i + 2; *out_data++ = i; + *out_data++ = i + 2; *out_data++ = i + 3; } } @@ -700,7 +727,7 @@ vk::ClearValue ColorBufferClearValue(const AmdGpu::Liverpool::ColorBuffer& color return {.color = color}; } -vk::SampleCountFlagBits NumSamples(u32 num_samples) { +vk::SampleCountFlagBits RawNumSamples(u32 num_samples) { switch (num_samples) { case 1: return vk::SampleCountFlagBits::e1; @@ -717,4 +744,14 @@ vk::SampleCountFlagBits NumSamples(u32 num_samples) { } } +vk::SampleCountFlagBits NumSamples(u32 num_samples, vk::SampleCountFlags supported_flags) { + vk::SampleCountFlagBits flags = RawNumSamples(num_samples); + // Half sample counts until supported, with a minimum of 1. + while (!(supported_flags & flags) && num_samples > 1) { + num_samples /= 2; + flags = RawNumSamples(num_samples); + } + return flags; +} + } // namespace Vulkan::LiverpoolToVK diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.h b/src/video_core/renderer_vulkan/liverpool_to_vk.h index 94f9073de9..f5d10d48f7 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.h +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.h @@ -4,6 +4,7 @@ #pragma once #include +#include "common/assert.h" #include "video_core/amdgpu/liverpool.h" #include "video_core/amdgpu/pixel_format.h" #include "video_core/amdgpu/resource.h" @@ -51,8 +52,17 @@ vk::Format DepthFormat(Liverpool::DepthBuffer::ZFormat z_format, vk::ClearValue ColorBufferClearValue(const AmdGpu::Liverpool::ColorBuffer& color_buffer); -vk::SampleCountFlagBits NumSamples(u32 num_samples); +vk::SampleCountFlagBits NumSamples(u32 num_samples, vk::SampleCountFlags supported_flags); void EmitQuadToTriangleListIndices(u8* out_indices, u32 num_vertices); +static inline vk::Format PromoteFormatToDepth(vk::Format fmt) { + if (fmt == vk::Format::eR32Sfloat) { + return vk::Format::eD32Sfloat; + } else if (fmt == vk::Format::eR16Unorm) { + return vk::Format::eD16Unorm; + } + UNREACHABLE(); +} + } // namespace Vulkan::LiverpoolToVK diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index b127080882..d7954bf79e 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -6,12 +6,16 @@ #include "common/singleton.h" #include "core/file_format/splash.h" #include "core/libraries/system/systemservice.h" +#include "imgui/renderer/imgui_core.h" #include "sdl_window.h" #include "video_core/renderer_vulkan/renderer_vulkan.h" #include "video_core/renderer_vulkan/vk_rasterizer.h" #include "video_core/texture_cache/image.h" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnullability-completeness" #include +#pragma GCC diagnostic pop namespace Vulkan { @@ -65,10 +69,12 @@ bool CanBlitToSwapchain(const vk::PhysicalDevice physical_device, vk::Format for RendererVulkan::RendererVulkan(Frontend::WindowSDL& window_, AmdGpu::Liverpool* liverpool_) : window{window_}, liverpool{liverpool_}, - instance{window, Config::getGpuId(), Config::vkValidationEnabled()}, draw_scheduler{instance}, - present_scheduler{instance}, flip_scheduler{instance}, swapchain{instance, window}, + instance{window, Config::getGpuId(), Config::vkValidationEnabled(), + Config::vkCrashDiagnosticEnabled()}, + draw_scheduler{instance}, present_scheduler{instance}, flip_scheduler{instance}, + swapchain{instance, window}, rasterizer{std::make_unique(instance, draw_scheduler, liverpool)}, - texture_cache{rasterizer->GetTextureCache()} { + texture_cache{rasterizer->GetTextureCache()}, video_info_ui{this} { const u32 num_images = swapchain.GetImageCount(); const vk::Device device = instance.GetDevice(); @@ -79,9 +85,14 @@ RendererVulkan::RendererVulkan(Frontend::WindowSDL& window_, AmdGpu::Liverpool* frame.present_done = device.createFence({.flags = vk::FenceCreateFlagBits::eSignaled}); free_queue.push(&frame); } + + // Setup ImGui + ImGui::Core::Initialize(instance, window, num_images, swapchain.GetSurfaceFormat().format); + ImGui::Layer::AddLayer(&video_info_ui); } RendererVulkan::~RendererVulkan() { + ImGui::Layer::RemoveLayer(&video_info_ui); draw_scheduler.Finish(); const vk::Device device = instance.GetDevice(); for (auto& frame : present_frames) { @@ -89,6 +100,7 @@ RendererVulkan::~RendererVulkan() { device.destroyImageView(frame.image_view); device.destroyFence(frame.present_done); } + ImGui::Core::Shutdown(device); } void RendererVulkan::RecreateFrame(Frame* frame, u32 width, u32 height) { @@ -190,7 +202,8 @@ Frame* RendererVulkan::PrepareFrameInternal(VideoCore::Image& image, bool is_eop scheduler.EndRendering(); const auto cmdbuf = scheduler.CommandBuffer(); - image.Transit(vk::ImageLayout::eTransferSrcOptimal, vk::AccessFlagBits::eTransferRead, cmdbuf); + image.Transit(vk::ImageLayout::eTransferSrcOptimal, vk::AccessFlagBits2::eTransferRead, {}, + cmdbuf); const std::array pre_barrier{ vk::ImageMemoryBarrier{ @@ -216,7 +229,7 @@ Frame* RendererVulkan::PrepareFrameInternal(VideoCore::Image& image, bool is_eop // Post-processing (Anti-aliasing, FSR etc) goes here. For now just blit to the frame image. cmdbuf.blitImage( - image.image, image.layout, frame->image, vk::ImageLayout::eTransferDstOptimal, + image.image, image.last_state.layout, frame->image, vk::ImageLayout::eTransferDstOptimal, MakeImageBlit(image.info.size.width, image.info.size.height, frame->width, frame->height), vk::Filter::eLinear); @@ -249,12 +262,17 @@ Frame* RendererVulkan::PrepareFrameInternal(VideoCore::Image& image, bool is_eop } void RendererVulkan::Present(Frame* frame) { + ImGui::Core::NewFrame(); + swapchain.AcquireNextImage(); const vk::Image swapchain_image = swapchain.Image(); auto& scheduler = present_scheduler; const auto cmdbuf = scheduler.CommandBuffer(); + + ImGui::Core::Render(cmdbuf, frame); + { auto* profiler_ctx = instance.GetProfilerContext(); TracyVkNamedZoneC(profiler_ctx, renderer_gpu_zone, cmdbuf, "Host frame", @@ -354,7 +372,7 @@ Frame* RendererVulkan::GetRenderFrame() { { std::unique_lock lock{free_mutex}; free_cv.wait(lock, [this] { return !free_queue.empty(); }); - LOG_INFO(Render_Vulkan, "Got render frame, remaining {}", free_queue.size() - 1); + LOG_DEBUG(Render_Vulkan, "Got render frame, remaining {}", free_queue.size() - 1); // Take the frame from the queue frame = free_queue.front(); diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.h b/src/video_core/renderer_vulkan/renderer_vulkan.h index eab9d527cd..c8e566418f 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.h +++ b/src/video_core/renderer_vulkan/renderer_vulkan.h @@ -4,6 +4,8 @@ #pragma once #include + +#include "imgui/layer/video_info.h" #include "video_core/amdgpu/liverpool.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_scheduler.h" @@ -103,6 +105,8 @@ class RendererVulkan { std::condition_variable_any frame_cv; std::optional splash_img; std::vector vo_buffers_addr; + + ImGui::Layers::VideoInfo video_info_ui; }; } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_common.cpp b/src/video_core/renderer_vulkan/vk_common.cpp index e9265ea9c8..0823fd23d7 100644 --- a/src/video_core/renderer_vulkan/vk_common.cpp +++ b/src/video_core/renderer_vulkan/vk_common.cpp @@ -5,7 +5,10 @@ // Implement vma functions #define VMA_IMPLEMENTATION +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnullability-completeness" #include +#pragma GCC diagnostic pop // Store the dispatch loader here VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE diff --git a/src/video_core/renderer_vulkan/vk_common.h b/src/video_core/renderer_vulkan/vk_common.h index 7db6fb06d8..a2f9cbcaf7 100644 --- a/src/video_core/renderer_vulkan/vk_common.h +++ b/src/video_core/renderer_vulkan/vk_common.h @@ -3,12 +3,17 @@ #pragma once +#if defined(__APPLE__) && !USE_SYSTEM_VULKAN_LOADER +#define VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL 0 +#endif + // Include vulkan-hpp header #define VK_ENABLE_BETA_EXTENSIONS #define VK_NO_PROTOTYPES #define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1 #define VULKAN_HPP_NO_CONSTRUCTORS #define VULKAN_HPP_NO_STRUCT_SETTERS +#define VULKAN_HPP_HAS_SPACESHIP_OPERATOR #include #define VMA_STATIC_VULKAN_FUNCTIONS 0 diff --git a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp index 03950f7c08..3558bf7856 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include + #include "common/alignment.h" #include "video_core/buffer_cache/buffer_cache.h" #include "video_core/renderer_vulkan/vk_compute_pipeline.h" @@ -12,9 +13,11 @@ namespace Vulkan { ComputePipeline::ComputePipeline(const Instance& instance_, Scheduler& scheduler_, - vk::PipelineCache pipeline_cache, u64 compute_key_, - const Shader::Info& info_, vk::ShaderModule module) - : instance{instance_}, scheduler{scheduler_}, compute_key{compute_key_}, info{&info_} { + DescriptorHeap& desc_heap_, vk::PipelineCache pipeline_cache, + u64 compute_key_, const Shader::Info& info_, + vk::ShaderModule module) + : Pipeline{instance_, scheduler_, desc_heap_, pipeline_cache}, compute_key{compute_key_}, + info{&info_} { const vk::PipelineShaderStageCreateInfo shader_ci = { .stage = vk::ShaderStageFlagBits::eCompute, .module = module, @@ -66,8 +69,12 @@ ComputePipeline::ComputePipeline(const Instance& instance_, Scheduler& scheduler .size = sizeof(Shader::PushData), }; + uses_push_descriptors = binding < instance.MaxPushDescriptors(); + const auto flags = uses_push_descriptors + ? vk::DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR + : vk::DescriptorSetLayoutCreateFlagBits{}; const vk::DescriptorSetLayoutCreateInfo desc_layout_ci = { - .flags = vk::DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR, + .flags = flags, .bindingCount = static_cast(bindings.size()), .pBindings = bindings.data(), }; @@ -102,60 +109,67 @@ bool ComputePipeline::BindResources(VideoCore::BufferCache& buffer_cache, // Bind resource buffers and textures. boost::container::static_vector buffer_views; boost::container::static_vector buffer_infos; - boost::container::static_vector image_infos; - boost::container::small_vector set_writes; + boost::container::small_vector set_writes; + boost::container::small_vector buffer_barriers; Shader::PushData push_data{}; - u32 binding{}; + Shader::Backend::Bindings binding{}; + + image_infos.clear(); + info->PushUd(binding, push_data); for (const auto& desc : info->buffers) { - const auto vsharp = desc.GetSharp(*info); - const bool is_storage = desc.IsStorage(vsharp); - const VAddr address = vsharp.base_address; - // Most of the time when a metadata is updated with a shader it gets cleared. It means we - // can skip the whole dispatch and update the tracked state instead. Also, it is not - // intended to be consumed and in such rare cases (e.g. HTile introspection, CRAA) we will - // need its full emulation anyways. For cases of metadata read a warning will be logged. - if (desc.is_written) { - if (texture_cache.TouchMeta(address, true)) { - LOG_TRACE(Render_Vulkan, "Metadata update skipped"); - return false; - } + bool is_storage = true; + if (desc.is_gds_buffer) { + auto* vk_buffer = buffer_cache.GetGdsBuffer(); + buffer_infos.emplace_back(vk_buffer->Handle(), 0, vk_buffer->SizeBytes()); } else { - if (texture_cache.IsMeta(address)) { - LOG_WARNING(Render_Vulkan, "Unexpected metadata read by a CS shader (buffer)"); + const auto vsharp = desc.GetSharp(*info); + is_storage = desc.IsStorage(vsharp); + const VAddr address = vsharp.base_address; + // Most of the time when a metadata is updated with a shader it gets cleared. It means + // we can skip the whole dispatch and update the tracked state instead. Also, it is not + // intended to be consumed and in such rare cases (e.g. HTile introspection, CRAA) we + // will need its full emulation anyways. For cases of metadata read a warning will be + // logged. + if (desc.is_written) { + if (texture_cache.TouchMeta(address, true)) { + LOG_TRACE(Render_Vulkan, "Metadata update skipped"); + return false; + } + } else { + if (texture_cache.IsMeta(address)) { + LOG_WARNING(Render_Vulkan, "Unexpected metadata read by a CS shader (buffer)"); + } } - } - const u32 size = vsharp.GetSize(); - if (desc.is_written) { - texture_cache.InvalidateMemory(address, size); - } - const u32 alignment = - is_storage ? instance.StorageMinAlignment() : instance.UniformMinAlignment(); - const auto [vk_buffer, offset] = buffer_cache.ObtainBuffer(address, size, desc.is_written); - const u32 offset_aligned = Common::AlignDown(offset, alignment); - const u32 adjust = offset - offset_aligned; - if (adjust != 0) { + const u32 size = vsharp.GetSize(); + const u32 alignment = + is_storage ? instance.StorageMinAlignment() : instance.UniformMinAlignment(); + const auto [vk_buffer, offset] = + buffer_cache.ObtainBuffer(address, size, desc.is_written); + const u32 offset_aligned = Common::AlignDown(offset, alignment); + const u32 adjust = offset - offset_aligned; ASSERT(adjust % 4 == 0); - push_data.AddOffset(binding, adjust); + push_data.AddOffset(binding.buffer, adjust); + buffer_infos.emplace_back(vk_buffer->Handle(), offset_aligned, size + adjust); } - buffer_infos.emplace_back(vk_buffer->Handle(), offset_aligned, size + adjust); set_writes.push_back({ .dstSet = VK_NULL_HANDLE, - .dstBinding = binding++, + .dstBinding = binding.unified++, .dstArrayElement = 0, .descriptorCount = 1, .descriptorType = is_storage ? vk::DescriptorType::eStorageBuffer : vk::DescriptorType::eUniformBuffer, .pBufferInfo = &buffer_infos.back(), }); + ++binding.buffer; } for (const auto& desc : info->texture_buffers) { const auto vsharp = desc.GetSharp(*info); vk::BufferView& buffer_view = buffer_views.emplace_back(VK_NULL_HANDLE); - if (vsharp.GetDataFmt() != AmdGpu::DataFormat::FormatInvalid) { + const u32 size = vsharp.GetSize(); + if (vsharp.GetDataFmt() != AmdGpu::DataFormat::FormatInvalid && size != 0) { const VAddr address = vsharp.base_address; - const u32 size = vsharp.GetSize(); if (desc.is_written) { if (texture_cache.TouchMeta(address, true)) { LOG_TRACE(Render_Vulkan, "Metadata update skipped"); @@ -166,9 +180,6 @@ bool ComputePipeline::BindResources(VideoCore::BufferCache& buffer_cache, LOG_WARNING(Render_Vulkan, "Unexpected metadata read by a CS shader (buffer)"); } } - if (desc.is_written) { - texture_cache.InvalidateMemory(address, size); - } const u32 alignment = instance.TexelBufferMinAlignment(); const auto [vk_buffer, offset] = buffer_cache.ObtainBuffer(address, size, desc.is_written, true); @@ -177,56 +188,44 @@ bool ComputePipeline::BindResources(VideoCore::BufferCache& buffer_cache, "Texel buffer stride must match format stride"); const u32 offset_aligned = Common::AlignDown(offset, alignment); const u32 adjust = offset - offset_aligned; - if (adjust != 0) { - ASSERT(adjust % fmt_stride == 0); - push_data.AddOffset(binding, adjust / fmt_stride); - } + ASSERT(adjust % fmt_stride == 0); + push_data.AddOffset(binding.buffer, adjust / fmt_stride); buffer_view = vk_buffer->View(offset_aligned, size + adjust, desc.is_written, vsharp.GetDataFmt(), vsharp.GetNumberFmt()); + if (auto barrier = + vk_buffer->GetBarrier(desc.is_written ? vk::AccessFlagBits2::eShaderWrite + : vk::AccessFlagBits2::eShaderRead, + vk::PipelineStageFlagBits2::eComputeShader)) { + buffer_barriers.emplace_back(*barrier); + } + if (desc.is_written) { + texture_cache.InvalidateMemoryFromGPU(address, size); + } } set_writes.push_back({ .dstSet = VK_NULL_HANDLE, - .dstBinding = binding++, + .dstBinding = binding.unified++, .dstArrayElement = 0, .descriptorCount = 1, .descriptorType = desc.is_written ? vk::DescriptorType::eStorageTexelBuffer : vk::DescriptorType::eUniformTexelBuffer, .pTexelBufferView = &buffer_view, }); + ++binding.buffer; } - for (const auto& image_desc : info->images) { - const auto tsharp = image_desc.GetSharp(*info); - if (tsharp.GetDataFmt() != AmdGpu::DataFormat::FormatInvalid) { - VideoCore::ImageInfo image_info{tsharp}; - VideoCore::ImageViewInfo view_info{tsharp, image_desc.is_storage}; - const auto& image_view = texture_cache.FindTexture(image_info, view_info); - const auto& image = texture_cache.GetImage(image_view.image_id); - image_infos.emplace_back(VK_NULL_HANDLE, *image_view.image_view, image.layout); - } else { - image_infos.emplace_back(VK_NULL_HANDLE, VK_NULL_HANDLE, vk::ImageLayout::eGeneral); - } - set_writes.push_back({ - .dstSet = VK_NULL_HANDLE, - .dstBinding = binding++, - .dstArrayElement = 0, - .descriptorCount = 1, - .descriptorType = image_desc.is_storage ? vk::DescriptorType::eStorageImage - : vk::DescriptorType::eSampledImage, - .pImageInfo = &image_infos.back(), - }); + BindTextures(texture_cache, *info, binding, set_writes); - if (texture_cache.IsMeta(tsharp.Address())) { - LOG_WARNING(Render_Vulkan, "Unexpected metadata read by a CS shader (texture)"); - } - } for (const auto& sampler : info->samplers) { const auto ssharp = sampler.GetSharp(*info); + if (ssharp.force_degamma) { + LOG_WARNING(Render_Vulkan, "Texture requires gamma correction"); + } const auto vk_sampler = texture_cache.GetSampler(ssharp); image_infos.emplace_back(vk_sampler, VK_NULL_HANDLE, vk::ImageLayout::eGeneral); set_writes.push_back({ .dstSet = VK_NULL_HANDLE, - .dstBinding = binding++, + .dstBinding = binding.unified++, .dstArrayElement = 0, .descriptorCount = 1, .descriptorType = vk::DescriptorType::eSampler, @@ -239,9 +238,32 @@ bool ComputePipeline::BindResources(VideoCore::BufferCache& buffer_cache, } const auto cmdbuf = scheduler.CommandBuffer(); + + if (!buffer_barriers.empty()) { + const auto dependencies = vk::DependencyInfo{ + .dependencyFlags = vk::DependencyFlagBits::eByRegion, + .bufferMemoryBarrierCount = u32(buffer_barriers.size()), + .pBufferMemoryBarriers = buffer_barriers.data(), + }; + scheduler.EndRendering(); + cmdbuf.pipelineBarrier2(dependencies); + } + + if (uses_push_descriptors) { + cmdbuf.pushDescriptorSetKHR(vk::PipelineBindPoint::eCompute, *pipeline_layout, 0, + set_writes); + } else { + const auto desc_set = desc_heap.Commit(*desc_layout); + for (auto& set_write : set_writes) { + set_write.dstSet = desc_set; + } + instance.GetDevice().updateDescriptorSets(set_writes, {}); + cmdbuf.bindDescriptorSets(vk::PipelineBindPoint::eCompute, *pipeline_layout, 0, desc_set, + {}); + } + cmdbuf.pushConstants(*pipeline_layout, vk::ShaderStageFlagBits::eCompute, 0u, sizeof(push_data), &push_data); - cmdbuf.pushDescriptorSetKHR(vk::PipelineBindPoint::eCompute, *pipeline_layout, 0, set_writes); return true; } diff --git a/src/video_core/renderer_vulkan/vk_compute_pipeline.h b/src/video_core/renderer_vulkan/vk_compute_pipeline.h index 0132066c5b..f1bc7285a9 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pipeline.h +++ b/src/video_core/renderer_vulkan/vk_compute_pipeline.h @@ -3,9 +3,8 @@ #pragma once -#include -#include "shader_recompiler/runtime_info.h" #include "video_core/renderer_vulkan/vk_common.h" +#include "video_core/renderer_vulkan/vk_pipeline_common.h" namespace VideoCore { class BufferCache; @@ -16,29 +15,22 @@ namespace Vulkan { class Instance; class Scheduler; +class DescriptorHeap; -class ComputePipeline { +class ComputePipeline : public Pipeline { public: - explicit ComputePipeline(const Instance& instance, Scheduler& scheduler, - vk::PipelineCache pipeline_cache, u64 compute_key, - const Shader::Info& info, vk::ShaderModule module); + ComputePipeline(const Instance& instance, Scheduler& scheduler, DescriptorHeap& desc_heap, + vk::PipelineCache pipeline_cache, u64 compute_key, const Shader::Info& info, + vk::ShaderModule module); ~ComputePipeline(); - [[nodiscard]] vk::Pipeline Handle() const noexcept { - return *pipeline; - } - bool BindResources(VideoCore::BufferCache& buffer_cache, VideoCore::TextureCache& texture_cache) const; private: - const Instance& instance; - Scheduler& scheduler; - vk::UniquePipeline pipeline; - vk::UniquePipelineLayout pipeline_layout; - vk::UniqueDescriptorSetLayout desc_layout; u64 compute_key; const Shader::Info* info; + bool uses_push_descriptors{}; }; } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 1ab65737c4..8edf2f50c3 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -17,11 +17,11 @@ namespace Vulkan { GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& scheduler_, - const GraphicsPipelineKey& key_, + DescriptorHeap& desc_heap_, const GraphicsPipelineKey& key_, vk::PipelineCache pipeline_cache, std::span infos, std::span modules) - : instance{instance_}, scheduler{scheduler_}, key{key_} { + : Pipeline{instance_, scheduler_, desc_heap_, pipeline_cache}, key{key_} { const vk::Device device = instance.GetDevice(); std::ranges::copy(infos, stages.begin()); BuildDescSetLayout(); @@ -41,8 +41,8 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul }; pipeline_layout = instance.GetDevice().createPipelineLayoutUnique(layout_info); - boost::container::static_vector bindings; - boost::container::static_vector attributes; + boost::container::static_vector vertex_bindings; + boost::container::static_vector vertex_attributes; const auto& vs_info = stages[u32(Shader::Stage::Vertex)]; for (const auto& input : vs_info->vs_inputs) { if (input.instance_step_rate == Shader::Info::VsInput::InstanceIdType::OverStepRate0 || @@ -52,13 +52,13 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul } const auto buffer = vs_info->ReadUd(input.sgpr_base, input.dword_offset); - attributes.push_back({ + vertex_attributes.push_back({ .location = input.binding, .binding = input.binding, .format = LiverpoolToVK::SurfaceFormat(buffer.GetDataFmt(), buffer.GetNumberFmt()), .offset = 0, }); - bindings.push_back({ + vertex_bindings.push_back({ .binding = input.binding, .stride = buffer.GetStride(), .inputRate = input.instance_step_rate == Shader::Info::VsInput::None @@ -68,10 +68,10 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul } const vk::PipelineVertexInputStateCreateInfo vertex_input_info = { - .vertexBindingDescriptionCount = static_cast(bindings.size()), - .pVertexBindingDescriptions = bindings.data(), - .vertexAttributeDescriptionCount = static_cast(attributes.size()), - .pVertexAttributeDescriptions = attributes.data(), + .vertexBindingDescriptionCount = static_cast(vertex_bindings.size()), + .pVertexBindingDescriptions = vertex_bindings.data(), + .vertexAttributeDescriptionCount = static_cast(vertex_attributes.size()), + .pVertexAttributeDescriptions = vertex_attributes.data(), }; if (key.prim_type == Liverpool::PrimitiveType::RectList && !IsEmbeddedVs()) { @@ -83,8 +83,9 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul .topology = LiverpoolToVK::PrimitiveType(key.prim_type), .primitiveRestartEnable = key.enable_primitive_restart != 0, }; - ASSERT_MSG(!key.enable_primitive_restart || key.primitive_restart_index == 0xFFFF, - "Primitive restart index other than 0xFFFF is not supported yet"); + ASSERT_MSG(!key.enable_primitive_restart || key.primitive_restart_index == 0xFFFF || + key.primitive_restart_index == 0xFFFFFFFF, + "Primitive restart index other than -1 is not supported yet"); const vk::PipelineRasterizationStateCreateInfo raster_state = { .depthClampEnable = false, @@ -95,14 +96,12 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul ? vk::FrontFace::eClockwise : vk::FrontFace::eCounterClockwise, .depthBiasEnable = bool(key.depth_bias_enable), - .depthBiasConstantFactor = key.depth_bias_const_factor, - .depthBiasClamp = key.depth_bias_clamp, - .depthBiasSlopeFactor = key.depth_bias_slope_factor, .lineWidth = 1.0f, }; const vk::PipelineMultisampleStateCreateInfo multisampling = { - .rasterizationSamples = LiverpoolToVK::NumSamples(key.num_samples), + .rasterizationSamples = + LiverpoolToVK::NumSamples(key.num_samples, instance.GetFramebufferSampleCounts()), .sampleShadingEnable = false, }; @@ -125,7 +124,7 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul }; const vk::PipelineViewportStateCreateInfo viewport_info = { - .pNext = &clip_control, + .pNext = instance.IsDepthClipControlSupported() ? &clip_control : nullptr, .viewportCount = 1, .pViewports = &viewport, .scissorCount = 1, @@ -133,9 +132,10 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul }; boost::container::static_vector dynamic_states = { - vk::DynamicState::eViewport, - vk::DynamicState::eScissor, - vk::DynamicState::eBlendConstants, + vk::DynamicState::eViewport, vk::DynamicState::eScissor, + vk::DynamicState::eBlendConstants, vk::DynamicState::eDepthBounds, + vk::DynamicState::eDepthBias, vk::DynamicState::eStencilReference, + vk::DynamicState::eStencilCompareMask, vk::DynamicState::eStencilWriteMask, }; if (instance.IsColorWriteEnableSupported()) { @@ -152,39 +152,31 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul }; const vk::PipelineDepthStencilStateCreateInfo depth_info = { - .depthTestEnable = key.depth.depth_enable, - .depthWriteEnable = key.depth.depth_write_enable, - .depthCompareOp = LiverpoolToVK::CompareOp(key.depth.depth_func), - .depthBoundsTestEnable = key.depth.depth_bounds_enable, - .stencilTestEnable = key.depth.stencil_enable, + .depthTestEnable = key.depth_stencil.depth_enable, + .depthWriteEnable = key.depth_stencil.depth_write_enable, + .depthCompareOp = LiverpoolToVK::CompareOp(key.depth_stencil.depth_func), + .depthBoundsTestEnable = key.depth_stencil.depth_bounds_enable, + .stencilTestEnable = key.depth_stencil.stencil_enable, .front{ .failOp = LiverpoolToVK::StencilOp(key.stencil.stencil_fail_front), .passOp = LiverpoolToVK::StencilOp(key.stencil.stencil_zpass_front), .depthFailOp = LiverpoolToVK::StencilOp(key.stencil.stencil_zfail_front), - .compareOp = LiverpoolToVK::CompareOp(key.depth.stencil_ref_func), - .compareMask = key.stencil_ref_front.stencil_mask, - .writeMask = key.stencil_ref_front.stencil_write_mask, - .reference = key.stencil_ref_front.stencil_test_val, + .compareOp = LiverpoolToVK::CompareOp(key.depth_stencil.stencil_ref_func), }, .back{ - .failOp = LiverpoolToVK::StencilOp(key.depth.backface_enable + .failOp = LiverpoolToVK::StencilOp(key.depth_stencil.backface_enable ? key.stencil.stencil_fail_back.Value() : key.stencil.stencil_fail_front.Value()), - .passOp = LiverpoolToVK::StencilOp(key.depth.backface_enable + .passOp = LiverpoolToVK::StencilOp(key.depth_stencil.backface_enable ? key.stencil.stencil_zpass_back.Value() : key.stencil.stencil_zpass_front.Value()), - .depthFailOp = LiverpoolToVK::StencilOp(key.depth.backface_enable + .depthFailOp = LiverpoolToVK::StencilOp(key.depth_stencil.backface_enable ? key.stencil.stencil_zfail_back.Value() : key.stencil.stencil_zfail_front.Value()), - .compareOp = LiverpoolToVK::CompareOp(key.depth.backface_enable - ? key.depth.stencil_bf_func.Value() - : key.depth.stencil_ref_func.Value()), - .compareMask = key.stencil_ref_back.stencil_mask, - .writeMask = key.stencil_ref_back.stencil_write_mask, - .reference = key.stencil_ref_back.stencil_test_val, + .compareOp = LiverpoolToVK::CompareOp(key.depth_stencil.backface_enable + ? key.depth_stencil.stencil_bf_func.Value() + : key.depth_stencil.stencil_ref_func.Value()), }, - .minDepthBounds = key.depth_bounds_min, - .maxDepthBounds = key.depth_bounds_max, }; auto stage = u32(Shader::Stage::Vertex); @@ -300,8 +292,9 @@ GraphicsPipeline::GraphicsPipeline(const Instance& instance_, Scheduler& schedul GraphicsPipeline::~GraphicsPipeline() = default; void GraphicsPipeline::BuildDescSetLayout() { - u32 binding{}; boost::container::small_vector bindings; + u32 binding{}; + for (const auto* stage : stages) { if (!stage) { continue; @@ -343,8 +336,12 @@ void GraphicsPipeline::BuildDescSetLayout() { }); } } + uses_push_descriptors = binding < instance.MaxPushDescriptors(); + const auto flags = uses_push_descriptors + ? vk::DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR + : vk::DescriptorSetLayoutCreateFlagBits{}; const vk::DescriptorSetLayoutCreateInfo desc_layout_ci = { - .flags = vk::DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR, + .flags = flags, .bindingCount = static_cast(bindings.size()), .pBindings = bindings.data(), }; @@ -357,10 +354,12 @@ void GraphicsPipeline::BindResources(const Liverpool::Regs& regs, // Bind resource buffers and textures. boost::container::static_vector buffer_views; boost::container::static_vector buffer_infos; - boost::container::static_vector image_infos; boost::container::small_vector set_writes; + boost::container::small_vector buffer_barriers; Shader::PushData push_data{}; - u32 binding{}; + Shader::Backend::Bindings binding{}; + + image_infos.clear(); for (const auto* stage : stages) { if (!stage) { @@ -370,6 +369,7 @@ void GraphicsPipeline::BindResources(const Liverpool::Regs& regs, push_data.step0 = regs.vgt_instance_step_rate_0; push_data.step1 = regs.vgt_instance_step_rate_1; } + stage->PushUd(binding, push_data); for (const auto& buffer : stage->buffers) { const auto vsharp = buffer.GetSharp(*stage); const bool is_storage = buffer.IsStorage(vsharp); @@ -385,88 +385,76 @@ void GraphicsPipeline::BindResources(const Liverpool::Regs& regs, buffer_cache.ObtainBuffer(address, size, buffer.is_written); const u32 offset_aligned = Common::AlignDown(offset, alignment); const u32 adjust = offset - offset_aligned; - if (adjust != 0) { - ASSERT(adjust % 4 == 0); - push_data.AddOffset(binding, adjust); - } + ASSERT(adjust % 4 == 0); + push_data.AddOffset(binding.buffer, adjust); buffer_infos.emplace_back(vk_buffer->Handle(), offset_aligned, size + adjust); - } else { + } else if (instance.IsNullDescriptorSupported()) { buffer_infos.emplace_back(VK_NULL_HANDLE, 0, VK_WHOLE_SIZE); + } else { + auto& null_buffer = buffer_cache.GetBuffer(VideoCore::NULL_BUFFER_ID); + buffer_infos.emplace_back(null_buffer.Handle(), 0, VK_WHOLE_SIZE); } set_writes.push_back({ .dstSet = VK_NULL_HANDLE, - .dstBinding = binding++, + .dstBinding = binding.unified++, .dstArrayElement = 0, .descriptorCount = 1, .descriptorType = is_storage ? vk::DescriptorType::eStorageBuffer : vk::DescriptorType::eUniformBuffer, .pBufferInfo = &buffer_infos.back(), }); + ++binding.buffer; } - for (const auto& tex_buffer : stage->texture_buffers) { - const auto vsharp = tex_buffer.GetSharp(*stage); + for (const auto& desc : stage->texture_buffers) { + const auto vsharp = desc.GetSharp(*stage); vk::BufferView& buffer_view = buffer_views.emplace_back(VK_NULL_HANDLE); - if (vsharp.GetDataFmt() != AmdGpu::DataFormat::FormatInvalid) { + const u32 size = vsharp.GetSize(); + if (vsharp.GetDataFmt() != AmdGpu::DataFormat::FormatInvalid && size != 0) { const VAddr address = vsharp.base_address; - const u32 size = vsharp.GetSize(); const u32 alignment = instance.TexelBufferMinAlignment(); const auto [vk_buffer, offset] = - buffer_cache.ObtainBuffer(address, size, tex_buffer.is_written, true); + buffer_cache.ObtainBuffer(address, size, desc.is_written, true); const u32 fmt_stride = AmdGpu::NumBits(vsharp.GetDataFmt()) >> 3; ASSERT_MSG(fmt_stride == vsharp.GetStride(), "Texel buffer stride must match format stride"); const u32 offset_aligned = Common::AlignDown(offset, alignment); const u32 adjust = offset - offset_aligned; - if (adjust != 0) { - ASSERT(adjust % fmt_stride == 0); - push_data.AddOffset(binding, adjust / fmt_stride); - } - buffer_view = vk_buffer->View(offset_aligned, size + adjust, tex_buffer.is_written, + ASSERT(adjust % fmt_stride == 0); + push_data.AddOffset(binding.buffer, adjust / fmt_stride); + buffer_view = vk_buffer->View(offset_aligned, size + adjust, desc.is_written, vsharp.GetDataFmt(), vsharp.GetNumberFmt()); + const auto dst_access = desc.is_written ? vk::AccessFlagBits2::eShaderWrite + : vk::AccessFlagBits2::eShaderRead; + if (auto barrier = vk_buffer->GetBarrier( + dst_access, vk::PipelineStageFlagBits2::eVertexShader)) { + buffer_barriers.emplace_back(*barrier); + } + if (desc.is_written) { + texture_cache.InvalidateMemoryFromGPU(address, size); + } } set_writes.push_back({ .dstSet = VK_NULL_HANDLE, - .dstBinding = binding++, + .dstBinding = binding.unified++, .dstArrayElement = 0, .descriptorCount = 1, - .descriptorType = tex_buffer.is_written ? vk::DescriptorType::eStorageTexelBuffer - : vk::DescriptorType::eUniformTexelBuffer, + .descriptorType = desc.is_written ? vk::DescriptorType::eStorageTexelBuffer + : vk::DescriptorType::eUniformTexelBuffer, .pTexelBufferView = &buffer_view, }); + ++binding.buffer; } - boost::container::static_vector tsharps; - for (const auto& image_desc : stage->images) { - const auto tsharp = image_desc.GetSharp(*stage); - if (tsharp) { - tsharps.emplace_back(tsharp); - VideoCore::ImageInfo image_info{tsharp}; - VideoCore::ImageViewInfo view_info{tsharp, image_desc.is_storage}; - const auto& image_view = texture_cache.FindTexture(image_info, view_info); - const auto& image = texture_cache.GetImage(image_view.image_id); - image_infos.emplace_back(VK_NULL_HANDLE, *image_view.image_view, image.layout); - } else { - image_infos.emplace_back(VK_NULL_HANDLE, VK_NULL_HANDLE, vk::ImageLayout::eGeneral); - } - set_writes.push_back({ - .dstSet = VK_NULL_HANDLE, - .dstBinding = binding++, - .dstArrayElement = 0, - .descriptorCount = 1, - .descriptorType = image_desc.is_storage ? vk::DescriptorType::eStorageImage - : vk::DescriptorType::eSampledImage, - .pImageInfo = &image_infos.back(), - }); + BindTextures(texture_cache, *stage, binding, set_writes); - if (texture_cache.IsMeta(tsharp.Address())) { - LOG_WARNING(Render_Vulkan, "Unexpected metadata read by a PS shader (texture)"); - } - } for (const auto& sampler : stage->samplers) { auto ssharp = sampler.GetSharp(*stage); + if (ssharp.force_degamma) { + LOG_WARNING(Render_Vulkan, "Texture requires gamma correction"); + } if (sampler.disable_aniso) { - const auto& tsharp = tsharps[sampler.associated_image]; + const auto& tsharp = stage->images[sampler.associated_image].GetSharp(*stage); if (tsharp.base_level == 0 && tsharp.last_level == 0) { ssharp.max_aniso.Assign(AmdGpu::AnisoRatio::One); } @@ -475,7 +463,7 @@ void GraphicsPipeline::BindResources(const Liverpool::Regs& regs, image_infos.emplace_back(vk_sampler, VK_NULL_HANDLE, vk::ImageLayout::eGeneral); set_writes.push_back({ .dstSet = VK_NULL_HANDLE, - .dstBinding = binding++, + .dstBinding = binding.unified++, .dstArrayElement = 0, .descriptorCount = 1, .descriptorType = vk::DescriptorType::eSampler, @@ -485,9 +473,30 @@ void GraphicsPipeline::BindResources(const Liverpool::Regs& regs, } const auto cmdbuf = scheduler.CommandBuffer(); + + if (!buffer_barriers.empty()) { + const auto dependencies = vk::DependencyInfo{ + .dependencyFlags = vk::DependencyFlagBits::eByRegion, + .bufferMemoryBarrierCount = u32(buffer_barriers.size()), + .pBufferMemoryBarriers = buffer_barriers.data(), + }; + scheduler.EndRendering(); + cmdbuf.pipelineBarrier2(dependencies); + } + if (!set_writes.empty()) { - cmdbuf.pushDescriptorSetKHR(vk::PipelineBindPoint::eGraphics, *pipeline_layout, 0, - set_writes); + if (uses_push_descriptors) { + cmdbuf.pushDescriptorSetKHR(vk::PipelineBindPoint::eGraphics, *pipeline_layout, 0, + set_writes); + } else { + const auto desc_set = desc_heap.Commit(*desc_layout); + for (auto& set_write : set_writes) { + set_write.dstSet = desc_set; + } + instance.GetDevice().updateDescriptorSets(set_writes, {}); + cmdbuf.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, *pipeline_layout, 0, + desc_set, {}); + } } cmdbuf.pushConstants(*pipeline_layout, vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment, 0U, diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.h b/src/video_core/renderer_vulkan/vk_graphics_pipeline.h index 3e51e65297..74817656a6 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.h +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.h @@ -5,7 +5,7 @@ #include "common/types.h" #include "video_core/renderer_vulkan/liverpool_to_vk.h" #include "video_core/renderer_vulkan/vk_common.h" -#include "video_core/renderer_vulkan/vk_compute_pipeline.h" +#include "video_core/renderer_vulkan/vk_pipeline_common.h" namespace VideoCore { class BufferCache; @@ -19,26 +19,22 @@ static constexpr u32 MaxShaderStages = 5; class Instance; class Scheduler; +class DescriptorHeap; using Liverpool = AmdGpu::Liverpool; struct GraphicsPipelineKey { std::array stage_hashes; std::array color_formats; + std::array mrt_swizzles; vk::Format depth_format; vk::Format stencil_format; - Liverpool::DepthControl depth; - float depth_bounds_min; - float depth_bounds_max; - float depth_bias_const_factor; - float depth_bias_slope_factor; - float depth_bias_clamp; + Liverpool::DepthControl depth_stencil; u32 depth_bias_enable; - u32 num_samples = 1; + u32 num_samples; + u32 mrt_mask; Liverpool::StencilControl stencil; - Liverpool::StencilRefMask stencil_ref_front; - Liverpool::StencilRefMask stencil_ref_back; Liverpool::PrimitiveType prim_type; u32 enable_primitive_restart; u32 primitive_restart_index; @@ -46,7 +42,7 @@ struct GraphicsPipelineKey { Liverpool::CullMode cull_mode; Liverpool::FrontFace front_face; Liverpool::ClipSpace clip_space; - Liverpool::ColorBufferMask cb_shader_mask{}; + Liverpool::ColorBufferMask cb_shader_mask; std::array blend_controls; std::array write_masks; @@ -55,25 +51,17 @@ struct GraphicsPipelineKey { } }; -class GraphicsPipeline { +class GraphicsPipeline : public Pipeline { public: - explicit GraphicsPipeline(const Instance& instance, Scheduler& scheduler, - const GraphicsPipelineKey& key, vk::PipelineCache pipeline_cache, - std::span stages, - std::span modules); + GraphicsPipeline(const Instance& instance, Scheduler& scheduler, DescriptorHeap& desc_heap, + const GraphicsPipelineKey& key, vk::PipelineCache pipeline_cache, + std::span stages, + std::span modules); ~GraphicsPipeline(); void BindResources(const Liverpool::Regs& regs, VideoCore::BufferCache& buffer_cache, VideoCore::TextureCache& texture_cache) const; - vk::Pipeline Handle() const noexcept { - return *pipeline; - } - - vk::PipelineLayout GetLayout() const { - return *pipeline_layout; - } - const Shader::Info& GetStage(Shader::Stage stage) const noexcept { return *stages[u32(stage)]; } @@ -87,21 +75,21 @@ class GraphicsPipeline { return key.write_masks; } + auto GetMrtMask() const { + return key.mrt_mask; + } + bool IsDepthEnabled() const { - return key.depth.depth_enable.Value(); + return key.depth_stencil.depth_enable.Value(); } private: void BuildDescSetLayout(); private: - const Instance& instance; - Scheduler& scheduler; - vk::UniquePipeline pipeline; - vk::UniquePipelineLayout pipeline_layout; - vk::UniqueDescriptorSetLayout desc_layout; std::array stages{}; GraphicsPipelineKey key; + bool uses_push_descriptors{}; }; } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index e1a5cb4146..52143907ca 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -14,7 +14,10 @@ #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_platform.h" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnullability-completeness" #include +#pragma GCC diagnostic pop namespace Vulkan { @@ -30,11 +33,16 @@ std::vector GetSupportedExtensions(vk::PhysicalDevice physical) { return supported_extensions; } -std::unordered_map GetFormatProperties( +std::unordered_map GetFormatProperties( vk::PhysicalDevice physical) { - std::unordered_map format_properties; + std::unordered_map format_properties; for (const auto& format : LiverpoolToVK::GetAllFormats()) { - format_properties.emplace(format, physical.getFormatProperties(format)); + vk::FormatProperties3 properties3{}; + vk::FormatProperties2 properties2 = { + .pNext = &properties3, + }; + physical.getFormatProperties2(format, &properties2); + format_properties.emplace(format, properties3); } return format_properties; } @@ -46,14 +54,15 @@ std::string GetReadableVersion(u32 version) { } // Anonymous namespace -Instance::Instance(bool enable_validation, bool dump_command_buffers) - : instance{CreateInstance(dl, Frontend::WindowSystemType::Headless, enable_validation, - dump_command_buffers)}, +Instance::Instance(bool enable_validation, bool enable_crash_diagnostic) + : instance{CreateInstance(Frontend::WindowSystemType::Headless, enable_validation, + enable_crash_diagnostic)}, physical_devices{instance->enumeratePhysicalDevices()} {} Instance::Instance(Frontend::WindowSDL& window, s32 physical_device_index, - bool enable_validation /*= false*/) - : instance{CreateInstance(dl, window.getWindowInfo().type, enable_validation, false)}, + bool enable_validation /*= false*/, bool enable_crash_diagnostic /*= false*/) + : instance{CreateInstance(window.getWindowInfo().type, enable_validation, + enable_crash_diagnostic)}, physical_devices{instance->enumeratePhysicalDevices()} { if (enable_validation) { debug_callback = CreateDebugCallback(*instance); @@ -118,11 +127,15 @@ Instance::Instance(Frontend::WindowSDL& window, s32 physical_device_index, // Check and log format support details. for (const auto& key : format_properties | std::views::keys) { const auto format = key; - if (!IsFormatSupported(format)) { + if (!IsImageFormatSupported(format)) { const auto alternative = GetAlternativeFormat(format); - if (IsFormatSupported(alternative)) { - LOG_WARNING(Render_Vulkan, "Format {} is not supported, falling back to {}", + if (IsImageFormatSupported(alternative)) { + LOG_WARNING(Render_Vulkan, + "Format {} is not supported for images, falling back to {}.", vk::to_string(format), vk::to_string(alternative)); + } else if (IsVertexFormatSupported(format)) { + LOG_WARNING(Render_Vulkan, "Format {} is only supported for vertex buffers.", + vk::to_string(format)); } else { LOG_ERROR(Render_Vulkan, "Format {} is not supported and no suitable alternative is supported.", @@ -168,8 +181,10 @@ bool Instance::CreateDevice() { vk::PhysicalDevicePortabilitySubsetFeaturesKHR>(); const vk::StructureChain properties_chain = physical_device.getProperties2< vk::PhysicalDeviceProperties2, vk::PhysicalDevicePortabilitySubsetPropertiesKHR, - vk::PhysicalDeviceExternalMemoryHostPropertiesEXT, vk::PhysicalDeviceVulkan11Properties>(); + vk::PhysicalDeviceExternalMemoryHostPropertiesEXT, vk::PhysicalDeviceVulkan11Properties, + vk::PhysicalDevicePushDescriptorPropertiesKHR>(); subgroup_size = properties_chain.get().subgroupSize; + push_descriptor_props = properties_chain.get(); LOG_INFO(Render_Vulkan, "Physical device subgroup size {}", subgroup_size); features = feature_chain.get().features; @@ -199,7 +214,7 @@ bool Instance::CreateDevice() { external_memory_host = add_extension(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME); custom_border_color = add_extension(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME); add_extension(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); - const bool depth_clip_control = add_extension(VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME); + depth_clip_control = add_extension(VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME); add_extension(VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME); workgroup_memory_explicit_layout = add_extension(VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME); @@ -212,21 +227,16 @@ bool Instance::CreateDevice() { const bool robustness = add_extension(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME); const bool topology_restart = add_extension(VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME); + const bool maintenance5 = add_extension(VK_KHR_MAINTENANCE_5_EXTENSION_NAME); // These extensions are promoted by Vulkan 1.3, but for greater compatibility we use Vulkan 1.2 // with extensions. tooling_info = add_extension(VK_EXT_TOOLING_INFO_EXTENSION_NAME); const bool maintenance4 = add_extension(VK_KHR_MAINTENANCE_4_EXTENSION_NAME); - const bool maintenance5 = add_extension(VK_KHR_MAINTENANCE_5_EXTENSION_NAME); + add_extension(VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME); add_extension(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME); add_extension(VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME); - const bool has_sync2 = add_extension(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME); - - if (has_sync2) { - has_nv_checkpoints = Config::isMarkersEnabled() - ? add_extension(VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME) - : false; - } + add_extension(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME); #ifdef __APPLE__ // Required by Vulkan spec if supported. @@ -272,6 +282,7 @@ bool Instance::CreateDevice() { vk::PhysicalDeviceFeatures2{ .features{ .robustBufferAccess = features.robustBufferAccess, + .imageCubeArray = features.imageCubeArray, .independentBlend = features.independentBlend, .geometryShader = features.geometryShader, .logicOp = features.logicOp, @@ -284,6 +295,7 @@ bool Instance::CreateDevice() { .shaderStorageImageExtendedFormats = features.shaderStorageImageExtendedFormats, .shaderStorageImageMultisample = features.shaderStorageImageMultisample, .shaderClipDistance = features.shaderClipDistance, + .shaderFloat64 = features.shaderFloat64, .shaderInt64 = features.shaderInt64, .shaderInt16 = features.shaderInt16, }, @@ -295,8 +307,10 @@ bool Instance::CreateDevice() { .shaderFloat16 = vk12_features.shaderFloat16, .scalarBlockLayout = vk12_features.scalarBlockLayout, .uniformBufferStandardLayout = vk12_features.uniformBufferStandardLayout, + .separateDepthStencilLayouts = vk12_features.separateDepthStencilLayouts, .hostQueryReset = vk12_features.hostQueryReset, .timelineSemaphore = vk12_features.timelineSemaphore, + .samplerMirrorClampToEdge = vk12_features.samplerMirrorClampToEdge, }, vk::PhysicalDeviceMaintenance4FeaturesKHR{ .maintenance4 = true, @@ -369,9 +383,12 @@ bool Instance::CreateDevice() { device_chain.unlink(); } if (robustness) { - device_chain.get().nullDescriptor = + null_descriptor = feature_chain.get().nullDescriptor; + device_chain.get().nullDescriptor = + null_descriptor; } else { + null_descriptor = false; device_chain.unlink(); } if (!vertex_input_dynamic_state) { @@ -479,7 +496,7 @@ void Instance::CollectToolingInfo() { } } -bool Instance::IsFormatSupported(const vk::Format format) const { +bool Instance::IsImageFormatSupported(const vk::Format format) const { if (format == vk::Format::eUndefined) [[unlikely]] { return true; } @@ -489,12 +506,26 @@ bool Instance::IsFormatSupported(const vk::Format format) const { UNIMPLEMENTED_MSG("Properties of format {} have not been queried.", vk::to_string(format)); } - constexpr vk::FormatFeatureFlags optimal_flags = vk::FormatFeatureFlagBits::eTransferSrc | - vk::FormatFeatureFlagBits::eTransferDst | - vk::FormatFeatureFlagBits::eSampledImage; + constexpr vk::FormatFeatureFlags2 optimal_flags = vk::FormatFeatureFlagBits2::eTransferSrc | + vk::FormatFeatureFlagBits2::eTransferDst | + vk::FormatFeatureFlagBits2::eSampledImage; return (it->second.optimalTilingFeatures & optimal_flags) == optimal_flags; } +bool Instance::IsVertexFormatSupported(const vk::Format format) const { + if (format == vk::Format::eUndefined) [[unlikely]] { + return true; + } + + const auto it = format_properties.find(format); + if (it == format_properties.end()) { + UNIMPLEMENTED_MSG("Properties of format {} have not been queried.", vk::to_string(format)); + } + + constexpr vk::FormatFeatureFlags2 optimal_flags = vk::FormatFeatureFlagBits2::eVertexBuffer; + return (it->second.bufferFeatures & optimal_flags) == optimal_flags; +} + vk::Format Instance::GetAlternativeFormat(const vk::Format format) const { if (format == vk::Format::eB5G6R5UnormPack16) { return vk::Format::eR5G6B5UnormPack16; @@ -505,11 +536,11 @@ vk::Format Instance::GetAlternativeFormat(const vk::Format format) const { } vk::Format Instance::GetSupportedFormat(const vk::Format format) const { - if (IsFormatSupported(format)) [[likely]] { + if (IsImageFormatSupported(format)) [[likely]] { return format; } const vk::Format alternative = GetAlternativeFormat(format); - if (IsFormatSupported(alternative)) [[likely]] { + if (IsImageFormatSupported(alternative)) [[likely]] { return alternative; } return format; @@ -517,7 +548,7 @@ vk::Format Instance::GetSupportedFormat(const vk::Format format) const { vk::ComponentMapping Instance::GetSupportedComponentSwizzle(vk::Format format, vk::ComponentMapping swizzle) const { - if (IsFormatSupported(format)) [[likely]] { + if (IsImageFormatSupported(format)) [[likely]] { return swizzle; } diff --git a/src/video_core/renderer_vulkan/vk_instance.h b/src/video_core/renderer_vulkan/vk_instance.h index 5f985d4aeb..1c94f586ee 100644 --- a/src/video_core/renderer_vulkan/vk_instance.h +++ b/src/video_core/renderer_vulkan/vk_instance.h @@ -17,19 +17,13 @@ class WindowSDL; VK_DEFINE_HANDLE(VmaAllocator) -#ifdef __APPLE__ -#define VULKAN_LIBRARY_NAME "libMoltenVK.dylib" -#else -#define VULKAN_LIBRARY_NAME -#endif - namespace Vulkan { class Instance { public: - explicit Instance(bool validation = false, bool dump_command_buffers = false); + explicit Instance(bool validation = false, bool crash_diagnostic = false); explicit Instance(Frontend::WindowSDL& window, s32 physical_device_index, - bool enable_validation = false); + bool enable_validation = false, bool enable_crash_diagnostic = false); ~Instance(); /// Returns a formatted string for the driver version @@ -88,10 +82,6 @@ class Instance { return profiler_context; } - bool HasNvCheckpoints() const { - return has_nv_checkpoints; - } - /// Returns true when a known debugging tool is attached. bool HasDebuggingToolAttached() const { return has_renderdoc || has_nsight_graphics; @@ -127,6 +117,11 @@ class Instance { return external_memory_host; } + /// Returns true when VK_EXT_depth_clip_control is supported + bool IsDepthClipControlSupported() const { + return depth_clip_control; + } + /// Returns true when VK_EXT_color_write_enable is supported bool IsColorWriteEnableSupported() const { return color_write_en; @@ -137,6 +132,11 @@ class Instance { return vertex_input_dynamic_state; } + /// Returns true when the nullDescriptor feature of VK_EXT_robustness2 is supported. + bool IsNullDescriptorSupported() const { + return null_descriptor; + } + /// Returns the vendor ID of the physical device u32 GetVendorID() const { return properties.vendorID; @@ -212,6 +212,11 @@ class Instance { return properties.limits.maxTexelBufferElements; } + /// Returns the maximum number of push descriptors. + u32 MaxPushDescriptors() const { + return push_descriptor_props.maxPushDescriptors; + } + /// Returns true if shaders can declare the ClipDistance attribute bool IsShaderClipDistanceSupported() const { return features.shaderClipDistance; @@ -222,6 +227,13 @@ class Instance { return min_imported_host_pointer_alignment; } + /// Returns the sample count flags supported by framebuffers. + vk::SampleCountFlags GetFramebufferSampleCounts() const { + return properties.limits.framebufferColorSampleCounts & + properties.limits.framebufferDepthSampleCounts & + properties.limits.framebufferStencilSampleCounts; + } + private: /// Creates the logical device opportunistically enabling extensions bool CreateDevice(); @@ -233,18 +245,21 @@ class Instance { void CollectDeviceParameters(); void CollectToolingInfo(); - /// Determines if a format is supported. - [[nodiscard]] bool IsFormatSupported(vk::Format format) const; + /// Determines if a format is supported for images. + [[nodiscard]] bool IsImageFormatSupported(vk::Format format) const; + + /// Determines if a format is supported for vertex buffers. + [[nodiscard]] bool IsVertexFormatSupported(vk::Format format) const; /// Gets a commonly available alternative for an unsupported pixel format. vk::Format GetAlternativeFormat(const vk::Format format) const; private: - vk::DynamicLoader dl{VULKAN_LIBRARY_NAME}; vk::UniqueInstance instance; vk::PhysicalDevice physical_device; vk::UniqueDevice device; vk::PhysicalDeviceProperties properties; + vk::PhysicalDevicePushDescriptorPropertiesKHR push_descriptor_props; vk::PhysicalDeviceFeatures features; vk::DriverIdKHR driver_id; vk::UniqueDebugUtilsMessengerEXT debug_callback{}; @@ -254,7 +269,7 @@ class Instance { vk::Queue graphics_queue; std::vector physical_devices; std::vector available_extensions; - std::unordered_map format_properties; + std::unordered_map format_properties; TracyVkCtx profiler_context{}; u32 queue_family_index{0}; bool image_view_reinterpretation{true}; @@ -265,16 +280,17 @@ class Instance { bool fragment_shader_barycentric{}; bool shader_stencil_export{}; bool external_memory_host{}; + bool depth_clip_control{}; bool workgroup_memory_explicit_layout{}; bool color_write_en{}; bool vertex_input_dynamic_state{}; + bool null_descriptor{}; u64 min_imported_host_pointer_alignment{}; u32 subgroup_size{}; bool tooling_info{}; bool debug_utils_supported{}; bool has_nsight_graphics{}; bool has_renderdoc{}; - bool has_nv_checkpoints{}; }; } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index fa5475102d..f00a8a3208 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -1,21 +1,141 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include "shader_recompiler/runtime_info.h" +#include + +#include "common/config.h" +#include "common/io_file.h" +#include "common/path_util.h" +#include "shader_recompiler/backend/spirv/emit_spirv.h" +#include "shader_recompiler/info.h" #include "video_core/renderer_vulkan/renderer_vulkan.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_pipeline_cache.h" #include "video_core/renderer_vulkan/vk_scheduler.h" -#include "video_core/renderer_vulkan/vk_shader_cache.h" +#include "video_core/renderer_vulkan/vk_shader_util.h" extern std::unique_ptr renderer; namespace Vulkan { +using Shader::VsOutput; + +[[nodiscard]] inline u64 HashCombine(const u64 seed, const u64 hash) { + return seed ^ (hash + 0x9e3779b9 + (seed << 6) + (seed >> 2)); +} + +constexpr static std::array DescriptorHeapSizes = { + vk::DescriptorPoolSize{vk::DescriptorType::eUniformBuffer, 8192}, + vk::DescriptorPoolSize{vk::DescriptorType::eStorageBuffer, 1024}, + vk::DescriptorPoolSize{vk::DescriptorType::eUniformTexelBuffer, 128}, + vk::DescriptorPoolSize{vk::DescriptorType::eStorageTexelBuffer, 128}, + vk::DescriptorPoolSize{vk::DescriptorType::eSampledImage, 8192}, + vk::DescriptorPoolSize{vk::DescriptorType::eSampler, 1024}, +}; + +void GatherVertexOutputs(Shader::VertexRuntimeInfo& info, + const AmdGpu::Liverpool::VsOutputControl& ctl) { + const auto add_output = [&](VsOutput x, VsOutput y, VsOutput z, VsOutput w) { + if (x != VsOutput::None || y != VsOutput::None || z != VsOutput::None || + w != VsOutput::None) { + info.outputs.emplace_back(Shader::VsOutputMap{x, y, z, w}); + } + }; + // VS_OUT_MISC_VEC + add_output(ctl.use_vtx_point_size ? VsOutput::PointSprite : VsOutput::None, + ctl.use_vtx_edge_flag + ? VsOutput::EdgeFlag + : (ctl.use_vtx_gs_cut_flag ? VsOutput::GsCutFlag : VsOutput::None), + ctl.use_vtx_kill_flag + ? VsOutput::KillFlag + : (ctl.use_vtx_render_target_idx ? VsOutput::GsMrtIndex : VsOutput::None), + ctl.use_vtx_viewport_idx ? VsOutput::GsVpIndex : VsOutput::None); + // VS_OUT_CCDIST0 + add_output(ctl.IsClipDistEnabled(0) + ? VsOutput::ClipDist0 + : (ctl.IsCullDistEnabled(0) ? VsOutput::CullDist0 : VsOutput::None), + ctl.IsClipDistEnabled(1) + ? VsOutput::ClipDist1 + : (ctl.IsCullDistEnabled(1) ? VsOutput::CullDist1 : VsOutput::None), + ctl.IsClipDistEnabled(2) + ? VsOutput::ClipDist2 + : (ctl.IsCullDistEnabled(2) ? VsOutput::CullDist2 : VsOutput::None), + ctl.IsClipDistEnabled(3) + ? VsOutput::ClipDist3 + : (ctl.IsCullDistEnabled(3) ? VsOutput::CullDist3 : VsOutput::None)); + // VS_OUT_CCDIST1 + add_output(ctl.IsClipDistEnabled(4) + ? VsOutput::ClipDist4 + : (ctl.IsCullDistEnabled(4) ? VsOutput::CullDist4 : VsOutput::None), + ctl.IsClipDistEnabled(5) + ? VsOutput::ClipDist5 + : (ctl.IsCullDistEnabled(5) ? VsOutput::CullDist5 : VsOutput::None), + ctl.IsClipDistEnabled(6) + ? VsOutput::ClipDist6 + : (ctl.IsCullDistEnabled(6) ? VsOutput::CullDist6 : VsOutput::None), + ctl.IsClipDistEnabled(7) + ? VsOutput::ClipDist7 + : (ctl.IsCullDistEnabled(7) ? VsOutput::CullDist7 : VsOutput::None)); +} + +Shader::RuntimeInfo PipelineCache::BuildRuntimeInfo(Shader::Stage stage) { + auto info = Shader::RuntimeInfo{stage}; + const auto& regs = liverpool->regs; + switch (stage) { + case Shader::Stage::Vertex: { + info.num_user_data = regs.vs_program.settings.num_user_regs; + info.num_input_vgprs = regs.vs_program.settings.vgpr_comp_cnt; + info.num_allocated_vgprs = regs.vs_program.settings.num_vgprs * 4; + GatherVertexOutputs(info.vs_info, regs.vs_output_control); + info.vs_info.emulate_depth_negative_one_to_one = + !instance.IsDepthClipControlSupported() && + regs.clipper_control.clip_space == Liverpool::ClipSpace::MinusWToW; + break; + } + case Shader::Stage::Fragment: { + info.num_user_data = regs.ps_program.settings.num_user_regs; + info.num_allocated_vgprs = regs.ps_program.settings.num_vgprs * 4; + std::ranges::transform(graphics_key.mrt_swizzles, info.fs_info.mrt_swizzles.begin(), + [](Liverpool::ColorBuffer::SwapMode mode) { + return static_cast(mode); + }); + const auto& ps_inputs = regs.ps_inputs; + for (u32 i = 0; i < regs.num_interp; i++) { + info.fs_info.inputs.push_back({ + .param_index = u8(ps_inputs[i].input_offset.Value()), + .is_default = bool(ps_inputs[i].use_default), + .is_flat = bool(ps_inputs[i].flat_shade), + .default_value = u8(ps_inputs[i].default_value), + }); + } + break; + } + case Shader::Stage::Compute: { + const auto& cs_pgm = regs.cs_program; + info.num_user_data = cs_pgm.settings.num_user_regs; + info.num_allocated_vgprs = regs.cs_program.settings.num_vgprs * 4; + info.cs_info.workgroup_size = {cs_pgm.num_thread_x.full, cs_pgm.num_thread_y.full, + cs_pgm.num_thread_z.full}; + info.cs_info.tgid_enable = {cs_pgm.IsTgidEnabled(0), cs_pgm.IsTgidEnabled(1), + cs_pgm.IsTgidEnabled(2)}; + info.cs_info.shared_memory_size = cs_pgm.SharedMemSize(); + break; + } + default: + break; + } + return info; +} + PipelineCache::PipelineCache(const Instance& instance_, Scheduler& scheduler_, AmdGpu::Liverpool* liverpool_) : instance{instance_}, scheduler{scheduler_}, liverpool{liverpool_}, - shader_cache{std::make_unique(instance, liverpool)} { + desc_heap{instance, scheduler.GetMasterSemaphore(), DescriptorHeapSizes} { + profile = Shader::Profile{ + .supported_spirv = instance.ApiVersion() >= VK_API_VERSION_1_3 ? 0x00010600U : 0x00010500U, + .subgroup_size = instance.SubgroupSize(), + .support_explicit_workgroup_layout = true, + }; pipeline_cache = instance.GetDevice().createPipelineCacheUnique({}); } @@ -38,16 +158,19 @@ const GraphicsPipeline* PipelineCache::GetGraphicsPipeline() { LOG_TRACE(Render_Vulkan, "FMask decompression pass skipped"); return nullptr; } + if (regs.primitive_type == Liverpool::PrimitiveType::None) { + LOG_TRACE(Render_Vulkan, "Primitive type 'None' skipped"); + return nullptr; + } if (!RefreshGraphicsKey()) { return nullptr; } const auto [it, is_new] = graphics_pipelines.try_emplace(graphics_key); if (is_new) { - it.value() = std::make_unique(instance, scheduler, graphics_key, - *pipeline_cache, infos, modules); + it.value() = graphics_pipeline_pool.Create(instance, scheduler, desc_heap, graphics_key, + *pipeline_cache, infos, modules); } - const GraphicsPipeline* pipeline = it->second.get(); - return pipeline; + return it->second; } const ComputePipeline* PipelineCache::GetComputePipeline() { @@ -56,22 +179,20 @@ const ComputePipeline* PipelineCache::GetComputePipeline() { } const auto [it, is_new] = compute_pipelines.try_emplace(compute_key); if (is_new) { - it.value() = std::make_unique(instance, scheduler, *pipeline_cache, - compute_key, *infos[0], modules[0]); + it.value() = compute_pipeline_pool.Create(instance, scheduler, desc_heap, *pipeline_cache, + compute_key, *infos[0], modules[0]); } - const ComputePipeline* pipeline = it->second.get(); - return pipeline; + return it->second; } // 0x3f84ec55ULL - Amplitude V_MOVRELD_B32 -// 0xc7f34c4fULL - Amplitude V_CMPX_LE_I32 -// 0x28080e22ULL - -// 0x13a1d5fcULL - +// 0xc7f34c4fULL - Amplitude/Rock band 4 V_CMPX_LE_I32 +// 0x13a1d5fcULL - Rock Band 4 1.08 V_MOVRELD_B32 +// 0x28080e22ULL - Rock Band 4 Rivals (2.21) V_MOVRELD_B32 // 0xce54e4ddULL - Rock Band 4 V_MOVRELS_B32 - DO NOT USE, makes notes invisible bool ShouldSkipShader(u64 shader_hash, const char* shader_type) { - static constexpr std::array skip_hashes = {0x3f84ec55ULL, 0xc7f34c4fULL, 0x28080e22ULL, - 0x13a1d5fcULL}; + static constexpr std::array skip_hashes = {}; if (std::ranges::contains(skip_hashes, shader_hash)) { LOG_WARNING(Render_Vulkan, "Skipped {} shader hash {:#x}.", shader_type, shader_hash); return true; @@ -80,88 +201,76 @@ bool ShouldSkipShader(u64 shader_hash, const char* shader_type) { } bool PipelineCache::RefreshGraphicsKey() { + std::memset(&graphics_key, 0, sizeof(GraphicsPipelineKey)); + auto& regs = liverpool->regs; auto& key = graphics_key; - key.depth = regs.depth_control; - key.depth.depth_write_enable.Assign(regs.depth_control.depth_write_enable.Value() && - !regs.depth_render_control.depth_clear_enable); - key.depth_bounds_min = regs.depth_bounds_min; - key.depth_bounds_max = regs.depth_bounds_max; - key.depth_bias_enable = regs.polygon_control.enable_polygon_offset_back || - regs.polygon_control.enable_polygon_offset_front || - regs.polygon_control.enable_polygon_offset_para; - if (regs.polygon_control.enable_polygon_offset_front) { - key.depth_bias_const_factor = regs.poly_offset.front_offset; - key.depth_bias_slope_factor = regs.poly_offset.front_scale; - } else { - key.depth_bias_const_factor = regs.poly_offset.back_offset; - key.depth_bias_slope_factor = regs.poly_offset.back_scale; - } - key.depth_bias_clamp = regs.poly_offset.depth_bias; - key.stencil = regs.stencil_control; - key.stencil_ref_front = regs.stencil_ref_front; - key.stencil_ref_back = regs.stencil_ref_back; - key.prim_type = regs.primitive_type; - key.enable_primitive_restart = regs.enable_primitive_restart & 1; - key.primitive_restart_index = regs.primitive_restart_index; - key.polygon_mode = regs.polygon_control.PolyMode(); - key.cull_mode = regs.polygon_control.CullingMode(); - key.clip_space = regs.clipper_control.clip_space; - key.front_face = regs.polygon_control.front_face; - key.num_samples = regs.aa_config.NumSamples(); + key.depth_stencil = regs.depth_control; + key.depth_stencil.depth_write_enable.Assign(regs.depth_control.depth_write_enable.Value() && + !regs.depth_render_control.depth_clear_enable); + key.depth_bias_enable = regs.polygon_control.NeedsBias(); const auto& db = regs.depth_buffer; const auto ds_format = LiverpoolToVK::DepthFormat(db.z_info.format, db.stencil_info.format); - if (db.z_info.format != AmdGpu::Liverpool::DepthBuffer::ZFormat::Invalid) { key.depth_format = ds_format; } else { key.depth_format = vk::Format::eUndefined; } - if (key.depth.depth_enable) { - key.depth.depth_enable.Assign(key.depth_format != vk::Format::eUndefined); + if (regs.depth_control.depth_enable) { + key.depth_stencil.depth_enable.Assign(key.depth_format != vk::Format::eUndefined); } + key.stencil = regs.stencil_control; if (db.stencil_info.format != AmdGpu::Liverpool::DepthBuffer::StencilFormat::Invalid) { key.stencil_format = key.depth_format; } else { key.stencil_format = vk::Format::eUndefined; } - if (key.depth.stencil_enable) { - key.depth.stencil_enable.Assign(key.stencil_format != vk::Format::eUndefined); + if (key.depth_stencil.stencil_enable) { + key.depth_stencil.stencil_enable.Assign(key.stencil_format != vk::Format::eUndefined); } + key.prim_type = regs.primitive_type; + key.enable_primitive_restart = regs.enable_primitive_restart & 1; + key.primitive_restart_index = regs.primitive_restart_index; + key.polygon_mode = regs.polygon_control.PolyMode(); + key.cull_mode = regs.polygon_control.CullingMode(); + key.clip_space = regs.clipper_control.clip_space; + key.front_face = regs.polygon_control.front_face; + key.num_samples = regs.aa_config.NumSamples(); - const auto skip_cb_binding = + const bool skip_cb_binding = regs.color_control.mode == AmdGpu::Liverpool::ColorControl::OperationMode::Disable; // `RenderingInfo` is assumed to be initialized with a contiguous array of valid color - // attachments. This might be not a case as HW color buffers can be bound in an arbitrary order. - // We need to do some arrays compaction at this stage + // attachments. This might be not a case as HW color buffers can be bound in an arbitrary + // order. We need to do some arrays compaction at this stage key.color_formats.fill(vk::Format::eUndefined); key.blend_controls.fill({}); key.write_masks.fill({}); - int remapped_cb{}; - for (auto cb = 0u; cb < Liverpool::NumColorBuffers; ++cb) { + key.mrt_swizzles.fill(Liverpool::ColorBuffer::SwapMode::Standard); + + // First pass of bindings check to idenitfy formats and swizzles and pass them to rhe shader + // recompiler. + for (auto cb = 0u, remapped_cb = 0u; cb < Liverpool::NumColorBuffers; ++cb) { auto const& col_buf = regs.color_buffers[cb]; if (skip_cb_binding || !col_buf || !regs.color_target_mask.GetMask(cb)) { continue; } const auto base_format = LiverpoolToVK::SurfaceFormat(col_buf.info.format, col_buf.NumFormat()); - const auto is_vo_surface = renderer->IsVideoOutSurface(col_buf); + const bool is_vo_surface = renderer->IsVideoOutSurface(col_buf); key.color_formats[remapped_cb] = LiverpoolToVK::AdjustColorBufferFormat( base_format, col_buf.info.comp_swap.Value(), false /*is_vo_surface*/); - key.blend_controls[remapped_cb] = regs.blend_control[cb]; - key.blend_controls[remapped_cb].enable.Assign(key.blend_controls[remapped_cb].enable && - !col_buf.info.blend_bypass); - key.write_masks[remapped_cb] = vk::ColorComponentFlags{regs.color_target_mask.GetMask(cb)}; - key.cb_shader_mask = regs.color_shader_mask; + if (base_format == key.color_formats[remapped_cb]) { + key.mrt_swizzles[remapped_cb] = col_buf.info.comp_swap.Value(); + } ++remapped_cb; } - u32 binding{}; + Shader::Backend::Bindings binding{}; for (u32 i = 0; i < MaxShaderStages; i++) { if (!regs.stage_enable.IsStageEnabled(i)) { key.stage_hashes[i] = 0; @@ -176,6 +285,7 @@ bool PipelineCache::RefreshGraphicsKey() { } const auto* bininfo = Liverpool::GetBinaryInfo(*pgm); if (!bininfo->Valid()) { + LOG_WARNING(Render_Vulkan, "Invalid binary info structure!"); key.stage_hashes[i] = 0; infos[i] = nullptr; continue; @@ -183,23 +293,126 @@ bool PipelineCache::RefreshGraphicsKey() { if (ShouldSkipShader(bininfo->shader_hash, "graphics")) { return false; } - const auto stage = Shader::Stage{i}; - const GuestProgram guest_pgm{pgm, stage}; - std::tie(infos[i], modules[i], key.stage_hashes[i]) = - shader_cache->GetProgram(guest_pgm, binding); + const auto stage = Shader::StageFromIndex(i); + const auto params = Liverpool::GetParams(*pgm); + + if (stage != Shader::Stage::Vertex && stage != Shader::Stage::Fragment) { + return false; + } + + static bool TessMissingLogged = false; + if (auto* pgm = regs.ProgramForStage(3); + regs.stage_enable.IsStageEnabled(3) && pgm->Address() != 0) { + if (!TessMissingLogged) { + LOG_WARNING(Render_Vulkan, "Tess pipeline compilation skipped"); + TessMissingLogged = true; + } + return false; + } + + std::tie(infos[i], modules[i], key.stage_hashes[i]) = GetProgram(stage, params, binding); + } + + const auto* fs_info = infos[u32(Shader::Stage::Fragment)]; + key.mrt_mask = fs_info ? fs_info->mrt_mask : 0u; + + // Second pass to fill remain CB pipeline key data + for (auto cb = 0u, remapped_cb = 0u; cb < Liverpool::NumColorBuffers; ++cb) { + auto const& col_buf = regs.color_buffers[cb]; + if (skip_cb_binding || !col_buf || !regs.color_target_mask.GetMask(cb) || + (key.mrt_mask & (1u << cb)) == 0) { + key.color_formats[cb] = vk::Format::eUndefined; + key.mrt_swizzles[cb] = Liverpool::ColorBuffer::SwapMode::Standard; + continue; + } + + key.blend_controls[remapped_cb] = regs.blend_control[cb]; + key.blend_controls[remapped_cb].enable.Assign(key.blend_controls[remapped_cb].enable && + !col_buf.info.blend_bypass); + key.write_masks[remapped_cb] = vk::ColorComponentFlags{regs.color_target_mask.GetMask(cb)}; + key.cb_shader_mask.SetMask(remapped_cb, regs.color_shader_mask.GetMask(cb)); + + ++remapped_cb; } return true; } bool PipelineCache::RefreshComputeKey() { - u32 binding{}; + Shader::Backend::Bindings binding{}; const auto* cs_pgm = &liverpool->regs.cs_program; - const GuestProgram guest_pgm{cs_pgm, Shader::Stage::Compute}; - if (ShouldSkipShader(guest_pgm.hash, "compute")) { + const auto cs_params = Liverpool::GetParams(*cs_pgm); + if (ShouldSkipShader(cs_params.hash, "compute")) { return false; } - std::tie(infos[0], modules[0], compute_key) = shader_cache->GetProgram(guest_pgm, binding); + std::tie(infos[0], modules[0], compute_key) = + GetProgram(Shader::Stage::Compute, cs_params, binding); return true; } +vk::ShaderModule PipelineCache::CompileModule(Shader::Info& info, + const Shader::RuntimeInfo& runtime_info, + std::span code, size_t perm_idx, + Shader::Backend::Bindings& binding) { + LOG_INFO(Render_Vulkan, "Compiling {} shader {:#x} {}", info.stage, info.pgm_hash, + perm_idx != 0 ? "(permutation)" : ""); + if (Config::dumpShaders()) { + DumpShader(code, info.pgm_hash, info.stage, perm_idx, "bin"); + } + const auto ir_program = Shader::TranslateProgram(code, pools, info, runtime_info, profile); + const auto spv = Shader::Backend::SPIRV::EmitSPIRV(profile, runtime_info, ir_program, binding); + if (Config::dumpShaders()) { + DumpShader(spv, info.pgm_hash, info.stage, perm_idx, "spv"); + } + + const auto module = CompileSPV(spv, instance.GetDevice()); + const auto name = fmt::format("{}_{:#x}_{}", info.stage, info.pgm_hash, perm_idx); + Vulkan::SetObjectName(instance.GetDevice(), module, name); + return module; +} + +std::tuple PipelineCache::GetProgram( + Shader::Stage stage, Shader::ShaderParams params, Shader::Backend::Bindings& binding) { + const auto runtime_info = BuildRuntimeInfo(stage); + auto [it_pgm, new_program] = program_cache.try_emplace(params.hash); + if (new_program) { + Program* program = program_pool.Create(stage, params); + auto start = binding; + const auto module = CompileModule(program->info, runtime_info, params.code, 0, binding); + const auto spec = Shader::StageSpecialization(program->info, runtime_info, start); + program->AddPermut(module, std::move(spec)); + it_pgm.value() = program; + return std::make_tuple(&program->info, module, HashCombine(params.hash, 0)); + } + + Program* program = it_pgm->second; + const auto& info = program->info; + const auto spec = Shader::StageSpecialization(info, runtime_info, binding); + size_t perm_idx = program->modules.size(); + vk::ShaderModule module{}; + + const auto it = std::ranges::find(program->modules, spec, &Program::Module::spec); + if (it == program->modules.end()) { + auto new_info = Shader::Info(stage, params); + module = CompileModule(new_info, runtime_info, params.code, perm_idx, binding); + program->AddPermut(module, std::move(spec)); + } else { + info.AddBindings(binding); + module = it->module; + perm_idx = std::distance(program->modules.begin(), it); + } + return std::make_tuple(&info, module, HashCombine(params.hash, perm_idx)); +} + +void PipelineCache::DumpShader(std::span code, u64 hash, Shader::Stage stage, + size_t perm_idx, std::string_view ext) { + using namespace Common::FS; + const auto dump_dir = GetUserPath(PathType::ShaderDir) / "dumps"; + if (!std::filesystem::exists(dump_dir)) { + std::filesystem::create_directories(dump_dir); + } + const auto filename = fmt::format("{}_{:#018x}_{}.{}", stage, hash, perm_idx, ext); + const auto file = IOFile{dump_dir / filename, FileAccessMode::Write}; + file.WriteSpan(code); +} + } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.h b/src/video_core/renderer_vulkan/vk_pipeline_cache.h index 40853b7463..7e44bbf095 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.h +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.h @@ -4,8 +4,12 @@ #pragma once #include +#include "shader_recompiler/profile.h" +#include "shader_recompiler/recompiler.h" +#include "shader_recompiler/specialization.h" #include "video_core/renderer_vulkan/vk_compute_pipeline.h" #include "video_core/renderer_vulkan/vk_graphics_pipeline.h" +#include "video_core/renderer_vulkan/vk_resource_pool.h" namespace Shader { struct Info; @@ -17,6 +21,22 @@ class Instance; class Scheduler; class ShaderCache; +struct Program { + struct Module { + vk::ShaderModule module; + Shader::StageSpecialization spec; + }; + + Shader::Info info; + boost::container::small_vector modules; + + explicit Program(Shader::Stage stage, Shader::ShaderParams params) : info{stage, params} {} + + void AddPermut(vk::ShaderModule module, const Shader::StageSpecialization&& spec) { + modules.emplace_back(module, std::move(spec)); + } +}; + class PipelineCache { static constexpr size_t MaxShaderStages = 5; @@ -29,19 +49,35 @@ class PipelineCache { const ComputePipeline* GetComputePipeline(); + std::tuple GetProgram( + Shader::Stage stage, Shader::ShaderParams params, Shader::Backend::Bindings& binding); + private: bool RefreshGraphicsKey(); bool RefreshComputeKey(); + void DumpShader(std::span code, u64 hash, Shader::Stage stage, size_t perm_idx, + std::string_view ext); + vk::ShaderModule CompileModule(Shader::Info& info, const Shader::RuntimeInfo& runtime_info, + std::span code, size_t perm_idx, + Shader::Backend::Bindings& binding); + Shader::RuntimeInfo BuildRuntimeInfo(Shader::Stage stage); + private: const Instance& instance; Scheduler& scheduler; AmdGpu::Liverpool* liverpool; + DescriptorHeap desc_heap; vk::UniquePipelineCache pipeline_cache; vk::UniquePipelineLayout pipeline_layout; - std::unique_ptr shader_cache; - tsl::robin_map> compute_pipelines; - tsl::robin_map> graphics_pipelines; + Shader::Profile profile{}; + Shader::Pools pools; + tsl::robin_map program_cache; + Common::ObjectPool program_pool; + Common::ObjectPool graphics_pipeline_pool; + Common::ObjectPool compute_pipeline_pool; + tsl::robin_map compute_pipelines; + tsl::robin_map graphics_pipelines; std::array infos{}; std::array modules{}; GraphicsPipelineKey graphics_key{}; diff --git a/src/video_core/renderer_vulkan/vk_pipeline_common.cpp b/src/video_core/renderer_vulkan/vk_pipeline_common.cpp new file mode 100644 index 0000000000..61e564150a --- /dev/null +++ b/src/video_core/renderer_vulkan/vk_pipeline_common.cpp @@ -0,0 +1,81 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include + +#include "shader_recompiler/info.h" +#include "video_core/renderer_vulkan/vk_instance.h" +#include "video_core/renderer_vulkan/vk_pipeline_common.h" +#include "video_core/renderer_vulkan/vk_scheduler.h" +#include "video_core/texture_cache/texture_cache.h" + +namespace Vulkan { + +boost::container::static_vector Pipeline::image_infos; + +Pipeline::Pipeline(const Instance& instance_, Scheduler& scheduler_, DescriptorHeap& desc_heap_, + vk::PipelineCache pipeline_cache) + : instance{instance_}, scheduler{scheduler_}, desc_heap{desc_heap_} {} + +Pipeline::~Pipeline() = default; + +void Pipeline::BindTextures(VideoCore::TextureCache& texture_cache, const Shader::Info& stage, + Shader::Backend::Bindings& binding, + DescriptorWrites& set_writes) const { + + using ImageBindingInfo = std::tuple; + boost::container::static_vector image_bindings; + + for (const auto& image_desc : stage.images) { + const auto tsharp = image_desc.GetSharp(stage); + if (tsharp.GetDataFmt() != AmdGpu::DataFormat::FormatInvalid) { + VideoCore::ImageInfo image_info{tsharp, image_desc}; + const auto image_id = texture_cache.FindImage(image_info); + auto& image = texture_cache.GetImage(image_id); + image.flags |= VideoCore::ImageFlagBits::Bound; + image_bindings.emplace_back(image_id, tsharp, image_desc); + } else { + image_bindings.emplace_back(VideoCore::ImageId{}, tsharp, image_desc); + } + + if (texture_cache.IsMeta(tsharp.Address())) { + LOG_WARNING(Render_Vulkan, "Unexpected metadata read by a PS shader (texture)"); + } + } + + // Second pass to re-bind images that were updated after binding + for (auto [image_id, tsharp, desc] : image_bindings) { + if (!image_id) { + if (instance.IsNullDescriptorSupported()) { + image_infos.emplace_back(VK_NULL_HANDLE, VK_NULL_HANDLE, vk::ImageLayout::eGeneral); + } else { + auto& null_image = texture_cache.GetImageView(VideoCore::NULL_IMAGE_VIEW_ID); + image_infos.emplace_back(VK_NULL_HANDLE, *null_image.image_view, + vk::ImageLayout::eGeneral); + } + } else { + auto& image = texture_cache.GetImage(image_id); + if (True(image.flags & VideoCore::ImageFlagBits::NeedsRebind)) { + image_id = texture_cache.FindImage(image.info); + } + VideoCore::ImageViewInfo view_info{tsharp, desc}; + auto& image_view = texture_cache.FindTexture(image_id, view_info); + image_infos.emplace_back(VK_NULL_HANDLE, *image_view.image_view, + texture_cache.GetImage(image_id).last_state.layout); + image.flags &= + ~(VideoCore::ImageFlagBits::NeedsRebind | VideoCore::ImageFlagBits::Bound); + } + + set_writes.push_back({ + .dstSet = VK_NULL_HANDLE, + .dstBinding = binding.unified++, + .dstArrayElement = 0, + .descriptorCount = 1, + .descriptorType = desc.is_storage ? vk::DescriptorType::eStorageImage + : vk::DescriptorType::eSampledImage, + .pImageInfo = &image_infos.back(), + }); + } +} + +} // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_pipeline_common.h b/src/video_core/renderer_vulkan/vk_pipeline_common.h new file mode 100644 index 0000000000..ab99e7b33f --- /dev/null +++ b/src/video_core/renderer_vulkan/vk_pipeline_common.h @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "shader_recompiler/backend/bindings.h" +#include "shader_recompiler/info.h" +#include "video_core/renderer_vulkan/vk_common.h" + +namespace VideoCore { +class BufferCache; +class TextureCache; +} // namespace VideoCore + +namespace Vulkan { + +class Instance; +class Scheduler; +class DescriptorHeap; + +class Pipeline { +public: + Pipeline(const Instance& instance, Scheduler& scheduler, DescriptorHeap& desc_heap, + vk::PipelineCache pipeline_cache); + virtual ~Pipeline(); + + vk::Pipeline Handle() const noexcept { + return *pipeline; + } + + vk::PipelineLayout GetLayout() const noexcept { + return *pipeline_layout; + } + + using DescriptorWrites = boost::container::small_vector; + void BindTextures(VideoCore::TextureCache& texture_cache, const Shader::Info& stage, + Shader::Backend::Bindings& binding, DescriptorWrites& set_writes) const; + +protected: + const Instance& instance; + Scheduler& scheduler; + DescriptorHeap& desc_heap; + vk::UniquePipeline pipeline; + vk::UniquePipelineLayout pipeline_layout; + vk::UniqueDescriptorSetLayout desc_layout; + static boost::container::static_vector image_infos; +}; + +} // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_platform.cpp b/src/video_core/renderer_vulkan/vk_platform.cpp index c73a8139df..6abd00aaa5 100644 --- a/src/video_core/renderer_vulkan/vk_platform.cpp +++ b/src/video_core/renderer_vulkan/vk_platform.cpp @@ -17,13 +17,23 @@ #include "common/assert.h" #include "common/config.h" #include "common/logging/log.h" +#include "common/path_util.h" #include "sdl_window.h" #include "video_core/renderer_vulkan/vk_platform.h" +#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL +static vk::DynamicLoader dl; +#else +extern "C" { +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, + const char* pName); +} +#endif + namespace Vulkan { static const char* const VALIDATION_LAYER_NAME = "VK_LAYER_KHRONOS_validation"; -static const char* const API_DUMP_LAYER_NAME = "VK_LAYER_LUNARG_api_dump"; +static const char* const CRASH_DIAGNOSTIC_LAYER_NAME = "VK_LAYER_LUNARG_crash_diagnostic"; static VKAPI_ATTR VkBool32 VKAPI_CALL DebugUtilsCallback( VkDebugUtilsMessageSeverityFlagBitsEXT severity, VkDebugUtilsMessageTypeFlagsEXT type, @@ -32,7 +42,8 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL DebugUtilsCallback( switch (static_cast(callback_data->messageIdNumber)) { case 0x609a13b: // Vertex attribute at location not consumed by shader case 0xc81ad50e: - case 0x92d66fc1: // `pMultisampleState is NULL` for depth only passes (confirmed VL error) + case 0xb7c39078: + case 0x32868fde: // vkCreateBufferView(): pCreateInfo->range does not equal VK_WHOLE_SIZE return VK_FALSE; default: break; @@ -186,12 +197,14 @@ std::vector GetInstanceExtensions(Frontend::WindowSystemType window return extensions; } -vk::UniqueInstance CreateInstance(vk::DynamicLoader& dl, Frontend::WindowSystemType window_type, - bool enable_validation, bool dump_command_buffers) { +vk::UniqueInstance CreateInstance(Frontend::WindowSystemType window_type, bool enable_validation, + bool enable_crash_diagnostic) { LOG_INFO(Render_Vulkan, "Creating vulkan instance"); +#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL auto vkGetInstanceProcAddr = dl.getProcAddress("vkGetInstanceProcAddr"); +#endif VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr); const u32 available_version = VULKAN_HPP_DEFAULT_DISPATCHER.vkEnumerateInstanceVersion @@ -216,12 +229,27 @@ vk::UniqueInstance CreateInstance(vk::DynamicLoader& dl, Frontend::WindowSystemT u32 num_layers = 0; std::array layers; + vk::Bool32 enable_force_barriers = vk::False; + const char* log_path{}; + +#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL if (enable_validation) { layers[num_layers++] = VALIDATION_LAYER_NAME; } - if (dump_command_buffers) { - layers[num_layers++] = API_DUMP_LAYER_NAME; + + if (enable_crash_diagnostic) { + layers[num_layers++] = CRASH_DIAGNOSTIC_LAYER_NAME; + static const auto crash_diagnostic_path = + Common::FS::GetUserPathString(Common::FS::PathType::LogDir); + log_path = crash_diagnostic_path.c_str(); + enable_force_barriers = vk::True; + } +#else + if (enable_validation || enable_crash_diagnostic) { + LOG_WARNING(Render_Vulkan, + "Skipping loading Vulkan layers as dynamic loading is not enabled."); } +#endif vk::Bool32 enable_sync = enable_validation && Config::vkValidationSyncEnabled() ? vk::True : vk::False; @@ -240,7 +268,7 @@ vk::UniqueInstance CreateInstance(vk::DynamicLoader& dl, Frontend::WindowSystemT }, vk::LayerSettingEXT{ .pLayerName = VALIDATION_LAYER_NAME, - .pSettingName = "sync_queue_submit", + .pSettingName = "syncval_submit_time_validation", .type = vk::LayerSettingTypeEXT::eBool32, .valueCount = 1, .pValues = &enable_sync, @@ -280,6 +308,20 @@ vk::UniqueInstance CreateInstance(vk::DynamicLoader& dl, Frontend::WindowSystemT .valueCount = 1, .pValues = &enable_gpuav, }, + vk::LayerSettingEXT{ + .pLayerName = "lunarg_crash_diagnostic", + .pSettingName = "output_path", + .type = vk::LayerSettingTypeEXT::eString, + .valueCount = 1, + .pValues = &log_path, + }, + vk::LayerSettingEXT{ + .pLayerName = "lunarg_crash_diagnostic", + .pSettingName = "sync_after_commands", + .type = vk::LayerSettingTypeEXT::eBool32, + .valueCount = 1, + .pValues = &enable_force_barriers, + }, }; vk::StructureChain instance_ci_chain = { diff --git a/src/video_core/renderer_vulkan/vk_platform.h b/src/video_core/renderer_vulkan/vk_platform.h index 582de38312..e38bd2fef5 100644 --- a/src/video_core/renderer_vulkan/vk_platform.h +++ b/src/video_core/renderer_vulkan/vk_platform.h @@ -21,8 +21,8 @@ constexpr u32 TargetVulkanApiVersion = VK_API_VERSION_1_2; vk::SurfaceKHR CreateSurface(vk::Instance instance, const Frontend::WindowSDL& emu_window); -vk::UniqueInstance CreateInstance(vk::DynamicLoader& dl, Frontend::WindowSystemType window_type, - bool enable_validation, bool dump_command_buffers); +vk::UniqueInstance CreateInstance(Frontend::WindowSystemType window_type, bool enable_validation, + bool enable_crash_diagnostic); vk::UniqueDebugUtilsMessengerEXT CreateDebugCallback(vk::Instance instance); diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 9231c51044..eac272726a 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -17,7 +17,7 @@ namespace Vulkan { Rasterizer::Rasterizer(const Instance& instance_, Scheduler& scheduler_, AmdGpu::Liverpool* liverpool_) : instance{instance_}, scheduler{scheduler_}, page_manager{this}, - buffer_cache{instance, scheduler, liverpool_, page_manager}, + buffer_cache{instance, scheduler, liverpool_, texture_cache, page_manager}, texture_cache{instance, scheduler, buffer_cache, page_manager}, liverpool{liverpool_}, memory{Core::Memory::Instance()}, pipeline_cache{instance, scheduler, liverpool} { if (!Config::nullGpu()) { @@ -29,6 +29,19 @@ Rasterizer::Rasterizer(const Instance& instance_, Scheduler& scheduler_, Rasterizer::~Rasterizer() = default; +void Rasterizer::CpSync() { + scheduler.EndRendering(); + auto cmdbuf = scheduler.CommandBuffer(); + + const vk::MemoryBarrier ib_barrier{ + .srcAccessMask = vk::AccessFlagBits::eShaderWrite, + .dstAccessMask = vk::AccessFlagBits::eIndirectCommandRead, + }; + cmdbuf.pipelineBarrier(vk::PipelineStageFlagBits::eComputeShader, + vk::PipelineStageFlagBits::eDrawIndirect, + vk::DependencyFlagBits::eByRegion, ib_barrier, {}, {}); +} + void Rasterizer::Draw(bool is_indexed, u32 index_offset) { RENDERER_TRACE; @@ -49,7 +62,7 @@ void Rasterizer::Draw(bool is_indexed, u32 index_offset) { buffer_cache.BindVertexBuffers(vs_info); const u32 num_indices = buffer_cache.BindIndexBuffer(is_indexed, index_offset); - BeginRendering(); + BeginRendering(*pipeline); UpdateDynamicState(*pipeline); const auto [vertex_offset, instance_offset] = vs_info.GetDrawOffsets(); @@ -66,6 +79,45 @@ void Rasterizer::Draw(bool is_indexed, u32 index_offset) { } } +void Rasterizer::DrawIndirect(bool is_indexed, VAddr address, u32 offset, u32 size) { + RENDERER_TRACE; + + const auto cmdbuf = scheduler.CommandBuffer(); + const auto& regs = liverpool->regs; + const GraphicsPipeline* pipeline = pipeline_cache.GetGraphicsPipeline(); + if (!pipeline) { + return; + } + + ASSERT_MSG(regs.primitive_type != AmdGpu::Liverpool::PrimitiveType::RectList, + "Unsupported primitive type for indirect draw"); + + try { + pipeline->BindResources(regs, buffer_cache, texture_cache); + } catch (...) { + UNREACHABLE(); + } + + const auto& vs_info = pipeline->GetStage(Shader::Stage::Vertex); + buffer_cache.BindVertexBuffers(vs_info); + const u32 num_indices = buffer_cache.BindIndexBuffer(is_indexed, 0); + + BeginRendering(*pipeline); + UpdateDynamicState(*pipeline); + + const auto [buffer, base] = buffer_cache.ObtainBuffer(address, size, true); + const auto total_offset = base + offset; + + // We can safely ignore both SGPR UD indices and results of fetch shader parsing, as vertex and + // instance offsets will be automatically applied by Vulkan from indirect args buffer. + + if (is_indexed) { + cmdbuf.drawIndexedIndirect(buffer->Handle(), total_offset, 1, 0); + } else { + cmdbuf.drawIndirect(buffer->Handle(), total_offset, 1, 0); + } +} + void Rasterizer::DispatchDirect() { RENDERER_TRACE; @@ -113,19 +165,6 @@ void Rasterizer::DispatchIndirect(VAddr address, u32 offset, u32 size) { cmdbuf.bindPipeline(vk::PipelineBindPoint::eCompute, pipeline->Handle()); const auto [buffer, base] = buffer_cache.ObtainBuffer(address, size, true); const auto total_offset = base + offset; - - // Emulate PFP-to-ME sync packet - const vk::BufferMemoryBarrier ib_barrier{ - .srcAccessMask = vk::AccessFlagBits::eShaderWrite, - .dstAccessMask = vk::AccessFlagBits::eIndirectCommandRead, - .buffer = buffer->Handle(), - .offset = total_offset, - .size = size, - }; - cmdbuf.pipelineBarrier(vk::PipelineStageFlagBits::eComputeShader, - vk::PipelineStageFlagBits::eDrawIndirect, - vk::DependencyFlagBits::eByRegion, {}, ib_barrier, {}); - cmdbuf.dispatchIndirect(buffer->Handle(), total_offset); } @@ -136,10 +175,18 @@ u64 Rasterizer::Flush() { return current_tick; } -void Rasterizer::BeginRendering() { +void Rasterizer::Finish() { + scheduler.Finish(); +} + +void Rasterizer::BeginRendering(const GraphicsPipeline& pipeline) { const auto& regs = liverpool->regs; RenderState state; + if (regs.color_control.degamma_enable) { + LOG_WARNING(Render_Vulkan, "Color buffers require gamma correction"); + } + for (auto col_buf_id = 0u; col_buf_id < Liverpool::NumColorBuffers; ++col_buf_id) { const auto& col_buf = regs.color_buffers[col_buf_id]; if (!col_buf) { @@ -152,6 +199,13 @@ void Rasterizer::BeginRendering() { continue; } + // Skip stale color buffers if shader doesn't output to them. Otherwise it will perform + // an unnecessary transition and may result in state conflict if the resource is already + // bound for reading. + if ((pipeline.GetMrtMask() & (1 << col_buf_id)) == 0) { + continue; + } + const auto& hint = liverpool->last_cb_extent[col_buf_id]; VideoCore::ImageInfo image_info{col_buf, hint}; VideoCore::ImageViewInfo view_info{col_buf, false /*!!image.info.usage.vo_buffer*/}; @@ -193,7 +247,7 @@ void Rasterizer::BeginRendering() { state.depth_image = image.image; state.depth_attachment = { .imageView = *image_view.image_view, - .imageLayout = image.layout, + .imageLayout = image.last_state.layout, .loadOp = is_clear ? vk::AttachmentLoadOp::eClear : vk::AttachmentLoadOp::eLoad, .storeOp = is_clear ? vk::AttachmentStoreOp::eNone : vk::AttachmentStoreOp::eStore, .clearValue = vk::ClearValue{.depthStencil = {.depth = regs.depth_clear, @@ -208,6 +262,17 @@ void Rasterizer::BeginRendering() { scheduler.BeginRendering(state); } +void Rasterizer::InlineDataToGds(u32 gds_offset, u32 value) { + buffer_cache.InlineDataToGds(gds_offset, value); +} + +u32 Rasterizer::ReadDataFromGds(u32 gds_offset) { + auto* gds_buf = buffer_cache.GetGdsBuffer(); + u32 value; + std::memcpy(&value, gds_buf->mapped_data.data() + gds_offset, sizeof(u32)); + return value; +} + void Rasterizer::InvalidateMemory(VAddr addr, u64 size) { buffer_cache.InvalidateMemory(addr, size); texture_cache.InvalidateMemory(addr, size); @@ -239,6 +304,43 @@ void Rasterizer::UpdateDynamicState(const GraphicsPipeline& pipeline) { cmdbuf.setColorWriteEnableEXT(write_ens); cmdbuf.setColorWriteMaskEXT(0, write_masks); } + if (regs.depth_control.depth_bounds_enable) { + cmdbuf.setDepthBounds(regs.depth_bounds_min, regs.depth_bounds_max); + } + if (regs.polygon_control.NeedsBias()) { + if (regs.polygon_control.enable_polygon_offset_front) { + cmdbuf.setDepthBias(regs.poly_offset.front_offset, regs.poly_offset.depth_bias, + regs.poly_offset.front_scale); + } else { + cmdbuf.setDepthBias(regs.poly_offset.back_offset, regs.poly_offset.depth_bias, + regs.poly_offset.back_scale); + } + } + if (regs.depth_control.stencil_enable) { + const auto front = regs.stencil_ref_front; + const auto back = regs.stencil_ref_back; + if (front.stencil_test_val == back.stencil_test_val) { + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFrontAndBack, + front.stencil_test_val); + } else { + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFront, front.stencil_test_val); + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eBack, back.stencil_test_val); + } + if (front.stencil_write_mask == back.stencil_write_mask) { + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFrontAndBack, + front.stencil_write_mask); + } else { + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFront, front.stencil_write_mask); + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eBack, back.stencil_write_mask); + } + if (front.stencil_mask == back.stencil_mask) { + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFrontAndBack, + front.stencil_mask); + } else { + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFront, front.stencil_mask); + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eBack, back.stencil_mask); + } + } } void Rasterizer::UpdateViewportScissorState() { @@ -282,7 +384,7 @@ void Rasterizer::UpdateDepthStencilState() { } void Rasterizer::ScopeMarkerBegin(const std::string_view& str) { - if (Config::nullGpu() || !Config::isMarkersEnabled()) { + if (Config::nullGpu() || !Config::vkMarkersEnabled()) { return; } @@ -293,7 +395,7 @@ void Rasterizer::ScopeMarkerBegin(const std::string_view& str) { } void Rasterizer::ScopeMarkerEnd() { - if (Config::nullGpu() || !Config::isMarkersEnabled()) { + if (Config::nullGpu() || !Config::vkMarkersEnabled()) { return; } @@ -302,7 +404,7 @@ void Rasterizer::ScopeMarkerEnd() { } void Rasterizer::ScopedMarkerInsert(const std::string_view& str) { - if (Config::nullGpu() || !Config::isMarkersEnabled()) { + if (Config::nullGpu() || !Config::vkMarkersEnabled()) { return; } @@ -312,11 +414,4 @@ void Rasterizer::ScopedMarkerInsert(const std::string_view& str) { }); } -void Rasterizer::Breadcrumb(u64 id) { - if (Config::nullGpu() || !instance.HasNvCheckpoints()) { - return; - } - scheduler.CommandBuffer().setCheckpointNV(id); -} - } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index 34f6ae726d..bd05c8faf4 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h @@ -32,6 +32,7 @@ class Rasterizer { } void Draw(bool is_indexed, u32 index_offset = 0); + void DrawIndirect(bool is_indexed, VAddr address, u32 offset, u32 size); void DispatchDirect(); void DispatchIndirect(VAddr address, u32 offset, u32 size); @@ -39,16 +40,19 @@ class Rasterizer { void ScopeMarkerBegin(const std::string_view& str); void ScopeMarkerEnd(); void ScopedMarkerInsert(const std::string_view& str); - void Breadcrumb(u64 id); + void InlineDataToGds(u32 gds_offset, u32 value); + u32 ReadDataFromGds(u32 gsd_offset); void InvalidateMemory(VAddr addr, u64 size); void MapMemory(VAddr addr, u64 size); void UnmapMemory(VAddr addr, u64 size); + void CpSync(); u64 Flush(); + void Finish(); private: - void BeginRendering(); + void BeginRendering(const GraphicsPipeline& pipeline); void UpdateDynamicState(const GraphicsPipeline& pipeline); void UpdateViewportScissorState(); diff --git a/src/video_core/renderer_vulkan/vk_resource_pool.cpp b/src/video_core/renderer_vulkan/vk_resource_pool.cpp index f9f2ae0a00..a5ee22c252 100644 --- a/src/video_core/renderer_vulkan/vk_resource_pool.cpp +++ b/src/video_core/renderer_vulkan/vk_resource_pool.cpp @@ -3,8 +3,8 @@ #include #include -#include #include "common/assert.h" +#include "common/scope_exit.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_master_semaphore.h" #include "video_core/renderer_vulkan/vk_resource_pool.h" @@ -103,88 +103,86 @@ vk::CommandBuffer CommandPool::Commit() { return cmd_buffers[index]; } -constexpr u32 DESCRIPTOR_SET_BATCH = 32; - -DescriptorHeap::DescriptorHeap(const Instance& instance, MasterSemaphore* master_semaphore, - std::span bindings, +DescriptorHeap::DescriptorHeap(const Instance& instance, MasterSemaphore* master_semaphore_, + std::span pool_sizes_, u32 descriptor_heap_count_) - : ResourcePool{master_semaphore, DESCRIPTOR_SET_BATCH}, device{instance.GetDevice()}, - descriptor_heap_count{descriptor_heap_count_} { - // Create descriptor set layout. - const vk::DescriptorSetLayoutCreateInfo layout_ci = { - .bindingCount = static_cast(bindings.size()), - .pBindings = bindings.data(), - }; - descriptor_set_layout = device.createDescriptorSetLayoutUnique(layout_ci); - if (instance.HasDebuggingToolAttached()) { - SetObjectName(device, *descriptor_set_layout, "DescriptorSetLayout"); - } + : device{instance.GetDevice()}, master_semaphore{master_semaphore_}, + descriptor_heap_count{descriptor_heap_count_}, pool_sizes{pool_sizes_} { + CreateDescriptorPool(); +} - // Build descriptor set pool counts. - std::unordered_map descriptor_type_counts; - for (const auto& binding : bindings) { - descriptor_type_counts[binding.descriptorType] += binding.descriptorCount; - } - for (const auto& [type, count] : descriptor_type_counts) { - auto& pool_size = pool_sizes.emplace_back(); - pool_size.descriptorCount = count * descriptor_heap_count; - pool_size.type = type; +DescriptorHeap::~DescriptorHeap() { + device.destroyDescriptorPool(curr_pool); + for (const auto [pool, tick] : pending_pools) { + master_semaphore->Wait(tick); + device.destroyDescriptorPool(pool); } - - // Create descriptor pool - AppendDescriptorPool(); } -DescriptorHeap::~DescriptorHeap() = default; +vk::DescriptorSet DescriptorHeap::Commit(vk::DescriptorSetLayout set_layout) { + const u64 set_key = std::bit_cast(set_layout); + const auto [it, _] = descriptor_sets.try_emplace(set_key); -void DescriptorHeap::Allocate(std::size_t begin, std::size_t end) { - ASSERT(end - begin == DESCRIPTOR_SET_BATCH); - descriptor_sets.resize(end); - hashes.resize(end); + // Check if allocated sets exist and pick one. + if (!it->second.empty()) { + const auto desc_set = it->second.back(); + it.value().pop_back(); + return desc_set; + } - std::array layouts; - layouts.fill(*descriptor_set_layout); + DescSetBatch desc_sets(DescriptorSetBatch); + std::array layouts; + layouts.fill(set_layout); - u32 current_pool = 0; vk::DescriptorSetAllocateInfo alloc_info = { - .descriptorPool = *pools[current_pool], - .descriptorSetCount = DESCRIPTOR_SET_BATCH, + .descriptorPool = curr_pool, + .descriptorSetCount = DescriptorSetBatch, .pSetLayouts = layouts.data(), }; - // Attempt to allocate the descriptor set batch. If the pool has run out of space, use a new - // one. - while (true) { - const auto result = - device.allocateDescriptorSets(&alloc_info, descriptor_sets.data() + begin); - if (result == vk::Result::eSuccess) { - break; - } - if (result == vk::Result::eErrorOutOfPoolMemory) { - current_pool++; - if (current_pool == pools.size()) { - LOG_INFO(Render_Vulkan, "Run out of pools, creating new one!"); - AppendDescriptorPool(); - } - alloc_info.descriptorPool = *pools[current_pool]; - } + // Attempt to allocate the descriptor set batch. + auto result = device.allocateDescriptorSets(&alloc_info, desc_sets.data()); + if (result == vk::Result::eSuccess) { + const auto desc_set = desc_sets.back(); + desc_sets.pop_back(); + it.value() = std::move(desc_sets); + return desc_set; } -} -vk::DescriptorSet DescriptorHeap::Commit() { - const std::size_t index = CommitResource(); - return descriptor_sets[index]; + // The pool has run out. Record current tick and place it in pending list. + ASSERT_MSG(result == vk::Result::eErrorOutOfPoolMemory, + "Unexpected error during descriptor set allocation {}", vk::to_string(result)); + pending_pools.emplace_back(curr_pool, master_semaphore->CurrentTick()); + if (const auto [pool, tick] = pending_pools.front(); master_semaphore->IsFree(tick)) { + curr_pool = pool; + pending_pools.pop_front(); + device.resetDescriptorPool(curr_pool); + } else { + CreateDescriptorPool(); + } + + // Attempt to allocate again with fresh pool. + alloc_info.descriptorPool = curr_pool; + result = device.allocateDescriptorSets(&alloc_info, desc_sets.data()); + ASSERT_MSG(result == vk::Result::eSuccess, + "Unexpected error during descriptor set allocation {}", vk::to_string(result)); + + // We've changed pool so also reset descriptor batch cache. + descriptor_sets.clear(); + const auto desc_set = desc_sets.back(); + desc_sets.pop_back(); + descriptor_sets[set_key] = std::move(desc_sets); + return desc_set; } -void DescriptorHeap::AppendDescriptorPool() { +void DescriptorHeap::CreateDescriptorPool() { const vk::DescriptorPoolCreateInfo pool_info = { .flags = vk::DescriptorPoolCreateFlagBits::eUpdateAfterBind, .maxSets = descriptor_heap_count, .poolSizeCount = static_cast(pool_sizes.size()), .pPoolSizes = pool_sizes.data(), }; - auto& pool = pools.emplace_back(); - pool = device.createDescriptorPoolUnique(pool_info); + curr_pool = device.createDescriptorPool(pool_info); } } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_resource_pool.h b/src/video_core/renderer_vulkan/vk_resource_pool.h index b138b96937..98c2ddb8c4 100644 --- a/src/video_core/renderer_vulkan/vk_resource_pool.h +++ b/src/video_core/renderer_vulkan/vk_resource_pool.h @@ -3,7 +3,9 @@ #pragma once +#include #include +#include #include #include "common/types.h" @@ -62,32 +64,29 @@ class CommandPool final : public ResourcePool { std::vector cmd_buffers; }; -class DescriptorHeap final : public ResourcePool { +class DescriptorHeap final { + static constexpr u32 DescriptorSetBatch = 32; + public: explicit DescriptorHeap(const Instance& instance, MasterSemaphore* master_semaphore, - std::span bindings, + std::span pool_sizes, u32 descriptor_heap_count = 1024); - ~DescriptorHeap() override; - - const vk::DescriptorSetLayout& Layout() const { - return *descriptor_set_layout; - } - - void Allocate(std::size_t begin, std::size_t end) override; + ~DescriptorHeap(); - vk::DescriptorSet Commit(); + vk::DescriptorSet Commit(vk::DescriptorSetLayout set_layout); private: - void AppendDescriptorPool(); + void CreateDescriptorPool(); private: vk::Device device; - vk::UniqueDescriptorSetLayout descriptor_set_layout; + MasterSemaphore* master_semaphore; u32 descriptor_heap_count; - std::vector pool_sizes; - std::vector pools; - std::vector descriptor_sets; - std::vector hashes; + std::span pool_sizes; + vk::DescriptorPool curr_pool; + std::deque> pending_pools; + using DescSetBatch = boost::container::static_vector; + tsl::robin_map descriptor_sets; }; } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index 2f1f13d726..08b5014ec1 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -4,6 +4,7 @@ #include #include "common/assert.h" #include "common/debug.h" +#include "imgui/renderer/texture_manager.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_scheduler.h" @@ -58,58 +59,6 @@ void Scheduler::EndRendering() { } is_rendering = false; current_cmdbuf.endRendering(); - - boost::container::static_vector barriers; - for (size_t i = 0; i < render_state.num_color_attachments; ++i) { - barriers.push_back(vk::ImageMemoryBarrier{ - .srcAccessMask = vk::AccessFlagBits::eColorAttachmentWrite, - .dstAccessMask = vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eShaderWrite, - .oldLayout = vk::ImageLayout::eColorAttachmentOptimal, - .newLayout = vk::ImageLayout::eColorAttachmentOptimal, - .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .image = render_state.color_images[i], - .subresourceRange = - { - .aspectMask = vk::ImageAspectFlagBits::eColor, - .baseMipLevel = 0, - .levelCount = VK_REMAINING_MIP_LEVELS, - .baseArrayLayer = 0, - .layerCount = VK_REMAINING_ARRAY_LAYERS, - }, - }); - } - if (render_state.has_depth || render_state.has_stencil) { - barriers.push_back(vk::ImageMemoryBarrier{ - .srcAccessMask = vk::AccessFlagBits::eDepthStencilAttachmentWrite, - .dstAccessMask = vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eShaderWrite, - .oldLayout = render_state.depth_attachment.imageLayout, - .newLayout = render_state.depth_attachment.imageLayout, - .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .image = render_state.depth_image, - .subresourceRange = - { - .aspectMask = vk::ImageAspectFlagBits::eDepth | - (render_state.has_stencil ? vk::ImageAspectFlagBits::eStencil - : vk::ImageAspectFlagBits::eNone), - .baseMipLevel = 0, - .levelCount = VK_REMAINING_MIP_LEVELS, - .baseArrayLayer = 0, - .layerCount = VK_REMAINING_ARRAY_LAYERS, - }, - }); - } - - if (!barriers.empty()) { - const auto src_stages = - vk::PipelineStageFlagBits::eColorAttachmentOutput | - (render_state.has_depth ? vk::PipelineStageFlagBits::eLateFragmentTests | - vk::PipelineStageFlagBits::eEarlyFragmentTests - : vk::PipelineStageFlagBits::eNone); - current_cmdbuf.pipelineBarrier(src_stages, vk::PipelineStageFlagBits::eFragmentShader, - vk::DependencyFlagBits::eByRegion, {}, {}, barriers); - } } void Scheduler::Flush(SubmitInfo& info) { @@ -190,15 +139,9 @@ void Scheduler::SubmitExecution(SubmitInfo& info) { }; try { + ImGui::Core::TextureManager::Submit(); instance.GetGraphicsQueue().submit(submit_info, info.fence); } catch (vk::DeviceLostError& err) { - if (instance.HasNvCheckpoints()) { - const auto checkpoint_data = instance.GetGraphicsQueue().getCheckpointData2NV(); - for (const auto& cp : checkpoint_data) { - LOG_CRITICAL(Render_Vulkan, "{}: {:#x}", vk::to_string(cp.stage), - reinterpret_cast(cp.pCheckpointMarker)); - } - } UNREACHABLE_MSG("Device lost during submit: {}", err.what()); } diff --git a/src/video_core/renderer_vulkan/vk_shader_cache.cpp b/src/video_core/renderer_vulkan/vk_shader_cache.cpp deleted file mode 100644 index 9250f84ced..0000000000 --- a/src/video_core/renderer_vulkan/vk_shader_cache.cpp +++ /dev/null @@ -1,192 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "common/config.h" -#include "common/io_file.h" -#include "common/path_util.h" -#include "shader_recompiler/backend/spirv/emit_spirv.h" -#include "shader_recompiler/recompiler.h" -#include "video_core/renderer_vulkan/vk_instance.h" -#include "video_core/renderer_vulkan/vk_platform.h" -#include "video_core/renderer_vulkan/vk_shader_cache.h" -#include "video_core/renderer_vulkan/vk_shader_util.h" - -namespace Vulkan { - -using Shader::VsOutput; - -void BuildVsOutputs(Shader::Info& info, const AmdGpu::Liverpool::VsOutputControl& ctl) { - const auto add_output = [&](VsOutput x, VsOutput y, VsOutput z, VsOutput w) { - if (x != VsOutput::None || y != VsOutput::None || z != VsOutput::None || - w != VsOutput::None) { - info.vs_outputs.emplace_back(Shader::VsOutputMap{x, y, z, w}); - } - }; - // VS_OUT_MISC_VEC - add_output(ctl.use_vtx_point_size ? VsOutput::PointSprite : VsOutput::None, - ctl.use_vtx_edge_flag - ? VsOutput::EdgeFlag - : (ctl.use_vtx_gs_cut_flag ? VsOutput::GsCutFlag : VsOutput::None), - ctl.use_vtx_kill_flag - ? VsOutput::KillFlag - : (ctl.use_vtx_render_target_idx ? VsOutput::GsMrtIndex : VsOutput::None), - ctl.use_vtx_viewport_idx ? VsOutput::GsVpIndex : VsOutput::None); - // VS_OUT_CCDIST0 - add_output(ctl.IsClipDistEnabled(0) - ? VsOutput::ClipDist0 - : (ctl.IsCullDistEnabled(0) ? VsOutput::CullDist0 : VsOutput::None), - ctl.IsClipDistEnabled(1) - ? VsOutput::ClipDist1 - : (ctl.IsCullDistEnabled(1) ? VsOutput::CullDist1 : VsOutput::None), - ctl.IsClipDistEnabled(2) - ? VsOutput::ClipDist2 - : (ctl.IsCullDistEnabled(2) ? VsOutput::CullDist2 : VsOutput::None), - ctl.IsClipDistEnabled(3) - ? VsOutput::ClipDist3 - : (ctl.IsCullDistEnabled(3) ? VsOutput::CullDist3 : VsOutput::None)); - // VS_OUT_CCDIST1 - add_output(ctl.IsClipDistEnabled(4) - ? VsOutput::ClipDist4 - : (ctl.IsCullDistEnabled(4) ? VsOutput::CullDist4 : VsOutput::None), - ctl.IsClipDistEnabled(5) - ? VsOutput::ClipDist5 - : (ctl.IsCullDistEnabled(5) ? VsOutput::CullDist5 : VsOutput::None), - ctl.IsClipDistEnabled(6) - ? VsOutput::ClipDist6 - : (ctl.IsCullDistEnabled(6) ? VsOutput::CullDist6 : VsOutput::None), - ctl.IsClipDistEnabled(7) - ? VsOutput::ClipDist7 - : (ctl.IsCullDistEnabled(7) ? VsOutput::CullDist7 : VsOutput::None)); -} - -Shader::Info MakeShaderInfo(const GuestProgram& pgm, const AmdGpu::Liverpool::Regs& regs) { - Shader::Info info{}; - info.user_data = pgm.user_data; - info.pgm_base = VAddr(pgm.code.data()); - info.pgm_hash = pgm.hash; - info.stage = pgm.stage; - switch (pgm.stage) { - case Shader::Stage::Vertex: { - info.num_user_data = regs.vs_program.settings.num_user_regs; - info.num_input_vgprs = regs.vs_program.settings.vgpr_comp_cnt; - BuildVsOutputs(info, regs.vs_output_control); - break; - } - case Shader::Stage::Fragment: { - info.num_user_data = regs.ps_program.settings.num_user_regs; - for (u32 i = 0; i < regs.num_interp; i++) { - info.ps_inputs.push_back({ - .param_index = regs.ps_inputs[i].input_offset.Value(), - .is_default = bool(regs.ps_inputs[i].use_default), - .is_flat = bool(regs.ps_inputs[i].flat_shade), - .default_value = regs.ps_inputs[i].default_value, - }); - } - break; - } - case Shader::Stage::Compute: { - const auto& cs_pgm = regs.cs_program; - info.num_user_data = cs_pgm.settings.num_user_regs; - info.workgroup_size = {cs_pgm.num_thread_x.full, cs_pgm.num_thread_y.full, - cs_pgm.num_thread_z.full}; - info.tgid_enable = {cs_pgm.IsTgidEnabled(0), cs_pgm.IsTgidEnabled(1), - cs_pgm.IsTgidEnabled(2)}; - info.shared_memory_size = cs_pgm.SharedMemSize(); - break; - } - default: - break; - } - return info; -} - -[[nodiscard]] inline u64 HashCombine(const u64 seed, const u64 hash) { - return seed ^ (hash + 0x9e3779b9 + (seed << 6) + (seed >> 2)); -} - -ShaderCache::ShaderCache(const Instance& instance_, AmdGpu::Liverpool* liverpool_) - : instance{instance_}, liverpool{liverpool_}, inst_pool{8192}, block_pool{512} { - profile = Shader::Profile{ - .supported_spirv = instance.ApiVersion() >= VK_API_VERSION_1_3 ? 0x00010600U : 0x00010500U, - .subgroup_size = instance.SubgroupSize(), - .support_explicit_workgroup_layout = true, - }; -} - -vk::ShaderModule ShaderCache::CompileModule(Shader::Info& info, std::span code, - size_t perm_idx, u32& binding) { - LOG_INFO(Render_Vulkan, "Compiling {} shader {:#x} {}", info.stage, info.pgm_hash, - perm_idx != 0 ? "(permutation)" : ""); - - if (Config::dumpShaders()) { - DumpShader(code, info.pgm_hash, info.stage, perm_idx, "bin"); - } - - block_pool.ReleaseContents(); - inst_pool.ReleaseContents(); - const auto ir_program = Shader::TranslateProgram(inst_pool, block_pool, code, info, profile); - - // Compile IR to SPIR-V - const auto spv = Shader::Backend::SPIRV::EmitSPIRV(profile, ir_program, binding); - if (Config::dumpShaders()) { - DumpShader(spv, info.pgm_hash, info.stage, perm_idx, "spv"); - } - - // Create module and set name to hash in renderdoc - const auto module = CompileSPV(spv, instance.GetDevice()); - ASSERT(module != VK_NULL_HANDLE); - const auto name = fmt::format("{}_{:#x}_{}", info.stage, info.pgm_hash, perm_idx); - Vulkan::SetObjectName(instance.GetDevice(), module, name); - return module; -} - -Program* ShaderCache::CreateProgram(const GuestProgram& pgm, u32& binding) { - Program* program = program_pool.Create(MakeShaderInfo(pgm, liverpool->regs)); - u32 start_binding = binding; - const auto module = CompileModule(program->info, pgm.code, 0, binding); - program->modules.emplace_back(module, StageSpecialization{program->info, start_binding}); - return program; -} - -std::tuple ShaderCache::GetProgram( - const GuestProgram& pgm, u32& binding) { - auto [it_pgm, new_program] = program_cache.try_emplace(pgm.hash); - if (new_program) { - auto program = CreateProgram(pgm, binding); - const auto module = program->modules.back().module; - it_pgm.value() = program; - return std::make_tuple(&program->info, module, HashCombine(pgm.hash, 0)); - } - - Program* program = it_pgm->second; - const auto& info = program->info; - size_t perm_idx = program->modules.size(); - StageSpecialization spec{info, binding}; - vk::ShaderModule module{}; - - const auto it = std::ranges::find(program->modules, spec, &Program::Module::spec); - if (it == program->modules.end()) { - auto new_info = MakeShaderInfo(pgm, liverpool->regs); - module = CompileModule(new_info, pgm.code, perm_idx, binding); - program->modules.emplace_back(module, std::move(spec)); - } else { - binding += info.NumBindings(); - module = it->module; - perm_idx = std::distance(program->modules.begin(), it); - } - return std::make_tuple(&info, module, HashCombine(pgm.hash, perm_idx)); -} - -void ShaderCache::DumpShader(std::span code, u64 hash, Shader::Stage stage, - size_t perm_idx, std::string_view ext) { - using namespace Common::FS; - const auto dump_dir = GetUserPath(PathType::ShaderDir) / "dumps"; - if (!std::filesystem::exists(dump_dir)) { - std::filesystem::create_directories(dump_dir); - } - const auto filename = fmt::format("{}_{:#018x}_{}.{}", stage, hash, perm_idx, ext); - const auto file = IOFile{dump_dir / filename, FileAccessMode::Write}; - file.WriteSpan(code); -} - -} // namespace Vulkan diff --git a/src/video_core/texture_cache/host_compatibility.h b/src/video_core/texture_cache/host_compatibility.h new file mode 100644 index 0000000000..a73f7e6bea --- /dev/null +++ b/src/video_core/texture_cache/host_compatibility.h @@ -0,0 +1,392 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// Copyright © 2023 Skyline Team and Contributors (https://github.com/skyline-emu/) +// Copyright © 2015-2023 The Khronos Group Inc. +// Copyright © 2015-2023 Valve Corporation +// Copyright © 2015-2023 LunarG, Inc. + +#pragma once + +#include +#include "video_core/renderer_vulkan/vk_common.h" + +namespace VideoCore { +/** + * @brief All classes of format compatibility according to the Vulkan specification + * @url + * https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/d37c676f75f545a3e5a98d7dfb89864391a1db1e/layers/generated/vk_format_utils.h#L47-L131 + * @note This is copied directly from Vulkan Validation Layers and doesn't follow the Skyline naming + * conventions + */ +enum class FORMAT_COMPATIBILITY_CLASS { + NONE = 0, + _10BIT_2PLANE_420, + _10BIT_2PLANE_422, + _10BIT_2PLANE_444, + _10BIT_3PLANE_420, + _10BIT_3PLANE_422, + _10BIT_3PLANE_444, + _12BIT_2PLANE_420, + _12BIT_2PLANE_422, + _12BIT_2PLANE_444, + _12BIT_3PLANE_420, + _12BIT_3PLANE_422, + _12BIT_3PLANE_444, + _128BIT, + _16BIT, + _16BIT_2PLANE_420, + _16BIT_2PLANE_422, + _16BIT_2PLANE_444, + _16BIT_3PLANE_420, + _16BIT_3PLANE_422, + _16BIT_3PLANE_444, + _192BIT, + _24BIT, + _256BIT, + _32BIT, + _32BIT_B8G8R8G8, + _32BIT_G8B8G8R8, + _48BIT, + _64BIT, + _64BIT_B10G10R10G10, + _64BIT_B12G12R12G12, + _64BIT_B16G16R16G16, + _64BIT_G10B10G10R10, + _64BIT_G12B12G12R12, + _64BIT_G16B16G16R16, + _64BIT_R10G10B10A10, + _64BIT_R12G12B12A12, + _8BIT, + _8BIT_2PLANE_420, + _8BIT_2PLANE_422, + _8BIT_2PLANE_444, + _8BIT_3PLANE_420, + _8BIT_3PLANE_422, + _8BIT_3PLANE_444, + _96BIT, + ASTC_10X10, + ASTC_10X5, + ASTC_10X6, + ASTC_10X8, + ASTC_12X10, + ASTC_12X12, + ASTC_4X4, + ASTC_5X4, + ASTC_5X5, + ASTC_6X5, + ASTC_6X6, + ASTC_8X5, + ASTC_8X6, + ASTC_8X8, + BC1_RGB, + BC1_RGBA, + BC2, + BC3, + BC4, + BC5, + BC6H, + BC7, + D16, + D16S8, + D24, + D24S8, + D32, + D32S8, + EAC_R, + EAC_RG, + ETC2_EAC_RGBA, + ETC2_RGB, + ETC2_RGBA, + PVRTC1_2BPP, + PVRTC1_4BPP, + PVRTC2_2BPP, + PVRTC2_4BPP, + S8 +}; + +/** + * @brief The format compatibility class according to the Vulkan specification + * @url + * https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes + * @url + * https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/d37c676f75f545a3e5a98d7dfb89864391a1db1e/layers/generated/vk_format_utils.cpp#L70-L812 + * @note This is copied directly from Vulkan Validation Layers and doesn't follow the Skyline naming + * conventions + */ +static const std::unordered_map vkFormatClassTable{ + {VK_FORMAT_A1R5G5B5_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_A2B10G10R10_SINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2B10G10R10_SNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2B10G10R10_SSCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2B10G10R10_UINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2B10G10R10_UNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2B10G10R10_USCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2R10G10B10_SINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2R10G10B10_SNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2R10G10B10_SSCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2R10G10B10_UINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2R10G10B10_UNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A2R10G10B10_USCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_A8B8G8R8_SINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A8B8G8R8_SNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A8B8G8R8_SRGB_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A8B8G8R8_SSCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A8B8G8R8_UINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A8B8G8R8_UNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_A8B8G8R8_USCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_10X10}, + {VK_FORMAT_ASTC_10x10_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X10}, + {VK_FORMAT_ASTC_10x10_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X10}, + {VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_10X5}, + {VK_FORMAT_ASTC_10x5_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X5}, + {VK_FORMAT_ASTC_10x5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X5}, + {VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_10X6}, + {VK_FORMAT_ASTC_10x6_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X6}, + {VK_FORMAT_ASTC_10x6_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X6}, + {VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_10X8}, + {VK_FORMAT_ASTC_10x8_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X8}, + {VK_FORMAT_ASTC_10x8_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X8}, + {VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_12X10}, + {VK_FORMAT_ASTC_12x10_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_12X10}, + {VK_FORMAT_ASTC_12x10_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_12X10}, + {VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_12X12}, + {VK_FORMAT_ASTC_12x12_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_12X12}, + {VK_FORMAT_ASTC_12x12_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_12X12}, + {VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_4X4}, + {VK_FORMAT_ASTC_4x4_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_4X4}, + {VK_FORMAT_ASTC_4x4_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_4X4}, + {VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_5X4}, + {VK_FORMAT_ASTC_5x4_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_5X4}, + {VK_FORMAT_ASTC_5x4_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_5X4}, + {VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_5X5}, + {VK_FORMAT_ASTC_5x5_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_5X5}, + {VK_FORMAT_ASTC_5x5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_5X5}, + {VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_6X5}, + {VK_FORMAT_ASTC_6x5_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_6X5}, + {VK_FORMAT_ASTC_6x5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_6X5}, + {VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_6X6}, + {VK_FORMAT_ASTC_6x6_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_6X6}, + {VK_FORMAT_ASTC_6x6_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_6X6}, + {VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_8X5}, + {VK_FORMAT_ASTC_8x5_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X5}, + {VK_FORMAT_ASTC_8x5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X5}, + {VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_8X6}, + {VK_FORMAT_ASTC_8x6_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X6}, + {VK_FORMAT_ASTC_8x6_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X6}, + {VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_8X8}, + {VK_FORMAT_ASTC_8x8_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X8}, + {VK_FORMAT_ASTC_8x8_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X8}, + {VK_FORMAT_B10G11R11_UFLOAT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + FORMAT_COMPATIBILITY_CLASS::_64BIT_B10G10R10G10}, + {VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + FORMAT_COMPATIBILITY_CLASS::_64BIT_B12G12R12G12}, + {VK_FORMAT_B16G16R16G16_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_64BIT_B16G16R16G16}, + {VK_FORMAT_B4G4R4A4_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_B5G5R5A1_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_B5G6R5_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_B8G8R8A8_SINT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_B8G8R8A8_SNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_B8G8R8A8_SRGB, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_B8G8R8A8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_B8G8R8A8_UINT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_B8G8R8A8_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_B8G8R8A8_USCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_B8G8R8G8_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT_B8G8R8G8}, + {VK_FORMAT_B8G8R8_SINT, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_B8G8R8_SNORM, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_B8G8R8_SRGB, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_B8G8R8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_B8G8R8_UINT, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_B8G8R8_UNORM, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_B8G8R8_USCALED, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_BC1_RGBA_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC1_RGBA}, + {VK_FORMAT_BC1_RGBA_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC1_RGBA}, + {VK_FORMAT_BC1_RGB_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC1_RGB}, + {VK_FORMAT_BC1_RGB_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC1_RGB}, + {VK_FORMAT_BC2_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC2}, + {VK_FORMAT_BC2_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC2}, + {VK_FORMAT_BC3_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC3}, + {VK_FORMAT_BC3_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC3}, + {VK_FORMAT_BC4_SNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC4}, + {VK_FORMAT_BC4_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC4}, + {VK_FORMAT_BC5_SNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC5}, + {VK_FORMAT_BC5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC5}, + {VK_FORMAT_BC6H_SFLOAT_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC6H}, + {VK_FORMAT_BC6H_UFLOAT_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC6H}, + {VK_FORMAT_BC7_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC7}, + {VK_FORMAT_BC7_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC7}, + {VK_FORMAT_D16_UNORM, FORMAT_COMPATIBILITY_CLASS::D16}, + {VK_FORMAT_D16_UNORM_S8_UINT, FORMAT_COMPATIBILITY_CLASS::D16S8}, + {VK_FORMAT_D24_UNORM_S8_UINT, FORMAT_COMPATIBILITY_CLASS::D24S8}, + {VK_FORMAT_D32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::D32}, + {VK_FORMAT_D32_SFLOAT_S8_UINT, FORMAT_COMPATIBILITY_CLASS::D32S8}, + {VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_EAC_R11G11_SNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::EAC_RG}, + {VK_FORMAT_EAC_R11G11_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::EAC_RG}, + {VK_FORMAT_EAC_R11_SNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::EAC_R}, + {VK_FORMAT_EAC_R11_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::EAC_R}, + {VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_RGBA}, + {VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_RGBA}, + {VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_EAC_RGBA}, + {VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_EAC_RGBA}, + {VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_RGB}, + {VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_RGB}, + {VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + FORMAT_COMPATIBILITY_CLASS::_64BIT_G10B10G10R10}, + {VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_10BIT_2PLANE_420}, + {VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_10BIT_2PLANE_422}, + {VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT, + FORMAT_COMPATIBILITY_CLASS::_10BIT_2PLANE_444}, + {VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_10BIT_3PLANE_420}, + {VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_10BIT_3PLANE_422}, + {VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_10BIT_3PLANE_444}, + {VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + FORMAT_COMPATIBILITY_CLASS::_64BIT_G12B12G12R12}, + {VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_12BIT_2PLANE_420}, + {VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_12BIT_2PLANE_422}, + {VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT, + FORMAT_COMPATIBILITY_CLASS::_12BIT_2PLANE_444}, + {VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_12BIT_3PLANE_420}, + {VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_12BIT_3PLANE_422}, + {VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + FORMAT_COMPATIBILITY_CLASS::_12BIT_3PLANE_444}, + {VK_FORMAT_G16B16G16R16_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_64BIT_G16B16G16R16}, + {VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_2PLANE_420}, + {VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_2PLANE_422}, + {VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT, FORMAT_COMPATIBILITY_CLASS::_16BIT_2PLANE_444}, + {VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_3PLANE_420}, + {VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_3PLANE_422}, + {VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_3PLANE_444}, + {VK_FORMAT_G8B8G8R8_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT_G8B8G8R8}, + {VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_2PLANE_420}, + {VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_2PLANE_422}, + {VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT, FORMAT_COMPATIBILITY_CLASS::_8BIT_2PLANE_444}, + {VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_3PLANE_420}, + {VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_3PLANE_422}, + {VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_3PLANE_444}, + {VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC1_2BPP}, + {VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC1_2BPP}, + {VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC1_4BPP}, + {VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC1_4BPP}, + {VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC2_2BPP}, + {VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC2_2BPP}, + {VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC2_4BPP}, + {VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC2_4BPP}, + {VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, FORMAT_COMPATIBILITY_CLASS::_64BIT_R10G10B10A10}, + {VK_FORMAT_R10X6G10X6_UNORM_2PACK16, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R10X6_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, FORMAT_COMPATIBILITY_CLASS::_64BIT_R12G12B12A12}, + {VK_FORMAT_R12X4G12X4_UNORM_2PACK16, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R12X4_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R16G16B16A16_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R16G16B16A16_SINT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R16G16B16A16_SNORM, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R16G16B16A16_SSCALED, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R16G16B16A16_UINT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R16G16B16A16_UNORM, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R16G16B16A16_USCALED, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R16G16B16_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_48BIT}, + {VK_FORMAT_R16G16B16_SINT, FORMAT_COMPATIBILITY_CLASS::_48BIT}, + {VK_FORMAT_R16G16B16_SNORM, FORMAT_COMPATIBILITY_CLASS::_48BIT}, + {VK_FORMAT_R16G16B16_SSCALED, FORMAT_COMPATIBILITY_CLASS::_48BIT}, + {VK_FORMAT_R16G16B16_UINT, FORMAT_COMPATIBILITY_CLASS::_48BIT}, + {VK_FORMAT_R16G16B16_UNORM, FORMAT_COMPATIBILITY_CLASS::_48BIT}, + {VK_FORMAT_R16G16B16_USCALED, FORMAT_COMPATIBILITY_CLASS::_48BIT}, + {VK_FORMAT_R16G16_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R16G16_SINT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R16G16_SNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R16G16_SSCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R16G16_UINT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R16G16_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R16G16_USCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R16_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R16_SINT, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R16_SNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R16_SSCALED, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R16_UINT, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R16_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R16_USCALED, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R32G32B32A32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_128BIT}, + {VK_FORMAT_R32G32B32A32_SINT, FORMAT_COMPATIBILITY_CLASS::_128BIT}, + {VK_FORMAT_R32G32B32A32_UINT, FORMAT_COMPATIBILITY_CLASS::_128BIT}, + {VK_FORMAT_R32G32B32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_96BIT}, + {VK_FORMAT_R32G32B32_SINT, FORMAT_COMPATIBILITY_CLASS::_96BIT}, + {VK_FORMAT_R32G32B32_UINT, FORMAT_COMPATIBILITY_CLASS::_96BIT}, + {VK_FORMAT_R32G32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R32G32_SINT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R32G32_UINT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R32_SINT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R32_UINT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R4G4B4A4_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R4G4_UNORM_PACK8, FORMAT_COMPATIBILITY_CLASS::_8BIT}, + {VK_FORMAT_R5G5B5A1_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R5G6B5_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R64G64B64A64_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_256BIT}, + {VK_FORMAT_R64G64B64A64_SINT, FORMAT_COMPATIBILITY_CLASS::_256BIT}, + {VK_FORMAT_R64G64B64A64_UINT, FORMAT_COMPATIBILITY_CLASS::_256BIT}, + {VK_FORMAT_R64G64B64_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_192BIT}, + {VK_FORMAT_R64G64B64_SINT, FORMAT_COMPATIBILITY_CLASS::_192BIT}, + {VK_FORMAT_R64G64B64_UINT, FORMAT_COMPATIBILITY_CLASS::_192BIT}, + {VK_FORMAT_R64G64_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_128BIT}, + {VK_FORMAT_R64G64_SINT, FORMAT_COMPATIBILITY_CLASS::_128BIT}, + {VK_FORMAT_R64G64_UINT, FORMAT_COMPATIBILITY_CLASS::_128BIT}, + {VK_FORMAT_R64_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R64_SINT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R64_UINT, FORMAT_COMPATIBILITY_CLASS::_64BIT}, + {VK_FORMAT_R8G8B8A8_SINT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R8G8B8A8_SNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R8G8B8A8_SRGB, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R8G8B8A8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R8G8B8A8_UINT, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R8G8B8A8_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R8G8B8A8_USCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT}, + {VK_FORMAT_R8G8B8_SINT, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_R8G8B8_SNORM, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_R8G8B8_SRGB, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_R8G8B8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_R8G8B8_UINT, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_R8G8B8_UNORM, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_R8G8B8_USCALED, FORMAT_COMPATIBILITY_CLASS::_24BIT}, + {VK_FORMAT_R8G8_SINT, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R8G8_SNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R8G8_SRGB, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R8G8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R8G8_UINT, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R8G8_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R8G8_USCALED, FORMAT_COMPATIBILITY_CLASS::_16BIT}, + {VK_FORMAT_R8_SINT, FORMAT_COMPATIBILITY_CLASS::_8BIT}, + {VK_FORMAT_R8_SNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT}, + {VK_FORMAT_R8_SRGB, FORMAT_COMPATIBILITY_CLASS::_8BIT}, + {VK_FORMAT_R8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_8BIT}, + {VK_FORMAT_R8_UINT, FORMAT_COMPATIBILITY_CLASS::_8BIT}, + {VK_FORMAT_R8_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT}, + {VK_FORMAT_R8_USCALED, FORMAT_COMPATIBILITY_CLASS::_8BIT}, + {VK_FORMAT_S8_UINT, FORMAT_COMPATIBILITY_CLASS::S8}, + {VK_FORMAT_X8_D24_UNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::D24}, + {VK_FORMAT_UNDEFINED, FORMAT_COMPATIBILITY_CLASS::NONE}, +}; + +/** + * @return If the two formats are compatible according to Vulkan's format compatibility rules + * @url + * https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility + */ +static bool IsVulkanFormatCompatible(vk::Format lhs, vk::Format rhs) { + if (lhs == rhs) { + return true; + } + return vkFormatClassTable.at(VkFormat(lhs)) == vkFormatClassTable.at(VkFormat(rhs)); +} +} // namespace VideoCore diff --git a/src/video_core/texture_cache/image.cpp b/src/video_core/texture_cache/image.cpp index 0b725655bd..4ce6e1eea6 100644 --- a/src/video_core/texture_cache/image.cpp +++ b/src/video_core/texture_cache/image.cpp @@ -1,20 +1,22 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#define VULKAN_HPP_NO_EXCEPTIONS +#include #include "common/assert.h" -#include "common/config.h" #include "video_core/renderer_vulkan/liverpool_to_vk.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_scheduler.h" #include "video_core/texture_cache/image.h" -#include "video_core/texture_cache/tile_manager.h" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnullability-completeness" #include +#pragma GCC diagnostic pop namespace VideoCore { using namespace Vulkan; -using Libraries::VideoOut::TilingMode; bool ImageInfo::IsBlockCoded() const { switch (pixel_format) { @@ -73,7 +75,6 @@ static vk::ImageUsageFlags ImageUsageFlags(const ImageInfo& info) { if (!info.IsBlockCoded() && !info.IsPacked()) { usage |= vk::ImageUsageFlagBits::eColorAttachment; } - // In cases where an image is created as a render/depth target and cleared with compute, // we cannot predict whether it will be used as a storage image. A proper solution would // involve re-creating the resource with a new configuration and copying previous content @@ -124,7 +125,7 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, // the texture cache should re-create the resource with the usage requested vk::ImageCreateFlags flags{vk::ImageCreateFlagBits::eMutableFormat | vk::ImageCreateFlagBits::eExtendedUsage}; - if (info.props.is_cube) { + if (info.props.is_cube || (info.type == vk::ImageType::e2D && info.resources.layers >= 6)) { flags |= vk::ImageCreateFlagBits::eCubeCompatible; } else if (info.props.is_volume) { flags |= vk::ImageCreateFlagBits::e2DArrayCompatible; @@ -147,10 +148,18 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, break; } + constexpr auto tiling = vk::ImageTiling::eOptimal; + const auto supported_format = instance->GetSupportedFormat(info.pixel_format); + const auto properties = instance->GetPhysicalDevice().getImageFormatProperties( + supported_format, info.type, tiling, usage, flags); + const auto supported_samples = properties.result == vk::Result::eSuccess + ? properties.value.sampleCounts + : vk::SampleCountFlagBits::e1; + const vk::ImageCreateInfo image_ci = { .flags = flags, .imageType = info.type, - .format = instance->GetSupportedFormat(info.pixel_format), + .format = supported_format, .extent{ .width = info.size.width, .height = info.size.height, @@ -158,64 +167,145 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, }, .mipLevels = static_cast(info.resources.levels), .arrayLayers = static_cast(info.resources.layers), - .samples = LiverpoolToVK::NumSamples(info.num_samples), - .tiling = vk::ImageTiling::eOptimal, + .samples = LiverpoolToVK::NumSamples(info.num_samples, supported_samples), + .tiling = tiling, .usage = usage, .initialLayout = vk::ImageLayout::eUndefined, }; image.Create(image_ci); - Vulkan::SetObjectName(instance->GetDevice(), (vk::Image)image, "Image {:#x}:{:#x}", - info.guest_address, info.guest_size_bytes); + Vulkan::SetObjectName(instance->GetDevice(), (vk::Image)image, "Image {}x{}x{} {:#x}:{:#x}", + info.size.width, info.size.height, info.size.depth, info.guest_address, + info.guest_size_bytes); } -void Image::Transit(vk::ImageLayout dst_layout, vk::Flags dst_mask, - vk::CommandBuffer cmdbuf) { - if (dst_layout == layout && dst_mask == access_mask) { - return; +boost::container::small_vector Image::GetBarriers( + vk::ImageLayout dst_layout, vk::Flags dst_mask, + vk::PipelineStageFlags2 dst_stage, std::optional subres_range) { + const bool needs_partial_transition = + subres_range && + (subres_range->base != SubresourceBase{} || subres_range->extent != info.resources); + const bool partially_transited = !subresource_states.empty(); + + boost::container::small_vector barriers{}; + if (needs_partial_transition || partially_transited) { + if (!partially_transited) { + subresource_states.resize(info.resources.levels * info.resources.layers); + std::fill(subresource_states.begin(), subresource_states.end(), last_state); + } + + // In case of partial transition, we need to change the specified subresources only. + // Otherwise all subresources need to be set to the same state so we can use a full + // resource transition for the next time. + const auto mips = + needs_partial_transition + ? std::ranges::views::iota(subres_range->base.level, + subres_range->base.level + subres_range->extent.levels) + : std::views::iota(0u, info.resources.levels); + const auto layers = + needs_partial_transition + ? std::ranges::views::iota(subres_range->base.layer, + subres_range->base.layer + subres_range->extent.layers) + : std::views::iota(0u, info.resources.layers); + + for (u32 mip : mips) { + for (u32 layer : layers) { + // NOTE: these loops may produce a lot of small barriers. + // If this becomes a problem, we can optimize it by merging adjacent barriers. + const auto subres_idx = mip * info.resources.layers + layer; + ASSERT(subres_idx < subresource_states.size()); + auto& state = subresource_states[subres_idx]; + + if (state.layout != dst_layout || state.access_mask != dst_mask) { + barriers.emplace_back(vk::ImageMemoryBarrier2{ + .srcStageMask = state.pl_stage, + .srcAccessMask = state.access_mask, + .dstStageMask = dst_stage, + .dstAccessMask = dst_mask, + .oldLayout = state.layout, + .newLayout = dst_layout, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = image, + .subresourceRange{ + .aspectMask = aspect_mask, + .baseMipLevel = mip, + .levelCount = 1, + .baseArrayLayer = layer, + .layerCount = 1, + }, + }); + state.layout = dst_layout; + state.access_mask = dst_mask; + state.pl_stage = dst_stage; + } + } + } + + if (!needs_partial_transition) { + subresource_states.clear(); + } + } else { // Full resource transition + if (last_state.layout == dst_layout && last_state.access_mask == dst_mask) { + return {}; + } + + barriers.emplace_back(vk::ImageMemoryBarrier2{ + .srcStageMask = last_state.pl_stage, + .srcAccessMask = last_state.access_mask, + .dstStageMask = dst_stage, + .dstAccessMask = dst_mask, + .oldLayout = last_state.layout, + .newLayout = dst_layout, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = image, + .subresourceRange{ + .aspectMask = aspect_mask, + .baseMipLevel = 0, + .levelCount = VK_REMAINING_MIP_LEVELS, + .baseArrayLayer = 0, + .layerCount = VK_REMAINING_ARRAY_LAYERS, + }, + }); } - const vk::ImageMemoryBarrier barrier = { - .srcAccessMask = access_mask, - .dstAccessMask = dst_mask, - .oldLayout = layout, - .newLayout = dst_layout, - .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .image = image, - .subresourceRange{ - .aspectMask = aspect_mask, - .baseMipLevel = 0, - .levelCount = VK_REMAINING_MIP_LEVELS, - .baseArrayLayer = 0, - .layerCount = VK_REMAINING_ARRAY_LAYERS, - }, - }; + last_state.layout = dst_layout; + last_state.access_mask = dst_mask; + last_state.pl_stage = dst_stage; + + return barriers; +} +void Image::Transit(vk::ImageLayout dst_layout, vk::Flags dst_mask, + std::optional range, vk::CommandBuffer cmdbuf /*= {}*/) { // Adjust pipieline stage - const vk::PipelineStageFlags dst_pl_stage = - (dst_mask == vk::AccessFlagBits::eTransferRead || - dst_mask == vk::AccessFlagBits::eTransferWrite) - ? vk::PipelineStageFlagBits::eTransfer - : vk::PipelineStageFlagBits::eAllGraphics | vk::PipelineStageFlagBits::eComputeShader; + const vk::PipelineStageFlags2 dst_pl_stage = + (dst_mask == vk::AccessFlagBits2::eTransferRead || + dst_mask == vk::AccessFlagBits2::eTransferWrite) + ? vk::PipelineStageFlagBits2::eTransfer + : vk::PipelineStageFlagBits2::eAllGraphics | vk::PipelineStageFlagBits2::eComputeShader; + + const auto barriers = GetBarriers(dst_layout, dst_mask, dst_pl_stage, range); + if (barriers.empty()) { + return; + } if (!cmdbuf) { // When using external cmdbuf you are responsible for ending rp. scheduler->EndRendering(); cmdbuf = scheduler->CommandBuffer(); } - cmdbuf.pipelineBarrier(pl_stage, dst_pl_stage, vk::DependencyFlagBits::eByRegion, {}, {}, - barrier); - - layout = dst_layout; - access_mask = dst_mask; - pl_stage = dst_pl_stage; + cmdbuf.pipelineBarrier2(vk::DependencyInfo{ + .imageMemoryBarrierCount = static_cast(barriers.size()), + .pImageMemoryBarriers = barriers.data(), + }); } void Image::Upload(vk::Buffer buffer, u64 offset) { scheduler->EndRendering(); - Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits::eTransferWrite); + Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits2::eTransferWrite, {}); // Copy to the image. const auto aspect = aspect_mask & vk::ImageAspectFlagBits::eStencil @@ -239,7 +329,77 @@ void Image::Upload(vk::Buffer buffer, u64 offset) { cmdbuf.copyBufferToImage(buffer, image, vk::ImageLayout::eTransferDstOptimal, image_copy); Transit(vk::ImageLayout::eGeneral, - vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eTransferRead); + vk::AccessFlagBits2::eShaderRead | vk::AccessFlagBits2::eTransferRead, {}); +} + +void Image::CopyImage(const Image& image) { + scheduler->EndRendering(); + Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits2::eTransferWrite, {}); + + auto cmdbuf = scheduler->CommandBuffer(); + + boost::container::small_vector image_copy{}; + for (u32 m = 0; m < image.info.resources.levels; ++m) { + const auto mip_w = std::max(info.size.width >> m, 1u); + const auto mip_h = std::max(info.size.height >> m, 1u); + const auto mip_d = std::max(info.size.depth >> m, 1u); + + image_copy.emplace_back(vk::ImageCopy{ + .srcSubresource{ + .aspectMask = image.aspect_mask, + .mipLevel = m, + .baseArrayLayer = 0, + .layerCount = image.info.resources.layers, + }, + .dstSubresource{ + .aspectMask = image.aspect_mask, + .mipLevel = m, + .baseArrayLayer = 0, + .layerCount = image.info.resources.layers, + }, + .extent = {mip_w, mip_h, mip_d}, + }); + } + cmdbuf.copyImage(image.image, image.last_state.layout, this->image, this->last_state.layout, + image_copy); + + Transit(vk::ImageLayout::eGeneral, + vk::AccessFlagBits2::eShaderRead | vk::AccessFlagBits2::eTransferRead, {}); +} + +void Image::CopyMip(const Image& image, u32 mip) { + scheduler->EndRendering(); + Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits2::eTransferWrite, {}); + + auto cmdbuf = scheduler->CommandBuffer(); + + const auto mip_w = std::max(info.size.width >> mip, 1u); + const auto mip_h = std::max(info.size.height >> mip, 1u); + const auto mip_d = std::max(info.size.depth >> mip, 1u); + + ASSERT(mip_w == image.info.size.width); + ASSERT(mip_h == image.info.size.height); + + const vk::ImageCopy image_copy{ + .srcSubresource{ + .aspectMask = image.aspect_mask, + .mipLevel = 0, + .baseArrayLayer = 0, + .layerCount = image.info.resources.layers, + }, + .dstSubresource{ + .aspectMask = image.aspect_mask, + .mipLevel = mip, + .baseArrayLayer = 0, + .layerCount = info.resources.layers, + }, + .extent = {mip_w, mip_h, mip_d}, + }; + cmdbuf.copyImage(image.image, image.last_state.layout, this->image, this->last_state.layout, + image_copy); + + Transit(vk::ImageLayout::eGeneral, + vk::AccessFlagBits2::eShaderRead | vk::AccessFlagBits2::eTransferRead, {}); } Image::~Image() = default; diff --git a/src/video_core/texture_cache/image.h b/src/video_core/texture_cache/image.h index 3df8ddb705..01e6fe8f3b 100644 --- a/src/video_core/texture_cache/image.h +++ b/src/video_core/texture_cache/image.h @@ -5,13 +5,9 @@ #include "common/enum.h" #include "common/types.h" -#include "core/libraries/videoout/buffer.h" -#include "video_core/amdgpu/liverpool.h" -#include "video_core/amdgpu/resource.h" #include "video_core/renderer_vulkan/vk_common.h" #include "video_core/texture_cache/image_info.h" #include "video_core/texture_cache/image_view.h" -#include "video_core/texture_cache/types.h" #include @@ -26,12 +22,16 @@ VK_DEFINE_HANDLE(VmaAllocator) namespace VideoCore { enum ImageFlagBits : u32 { - CpuModified = 1 << 2, ///< Contents have been modified from the CPU + CpuDirty = 1 << 1, ///< Contents have been modified from the CPU + GpuDirty = 1 << 2, ///< Contents have been modified from the GPU (valid data in buffer cache) + Dirty = CpuDirty | GpuDirty, GpuModified = 1 << 3, ///< Contents have been modified from the GPU Tracked = 1 << 4, ///< Writes and reads are being hooked from the CPU Registered = 1 << 6, ///< True when the image is registered Picked = 1 << 7, ///< Temporary flag to mark the image as picked MetaRegistered = 1 << 8, ///< True when metadata for this surface is known and registered + Bound = 1 << 9, ///< True when the image is bound to a descriptor set + NeedsRebind = 1 << 10, ///< True when the image needs to be rebound }; DECLARE_ENUM_FLAG_OPERATORS(ImageFlagBits) @@ -91,16 +91,22 @@ struct Image { return image_view_ids[std::distance(image_view_infos.begin(), it)]; } - void Transit(vk::ImageLayout dst_layout, vk::Flags dst_mask, - vk::CommandBuffer cmdbuf = {}); + boost::container::small_vector GetBarriers( + vk::ImageLayout dst_layout, vk::Flags dst_mask, + vk::PipelineStageFlags2 dst_stage, std::optional subres_range); + void Transit(vk::ImageLayout dst_layout, vk::Flags dst_mask, + std::optional range, vk::CommandBuffer cmdbuf = {}); void Upload(vk::Buffer buffer, u64 offset); + void CopyImage(const Image& image); + void CopyMip(const Image& image, u32 mip); + const Vulkan::Instance* instance; Vulkan::Scheduler* scheduler; ImageInfo info; UniqueImage image; vk::ImageAspectFlags aspect_mask = vk::ImageAspectFlagBits::eColor; - ImageFlagBits flags = ImageFlagBits::CpuModified; + ImageFlagBits flags = ImageFlagBits::Dirty; VAddr cpu_addr = 0; VAddr cpu_addr_end = 0; std::vector image_view_infos; @@ -108,10 +114,15 @@ struct Image { // Resource state tracking vk::ImageUsageFlags usage; - vk::Flags pl_stage = vk::PipelineStageFlagBits::eAllCommands; - vk::Flags access_mask = vk::AccessFlagBits::eNone; - vk::ImageLayout layout = vk::ImageLayout::eUndefined; - boost::container::small_vector mip_hashes; + struct State { + vk::Flags pl_stage = vk::PipelineStageFlagBits2::eAllCommands; + vk::Flags access_mask = vk::AccessFlagBits2::eNone; + vk::ImageLayout layout = vk::ImageLayout::eUndefined; + }; + State last_state{}; + std::vector subresource_states{}; + boost::container::small_vector mip_hashes{}; + u64 tick_accessed_last{0}; }; } // namespace VideoCore diff --git a/src/video_core/texture_cache/image_info.cpp b/src/video_core/texture_cache/image_info.cpp index 4ac4aee8fe..521e4118fa 100644 --- a/src/video_core/texture_cache/image_info.cpp +++ b/src/video_core/texture_cache/image_info.cpp @@ -174,6 +174,7 @@ ImageInfo::ImageInfo(const AmdGpu::Liverpool::ColorBuffer& buffer, const auto color_slice_sz = buffer.GetColorSliceSize(); guest_size_bytes = color_slice_sz * buffer.NumSlices(); mips_layout.emplace_back(color_slice_sz, pitch, 0); + tiling_idx = static_cast(buffer.attrib.tile_mode_index.Value()); } ImageInfo::ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slices, @@ -186,7 +187,7 @@ ImageInfo::ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slice size.width = hint.Valid() ? hint.width : buffer.Pitch(); size.height = hint.Valid() ? hint.height : buffer.Height(); size.depth = 1; - pitch = size.width; + pitch = buffer.Pitch(); resources.layers = num_slices; meta_info.htile_addr = buffer.z_info.tile_surface_en ? htile_address : 0; usage.depth_target = true; @@ -199,9 +200,13 @@ ImageInfo::ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slice mips_layout.emplace_back(depth_slice_sz, pitch, 0); } -ImageInfo::ImageInfo(const AmdGpu::Image& image) noexcept { +ImageInfo::ImageInfo(const AmdGpu::Image& image, const Shader::ImageResource& desc) noexcept { tiling_mode = image.GetTilingMode(); pixel_format = LiverpoolToVK::SurfaceFormat(image.GetDataFmt(), image.GetNumberFmt()); + // Override format if image is forced to be a depth target + if (desc.is_depth) { + pixel_format = LiverpoolToVK::PromoteFormatToDepth(pixel_format); + } type = ConvertImageType(image.GetType()); props.is_tiled = image.IsTiled(); props.is_cube = image.GetType() == AmdGpu::ImageType::Cube; @@ -213,7 +218,7 @@ ImageInfo::ImageInfo(const AmdGpu::Image& image) noexcept { size.depth = props.is_volume ? image.depth + 1 : 1; pitch = image.Pitch(); resources.levels = image.NumLevels(); - resources.layers = image.NumLayers(); + resources.layers = image.NumLayers(desc.is_array); num_bits = NumBits(image.GetDataFmt()); usage.texture = true; @@ -249,7 +254,6 @@ void ImageInfo::UpdateSize() { switch (tiling_mode) { case AmdGpu::TilingMode::Display_Linear: { - ASSERT(!props.is_cube); std::tie(mip_info.pitch, mip_info.size) = ImageSizeLinearAligned(mip_w, mip_h, bpp, num_samples); mip_info.height = mip_h; @@ -287,4 +291,74 @@ void ImageInfo::UpdateSize() { guest_size_bytes *= resources.layers; } +bool ImageInfo::IsMipOf(const ImageInfo& info) const { + if (!IsCompatible(info)) { + return false; + } + + // Currently we expect only on level to be copied. + if (resources.levels != 1) { + return false; + } + + const int mip = info.resources.levels - resources.levels; + if (mip < 1) { + return false; + } + + const auto mip_w = std::max(info.size.width >> mip, 1u); + const auto mip_h = std::max(info.size.height >> mip, 1u); + if ((size.width != mip_w) || (size.height != mip_h)) { + return false; + } + + const auto mip_d = std::max(info.size.depth >> mip, 1u); + if (info.type == vk::ImageType::e3D && type == vk::ImageType::e2D) { + // In case of 2D array to 3D copy, make sure we have proper number of layers. + if (resources.layers != mip_d) { + return false; + } + } else { + if (type != info.type) { + return false; + } + } + + // Check if the mip has correct size. + if (info.mips_layout.size() <= mip || info.mips_layout[mip].size != guest_size_bytes) { + return false; + } + + return true; +} + +bool ImageInfo::IsSliceOf(const ImageInfo& info) const { + if (!IsCompatible(info)) { + return false; + } + + // Array slices should be of the same type. + if (type != info.type) { + return false; + } + + // 2D dimensions of both images should be the same. + if ((size.width != info.size.width) || (size.height != info.size.height)) { + return false; + } + + // Check for size alignment. + const bool slice_size = info.guest_size_bytes / info.resources.layers; + if (guest_size_bytes % slice_size != 0) { + return false; + } + + // Ensure that address is aligned too. + if (((info.guest_address - guest_address) % guest_size_bytes) != 0) { + return false; + } + + return true; +} + } // namespace VideoCore diff --git a/src/video_core/texture_cache/image_info.h b/src/video_core/texture_cache/image_info.h index ddad318d9d..2ae2547f7e 100644 --- a/src/video_core/texture_cache/image_info.h +++ b/src/video_core/texture_cache/image_info.h @@ -3,9 +3,9 @@ #pragma once -#include "common/enum.h" #include "common/types.h" #include "core/libraries/videoout/buffer.h" +#include "shader_recompiler/info.h" #include "video_core/amdgpu/liverpool.h" #include "video_core/texture_cache/types.h" @@ -20,7 +20,7 @@ struct ImageInfo { const AmdGpu::Liverpool::CbDbExtent& hint = {}) noexcept; ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slices, VAddr htile_address, const AmdGpu::Liverpool::CbDbExtent& hint = {}) noexcept; - ImageInfo(const AmdGpu::Image& image) noexcept; + ImageInfo(const AmdGpu::Image& image, const Shader::ImageResource& desc) noexcept; bool IsTiled() const { return tiling_mode != AmdGpu::TilingMode::Display_Linear; @@ -29,6 +29,15 @@ struct ImageInfo { bool IsPacked() const; bool IsDepthStencil() const; + bool IsMipOf(const ImageInfo& info) const; + bool IsSliceOf(const ImageInfo& info) const; + + /// Verifies if images are compatible for subresource merging. + bool IsCompatible(const ImageInfo& info) const { + return (pixel_format == info.pixel_format && tiling_idx == info.tiling_idx && + num_samples == info.num_samples && num_bits == info.num_bits); + } + void UpdateSize(); struct { diff --git a/src/video_core/texture_cache/image_view.cpp b/src/video_core/texture_cache/image_view.cpp index bcdc11ad97..2aad1afb61 100644 --- a/src/video_core/texture_cache/image_view.cpp +++ b/src/video_core/texture_cache/image_view.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "common/logging/log.h" +#include "shader_recompiler/info.h" #include "video_core/amdgpu/resource.h" #include "video_core/renderer_vulkan/liverpool_to_vk.h" #include "video_core/renderer_vulkan/vk_instance.h" @@ -66,14 +67,40 @@ vk::Format TrySwizzleFormat(vk::Format format, u32 dst_sel) { return format; } -ImageViewInfo::ImageViewInfo(const AmdGpu::Image& image, bool is_storage_) noexcept - : is_storage{is_storage_} { - type = ConvertImageViewType(image.GetType()); - format = Vulkan::LiverpoolToVK::SurfaceFormat(image.GetDataFmt(), image.GetNumberFmt()); +ImageViewInfo::ImageViewInfo(const AmdGpu::Image& image, const Shader::ImageResource& desc) noexcept + : is_storage{desc.is_storage} { + const auto dfmt = image.GetDataFmt(); + auto nfmt = image.GetNumberFmt(); + if (is_storage && nfmt == AmdGpu::NumberFormat::Srgb) { + nfmt = AmdGpu::NumberFormat::Unorm; + } + format = Vulkan::LiverpoolToVK::SurfaceFormat(dfmt, nfmt); + if (desc.is_depth) { + format = Vulkan::LiverpoolToVK::PromoteFormatToDepth(format); + } range.base.level = image.base_level; range.base.layer = image.base_array; - range.extent.levels = image.last_level + 1; - range.extent.layers = image.last_array + 1; + range.extent.levels = image.last_level - image.base_level + 1; + range.extent.layers = image.last_array - image.base_array + 1; + type = ConvertImageViewType(image.GetType()); + + // Adjust view type for partial cubemaps and arrays + if (image.IsPartialCubemap()) { + type = vk::ImageViewType::e2DArray; + } + if (type == vk::ImageViewType::eCube) { + if (desc.is_array) { + type = vk::ImageViewType::eCubeArray; + } else { + // Some games try to bind an array of cubemaps while shader reads only single one. + range.extent.layers = std::min(range.extent.layers, 6u); + } + } + if (type == vk::ImageViewType::e3D && range.extent.layers > 1) { + // Some games pass incorrect layer count for 3D textures so we need to fixup it. + range.extent.layers = 1; + } + if (!is_storage) { mapping.r = ConvertComponentSwizzle(image.dst_sel_x); mapping.g = ConvertComponentSwizzle(image.dst_sel_y); @@ -98,7 +125,7 @@ ImageViewInfo::ImageViewInfo(const AmdGpu::Liverpool::ColorBuffer& col_buffer, const auto base_format = Vulkan::LiverpoolToVK::SurfaceFormat(col_buffer.info.format, col_buffer.NumFormat()); range.base.layer = col_buffer.view.slice_start; - range.extent.layers = col_buffer.NumSlices(); + range.extent.layers = col_buffer.NumSlices() - range.base.layer; format = Vulkan::LiverpoolToVK::AdjustColorBufferFormat( base_format, col_buffer.info.comp_swap.Value(), is_vo_surface); } @@ -110,26 +137,31 @@ ImageViewInfo::ImageViewInfo(const AmdGpu::Liverpool::DepthBuffer& depth_buffer, depth_buffer.stencil_info.format); is_storage = ctl.depth_write_enable; range.base.layer = view.slice_start; - range.extent.layers = view.NumSlices(); + range.extent.layers = view.NumSlices() - range.base.layer; } ImageView::ImageView(const Vulkan::Instance& instance, const ImageViewInfo& info_, Image& image, - ImageId image_id_, std::optional usage_override /*= {}*/) + ImageId image_id_) : image_id{image_id_}, info{info_} { - vk::ImageViewUsageCreateInfo usage_ci{}; - if (usage_override) { - usage_ci.usage = usage_override.value(); + vk::ImageViewUsageCreateInfo usage_ci{.usage = image.usage}; + if (!info.is_storage) { + usage_ci.usage &= ~vk::ImageUsageFlagBits::eStorage; } // When sampling D32 texture from shader, the T# specifies R32 Float format so adjust it. vk::Format format = info.format; vk::ImageAspectFlags aspect = image.aspect_mask; - if (image.aspect_mask & vk::ImageAspectFlagBits::eDepth && format == vk::Format::eR32Sfloat) { + if (image.aspect_mask & vk::ImageAspectFlagBits::eDepth && + (format == vk::Format::eR32Sfloat || format == vk::Format::eD32Sfloat)) { format = image.info.pixel_format; aspect = vk::ImageAspectFlagBits::eDepth; } + if (image.aspect_mask & vk::ImageAspectFlagBits::eStencil && format == vk::Format::eR8Unorm) { + format = image.info.pixel_format; + aspect = vk::ImageAspectFlagBits::eStencil; + } const vk::ImageViewCreateInfo image_view_ci = { - .pNext = usage_override ? &usage_ci : nullptr, + .pNext = &usage_ci, .image = image.image, .viewType = info.type, .format = instance.GetSupportedFormat(format), @@ -137,9 +169,9 @@ ImageView::ImageView(const Vulkan::Instance& instance, const ImageViewInfo& info .subresourceRange{ .aspectMask = aspect, .baseMipLevel = info.range.base.level, - .levelCount = info.range.extent.levels - info.range.base.level, - .baseArrayLayer = info_.range.base.layer, - .layerCount = info.range.extent.layers - info.range.base.layer, + .levelCount = info.range.extent.levels, + .baseArrayLayer = info.range.base.layer, + .layerCount = info.range.extent.layers, }, }; image_view = instance.GetDevice().createImageViewUnique(image_view_ci); diff --git a/src/video_core/texture_cache/image_view.h b/src/video_core/texture_cache/image_view.h index fbc62db36a..ba8d2c72b2 100644 --- a/src/video_core/texture_cache/image_view.h +++ b/src/video_core/texture_cache/image_view.h @@ -3,13 +3,12 @@ #pragma once +#include "shader_recompiler/info.h" #include "video_core/amdgpu/liverpool.h" #include "video_core/amdgpu/resource.h" #include "video_core/renderer_vulkan/vk_common.h" #include "video_core/texture_cache/types.h" -#include - namespace Vulkan { class Instance; class Scheduler; @@ -19,7 +18,7 @@ namespace VideoCore { struct ImageViewInfo { ImageViewInfo() = default; - ImageViewInfo(const AmdGpu::Image& image, bool is_storage) noexcept; + ImageViewInfo(const AmdGpu::Image& image, const Shader::ImageResource& desc) noexcept; ImageViewInfo(const AmdGpu::Liverpool::ColorBuffer& col_buffer, bool is_vo_surface) noexcept; ImageViewInfo(const AmdGpu::Liverpool::DepthBuffer& depth_buffer, AmdGpu::Liverpool::DepthView view, AmdGpu::Liverpool::DepthControl ctl); @@ -28,7 +27,7 @@ struct ImageViewInfo { vk::Format format = vk::Format::eR8G8B8A8Unorm; SubresourceRange range; vk::ComponentMapping mapping{}; - bool is_storage; + bool is_storage = false; auto operator<=>(const ImageViewInfo&) const = default; }; @@ -38,8 +37,8 @@ struct Image; constexpr Common::SlotId NULL_IMAGE_VIEW_ID{0}; struct ImageView { - explicit ImageView(const Vulkan::Instance& instance, const ImageViewInfo& info, Image& image, - ImageId image_id, std::optional usage_override = {}); + ImageView(const Vulkan::Instance& instance, const ImageViewInfo& info, Image& image, + ImageId image_id); ~ImageView(); ImageView(const ImageView&) = delete; diff --git a/src/video_core/texture_cache/texture_cache.cpp b/src/video_core/texture_cache/texture_cache.cpp index 3354a8ecbf..4813a3c575 100644 --- a/src/video_core/texture_cache/texture_cache.cpp +++ b/src/video_core/texture_cache/texture_cache.cpp @@ -1,18 +1,21 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include #include #include "common/assert.h" #include "video_core/buffer_cache/buffer_cache.h" #include "video_core/page_manager.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_scheduler.h" +#include "video_core/texture_cache/host_compatibility.h" #include "video_core/texture_cache/texture_cache.h" #include "video_core/texture_cache/tile_manager.h" namespace VideoCore { static constexpr u64 PageShift = 12; +static constexpr u64 NumFramesBeforeRemoval = 32; TextureCache::TextureCache(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, BufferCache& buffer_cache_, PageManager& tracker_) @@ -26,24 +29,40 @@ TextureCache::TextureCache(const Vulkan::Instance& instance_, Vulkan::Scheduler& info.UpdateSize(); const ImageId null_id = slot_images.insert(instance, scheduler, info); ASSERT(null_id.index == 0); - slot_images[null_id].flags = ImageFlagBits{}; + const vk::Image& null_image = slot_images[null_id].image; + Vulkan::SetObjectName(instance.GetDevice(), null_image, "Null Image"); + slot_images[null_id].flags = ImageFlagBits::Tracked; ImageViewInfo view_info; - void(slot_image_views.insert(instance, view_info, slot_images[null_id], null_id)); + const auto null_view_id = + slot_image_views.insert(instance, view_info, slot_images[null_id], null_id); + ASSERT(null_view_id.index == 0); + const vk::ImageView& null_image_view = slot_image_views[null_view_id].image_view.get(); + Vulkan::SetObjectName(instance.GetDevice(), null_image_view, "Null Image View"); } TextureCache::~TextureCache() = default; void TextureCache::InvalidateMemory(VAddr address, size_t size) { - std::unique_lock lock{mutex}; + std::scoped_lock lock{mutex}; ForEachImageInRegion(address, size, [&](ImageId image_id, Image& image) { - if (!image.Overlaps(address, size)) { + // Ensure image is reuploaded when accessed again. + image.flags |= ImageFlagBits::CpuDirty; + // Untrack image, so the range is unprotected and the guest can write freely. + UntrackImage(image_id); + }); +} + +void TextureCache::InvalidateMemoryFromGPU(VAddr address, size_t max_size) { + std::scoped_lock lock{mutex}; + ForEachImageInRegion(address, max_size, [&](ImageId image_id, Image& image) { + // Only consider images that match base address. + // TODO: Maybe also consider subresources + if (image.info.guest_address != address) { return; } // Ensure image is reuploaded when accessed again. - image.flags |= ImageFlagBits::CpuModified; - // Untrack image, so the range is unprotected and the guest can write freely. - UntrackImage(image, image_id); + image.flags |= ImageFlagBits::GpuDirty; }); } @@ -53,46 +72,180 @@ void TextureCache::UnmapMemory(VAddr cpu_addr, size_t size) { boost::container::small_vector deleted_images; ForEachImageInRegion(cpu_addr, size, [&](ImageId id, Image&) { deleted_images.push_back(id); }); for (const ImageId id : deleted_images) { - Image& image = slot_images[id]; - if (True(image.flags & ImageFlagBits::Tracked)) { - UntrackImage(image, id); - } // TODO: Download image data back to host. - UnregisterImage(id); - DeleteImage(id); + FreeImage(id); } } -ImageId TextureCache::FindImage(const ImageInfo& info) { - if (info.guest_address == 0) [[unlikely]] { - return NULL_IMAGE_VIEW_ID; +ImageId TextureCache::ResolveDepthOverlap(const ImageInfo& requested_info, ImageId cache_image_id) { + const auto& cache_info = slot_images[cache_image_id].info; + + const bool was_bound_as_texture = + !cache_info.usage.depth_target && (cache_info.usage.texture || cache_info.usage.storage); + if (requested_info.usage.depth_target && was_bound_as_texture) { + auto new_image_id = slot_images.insert(instance, scheduler, requested_info); + RegisterImage(new_image_id); + + // TODO: perform a depth copy here + + FreeImage(cache_image_id); + return new_image_id; } - std::unique_lock lock{mutex}; - boost::container::small_vector image_ids; - ForEachImageInRegion( - info.guest_address, info.guest_size_bytes, [&](ImageId image_id, Image& image) { - // Address and width must match. - if (image.cpu_addr != info.guest_address || image.info.size.width != info.size.width) { - return; - } - if (info.IsDepthStencil() != image.info.IsDepthStencil() && - info.pixel_format != vk::Format::eR32Sfloat) { - return; + const bool should_bind_as_texture = + !requested_info.usage.depth_target && + (requested_info.usage.texture || requested_info.usage.storage); + if (cache_info.usage.depth_target && should_bind_as_texture) { + if (cache_info.resources == requested_info.resources) { + return cache_image_id; + } else { + UNREACHABLE(); + } + } + + return {}; +} + +ImageId TextureCache::ResolveOverlap(const ImageInfo& image_info, ImageId cache_image_id, + ImageId merged_image_id) { + auto& tex_cache_image = slot_images[cache_image_id]; + + if (image_info.guest_address == tex_cache_image.info.guest_address) { // Equal address + if (image_info.size != tex_cache_image.info.size) { + // Very likely this kind of overlap is caused by allocation from a pool. We can assume + // it is safe to delete the image if it wasn't accessed in some amount of frames. + if (scheduler.CurrentTick() - tex_cache_image.tick_accessed_last > + NumFramesBeforeRemoval) { + + FreeImage(cache_image_id); } - image_ids.push_back(image_id); - }); + return merged_image_id; + } + + if (auto depth_image_id = ResolveDepthOverlap(image_info, cache_image_id)) { + return depth_image_id; + } + + if (image_info.pixel_format != tex_cache_image.info.pixel_format || + image_info.guest_size_bytes <= tex_cache_image.info.guest_size_bytes) { + auto result_id = merged_image_id ? merged_image_id : cache_image_id; + const auto& result_image = slot_images[result_id]; + return IsVulkanFormatCompatible(image_info.pixel_format, result_image.info.pixel_format) + ? result_id + : ImageId{}; + } + + ImageId new_image_id{}; + if (image_info.type == tex_cache_image.info.type) { + new_image_id = ExpandImage(image_info, cache_image_id); + } else { + UNREACHABLE(); + } + return new_image_id; + } + + // Right overlap, the image requested is a possible subresource of the image from cache. + if (image_info.guest_address > tex_cache_image.info.guest_address) { + // Should be handled by view. No additional actions needed. + } else { + // Left overlap, the image from cache is a possible subresource of the image requested + if (!merged_image_id) { + // We need to have a larger, already allocated image to copy this one into + return {}; + } + + if (tex_cache_image.info.IsMipOf(image_info)) { + tex_cache_image.Transit(vk::ImageLayout::eTransferSrcOptimal, + vk::AccessFlagBits2::eTransferRead, {}); + + const auto num_mips_to_copy = tex_cache_image.info.resources.levels; + ASSERT(num_mips_to_copy == 1); + + auto& merged_image = slot_images[merged_image_id]; + merged_image.CopyMip(tex_cache_image, image_info.resources.levels - 1); + + FreeImage(cache_image_id); + } + } + + return merged_image_id; +} - // ASSERT_MSG(image_ids.size() <= 1, "Overlapping images not allowed!"); +ImageId TextureCache::ExpandImage(const ImageInfo& info, ImageId image_id) { + const auto new_image_id = slot_images.insert(instance, scheduler, info); + RegisterImage(new_image_id); + + auto& src_image = slot_images[image_id]; + auto& new_image = slot_images[new_image_id]; + + src_image.Transit(vk::ImageLayout::eTransferSrcOptimal, vk::AccessFlagBits2::eTransferRead, {}); + new_image.CopyImage(src_image); + + if (True(src_image.flags & ImageFlagBits::Bound)) { + src_image.flags |= ImageFlagBits::NeedsRebind; + } + + FreeImage(image_id); + + TrackImage(new_image_id); + new_image.flags &= ~ImageFlagBits::Dirty; + return new_image_id; +} + +ImageId TextureCache::FindImage(const ImageInfo& info, FindFlags flags) { + if (info.guest_address == 0) [[unlikely]] { + return NULL_IMAGE_VIEW_ID; + } + + std::scoped_lock lock{mutex}; + boost::container::small_vector image_ids; + ForEachImageInRegion(info.guest_address, info.guest_size_bytes, + [&](ImageId image_id, Image& image) { image_ids.push_back(image_id); }); ImageId image_id{}; - if (image_ids.empty()) { + + // Check for a perfect match first + for (const auto& cache_id : image_ids) { + auto& cache_image = slot_images[cache_id]; + if (cache_image.info.guest_address != info.guest_address) { + continue; + } + if (False(flags & FindFlags::RelaxSize) && + cache_image.info.guest_size_bytes != info.guest_size_bytes) { + continue; + } + if (False(flags & FindFlags::RelaxDim) && cache_image.info.size != info.size) { + continue; + } + if (False(flags & FindFlags::RelaxFmt) && + !IsVulkanFormatCompatible(info.pixel_format, cache_image.info.pixel_format)) { + continue; + } + ASSERT(cache_image.info.type == info.type || True(flags & FindFlags::RelaxFmt)); + image_id = cache_id; + } + + if (True(flags & FindFlags::NoCreate) && !image_id) { + return {}; + } + + // Try to resolve overlaps (if any) + if (!image_id) { + for (const auto& cache_id : image_ids) { + const auto& merged_info = image_id ? slot_images[image_id].info : info; + image_id = ResolveOverlap(merged_info, cache_id, image_id); + } + } + + // Create and register a new image + if (!image_id) { image_id = slot_images.insert(instance, scheduler, info); RegisterImage(image_id); - } else { - image_id = image_ids[image_ids.size() > 1 ? 1 : 0]; } + Image& image = slot_images[image_id]; + image.tick_accessed_last = scheduler.CurrentTick(); + return image_id; } @@ -102,64 +255,31 @@ ImageView& TextureCache::RegisterImageView(ImageId image_id, const ImageViewInfo return slot_image_views[view_id]; } - // All tiled images are created with storage usage flag. This makes set of formats (e.g. sRGB) - // impossible to use. However, during view creation, if an image isn't used as storage we can - // temporary remove its storage bit. - std::optional usage_override; - if (!image.info.usage.storage) { - usage_override = image.usage & ~vk::ImageUsageFlagBits::eStorage; - } - - const ImageViewId view_id = - slot_image_views.insert(instance, view_info, image, image_id, usage_override); + const ImageViewId view_id = slot_image_views.insert(instance, view_info, image, image_id); image.image_view_infos.emplace_back(view_info); image.image_view_ids.emplace_back(view_id); return slot_image_views[view_id]; } -ImageView& TextureCache::FindTexture(const ImageInfo& info, const ImageViewInfo& view_info) { - const ImageId image_id = FindImage(info); - UpdateImage(image_id); +ImageView& TextureCache::FindTexture(ImageId image_id, const ImageViewInfo& view_info) { Image& image = slot_images[image_id]; + UpdateImage(image_id); auto& usage = image.info.usage; if (view_info.is_storage) { image.Transit(vk::ImageLayout::eGeneral, - vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eShaderWrite); + vk::AccessFlagBits2::eShaderRead | vk::AccessFlagBits2::eShaderWrite, + view_info.range); usage.storage = true; } else { const auto new_layout = image.info.IsDepthStencil() ? vk::ImageLayout::eDepthStencilReadOnlyOptimal : vk::ImageLayout::eShaderReadOnlyOptimal; - image.Transit(new_layout, vk::AccessFlagBits::eShaderRead); + image.Transit(new_layout, vk::AccessFlagBits2::eShaderRead, view_info.range); usage.texture = true; } - // These changes are temporary and should be removed once texture cache will handle subresources - // merging - auto view_info_tmp = view_info; - if (view_info_tmp.range.base.level > image.info.resources.levels - 1 || - view_info_tmp.range.base.layer > image.info.resources.layers - 1 || - view_info_tmp.range.extent.levels > image.info.resources.levels || - view_info_tmp.range.extent.layers > image.info.resources.layers) { - - LOG_DEBUG(Render_Vulkan, - "Subresource range ({}~{},{}~{}) exceeds base image extents ({},{})", - view_info_tmp.range.base.level, view_info_tmp.range.extent.levels, - view_info_tmp.range.base.layer, view_info_tmp.range.extent.layers, - image.info.resources.levels, image.info.resources.layers); - - view_info_tmp.range.base.level = - std::min(view_info_tmp.range.base.level, image.info.resources.levels - 1); - view_info_tmp.range.base.layer = - std::min(view_info_tmp.range.base.layer, image.info.resources.layers - 1); - view_info_tmp.range.extent.levels = - std::min(view_info_tmp.range.extent.levels, image.info.resources.levels); - view_info_tmp.range.extent.layers = - std::min(view_info_tmp.range.extent.layers, image.info.resources.layers); - } - - return RegisterImageView(image_id, view_info_tmp); + return RegisterImageView(image_id, view_info); } ImageView& TextureCache::FindRenderTarget(const ImageInfo& image_info, @@ -170,8 +290,9 @@ ImageView& TextureCache::FindRenderTarget(const ImageInfo& image_info, UpdateImage(image_id); image.Transit(vk::ImageLayout::eColorAttachmentOptimal, - vk::AccessFlagBits::eColorAttachmentWrite | - vk::AccessFlagBits::eColorAttachmentRead); + vk::AccessFlagBits2::eColorAttachmentWrite | + vk::AccessFlagBits2::eColorAttachmentRead, + view_info.range); // Register meta data for this color buffer if (!(image.flags & ImageFlagBits::MetaRegistered)) { @@ -203,13 +324,23 @@ ImageView& TextureCache::FindDepthTarget(const ImageInfo& image_info, const ImageId image_id = FindImage(image_info); Image& image = slot_images[image_id]; image.flags |= ImageFlagBits::GpuModified; - image.flags &= ~ImageFlagBits::CpuModified; - image.aspect_mask = vk::ImageAspectFlagBits::eDepth | vk::ImageAspectFlagBits::eStencil; + image.flags &= ~ImageFlagBits::Dirty; + image.aspect_mask = vk::ImageAspectFlagBits::eDepth; - const auto new_layout = view_info.is_storage ? vk::ImageLayout::eDepthStencilAttachmentOptimal - : vk::ImageLayout::eDepthStencilReadOnlyOptimal; - image.Transit(new_layout, vk::AccessFlagBits::eDepthStencilAttachmentWrite | - vk::AccessFlagBits::eDepthStencilAttachmentRead); + const bool has_stencil = image_info.usage.stencil; + if (has_stencil) { + image.aspect_mask |= vk::ImageAspectFlagBits::eStencil; + } + + const auto new_layout = view_info.is_storage + ? has_stencil ? vk::ImageLayout::eDepthStencilAttachmentOptimal + : vk::ImageLayout::eDepthAttachmentOptimal + : has_stencil ? vk::ImageLayout::eDepthStencilReadOnlyOptimal + : vk::ImageLayout::eDepthReadOnlyOptimal; + image.Transit(new_layout, + vk::AccessFlagBits2::eDepthStencilAttachmentWrite | + vk::AccessFlagBits2::eDepthStencilAttachmentRead, + view_info.range); // Register meta data for this depth buffer if (!(image.flags & ImageFlagBits::MetaRegistered)) { @@ -224,13 +355,15 @@ ImageView& TextureCache::FindDepthTarget(const ImageInfo& image_info, // Update tracked image usage image.info.usage.depth_target = true; + image.info.usage.stencil = has_stencil; return RegisterImageView(image_id, view_info); } void TextureCache::RefreshImage(Image& image, Vulkan::Scheduler* custom_scheduler /*= nullptr*/) { - // Mark image as validated. - image.flags &= ~ImageFlagBits::CpuModified; + if (False(image.flags & ImageFlagBits::Dirty)) { + return; + } const auto& num_layers = image.info.resources.layers; const auto& num_mips = image.info.resources.levels; @@ -244,9 +377,10 @@ void TextureCache::RefreshImage(Image& image, Vulkan::Scheduler* custom_schedule image.info.props.is_volume ? std::max(image.info.size.depth >> m, 1u) : 1u; const auto& [mip_size, mip_pitch, mip_height, mip_ofs] = image.info.mips_layout[m]; - // Protect GPU modified resources from accidental reuploads. - if (True(image.flags & ImageFlagBits::GpuModified) && - !buffer_cache.IsRegionGpuModified(image.info.guest_address + mip_ofs, mip_size)) { + // Protect GPU modified resources from accidental CPU reuploads. + const bool is_gpu_modified = True(image.flags & ImageFlagBits::GpuModified); + const bool is_gpu_dirty = True(image.flags & ImageFlagBits::GpuDirty); + if (is_gpu_modified && !is_gpu_dirty) { const u8* addr = std::bit_cast(image.info.guest_address); const u64 hash = XXH3_64bits(addr + mip_ofs, mip_size); if (image.mip_hashes[m] == hash) { @@ -260,7 +394,7 @@ void TextureCache::RefreshImage(Image& image, Vulkan::Scheduler* custom_schedule .bufferRowLength = static_cast(mip_pitch), .bufferImageHeight = static_cast(mip_height), .imageSubresource{ - .aspectMask = vk::ImageAspectFlagBits::eColor, + .aspectMask = image.aspect_mask & ~vk::ImageAspectFlagBits::eStencil, .mipLevel = m, .baseArrayLayer = 0, .layerCount = num_layers, @@ -278,25 +412,31 @@ void TextureCache::RefreshImage(Image& image, Vulkan::Scheduler* custom_schedule sched_ptr->EndRendering(); const auto cmdbuf = sched_ptr->CommandBuffer(); - image.Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits::eTransferWrite, cmdbuf); + image.Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits2::eTransferWrite, {}, + cmdbuf); const VAddr image_addr = image.info.guest_address; const size_t image_size = image.info.guest_size_bytes; - vk::Buffer buffer{}; - u32 offset{}; - if (auto upload_buffer = tile_manager.TryDetile(image); upload_buffer) { - buffer = *upload_buffer; - } else { - const auto [vk_buffer, buf_offset] = buffer_cache.ObtainTempBuffer(image_addr, image_size); - buffer = vk_buffer->Handle(); - offset = buf_offset; + const auto [vk_buffer, buf_offset] = buffer_cache.ObtainTempBuffer(image_addr, image_size); + // The obtained buffer may be written by a shader so we need to emit a barrier to prevent RAW + // hazard + if (auto barrier = vk_buffer->GetBarrier(vk::AccessFlagBits2::eTransferRead, + vk::PipelineStageFlagBits2::eTransfer)) { + const auto dependencies = vk::DependencyInfo{ + .dependencyFlags = vk::DependencyFlagBits::eByRegion, + .bufferMemoryBarrierCount = 1, + .pBufferMemoryBarriers = &barrier.value(), + }; + cmdbuf.pipelineBarrier2(dependencies); } + const auto [buffer, offset] = tile_manager.TryDetile(vk_buffer->Handle(), buf_offset, image); for (auto& copy : image_copy) { copy.bufferOffset += offset; } cmdbuf.copyBufferToImage(buffer, image.image, vk::ImageLayout::eTransferDstOptimal, image_copy); + image.flags &= ~ImageFlagBits::Dirty; } vk::Sampler TextureCache::GetSampler(const AmdGpu::Sampler& sampler) { @@ -335,7 +475,8 @@ void TextureCache::UnregisterImage(ImageId image_id) { }); } -void TextureCache::TrackImage(Image& image, ImageId image_id) { +void TextureCache::TrackImage(ImageId image_id) { + auto& image = slot_images[image_id]; if (True(image.flags & ImageFlagBits::Tracked)) { return; } @@ -343,7 +484,8 @@ void TextureCache::TrackImage(Image& image, ImageId image_id) { tracker.UpdatePagesCachedCount(image.cpu_addr, image.info.guest_size_bytes, 1); } -void TextureCache::UntrackImage(Image& image, ImageId image_id) { +void TextureCache::UntrackImage(ImageId image_id) { + auto& image = slot_images[image_id]; if (False(image.flags & ImageFlagBits::Tracked)) { return; } diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 31b1e39398..3bbfd952c7 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -23,6 +23,16 @@ namespace VideoCore { class BufferCache; class PageManager; +enum class FindFlags { + NoCreate = 1 << 0, ///< Do not create an image if searching for one fails. + RelaxDim = 1 << 1, ///< Do not check the dimentions of image, only address. + RelaxSize = 1 << 2, ///< Do not check that the size matches exactly. + RelaxFmt = 1 << 3, ///< Do not check that format is compatible. +}; +DECLARE_ENUM_FLAG_OPERATORS(FindFlags) + +static constexpr u32 MaxInvalidateDist = 12_MB; + class TextureCache { struct Traits { using Entry = boost::container::small_vector; @@ -40,15 +50,17 @@ class TextureCache { /// Invalidates any image in the logical page range. void InvalidateMemory(VAddr address, size_t size); + /// Marks an image as dirty if it exists at the provided address. + void InvalidateMemoryFromGPU(VAddr address, size_t max_size); + /// Evicts any images that overlap the unmapped range. void UnmapMemory(VAddr cpu_addr, size_t size); /// Retrieves the image handle of the image with the provided attributes. - [[nodiscard]] ImageId FindImage(const ImageInfo& info); + [[nodiscard]] ImageId FindImage(const ImageInfo& info, FindFlags flags = {}); - /// Retrieves an image view with the properties of the specified image descriptor. - [[nodiscard]] ImageView& FindTexture(const ImageInfo& image_info, - const ImageViewInfo& view_info); + /// Retrieves an image view with the properties of the specified image id. + [[nodiscard]] ImageView& FindTexture(ImageId image_id, const ImageViewInfo& view_info); /// Retrieves the render target with specified properties [[nodiscard]] ImageView& FindRenderTarget(const ImageInfo& image_info, @@ -61,13 +73,19 @@ class TextureCache { /// Updates image contents if it was modified by CPU. void UpdateImage(ImageId image_id, Vulkan::Scheduler* custom_scheduler = nullptr) { Image& image = slot_images[image_id]; - if (False(image.flags & ImageFlagBits::CpuModified)) { - return; - } + TrackImage(image_id); RefreshImage(image, custom_scheduler); - TrackImage(image, image_id); } + [[nodiscard]] ImageId ResolveOverlap(const ImageInfo& info, ImageId cache_img_id, + ImageId merged_image_id); + + /// Resolves depth overlap and either re-creates the image or returns existing one + [[nodiscard]] ImageId ResolveDepthOverlap(const ImageInfo& requested_info, + ImageId cache_img_id); + + [[nodiscard]] ImageId ExpandImage(const ImageInfo& info, ImageId image_id); + /// Reuploads image contents. void RefreshImage(Image& image, Vulkan::Scheduler* custom_scheduler = nullptr); @@ -79,6 +97,11 @@ class TextureCache { return slot_images[id]; } + /// Retrieves the image view with the specified id. + [[nodiscard]] ImageView& GetImageView(ImageId id) { + return slot_image_views[id]; + } + bool IsMeta(VAddr address) const { return surface_metas.contains(address); } @@ -100,31 +123,12 @@ class TextureCache { return false; } -private: - ImageView& RegisterImageView(ImageId image_id, const ImageViewInfo& view_info); - - /// Iterate over all page indices in a range - template - static void ForEachPage(PAddr addr, size_t size, Func&& func) { - static constexpr bool RETURNS_BOOL = std::is_same_v, bool>; - const u64 page_end = (addr + size - 1) >> Traits::PageBits; - for (u64 page = addr >> Traits::PageBits; page <= page_end; ++page) { - if constexpr (RETURNS_BOOL) { - if (func(page)) { - break; - } - } else { - func(page); - } - } - } - template void ForEachImageInRegion(VAddr cpu_addr, size_t size, Func&& func) { using FuncReturn = typename std::invoke_result::type; static constexpr bool BOOL_BREAK = std::is_same_v; boost::container::small_vector images; - ForEachPage(cpu_addr, size, [this, &images, func](u64 page) { + ForEachPage(cpu_addr, size, [this, &images, cpu_addr, size, func](u64 page) { const auto it = page_table.find(page); if (it == nullptr) { if constexpr (BOOL_BREAK) { @@ -138,6 +142,9 @@ class TextureCache { if (image.flags & ImageFlagBits::Picked) { continue; } + if (!image.Overlaps(cpu_addr, size)) { + continue; + } image.flags |= ImageFlagBits::Picked; images.push_back(image_id); if constexpr (BOOL_BREAK) { @@ -157,6 +164,26 @@ class TextureCache { } } +private: + /// Iterate over all page indices in a range + template + static void ForEachPage(PAddr addr, size_t size, Func&& func) { + static constexpr bool RETURNS_BOOL = std::is_same_v, bool>; + const u64 page_end = (addr + size - 1) >> Traits::PageBits; + for (u64 page = addr >> Traits::PageBits; page <= page_end; ++page) { + if constexpr (RETURNS_BOOL) { + if (func(page)) { + break; + } + } else { + func(page); + } + } + } + + /// Registers an image view for provided image + ImageView& RegisterImageView(ImageId image_id, const ImageViewInfo& view_info); + /// Create an image from the given parameters [[nodiscard]] ImageId InsertImage(const ImageInfo& info, VAddr cpu_addr); @@ -167,14 +194,20 @@ class TextureCache { void UnregisterImage(ImageId image); /// Track CPU reads and writes for image - void TrackImage(Image& image, ImageId image_id); + void TrackImage(ImageId image_id); /// Stop tracking CPU reads and writes for image - void UntrackImage(Image& image, ImageId image_id); + void UntrackImage(ImageId image_id); /// Removes the image and any views/surface metas that reference it. void DeleteImage(ImageId image_id); + void FreeImage(ImageId image_id) { + UntrackImage(image_id); + UnregisterImage(image_id); + DeleteImage(image_id); + } + private: const Vulkan::Instance& instance; Vulkan::Scheduler& scheduler; diff --git a/src/video_core/texture_cache/tile_manager.cpp b/src/video_core/texture_cache/tile_manager.cpp index 8b02276247..7e06291e73 100644 --- a/src/video_core/texture_cache/tile_manager.cpp +++ b/src/video_core/texture_cache/tile_manager.cpp @@ -15,7 +15,10 @@ #include #include +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnullability-completeness" #include +#pragma GCC diagnostic pop namespace VideoCore { @@ -251,11 +254,8 @@ struct DetilerParams { u32 sizes[14]; }; -static constexpr size_t StreamBufferSize = 1_GB; - TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler) - : instance{instance}, scheduler{scheduler}, - stream_buffer{instance, scheduler, MemoryUsage::Upload, StreamBufferSize} { + : instance{instance}, scheduler{scheduler} { static const std::array detiler_shaders{ HostShaders::DETILE_M8X1_COMP, HostShaders::DETILE_M8X2_COMP, HostShaders::DETILE_M32X1_COMP, HostShaders::DETILE_M32X2_COMP, @@ -377,35 +377,23 @@ void TileManager::FreeBuffer(ScratchBuffer buffer) { vmaDestroyBuffer(instance.GetAllocator(), buffer.first, buffer.second); } -std::optional TileManager::TryDetile(Image& image) { +std::pair TileManager::TryDetile(vk::Buffer in_buffer, u32 in_offset, + Image& image) { if (!image.info.props.is_tiled) { - return std::nullopt; + return {in_buffer, in_offset}; } const auto* detiler = GetDetiler(image); if (!detiler) { - if (image.info.tiling_mode != AmdGpu::TilingMode::Texture_MacroTiled) { + if (image.info.tiling_mode != AmdGpu::TilingMode::Texture_MacroTiled && + image.info.tiling_mode != AmdGpu::TilingMode::Display_MacroTiled) { LOG_ERROR(Render_Vulkan, "Unsupported tiled image: {} ({})", vk::to_string(image.info.pixel_format), NameOf(image.info.tiling_mode)); } - return std::nullopt; + return {in_buffer, in_offset}; } - // Prepare input buffer const u32 image_size = image.info.guest_size_bytes; - const auto [in_buffer, in_offset] = [&] -> std::pair { - // Use stream buffer for smaller textures. - if (image_size <= stream_buffer.GetFreeSize()) { - u32 offset = stream_buffer.Copy(image.info.guest_address, image_size); - return {stream_buffer.Handle(), offset}; - } - // Request temporary host buffer for larger sizes. - auto in_buffer = AllocBuffer(image_size); - const auto addr = reinterpret_cast(image.info.guest_address); - Upload(in_buffer, addr, image_size); - scheduler.DeferOperation([=, this]() { FreeBuffer(in_buffer); }); - return {in_buffer.first, 0}; - }(); // Prepare output buffer auto out_buffer = AllocBuffer(image_size, true); @@ -476,7 +464,7 @@ std::optional TileManager::TryDetile(Image& image) { vk::PipelineStageFlagBits::eTransfer, vk::DependencyFlagBits::eByRegion, {}, post_barrier, {}); - return {out_buffer.first}; + return {out_buffer.first, 0}; } } // namespace VideoCore diff --git a/src/video_core/texture_cache/tile_manager.h b/src/video_core/texture_cache/tile_manager.h index 00765b1f84..d0e5eb0f37 100644 --- a/src/video_core/texture_cache/tile_manager.h +++ b/src/video_core/texture_cache/tile_manager.h @@ -39,7 +39,7 @@ class TileManager { TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler); ~TileManager(); - std::optional TryDetile(Image& image); + std::pair TryDetile(vk::Buffer in_buffer, u32 in_offset, Image& image); ScratchBuffer AllocBuffer(u32 size, bool is_storage = false); void Upload(ScratchBuffer buffer, const void* data, size_t size); @@ -51,7 +51,6 @@ class TileManager { private: const Vulkan::Instance& instance; Vulkan::Scheduler& scheduler; - StreamBuffer stream_buffer; std::array detilers; }; diff --git a/src/video_core/texture_cache/types.h b/src/video_core/texture_cache/types.h index 45ffe25117..bcef193556 100644 --- a/src/video_core/texture_cache/types.h +++ b/src/video_core/texture_cache/types.h @@ -36,6 +36,8 @@ struct Extent3D { u32 width; u32 height; u32 depth; + + auto operator<=>(const Extent3D&) const = default; }; struct SubresourceLayers {

    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 z zaCD#)S5zYBj}{bV#e;@<8fX4`7%az|@JwR&y6`WhgM~QW*oB%K)Wq>C@RSSNB&(PO zKJh3(?Z#a01IOY6(}e!^t{_&((U+GVUsJvtC{*WL$cz?&6o`5-Nvd~nMX5$xMBXF| zhuu;G%fr^*Rmn3b;jU1r+hUw1&XS0}y+mLUIuqoFxN%$qNMG~4-2xJ#Py8;a16d`u zM9N!t*M85*mC!I)bAL5`yj{C|BwE_^%q4+zy6KGlNBQ1HSAABO8Z@<%QEGM*{ZG>N zquRjZvcx9nWC_VMlQChm8PbP@mUg|&*ipu>?z6L{Y}-fzJ*qE=>VUGW*UVRQjhzj$ zo?SIu5LK>NV`=g5`nL_(K;V>DvUl{fYs^55DY6t{%nBHb$qwkj-Cl2LHMy1LWk23lyYZS7 zZ{`c#<-^*FEJy5Qh}I^^$+c^PUs3}s`NaK8oN!T_XK(4K8@YFx0|tpb8}8_PpjPQs z`!qhfR^=FD(^$t+_f(o7yO5T8GRHJ!<1H$UzlBm%7`+OY#O2Ox6&h{wR663~w#z#2FIg~9IX0;U zx`nWOYq|_oc3{plFGT`cwFVR?jYGh~wS288U}3J5pEwBTXn5Ieed$UmUn(+l2e?j5 z-jv(XOca70UAS4WaLVp}hNceL72+WH``RIk0CTrVE(piLB2a7UfFC;w`LS1AK93$i z5yNjlo<0_Ps72}Ig?V-|J*lo#`a}l(TaAXEe(>29RZZ-=#n3ge0$6tC6MKx`k~dTI zV@Vfy{Grd^dg=qDh=9vqp2UEXF1@92>Y^gGn^YGX*N z*T#~1XWF1u*3=!=)DCp(fhnp=j4JnxjHv~7iN349`crxv$d5h#t$$(&R@n(;oC`&s zQ|L!umlJ=RFbJ1m=*R{RSO;t@BEm7GJbHLag@4idcM6s4P5oldh_Ti-+}9TQcTd9#F?n7Jp3 z>ZNT+x{0%NM46P?q(P~b{zq=CW;uD2uA|=>(k9NzQa{GXQnxOpKcg)yQ)o#z^N+w| z&D3(4Aq?j}QmwWHG;)2M-qF@}c{=T-KcbxfRg_xIuw!0hRSw=>g`x-rTtb6F7F$PL zJ>tNKBNxdni-H~|6ZrxOflJKrVY5P>0^t%m1n{|9m-D*<{<60rJ7xh{449d?2FEOL z(V@U*8tB++FG_RZhvdsB(g4XymI6`~p9_7Kf+yfPWQ5*E#WPQD!NJdwzy7t*=UeUb zEv+r_arOLq+p;<~Sd(&eJg$Ud@hEtyg+#!X@VOd38-zE3+QjGmkz7wNvj9V6HF=fx z5oc1OQ70Oh(OZx*qra-NC1KYj2r$~lRYQY`S2Nb2_#tT=SA&8BRb7P!&Tz-UIU%aK z@u5K9vSrJ-7521=uV(2Q4CP%4fVn}5Qpf^n1@t22^7Mw~)lYr(RTF)T1B$DBE+q!W z1AK))p+w!RE!PIAZ~e0@pmW1_Eet4?;pJ`)sDnCZzyUx)^)HLY>GSs^cImU?ExizN z78LW^m`V&{Hg@U<5uYNE79TaX6M4l@1*1=kfrxqJ`6!e>I~akoUyHDOa2FJ}5}N$b z7rIy@{+jDvMVOH+zUmp8eh%;nE11DUTcI)t=*5`BvC~&xxgA9vNj(yzAB_lAil(fn z8ecj#AgO`uTx>2oQxCHvja=JTO~yK5i=bvfMBhCM%xapG4zVo+gE&HtoD1D|HXFL^ zL|~Q>*c2+hK_am6!Ojfyl|Ojmi8$1fH{BGZzk3zj<&;N&xpRY9(P)a~)D9nyClim; z_u&XSj8ovF5fgzpw!Vs|;+8Kf(YXhl2Ipidp><6FbI*x0>C^LGduluojDlOQzBU!3 z`#3@t2P{>j0$Hq#FK4^EWOfOxmjJl+@C@Cc!B%X!k#7WNxy1PV5NNt?#I40;#GrG{ zMal?#dbzIp;3@NJK}k2uUjabxXHSykF7LvGrVfrMD2FqmC`hD`f_*lN(Hj3RMMTcU zW(l;}{GDB4EFxmBL7T1O1bGcm-`_w(VSxU>M1m6rS(-XKCE)0wm>B;z`h5hb%9?Zu z8_z0ogx;?;Hp}YeezLd5=$F^Y{5xYTWm#u{qZj&OPMIMhQnU3IBUdcqLgr4%?Iw=Z zW#&3drF5cQy8?}H_#@|$*`r1^KdlFco4cEh-Ui0u#tjZP3F?trf&WP7sU;dM48g$2 z5j;-e!#-cdE~VTW)&QQMt|vxWrNRn4kTQ$dBXcRrE5=+oyVD4%t~T1YV%1g|U+gL4 ziP-f`YKhZIpXblmUXFsj&J`mt_MQgeth`f^3~nS7+)3Go8U%V*{()|0=rad$u@?^G zV8U5+7&#DY@utF$&`v6bVX0zg#+WN8HahiF{F;un1TjMc*uyR_Vjob6FD)`>D$l z&x9jE5~jDbY}>K1ks}tf6NgW<6B}>&>+O&nC7upYeD{QrR=&Bb*LA<#J;p4xjh9QD zV=Pij@Ahw#TUORVWmvgzWq5M!;-xbjT$M)PnYVm?*&_PakbQqZuDq>j)vBdlu(Ye0 zzj%HvJXj=bJi{u?u;$Nc*66Sk1|nucNw^xcp?1QhdbIeo{&(UAUanZH;CW>pGJMRT zy#VKAyYofQZ}8wURX^OmIG+!X7yjnYU!foppZhkvr3W8wf&B3WrO6znPGu2x1sslCy`w~HLLM}iWgxIt(n`-Q@Ckx5!F(s45f8>KpS3rkIYP){2z&~f`_ ztGNMDX=j9I5C)PCAzfa~7I7dw#QlT(dase8hm=Y+Ko9wY@2mPZz1~Lkkt27JC8z6G zF0BT~T6V?E*%ivIWo<25p^2xc@moI?M^~3Yf8MjOS*|OWOO&-Cme@VYC^Mw(?NVip zLawack)ET1Tg0?(d`G!0or;@4gIebgwirNYRLc?)nIQ?l$$#Y~-i~jk9`< z(UM6sYlT`~^^6I};kiGArlS)+{`iR`5|k?eceU5?1)R}7>v#{G_OekuEmfOBe3LM| z=I|F^ypR;Z$YKpt6RrkfjPLIH5VGzX{)U0;$cp?-Iawx!Mgp16LRDshbx-uu-rb0}QrvKeP)AzGc~@31f66 zbXT*`cYYd;DbbjE0Tvu$DMM4k$ApKL!F$kcF874t0Ot*Em>jrpXBO_&OVY*9egC}z zc>vb7w%tJ7euJ%U3Wu3zy9rAl$kB=((SM6WO`QRUYFNWz~ z#K`LRBqE+#>=Ww+{$I-Bs`G%oj<-o8D{(v@oSbe{h+P6{d2`n)FgsVoOdzg)H(1i2 zI(<4xzitGZ%92*5ErX13)OnHv$bjP(d6Pa-SO-G$tr~>3_cd`hf$2C%;GYu9+!i=aLStQP?^sK{pQR`QR`n z4~H=i9H5Q{KdMpaC7?Geq68AfSx2l9$b%A9w8umLDoEc=%H9M1^J%>iRE{OsTp;34 z&(w_}JzZT5XUTQK^p*1+LMz`gWu<0t8Z+PhiK6$=74?xt4tlX1@&ZGjQnBx^yW9_EneLG z{xSTcCw3h@Kx)+9X+6-nQgbzl-s*}maWyEY8b(g7gSkg1D3iZh1ilm}x>@)I`-zwn ztpKk0kp1^FWC~UQgDJiS_a5v|9qiA12PB{85ZGo~FGO6pIk{Y?(*wC{E(6McD=)WQ zfhOd0`F4ZmJB!XNVKm=8p?fC@d+$!%vwS%jAT#Jg9F)E*ArH`FgyeR5HU}{1iT5Ux zR5H1tNnzmzIOgxe0O$IoPWnFmq>y=JU$2cTreKS7o0GHbre?dt9J560%^`WCG+0|} zi^=Qd(M8erqVyHCXyvj7Q`88wwPkVgj-TGyMCST8`JZW~&j05my^@lt3}KyC7pqs> z0PoQ!=x9|FNIkGo5Ry=Y?XR^o+oIZlg?hlH3+u`a(bq~L9j?&Fj?i!aBg!BFXCON* z2qsQHCE7bTjcnGQd z7zo%NeH2Oze`{+pIkicyXSc9*&xNISsZXF*evBrO63|9?Sc%h3)CYIp9i`vb0)PuE zDw9>~BFKne7b9QLe+b(l-lsyf<=%tRIC;6v7 z#pu#8B<%*<)gz@p$oG1wr~SWaez;|uL{TMID5_T;t6DI(40LQ*?!JlcUWvX!AyL)N zJmYI0*MI$&^!J4%ojg8zbmOC+4$Yz65JHa^*<_#+M^@wr3CsD-xggh3gSCJ~VqVO` zVq(jrv$(%X(E<(%6$WB-dm0D*lEDHF{u3@VY}diGEMFL163)#`{-Xb{eK#Q|X=2(Kh0P)jf3wQoW7b(l zQ)_d=9T9MzxJiVRvA6|1#X;pO%P%ONGRSW1LW+Py`0V-*3DDUDA)9~wwO^ z_H{H<#|^U|xX#A|o?7kBl6@X=i2}UrV5M-_sd%LdXdM19jp{H=u#-xfcxbu#aj$ViU&6+L7C*T*oNF$2u4dZ1hvvy!hZKfb2oZy?@Jex%vt$IMgIp3JH^_2sQl2RDVDOgvCQ{??IT$7@8|_hflRQj6(9uESAWQiXtM|v#cXY@S z6YF8dLeR1JOP{Z1pYeixX|1EYOd@cImHsAb3H|UtT&}dk;W_81x%H);pq$PnB8C(% zDxug^B^!*Y`&611qedShPwv>UV`4+*R)M$Mug2!Ou7`oh9vEUBmM_36E+We_A7!B8 zuqaGugoVUyhj}V~%x}S*I0#;3kXjU08DVQrK6hopYqlgG-q*!N&(_}A%7R+j-u`Fw zl`tH$JQ`gEd%kk<`Y><8{jCq~*+cfWwf(8N*?R8W#*M7@3!A)O*EiIW zG2W`iFB*dlilY>CP3Xjlx}3S0{O8DWhkFm zeEjRLU-8Zxp=BCDzhr~~vMkU-BM3W^dA*7mKr>nnqte@eW_0I8GPR-#0Rsb;!Axd` zK^fMZms??cLis1dg75L8tvzgS$kUiC4SGac=mz+i>Vat_z}3iu@57(Ne9p^dBKQNd z0iTntFd*~;7FLKQOdAONTm_TQb-;)X+27H@ZE1NpogUq+ER|PCop)D46;aJKK0`$_ z&(6d{!@;qpvG?A4V;$kZ+?|nc0d+2pRL2$aI2>wP1E;1MNGz45q%p>l)!bO^npnmX zaY}pcuy<5a?v(3RVYx$~|0-q$H>{hNg_%4g? zVF^_LEz6;8uhNG!T5Wh?guW~^DM%UW>lNJi=yIU~QD~C@{^aw!r*PRlm%F)Ij&tr9 zjewl_tW*g;d|H9f`~q75Z%V}dV{nNDNK(4aiB(_R;OH6I4k@XaT{Y z`C`;3$!F!Yg9SJ;BD11b*>jc4_+X`(o{$f2UCe3lH-`5@b&a1vX!qwcap(|T+Oy)s zv(HMu`0Dh%r1ZiC`8WUX?1L`>RM3wviu{hQP_=0SX^+4nE{QdoP&d7`^zT4LRrqDj zibNvwZI-@wc{I8%6soUXa}}epejeuA?{0pGezWd9C1GcB__HnV1Zz(!iLRmVPlN6OPi`5Qn{HD?kGGqGU(3P3&&lN}^(|5w!U4Uiaa#ZGlc9CRLx z_0pic*U%#MYzP$^lD7&)!Rd=7Ik~MJw#h-*Ckk?Ro*|=tV>YARo-JY z_NfaR*c!ff?xbH^s%H;a%+^VBx^z0fOfPG)=na0ELGFKCXACHG%79r9AN9(Xg)vZE z7YV@%OfTfvZ6y^7dT}7|QYe)93ugUs4>U z!K*bkY4nD;!y47A^z~Z3Pi-(n9hRsTzoz$TjE02W8vXG_o=)5>)(azCjksB)6Hv3H zj+R;lSI?7ryfAiES*ZEiE8-x!iwvX zwo0Cq9j_X9@Bc^IcK|kBrvLMPzu9{=v(0GIrfs^?CQXyHX=W!a&_aPyrVJ4Tl_d%y zIB z^aT|JR4*yXZXi6k2N#RHp`}5g(ra$RDfSgn&c322E3hW#Zd<1Riip}wA#ok_1TGtQ z-MBxFdp>Jl;kd@izXEW_I1k6!&w^KSV@8qDFs|W#Xve)FYcN3(VLxwv);ZJf0}aKd zdd9}WMzoA!Z2|xxM9^I0C#QW`Hws{W&V^$89%E~0>NkPi_QS`ZxbT}mcz5pVJHPvG zQ7E*esmT?*re8Sz^48z2TX!2Nrk`=`g6=QB^j&(Xq^4#@ZS7#C0r0j$yLL(yVfZW$ z#=V3v_r(Bpp-M=gGb-it6at=}C(-hSyz{@Me@6DAmlCQ-skB7ojA&HXh1FpP>^&FS z8x}=)dhbA-rx%C2t2D}Tdq)(Y66Wa=uhpUTtv8 zZ@zzRWK>QLEhV|Ust9sv4OtdjRJ|+6R5m^uTmtQS2`qCo3stP4zNoBSD1tzop-NLz ztFF`5)iHl%jj<~y^qkt@=~4q92T_!Q17gKKbKUaZ={Lj$k&!pY899&rJcrSeb6^%+ z1)Zbt!HrzAxO&QIunrn0?=OK))9;|ybQ7ZAvbGvLC6_|N`f}UPN^h+@@qZXa;aILY$$5*naT}~wdcEMH}SkPJ==zchAw>c(e5^hR$LE2 zq-1hh$+U$HK=bZhIArrR+h#8d!Ub+#Iy|>RUCerT<_k)!LAgyHBy&n^ElRs0yu3n_)Ke0?@?&w-lRKILtxw_(n<&-BE`b7%iJxi8cw|H?gJ%{{7;)oih z<`hlAik@cAd;`IAg?hoq=|Dk+m!&9SLV=RH>jTw~QGz3wt=kENz$ z!dgX1ETY%C7KP{~%$*NE9HoD>(Fm)kHAW4v$N8i<7dzhxb3K{n1>ir%;kJlIj(;%Y z*GCuEPaAh`Hg-m9lC=O_^)|my7p`^2@&C#baC_6}NvL1TqmP`DVv57zc^`kg%UgLu z9V_Ek&)hkQ(MaqzK!l6Rb>xzkmib?Qz1!Sd+Ey4lxFBx;%6f#0ntdXS5P*Oox^ zB#~Ny*oEnL^!K|&Y9+5`VYN2=+$yLzsuWh+LSLt^_V(HT+c(uGD*6a!H9)R$2jPg)>-Bj*7lBc}{MJRuU4*T$|}s z8198JqFkPni=r{o#;6)S0wy*POk*Sr6Id8~WV1^kk;<_gf|CHu22%(SvXBjk#^ERV z8;>}-Tp$A9Wlrzzew|UIe;7nKaRvE`8lH*A_ab3X3sS^2#)R4m2O|G$E-n8)4!a|v zk01}sv@qY<(aO_`eJv#ywLn+OYynbH0uB)3`TU+(sHJ(VIj|$Puglaeh2gVb7x|}^71EQHXl-UpfQz}e8bI~E! z^Lhp?l=j09(_er6{K^{vt+~8au2KV`p+s0*3uw)S&DZqvdM;}%tCOoq15tg{pfIWc z5~4ILZGvfGk5DdqoheR#Rv8zm+eO<-! z;;xCy73F~C)CB@eODslT4_~$uJgA2iLb5oL;6*_-03mKrLk?r7D4|5*BpX1uj@eJnolqk3DvHMZDG+F#&`0 z+9=~%zv0Jg!m-xhMIQ03_OOG!DAagM4#%%S*4RI;No#37DcHo(1QqfF^f{7;<81l&|7{#Wh zLuMdxB3uM3<@RmbbYmo9f9a(iJIMX_ld=aN{KMY8pWYjnt2IFnk&1zWO(dXy_z%3n zj&b_03qo>}6hIJGpRebeZ~Rq^PoHwL3Z=l+GAek)h7PE4Zt_Snaxr@neJT7{((m`* z9eONG8b|(8?39T4MDBsxBN7uyU7)_XfjllR4(eq3)*+yLp4>pMB#XT>mC@RUy+KQW6Cfq?T z572j-)-<;IZXnwr2HU@HUxdD^qfwoz(b9rNoz+oB7NFDo`2V3oti&R%&iPF z<(Gyb;I|+A*zvF?>SO?-tpzCBcBogNAA?iCAOinzfxZ*MKsXY#l4u=KPw@L_Ex8*x zs)pLw;72RSDGzroF&E@A3izz4iOV(MBgi&zQqYi%O5j$HSsUl3qBwmct)#n!{$NL7 zC_XNa2-KpOL{swtkO@tq2hNYh{`1KvDpVHWnjWN|he@DCB$v4?jD)As^TiLxVf7Ta zL>ZP`Mf~)2VaMDWfk9j~)!S<7m;emMOM_^0}Bt?FObtd1jZ1P3w#3lB3OtcYU+v6)$t+@Yp{0|KVZQGGy|SvBH#=$Zp1B=r^0;h znE*QbRdb6d13YFl!@1xkV_pLd!0wZe9SbR6_SWY-qc&@s9qd-BK!79fS;6PXjdobq0E zX=iJZ#2{2RMXkl*MwQSg)wZN;CrVXrxl&nSRcgx=GL?rZ3j85}t>?fW+8Y}i|In~_ zFaP>?--X0HLycFM{VW_(26&I_n$cQg^>95{?2E=-IqrsEk6btphxZU3C{Z^&up*<# z4dZgzI(!jaUjY)z*>AXpnbX2cm`TsUZ~oeoGBIjl59T>5_kaEM0$>INm+?wo_DzWj`^#YT`11ur6Je|d@*Y0lARcTyOqhYA3 zsM0B}mXub~TdQ|Gv`}gi9{<=?UgneAZ;#++I6T-R9$=MrbHYXXd^_oP!pNlC+8TZv_AP!Bj@jjk#1 zNlED>tHU~l?07bQ&gq$_tqCWj-g!2wd1}~D22U&UH-A=Al8l<1rbPP>!RaA|)TL0T z7AB!cgNfa9tSj%O3vCrl?sDZCqzlRod}U@ukG!a(S}U0Jp$_05EXZI*w+z0I9YVZo zXs0uJk%4S*ODB%<_3ULoj2EKv_%&g1|4p&In>Ia$dmhgqstlcXE$lVXLA-iV^rlB= zli>&V#@$F}&~h`pnS#OAhRxl{O-&?0D(Jhl``}FnUyR)~d;0B(zF?4eLZL&0Bc-Io zp=rajg4(elSXWbD^EQ1K<~S~$#tOu|03SxeyiLvCp!XkipO%#g{6ZO@Y|DP-)*`-K z)Fe^}$Ql~PWyf&e5P-FpEdz<`05^cdF0GKYVaz$51GOyXd>(qdjpKH}sKjoFkZv6} zZUM*)?9(Xc1^7Yk%4B^PL@V4!SwnX0Ct}>modWt)C)`jlugIq}RxuZ&+?>fpreT_v*vVDLJ@#^T{WeN)5~IveB?r4s(-^+A`Gc>GA0u$61oaP<_tRv6x(InBMt ztAr9J8|y>uyFMdc}P;k!ng}xCgnpxMb5LA z^Gixgcn+7G{-1Ya2NPZIuWOULT)Q|^Zwp=QA7HMLpv?E zL8s-W#DR?)S+}45JwV^^uKA1!4Lq=D!F%t$*HmF}$z38#$?Lb*_pW?aDUvvyh%u;^ zJFF^!O5&4fMNG}_1Lth=^A$3-arK%8vge+&&n6oGNsIQw2NxXHEHSkqCoMEf&}!}n z;^XSP)jZT^X2vKGYK3KPWEEQuE$Iz#oJU&C>|vn%G5g_aGk6c-a}0Mze?BU|fm6ai zc<{MmH=>Mj2VLIB7Ca*A4g5g(JDXT$S??nIhQtFm$8S0F%r7?J+r8g?M~2SCw+DXs z;iX8)lv9Q?Q!O@7vUwYPpVtTN0 z^X)TXL}Jc?i)wk~A?j2m$zy4H826pBKH~saM#-Mi(oUCaTWM+eFFQ(0JIcx~f)A-! z6J1*+0GLJDqD64)?)Z)*<)&)2LR(L_H8nB%z{EhQSXL?(6j#SQrBx9(EE$kXz2kl4 z%v$4{bx@DN=JDuZG`wiJ>7`5yIb(AXO1PNIGBzA~KA5kggwcED!V)|u{5od(*jh&L zfFH8|vaBi0W&Ig8_Dt4~HG)hmguV|y&S(4ZW4Q_dUS7_4XGaME;Ym7Tv5x_7e0(TW z6TNd-G3EmWAaD!;=Rpkw8n?4O+?BCFtsi?qz*~yF9{iJYE^e?# z`b@nf7coGB#^Z5`y{jn?+lGGv9*H3z&@%4vU~f@z@%&x_bC4CCO;VLCefs1NN7gZG zemFRlb#=_9|DjLq=V`R!10;~956;k4>*A`?Zy7?ndzg;!aEL5VH@d5^&>=0(z*Cf8 z^5iN}6s9!=WTNxJH?D3Jo6Vxy?az^?74BX$(4%+6X>6PfBIrBV>$1ghIV@wyfT)vj z|Azr*b#mrK;@M|bT@%<6ew4M6Wmo_QdyMLZt~qzP;U6Oq?U3A+Q?9J}C~RM08c8L6 zM+cDn2kqp7PWl)b=tV4sMz2zqS`7WQL@ueDq*iK$a;-{8U+IKd5>XdyjHPG%1>XAl z0k9gD>P{iLSCjwfPyx-BkClsDVc6bFpN!r;i=DPFN#>=h*KVJ{gHmkY))h=3bwQH+ zhu%umbemiyIQ5E28nqNTm(>+Y9uPvyx-MRE(6?%7rMP0r$(_OeAbDI?nlLFW?E@{a z|MKm$$66{D^Ar_WUy=~5$f5|T?6UWDGj?tA;>tbGsh5tEa8mwbR?14K9=KsF7{>zU zaZuLZATVwf!Vv(HxF-Tgm)DuqDe5j6P6T#h+a#4->%eZTI*qF zbZHY#Sw9=QdnP;e))bkY@~qw7#|LVbzAdLLAs;2_P4SQ0B^rU%A(Y7kL{_F`)n#^p z$!6j^%atWvgl}q|*DG=;duBEk@tOYMKr?wbE2oJWIhB_z#l*;f5WjH zs>krt;QtU|7;8e?UI!OeSQYlY@x~2(@~RLtv%nujY87f=1Ovc3>FXdoiA*JhewQZf zAX1UNNhVVWVP7i$^$tPpR9FI}6D23QY15zJZQ?{AQVmJG{6hdcE zA`#P%T5g%f_Fo?(iDc{J%XzRstb5ZE=4r*`%Nv9+Gf;CTM45>*k9Wd|yUerdycE4H zk&vtS%YHY%S+0_UvI9*D3l$UDlzm%N?25b2suk$8f{N92WByY zHzmkW(sSxXy*xl{_nv<;c{f#Y)^u3$Eeg->q^|(HdwbVHe`SA9t0tsr>6*m!fi&pu z4tD;bCg3oEh|FLDKp?uIog3?c8Ae#OW(Vnz?x$}bFI21fZMQ!6QTxcp%)0XWWhX86 zRC|`3auV2K)ajS<0)r@x%dRpc?vtU^lmQmN%f)OaGd_%}Rv1zF@6B#bUCBKRlcsZ! zzTwo44rQ~ccNWkwYefw+$Dd{Fm|6$h%Rn8C=}-ShMO@xN&q^{M0|nu=>e=^S?GuA? z)o$C@KXBvL8nIpByXvkX{r{$CDo$)KFu$FAXzYvDo&VcUwj*R&DpmnHm znIth+aytxV!QEgjqKF~DF@T}K#2-E@*a;}S2JlDycTO%Z?PrmvmDKFmK_6iR>Hi$; z=$M=0nVTDh#qyfEqCXfrr+9!8p=z+p6bYHfPpbu5H&OLq_gM*nTAUE8wpsA%Oxp z?Zp=pbpLsizu&^ z(3#39I@dqS;2Y5)=5Y;}bmzDz(C&`M31Arr-&L-h*&-;i>VvwH zqGh$VXtNq0MlQY3fB?K=belB>) zxxBY^XMfO%)L-E8$YTc4imhErg$()Am1W>hS)n9;&N5B^)f+rAtElXh^J)J#8i~r= zAdrgK)`Uq_>3UV;p4w+EwRBCoyh>eNtE(@nt2@Eyn%rM%b_@(M!)+E>{am}lG6e%2 za1a?4C~P~-5K@N$Bs&1Zyxg`!@P_#o0wRVo@D$X2uzUG7!~aKYb4fBe%h)lwN@kT* zP3bmYg2hO9T!BKYXGH0LKOZ*tOs@evarIyqt^JKQ>H7GgHc2*e16k9!aEb*69qn^Z z36i?`^LNdk-$vIBCd&2URdekMhuAU|7F_>t_C_(z0$1vu!>&{atPQr%r)E1lzvV*d zxjtMzG|yZpfOTfCLT2m?2Jzf)I{8%N%JRG0G-I7AECwwaYQ5=H3 z2;35&sTFg<-p$k50g%^(w#bt!c^aK?#l!1E8oNml;Tvt_igvxv7*N=YUq~jO0*v>y z336Uiu7Nf?+%sE)Ncqiex2;)YZfwjc`XSkjyVwD|A#yiF=|B-IA;xTU_r3a}zl;}x z-%h9%OEFtqG@E*u(o5__R z*ukzd3X$u8!Fw)D%J#7eC}l$dpYUHh$|jWbx`G?H<3@MO@r|#gLCMWSZ%$d zqvMLO&LwISIyQC)%%S54_+aB_`Sg93Q-@_{(Y!Nk>3{rIyK-n!#C94TaU(1~T-N&M z=z=I&9ljTck8UwoV6&yEo%RiEUfN$QcS?-yGgpVEZzzVz^RmkplXbt<$jIIqodzj6 zqn*=wDd0*nX;1{rOlLM{od#KJUhfY{hfsxowQQ0%HE>q&ObBw&z;IPpQ2oqUyV`mF zGw?>Pvil&1(RF_(|2XdiQQZCY*lr&71<$Jt=msv^0r+5{e_dnF+ULs5fpSVhIj)+z^RG;j+4MMEz&Z#tM;GBFaTIwm{*_E#(rwxB&}vv}yZDxq=>?0( zlA$4b*&=2_u)mo+dT8QVVX;eq3k|I`h}$SM%9>RrvgcJB-|7I1!H+&=)p%x2bLvZ{ z&3ehJtf=;A{pLuB%x!CH*iEk6xzqa#{Vv2@O!;egvsOpdiZZFRVGd*B^Fury7!dT3 zIpr-JNp1%Vwg)n8)gupN4AmXmOTyTUb99u#DKY%(jPho(wL``J%cJpE;tH)M;svRf z!rm~H`t^hCgsa+MlU3jjPU;KylG(}RdXk`z!s9gL6f8S#*T)}|$%}9N>@)fb(rAq- z(VYK71PQo5b3vrB==MD=h za^rm&irka90ly2!T{?yyA4P0zKDfvwGzNGk>MCcgL4>*J0o@+VCTU>t6Tr&AP(z4b zTFc`qvEV0xQzdK8b5jFQ;1*!uekv{y>FbnPWg)3y!ONG1?u>#91Q|;+yV<^I+B%-; zI5$L?7RS&DA!x0Lf{Ui?e)7o>F4QnFGt+x!zy0=AS9w}mX2)XhBpH#~>@1SWS&3D` z*EmZ`8(jvu;L5h@8&)C(`N>z&S&d39(+n-L(;FROML-_>x)lhe8vwG(^aTb3loZc4ryqPX% zr)}AC2_1R!s)6=isa6p0Esd|e<>jyFi;A7!jK?9^fA?o)>vu4Mg!U=Y&PWdfaBo7h75=KfEi*yuReNtv#hM%iqK1UllWVB zBYgVvae)9mCBj!0n-J1$vxrFNhaU#3?h29+oF0wPuL}pbR$V>Up)^EdZNL2_$qCX` zZ*}9&uEdiIq@5R@UeAX{M(qCY1FHh7L$Jf`@2r!q51g@SZ385HZ0vW}r_KweUu6Of zr9mdW3BU=ME#)>V{F?1rm?IDW-=2;HGGFYc%>I@?gVbDUNdv z1E1IpFf2EVcvEU8te-CVu~li|wed_fe*Y%Fe@we~XbCg#Nz`Y)-JbCz%Yt-gh&^l7 zs#RMOi8YBt6Mg>`AO(9wZ*Mbb%_*MN95oghW6ae*|NJvV_eO|4e~b9%0bl?NbhuX` ztLM4fBOK$_j8$%jR0|FumjLA6=i*qziQrGd$5F@AN0C_>vIdfinkN00aH%m8dTv4on33pe%l`eVR((*fal`0(c{W%0jd9ldT&e(Z)+>#^hMI<|dSAWA7xFRB zJayNio4#Qdu?m2k>kLsV?B)2`XcXW$JD61I+kf!R2^sYPZLux{5P?#-Jy=y0f*HgH z3r;t+a|jOvK4VRF6CBzFP*=SUrrz!zcmKGD$2|^HmHAYn(C+5|ahxIJjv;Hr;Nzp^ zW!ak&$R0%QK=NIJG1LN^V|dVLCb2M^Lx~hRi)fZ1y)GC|)ERiHLl{76BLK{@t$w*# zQYF#<%WvqcV&n>bS?hM6F;&6J70|aKKmKSSHS~=Qe*bMPVm04t1KwDGs>8ZNtCMdk zG4XAs@@YP?tF+eYJi+N2uXpLkU)SgeNdw~M^olMVgOeH;ymV>sFbjMcdS1r+&wr-Z z`?mJ5sdJjixI=95l2qz1Z2~p$tK!~gSOCNb(?1dZ_w*~q=R2c`X=Zk+ikr1ceTz-e zwFNjMwEXH*LyGouk$6f_wQ{p(Pd(|PZ>&CB0sHmr0C$d5%5Bz7s``0$r)AoVaz%~K zQ{=5Rx@VUcmmSCae5m6sv%o4<*crt2?Ks!0@puJ#SwLYt)ccYjHo^*N|Jrq{yh4S7 zja+&~jLZ!kS0@R>LejD(LN|^RjPrv}y?+!v65<-h4P*@{ViiUQg9B`QVb|+M-3f7A|a~r;QVhtAa6>r?TM}y6gz6 zR7%*H%e}_1589a(z(M>PH-@8wTZo&&5MqZb{$^%681Vb&bePS+iL)1~@hC6KfOXvL zNbNC6GO19US+%_oz;BDd3t?XrrANnjI|#Cpo4>5s6Ur$kz~C)?ZkVL>~8L3Y;c zL0lKgJk$bhwb5=NuO2L{gT?{B8}FxHW`nfJofnS^6;Ln8D#cPyD&N)9pQ19TLpyF+67Sx=i#YY?}zJEeDYuspF;pbh5ZZ znr{w!0RbQsh@>K|qnMM={_G-ZUDjFDjPnC`1M*5``j(^B*1)w6urq^V%ctCV1s)}~ zg9wj#q)X*rIs?!M;=%b|nsUE*PREXBTA&{Q=rcWekGh}f?oOYL_ez050o*G=NYE}= zl7;`?O}5aLtf+(jyPd2b`8`{cpyCAlc6r;8|Lvrpk+-r3IE^fYwt9iT3vswvQ;}ik z5-_M%@ZTX#9Sy=9I9O7I#{nK71w7_qd`m8)OUS9+NW!I2D4Ygk%0*-ncU&b?3#Ce# zi2Z#ZaOStn?FLUJ?wAppL-af1~sCg`GPODL}L?~5E-$&$6NSWcs9=Lf+1CC4ApLOl+cTSQtpE%3u zEE!z%+F?hyCNCrzFuEVe?xWN}1d}VdVZkkvzH!GmDk=br3VO=jK`hO~+#8nW3oWlq zKAodqKbG!7!~r{Q;Rf4M!lH^&;6oSNU1~mAl9IvDTLp~ESgS?yk5VeLu(ZM{R;yvD zahZartt?0HA#~Sh(|;gm({&1RJ)LtG$gD}26b}FGZ-1ljAki7q@$tv32-bAm96aZO zjXpjMQa7w#zqV;NeZ!1f{-6Z~%w?n+)?KR&v4~j3Yws`B)>Sii9!+9ob{yKUZV=jT z&@4Wn5KF=RXn?(3QdeGRuGyP`H~q%Vtyyya?rcOZh67?j=JUVz?Fc4*tsdW zRuih`ifJO{9~#AuK$XZOb^GiqpGd8HRP6AVOU$B*=2A&|D>;jxMp85c_XkL-O(OEu~dREGCemHVE)>&^ZmJkBqxeoq8?!&QP)9P5p#1E z@HAZOndb+Z5bi119UXne3X&-F=$IA~r;mxcWbOb!4~=41qjR%MTI}m@LEjmg=r7^% zY~dL(9&9p7%m~_~Z%AbgV!c7uBGG6CBhO__3%H9XIyyMhay;^e!{dH(9zB)0IGL7C zyJ1TcGB7u6x@yad#tCy5&2r+_T<4sHGpx3u1#?_L+bD9)S~PEx@kJL<9?TyqRoez< zRt_C*jAqURrwwQrP?-uamAT>wVa3VxQdTM#Bw?UUKx}63$tQY>J_>@Fz%#V`vM+0U3!N3mxEk0> z29VHPEL&g(;DSqMS@xv@F#`ux%JENgjD4URb6L;GTV?Euk*&LslouYGnP<{L671`v zw*!KF$XZi8Z5~%o%V8Av#gDqn{;HTUSCzFs8Li@XRrTT z`A`Q7UKxI}L#{t}mJnWP;S3R5$P_5lF+eR?P!6?t3`5Cy5%f6;HT1mp_F4M&!CIj~ zQa7!mC~57RRxLG%JcHdQreqpz$O8*uY+eALjeJgSrGrxP7>z%iO!C6K1aEj`WQ0CP zR?;nuA-W(|PG_*)wF_ps6s0of+@)Us;^{WIOXVDzPj8_AHepVq#8w+$$SjLeQIz=$ za2?Tu7>^cQ2>RIrTtJStur?dfq_R`i(?PM16aeQ=IiVQx7LkKMa94q^P9_9&s z2k`zGCG|s{MP0>x(><_V*)z3U5iOZ8y&6E1&~iUH>X^MOBr28%mJBUPM*e)I$RwMy z`}C2|j_|PaG9LD1x{dj{X5n0y(j_lF?!*S)qG=_HatL09adEgXAeKdaoKuq+oPvo^Fmv4=xY|LK>43EZo#VC2?LWz&(iszZsUW_P+oA`>;{4kKRSTBeUpkH6p2ONPTf-BJl=!lUA2O zqBbSTe2}&2qXN5(O(z?o7q(p&1rou5wJEkTIr0fu`Ep1~k?RMqvlS{GHP9sW=YuM+ z@{ldU!wtU`s(0SBLvEEl;$s~vWLUeB^z(QCi9J3{iLEUQ`*>=#xNA|}CZ%9U?Pt6BK(s5oe*7xO)EC(gQBWr|CTmHBX z&BZfEBFy$7xXdcA+-0LtLD>+A$8D&Y&bE#`S;3w&ayq%TyZbw)G5r!e&Sn0XZb>1f za8cV`GnuKkC5Q#6FTeFxEL_?MGict0Gw8oNG!9XfuUeu}i-_E*gs8|Ra8}ni1T{V_ zdBIQb4w8SQZzENWjWfO8+HaWCf~Skk%Ale|0$gEtlB#-bX|WWjW@I*p|0}IbR^}4P z*?ON&>2`tI;;nu=FN2)gdblkT$T2#vAO}>*#xX7`XSca44OM>OsH7bHdVb&{2Zw@X zuv{#}y1ir*JwpNu7*^j5D|njuasK$X-+r5ZhfG_n+TV1+B`F9D6I<5P8zwPok+Hsl z4;9}sSjWA$rDa>oEko?UuGpVzGyuHz@{G1+e5IwvCbLOOYl~HU=KVO8$C%G@S=~y= z>ZVKy!HUFAztW-;NbRstz*1(Cu=LCD`P(mS5vUcs<_%|`8T>ZAR3<2rwg73{SBk2+ zv&z)vv*s~#*Z=LE{b8|Hk$C9ik#jiba62FhaN1T5@zC2o;JcN^xL{eQG@vG`ozLuVjl5^J~YJcte>-3W^m@m?*1jk=E#gzUx z#)2{eq~W(gdK?g@go9sv@df=DnAL9}|Cbn?5~AZ&0cyUj_|N z6~A^fr=WMR`?=SHoSPot+RTAnGBAR13pkl)&I4ZwCdoP2V~!jZI;RlP6kv~|&k1ff z+;6NM7V;OyN@ma-?c|zH`nRM8S)0hZc1V&Hz;3D2gzSt&Wb@0UO1=n)s{h<2Dj(<; z7RwTy_VnG@rje4nY41a+6u*U+;t&7y(@(&!3{gx;oXiKZtxkFmJ0qDi3Qsz(13W@iq`Kx{Z-Y?)tsATy zAxm%jmDfwQbdrgwSEUOdO$ZbUUh5ra(O$#&nRADniVCH3#@wkT*1_4sF0s)la?O}K zbG(V%z4)kNKv#xq&bso$oVIMexEYd>OvQuKd5o%19O%xpnS>Ob7Z9}{!!{R^Q}Q2t zRS_(qR-+etxV!r+FwMe%uP=dNK3U*ty9UinJp<(iMgZvXy?uh+)dy7a2-Q>V*-_&*E88p zn8E8mA%<*hbN48TMS4Qp)!o=c(PZYt7SlThk-AK=!aE(5W3ok##_e4 z=<&FqNe~xI_~3&NV0;o{bVkqmsdg>Cj;YO3X$!z z*{h%(H7%R74czMv;A_Fym2*>NaIBdk6&KUO>n8aQ0yoylp={7m_}Psk8+@#J}>VJ6H_9@TOz%g&U)f%*{c~bH2LJf#r@bf6WU9@mNUC&vZ7~KCYX_El+~}i|EvmyOJba~WK*|i(#6ZIARV!5?arYGG;{Zdg&=wVb-JUP zMg%zrhrM;moIcqsJ)mQlLr2_vl?3FbtP+C0VXZl@v^dfm8Ys zmSo9oufBR|z|cFZ0jd_>;ck1ksb{!O2r}}{>@#bx!?obobavi?;ZOsI1%?D(7-PQ7 zcV_bTfN6^RZEa^PamsCC>v5-cwXU9PgP2`hw)pfm`cljVi_aACJL3R2cXRNq3^kB( zTxR$8p-?;k-p1g@Wa7X~*~$%Gkt_UzJ;*g$8Gj(_E^^Qm)DgTr`2J`{l-U&uortUb z2oD$c!OmQ{sH9$`q;DiehH95Urx(>$Nl$JtRf+?`3dKZ4u`DJvq%S9%=~{9zl7!O* zNcy=SFOe`M82enf0#|Jt?4ccOdj)z0_~rYxsP7au>9mjRYH}5=ihi< z>%a7liB^-XpV-wEgC&a6>0L2OWA}|IRJck_5F_G%vIq>R3h+|}Djn=TkH`6|7$=2V z246K^Cp>kO9ZI0kwnwc%9EQIU`vBxfFk+!B#=PI;o>fBfKuFTNm`K1L31`(@ng zR}D-U28PFpLuHB6Zh7f1Z|PUQc6%#qeF^M-np31)8!2OFOn{=#l!%a>KE<&va`7f7 z3=|Fu1TPKvP9dfe@L?`1E*mAZF@5j*(1I;5!%c(DWtLJT9yDr%k^SZL-q#bWain7oMXtS-Gll*`f+{#ggS;z-$sP%9n|F z2aOfO(_JO5;aTS&)zB)qI^P5NpdvTE(Eugy(6~4tgK&f+6LRByf|rjvfj8u^kOB5+ zazLHml>R=5m*9ef2bI;;Z`Rhr2I^<&iZIz5QD}6rdLjoZNU`Q%yQD#q-a}T?3l!vh zy5^Q>RNxmx`BOjt{Bz(hhpHJ%lIib50B|@7($RH{t}VTrxi)=wF;swA86v0E%-^5K z4OMp>_4O+`TY5+S^%ra@b~z6cv_>Dbz6=egE5*|dSU#nHu7?M0W*}|%ZA^2>vhEhdrzkoXn|QvOG|O@ZBoF1 z2qmmeY4Kz|bFMIqHAWlYW^)VBCWA3S(+fgC69NLsU^h6`fvdt*)!+^t0uaMlL%=eZ zm-|PDE$}Q*w8PSI6?FY~bz`h4BA+Gc?)bAfm%}gZpCB;HI=hOu7Im^O~Y%pg*L&}-gQERkDzy2{T2uco0(__JYxXw&| zF9F%iRHxsZeHXl4)Yf)eB+}{M-pfy&AA$nHe0q%-%Md$bF`-Wo6HbEB2WTY%pq@Dp z=ka(Ffj}z|DH!OV5P<$z5&FaO6i{oY>$Zc$IdbY|c(#u=r zCJA#tC!R0q-+A<9#I0_cGv|_-Gn?tPK9WBagYC&c9&n>xh6o4A$41dVpcsLgJ4@aN0z=`9mJNC}xOm)u869(j zmW@i1!GL2@0CliqiJs~0a2yu|0s(PwX7N*>uS~JV$Z5w5EV6m0G;7^S9$%~x7E8n$ zK3|MeqS8_YtiIuEWKyS6Xf_GdF1cLdQ%SvYmm8?rWuTa%x1b}u9#L3O6FE8A(#ndd{k+uRpy~Q7UmQyX4+0>GujvX79aB5v~wxcx7D*l~y3&2_;ZAW?o~h zj?Sc6s1+Eaar2+=hr@Y>ym?exnDGUV=WSsQTb;3j368>hLe>|+<<8VQGg0EGAto3T zhl2*6vvXWj0BQ#MCd}A4)Vo7JgM=jWy<^4+e?)<3$cxn1%(&7A|F5U#^fs;6U~5*k zD#I>Knf>;t)@QJ{s9IHR<=S$`y|JPulcBmy+M-ES6jeA!{*-Z=Tj`21oTed0gRwux zh@1YEd0$mA!(B7aX|7o2wEvM~#pg-G6qBl~hJU+qaI`9Xey-+S=jL4a8G z)BWTNAOZRwXk@>sc2>EZCr$FLp^3rSKLyWgrmr)*VBPS2vDnC$HU|!EVbl(cZU(wKa3+i~2!N`+ z?dt1N*?1EZH!+m3QAXuZ$jk8CAmuFXzFV3#aG*t*H4+GF%?=-+se{@^gazMN@St3x zoAaO;diWcEgE`yPT)C(Y)-P90zj!LEiQBKZ;-%}a-_gl8)J}@Pbcm?Aqe8R2L!{v8 zjeH59p+$P5gjEAiy3HyCX1p)S37ejwlVAl02mQK(PRv8U5Wx5XfyOi&@|$W@Qmaf; zTMaui>6-6bTU#IRSbJQb1rW6YLt^q`AN@!Rw6I};RLrKvm#8bt$Pk$rr#0lxqjd!! zg~8VJkv%?KZPx*P&H`=kF|{o>WQ=4WkP7EmU<)gXl9jxn)2YY0GX9lnft zg8Xg_WLHJhv9y&B1*VqyUn&&UC3Dto8_zG2w4bwbn(0f&NtaKDg*wAmt#rXs0as@$ zfCc;!>$P#*LY^5s1~NI;UWS9me4A6AN~LZld+5w6@&i>|{R90H+k^lt{5qdp=V6bR zE5~p22#}}fBr~fUzh-Jg3$w5)fA7M!vc%FJt+Y&GoVvb`#G9wa^irEh-H>vhrVvS; z*j-K5C>&NW%HQ7~8EpGL2uFY!c&1&bIiwty!v*C=JGm?zVNw8A8GZ<04 z=>JP7#B3iK`Lhh7{FZ4U7~2*OELNW-FZXxA8fH=J^pJ+Whyl>h0eCw<8ofCZ>F{ss z<)t*z88 z4;TsbKb#E-aMojtZ(t6O$y)ud$b-yfwCQi>jUPXi9Hg^C14lv@<(%XA`eHFrDn@A6~LQKkpl@&a-*j2V6E@}`l2ahHxMiLwG zKHCP{cz31uTWq*40S6PHrW`!+xGKIzShMWZ8r6cmH4=lM{HhgRZ}7zV9==9YyL@e} zdfrXd;v!-B@5rvF(>s`DTqwCe3tvG-wn8?a+o6CVB`9Y$n@8V_mX+ZOVn_Lm+q(*K zN3V~6ju|pu8jG!oD#|N$ruqtLSYG9`8fq)$r?};lbJvxiO zM&7EZ3)zkJRnQ!Kxt%_ou#@d{IX)(w7%hilF3Io*&Hx8=?biMS(D0UadWxJZEjLK8;*lf6+RV< zk>^sW^tD`QcnxBJoQx&?xsr^;>E_t$?h}C5WnT4ZF-BEW1G^?G%jI2ur9lZ}Gs+@j zZ<7L;ut8=r+)rXqVTeI^37E2%V==akZux2CTPEE8T7-7Sm@lrLH7otT!eeYT)E1Gw zYo6N~kXuFd+wLRR$Xt^r+U2%Mll^MtF-K*$Hx80@wkXMSdM_>mHWLN?Au3kD z_7jHymS{075j(WPQnwvw02Q$Gb}_v|20ISV-pPSmV!WPr-+dQCsvh{~ub)X4YAPmM zRYifIsC9{9|?X&;(If`jm~J6nt;tNS(M)ND;Au!MxblI{gq~^Rb*ST zWzvocL#V}EV{UDwBdx8ha_5`PfStB2y<|uRpUPI;bc#b}msl2FI%j*OsV!=*v&3V} z$?!82SG*FC*~KM`w@$vK(%2R+t}98z>D{T*XPPBenQifTz2xjXS)J?8Ql)6O1IKg%m=SDZu_FW$Xq zQG~8ttBI_h3)TX-ixvkOfZs^$klW|3XoiL7_oaVk_*~d@fW0X%1*(ck0}Xb3g)o?SZ@fn8GokbH%>_L#}{$jvvucH3>=rcx_NIemXJVicc! zqhm`VSaDn(s}xiY{A%c^EYkg5=_(0nO0z#@qj^&j9R9)^ZE8?{od5T(u+b_CN{8taiL}?X@K#AuMCy ztF=N;h4h**tixz5BQk;6BUE0nXOAT;P}wX%ktQs)iuNFZa)TRY`r*4kpuEXxte3i^ zb>=ctozyL<`aa$p?awYQ6G82K8QlSM!ZFDFV?4^KF*Y2BHty#g5wlU{XglI$G$li8l7 zcZE%zaksX<$fNUpR94iiuQG)75@E{$A$we$K^Nl4&zTKsG z+*38L!eNfIFdrN(hH|u#)iY;aHar}rS6Jy%g-lYaX;VX)@B_L*CsozgiIlux6qw`6 zh}T!rr1dD=m0&k(VeIwM!=`F;RpkJbNGF1>=j|pU9Y(k7&}yJUq7}gRi092lUpNpo zsw-j0Bo5#iCwtb&dU8#7_ZP^91&^z6LO02w79YT{jMj4@>ciw_I*oqU zuC5(y7nr57ULf7#H}Iqtna?#puTaqLD?DF75M?qCFy?la@d^GU0h`C zo8-`!4fK>0StktK33Y%^Q)CMLvG0oWf#DRQfHFLp8+lF`dKyRjK8}-rW{|UFE8E(ZsXcVwnd`Q8R=Gf#iSE*-g){JW!LF$^7_5IZoF02TS|j6VG}JoYeq(?idvbWL-|^MGfib85AM z-0LG3dh6=8!K2PgT}^B&-CUM_l(`so-BycL0{TQl!wj$2^BME*Go`U$jS?Yc;!;n8 zh0ALXum$J`m{dqN#;i@_-4Ecg!Gq1ET!mpC{C1&)z-1md6nU)RmXRa;s}zy2OB)-{ zZfNkBx~6-DdP)6ok0ELApIHkya|lv@A-BV<64?z#3OJ0N;8-7wb4Jf z{f+vO(TR;!4Nq|>oKpMXyc+M^2^N^|vGotr7o&6{`5PV7!=@=7$?Q{P{(Ll(3pN4g zKb~N_vx<^alUkVg!~Qm+Ww`$Ku>w!@Dw*&SI=GlkU=;?5C)Du3s3Av7fqLc3yh<1Z zII{ZAFmXdyuRyC4cP5Lr9ylQ0xs$Zqci$6F@Nc?_Uh5ogkW~)2i6aSfE=PM+%pf() z-nFqo1hG-|ii@TIGx*jx(I)BdVA>-7fW)e40d5%P{*i^*u)E-KmB2dS$&YX6R!U|9 zBhZHoqYbxcXVjoqZk-R@2Vhyt=1IrYlgr!NUn1X7-HE^~a4(b?PTtin)2ah*0$FFZ zNVYL<=x_^)45Eq{(FIN3N=d84U6-zC zt`7#!4TWHr)B|*L8@W0vQpn5AaIc_$DtfzLZdJr(20@Bn5l(hY%x4`v+Z2|z78FOJOwHxE( zYBV%bgrt!z8fA6)A~0j($|%+QQ^$Sob(Y8RjQvf`Q3Ui}n!gL&4t{UuR z{Kb=I*F(p*Zg}Db^MoOftVHA)nozvn*W>qzF>{{#83f&!0S{1NBBLuVF_v@+#k_K4Et_gS1Cv^UWlPxlv*w8&x z@0r@AmpJ5>DaU!qi*8w|Q{_>WIYURym@=KZC-XsgrVoXSPY#{<$s7~Magph9qW8o< zSee5@DL3SM3|X^@_V(|-r7vQn7$o0O&D<=%%4?_M3Z9)|=io9_&Gnu{SNOe?*671kDk$EyR@|vRy;P5K= z`cNfv@3{~VV*ti5s;)0bvE3)D2m@GKv- zwg-D!d%_bV%pdp{eR4}g2y{XIoo}4pa?&)j80r!W&PdXqCaj;8GC&(d)Fo$8@OWB*uEGHsvbds5VnYs<#fZk_6D!aJzz4@C`2rwCH&Z^};QO+pj<1&1N?HK{CGp$z8dip(~%grWZmoxfu%04`L#@pl~P z-rV}L|K0FYP0Xom)B2U3>ecIiPN&J!G{m}(GLgr%eD} z!{h@~nAHN|;Z)P%+fDR1)Wip~ijwBiT+WyZvn2}7`}{xJz5-0H@_Ikt9e4Mg+0mVq zSsVAA*^%|Qy8;ms5)$G-2uYA65JGS%5-1RYyA>;13Z=9_p)EzquUIM8Lgw;6=g!>O zO^9ut=f7dPnso0cN8a5jHT@_Vz2YCijOPW_#o72>*JJ%L# zrgsTzBpu@!uX9*ZDp@ji?0I9x#OV9_l1Za*@g*~ZQU$21Q!=L%$TKp@=$p=)M!&u& zNt}ZGBA3uCv`%hu7?XOhp@aA&g&lE8jlh34cpfYTmpu=5g|RD*F-{KX28S|-AW&nu zdAL-}VTAW(G#H^D^f=5)m0dRTAxpwTZIr;I&bI4OU`ngOUSqhw2 zc$rCn{#|D{yfPeK(&7&D^@4U=Z^qc`6WSyVxxe=*+LKo30p_<%Fst-!d?`l{19^ei zXA*Ob25wCa&t)#n#SN8{OX(#rlas+R1~-&r&(fcj{ss7g>x|@6QS#4Z>owP0B`P*d zaS1g%TbG?Iw4_dNl$eEer=HO|eZUOzVxqPSz`vX);ZZOhno`LPb>x;~7}$NkIOl_K zCJNTz5VK>)QE;mHx~ibf&~`n}5Hu6BZQMAt)A$EcQHCjk8;ER?qs3AjM*)ZOsH9S> zR^>MXkZEp`ie&;Z5Zk!)-JQk>ek5-D2l$_V&PT4Gp`wZPeE_X)b23@?_1E{`f8m#9V@~+w-Q2?S(Wgl)pGeSvpOav!IZBWIh6-u4*3FvQpb_zHQ{W? zj+@}^hiJ6f*griW(1`;x`wfNK@iSp~yRc=(X!?i8&W+p_1$*GN5RifehQbdim=_)M zL0oG03zeW+0>@K|0v~&GFoIdwDV&Cl1OGr!nCj_xGc-O1m*7{_gH1ChLW7vpHferq zVD>1p%%iYEw)c6AZlNS}K!>BBCACrs6rp{l8u&!&K(SaE_2JMa322S1_7X7Oe;+7U zmC1x^P`oiiu8e74*NCzKo;G3@sHEdyg-YcBSRi?V;B`N_gkHKLXX+Z$z=OF?=~IdG^gZK21bxy~YwA)! zSo#C8$mK1z`I~l+;_1ab7p$FTI`GePP|WDAz^qwGpB;33lBE*vD|ae zH)MOvS&zjgHw@4Vhw)hFkGxCX?xOE6G@+OVM&hlgP5x>+JqMKE??>N3NAOTdF$%v2 zT2fGqYSwq(eFx|76#5Dfq#6tEYUjMnCkg73EWH}8?%btI6CacC(93s_xQdGL%Y)@U z#2rxWFbGj2t2T3xQWqL@+-`g!)&iCdLvIk&gKvc34}7Bv@oNT2E_kxwgdJ-MC^60r z(~_6z@M-DvuRA(mWS~&*^Pudevq8hRque9rgkv+A@qz9Ayv}nYKWOLAgdy3vsZsgw zTAZUDPMyE)z=KBtu*gfvB`_V6ehcFw%1qywIB)y85rI;{39dbRLxjxwTk>SOj{dh) zEi%hfGP9J7U2-+B%w;vRw~lXXw!}2hCfrCFj(7zz+Sw1IL-Rut8ay#5P{bnKcpb-q z*F|y*EFGQ|^a%!dq4Q)vh6^gtz-N%oxY8V^T*$;a?9VfU1}e!PI9K?ap}^qO6V~sL zB6i11k#|W}+<2p4&mQXX%S->cj(=gI}m z)4t$b1@fM^XR}OA_FK|HKfO7`&+^xYqNgqJ6rD2`)6W&X3l_GDowBxtv#9^X=*y$z zhupf%Ia$KVY|4@cYs3_EVb1H>d&{NK*kyb7Zit%N)DpW?8z^0yqaJ;8LpptOD%Eu0 zqt`%I?aqJ+tb521j`p-zlR>S-F4hEN3_i~G&*L3r80O*y~8dIB6&W`%<&94tqb5XeOYAwf^{&G5=}zObQM2Ss}iW1--zU^s?_YqVH+ zqlXr)k9Ac!qeHE$HpC&zEozh6{EoYT^KVqyF_WBvx$BgYS;JQ z54G!BWc|MQUg7e=vUTa@qZFh$nTX7w;zJYxJ>V|crp?3LFq&gp^o z<1jhKPN1V59UWgN>FB9B@*s?Ky^5(@i)|99TRV;jvZ$D;vMlau0C(wU#x1j<95PqR zXxIhidx{Wpr7Z#N9<(LEYL>4VRwLl>Fkc42Ii2<>Ee_T8k17ZTJAk&eyc1{#80@WF zzk&N*7BSU1C@1NqAME@6??02tTWZ(toz0aig;TCR&HSc$`q`tQo0E6uz7|zZ+1$i~ z5jkFu^qB&OE8vQ`ToFvHBapL+Z8D0-;YvkN3lJIwax)CPEjdsxTY}?B;s}Nrun9Cl z+UVC;7D4Z%^BMATiryDH8HF)k!S*L|QH}thb1z4^@!|C@k-;FaF1>MKWZVS{YVZ*F zU)@1I-0qz`&H)ntTx(~+alzL%E*J7fiAdZ8vb5Zqm{g+T@;O4G*wOH=zjRW7y4wF? z^Y&)4`N*bGDtS2nCH zwE+)3zR;ajk)y$n21!SQa$?*?!ym1gjyoByOC|=@3h@YDN0{E z$TsnYcP&>Yd~h znk7vWdaRv_)X8IT*3qcB5$f#>EkcPj&`4w?($1*J81E%NC05)eiI&AEY0@#LduJR-TugDZnNkfRRPuyDYb% z3OX8&H}JW5Y(n8{bcn-Mw4|UW`n%~YnfT&wC(*r6li^!w_?E}8#@%?)kVm=1^yjpScPT)T2L;e~_N4p*)XeA2{9 z%C;DW1+8XA*E6T3Y&|i;IZOmu4x2+b5q&U%gb?%aB$0CU;n)!+`2+cow$8calDUOK zF&fn=u|caNkkLd=!A0-YB(iTLb-9;)K^4`qs!<=d23|WFUdIeD%uU zJ>R9*zDDoo%7sQ*Olp!q?)^ulSnl%)4yrnR0<@xO-T?gvqK+ErxD^W zO>msDVZbD;5$IAEsT?_j0F*;QQ-MTdg|C^4zjAeFOrQW~=;-s*_rw9Km+4bo8GTE? z5fB)8eOpE!pKKPJMG9X$VGNCqsDQL6Z!1q`&iT?WQ_6g=S|mWJER#!>+F@(6`#LgS-Y6D2~D`;Kci4PsV#= zqvCY}y)-H_h(N5%ik8ksFC>$ucFgFgoUP{$vd?AQ!prcpQ5?Q1ov;9YeI_7+heBV? zJTN>oa;Y$@gpq6X%Hk9m&%gf&DH%8K9K+4%(4Z{2IwXm{)&%8eU$@1|cPpJnLX z=~l9}NdJaTlpDUUrWf2@!NzBx!Zzc#Zb{EbaoS-n_M@qX!twAe@FKM!lm9m0M5D-G zk9Zce4BxaY)x&}|rV))0-s8m@4T(3-jaoTk4VcDrVR{sp$1FTH4;~eY3s^p29=qIn z1G`jHtfZ6L-6wpnbT)hsA2#13*XnM&VsaV8`53o?S9XPJusDCcEEgkz&oRA6&Uq2W!IoRh2b(nTkYZv4@9}1q z;ixJN0mvL+{$LmJ_F~0>*%}7rWc(9kX@E0S@u{Qj4AXS}7zU=d-u(qG(nL^G10v5A zIhj_|(Te@35wVz0f8zI>o_~J#?ow0qqAR-qXD{sDvOjA(XEF|I8^8Ka%e)AbaJ=0~ zZE0M&8U(2FFRMY+or%@s#swd5PCz1Y34N~#?IA;;f=Ukz+`OZCG<8`>tPn!OzmyWm zo1{yB6%YX7(zjC?oM95$@VL9ME8bpt~r?FmW^VW3c{c!5mL2~hmb;;lF-nfgfCQY6(je9 z(cxh82mCv~_zAq4$Fw~kV3z>S<#1;OTCWpoMWWg|HSdz2erjZZRh2?kXYGZmG~XOk z(f9aPXSnfYZLg;!3PqcX67!68eCdPNU%x{x@n{1Eo<^W@iw9ytxxAr<67jV*p7^pm z?zmbebsLgqzM8M~$tT7{3R!~{{;sx`FCPDY|5utx7SLDA$P)TemfYR{=9_Oq)fO@v zj`iv2*a-c6>f${+lRUYU6Wg+VOJZ_sy8Sv%ttFrqsQJof9UT{0G>egYJqQwh!4M4o7Us^B8H*g6JHgi&O0LATRkKR zf*HX8E;*qB6J@Op;UV-DI|yo*dX1oJnl%(Mz1#e|h`8;^Mh z@1gjmAAgs#oePt`G{TeDU8K*AZ-sQaZBo&=yQ1RtG;Z;=d5K07sfPf?)&e8L&&%oa z9vuDPP7_-~-|Q8q#U3BM!)FZ2nxz5qNWdI1H5sD^UOY zIDfQJTr0OuU!J6|>FL?f)fJ(Cr~S|j41JEm1;GnXaFa4H#|bUvT-$h!)s%`GoQ7lv z`A>t!uWiwV(sh=A#-)ufJYrWB=2!b+@&RiO2dn1DlrAg64>qMU?h6ee-Xgpw%f{hI~z)7f6&>vK9l(=oBbM%VC8iY=B$L*?kJ@69hz9?kxuXF zK`fF57tvCLl9;06&AA*u!q4$XqJRmbvrPREof##yuhrjw|NRfA)6lo{K`IrdSGrwl zUxUV_YHA9ZJiQQk1A`<^?PCGFU#P>ElTZ}PXC<@TOahvzf}+SBD);LHHk4)a5DpKQ z3SLam!+w<-Jk8!iPG`0Lg#i-0jbw^X#8w6rmxIV(1X~qW)x_a1Pmk!7VfLN9_>?``1W5AD= z^)bmZOm;F`w_bpzS=HHjb3Cq3>V4Wab<-46-vlotZFS@OE#KR1DV0N+=7kOQqNvEb zOd|0Z*G&UOfH5mHOB32$lb}}OOYHWW;qO2H)+w1{(##hx`9%w1R6vk{fZD%EBCJ@kYIRhzm^>!(gNTk@tFQ-PjJiEnr* zD5()OK79Uk@#r0G0zKb%Hk`)#u|OBA5owa$@Xy{4{jHb`Jyx|Izl2QLO4LYbYo9%0 z!*OmBY!qu{m}>x*X6UTVLB{|QaHWzWsBBl{h&s=MQwDCX)LNLvjQ_)q1ad0Q+M9?S zttt$Uv$@=~RElWx`Ik_LA6|R09@?3)&+_B2XaB^DBbwe;o=N1(NE(3Z)Trrv85GDR z3W?aHls6iPh_3_DJ_%1C6?2bVo}r{kdVTV_1g8MmFMWWs=Fz*8$t8(IJN=za-MPLI z=G}7ZmW-3cXVnVL0?WuYyEd$K>!SA=gr{H7C6|j~fD%k^AQV?1%AR{F0E-xRy~62Z zih_E`MM9t`fVSyW0BBG!Y14=;BhDYOYs8)rSB|*09CKkB2F84_u0R4dPIas>6spP? z3*%Rzpo3T$e*2JyD&}f{hmBM=qMWY4I?Ke93%&t$iNOc@{0G&z7OHlE#M z=Xtz}*)fsF6SUW@^E6B`*O{k08gXajNhleay|tZcFKC{PKj+?iX-gSu1DV^yNMXI1 zj`(l=P3!3^n)xyrw{iZ0CK9^j&leTjGB9r`(V-)tTqk$eUaAN$ayo2t7B{FPx)wt$U}{=iUsIDSQ1`p#P3i`XkG^x(toEnLZAZl6 z%9}fgBOm^@bwlDg1&S1>9LHUQErAS_d9f+ZVKC=Puw9VGD906fMk7*zr?J|DBWbEKn(7{yPIDB_VxC#mWanPVR$qQk+sEqCPoF@`nP=<&k=_L#pWLxKn@_vs!K^k5~-6*VD^ql{sOIcNH*< z1dJ|mT@f2X(}C-ZU&D_Xya>f3fH^!kqGO26b0zdbCyxM2=%7}}Ak)dHX=pm71rjRX ztScvSRLZRU&O6Clcina8oty_ApxbZ1{l|MBw8Y~u!FOwp;tP2|e-+T0gmv;sL7_z& zm^+?4W(KY{P_zOICRj`FaqI{Fz8^#tvJdq3cD$V4ehQANfR~jSLeGnlHBAbONN5sD ztOgAzAbs*zZ24;YIG+h8M;42uEf{CcUj%C29fBx~0^uNCUer^Qb_E8P;826f-&qlnh4i2LpV6n8}{{aGugrj`DolkxTbTZt zXcV;w8&u6I3%8AH9vLu(3?7BuI?iuSr)r$$WHb{B5j(U}?GB0@I)P1Wuu%1pU8DPV z#EILURk~G~o0?56qE@jFLS!f3&v#4`nrwqIITP}=kE?vr_pQ9Pt;kv z%_d9l8kxP{th9_IH=0}nX06sA%-6U;5Z_SKKjvZRqc1%0thjxagQws+CY(d~oL0V= z^B0#nYiuy*`}OvbHD=qWGv&^)R<(5kxz*(AGi$W|KqvEW=&k*uAECc|S<*Do%2V*H zef07ar`1p27g$ce{>^vP`;Wi%R(CWyClYD;H=G!R23S4>D!UFA=kwJO;maVZ+*CO+ zdmy4LpBV-yU`+2}vflD(35VJHgZGBbwwTZ!P7qVe!;@5r9tCU=!iM>bi#^KE!D%SF z=wG7X4Ay!n`` z!#CKiafMqE=?+1_*d#UT)9u>!c4M8Ptyx&FvGbewwHJD(`gy*w_4Ju`YgCCp8&=ns zf7Y+{1AuPu`{Z7wiPyw6!p{b|zVTk55CB3h#;bi9L{C9}hCdQ9y#L_@dBV%wLgz?Y z7g{jZEUy*ox~H@>Oz1L*98$}e*{#%anImtM)O6ABE?ai}siy`(Rle10>o@zX1J9{_ zvz$spI&-qV<&-%dt!Kf)t8@+XoCf#25K!)b6)YfOZ*AWpKijtK6tB*^=(H;}4YOQY z*X$%zj@v~l0oi_-pmgR;5OM`eQqDMr0!VI{pvSh?#rAIbT8<1 z7@P!70VI1v$evZ>fj@?a2@eXBLR7!Q8$4cvA5~L%hI9;R%P~Q}-=PY*@AcRJ@!Q`5 z7aJykZwv%(?ht4j?1(bedQ`k0z4c4lAXI3XJMO*rMg{_lIyx>-Cdur&#-)Br#A`i? z{>&wDHyXImp6zx1!y{|-LkES(+}4ngdVD&eUZ8DsNgoxsU4mMH-61Z$hFvydwD(tL zvqB7;N4@dJ8}v_D4&|uRzY5R~B$lVC7wJvV?|EHp%lT)A_zD@l_%@rsBXPP!C1{Dlv8eyy(7%JC^n`O~%>t3$7}QFzzI7Mpr6Iit8o+IFZ&^XV za`3i##91RYkJvWiLJW_~a6KCymv^{)tKkZxXeY#MuqUW}?J@8ogZU)hZ0M4$=yMF^ zoB|e5jXp3EIc5a1^QWI4#hyA5p=s)xTy7u`cu^#25*ef+k%mu)U_!auhN7Mxr?`tG zdGvD&lFAysyV)z$$cPxkvh7}&>fR`*^C^`$y6P1K)ePjCXt6EdmJfp><&jkbIfg)U zuyj_8bM{@ON68;KQfIG8X6&?z>8FCL*PY%9DJnO)Yft8NQ-gW=I)z998X}w~tJGHW zPrrXEbo&3p`}9ucjr#5|*N)Lou3Wn#ca@cE`)tg&ppyP?K6*~bln0r+2Ac@)G4{rd zG{C(JL7M0(2aKw~kW!^S%qWz>Pq6VMi`+obI>K%|1_X@RXQKNy9DXZ8>7@%Z8D5x| z;ibSWe#$iL{kF67@7b*Jp@-Q|`Iv zo^|bQZNwPsrs=>n0r-zlrBz02xf%)d0G^P#pwvuk4J{3=Z6w(OL0WTbkIdYrk?BGM z^nb|d($G8y-@vb(0Hc&skooNA3{*JTPRJvxuq1|vgaJ_^X%0i_(zVGc9n%o$id$oh=FPw$8q3qWc~oWy_hpJiHf3na>*#A$D_=uoVC=8g~yB6c2Rd+OTR<= zs7H04$+c$tv<|JKJ7ZLv3td1aPJkV`vkDWkF*loLSAQKg#w-6yhyGd^K8C{tBXIb& z*HfhuC&O8BV5gKb>%a|8j_trd2xwE{+f$uNJHN=Yk_}@tUR6?Vr)N^u($&;GrBURv zg8B2^Qp7iC3t{h^d zgmuDbP|$$0bfI!(E=>)PnO$$@Nh}=LbU}ua^V8?7+Sc7o9`Enx^!1f?lfCpbayyR9 z5F&$EiFhsjAOp@`p4M8qotzq??a|b0QlRk&`YbmSBmG;>=D5aY6oPhv$Ykq;_OaGo z^t*H|wWjOa0zJDx3`P34d1{raVV+y#o}X5=&U2|j932j9&CmD3Bt3j!1r)ID%t$SE z{ACaGxS+-e1%Dt^;CmJuV^6^lKgS92*yDijD@Ov2!5-qH|Mbb_>7n32lsY>(I{Nk8ZS+O- z^|`;0=?aMbY35PdO2TI&5-qx1Ei~3Zj+yd9sNX{Ii z@hFor8^9$XZc%=f9-%HREg@~Al`eT!UPH#lCPZ^lvSt4EAIJ<1luq>OfKOv-Q){$g zGBJ@@oJjmJ77M_H$)}_>L5*A&0l|}c$Y6$wK-GZpLrT)1Mh@y_!Jc?wZ}94}87`ZL zkjiz1eH+xu!sE+YPu$R<)|35!>70{aQ}pR76BtHT^~VS-ZNq zC%roI@-C@8<%jtk%^|apIH0Yd*MbqK9^;n>df;tiho**;sZ>a73 zeePRj{S2qdIV+*^&2}n{sVu!tpfyUfYN!kge(jw&d5l8>>Vt*;Zac{Q{~^CUPu+SI z{UxoX9#b~Xb81}+^7_{KZmlVshm|sbg+832L#k~MWHu2aI4)y{i-W;BJ4%7^bl~=3 zA%UZWBN+jXgYT;XoaQd2OOX=mz~sesc7BFaJA-^g*XYUPbe;lflkWS$0CabkcHnry zeZ}G|pzb||wf8IAjfK$-e2Cu$I;Tq8BF*A9Nn?An%#z`NJmVU$dk#6+J-!+)fX+4d z{5+Y=oc9~Ap}(P399Qms`X$Zw?Fss4t3JMdiCf{7)y`Nfk_1vgNlX*#h$x8kd3p}H z9(scC2>s!p5ZD6T?ebWlETqA+$_EH;JQJ6qnZpZzq=Q5l_oZ?SB9)8>U?O6Ox7g^I z6M7S#{VBNKw<61goKJqBMPRH!X{jTs)KW=G{rfy5nPD*;rjG-gFX`c){OTC;cj!1f z1KkGEnER(R!u~f+8mRFnYNss@gWR_$yl^soYPZyp@&jK;)DkocIXySraNs14Av2JB zx8vVR?+l09F)OL^&2hky%FyeD28%4MZBUYFmtUTw|6>fDI>QR}71zRbNwuMK!^sY? zDuS9B%dh`+-6S}10^@3GCpF5A;U`G$61$bAA>cE{>^g?TlyZD=)*T8IM@K6#X@YQ>^al>Y}>4srU7@#f(v7&KEV#Q8uk@v{+L+(yF(PqL(z* zO`TR3@Xnk?ogP-1)jXL)%2S)@udbdxodbj6bj$W{^a_nezH8|fvk1r<&jfFt%J9LP zLvlX%f;^d+r%%pN_V>%lTqMVWBHQFyD`{?oHc6uUx9*NK|QJ(U}f1gY((4Ucy--^$< zRAPUH@tpg_Fo^I~b4013;zaXsMsAe{g(_ufbWviBwZQP=hBl*s zn$y`SQ}S+n|NI`gN&!;P3XcqWykM$Ke(RsF`Qc@HAN}PbtW*~t`5Pe@-B^=(CG)w$ zJJq3dOpnTZGaYh6DovjwvM4&_Rw=dbM*4rWoTKY_wPR~t2-rDSR%$B(1i^CFv4(Uya0`%L3oDEp#@ETY%%Gn- zZ?L*y6igeyu?}c!Isbq5Yuejyznli5IZq%FN-b)&&m4$L{U`jVDk`kpDBeZwhbx-YoS@dBlJu zn?+VdhXNR&l|3_LeplHu*el1Zn6e4>4)*NHL-tHL!p(#eJuupYrTVoTq!Lu__g;x1 zg&y-dhz?5;zQ|>8Jk9BpOO^WoRaukPc z4J&n=1kpkeYn6xL(k$xg+KhdZ5VcEeu@)#1HnhX#*}#vUvDmA3E?Dtj`ojL*=dTZe zj4{7$`Nne#WD~RQUrD^PoKh!T0m#=dZlTW-*_26@T}JJ{(VBU+<4bA%OsC8_E2(Ur zg9%;sDOyhAnQ!*hO_(&=4&ym2`QDyd?AV2DpAF(LYe5O*asY=$t`qun<^mxd>F5`X zxOBudBYr*NzQLf5wexHa!$vTe$zoK4kuJW+1P&Yp6ZK-ShozoD>N+DR;swqW_>pqd zH%Op@O-56Qbs+X1_g2V)tolF8#~P$pF>Z)~O*r9#!Y+@A)vAwTDl;cZndmJMxsDU3 zw3~zWxI89}uEQDB^lAbqP2}#o$zp5);-Q?wwO#O5x)=n&AIOlES*c19^a74#ZW78C zh(&gFW^6N0D{SZo!3c%C!8xN5f=j^h6#s2r-VtBaw#Q>=64!~Fu6J3}F|}J2OUr9* z$)M7%3?^$@AP%cjI3JJtmaGU-Ql5X&O!}LQCh0<^kRwQ)rEHpormaILhmBS`XKz)S zl6s9k-DI+lu~}=!{X8Q7afrUVwKq@IoJH70!?O8JGqE!cXt^@dY+=LK?SsWKF7ls@g{2Y5uHvSeas`Z+2u_Nr=7mER^{_) zUD}ow(x|TOFepp~@V(LSj|?dz&jca_ zi{@{IgLKJ=tI_Zxzz2H{H<_*7ux^jtYZ$e~48-D8-Ve6HV}btQtNcsnS&2<5SGjWj z@GKt5laiOASejG1T*`pbZk?94WIAhGZJER);T?UXxGi?S-_jxui+oW4U}Jpir?sAL zwM$bVagoa`bVzG#uM~@mu~a9<)l^JoAig8EOKETgPI#x-EJ8=3pYMCy#Og+uNg>Kze}M~{j3jX<@l9I`XDF!=I=)W;(CjAgM6k~`#kT9=?Cqjs9u#<+VBCwb!J~V<% zc(c*dFwY831Iz@Qo=_nkJUDy}JOlgSEu0+(PN!z{s?5d-SxPQ+CV+k?qB}$O&V(wa zie*C7?@R47sm9WuW>eplB-;vwQv#bV=^=|=AJtnFnOp1l27|DzRYA^oufKVg#K@of z>rM4!UdYznUE5gOmH!~Klm26^Qy}Dmy=PhnB};rNUyIhSZEd3-PsGECsQnEES0oc8 z#To(md1K3>Wec16Dg`%s&bi@Du}KjbOn_H)o|HG+l~$9;Dz?@F#Lxg1cj%x+B=!x~ z+6yqjV8l3t4Jyz9-Y|S2%m88R;F3fJ*R0yy%%b^-HlW!79Rh<<)YvFHn~IlyJC7qh@a;K0J(Ig$Tu9A(wvSpIat!o2>OfYP z{-k!z9gBr3IdA!08(q}Q&d%l8Y!D_q%%<N9#Z4 zn}jA=8fJrj-VB2IVz<=c4t7kBiiHM~Sdl-iAHsbcpz|8XUbzo!tzeL!gVSYkO!b`d zIl`4-nFLtb*XYVTQxE$d7KJ@b2i2G17FAbiP>{h;$$IO_9rT39GMULJee@a@= zAf%A?oO%EKM1XW2Xi}wrncK4wQ9#-aGkiH0%mVd7wC!aIa!h0e5KBeL6ymPRM*vGzJ|f?u^3&fP zt8ZQ)3FZn>1z#eh!oQiid(~9?cLM_-kJc?1EijtJW2RA(j_kE}-ZLKXlX3fQzUYe1 z{-^%*-a^ovIOR{T-X%+?uesx%aqzt{cig;#=<@m*v+P7Rn;poe$Ixj>IU^Be%1vcPhhXN6C&&BV!&ze-f^6b?< zo>;)CU%F;l!<-9S-2)9?_XO`Ee{D9V4yvP>9_&L=2h<7d|N6_{iU%TL4n;T|j?iKS z0bv4U>}bM~ar7BG?9{F{Wus3U(zY}|+ODYgX(PJkrV)Gy)bD^H>|Kx^$snn12Sgh0 zcqJA_PYMT;p;$A&cV)*IIDy%(h=A#fb5>M$5Q_+bH{b}Mpg1Y6Z*7n!r422~S6s2m3C6RC?Mya^Ixj|wG zsahb5RvXnEuiY36>0qo!@(uu)J2P62fGe!AN?>%aqG6!pBO<@z?({Xi5 z#1~sEz!6nQB89AmBi5UWeR-o;p@OYpH;Dt!?SY6QRz949;citowV-r$dieWAX}cz# z*p7){;@QKnV}l0_YY0<-5DY2oxMBYOXr=+?L7;-K#h!XNl6+R=l2LE1q^+>mkhVtf z)`AQCsps6^dCr;CxO(%tX0BL7HLQTJao+YeS9iVFHQGJPZ|jJtLdsA_zTMuLR0mb@ z&aY5vot(dS|K(kf`$GX)Za3U)r%__r)2ZTE$DAyKPf+Yy0Vo>xK0Tm%@#3!}>nYX#?Zs z1dt~RAo0xd=|G8FSS3yc&Vd_@6R#QkjTZov2NMD=537$Ml!80@Z6{f5ks{yr60T6H zl**k(eRmy^i0gAosS3nDVLTcAK7f_B(8La*O_mthW|Gi9^lX32efFe=Rh!l{^Ta}` z;j}f&8|Gfv=I#f}FwVO*;>gF;NkuHjfno)~E?56?Yp;S4{Upi;Ip__Dq{YpzU&`;j zY}c04nqZW8-6`w0Uho-x9jPhOPcha578oxTS`WgFChb}009uc2&ALd`=m#MXSRoIX zIF{lIF#|)SW{f*SEEwh)BtdFpX)}@c_tP)-?EEu4Uj3@G*Z8>jc+1wD28ItDOJkj9 zV*N>h+DsJARV35hZZ8|YJZ0-9D-Qe@pxUziJM@Ue;`Xe)&wxjy1?-5QUfo9TZZ_g3nme$>zQ6`Dfex;<992smEQj2Xn{^AD1OQr-qr~! zTZf*RHGJIwH#3_zY~xoQ`)jC1bR&|dnsjX%_6Q^BbvV~ARDXcT0I%{ zy=I=-r=zBKU3WtJOEee!>&aby*a2Sixp%*_YvJA%wGdT`>&|{?4U_LY1g<(=jqh~e z{}Lk#BStI$yNCq^HohgpJ<~f-Wd}+JANBP78!Bgy_iTREy%`MVx$7$ia|2^Aon78K z=P1`~FqmO9nCV=5ZD$+|X0-F|BE=~^2MN^ao~@z-`lRY6raQ><8{c!BydT)6+)>6DC@+p%>O`K(B~OFbludskxj zj&Wa%bp_jmu^H^$?iOW}PaDv+_#SIhH28EOU9*o!;|7;SD055r8iNI%*$r0rc}{|P zW;5inNl-BuU4G`u&J1R;*wq7q5W_vTVSIRo>h@)y)?n=GfC0I+u||PROh0^(y@H_h zw6&)-&e`7T9@$Xm9`8ll9D&t{bab~n@{G^V6S_#oz=r+C;S!3t;C-QMU;65CTx10< z2AF3w)IMz(165%q?CCz}Aosv{;$a6ph#X@+&j7oOQRkH#Yvo+*D0B?=6FQtwv`KT0 z5$??N+u+ed%5X=a8t#yZ$oEtuskQ*#r@KyIG>Q_lNrzMwpah&#&KpxFby#+gsd@fgZ*yuO zLe9=edyOKMT;UIiWZYtxq1`8Uws)Px94I!>L6FT3A_$$3&N99L4-{fMB*16Ff5b`U zs3>1Y9e03}AlK7#MC2{HX)n}J<$Z*b81)hn5m_W$h1J{|)bnWhL8s~{0S$ROPtMJ| zN_(h3T=?bPa|R;v8d0KPTks^2-9J1Zc=(ev3))SFeUi}Bcz`+#ZUW|52jbkJy{KGV ztq^em^HhKht;~O33>y7R(0HsU`f$gJ;uMSYb5x_Y^rvYMEW5@2Og1F5*2p;WIt9-h z4hX}ALP(g*o5`&rwJb=1^d+xGs|o9%T&r#nN@S26QYU!8h`#iPuO9<>qfqH5qgkYG zZvkP;M5jd?4v@zb5}mAT-FUU7h6ft`P?jY^g|vUokW*I9hmpWFnhB_nGmyd*1)WbN z_&zvA!Qh($DmTRBW$Vp9-t+VYbxP@q51GLd3v52dzXP`{J z5EjJ4EXbi@3xsCFMN@D=a52!LVK_&GM|A5Ab)E_J3lHPgX~ZcN)TyQ2Z4i`|{=`Nw z^dQ~>De0h3@5P6{^e{gCoi3WwP0s8h(bByTfTKr$j>8Ut194skZC?V655@>%1j?A0 zVV(i_J0QjjsVQS<0AYgvz<#qf$km93+}lEh2EjJ68Ar!>^Lg@Su~>Swn%}Qy^03C` za7gBEheHD4>S*^ozcmq5hUNZb#&1i9l|f}FMgG;R6lrC$fLacXxlreaDR^!bB@*zB zN_mS`TwgEJwJN1bA*qW+cU=3cKA0=pea)qt$nqkHf4+~eevAxYNy|Z@uoB`@+(-h# zr0#Nvt7vG{1mGM!(Tck5eChSMQ*IS7s+5w|O!L2FGWrL+YcJ2-l1SI(cl%#Q~(X=yU9GnHl@W0R& zQEbietFHCWxHnI3TDNUu3s)?lnpT~)s&W4IR(syf4}8@+a{uy;?AwMCCdalN2{kG*#Q`6cb0&Tdo2 zPF+%GNG428=2TLeEuBuiswsU=HI#m;sTIK#wK@pLl+@@*O+W)0DsqRrv=?YSSwo{5 zPUhh-rY=|{WNi)eG_v6qQzOE40gKJd=&E3hClXyXBL^`{Z7QAhhq1agzagb-X?UXZ z?w97zdU}6>oSO9Zr<9$FM9&F&y7#+o>T()GtCu$Dn^vr*zvs!6!n{bW5P$|*^Wu{m z+>HyDR6Sc+_1*-~K@*Jd7*oEwOqv9p<3ma!L&$^2>H5eEs{rQLWu1 zlDVZ~lZ`%qSYEDrSh^01%#q}`cKC;-?7o;1?!m<*SkS`=jN{$I+gG+|5N@5oVfvO@ zT-rl~eSJH+WzG&iSF07JlbTv&T7KOl;46TBA(R6sM!>{K9SS~IWDwOV_&^p?Iwdgr zEec&Gbg(RIt|Zv%Hp=2g#vx4o67@nP`Okd_exYeSC8B#brz7vRjQ8`Q zQXd>xM{O=`Bv!C*4-Y>kqh2VypqzbA3RO2_H_MKpEai&tVI?`*bhIC5Lcna@;p{ARQ<-oSd=puaw>Cz5DG(}$8#{6Q;zz}Xbuzj zgI{2@mX3r5d53w*$bK9Hyg#3(pP{VE(m%*gB8{vaFdPoos8%#8L7-JuD-epY97^x$ zvCRr0XC^X9)FpMf#BJ%0pv+>Ca%5frhl1_GKt3N3CUU0hhkpdAcXJ+k*&|z$TknyJ zwNn4ItW>M#LZku%?;y`gOd?Cv6R!yi)JlH)j@RkSp%XyS*a!eoBxTgJH$Qkn$FX`4 zlVG7`K*(`Hv9Z8hZ-(ZH^zb2zCq?|E7$8{`0lhK0t}-SZ+@wLIw&- zoxUdyNJnEqDiN0+Jb`taO+S-*?!P(UIH~A!sYvOfTBlgZBl0rVA(R{m4?nu;1Ec3; z$^mJ(q6&s((*P2nW#P}tC1tyoSY8QU#R&9?RCI9EOgjl%&Ss1L<#IMTV)>fD1xB~= zP1ig~5uwmn zFNPijptbNg^jq%DQybT9W%J@QS2iu!(OR2x*F#=RdDlPkPvC(7gjDo-rQc1kK{F?Vf4VJs!{WnU|Pa z7R+!N-Lp@6k0+H2I)zFZ|B@%3=%k;3>saPS6v5N#pkRRXrUW#<%&8{52Z15s@~~RQ zC^BR=<|B4#;BtaBJT}-u?!%CIe=l6cLYN~L)@Q^L;iY}n>0xL{6GtW}yNmH9 zbdiCaHRKg`3+nu(FONGbeyr#%{baL44xvCyL?EH|E9c&q;;WRr$SvP0C;lo1F(x;- zyF=4@>OvSMvv3)2co}jzx_p+?IV2fDHBvlP$F&3q=nkELas27VmpwhVkelck@G?`r z(jSMJMocJ8f9c+Pzq;$LLg`Ocz@rG~Kn~1c9LAOeCU&(K7ZQTwdK@x@K}t=XD6ds? ziBt;u?&IAtvJ@vRz^fb4SWZ#g3KELgBD!l>`$F${=%F7Tc%V>vp?a{((m`tIR%wN! z&A?sASu9rz0Y7C9FhUW?3xOPv%h3ADwd3PH&-=)q>4sHUX+5)7)8Q4EE#k)bzFuu& zGt2>a*7YJ?N)7c3NMRQ#nEdFY#ty)JPTl76Utg{unWX8E*R<2;y!9l7>2`d{fS zo6l$yfug!&?9`bvnzk*v+$Gc-#ZCLyJBPJcU>;ozBtMuUbuudYI1TtP=8?|_h#Bw% zShT}(94m=4$ZEm*A{>D)4xIDBtf_)MBex8(=N`nKJwTPH6kB`zwYdaPC1N>pQNJP6 z-zYGFsB~{aPX1T={zlYwAs{#RSWOkIFIOlyT#>oV9|LZrJ?kiA^@l+kh)&(VYke!2 z0j_V=*3tP@ovU-?^3wGXFFJpI2-L{1r40GePDYZUYzHypsNkAaJBPIK3O^iW3>h4h zL5L#^N;uq*aBQ8UGX`>A(JYzjs~gj6Xw~x9Flk6b`hT(n({~)RFll`9jM*5|=4&skgv*+hN_ZF(n?@qVh!>%5=y=I=k#}*X$TfVmNwOt3Z)Lv|7~? zHN)3(HC9U0Ecs&mf9tn)&Q&_;yEt?REjCx z!MF!Q#s_~o%zNjlOj4!lcRo+k-(x1Qd2-|GEtT7JIuN?%?_e3Qhs8XyFjtC8b(Wr_ zoKHOkW7+zcoG2PPlmvD3$p6aHXOu2iI;k43CMvm+6L|J0hKK_I7y=_^N98gwQ};Xw zE;@!>%p{oz=h=0!}2S> z8YR?f`NhA|j~sge590vggq6en*g-H54$i@V|2Tua2-`{ki_D;-RnL##D92F@6AMa% z27}c7d!tK$Cm4#q&<{h=F=rJAZvLy?Txfy12!zWm^lR z*W&IgnoTvm{f8VoY#T!LwRRA8sHRFxM2SUtL0ugWq8=YvraG0=T6Z%uwP#n7xhScK2fl4i&3E78BZH8t`v(Lfr5V6_utH7Kycur2XXgC(3vWJ1ZHum5 zyD|Ws{Jhphr!MhtrAJt6p&@|DPZeZ`Z1nCRivPEsKl8+vS;B;{&jOj0?NW-tonBU% zU5eU_!}N}bEkPp*TcQQxi9d2U(g~Dku}=_=IuilII5RLK@WQ{3UH#Z&`QPD3svjY{ zn9NB*xfXtUu`7{h$uUIRfM)Dp?Q54dau|`K)`7L$Z>N)L}VkVm{zvo*cb^5@v-caaQL8(cDO4{ z*%H^B69HRu@E6!jg#`=`-T)!hxB`Nkx!c>ET?|KT-eK746xAEJYO%0JdeW|?{jodN z!bdA_Z2Js|JxaN(#kqLf6{Gk%aqmTE&8xZMYx++_CzrQ4mtJ(!B$#D7`l_ub)zAxD zEpez0DE%>gn=Ktt`hg8!2@0F9iDbykHNXVM^cFi9(F7Zz z{kIv8<+#dVv@-@1T&5rT@QE$&1k49!Xe<+9kWMwPxhC#cw94CK&VBnxr*>Q?Pp1=g z_TM3s)~iOI-p4mcbBlWA^bB3Ua~Zk*_TnMHR(2vRN#(^ z)#TZFWmB`J87TNqq}~y2`)eN$;J?D_c8++*TbH&-YejYEKeO&LG`vSO6qmI?OPa>7 zX>NL=dNBW;B6I^l&eLjaFug+Nl0kG^4YL~Il;OYx10(8Iu3|!rT0S?3xifV%;PT;` z4{f%GPa$|ZZv5$S(6E~h&wg8DPfr7Zv$Qnxz%2fxdkQ3C7<)z^G7d(qooI&HaV?9Q zTdjpm>CU6)#2X{dTwIkXDE1B)_E)6RH z%Bw_XAi21@biRX%mR|h4R})_`3%ir1FKSoJvTj){gi_b?3!U_}M_(N5$*aI~4-c5* zrj*iUr#E!iLgKv0Paew?b%t}Tn?w+-d#22oTHkfbh0vvB5PNT2pE!<18jM$` znVP2A4TeODYxYcW);edvs+EZiolG>P10^=pPw8V+vjMl2S9sF`I9&`+Z#n`=#eP)sJ_5Qn>A$;+=QzyRRGnymEw| zKgHqB1wCpa8ctj-{PJgawWyNMRA0etRmV^m*+9#6AloO4gYmW#+T(r|`a-Q^s}se;OEAMQ`R;tP{=sK=-?4-Dfi+M+w@Dw@H% zdBL^30wTuMh=)iQ_d!}j*c$7`9`Dep6ETMn*+Ai)&I)LJm4Nd=?|=*w{t`YR={<=t zH8j2qbllb*7ZQw%N40Gt!3{%zcTMm>aC3Uv1Du25fzHE=_!jZJ0~}xmK9AaE(hmRE ze!P|iGly3_e_adyTkDZWR)`I})!#eTbrs1;7r<=sdA*g0vMCm;(3(MHpbm67`}BDS zb?qq0_d-0t>Xh_d9)t2`V4oqKrp&X>pA1%1%~cO<80t#SN=U>WiM+J37l(5H$Q*~$ z&G>Bsp=uy;s-r;_0|_AXsC-n`So6&4tw;NaGKYCCrQ+*4JcOIt-YQ0aEfnv2Y$he) zW)JRNTmJc({qks?kLU@|l{oFH0jk#IFW{*eT*E zw0fLAt0NwPBi0=8i%&mYz|U7Q_3zgXB%ukC${dmPm^TKS04Ix_Fddjt2IF8{a@CK( z*XyRB@#0;a2=6YS_LUE$AT@cRx3_h?E~3lHY~W?Hrhu>@@ZUKgZ<}0XfqGoJ4`yLC z(x6f&3F66p=%8`MNi%OtZ}6N&PT_K7x&ZSp1fP5;6f{RTL5JY{BZq8E-> z6`E$~81+L&03rD0M<--dX)MN@l*;;?Uk!l1sZlt0_^zh znwJ?Bwyu|q>iu~Xng)Wuy&!Q7(rtfB-tum-{32+kK8rpqziF`x1uR*!6e(UKXKO^0 z2VC8{nWQo5Yeu=ckbQK_0@cD~8VsHT3?6CmAPdF}8g7HJ6=CRsnhk6XC>B*PAUHks zZh~eoXP{mO@FO`;}v7)?Ekpl163Jw&naSZA*{(9VPHfL#}y2O9tAMWuZ(y zV1@42pdy-MIa@?tMW?d)xeRWmv^Zg~01OG;9}wJ1sK>wjFLhh)Psv%CLub9H*ZO1- zF^AM0?N9olt5Fq(*|-&_O(=|YpOFC)5XqFsoF9`IheXoEQ_$I11=OdzqQD)4Q()Zj z=G|Lbt6fnO-3x=3T#U52Fu=7Efa`9GO`u)((9pNY^awKcL5c3h8q(ohv-yk~3%lOR z5+`YEA4yxm=C`y%0}BzXkTkcdqRRHx=kr(NFShQW^(wD9Coj%x`%a!z3(JyhY*T2FPg zOhnGs#>yNSS_vQmi#OJr2l`JmutnSg1B@~KSkRXZf9Oc@E3FF^T#Sxf=<%c^zeZcp zmzYhSJ+vbw5hHy>Su`lK1nT1dTS5S_DNu_WELupT44R+jf&3BAD&Q+vY(B+7d;`Re zLM2QJ;~EWIsa+rxTp8EJLu|R6>kF!dg~AQR;#Jw#69>GGcm-0k1H_Q4#XUNB@^M+=po5_?~XgZ1~!sFVlT2{mCIiB$9;f5tb-0+ zGA_2^NSzo>^1$-b>d-V7i-sLZ2+zcYDnbp056Pbq6gWt->+(~mMiK`09GB1;8jjxI zAd26FEvN5`Dz5_}_h_97PENW%97YTXp zoLC~`isd{(Aad~7H9bhgDP4KlPW;gVz}1VAL!FuzihPYAFHlweeuEMH{M2(P zdmK>DZ@;MX&mPc$4vZ={p}Bb|sSr5DnqC<0_=bizbDCT%K!_!=OMqg`5e`kJ_#u%} zBA`SzF(r^F@U+y@DLJj!AykEXrWAZj+yeJ}2&u>xzQF1lVXui!!CDY|J=pl>RnseC zyy)bKz86(}Jq`%?lTCARtE$StTZ~41jNm7|$GS@HpQRe!Eh^I$SUTMh(obE2ms1y& zccV%b);#EkFOD}gNE`j246^0`B2vV)F z0)9jT5PlLimHJhuA?lZPX(!>?3BA8nm=-qs+6nH0r2R6LIvZfgc+MDb{_rn@hx=67 z{b9;bbd7fgHG$6ZH^!b`P(9j-J12ysmpw5*T>^Jk3NyQzxZl- z&;n%yjuaAT#24fZ<62VQVJrHct8KQ;0{F@k=VTG{D;~bs4XTT6S3kcQ?ui%f$@8q< z5vGplD^7>C##m-f!1s=BuCjXZ1e_|FW4d*W2zu~*Ry-&k%oLfui zqLNT1?{a~_p4QE&r6o_qV$hdE*dEX$UI84^jsgTk(5rf+1~@EG}Gn(oLX za{4gcVM>Dt4}c2wb%F>gQfF^fD<#A#kr)!{>^$1q#6r~r-FSNU_kJlHZ$D(p_NYK{ zOVK>O1**yX)_ydUGDm%q91LQ?PZ7PxEktDwd2I7HrMY@xX7hZ@V9Scl36X&x-MqAF zR~qaL`w3odf*61$bCG6y*<c|XvKxyaJe-@IN7uB^ooWM>L+g}< zzTo^}qr@w>Oq^GXNf~Yp0jw=h-LBh^8W>9!h!kmQaYrW2Ayhze@BhbVV+A5mj#^c| zu9Fg%{}rMufbzk?V+Ccq#vGKSWl@JA@Y90IueC&_DS6s$j{T;f4(M$Oc}AY|T4Uu` z&LKKAmGB*f`+Kv*m87esbQmdB5*0vV|Fj#;aEVXO- z>*FByqK`UksHGrvIOGu+S6hA|*i!&dL8-7QeK1Kvpl=l``64k#l{%cWPM+%rkINr8 zUlGyf`kZ`|$kCgAyzjhcp~JFm_oe4U7d-%`+xKm6UwRaZIWDhlz%h%KB#1~use+$~ z4~8IDW0mk{y2;DeF7X0UT;N%{YL3}5d*xF2Ovh_pvUbH3_%Gin@y(lPF}Lg+(0Qi} zSvA&)Q*UsUuDX6oX4`C?mILNWK_?wZA{|^28$NR35>;yBd=F2d;`pyRscD}%WDr~V zn(py4@tc3>!6#!hn~TMQN@W%1gOtxnr+hbb$lBUf0d+^mGd|$6fo>E7sx_35$Xz4_lC!dmEJTP58dXO?CAY)0CrwUl z(&L|YYi#TuN~UGO$j~{YA1z175gcl9`4%SW1qISG(%C?ykyOO$B8}fy`WCxk%w0D} z*1E{0&}H&Sc?Xi{Ed{QGB0K0b+IQ+T@cn= z`i6%b;koNHLbu#<(T3k;M>(za0cJHgrt#AngViL=ktp2NBckc(R>fmm$gaRmF zK-308Y~G3O9?#5{OC$DTT%M4{@@Qk1f6Wp{(6(spl@tee_n~+C31kxj^v_L0HZ~CS zk$6cv0(o96l|EL;x}4MJ`*S1YJCm#nO zrrIG>AB?vIP%erADB+XPIt9@giIk1BA3^L`(w?*T z>9W9h83l8GD_ed$hxTMqp?nv0&{aHgd{TPLEG+S=IqP-GK{OqLFRTHB~ ztOF?~0eN9e4f^P1z?)W*>4jlxxcsn#QkVY{qs}W|g4EEgfB)Fs6ZPQ{xVm2yb8|Dx zvS>h3hpriw2j(MdX<>V4X^|=>4nCIh*4#t*)i~`CZo$?7OScJ zUK=fPCK(to#H}-yhd2r)Ke%N2QS0oL0oXupV8tAJ^|+id(W;X%e!qWz=07m5{u|I0 zlhj0(O)&~!KB2a6R%gfbJ}p2w0^`)h!P=@+ThFSp8@){xJySY#tAHhtKEdw{U`s=H z5minUx);5Lox4bsaapf%awk#1^$&j&PQ#;T=dM(mUCu*8crE%POssvWa3GJi$j2QG zkn!QZ3#Z^~9b;mt;PJQKn#F$tu$PJL24M}F0ftIKY&Qt_2VnvnYP!1VW*7=pi|z>1 z7ur`?RfR<&`op3X7U}d7AgF5GNA3=b2$j=`xvrX*H=n|R94lT`AN@q#8}^PbLG)J~ z*If{4I7X|PD;9GQ;5uAK3&-xYaojD^iw4X^OH9@5e!Ba?A1+1A*2xxRm1Z*`$ev{Zx${mallSGR+t z;W7oxq49Di!12xuP9-WYt4fRB}` zAyH!oD#<30!6!0#&CUrPD3+d9HAHQZZ$#0tMESEAT8ew9U$BjZ72~4{knNE8duB%F zsD}5ok)w`e_Blig9_qRy?hm+#I-^hVd}65!FqgwQVY9 z>D{sIBG8Wz@0qdSo3KxB*>=_ren+Y93Xa+F<1Z<*+|b-Sg#p=)lB@7fqND z$4|iT$e0mQBh|o+xggyGwHQW&t*)C7y7mKZ0va%@mZ1*WjoBDf7J#}h?iwm-Qkuf> zU%JgbLrzd==SNq5)3#tsma7%zwk@#qG_Ty25b5}_Ez9txGhgWCa9n5+@JyyIBfJ-8 z0q#XV#UYl|h!HB<7y z1~52Br5}lQp^-W&au)cg&XXwCkMMsAg$qF0ZY>Ex*@SFzAzF>EMPBR9iDDCP>R!it zB~>yBXh*0^Hn-b!`C6C<&0oF0v826b@~SG>17G;?<~Wua8Q)?)h!wWNHrow~8S?7`k%LfQEf z6j|mt(R93wMET4@0rXg%{R0d`D6WuJTDnO>55<)egjqu)Z%@`*X}_Ibn}J;X6%@d) z{4IXvKmVD+*VisT6OD@C`dh#N_)npnkjr2F4J()%ePtmAV+e3`qD{x-5ncuGA1i$V z^^zS8-d5F&P&V&{NXrdv!WoDnb~B-V?U4vW4b zFbEqfjW#2zcr=%8qnl*q{i-&IL8Tg8Q z8={+fmIE*20y1HItX8gS0~nkFqAC|O@K#o`S|_E8ePpe_vKd4f2z~-k+ttWu@hDGARJ;tRO@dxa*WxJPUf983=_y^4u!m z0i}&#NIdFgLC2E0F1~x-5`3lC++*xC4}f)G5VyFZuvxQD0q*f}uBvc)Y#Z}!Sn z>Jkhk=6SNfG{Y}^^2v9;V+9R?3TL@N5YC^Q8=VwGoWFs<%a@V!&ffv?la!Ua?nEB3 z%j+$m;>418VNLl$)bwU-V+8-BW?ZUFi!iNPR00D-W;c>^-w>Ko^>Jhs;YVWRmAo^n zT1TSBKo6tlP1FRn8SrZF699f7E+;?@dK0@_D1Z6q|L*UO0!rgPYs=8Z9qzFTgO2L#i%MJ+>rT5{sKw z)^(g4cR(Zrs+TY-0yuEpd6nW^)j)9I`|3b3U7ZGCeuRwk|8P#H3z2+8dM*y4t@v{C zTs=5AJPe)gDXGcuaN*wP7qb>T_01yM5rI;&GOkGVfab&v_}(70yHBE25@W!%`32I( zVyW7krCKcYL>xaE>IqW^c8gWb6HH2VIIk>)5N1skzAIBHMSnv}D zD@@WxL^=^D(*NJbpLBmlCEg_UBNCO7%^;!vS>w;sR~F4eJMpFP#SYh8fIAM{&#l%}^IWORauj;9W{n{y0V* zD(^tXfq}&(e&@^~mQ>2`9`-&{5~{c^H%}x2{Lm%k0Dfq3nmKOhJvcXU)0fiI(#U{e zI`o<>%EJiU@5Lr3fv~0K$l9}^)lz6lHvUU0to;X%HzmRrVaN1+mgZ zv7ri@w!>82G;N{R!lk$Xwu)T&%C#r%o=nWC${vs4HiHEofv}7*wdK?c5w(xd4@rUs z&w5gI&!e015_G6Uab*gL*r1g8O)z`N&_+~01wb&s*XKRkavYVKpI`UlDeO&{{zO!i zAQ^V_d)(w+M|^jqa_)^0U@dWd zmravxe3VF!vlHJ0`%RLUA6D>eri)+-P1Rc8w7Ka(Wn&;MfqT$Uq(O+9wOR*cDKL0z zWUYe+%T%=r2a(OFNjg;Ni0FG&gmqn`B_1l?C)RR|HWN=OLdnVMTSfv-VnTfvq#~PW#ukxI0qx7QkY8ywXx@mH2xrcGL7HPPzUhI zXYhUKQ?;{Or!@9mb8c3p$_7tXtO^-H6a`67CO9VId$c`aR_pBb6|%ZMs!9wb6o8Sc zrRYT{Os^(AA-&X!^7TEZTz)b{7%o2y5w10~v`yDXrGX@Lnn6cy2*&H7f0s%RkYVWX z$U#c^MQX#08R2J9I)jgs-=BdWXf?T0XHXf)c+5^+(M-5!Pj- zm+#1e6ia&R!Y9*Wt6ipTaR?IvN4s9(vfiALIGhSyr$>|!dHhC|*MYwrXPUbu&DW^7 znJx3pD*WYp-^lzpBa{It2*x$(-8?b=W$*SUy%*1F-+gF*Crbp=jJ6-x(Z2Kw*dwRc z+Gn2@G$n&D8p@x@fjV?tPI#E;e5<5IX;-waGRrzucC`y#)r+*}| z_xCy6lLpOt+oV~oo=L-Isl5-rGI7XcsC)$#gELET)inac;Jh&YdkmkCzK0KK4Llx8 zY!w0fyG&Cs%T?-3je^M{)EP&gKI5QnYA0i(0;-PoXMNJ z%j06PkYq7VpeeCAg1~~|HOl_I?cirQ-VHJu6&$mleM>g!un+zPZp(Q?lDQ{BT)CX% zJM`-~n0RJl+Q?LOh!#9tc&haI*m8sa-53wn@2knwCrlcH|iD=M&Tq}W8+eoLSehTcPUj;Vr+5yUJa(4F0D>BFxmg!||kweH9 z$rM=9)3XC=3B_UrFQN|Pf72^V0N9aTwxnxo4TP2#0^$6c#&MFyI=6Vv<}jh6li>-` z=;)1Gj5~(rqKeIJ7@wtl0sr!urm%7PGQ5qt7*r+0+18DF(@TeB%12A2{~YHe-n zx38O~R!b4g_5?|LE@(Z>UOZoFaP}ruB8xy4%uF_f7me48?Lu|W4D@e}XUL>h1%o`j zb=YFIOsLtlk$ai}j>SaiFk0EP6{cHUUd^Q&2X=_ps^W>Kbgb4Xebuy&Zq{Q+IK=0D z<)eQ?98@2P&4)phdw^ki#@L?{_4k9;?9B2v>{PD&oUtTvyFm?#Z?_83cVpqBH}-Rl z!lCOg!9QvBuUoai*vZdAYU9&aRDiN9mB4_6mvn$&r6PbjP*60j#U?{2(TZPiDI^(@sfg_QK z1=umMrVKsR2Ff7?5~{)jQNIiLlU%yn1N;O@`s!d>wap8rd4XU?1fH=n;wgD1b8{*+ zt-qg|Cb38gLN&}ZhFYWx{S!~@MsE~_a+%)=h_2qv<*{)`4?5Ua{^b0z2e@c0{u@%_ zzfpgCeKoITidAHr9!XD4;ZFcb##)*~>;z1g&7-b3c<`Bb&NbF0;uSxtHKvAu)j&!h zWWK`!5TI$8zDMreV-wNFA#2A$$|TO$ZQ5m)V>85B2CQYH4;)_Fj~L5n-VC1L0B|rGtvvD;VZzb5$-Y5ta11gy?$(g-0Hjx$wIQ zjhmO@Iwzv{vB5y8%6|=_hw<=tz+qIdbOs@&Kml=7Wgl%SMU;Kgk(c7L<6ne!?%5sy z0c$FE?RB}J#*)ygba|xJC$$D$x{&x$^6}V>cty=agez5~s``H~&}|s++c1*OcnGf- z!8%p}3$j)q0}1sb4IF47myB$|1LiPcfVtqjH|_&g`lTifJIM9mchO3G0-ovU?^w}7 z*|4`~S>d~j<~-Pgj`vBS<2nGfAi{{};(r&5RH1;LVG`FT&ZLlZWvyWmj}sX(ajn#` z08N=R>EcO~qWFni7XRUHmWUhYNw}Zk*9;~IQzcdc_>ywZaeRKAXj7g4%48j6szzNZ z7Jg%Lf_Sh}BLfjIv5;VZMXiA_W5w7gXjExIS^WIHXa%sSnP(DF!h}A{wyA^0l55l3 zz20>J=+zU1mj7w&mzp*BpL??Z?d{#u*9VpQ1fJ}6E1<{1X(=Rio*o^P>e%YUtLJu? zNwP-n@^IxaGNrMpl~8a^(;k2>Pc$B~5W@)#KVVcf0G9jJ8o)H+6mq?^4Xq9fBO5_b z1M*#UO3Y~q9N{U#55wlbVFs2Bu@SWIi+s?x?MV+zyxDu{KDvjkef$3H9U!g(xl^;P z&%QHdj&+K2qK@bbXa>G#-}ToEdwaJQSX{oCFVrigozSnw(|H8~F`F;su`fk7{KpP7 z2|wWY>FNm`A=F0P($Nh>ffCouS%c^0w1iHy9&!Al4?o*@8K zRRgNEPNEJr)c8gc$YCT!5w?rwK#&b4Ti3AlKrlGv1PmWK2v0YeG7_QI^lb)vko zK$R2|+%{;li zT6HT&qj07uHU)z`DtIiNx%cRy>E-%S>g|`uABaB^M_(>nn0WPi@;@&J*E9>fD*{@< zym=}yA8aipbxPQfm`bKjJ3~Ev5>0Jv*ng3wCAbgq>m&|?_^KWVkTpL&2%{&elAxjC zg8FZWjQ92EQ9Q6U8a*0~;yZf;dY_vM6w}TQNgVweugRltcMD{)RvQv=Rc5Xbr$Gf? z1u8_ds)w`TqB{1+9|bsZD!z|ebKDPdYkodl;mpy?Q=1a_M=-4MRjok)9?T9NOh^TO z7@tw&7FVxq076tEiA&EPn9?BB&8!x&sH8LpKLii4#DstFl^`Gp!&k@P|4%|$(Np~N z)f?h>qMLj0$HlepymR;6DA6NUDbt;l2&^MthQAJKVy6U6XT8YfG(JSl2_FUZr$>qE z)2d&E*L)kFFcLvmsgnp4Nk9Iwf+iA7=~OT}1v7Id0;aebTogf-D$(Ldn?;s{L_oS5ajiFTt?uQ3eZG2l#>#hPJ#TT|-m6Y`cxE5ho2H$fE z;4})VI|`4d#i5C)n>7ivs=Iqzp%B4;=uZ7S`3D&BxJAc1?}|Ps<&g4>!~xz0+>N07 zvdyd2laB>?N)@N`!U_ERA{)=ZHBSN+yR(77qgWA$Y#HRY-hy4#7bCr$w9FP9=g64a z4`J`aFpq+8BQ+;9u~c?b-XwR5msdjKN@?JJF@-bANSsiz@FmIe(*eg=e_q3 z=gTkg7k~eIdv7nLmr7c-i!PZ0S?=JTnW`IY7tV*4%O!_gkno;UzxrqRUzuYW{AulU6CYB$xQ_Aw+l1v$XaF9JsY8Dp+>V0Stz7?LCki<&& zk3FnKwILmWXvTI)F3&39^#(a zkXaEsab?r3U@I!-k$4_rA4ohCfroe>a^pdApZQY}-lvVmh|%cu!qT-v&&Vpo7?+j= zv=H6Gze5I93{#;Jp3;3B$?+#eXraF~|1UR^-BIve1h@c(}HkzpPi+LP2e8S`L%nr0tQQFM$A9GY+}{fulyfm~-*H!)A$P!edHTk3pgGb@6nDyxycQ;%|(t?0b01l*3b}BGu%{ zN$jrS3{}*U5o9F|ON=ZABZ|?`f>f~>684hYLSD&3ZV<7^BTK%GX9nX6ax=GwZ5&4l z%Aa#7OZif1ukX)2Jr@iJjR4L9%l2XP zdLLdt4dSP@==ZoblIP5<#ujZXuJ6<*lI0)79*d!iVsGH@eYT&vR|q9Svu*s;*6S9( zJv2*lM_i!BYk1V=$z12^djEd zi@wzhjQm^|kUAYv0iX9qPtUqi=}l-C*+N(uN@{8Orp2VjRwN@)Gt@2R#T{c`X7rOF zz7E}p?=u<&JW67N5;RDYegi*At;4S(AAZ#o#36jF3#|^|%c75++XBlg0o2G|Ssg70 z6@g@nIFD22l#>M{3r7}|TxF6mRqJsKEyL@j^96=ORLdObsg$+eTKEUhSXaKA+E~8w zda|f(=xccXT>}Fz_x7SYp1@(d7!1~Vy`J4khW+hC%e^Ym~fyKIATW!)Aw%S zo5UOL_#C=!y*sb@`ecq;Fz&|7*4zINiSZBd=jRZjO-sC#099ugx%Tk(r=Na;+G~+` znw1V^OLL1^3e_09DL+HrHP_A+iCMNuXud4FzFlPDc@`^K`r@*okW}IjO4|z8F+j$MTP02B&4t)O*`)gxO_FFe|rI;JVMk=NiQW`AfQ+LOkVy}b`7~NRT2s* zVCzV-$kl-9hA5(@Wy&Or)wT>8wWP5~U5!45s?oybq~!2yK9BD^C50oEim#0SIgOY@ ziAVsrJ!tU>B0S&spwKNXQJfrN2_-^-UMYdpkaWf+;FL6S-;}{cRo=(`|*W%C6A<&P3=p9)icR@**5lT5K)y}5}?)KvMKl`BVK4Ys)Xch`hmgKfNH^AO%KAh(g;1Y zu2x=k6_-Qe4wB~3$USUDGztc=Uh5!@N_7Ak@_ZG$Vh3eudY)C+C_nwb|#HGF*P)%&G3|K>KuESQbd+YI1JKrnK~Q8#F|pa9)cl5Kwn& zf}!mO`y{*BJ_W7M;al({pUYzFygZnrvIrf(T2LadOxclAN7=T}YOhew162egKA+;T z;~W8NNEtOJEpaV+zf0q`h(uQSM z#^@RU01~@8x=VVgtD;dW&jsBjaawg$SCwnW0(93=c}R#`H}dt5>QwfMO#UX)dP+}L zCatH7tCKHAc1ZuVzkg@aUWh9)@>sq(0rT%vDOI+gT95y-7Js_pn*1S{?;R-@*ODaCqd3909nc;#lKn$4Ak!dseZjX*bs=aUznZy@z z>5*!yBq^>CcA0;p%GaesX<~3$bwv`y)Q3o-clImGFbAuyn!pX9K7vjlNCd=*G~14E7jG<6|=Wj;R#**N%*Q!{dZ7e}q+cXUV&PN5WhU8kE2 z8gFkCBY#S)@O-;Rfsjl64 z*X@Z*FN%RODJ!(|yf7N45m7()Z``^m08dW?Ejk24BQd^N1WOqRrw)+p6M-5ck~5M(CxjciY?XQfP&YQqT^<8GNKjZQ1z zc##meE~QZIGpqNfHlCZVgsf@}$*QK1=7|__q3;X~Q2qTy=aS7y!s&~xor8K3&2ySN z49Vy#mO0yUVm+^W=R(^U^Hlu)(xtIiQFrq3#6_Q+Y=RjgUQJ+X$pBy`Po3y9xvfdH z4Vv=#o#PU6fm5n3&5JdWXqM>hGr4^$BxTjCehQEQc!d8AL74%5nrsPi)9>|edejYc*FA@r zl5N|L{X06AToJJ3pk&)?pC4?Uu8U}O}!ks}{r!&sm~T7?(WHN@w> z2XE-H$MB-0#tGC7$Gb&^M-dZgG@CNYWQHwO@FGDOFgzqmMWP)DHMW32R{kTzzyC5u zqlg=eRq$FoQeTv5@{gtLd1eygjqTuoy3D0VI|;QFlp|U{!*_6UDp9Md2aK9wFz`nRvSVkRrFyOFCQ}i+%&& zb&cLkYVV}WP=eCRmWgJ8k*6;VD)JjV9P(WYDLMY&?YHmqMf??6f;s`TiYXC})P%+h z@H$v&I=rQ`3I^Ga08CB%EqPVIojTQ=ok4c|8PaBtoC5<_!j!@Rm=O-+FYmzf&|LiW zHd^WPK0LL*ziPM|R2P3Jf(rN-KPVLZw_STzp!m%PLj#b!TnS(i!$7D?hcgpC>-K3b zkrRSr4X5f%F*f6{tH@)lVtA^62C?|$s1xHvOiY#G3e})W_I>K&oIz9xsgt@EUWV^E zk=8glS&sb{G8%L#VY}+c80eN_5k1%2`(c0oyCq}V7*)8Pfk^za>u(-}hPl4$kL|0j z+nIs48p$c6g|>8qsW+gs4w%%Y!SZ`KG?@HF@+WV;`6hY}XvABL?ek#xU^=@mB-JQ{ zEU{e#Tw@hrMBbB+03uh{3$G7voCU4yi=dT#8$@MrKpLSqoqh3ZE`jHWdEn&HQ#)LM z+%Ysr+A5%z&=Qzf!#vZ_zpxm&f~`P%D!MkkUTE1ICXEKswI9{Mhf({G2^9iFg=Eo@ zA@k*OG(m)SpkJx5`;8)7%q{Rl_)iDWwo5O?mmNSChC)jtkspUZ0^nw+oiL)T=0ZXX zj3}-`#?~a>rE^{2LeM(O6t5-#8c*5^jG@1Nl(6~bBS(B6zSO?J>0Th^a6%kTtpr^K z(j!11t&7?aO?)CFFlI~bsrphl!sIrSqfKr%jU>Y!GK4;`0<^Da)LbjohE+;c?8F+} zkH4V)6rYvCS7-i|OfF9({3p>XGIJQv(F6o8)zrV*eaUo}#UOwg4=cG0i1L?!@4Jz~ zb4a5#jnBX#O7ONNk63&WUjSn^TeMIKQ``A`A)CYFvaTy|46y*uAZqieQEySz z?IYr59jRNoP5bt;6>8qj?Q4~Vg?X`=UtH9!!BfYc2%sOwkhc4h} zMa>nm2@n^Sn32f5X{cr60^c>^-st>4MnW_^c*Jd09IV;AZgiG6caxq}@$sr&Yg+SdT z&|wHJUx_@S@IVJLkQr7lS;OAow3zNkCG5&@WqoThF{zl<>c7hW_7aUfR=PyAwEUW z-09)D`L0&C=#$r8n{MYQo$+>op4S|6Dp@Q|Yp#nWmhysyW)(M`mjqj2uqMyj_J&Z{ z%Gb+6VimWN44k>stxcOVbt&6gpM{pUR+V4X-iDMXn{G+%+PypR*O%|ZccIy0rGMEh zi_|634^3C{-EAITO4`xYDnjE@##@wy$ulO|L=G{GL>SZ?`ln2A@ZqL8rp}n0SKjh0 zf8$U3I5HW#@MMA##CA4|yc+^gm?TZ=rw5Vs>TSaj6q6fQN<%fbqF~CAK z>KFx!1z=7Ng09tFO%F6Z#<*ot5vxK1r_r`qBLM_Dc&RvHSa7CfQfp#T!5T46n$AlB zQ1HN7!&l&sbHqThECpk<&T7g?#^Ckx=&;I1Q7wc<^TyTiMjb!CBPEi`J6*t5)O)$o zt09-P8DKUF&t?{&ThrdH8ID55%dF-2HR+;-uNPYL$#BpxZb~zZ9P>^YST1ZX28AX; zq}VLHI&4hnT{4ILWK);dr>4{jnb#n4D0p0@T_{xv#4<|Jg3~?A@AY0btK(iMTms{71dtX&>p=Swdi;&Y-tSlxZXU0SsfN1Y6{M-hJx<+M zo{Cz#ySo!J(l7spI?#*x#R0gTmz2;wB@v8(Z2_>t+{u^VRar$O4wS55mlPe$0%eOW z<#L1+p9KXrfkA{gY`&7K6Yxzu2=#;3ofyU}AaXUbD=Bh%0IW)dpUgjq3l!%}EDu|m1ckSRKry+unnk5=GmSTmxtnGmiKagzbb@6>|0HmF!bheI@@k0}(Po8*Q{>u;oA~ z2Lc>uf+1P4XbxNFtblAr99TN@TI>9E5s?WbgcjKGA(->wxnKqv{0r0Ip+BDP$^#LK z{uZc-d1^JWTzwuA>N#@c1lorWyqwLN@`i{upb6qh9&5MKqbzV@hE8Ep&`zav6N5aP zC@^po#kY>K^5485x7n_aQ68hQ+h{SC z@LQ4zhr9TCZpR)rCAs3;J^+R}tv8>?OWjPv1w_TB8nT>&R8nhP_VMX2!0icMA zmw)Ugd6SU3w!C^aO-38)l>j@7Fo&EmzL1+t3gv8#NyicMkiaZvn=BldOw6%4#dG@< zE@;%#Ubbr5B zq~hq!MlMlA6FH?Uxx>V(b08AL9oJ?NUGp znDW@QlZLKLO+GWbVAN@G{l9g*ydblvS1)!5l(BKaD`f(q-OdxU+q)D}myKE<#y<<* z9a#6mWr1%+@Y{*YISN5Qs1(>5p$3dH`AtIG)gQCMr}QwUfYwDYrPoJNVSv#ru!`{o__Jn+d9>>z9VYa4v#T>T$ab^onHrz=?fa4I zz}(iI7c=wFTVXP2`|`tG_M)rRKJ3_+v}S`q_6(#@6i$5;)l+`LLHd=%)J^53zsY3o z&Sb7Fdas#7Mp4W@jQF~N>FuD})-h|?_$lIofc0GbxU*#P@!Ml@pI8U<9FbGP(sZ`) zeA%pz7fBlc%)S{}dhw4^Y0$E+PC|kY*_o`f$JJ}>bx}vW`g9s5Tx7GGr%m&J7rA5j ztvK3yvI#YvY?4S;9`B;<+r=DbcUUg4Nz^cO(N=;2=3cuEl^a7a1MX0EH<&GEF#(fs>= zjdXw4Pn*IKbq^QygSMrADK@VU0!+>it@w)Nb~1&ND`Ala=Jq8={Pu2_3x;qm{YnI%;U0_8njLtQ^Xhoksv_)Wf{H-h#l z%oL~P9KOr4x-)9(pdC_oHF+!=3YD_teMMw7APH|P}Q3kWCZX~Uux8C@!8#bBVZy+DXZ zU;j#m0v3QluBtNts>p8@xtb2JO~a5430g-MLCILdk)y`T+3TX%&~82|1$FvU0E zk3ylj;qW7YKnH#XX`Oj357d}cA<89pd*m*C0s==;IQRdT^*RX&Bx^Z0AyuBb!l%_$&rd-6f+Q{R z$6uokl=pR+Vv>L)f-a4llL1)@Px|Iz>LN*^?STIj&Azitx zL+H)8A+B%JMvv)+mn5KGkyQ{M1)%C;`=c_4>d{%3S`_=OC^1&O_*PEI8WRd$+24MhJ#)MP?S&_(YMX za#o>gds_v?&w*`8n3wq=4O$MxAQD znS!vlI`)_m_clL}EaIc1!4mU^qS z;X58+d+oh!KcJs{s(t4LJ3E$M(Phcnn{6fArnD*AA*z%Sp_V5KlqOz^%wq!jH#e zjE~}j;8Z1GBB^4Jq2QpdaT_yPqt}qjwcZyxZ~yKvPo-cNPF$P47yl)F6MhE&K7DT* ze}lR-i|@?-HHW@_(_45A)gyLKvr28#BC=L^)x;Au-geVSIHHcHaQdaN`Oac9cjBPVp6 zr3^RP^+2Ax@4ovzCA9TJ&Eae?A?bRND0W+9SN_?x%it|}C^=O9Go2?YYJOw_7@ z`nSf;gZej5z`6y>--$3+FY55CQC~@2>LMEaU71@8raima0J=|Dk=m##EXVQO6UdelZZ0z0dluWOjKS4HCx@y)bO#6_6jBdSiuNC3{*W57ZETP?knB$ zbq=&VYDb&a%kAK~@cU>Ez7w7W=mV_pq8!*+TwZv1!R&AK0yZF2%EDdDDG5#{2 z-&!iYS1RH2=%(0nl=H$zT0P)3bo?r& zc(_O%zVE*KHl$&OlAW$n)t7(d&}^m^fZV{tK%Km+>AOwOS2toLl=45){uI+B+eC3H)&sZ}a`y;}wT zp*QdJ6zPKDIGxc5RFs0U2n1HB?a(3A zLa44Wq{koNKYc*IAq&w!x+a^&_jYxm@25#~9bcf6iP{KHMe8E>l*?nCNONu3Fjp(= zj2Js35-%jJBBL9>n>9{`7+B2@jC&*|k}HDnAK+SjeCY>Kfx!UecdlN;dsZT7mHRY& zqfiO+Np|4Z-tEC()QU-jcSYa^s3m3Xz4|mH(e3iKHmIa`wm;KJYU)9#ssA{MKS`kn z5<8>Q!!x706bj)E$`36|Z!3AFsXhU7cP+%bas-nW3X@C6n}kN5wtMQIh4D3Bj)d)9 zf(}Y&+!o_N=oY&A5-iY}czhN(WVrMa^x5wMJGOOkBqFMF)oLGF$Tqc1w{qni^CbHS zyG~RCRM1o&1(=VaQmm#`18!*g8l0$a(@hVRkeXz{RjoR@-f>DmMkk`924t12w~p)A zLo`oACC+*@M!V}xrIMAj~t)$Us|!_;YOct1| ziXi;vSR8DsUVQyR6pgv3y4rM+!0)V!cNN42ZgKB&=hdsAqY3|a$(>Z7{K^M)V(}SswaaP* z*@xl_rcCia+^XxGQiQpX8fb&)Rl99ztqp|nQEMp#1s$iJ0JnTI*6Jp*2KAxD>zVqPDj>T67%o)4WT(T`Yt>FI-VPeXu?d8J=re)uV z4&o#wF8}MvBhP*InGGfI3-DZop2hh}Nc2f0!~$t(me>O#wgkxy$E{ggRtLrTdrm9P z|0Y;I5n{=fE_vdK4*b{KIy>FlzVP{G`F!nf)iPEhl0wGjS)jMy2Y_E5Aiv2_)gVGW z`@!set?9m|M<8RZ7(7DFAh}?*azSV}BnPO}6d4akP9E*`s;C>C5zt?$(P_@`J#a2h ziE^TmvD!p*hsn{cFe?g(<@by$K~G#^9M03y#oAs@iu(x!6!F}OZ1aXN8J!VbxuHdy zcCfWPdt$o9*{`&ydV5+lh5yIecfiL{9&hX2z21B8y`QAJ(@DBhIbD@xx%b|1#l|+( zfaxuS-oc?m0)!GEg$^dPgoHFo=%J+$Qb-Tct-qPwy^~~|gnxb?=AvSm_}-m&=9y<^ zp79AyVt?^=o4=}a=qlx?vE&yT;XBJ5!3l%QFkX%5OMa1294IasQfM{#D1=345|*Gf z@BF{}KJtoHn=v~r*}p)dl{ZJsy*;N52VP(VWYSS&T-1J3a+yo4)d_85cgPaUJP@{A zv%hOK7A+3Tz_>KC&L@N+gvAfobUCxroUcmL%UnXO&^h~Qn{mMAvJH<*v+y$-p=UAJ zRLE?DxTs*q>?L1l9P={6+re7P4ya-u3w7+9AYeY-@q><6u|5U~ zCD_0q)kV7(Pfo(qQPq07BuEAkHn~IR_Jd?LcHt=#kgEtah*v^LYFDAYf zq=#(<$+2|;G5`O_w}O1$wEhb=q%Iy1SO)tzxW>@?yU-DsRk6sO5`D2wsup9`XgB05R((qA&~=JE zgFC~}pky5$U9)J>ISUr_Fb~_AUn@b%h@u51Mb-~fi=GjsO%CrzDs#tv_CLYLc4{^@ zZ9tey&L-Ff3!I5N9_TpaK_D+Tf8o>&)3NECbK8V@@P+x;R6S|BA`}-a{-=Q{vV$yT z?%-eR$uAk(%i{{GtWT_Cenp*JVdUkHfBMt8gPt9|sKlPzNQ`w&-&jxr3tqy|3!!$?)#+)6hJJlV#( z+t`O387JYkHtmu3cf(tj;_W9>93d7nhkaH@_l05i-e;SyQh5ySF!Jok(Wri25 zZo*5C|8mt{>>C50fP%6ur<9-e*}o}8{SV1C`LtF$h0JH}I-6m zUTJdPFjScO>fuZK0U$eELIlWm1?_MNEKak)1>E%i_T=MpK90raCK5NsVjU8<_NZzl2D=#sJ zBSobMK%tZl!VIwu68I1+{BURjKL;jgwzC%$4dY6Xez?8k9!TI{Xc@@#1pYrW)a*<@ zkI2}o$`t{T>_*)2Z@wb@Z?nZF{`0A#V~ZPTVVc&*7NTi?oe^;<9~*7_z7+Lw<>aS; z2R*dgu+u%_4?wr!sxDkoomFKDrB2v(0dudQTJ9Je43I})xg;n8%pcMPbe0$tPO=_r z^4(#5SZ__L3+f)9J^fM17&X{B)&06YpFPw3EOp`tU4VVK%7KAk=jm0!&`H^Q(n;#!M2>wuby))dz36B?^IXNRwJM))eO<-TebBo;-l(kg?YvhQnQ zTU{Q40|m#B2r5C4LhcE}9r6ctc5OKDP8f_np>(eg%UsHs(tB)J>X5_NYeF)QBChg3 zy6EijU`V1B4rTf_oC&EtXMbFA5|w1Q450zo1?y`^Lx4CNG!Aa-c(UWgj@Q13^>GHp zSpZ;T$g7YON4AK~!T_7}^t4dQp%Nv)00nttYnf8J9ghdwtkJ@MB0S}+T1lP$Fk~?A z+S)~*skx1ht9zgLcb4dG_||np-z&5u*So`Wjle7A$eO{yf4%h%RK6R;Y(+PtDt#s&w4W7Z+&J+4!@mPNEj$ZGe5PM#UcUQ zEGCbtJ8fOIZqu)v`fh{Am?1fju2UZ{bTeo9G;vr(p-Uuhb=tah7GvKj?tyNd!Yk9H zioRf9OfL5;l<6WFGf2i(XFP!JVhOy#+;1(YtwYaA95%GE3ZYt2bS^dGY+O3=(O7Z2K|2V5`~ft5+87MSDsc z^lvOUD>YBtT^VHN-hHt;Dm<>|5xydKVW#M_MTF-4PaPf!w@`hy^(i+9AJ< z8U1!Ch%3o$-cf60q04B@7b>>+>Lp&YZ^hahl1HkBjtof5V$T{er5@cm%LK7lS6&Nh zJ({H6sq2i`G%1}^mtKn*4jQ7`p^i=QwhmTiZ6JL5E!ksE4=^7BOyu(QRDC zcwEPczz}=|Y!C#Rj^NEEe8@)v+1PZ>34J1P2Kkmtn<7uaTp%}Ozt6G=Yzd1sCNw_8 zZmg~snk8#F9JKpfyJA!B&2C+?B@Z0T^G`Ux*9yWW0`k$ zf0J6>yoDS|RLr0Ht=9~}s+KOfg*ma$nl;BwU0d>wk+L)FEET?Au#CrWn^&~VJe-pU zjAEzE=#J+uoJAVv_MX<)N4DkjdvQnsKpV?+Kj`Q#==*k%H7avG?qg z5*seiNw(0;5Ubc-V7&p zrd-Z?x%p3Otod!+ZA>PH6h`QTc8E1{3LuQY6B2sE9uX`qW}eGmHFxxq!bn+Ww~I_> zi4}@sMA>(Jo{W%D<~!#m5<9ssk73?>2gdP`9t5{T$wRQ|3d*r`t`~-P261@jYb}28 z;kaqo(W#HcAcRe(spGns$Sah1?q$noA2@Iz8Z@}1UWw82(ABBJx_hB>Fd&lA8Nb5g zvWaxEZka(s{(4jTn4{Aom6A?u+7u@%_V3*FY1hW(`>)@%t3%XrDl`(_M?2U?LM1F; z!2)^50ytCTPJx+$Y6Xa~8vrEt3#a$W3fW#+?C!z`@E~=5^EhG}8-x80505u5OU}|4 z`jvz8mM$o3Q)%45td;mCMrDJGS1lTlE?g5nlf2e^mpZC>DRGra$LoJ)4osGr1rE1d zm&-^rbZOLS9_Xj8J?f~!M;(%mwFkdPe+Ninnin+9!%Xr55Kmy+xBTrZ;_9-xyX*~*LC9E^O)Mn-hP&boPgsWRt9lZPNq56r_s8ek2ArGv(#y%b zuRp=OZH78VFd$aZ-FcHf+ezM^Kfn9i{qGhxQyz;sWdwD2r?upE4Vf*bl)>0-a9K*Q z`qgALrQ!FCZfn`&8irdOKKKp#5!wu&Nui-n3n&>IKY{OURYti=DC@CdRuU;&u_z24 z8?tM-UNCkmeZmLyJ$aYqA8liyJ#I)GT3=)VjdwTb9 zc=3`67yMmA2k)c5MQixKwHqGm=l|A+u*w2R1PmZ(Nyk!lsa6Z%NN0}|P_ z$=}ecYRq5jJmg-jj5hyo=5B z3nv2bezhW@KpWT46imuR?43u!n_WBypJf2v>=U$#eY0A?CIg%wK^!1Pr~r`R(D#N< zkhenqz2&&~){C2NADlh=`M%3;n0bV=@+0Qt#KJ46T!UBZfK%G-{|@zv!EgbeQ29Jwpe1gN%bStN{mxLv`)T zgkcO5x%Q@{X`OuVKB1~hi`l!R&wz8`a5cB8jzvm*J2dVh8@1*? z$O+7OdtZC)lR6PdhwlEsiT|Gy?d_Zb8 ziU*b(bU&(F7x$oWMP`C}N2SO)>fT10n5{~WE}R5=H-%M7BkZou)c%fUeS28xmig8mb2@o;;~gm>G=k>t z-PoyG0=r6q%S@efmB3er7eQpeQntDarfJ2q3?Pz@4=G&HPIYD99iT=4q_r3{P?fO1=38F~>;CqsW5B?+~n&pR*F zTQpliHo$1eSl|q;NsY=X)v3t90%I%;V;rSdlC{e#6@^B0^sQS8N*$h`HmVU&LO8z% zuXt+P4mbb%LRue z0*3bM^y9RWKP(%7wmNsc*nTsF*;s~a^`*c)n{gyFJSFEu_=`47K4A<>O4{Kct1n~6aOaTkVg+ghZc)QkQl}&j(t2}5dzFGM4>R;GmgF+q;z>;PB=je`ahZk z&nEK+ki(5HDslyLq?BCEY$dzL!H?5oxm4vgnTCAujD7toxmqNV3u*G&I8lWf1)L_Ye;3%3ur=VlMolh3dNE;iS9WGx%h8Cxu*j4b5Zf;=YDfzee##|I@(vgshVCe z%b%!dA=Xe7NY%n06bT`crgp*EErPQXv1j)*$i_5~;z7st}5QNPz`J#UBC=r>nD;rX; zrnaQZAf#5Q`YpBeq6t5^5~&QZvL>qGV1z8@Nbea5 zv#vzc5r^CH5HB|^XBSM2P2CP`1i&IScw%tCgEX$AI^69z9FQ19Z45nbmI{Ho`O-(n zREcF{Vxw7FTM$)}Zc_Zy7>TLnJ-&sZzCjDIIlwa*v*;OYDG0AJooaZADG~K6si$kq z9d%+ZldG7ECa$^Yw7kTq6LlYR+LvmiuQvHBdJVkSo2$u%v%wF*=r=k{yd*%?^O$KQ zylBaU8^CZBLe!HqO0`J==eat39ifgG>eTTeDx+;L(r6PvG`#1wuH#HsITe7Wfxt0R z_|qu!_~_{J(xdA{%kHm|NcYf9ch7@P{^Gvlw!$uq9n9syYLy%VuX~k>oNLUV$s5f! zdpObw@7@ws+jNKy$MqpZhgvk{D<|JpiB&Ok*$nU@H)ssl<;s8(k{1V4sE`749)!F7 zRD*x$;1B_92!u2|b36?hM32thBY+&)=;371hJp1JMt1zE3rbb2uRuQ$#K6lwZg7m) z3(W>w&R^gp6BxzkY@ii0c+&@%#p0|9v;hyh9kNgi9d+t34E9OWYnG0|RN31Nt=Tl* zN2w(7nnEFcnPh)EO8kJ9J#$0(f|*zyjwooaVx&lDfFFnMXX{|EF&Y7npr|$LY15pm z_C+NC^6YcgZ6zl$Unh&27JonrwHkFCH6Nr3n&$j~zkW*v?gH9}P6$_lb)lRO_0;Fa zTL%*X^LUEKoZLPgD~zPHohUj|JQ6IM9C`>mAmIZoS9IguWQ0;TKix}$pmmB>uQ+rF z!RtvjM5y5X`WA%Y0@z%tpwT*D2TbP78`KWDK~-98ipK& zGgiaZKCuGpSGSY7%$?K#EtQMvLZwXb8&`PMvOplPV$Dao;yI^u>bg!pho=3Fn<^~K zF6*^I$SUBTfC&giGR!IfI3X4g1JJ$)j)NO=);4LHMyy4W*ClzRoIKStJ-fH#jDMU0k42X#J zdxne|p#dTyv~xs6a0Ha9PVAQECY=+-z$K98F6+y#3KkaYA!FI*f#1JbZTixk$*{ z$zGy-p~|eQsjXrcC@g}s0Z|53v_1;DRsN^|qEMY7s3|6IEuS)?-Ed^k%FiO<&bXn{5+GVt+ zI{6XxLi0OLtz~dPs-gDg~m zHt{j1!KOIT+;@rPX4;$Hwl!7Xn@d%-5V2Is6ecV^GbijCt=UtK`mE7N^G)hUbf9r_Ik|Acp9cR4C2*oiXjz;M zcMFnOxLZyLuDxthf^?XX-Et6T(~=F`?Seuzdu>=T8+=pjW=pPoIIV)hrt=tlX28%X zv*Lk9re`Xb?`6ZwSLejr6@BwkpLBL=5&KXYa6`9?$9B@GOu#U@#z-#aAr_eEqj zQM?}-x5tS6G4$qMn&YAV)oo=WU22Q+Y;h(CLuhT~&Dyi4^W>ZxJ z?g&ca5RECB6jHg}mC#Z=HF1XxEaq{r7@S7-vpbxNQ2Js$68Iei?Vp>0fwCv~DHJNk zwU<03Lu3l)24q~@VdH`G5M`#98YFiyi%Vn?gv{|#EJGSpN~b|P0FYhk%dEs`DQHq>e*fn*L;^C*E>K77h%rotQp;o@$3Ee7a0^c7F^p&n!BomYS( zzqyiJ$U+#M0MZ>krHcYz!l!g%Na-+8_p;Xv5nLAZ05`U;8Dzn{GsCX%wlkwx+LaC9 zcvyf?U|NC4^oZ;JyZ_oj%s;L-pMCaOGFXE?E{jbdlM0~eT1{&_PO;l9cKcP=S1M$F zUu0cEpq0cHGUnjMtU0+NN_Q&dS=L=8jTWU_r%z6ISDj^@*W-}U=IZ1-)RhfVXi^T9 zsgRRt>7g;NJ{_kfC(oolE=K43L8(5ly!m^5(bMZKIjO(Up7ho&>G}z|B;+{gnbgr~ zl)h0U=VXkQ*UdkU(+zK0pg2d{T{C0oXh|EkEMQGg@{iu#FuKK?@vgI$VY{kKD|x zk&*|Q2?KeH3A`{0|GYkgz+u@pZyliwm`IT5^c2aSFid4gQaxr!@hBj~XDiItDnwm{ zT>Q%!=4_$V>QvWQz|ix#1W7AIS9JLN2%XXMY$lulK|IvitU@jfBkZmGXeP5d^O0Q{$+9p`M@xG@d;5G=phDemqs#~h;&@rmCq%WU>pWGt49D?bBbbU7+5=A&AD!@_@i;m413eEr#1w@ zj0@|;Qx}Sdmt6RV%QO}09)j(mui@()O5FS>xwxh_=tnYeg@Q$?OmY+Pz0qKZcx50?RTU%;n8yo62j5qyZ_hynEkOg?W;{2}SV^P=%kd0a5c#G^3jI|uERMR>MSCBvevu<#X!it_3XvBFBGaY;<-1S`^uQy(^ZB2 zUnWUvB;h~3 z0!iiELm73Ss(av;Il5@fFr<(8scX~#r{=LH>2UBS$!Ei)xR6VSS*X6G!W>a~l-VcO zh~U_33ae2{S!uBhwBi*q!2z#t-fVZsJ$J$N>csjLkkqePxA+SgsH8&=2lfoB#evr} z0nh-KS#O_io;ZGs9CEvO6JlKyiwmHp)~1bMO$zcOtqs=Gffdk1yqe|o3w$&&|D?vm z$yVlS&AacCwKai6u2rhN7E?6p{iR%)?gBcYiejT`#wQCPAo36(PCQpry!hB2 z1a|r@_{!h!KVLVrZ)XCvN+Mg1`Gi?O?qSXvI!M9-U*}dX0j$6Z42rACa#$WP))FrJ z^B#NvU}+0up{`H{iM6R4&La9YsuIFBs5ZAs<;)ldrkJ%ut6Vc`57a6Wd~1|RkO!FA zD~O5tm}v7o=fm)YN;Go8KIY~XluoSmJA?+a)aR0}BnzuQC{uRyYI__dM~{iT2`6z=HN|o6K)+(ChCKL>TfX!Ao{eDK!T*ovBS39Cwwn)~5+&l9JCOt|Ef2fPJ)Ph37Ii{+Tl(y^6G$1E93 zeep`_Q6yw1f<3)vGnTLrg9Ak!SF0=%%=LH>F0W7i4ldYBw~pzD_D01}=nif^PJ8p8 zCnRRGxbiOXdY#pZJ>;m?U+NAlSUAsH^vz$on7j+g-Ysxovw~ndQYg?6O`J_$L`d6p z?k)ikpW_7O-QdCJ+B-2hViu{pAgers%S<@}uLUQ-{h&%m8<4YeQrJa@9XW`%(72!} z=P&|xSfHMV1ib_oFxknS%#v@_;h!gZF1&FLJ$CH{eU$UJu%>knbCHOg4-0n**~why zty<%fNG2PXTP$))5mF0H-AQr0uP-jj^jjVr9;TkEFkh_@V-QyKW~6GtVAY}PN|LKS0D}p#q-B*yng*y_U_%7|uA#$7 zjDKqkUT7yR69EJTT{~J-Tb%MKhgPa)(gGL56#5T=y!^`O==+`fF04t`JvZ@>0nboY zH3ISK8M2zW1xM`(bbGamy8o5Jv<-dQT%({vcQh}QdxE-#BX1;1S9H~Kzu&)N9i?Da z)rje=FU(;oAt!qtOo3x?ae5soZEk5_5lWux*wrK$fA9vuqegv^97wvf@KWn|*s}r) z!BJt%eL3S`Vf%kHj`h{*Iknn4+-gOUZsw&=K3PBXz$(e&uUBsC4~-SIgW5vlx*pe{ zEvyL#zH<;%;?HIFYRH9k5a`^*ToCw>{+<{=~LE;jafD}!!r#$7YDUj-Dg?ujcJzSPZUG(<{D@@0&w|==u z3t*hjtWicyL;?a05{VoZi3rJkUG{zrAf>^geZ{d=iCuogH5U)d^^UMrp%dafmelUn zCI%xG#V6!r#^fo9^gbu9Jn(s>v=+*0&~|33BnaSvfHsck)Bxzz0NgN1k7&IfAcu|B z$@eMu(2!BQ4owk>=P`UyoD@tSO(1=^YFnA^YK5qqbM6%4^G={}$1znr%rdHhc9?|GWMwq{5PCRWd$n>ZM!&hH3OwOXcoj@Ab_V$2x(_rq& zRpU6U3Y_thrNGQcSqAU`!~+^cSnVK_+zAb6C`rAOb8FMH0yZ}S+RDsY_!Ohs-JJn> za4=)Yxw+7QouO0reu_Yy`7k(|CQF%`ACsGgbC=&f7d2|;-TdVPW$&JG{Jg$-N2&Ck zVVOqV6~NhtFf1jy5sGck4EfTzUE5cAJL6|xNxn^j@7AE-L7ugjeYKR)rts+WX*QRK zcnbJJ-VI!;&mklKDv^twy{pIUVo0*hBMTo>p8D1})D1)<&&_5`0uode6Y=`hgOh5mOHdsX%OTU2^kD_isj-xgZMk5V?fer6&)M zF|Rkgpsshx<+G(mNSjpDF%UbwbFi3cY1c9>39ZrsH6Ghw-WbKM7Z%q$pLwRjeDe%u z545^IxTivx)DeNu5o9ewtN&iOly+px)2LLhn(^^kStf+OKvxEU13&Pv)gdF#bs*R>fmQssDLo&JeH>Iy1 zShMQUJE8YMr|ou*O$0!8#ywKdYkE3QI%^PCJ{I=vymwHkqhPr5+FnmyS(La!%(G=h zAZo&_-kYU60QN&6sE4hoEByvTw-tat6xD(AfF_%HhG^K!*&#Jj+Q{7R@JOTrbw~}+ z6~uFXD^%;GH7P(kGFK4tRR=9FUt#P6rQJ;#jl(EbxD^tE?Nmuh7|nKKT|cC|^-wt|*g1<}wmzen?;1{1^G7dch67 zpxi@eFUP6Wf);1^uVJT9;W^5SpCKR|@JB6uM-N2oa9JM(=!_ zlSYz=2t^#PK$|7hV;vPQ=l%7%G}Jd_<|vz8%DZbizt<_FE6mlMH6p3pd&bK*^(bAE z&Pxs`)c&~>ZmoM_ez#&|UqWmY#dh7u_#7UoRGzVD28M;zC{to~;ReYnl13FCaXkM!H zMGbY=fSH&B(e-PBvCz7WWRf|z^jGGAjC{WDBhUK{&%7J$$$(*n;?2{#=-jJ>&%j0*&U8#F>(UtRUeb%`v zsFYHXX_eTlLB1g%qLO1nKqq28WPvcUs79V=u9$P(g{NdB&@Y(UecJi;V8%PwnRhMt zuIR|S3phcP-Cs`H2Kvlhmcr2E!mW4q;Wsl^F_ZD+)(ydIXwwd=N_$eGfHSA_9Zm5CK|KtVy$SP+p>m$6|XlrLiIB}N4cTv)b> z3-F}XlWVF?en1@*swuTT)BFQ9R0*yRiWW8zkbG%N`G24s4AjW7$yKrpfr5$V0Z7@C}MrIui zjkfF3N?CJS!U3RDM_!|t`jS~ z3bDaPN?6AZ-f+Vp3`SbvFm6R2D3GpbrJ%?K6eAlN*s7DaJ~siye<+Sfpg3|rG+%Oc zY%M_lIJ<=EsFrD9V#>xb@Z?|)8Qhk@GD2*j1V69Yo!pijSCwaB_K_FF8~M=+%pZ}eU2iELdMJAG&Wpv=f?vz+%AG@C*-ik z^?B^i(rHUc>Z4I+`IvoCTx_z)5)3#biIpq{`^hqaGn&(m{ zumv}?Dkx=YM97t~a0AjwC|d6Ut_(ZDrO?gHp$YWrm3$*B%p+u7+gmNK9Ca?13g{WL=e5b&QsOS|QI|KA;S)@MwK2 z3fjafuND>sH=jT>bpg;X-=kNv>@ya4p_V_rzze6s_Q$hr&Qcy*j<;PfXC7U!KXRHI zZi(HnOJ{hKfC?@OkD@DP-|{qigNtj2^~9$V(NneN-Bfq;rOy_rT*|V{au$pe-N4Gq z{ejVvWTUaNqU&BWA+pM0$%TTN{RM&-cC!&(h5Df^P_rrRW6Ud?Hr;f@5rfPrCT0_@ zd^);#(YO;-Nz6m_Q6DjK;fZSvLH=O|V8W^e0w!4py5z@sj>rb&VuY887y)s<*5QDu zU_3%c(kkHOFozU_(_y6yN9i$@(OBxHm7qN) z)!d6G);;vqM^}>-58XaY_USdL$d;rChC_4RTIL+=f;;_F<|UX!{}S~XjOnmuWi;9B zp_z>YaMMD57)xVw?W@mWJil}}QPSKGc_bk!vbK0U>PSLM zt}7jP#1Vb3l9OB2ZcJgI{sW<&BXd~Vf$OaXrdkH*^BeTTKu-!mqR9!d4Ywy(p#^XW zEJA7>CJ&Hcj)3NDss)**eFrlZNNiYP0{F-&)dMPJzYq7coe}YPfIrunMWSukuf*Jw ziY}jL?Xt{SuCEI%eVZ15Jn_VeZiA^axo(jyYhAe3&=6UQM=clH3vTY( z70Tu?`N9$nuMin&(vbq?X$HQ=9u!_Da=}b=K-6zwX9;t2|1t%rSrGMda)9 z)JDI>xtcjck=f>Vxz>{Rt+Aypqp82Z?6yXiI8CPBe)1aat=-!0u7eZ=LIPqhnC(bl zdmU%oa<)_K0BvFKJ;#jT%@0CuIRx|lEfN$BmL)>LBf>}Q5kn{zoL+Zo^(er6eY^HD zgCgM^0VH3Tmhu$IO~3zoxp^M$RbT(uV}F14*}p&bm~Uj{2_Osq)qCAM@%R-36zGjb z4Z9Wt!TKo5_wA@@6tk%csOCO$lY39!a!saQ%Ge|t7OSxt;cNx z60*~#$$d_mruqJ6tsLDK(2C^%ZRF;6sOO>P1WYb!PTg9q4*z_PsuJ38vGn^hEH%>%@ z4X;yyR>;SfR--GoTr?Dd1_vIq%tR{SU&7!-+Jm+HF`iDO->o&jNyVG5{G(R8d{|xT z6oN``x{r(wEBX^4Z77a*F;693Lz+%)aerrc=^Sg;GO=V$+MJ5YyLIKqdtJ-6z-6<@aXObbb;8prs6NDir&p`Oq$-hfi9jmS-J6~#2}FG2 zkkk|M$w)73LGy`%GW_BsqGmo_2jeSAO{N5UhV_z2rRNu)-cxx44K@-tmcU@m0bRm~ zvbtfF+#puVlO>H843;{+M)Z?AsCyMlzx9=z#Gn(VFZr5W66uUc3z~FyLZOvLx}wse zrZbyVT+aRMJ+gIA-2y+W7p1Ozfaphn4cOAQUYPCD;37|D81Fw!{3LCi$Od5Q#rfm! z^2>hYz>E4}x+}@f>H{~r04x`y7<+OMxX>tpZs)x+jC-&QiWVlmSgsWKQnqaLpV{Imi$rXpSJ>4Ded zkdWESUal2cZvgrnXT?ZwLK=35w2|YCq8k2*|6FnHhsmyOYFv==?OJVDL2aamDE%8{ zrCkN$ahezZ`Ogp;t35qJKKTvvGBWIf>7`d&TpG^g;&Q7MORrE+>rROiy?t?UmMgvf zqV#N;+;c@l7GCL7_*UgriB%pIqR8ilK(*oumXkA`e)`~KgL&ca*A0WT&0MUc<)8>V zTz6s-_L>i%1nq#!`5cdulwe30+`FJ|UxqHOr5&fXLkS!MQcSJTVdg_ftM1t9;{w7C zR!ji7hc*YG$=v?f%JHTgW1Bh#Z)oD<3lG0<`}DpM=7Yx`^OQ==w=x%u)8#XJ4(7iy zUp9IfEP1e|z2Xs(C(hXYuHh_Dx|u;z`|!itZ-1g{NF`0+tHSe3uCZ}nw{Nr(E?Z7L zp4RBZyY^5=E9KqlU_@646N3pzdQC(xmFj&;qe>+uk$$zy4kW!5?jd#m&|jNo%|W4F zHY_(u?^Jc$2JIOW2^-VfH%4rcO*_ajd269y8L|!ni!i@Ll1Eu$YZiNrz7?x)v-F>F zLei8z`ShzK-}v(^)IKh~L&*hhHZGl*O+b^E6e~Ot6=;CA@AWLa*Enc_ZG{|Ximka= z6_0_nF5&DHIp7?BztL|3g6d$CXDDIfz1HS4@ZH0)d{dbY>mhl`fMrX5NTt6 zc{S!bFVt#8TA9!M>vkknZu{(wg9j_oW}|TviTz@XSl~Lt^e@{vVFLvccILU=B+oTY zP%oF8Hw=ALB&U_hHjuE)8y{spSRpZ6MDsyzi2-0wu1GMm=~?y3U*ni#QV%W(VtrfhTuEycGLv_Q}aME$)Q(*@c)^N)J&x#yVAP-N|hL0HbF%jv?Q zYl_O+sq1KsWa+MTZ2GWYm@JLQ!De5U9r5Xw-d&Yq(i3OUQ66k?5Ea@n3^Z2!UBORA{Wrkk$&oKcK8Q?5=?Svp);0k7l-i|7HP80 zU$e305F1?|rS0u=w}LgMz;{ANaEXm1$mXC$wyZJ-pMk5GBKa^}vlU4;>`V{Zn0Flx z7oAMx&sCWtNrd@1Nq}#J*J?awY^4j7MbH6;QaX0GM)2Io$Y!#$^6L@muBkx;I5zF! z2N5il$+vb5{=Hsg&BIQf=itUejNKVa zPan)0fU1cei`OuF9ph#VNIy)XBafxVd)QTetioJgrs3ifA@fh>kIc0&*ZB&yU%8(- zxL9m3h$end8o*g?-<$-x278-eC>be0ig1lhyZGsAIY_vF19s=Oy5hKSi*5HskinbL ze2GC+c=%Z$h%hKVhVoGCRvq}rURpkd{M;RFThg>VWituCS7SuThE}OS^DT1OEJy_m zCbi0A)>lFGP#T6VOr2P5Q!w9Ob@k7FMrv!XedU!~!SbHA)zyA=P2;D&2dAiuCygwE z@#u9)1Dqi=7+Tek6jrqXx07!PjupoTW|<|`6c0ysya4wU9chTt2SAc(x`|<= z##yvAAo4!V{b7LMG?-um5u6$J+z}oGLcqW=|5nO};#y`DOMo^DD3ingvThKjt9;-J zajpn1Crb=L@cz%}kOJ)d{c7_GEVsGH8%(GZ*o#@XY2cb-@r+`Td2!_a=hu_92kxzb zrDih3kWCA8l1NN*Vuq$^sYqmzh}AR=d)6tbNd~*OU?+)8VAKm$PKi`Z>6D6Y0Fkv6 zG?+mT2F_DJt3O|bt3nkHY9JW6>Gea5V~AY)^wS0A1@hqj{kJq95$jEgA%(>#fi2bF zlTj=4v%1x=F;N~YCRgJG8$|>nIV~4SKqOltwmU#{%Tv1rOLB=;FGj2Wfk`;j-Fb$o z2v&|-KKN8xWA_P`7=h&voO6U$1b?1S7Tbk&npL8P=Y-bJLhvaD3SvxKPV{po-cH4P zrrG%EMDRq7**4(&96JF!j`PWhx^k~d#0SxZa zGPUNTV~-v9!@ObGzjzaKr`0KuQ1BZ-L|r0KN_u1(G4;add@9@J0_4WD9v5jxCws0K za;B&aY>S*|pDF|%2sdEcT+0Xg1=i*v3ZZoT7dyDq*zEfWN;1NnRC>Qsc^U<-Qs`8- z;k*UBc9K__7;T4>(M4MUnTsqkGe42rS=Rcn0LPxp_DdEntiWu*O9iHXkcj8bJ#)^S z9_9eG@Qb`}MThC&-N0C)Jt6S(LQ01NfEDQFm<25_XSCman`pxmU=tONplq|=P%eQR z3*R*J&a(AU$QvCvg_+DRd%;=xp%zSRfgK)^A4zOK8D;Lu_-9u@W2`*!?(Mf<4h)aw zlx1RzEW312c~{gqq>F0@NKn(es83;+tk`M0IpG+x`7Oiq?N4;!I+iMN# z?7=}wdF`_qxl8KUaQ>o;!@7(iq3?NR;pKaLux6(C=0%#gy;~R37uLib-MX-@aL>qz zBd?vF*s^15Qtpz4SFK$UBCmpQ*DX~}n+S)1vHSoaXnOHM#!k#VL3?=rivb?1Fp23f z2-#uuwP1^^ZL$kpcza}zpRdqxrL4Avwj`f?7~tFd5P#?=64`g_%?Gg)>G!qTN0hnF z98)Fy)%!4!)wnKai?+zByc(g@?f zKvoVrE zhM+0mOT9?5lLG8HL9q(bm)3}i2ruuR5e!wBZ+F4vJwUg5wy^6XHbbHL#I_l?4h(`5 za_wwGAf$|J$sInj2#IfEGvWouyoNXZmYTyrBJ0*Cx)U2#9$R$RU7&g$y`8*JV-A!<*tCSNYf7b~b07+=>Q{Ca znClYW#xSU34>mvmSdr5w)8^4mVzMa#7QmpV)D(e`BvmW24PDUZl5<{RVDPGaumTJE zxB5Y&hawSAeB}bK+q-z>Iv;TIE`4W)IR#jaGV{o%y-WK^FY`8~bix{My9bJhJ7d~p z%8)j6rhywqw9uB(V##3*w&tL@a@A;T2vYzey$=R9ICYF5%hi{lPh+F)rm0}srbN@A`N-Y}&ncvFXsPc@= zPqWPPRkEBpjcgqO;!LGeDI72a?jcef0#~R+GPP33{Iy4uS}`UtNUQT=sxvaLW|{Af z4m(z5g~+8Ybd{XzKq$>9=~+fS2UCVR6l6$3)2$_>OR?||9<))SLO})}_S`C~pbR*B zV8ATier8prLMVq#w;+-xk`L`WVq~LtxHqkr*~RK`Dq}5e*l_th#iCh!+@<3HBH=+2 zm0t;LpHL*PoxgkRc;8Syp@D`pWgyXQTXyWRx52XK#;I`;^lF5UVy@ASosopk1(9RP zJ;=hs1P=~MYp_swm}-~0mPa~pbs-7NLHZ4G1hf-Zr5G-?butqw=VV3Ny6}syp11G+L%IYrc~Pr8PVb4$0F)jODh{#PG05vhn0HfO(K? zg9n6D{?g*HYj&u5xBH!*4KZnG1$GB!mF_W{+CHAuS^G=|Q;`}w*fDt4H7ak(qPA6` zo$ioC@-U!B$rEwdF3qj4Geh45wzlK;=y7PP*$1~4!V7LO#FrKxRE}NU4qmYp~OE^w(lOH_dG$qt^9BPX``H=_CfLcQ4leLdBV@z~GA zmDHve)7f~ARp6Q1WLo7Qmi5Hg-6~}A$^0P>u9eGgCGJ;8nRzhl_Yn3Ohp?ZCe;r4D z%A|m279OT>R>*H{a~Y z<;X20@OGWRjAY(X^?{%kEJD;{0}s|6U<6;PR%YwEfY&9XJ|1MA?Sq-;Cz%VaF6__u zgAfW)(zR30TfMsH`*%OnxuNTyv;>>$R%5*ZlfqWLfh9hWF2me~EzG#U&!W`80Vp@L z{H%|q%Wy?S5z6H_7tLK#%v|8JFdW$ovW#n)%eDJ`5&2+xGxJ1(x@$Y+emH6+xytRkaP0_qcjO;AfYgA6lI`5-$?#BfD3zHHz- zA1jcRLsE^p(+8=f#V>~8m8}Xz7touiO=PhI^-u?cEF2Oc96!NG=!Qf{Q-TyxI?2!% z?r;?f%sYMOTzF2eNU5N6`_9~#yN5ZL+25UE{?b(hQMep)J*Xet4J$syw9+LPiD(Dy zhH!?}TdaS9q=Skre-S`92^-XJp~H-=e<8v2e4Aiu0rDWEOj8<%aB66gEgXp>QAj4S zT`=%{mKfoTZ>kTLBa!&P)VimeiSMmi^8jXsb78^X$!_vYnR%*o_ol19_q{MNGhc;# zckSJ^8nyBZ34*fY;{yd|Qy(DsI-K-g5?Q-8_D$;IqmS z@ZwpPta)q^)eXu-Y^rC1X&NBYu%Fr#QbTH@QIHJWOB9~P9t*lU$hd|toOS&2l1b^4 z>3U{uqBg$y=9@1z8Yk83dFDsAB^>3lz1vZ(QBPvKRILgEv%uJ3XCkjx&~jneHi5}W z>vo1Au=YTE=1MrHEwJWpAG?s_ORzKs7A4MvDl;sCzf^#PvD88%x&fq2V-;bBCJznV zStzH?v|_PdE7lS?YW!uMV#c)@Ax=hP)dt+69$xrE^jY$5xMhZsgb~^!AbErK2vz~i z0Dv?|XtElGE{}46`F8rWifHh} z%3Ub*#*`>A7y=Edq~ zDj5vfB}{A+5a!OvHDY4N_FHpw&*aDCd8SW~I^qt>*8HV(=*|P{$f`%~EH8xN@y+Dt zOr)#&ah*B;Y8bK=3_-z#lgvK&6K5kLAVvcKiA!}rxIDRbhe{;dGEb_l)t}O z6)H87J{i~!Wm>c-|6OwMhd*SRuQOK&s9k$6xPaZ1ik@kVM;DbFuIGm1n63(Pesflr9jD_t}YuC7Iz$O4l%(sreO<%Oy=cb3AOaFd9 zx=p&-G^6Z#iJH~?=2Zlyi#ty~*?0Z*By#GhH{T2zh=~%jVDOKX%JFqr>t0bhNMDtr zly<$+Vbl%#BNA-gdVuUd(9aM1P_w_!7Tqjn^;sYAD69!OO zGVbU;=DK`OU$K|GmF!HO53fI8uw=>wBR@vRH>3si9*IiF$!zd=7OI z?djZ(iU^=p%~J9+Xb#jjTLNVE#MagF?%j?J*(r^N#E2aksh(Vkm* z(JD>0e{V_=ZQ5aDBK}{pt@guc7mf~BQ#*wxK@dn$x#o)`^!n?GTJ38iBfh%KVwN`) zR*MnlxECqO1(m)1BwqHUOs*2L3HSWG#AWZXxwmx7p|w@MCZVy3 zItA7RVS`T^mw3r5(=%o^(K=kpj3rEZNAZ>7v%NPme|_=^y|{b#mWU+0eHYYGiba!n z`R+j#Os@jJ0nZ0kE{SCMtqZqlQ|mnr*GjK6xWps%Ea_A_YF3T4-l;S98ljnvx)ReZ z_5prQIZO&ubAZ%XJDtV#i8-Kxp{L_jm13gUZn3~ECd6xB`B*(l6 zuP>2DnJTSNDtZiE-IiS5M9dCLl&gc7qH3$IwWNSA=1mkf4ltXCsDno{3g*YOQei2W zpgSb2arK+j<`Q#Zxx9O1q?`FQRRUsf`xdC^v1$dtAb(OquzAD#{;8+&`}~ z1{T)#GA}r*RVR6ci91oN*~Kn#Jida`fIunOb((%)g@96!E0o9ziI~kjVz;l`oyZHz6jN#JWLV;YKVcs;0kJtw# zM=U$31IQ?dWX0pw>`)YU2b|t5)SF6I(WJ5tHg^i+8$1&45j_g;Y`exer(0((m`tWY zYR?y;6I8IZ;F~afSKvc~oo$uxfd?cx$Q>=R&9nC##C_pQ#>_%0f4WS z+;YA2Q@y*b=Y>UDjHqUKZf5ucVm{K&d|u+iSNcyP+81lh-`;oM$#1>oR4F6gFD(*i zwBot@>|fCp7iN`C$^6|;=2u}?NgL4)lgktKep|p&9BHT=$^nJ-#xzKjgl!|t*Z&IT zKHz&iLs|zk>D%_ffazK`Ak$DKY_mRxj!!|y2~=;Sv>gNr>21T;4G=SJIP=kr1ghPM z+jquB&)({hf#&}Y_uY}!W(+w)&%+68N)yrMnvWQRqfUck9wmv}lIn;y%e=jNcmIce zy=Rug=$QQ_vED2%DJ%vly_kDqT*EpDj6zTE;j|1DY>UeQ+6T`JJF&PL1Ew^{)zxrr zp7TgS{-9ed8ynK$`QgV_#T*kIh~Vr4oiRiSqcYR-#x`rt62CJ+{&}S1ky`V!bYR@j zr60?KV$d9N6m#V;m2ZAe{*Qm?so~~Rm^KvaM#? z@zKDwfq$o$(D7-o|IMi!tbNmh(^i6j!-Ql2FAn?%4rNPQfSijuuaj#f^Ct1ksCO>2{7j}mGVBvX}XLpy7l8S{Ui4be-6ivh?Ddf}w zwM1-|2=sb^(hghCkIm(d&1MS~fvtGtB7sRZdu`Tq>X3OhG$QLk&76p(6RLpn$r31xXgJF3&Oo*f0-;rc6y6@H*wx{XO66Wll?6-&^X^Bx2fLT{1=9 z{qVzXV7+nyPuV81h>S_Idze+2qlGeBC=t+*`U}NCQQUX-*=NJLnw_(=TBT2_iVm-$ z7OMNV1wT?eo`)Kh>i@C!9RPBb zRonaCJ2Q8B@4fe#-P!4NcV=g{r}y3yQXriK2!v1rfzXSg7XgETP(+F#0wO3PqNs!- zg2<%z6O$V6A$-pL? z4-9&o2*RepX27o9~Hp)evS4(XV5dv=PdLBok8+;N3}~^vMzeQWEz^{66Z zE`?7CbbOUVELK2B9V|gejWzEohyRFH#p6qo$!8LYBz?2XE%$j89(}Rk(nY-zp-CWd z1&9xF^y|pG#6M-gBDC=J`EJ|3_q7ISN`c58c9cs{dPzzO^F1A^H<2l%afpQ`A!L!H z4WjP$-qWEAT8{frS{4%1BN=oJ3R{vU32>-&i&ZdG$Ob%^#(2XTl(<@C-d3Um_Zag8 zSa-#~XXj?Ju^eWoVNO8GU0 zpkONjWDQb&M%P6^yq13`zpd-N9C3c;CVDcF);p^PEp$trZgkcR8uKvvo=%_BnzSYQ zbhS3C)@yPmkk~ZXexR$5;Y(OxY$h9!5(SH`0H(AX zZbb&=e^GdCd3AWp3-;$uBl^S#Q-w3_%B zEimRLFvZ>GA363`fH6H1?WOTIHc~0HJi}G+(*ilN;UtF+pL@%tB9TWqu&T(@3NwqU zviAv3{f+-i*yb*eQbtj9>8yPjU09G82EsN+uga#b{Zro6SClvu`D#&pM^-`Jvtpd~1i)Ww(1&1~`t*R4S1ggToGkR0aU@}0ZKLUek0hmCKQD&!&%84N@7hElw zd_|1XQ;~DgNAwUnU~yFR2IHUzqKcE?%8XNt8N;QatNANw?Qe>(nOL3eX|f9tYB^Bg z-AtBKV%T`=n_8-|}H3N!<$ATYakO#cg zEGA2|brx>9cM>7uW>4R?lAeqG*q;;TnTw+^5xRZRv~yE32W+ej%`B-S>X_JMc%W9R zN}}m>Na&SkD+LwuA>(iQ5M($B6RXnD;DIjKIT^F$KWyhl2Q-3HmGY`nv|DYTcrfc*;2I#^$6+2jrEjT%#>Nl#n7yBO% z8+tSmY?cm*R}`=2Q38gs#tN9DhFAOOK$F_E0sV%K_}1L{&O2z@DR;m39{nN_t-tyS zfY>wfQbNB*6aqF(wPOV@G|W;qsCGDBL*E@9-Z?m!rJo~A>(*ueco%*{SGv$c^&hkr zWrRY9L*9|z42Wj=W4ZlvADBTniw}v zU)&)ui#rxiN1~D@s!2+$rpYx(Ad3*gA-j5;UOv>n=>VL~+m zlW51(qs1END`J@i+S=iFP^gIhuei1_nEh`3J@WFGUw)aMtclF&*JE6~G(_xEdxuRb zRcG=!nHBPUeb?)1+pt-0o^(*6FKFf95hnUIi6r#iBs0YRBPWmy3OR~~CjmMd9#uF} z%3=W$JP~vOgv{GV$4CsO3cG?0f1_pvs5ZD%R%(sS9&srAwY6{JU1RbOh@n_v07xiX z3IN3UUp`W!g+R^e#nr40$VtELfoUq&-KkJSIjRNeD5vTLkn4CZUxZDMNGRaV&}xjWMMi#(HQR zj;4EM%{lwCBfEiPR@U2U$JlOSCldX%7cK%|-7<_G9xRuy?(RN>R?s)VGatQAo904B zvKJS7PzGdiWJ!tTivj?H-5f(IncSUB5}Z*CQ-kNo1by6|i2jwOZ_bfttX{niV5(Cq zl@xvGLPiXC3dbOdKqcnEwwE8l!@5?X0L{5C1S-fvd=qL;|A{%ULfSwBo)=x>t zIIKJXIC(cfBGUn|UBfuSTSl)b25h+9E1b!79vld23DHWVPNN-GD zGK_jJ$Pk1`>{IqG&T@6a&e`3vXG4J*gW9O3f5vbmIC}!bG()o_%asT(tn$PtX#LYreWFz$Y7WygWZyNFkEG z1BxIE96>|KD-~LVQctjts}!X0fF&tVe~kbrh7@-|9 zi8Py4>l)Y!Tr)0{KM+35`Tp<8`PkcqHv~NUxMsu44nJD0KlI5bQan}wS&)tX69>uZ z|NCKCWXpFzz7UQZ_()sP6bpQVFx@HbRrQ6$CPAoQO&{i4T^3$g==F;YO{gBj^}Eqi zbOlMGj#`&4Z(ICgmw9lKM_?6sCsv7@u^9{mHRTYLunaCmKn>ZpTcVRnMJU`YcUYnO z9cSBQU$#4!%RijmeWh#CltG)w!Z&o)ddydzA3AAy0H*UerqA{)j?T~ttYXVaDHTs+ z)bipIzh6ZEtC6S2<0<+kFDU!FmIU{2c#+hgrz0(Gg zjom-0R&T@Cstb>Nz4l z!3WV6vz2SJ@hmoRCC907Q0Vg?RNse2QbjNb`8p6`+$u=d1p*K-5HW#US?;u%1Z3|? zjx7C3dq>BFUtiQ&jFav3j`+6IHbp6ol9RpoveK;`9kbfogNGjQq&+aOm@jS*r^S@i z$Px&5AD* zQ^PW2vxZ{=?DJTEM}cv~uQ;Y?0GN%>an^xfN3Pd@tI6E)!JR$z>xfb}-CfcWiuywn4ub4Fp@$(NS=|CF&I(c`pkVI$Fi=6aMXn*R?qVW@Q^IJo!2F2*^AR!Et+4ZkHw{roZKd8g7xJI=}khiz}8qd$1-Z!u8*-*|CGO zbu0I*vqFKugJ+-3Iqfv=x#xxhfoQrR)Y!wM66mf9LqAWdPeTlxozDUGLLSuAdFbs7y3XhFdVGJU-~Su?0mvNP3GCc= zkrhIk0bnt&#$ZNcFMxOg14$TWJC-`_U?t}?OceJtSsE9`c>$%$K}l;lM8xabHng1% zVE*p5%iC^jd$x7j@mgaObrhGuCW zwmW;fwI$mU`p%fZp{7g%jnSRp1T!3su-%2uOp%0uBjR!}+)wZ|Lc}5YGOmi^>9}G& z=-1MZXENSI;`<+d=tDvJcdkx>O+}dnYJ)q;38uLke#Dv0Wa#&8!$GdA;*5?0n~9qk zD+s71%>L4Qnmi@ufIw*26r*N5SuI{p&@Uts7(9;00X+75Kt^2d(dEgYC@=-0J+7(u zd%cUz0zIW2E-b@ykf8^X(#v?DB=6$MxFpHr^9?o>dt0yzN#ot|cSZgw7OsM0sohW2wXyFc}i@JlfX)1P&4=#{}s&V@P2%p*-F~R9-Y3AKTe>( z(z*qgTw+eAw-k$K`+QyL^wsI~y$;VDk4c|P)63DXpo1MIP$42CQ1EOHN+{$aKr=WN z7uR4laIFr>=aEfaWbTyqbb$iqC};xkEGA0um-gK-SOO{Of2{ZW7yrFuZ#(jWXZ&DP zJSv8HaAP>40FyEtQGc5Lcar{n$Bqw)%(MrVEdK3pe_M2GJy75=nqU2HN9~kfN%;bs z9lA1$0kPd;;3-9&LY06Bzu;f6WWEo^n2_xoHnyX?9y;$lq)l&J!hAqA1XOI04z>oz zF_r{m7FdQAOqz$y=Cu{RdWgJ_jq^x%L%#nGB|JfV<>L~a?^72sJMW}e$8d!}ZdJcTlf z`+Ift8|0?LdxO;vx&bxYO!U_uCH?e`DxuJ7<;%#fh%Den%ib(39kz&VLVfqd2%-i+ zB_am@`e%Wvj?)_4DyRe5=Kus`y^VRt;F&S<0{<+GlQB>{oEm&6U8Dcq@P+1y#Quqm zy6_xijIA{aSP-`1XgQS}MwfTfe}_?u6X^#Lep5n^(1Vv{GMlp5m0_{N&eQO%X5sQM zS3t_-qy+JGB92Z&YBU_1?hty6?)%e_MsJu|Ap~M7IUNQB6DQSY!?OoDGpmbapxp7= z?|yfZwYO@f)Eq-LXIk|uA(w<;NG{WP&{h48`k==r67WP8C@CVL1W4#kScd1xSnI~> zATBMzU2VvNH=zCojMLa%Kf4v`_(+ea_qlqUHAdySTv3s~WqmJuvOFkcpTse`a)e9!=MrTaZPhOS~ z=rmMv=@g@y{<241C}LI0R69$hfi4r6CI=H6j9Ap9xde%uMr(b(frhHjr_ zZR>&U3N^BkBhmot@Rm1@2+qG+M|<26X~gBsfrsXxk%>uccaSz+BGXJ|lvzo(17#SU zQ=mW18_^{C0sM4eNt|<1sg0@B@{q(~hZ42LB3v5e;G@HlAWA2sd>oCMYtf$g#ka!I{zJum$P#svz9n<`#rt3#70G(5odRwHnw14iqZ?G%!FRMWgK#vN zHN!R+{29-MEf1zVB-v90jomG~c07lcT`lw_dY;Z98#Y6;dO=}2w0@Q<_&;eVFc@rAUa4--kD0Bno6w=OB^1v)i8s8%hp zWDrFT|Jvt+Iqf2|8EA`yP>QZLxu;EWSRGSmygz28*aO*DweVD94y0VF#aFnU8E}Hf z!MGTf-2~`sm;u&(0VLcwwrwkWbX>^7#`q@~T*3<2farh@OLpL;#H$JMDA;kPu`_W3 z3)wK1?DdD#1U-o!(9@G9lrqk;01%vz({ zdwS3>?x`!L}Wsxq-)#K9iZcp|AFJMZ*-eFZVE zem(N!R}@KCcks}mLujG3S~2mI978&5TzF6b-IFkW!K!tkU({=GT%8aRK0&6N{sm7- z#oAa{a;P7oLFTw(XW2N6jl;?6V6{+SNcpfcX_Tv(FmA-5G_5O+FUC3}1hez%Ck^0Y z6Mj6zq<*?o`>HKyDrQv?WxCWAGsLvLF+nLH3(CIxrcT}tU3fg>{qfqc- z3Dxxlfs&&!>A4uma7cMJE7#;OaqU2NR@7)wd2@wWUSCg4tlv*gPRZO(X;J3!*3%NF zLsF8sJT%Y0?zC(uxn+Gj8GZFPuTf>!gnkP!Z#c$W!CbmlLcySP38_;_Ty}^`+zi4# zGQ!9O$U0`zEXI;An_G?;MFwuzpYf;er%~7XbvGE;~f`6r@Io!aRJb5D8%<9K^c5P9Nn7 z$P$qYZkxta3uoMZeyBTp)$PMVEtT1}dF3zBOnU!iST}}{izNw7LSIxzM{ARL z&$|)NAj4>n-RR~?0>H2uGLA7mn=Q8C$a8dfhedtiq>cD* z)FPbe;LD?P+2)DE1)ov5EY5h3fW#%s=#moskAjVf{?0+~&~`o=q#vPA#b1b_yXiUS zrc&$EX>=~Q3Ox=7x!6_;(EWX+%+r?z5H()3iEk@&IYO=kx}0IID)1l$775~#d?jBe z=9?+0St#Js+AzNI3XXt_;{ce+g#D0BOU$XSg6BJMf7kU9>T3P2BI)c7!7biH%ZM`< zS!xwCrDAR}+BWB^EpzM=yTCkQ)w#|$EF2Dab+tHZr{o+futvf4Qv!kA-*F%OB?M1E z$mKfho?_she$K>Am{r8~QpLdl&to-qk^q{i;%X^LfkiEGPQZh=t~!P|fhneFF$hzQ zk{h@^=&FEy!8_AX;fX?$@j3cIm42msu#cxpE*cWprTuebYAzVGQ9A>h0Z9=(cNeo6 zD@OKV#gP{k-C7m$B*5(#2~^PI1Hv~*=$4XPQeY6fJHK~q&yJ%fg+$#Rt*VN9AgIlc@iGQ z7g8#lk+}m8k++knrnS{WSj7%&#uLycLO(^@3Vhy~GY;Sw2xm3RX-ZbR_Jp^i>DdSe zT14OG>F!1=%H7~c$yE4GZKMW!- zhks1&6kJCC`~BHmsgyJAO$ZlkrHe1x5%YBJ+_Oj2bXIQctQ_6p|K_Zq&=rH(AU`La z%+f_61sZCb+qM)~jB9{2ys7O}h!}1LcLf1HHWt`GXusJM=)kr%vLJ9_Fq^XZ3BVj9 z4(x>2n~lkc+Pm-0M4RbLk)(!z`pK2^AnB(_Y#Xdn#O3f+e1n801@xPw$~f8-3eK&Rtd*5A53G4;}ujC`$5Xy1I(0`xz-0t@E2 zVOk{D1{#!uqpwNBVjcaOG$X$knng=I;CI9fr6GaCs(bhX;OMVeU}i&&ZyVOZj8w=J z(7R&VmWWx3Nm)V`FBD?7uB0Lt9>3xUOSHh+1ECo<=o#bu1AL$ZLuh8xdYIFGANeYXp<$&2 zCG??(p?*KLN#w?-ehY9ETc@3&dotN5Tgb(X-NtbS6As24@>u9yWa8we2u~wUhT%)c zop6jb?!?gRuXo|9U}vvp5JtOe`5onfKH-GfFy)<}EjzYP5`~LifmTiBrYaSEz^3L4 zr9z2Gtw`B~0&52-U2sJb5vQ(bEWMd=zhLCU$7AG4QxEV=(JaZ_o6@+J-oE!wo9e2Qw&y~L3!{bS~G9FLN;o#X(NaT=lNRrYCOcJ3*AhU?XeByB5 zQ+?VqU%DYFvGb#sJcc-B(0;R0TL7VDPHmD6hEt)lHL$U*ZmufG8VOJ2r7+^&jSz_)}Wv| z0h}$EP*GU)9VGE?oNbO(YuJX^;r!3>c|`cBFhy4B5Pnb0Flk^-Peo$ zT#t}9$R}LAD~4TLblXMC`k1H<>s_#8$uJl__OdtTK`}rylP5Q$w-dPRY*xs`&FBwI zWdjB1-{VIQqV1Z#zPc1$+)aN{Y9WmwJnwE>vA6>$FE|=*AUMkzQ~^M0SSuE!1_WpO zz^i>9^plGZuO_cMypH%`6R~k;0iJF_h@Z)}{=UmbaBPLI55mxrm++K2R z{T&Cr7Eas&sB1Kk)MHu(2~1si0BCmkF_~v35XM(bqE{~FVT@G7k=sN~Zx~S~h|(EeUb>90M1|{qghyNHs~d z3J{=Iu>#dIeSMFolDn^h>GM?2C1*rcxjv7?F7(tgs!Cj4nG%M9Bf*JX$AmS5v}gkb z{Z1cJ1Gnemg3fCZ12v26K~(!F850VJ1%QoFMO&RErB71 zdc*P#W-v{GIId@#)SAY<0gg0~R9^%810?kXE?py_Vbi0#`uc9l>!Th)N#G8r&8e?=@5)S)6W2J#QV2;5^zk#Mj$a5H_e**@5Bwp;oqpvUi9 zw{Cv@051vWfB7Bl*T$P2x%V?~#P~QnVNp@A200rV*>Bk=%dv(>RQ9QT4 zvgRF$xZQKXJ@YA(xckg?)AcWY_E}%}Ul5=_7c*x%WN}$Xh8B!l;~-w+9mfWtI(vwE z&;82&3%0;$N)0b}04A=S{hM3j5{JOK{Os$e)7yIJ`_M@ddJ{3PQyC2_bE=Mx`J6YIEv?Sl5(8dMl z9>2*P7nPe~^3R`oOnACwSHChf6vyq2?Y-^fU+K?2mP*2|Gj5uJmG7rrv&s5v+p3GF zip+v(m#lTs(r*)n16llfsAc_Ob(vf*%$>F+4r9@{ku|3z%4Jf!`O)1WfmXxy?znSB zZt^9oEkc*nxpm*X_~8<_dq+#l?@##fU^N`=i{Se7d@x|~crSSsBEV;mmomUpK3 z4oR$CT8xrny(*~CiqDR!ESye4s=hReC$e^OwdQ&i&CLEK4UIie_d_1~4KJR9wE-B7 ziNvgc&|>DQDUW6rm~B$am~8+F!ED3yDvOqMAHEd|>SvJW&>I#$cw0@Vqq?uUbJj)T z$ntp(r)BB_sVcc6s*n1|?;&fDhoD5$7$C%OA#ucmtx3~lGzweT9H-)) zNep0Nj|K9GCwiot76iSDgQ4>=7Xv@0Pd@4K{;MWcDzZUB%D2Y&@}KrvPoBlhKwnb- z{W!A`LZAwCjOZ2dWQG2F*NQUQ(^LO|hzIH)8|?y+P4j|mnvCof-9~>hPXOm<@+b2~ z+lp@}w=|daX%bgc*$^AIb&l}t2AKLF6FD^?Zxy3Dpm1>iKPD^p4-DLc14c7ejM(%q z`bDfLfF>4GyRYmeBvj?%)9ajLOif4-LX)>JYz>FOu+c^I3P%O$D@1Ys{xbbrds5>v zLiejkXtrNF`lf$lMxtO!sXrqdov_fh3212)GQJ|C?SS)<2K=`jvvV3%xoR7L|9m94x5qbsK`<7WH(_7P%5W;;{g^oLz(VP#$tRYLgKw3xREOHbB zBj12YwKBzzlC=~mHb<5^4EnBe!5&?)z-@6aS!HckcgEC7IADvdhGI_d)D=r{Kqtu( zSHQ^>pz!l!`eLJ*&nICx5ww^SOGfWq^Q<2o9Kkl^Ao)@g;Byfd5_~``WKwMInmrvFy(e=Ck>QLEm@s!@)Ytdh5qa2vcKd_;{(b_Ih zJHG4I0SU~Qj1yuCH~rtFlt;a5l9XN$nPmu9CVz4z-kNLvw{AlVavx^&IQYR&1XJHP zClad?iFtmZ8HC{|uX?VZLvd7GiiaqTkn(VVZf91L1N4vR$IHZ`?hWNdr7Ha;j56m# zaSx(#3A&Ku3=A6t2EL|ZLAR7nne!T{NefeHN*c@0drxkNnumJC-SArn`xuTLdT2L949W!(x!n)TP@Ad@EQ!Exd- zkXXiI12k#w0MTzu8M&lwU)w`C`h#>4TY9i7EF?ZA%V|`58o{=zh0cyJ!M?_Y#2y$T zM_n@qJ%Pm^n`N%}^wWKr%Wj>5Cfu|)_h`*?S`Ft!wGD4e#S!POyB7izWY$gF&4;Y3 z_DmC*sM(jTbr>pKdrtxMC*xV;^%YhRk&8gPhimh2K@@=lq=$6_3ZGw@Rd^gXrp(z6 zkaUk`>h^IK%7reYH*QI%N8mMF$YzNsdG6ZmDt6c~jA{{Cw#9w+j@Bf!Ho7C9pgBVooJ2 zb=lA=opY#W(wGN^do6}y(csXRy4E%Ck87k7$XRHqLb1C+TUl`b2yF$@T+Fa~j>HTr zJZTZn$LeA|fYu z0R0jDiMD}5htar|7{sZbqChnx8{W7*O-Omk^~>l#SH&?mPp1{QgJ%?lGGUo7Juj<| zxCAB28KU3I>4Hvvk#7&snr{;Ypbg~*X@}JgE(|8gfvS+4tR$2c&>C`x`8rFxXwEHZ zxRad3Rj^n6JqEF%HjvkPW=ypk?bBw{0|s-YY_J&1Rdm5|g#j{v${u8dE*mkgf-!Zh zp~DH=H0Wi(=^E_SXlF4#G)qG&!6a>7@3CFIRk)}_-+ zLSmZ*dI$pA#bMC(QL0E8hNnrLjsw3OI&@8$D3HXnW%{eq`VzXjTz`?+UVqJKh1(r1Beq@es$^8vJr%a}GgFMdN^`8?d zP`bd^;prwiEdxcZ5MVyFrpOQ5E^<24iwKL%_>|^Kvd10ZcqY_pf@q-RGve04h#u+6 z9NQ+~X1H-=8`i;7xXc&EE!7X_WX4KBJoN+ol&c+>2%7?z_y1$IxmwIN~WVSg) zlclF@vYL8o^h5N`CL3sGBdJ@4fIRXgD9kKz3PH>%31qanahXLU09_5f&g78}?v3F) z)V}M~(Gl4K%`1`vf&*6ATn3zwwGb_D1`qe0hG)Zjh@WO_4F)t= zWP=39h3y)9Sz6s$Uklt?V6x|!67!?qC!*)G&pu&uRSEiqN*Vc& zej$wZ>=PRdo4so?nvTUGLEM}cr^E@gJ8Q}t!}{#6Dq@8^;Uh(qDNISq%JRaZ*hrNY zRn+yXzIN%Zq1SGY$5*FPi@)L05%v6v{M0VAj^uT0-qJ~RZac+2gG!vXA;=GI++Me; zyWJ^!*@z~aErVvedAQr@>N8kO6PMGydNal6NF4ZLqDv?2US;9i#m>#w&U~M}oSD@H z(pmIly2?>5CtS)1*u9s@GL!3TKVs}mH`D0r;sYiv*n=nV%|D~>Im3%1 zZ8hc9%)pVhngi7bh_r!7Ov)9cNkc5}LH5HNiEBh%m+sygkU7NOHQUc>r@SE_ze^U0 zg+%)sKXA3Ea`{Euf-;-Pw|2)l1MR1ub7~Ox6GV2Le?}x)Uk!x0>yR%Co8lK}0In_uwxlu$y=852Xr_3TxoXfj&uIH&Xq;sonfKlXF5Mvx%qWd$jXH%pQrMlrQ9H)gVvFv1o|b$`6Y!`*jZn z&+|_z+UN9X1P+N|`pVSH^eu(|nVm$w`d{@@d3yxr?PkhGWh4k)nJ0mMMq^VLVwbrX z#hWt2+TRN;a71vCZ^rip9Ec|YY=oL(Bbs}LNl3*I&*90%?l#2VG&!JFkqo)s$`Z4I8sUr*WPIEgSZSL^@y+XHf&sV| zKrm_*GL9`wKDq}%ze4ZwXp0nm%B97pRye`RuvaDJ2rUwx+HFZMo7}1I;db;*52)lE zkwwDQdab!Nv(i_(oI^Udb|~UBWaDy|VaDuI==^;XF>!9fwP$*|A{X8=6@M~i-_E-4 zTey+~zM`K#KU|CuS4_WjRVEMN!eA(lrXlzOm7IohEw))Y%xh%fPArl-66ZnOaBP9V5n{TQPk9TMNeRrHesN%6 z=w12^7>stcgb+C&#t?TBq zFP}d@^UGYJ>r;~jbQmQrteh%Cr*NEpKy0*>wr2fubmG!vn;sp%#8LG@hON$m_1InD zK}BQvMtIO0EV2(TICjof?`VpDSB{bBFKiYltC4FCGI z*M2Gn1*FLvYdo!}bkd;wJXK{*T4bbh3#;1t6=P#FACApVI;Pl+grPR1eg7%@IuL=c1e9IeI_=au6wR11= znR>lPJy&st&@*u{>MFPVg@_2qz^UWNQPezO#U5Gqj9 zF>(qTzWznt=?uRCkW-md?POwwgTOx;+w|!N;yhb#Z*<}`Xlf@C9XGGnXviDeO*YP8 z_&9LQVe($~Z)rVS>4{<)mMw|I@Y_)>kLqI#<4<&O64C_T8ib{D%m5OW9yxsk;GLlW3cG0wH z8OZ4WIenU$0+OIAzG(ObdaVY9d0U<;L;EWycON=%#1_UzPpx;pe^g5?ljPx+gobty zi{huoRVTNBL`Ta=Uuy&bHR5kJ3|vSCnTL>7?}_ZDtGT*u;7M* zK&G{-L~<^OmGOiItIQjBss#1$IpZ?ndF0>$nz9jm+RbS9M^j-9s zj1b7*ll#$UyTAC&O|uai?51R5PVWROTCo2wNHt}20OcqK4!!;cxeOB^f}{h)}@GpYiQo1oeue!>)2HV<6Gj3I8ibL=hf>>SLB0yMd`KbTm8b8#FB zLmV{*L4#0t^es8Y1aM4&0DaZfwGu|ue~AX~gBRj~2k2kqa=KSux&C^D3Y5n0;3`3{ z+$+4VAeJi<0Vo!mqcBAL@QbLH`%MP)OzD3koWgr?j<}}1eQqo^)emS4q~uQJ zk;CtqtbCZ2CU%41H6CcPBDU}^TO2hN7&kxVcOfS;kMf2z@=rno}zIU*z3z)7ESjVTy zBHRK@Cl5d+WZo#acSqYbY#!IJ`s`asF&GJVs9HAqGfB7|qkG*_xWkemr(vE;tGyCN zwJ}-8w{alohlHU1SpwZz?Ct33s1#i2y>9x3(n}RmlUz9+n8K6hcgXc!93CHlB9TbL zL8;k$BDRr_Hp8 zL1AZb&6PXu5z7cJ{PiLM%sGb&ia7y;kx34Wx8>V?Hyw}TkhTRO8+-zg6+X26U~O?f zbjMF_8LJI|&Ew`n#xMaq)pQ*mjF2!X2GxXgp#cJWb=VicaGU$bNhVnx=MkP4P9&4? z;P=PcNzTDmFG;Q{nTv)Fg~wUHrdoXnO!#&*FBsi%ZV3rFxt$xkg#M_P?}B=xPlUeX z5SkOyO9CA)H!W@Da;@2!CFl|Fo|QCxY^bD1Q#6|UO#3l7D zo5^*DukI%PHBi5)mo7+rLj@quq$&>4T?Ltua)rHod7}f}?%-N|J}bu;l#xQScY;Z; zj;Ad26-b_XAt=>II6@;ZTvR{g0SwPeh@2j~;N6QPp=2ti6xqefL@udRC9(;n$Rbj8 zrjsGbMHNwEvDvPjky7|3LASYCAWv88=XPAxffgpxP|WLrqw(xqZF|%&7n=A&o6{|y zeXEQQO^$p*DHmDsWHX%I<3xhZ?%5d&qse$n8_ox3g=0VzW?LF2>I8hrSTFx4^akyD zv05E`o&EsLr|%@0;iUMD7age4hbo{nJf2*198AW)bltXl&)m7$m)`AO*@e!hXTS*A z%ZYnOr{v#UpTey2pSKu81}J4TrfN@wrrWb1RJx!!FyWTAAHs^kYO(246J3H337hX$ zE{%1iT9FeQ`m%*87UIS9uTc%Wqm3H2X{|oD6Ns}K#*uaBf4v&US@hD652N>J%RY(3 zZ#s1tqlUd}v{%Wq(=wn)nwynVZm&q)Jt;i4sobr;)M>7&ogl_`p4(6`*mT92UQ>_B z4q}=6%N*z>O-kZh_P;5)12#$3gNDQ2IU(*uUQl$&-Pu zui7dXRfu6yap`aKAe6*SKCvw_{kkmH@N`&|-U+o~zQ5U?E9~P!e|wa4_U zxHft5jgyI?YjRnNeMNr`(R4&kuZ^^&>O!AbRt>2?AB%j-%*ee3ZuhKRmf)Dexxml zy)Ljbm;^Yw@`Xc;X636HnXBNw;}07=d+>m)V;luCfLUd&0GS*_Cui$v8!FPz;wObe z>>W_(O(Yftp+p6#y-U3)08LCR8y?6>3KeNlqw`?sbC+1dHG=mLi+DhWl5m{?uH9?n zy1g>RB#A{_7U^bt=EaG~RNpGU(#8vOExny$lf+BOCG_EDcir{4(R;W{iX9o;{&bH^ z4AN)k6J7OtksiP)qFx9;@x&9nA=`ur4u}9FD+7a%0Id%fvTUHQ)lPp;Nk63!iGb=P zCCgEn*GVQNo$`pXkB(roI1e)G(mi$e$wm!7q!}XuqZJm;$xEF`euX(0WpMj5G&)Z2AECP#0l7l z@mt@V5!q1m2qCI}x)o_a#QSP`-MwySuhOfkzKwoZ8i@CI_UA!s@x*V+?MX>blB*ST zWcgjBj{Y0c7U)esvFW??E<^bf2%#$ zY6RUiOZ}6twV#|$Uw|D@JU$!RPZ|u_*+G2a7=Awpr2!WZx1VUp+WGW-bcHNlJZa86 z`K+5$T#&QtyaGvfODKgCge_uDvE6)6aUeH2Pn_00H?IU8d`Y;^HwGg3#ugN;{>YMK z)y>YTk&19Xw6Znz=WwtwQi>c2)W&+36SxCo!-Rtbs((ddUFXMpBZvIkw&&#_Y27$Ku?H_saFPUF7N1!1b4AF~=glYtNV4w-^5j zf#Bbm7wBgmRa&&3Z64Av#FeF$;eNqiVhyShME?QF32f+bmebucaIC zHJn;DbC@HFS2a=&cFGvHX@FXWsQGzA&1Q7zF@-hn8biuT1gja0*mQ}!pV(X9gr7C! zg2Q(th%X20*Y>>!5?&9Q3R3@s0;LwFdz|8XiZT=BiTWYcAOv`zx|3@Q_-$NYP)^%Y z#!g{Q*p9++jgOxcxc8=%R&IuCxuV_Kr|wkM4)ygBs0WB<)g&pVj8QncRHDn6H^yL~ zUtR5Ao0S4xiTE;Ez5j{XNW?8)aL#&ueY*x-9+9fWkUR-VzE}#Q2CxBp9y~rDQc)9ZX&mCL z8dK(9$4K{H2(_`R+OBK6q3xEoJK7Gmy$Dekj-tRLQ%%pz#U7bSO?B+5H(F+xuQ3@a zj=h?GyY(X@?HRu2-s)Ia&;Drh>%LK89(F|dnjRMp+A5sAl)Ct)$;9TjXSiL{Vnk$u z7x7cRZ3Vto?3++soOUccIRhQ;snv5f6aqVMnoX%i)34qBe4jC=Pr#gkjY+9Z;^!-5 z&*}!}#<@yaPio)=xcaAEQ`-rDzuTRJnMOXoQkD#=UAzd_ zv9rTkjDt)}tWZy$xNjp4AP$F2gL%A>6mmm+3D2R9&o&Eme0fK@Pa7D>X+T{~34M~f z%>1fWY!xaCQ;FwPktGf#M29cSJd@25buu{|oj1`ewu=mt7Ih{U^=m*~$~ZWuD%EAw zN^RCl2suGYMEz9in_-b?(wV&6)T`GRd+QD@XeD~|ne49PaGLUxP4XvT-Q9Ubd5)IeYk=!QsHjIv62Pf@kakoWo|% z;PD+EeEe9ITXs%ix0=lixWHpKR&0v?Q8ZOS~ri)zW=jy&G!18 zq=*NQFYhb*3B4H)jRbT|`g@VFnAggjOVDFZWqXIlr;WuP5XCpI^@;r_Z|*444-;=4 zIz)ejT$0ks9-fx#T&fuD3ci75rDSZzuOOP_V#!A!GGL1EBxvMZ27Yuaa7NB-+Xc?x zB0${l$4NZCvKYn!N<-8Bk0=v1%)(KP$4IouXpOmsM-k5_bd1l?*t);*P2bKfO zwdlKN(SOPs2HbqTz|n(LS>vFa(hHr{U*#=xB9uW8oPrE_6p#ViukS&R6A`=Y)4No5I%K?A+s}^@DKwo4zOcCEqA?->zaOP50RE=| zO2aY0xgYo+2&CCEi>^6fIF$x}0>4J%*Db6EN^v8l0~~<=x6q`Sk>WoI934zVP+%kT zFvc$NvyohJ_=W=UpT7FlwM{YLS5QWQ&W=*BL5JvHeegk^DKp>uVlkHWD$rv zhEuM}R4JhE>J?KyPaBdQYD%f($Q&+Za*;@ck$FULc|3z0Cc!9Oe7*>j;3xrQvAJr- zLRJR?q4IEtntpSRE)wuaA;=LJ?GE`Y9ORHpkRz}d(MG$nQ|(qKkfMWrDTb~Arx9hG z#>fC$tlS=Ac(!vGm$4134QBA%*tUP{fr34SKmn`{JXrPFI_ZQ>_$_;xcWA>1MXw>TSTe#k!e4)c$Q8`u6e(M_4I@CiKh3&n{sIvNe zwTgaUld3h9IK-gdA~ZYHx0bGah42&;*DmL(1q&{fLbLk|2nP6hovY8kYKSA}_wL!T z#8UT^#5SAIE;gHm{K(lM1fyW0N%{};kC2Z3fVjN#l|`DM8wA$C!>EmB>B387d;~M6 zab#*S!XPX~Ol1OvYn=juQdR6{`p7G!bR&lE`Ch;XXPWl~|d{ zoCecCzDQ_Y9I$AqwA{$eaSfk*{@yxvwCb`j!(T?F8S{PJt zjSn)wVxvZaTkWs}e2yVoO&ldfxCSQ7T?Rn|Yzuy6NK(ygV3bTg&LP0u<4dZcQqXGG zFwATZ629)hj)Aw|HdTjV(-4rM)94GYtyFRYs*o}()@vW@QD=I5m?4>*?n!f17Hy~6 zq*|F4OR`A3JgIT;GFl|G->q;@>NC1@-2+GvUf~vcRz#(N6&{&;Wm;t) z=(lKLULY}{q@&k&q1#5sdyW#O${m$euVmW1S!xoVpP^&6F9Q|k^{`zdEXwQK9%yVG zLtTYi2q}M~$r#_fX4dFwCUYYQG5Brp?_y}E=ZsgCSPUbJr#+Vti$G;|V+sJ1jwhJZS!MB`_rg zrc(jT4*K;R4o4!OfS+gNNz4>D=wG1&#r}@|_P!iF3oXn2a}>qN2Sc^a1&nMQ#fc~2 zSa^+&SuDE1D1j2673z~ppxmV4r?;C_u?|RwJ3G&a+iMjg z7z?O~>e~0}@IWArROr%yKh}2$1QJLYDZaqs+D8BR9p;7DJo*NI6W>YBT;XTO&;Z#{ z@+^+r17&QOu*x#V@#P&o7;=Pd05o#=-sqqmUv_+IuR<5Dmo)daT5Ua^#str`=m0%UgMMG4?_XR3CWBo0NMxiKWk4a5T6$6f298xt<2}w=5lfR6ZF-K zS6qQYfBh@{{`zlTK4y{wW{c^Woat34e6ngSIF9iHSB#a@S_CW?%t$^LVwne-0Qv2< z58J*NTV**R&;tiT_#(oEYtCI_>M6}iYRm7bS|1&`j0!gx_C(v%LB`X)Qb)O@Ksbb% zpzwD=SPmCo2ZFJ9h#P#?983?YN2xTJ0~~fY6{(YBqWi9|Wk<)%2z=v?JN|XJuh_Clm%-8r3-=@&P#z-I^V`xC!tZ z?jJgk`yly;q$xq{AY?o54)Z}Q!gIyy;JSOg0*AQcsnhG{3~e(CY+~m{v(RULMMNG^ zwqNJd2V^dJY?2>FExKgU2W|!y3rMVr`F0H@;%GvAffyvld3=G%MJ`MJGMU&K-~~3# zS5Y%g%7}$R2-zT8BoO>WZ0Qu#F*7j7#Z$;Q=Cb`ULO5&Z3P5YL=r3B*l5(ai6_M6e+nV_x8#;rF9W z$uVA%F{Xt0r+)o3p`Mz(#r#XZxoUQsYxMbvJwrtG{InR0g}}2O{en*Nb0Vt+ZxPI#Yv8>ZTfcm5y#qCiVIJt;uBl>s@jXKpaz--0xCQ!tqaf1Lq^G3?fi%|^TG z6EgPi;bAlqw4a{oMgK?3`RFSey;*~ov!?xF>Z=njLcfM|V{%z$lO)6@`pdM;z{_!U zv|_CB_XBa|jLpYl{MTjCYnk`*Z{)sw=SKQ%GQEm<$-VWy%97D2bX`cP%V@NkJc^9I z#+G7aJZ<=1pbax}Xwadk0WbO}4Er5R7HTXwt5nI($D9T&+smP>!UV%?M1_6hk!F>% z%k66}H#YkCXHVc_j3pKQ1P_4~VXEHEg~A1;(hE&h-L3fWF9gc{Ls-24xvL7dyi;QR zFefom1)d=qkME4f>nEWZ+4s}R7PUKw!f_l#E(b9B0e?yrLU7MwE z%aP}8-MaOnfq^sn`&0BQzn(rl{y3p_*7Qo#5T&qG^%_GTaVt&JXEh6gt{jNw*c%1G zG1Tp*CLL7QVUiLiA-&Mr18tiZk`XNTHyzYLPX`jxUMOST-gXxt3ip98egtM>zKL&C$2*O2X>e{$^8{^>@cp9~a~aRuKrtZG@qer4zbNG<=ssFc&Gf z^hdJ_A{Ec$rDO~V4_Ad@gfon4lP*Vl=&g5kI!}f|J3qcW8S03M)jGMuAhO93#aB5* z5{*D65r)=F+iMY#o*%76CExX$x=l7iiPgLq9T-Lg#=%sIOQB^b4I^wrz;=q+&9^_lnY^#;EDst7VkJ z2I?9SyVz=4l5)z!lZ|`}rS0l622NTvRRwdvkIO`m1Np3Cs?Zgp=q`qm2R7RL2_wW@ZxGLx9n(`^aB6n?4$o z39WD%W5CLo%7|n)MCnd}xDb#32D6H5(hwWFJk9qEp2382y5`Miju`V5wnyyv}s0{w`thH#!te;ALWPX`C*b$34ltv9^Uo&V^s1@o*GF-&>vSTxz&WnI(` zoh4Ls=6=(uvqT2|{4;EC1nmOO|*^$el@12xmy*9Y1FWMGl+ZKbz6uEMfv z(m(?JMB(q#;~rC0iavGWH4c!E4&JrS8HO5tP;7TSE3n9OGMkuq$qBHe!mkYa%Lj0) z0t`EnX+56?sMi4Zh=9Dx&w%bTHj5kGGq@Ns;0@rlSqZVL0hu1N>BkuSjPb(wnzBI` z_Uw(CI(Q%U&X0RPqOyZ%W2%~D zv)Lz;)@GT8=1FW~zFft;y>DOWAMZa)et?$Hy0A*6j(Sz*utuS6fg}O5^q=cvDp!`q z;`fc!^{}GOFhdsDMYE|IJ}@vhyA~ck#~~UYApUm)cCg`xjZY>FdGjd^?g%uv!Q%?u z?t!8HtS(O<>){9J9}I0F?4^%I=nstHH#zumFV3Wmc#QWrZd1LcK9HX`8TC=EP1^!2+hK%S ztR2G(wP@LstfYI~IVRbLHC9Ag0={{;L2x)HjF-R}VyMcgXTvS)jVm}Mi-6!G!ng*P z$yLG71SE6eN-|!7I&m`s*fM=Mbxpaswy|;@>Tw#nD6Wyu>@qEVgK6xKMjsUFZFerULBaymU9EzEO1L_P>R!3O$v{M@;IQwvK} z84Hho3OieM9xxnmM#jxg!FAEYb-{C;_}K%T&BAS%tcHU){tLfz{DHs5re5Wr2Oj*l z%H+`#=&M#{Yl{`HVDMagv48n;?a`x%f(3NPk55S^e}1Je+VK2&=RLZ5^~;BSiH1jx z`dWRZD%2DERYciWnN_1z%vCV{JTDlW?4c|sfm-O&Os)kYxt1O6WTkwtL^G%@9X~pA zCNd^|7-Bp@^hW5;P!c4#nDKU)avRIsy)+03!es7qC=l4M5%&#bY&w$lc&KxpB?n`H z3er8@J@-LQ)fD#L!c-?9qu_jBBin#qq93G4f>jxp0n20~#Miwb)qDeR(!K*CollH< zYSc4Or@b`lol$>gYc&8C**c3QpAY=J|NTaykx=CU3kQsW;OB@>ssb=!I0K(9{@S2& z4$6UgO#(eWk1-Zhcoo6Ou8_Ia;5Ekg z2kMtM)>v~Xy3SS9_*6x2qa&|rR&|{G8g++14s(@1#Fr}Q1|MG0+&mYHc~NHWdQI~3 zg=H4Ljv_!Qiq$nBJdN&Nhd{wI=Iy=)SC35~=j$^T-$tBdw0YIQYl%y_a4yR``~jRBsBA&X|1U4FaYUE zAOFBbdurrfg~zkOY)xwQ`mDj)Fw0@oB~uekro6>&DQ+?v+6@*%nuwJaaH_oVr7fgA z;bHHuH3w>nFq8~xii7U2fvxK*JL&p2&g10**pCz-dBC1z@QmiwtRx@YwMtQj`_lM| zRmy-$0~C;RF6_W*aM{)lxV2>Q`Sy zzWGOAd#$wglzL<2ZBXQPTH6RF#{4G`ZiOq`#wKYscO<;jXW)#*jd~rt5>6FZ4*^xX zP|x}k?D6qASAOQsn~Na0&c}WSpCO)Zg59*Bq5*Xsd<|!e{K_CfImhq!K>T2nppul} zjD&@k09}eg;YhMr6*+)?%Z4q;R4aoxl?#AbPXIQ+ZwkKxteeZ!duDopaq8*4ViKv8 zw5yICGr_}nSwa*`-@O-eoc5s4813!*_Pq(h0>8ZOI&{Mg=*SURIK__~3!>}Wao4h) zC*U#LcJEoTnE3%Yx>#!OI0E~Ek6~KO@@)NuNm6E2(pI%HTZ6zkr)Yy% zYLGA=b}0(8mk05-k>J89$xk|<-fR>bh5p6U?dln^SWKql+ucsQvY0Z83A0U5<8$!? zHCIKDtp`@?3X>@VS*(>?D43#?SXD|f@!7+kAJyJeJ-4o*o_N!h@oey1=v(J`o%zql zA0v>Mo93*VK4&1>>?Qt1j`kWt@gLvuO4+D4t9_|_CbVf?l~9`Du){k9Sub2@zuiD2+65|&$kudaM5^bXafPPx{7vF!t^49eC-W<)xSQ?c?2h?=KkUgI8X8>n$|9O{}0B9i&vCuNF!#Y0$Za z&4TLE{8J`TTMNULV?8<&E%m*g+al`#i2sypc8A{eAuM!nx|J7TXbq&TZ7Rt z-eGf2ymCDIBm9)-W&c&7c@f4Q%;?v&f%#<0Iz4uOQt+ra~qKuZezthyc?#D8bwoWMK#XR)zt>z3RHpNtuJF}`Vw4o--%I#3ph6D$Dh8zB7JzqELBd4l>V z;Eet4i)Ti?53Sbnp~Cs~vtHQ~#=gBwu^5ykYs*L>{D(M8W~BajG%d>9c(szM~mlfpqsNlL-zlg#hx>WVcr`|9c|j8VcRpysb!NE)LHRg`N$H3{?hFDiheM=7nTq#tICg?vA$W?pF#8o|s3Z z7kJ_xlc3a&#zlV<>EF)f!ft29phCMw4TUy49tleo`zj&O%>C<_F@Z<6;lDMsw7k)@ z{-X1P0-2PTI&wIA(+!IjPPK_F;;K1I7uTW4AP>}9d&ZJnII0>#(~D#a8=7=10Wc1_C0zCa zhYJ}XV0v|0a8$di||=&@bf8eeH!4 znz1U6N7W8P$fe(AL9ta(h0ymMSrw;Kl7 zS$aA9{lnS^U=8=1qF-a1baoqHF?Z4!36w5vcgDpzapcc=xkb(Ena+roj?hK4*+sY%qxQ`N?ww z&2uK_^&-7dY#uXbd32O`l!MiePqC+rrGy#)>COYKZx)P*LmLAM(kP&y{n=(Yw;TYA zkN|(efwPvt4;3Fb`yXKAvHEj3rvMd1$U&6OAYLE#z4rD;gW;VAGmsUgcW-7siYhJq zINywp<;Au{6JM*N8Y4y#^Xn!>V>DsG^5L;?!z76>STC-X*81z|E7CHPNg9+Gbf`;} zo}UqE6oUMstY#fr%N%5<^51SpOH?OsBd?6e4It^~ltPYowW@YOwZ^sJF6M`+!$Coae@|f~=r)EzpfO-IdSZQd@ui#WApHbkljv zmm#H@7vmYXG}3j=VH00Z8G=ooagw?wFV!G%H+W>1w5eRmMzKZ>#Lz5pVQCw>JNw5R zIp<%chlw$pvuKg#=@dchAg%_~>TbjsaQ+xXdY32~q$ zAPFg>$uNz^8~n>$8dEM0wXzdZm}knP@)b-3qpRHX7{*mG9M7#M*u-5noU2x?)?aE+JL`Mp%F!~{ibk28n)J&F?~glxp*Qq?YC|j&IX{+*5ijD~c{HFjtAtX!M5r-dqpY3l zQoH6q1?F8o8_X-SPMAH%Evjj#p(1pHuU3M#njD3+QESc@XMAuo)Y-S_OznD;F&#GA z+VnbO79C&B{)l`yN&qX5UWd^v$AH?x3|7Y20gE3f`x;kJ0D@Cf27gD?m3{^v`-taD z$%W+BliPD74|a`DFYgaL9 z_?ROVQ!+nqYM43B)NC9#11Tl4pt?cVCIe6YR<}~G9}|ZSK)$?GDq?!uc|{)4w0ia3 zD_6ELE7#`k7itYskl%s*%xyW?EWC&3^o%cBBu1ezTd>{IsB3LAg)QxE7m;+^Wj>{) zYg~<4DW0NU0h3%vBqsjO+`=3{>mVlhzkUVu%DjD+8wh(1uo|3g-znlQCl?p- zd1LGS7yX@)qraD4BzBZ83KP|(U&6;x;?YtM@^^MJi}9h4B|a^gCX!d2+(29xjRHr^ z_XYD|BC#+Q^Z(zUnDImnP{P8A1cYWcC_4PGkHK{+2A5^0QD;G?U}HIGmH!Y>g!E^i zSo4p&`kY8m<(xUeAc*$dNtb)TTJtJ_ri+S@p~3o{+={0-8Yt$$OPTnW}%m&%&UP= zfZ*+ISiF2;oe0!5LYp@Sr}_O;eZGcYy~G?K>%+~V_n9O28=W03YN=DK2*eQIU^WT@ zVvF4@`U)~Da9V=8CC;eQJ1(PwQ9o_>wAzrku((4n&}f9p#1sf>HSoA!g0^_SG80w| z7?lQlu~qJFZFKnSr;`jw? z=Q5w-v5f7+S0xB{Q%>H4E`bawsrA?dX@SL!zARYN)|kp$Lyl^>WP=a(0E_A`+}Rdh zI-|=(yOg%EGv+**-I@7shVYfX_@luL$)Cm8o{3ugi>eI9bPlpR?bk1`tE6y-=Vpb$ zF%^Fj43puEwt|GRSOo~?mL-WQH>9tT1Fs&ZLR=rW4Hh0Kg>c1!nC)IM2D<~yQ%(50 zRZfw+sg}~~#00G5=D~!Us3B4>Y7AiUH9|6da$l#cRgobRkW;%Oxk1C8<~EoH9W@CwX^2dSqdGN zgr!(C!^1ax{c2e^g;k|J{VOM9nB9TI~U>C^3?x;9}F-W~34opb07(?Da2^;SBgtyh38ee2dJdJe|q2WcMb&3NcTO!-6?bqOT2My{wb>N;FVD)y%3v{EQl(Gp(C zjPGIs>u8%I3Ii|B(}zO4ujv*pe`g}fw$V0Om{KXO$!2+8y|!&a1UC$u$F|twRmGGh ztZvCU@?TS z{Qh_EJ`kd-#7&pq_?-vYTl)~XryLvb3Ny~$t$?3S;i3U{N`tQCDNh(XD}W;UgEyv0+M(I|DB|6QW#Ujddb$!{R zGa6^4NCg#~O4E|k59$oA3#RiGDp6!g#+mR;=+p;v`EhOq(UV@8Ehv3U-D>ypPbiB+ znFak3DcYd%EvQz4FGJSSZ)xI#(o@8-lfU+QVa`P9R}vB#*`(C9-H@jM=7SqpZ|~}| zwb*(_TUoncY#B4pb!=(t2242)-F4P3z+}KmdEEC5-=dC7V9GB1Ox9u@9%mPL|3Rqm zu!*YCySNwhMUTc{nAlE;rGj8D4MMFCVsk~YI-b7#Sfla7cTV7qzUfc`^tk1Y%4_A- z>KvC;A=z2@$z(?K^2Owo$&W~QE%(|0CZV>)0*2J7^5 zC(k3St(xXQlcqxxhy;!d^im^t`4vk@M(J2WGQK35GVx+GJR2;dy#Xi}tkcI&qa5I{ zj?)lnO}INaC}Jm8-6ywj4xtnM2#cAXpO?AEWCc3CxV^_Ec{$G`L}Hk~6i7)PFad!b z=AaP)vrHg;LsM2tZj(qvrBxuM_md!|vTDQFml3)^^Y*K|__=+TLUNvzJLFB2O1VFq zg@ucn*0CWR8=AUf)|fNjrVgqS8Hb#hU4+d2qj7iKc0-2<}_fPKKHa4Uf6MAN|-x3%xtuHfV`Q+>uE6n6^3`3hWP|sBjdd#<=Bg(1x*f# z6(lV1V}l6msbGCFmxc{`!|+~55`=$+!vMOl6Gq!qG8$NLnQBl#u1V4|g;1=JN_fBR z0jY*LHD+cbU1Cs>c|Cy_!uAJ`UDtGpmc2Ux<=WtNhanbUd#2z)%q$jZmEfii z_Vy?=asa*+wQ?TF!b=Og-no{6ZRLOZ&0~3?Mk7ex`vIcnw=c`&*wEo#@`=RkR6^)b zqvcB9>?%1(9U=OZ(BYZIh7M~4hYr>!zQpo*E7HAsXs*-&aU1UvW#O*D2`mTwq4ETC zMRN?w*mAyy@dx}l?9}V~+UJC(^!Zv`$p*<8C+|QzIy?WKG&hRcMGa_DqIuPPN1JW# z%6yMLtZ$_q7G`g;W)7?~(&(tb!l~U2+mAmu0~DnAGakBiR}iHOxmW(Q8DGT=7 zQ&4}>(^L8}m$yOE+n2Y64;&vyc3!hDhQ_2Iaf?tI)vUy~Gp8?FMy@zEhQAV0+i~!mO-A?|ixEd%`O}e=-Lzh@ZUgSGT2?_8IOYypbcL_bJdaup7J|$ZGZY z{WK~yUe<1q)y{_Z(-$~#xVR7ISBk8VdBtx1c`atVz>pJbD7X%TOgOAtg10jQw?x#9 zmiWeJ1x6#49plyf^{+pi$k)14jg(0*ZcNqac*@ev7;y;=cKnwf>Jnu4ZVjR4ByGoz zUvV&-6`bDjui#(Hl-?R6RH^wLFZ>II3i-?b`Sv|=zDg@fJ@D=qJC3%m=yUSF!nSLd z+ssmM@?boLp}iex&gkT+QJ$|~f-$r#7*97~V|%`@+rVA0va`Xm#q1aQi96VY6|y;o zTRi2Yq_4ov^i*Vy4ceY~)19fzD{W)c<7iXw?^s^3KK-)^&ZDh*qpVng$0jJrJ?GbqF zqkF7=``EEJM%OKJi}iYuYsscWcH?vl?NK=9uG`hd+?__z_8%|{pENjntv36FHlt^( z)u0JQ;9J*%zj+)Y9W}}eAUW2f&9XrG^ii|fX}ms-X9S$4zIf*zP#cj^_8SJ{aGFuy znBIfgpd&qOm2PXXhHI&I3V5x7E+kYa4GM+ZWE@+Mq!RyFC9M(BTBTgT{IT0Is|8-E zxOFlEnZ&6vFMP%EvAphU_Qp|X8~Cwu&_m0iw7QphcyQqqa~9gvAvV`Q*E^~w^g64Z z<0m1fT+P4tvuh`*bPA}K2xYwjn%H8x_v+u@`n-Jo>v^G4#ZUd9lJC{X-Ag{C^cGnb zw5G*qq0%=G9&jp+jPQVo9mOwCsh)s<5;5lsIMu+e?@@Tdm}<*4c(E!U9*3L`lS^FR zi$%f!W-nu6{hysfT1Pqxo~7r{0-(KJx;!dO+sGD0Ptl@ z48+0?4NzRgMrBx{=NxwBX!#ujM#L6b7_z;*NFr4rHpPO;q$Pt_>aSDS%KGbAGp?!2~#mp^!U1O;0mLu(eRlxKE~V|1x2 z_e6D(y;q{flRv9*i(x5~qEU%qV<}OP_8i#}62R{2<}LeEgYsabl}^d6AZ0evJXj3g z;fIh1<7|ZM7@1+8s}C|_+)Nv_i1mM5J8jsDII=iQ*wH-Zcs07ci}^ecLrLswKE$l< z%V5KMukYcV_w$LUIN&j#9{!k~C;oWyb>j1ql-QeImce-m_dE?|I<2c!40xSvcs(7m z0pBvN#%^N2ec>rZ`)DA-bCoH^+3}sKP_@qC5)rqh(~srz%(0v@25X^oR4goKEEINU&hYWi4MHZZ#3K%XX$!!4v zO14na4|sXyAPT}>T;0l%oFY*`E+P?JxPlo66t0Z~D1e<+`7{s$0mhM!dAl)gX$jIv zS#x4uhuDz{3A9?OIbo%cB?sCYA|8zAz(yca0Qz}IYLz1xIaE^y8HlaXR!St~mF6HX z^L``VeyU`PSfuwiZP{NW=fBvE+z^myzeuIHBAexVb*gAr6D|(YGpl3vOhOe>MA~gK z($et@yR&z+&21k$0XCX!Z@GNO<^TjYpru{7DT=n1_)ta@JSd;#6rHT0l)UOLg_9Nt zMG~RfX(nn1K4X!_C{3$eG`L3p62Or&xk@#wanG1rFVrY`@qMk9Y{nFaVwQtGA7Fte zC2-e_Y=MOXeSs}!XRx=p-y?FedS_>IK;ipfr%HQ~xU*ZO*Nu%6a#2G;Dx*rT4HKo= zcm4iElpoQ%{xkX=V>Y4tp%GOoXMbCs7a)(?5)my zGpGQ?ER-5HKgO#1?2BfTUhMaVyC);F1^NRXXbutp5PULvbm^mE(hR6Y`CZrUOQ10T zOUlEPMhOj=Ax(t7G=unSv2;O!_;0C}mw)b8)&>=Tn$05uoCJE=yA7X5j4T+UU!$Kfb-(LY>-1w{q+C?j zDU*orYmHug*Lc_+FB*5pm7rYB_FDkL?W@}(2W}d}TlK4N=(qHnYHbmjPQF>=ro@mr z_#kr-$wNZi%gc@;XrOmr75F0n5f zZxrjI3Ix+fbiyI=$78jEP|^%zaUtflIA-dYK&pn9;OUwpdvKod-b55l;nJQ`tFFxD zaGudRE-X;0giSqhXtNYj>aZ#SZ5FcdcSk;7`n}gq!rm+3ypg8%F#5b~IWFbUnPeG_ zM?N6s80v`T)LM%L+)U}RKs}~`a^MEma#a9e@Q-umRY)&$qIpJ&lMK0GzcmctVDzv|oFNVo&xznJ{x>yWSE`yGhf)?{$>LkS0 zmIXbOL*6wzY7!ku@RSa7$Y5167aOu+~8ADos^Oh^}{P{18LGBirN!Bb< z&=5LFug7d9@FNTWYvPA9(5z?iUsF0|N|>@)BRBvp;3}`Pr=Wp=Sp)5e!FUv0PfX?ROK0?b z#JUliy5cPQV<&nWeZttDFDj#}=VFv&+R}icM-iW$qqHhvac+yU^cD`HaSZS3BMK8- zT0dtmR?2;W$Igu-(?vvvmeBk!HNT(5`uete_uIL3n zzuOO#6>;?O&vxV>iezcuGPm5l98eXjJgsj~V%J$NXopLgVJg@bv2?Qc*Vtz{HA_eTVk0gQwCixG3&k#E&Rl<~BKCi%r8Nq@>b`e6zH7(w_=6n*p1!LObS z33Yl&%S(v50k+<>#Px2FJ|Qty+Si-FnF6w436lToxzVhOgfokUrv8 z=Kq(}=>x2G*Fb1XpZ%k|yY$}B)G2b{=COkA>#m58G@vhbQ^B&`rF+CL-2yd92jTs6ZEy8zDHxDj`Rm}l^_Z^Y!k zN?F&~ycM4Pf>%bPn$wqcj&xiVg-ZryU6vYs|ARND%&o`nyZ05r<*#11+C%9LBFBO& zp8jr~bKKOa-X_n~=@ZfVe11>?2T4I%?fIqxE|UQJ;?hx?jHf=+PLEeM9^1efB4_N=Nz7FBb6SVr92q0_$U2 zo26=_PzV*aq{>Z12A&UYC8QMPR>A_Pu%Qog=6*50^$(PR5S+E8*v{41Q5XtY)Ze&g zvo=@{#JXIe;PhGBw@oGnz6SIH%QU*Q3khU$tz6+W=(5l}7T2^XWJ-}#rI7MJ=>lPw z1SD=wNZcYuYI@b?hc`l~6I}S{Ru6NWdmjT}j}g6(0kB6Ucl*ozvo%^32qO38Zqx5Y zvghdWk3RaH!%@iHf_rYg_wLZf=k`0Vh}eA<~U|kX~aXE~kJy-IOtrva%=3P;N&M0nw^uw=qJ;=tp#$`B5{#fePrZfPL zE~kMdK^xLpq$_w`M0lR*z>-KqyffxDynSR)o!8g0 zz-AsuTLCwZO??gs0y!nqeDMz8atT^4TFJaPi%?Ur5|ppeiM@VRq(7N+NgHW}qp-loGoR>}e5cRJ_RMOD~GmcKA#0 z5O=n-q?4sJEa}8#RdD^trAn4`(vC?dzm<@Y(~(ZFIbSFj%{67wn<%&v?$$1X;*Z6j zDoGu#nJaY9a#F`_+c<3$9WHwwn!^z{z%WpOvRWu_I9xA=Q3^ul0RfPpU)Yd{*9!v) zgA-j*fVIqM8FLM@7=xqDXd|%+q4{#+ zXqIIs&X`$i>Bw4QY=2G02G0r$U)5Q34o;!0So`Fsnnwu<( z3M{X{{=o?TVYsMhY)cvw5HbzmA26+tYYzxvW}u?78)AuVy?_L9fGVz5%2i(_hZ)ws zBlEk&$?k6EE%Y}z1KXFNB2Z!szSZyOXi)`Ji7c~xC=MOkeYBgu?41cH*#>BS2pDNc zJ30W8(6si3@r7;1xDW0Uht=^c6nlk}%aCPe$4sK=Q~LaxfY$H-wNKIL*EVaL{M!fN zKOAxr0l2DoxdwjeZ0o77 zf{U^|*#Um`Tnt%_Cc##eY0O;&n!?bsO$ZAT1=D1j#}mQc(OIwkhj03X;5{+L;V%5qT#oeWH7#RRS+7g6lMmDe8d|~v?Q|v6yXd4t~vh%Fj zwU{{*F=NUp4OMi7aw=mR?~Q$Q%gHbYw*Zm^yx$reL*;Jr;T7X>2D6lG{nD@e$s#!1 zORpZ1G2s7dxSKnS=XHMi>GK(TOOvc9ZA>r^Mh@KCOF%myexg@qb2=0tt!*`CI<=jC zfnHBFroTTy)|{)Q3_4+5EFD_nwZd>SFLui-z1Lh^D}a=y@$wtS zf9LFLXN&1hAZUcxDH61!ks88Z%qb{*{&EPH1>N~FMd zgekS+Fy}iGn9Zsd`q?YqkyMA32>^vL+CtXaP(h-wqqMHg zQ~C^N#8}GiUUg8eCnHGLkpIy_{_H2akTxzcNt#7++4fAvqf^DYnsGwx%L909OGTAY zd9cMQC0681dx@t@H`uBuibvPdz>t8+IssY@RiAD4sU z0l?o2W-kXimYxcEL7#IeU+!-t2@iD}`~gM&fJQndB(VSEgv0>h3zM3(rP(dYi(F02 zBkeqeMW51J#Pg2|?+Y2tjC4}|+2#BjZ)0@nvFIgl4De0l8Y;d*<_kxi%qEL@M4 zcM60ujig!zlWZ`<23#?p0)php#fqLrsa9Y~ zG_ln_&P<2|O_p@IXc;fVB*z`?XU42@&1J@|f{(D7JN z-yuvlF!*UoLwGEGJ#zFgAus(M87x~Cfxi$GmgRNNqsQ~imG=}xmc*EGvCgQJV`j*FhH2N+shz3KRDAliHf$$!V(n%I2N#uW`BtybWfyJF4iz|w)K-r3gM zG6<$m0gW5i+uZyHw}l-uDW`(|Hs^5qOF>-s!3TCI*qNV-P-EFM_sDr4Ltg~BI+VKQ z#CRyZ$K7>=fs7b!>*!#P;Q{^Q1(`u$bJ>M7EkLwO!Bcyx1=Y3H0#CiN^gFzdK8z7T zZRPrpq+5lP%zz@?YL$~zQs=RWW!1FA?*1vvc^zXmY|InePX5uZ)<&8r1+S%O*M$6p zz5Tqi?M|6fDP!E2$rvGbF+%Qg8<<-PJEQ&VY(hoPa1pCcg*Pa05C^`i1eQ7AuqU{^ z*eAF>01rZE0GBneBN3kr{NM1VUoHIWN(<&3YI7pnrB8Kw1v&%e&Bsv>a|n%rN=Hnq zXxL7m&9gIa899KnViim=Fn=v7Tpo2yRqZ&Cyl2{ko6~Q{baf74QfTv*p68qrD2Y`n z%%;F)FhkO@Z(A7E1C^L=qLd0~&+xr^b*u~8Gb*5*ge);=&!_{cc*YKOkE*zPlMfbV z^6OS^oz>9++|GypdBa4O+ljbgI3yI)z;`r6BsO+J{>o2@L)-SgG?S`3EP<7Z)2%+VMsg+ zFw{8_W_;FgftgKn;85U{%B3TF$<^FuOTf;fLxOQRIX#W{DgP?ibyX8a6lY$Fp*75v zKQ(mE3JHzk;G8kKF8hR8K8cC)O&_z4lEr9OZLPXn0}Ih5CI1izB@*0uO_{S8OVSQ# z<9-vFo60T9qmP2?&a0!{(%Lnfqp@}Kt7xy%y>JC{Est(kwq|v+Jg{cXyz2iOWMZQQ zXx$dfS;R1k{B%`k|LhKA^MICfy;~v3`guliTaa)Eax#?s%V0w?oBgnwSJT^Fm{zTcFobHFa76T1Uf{s-;I}2u;!nSIpOZYMQZo z77hh-_Rh2bpV`TL6v8S+{ch-@eI0^%KZ3?Yi_|O)K+}BRDNXaLIL_lk%1Fvild{71 zI$&P?vDUo@cSOO}@j@3}eo3sGkRJQv&3>6n?78}#owoB|I^xACkpI^AF1@&YMY=yJ`fXAjnhU9$Qc-n{Vez;sjuX%Mg&;9N$WkLtgEt&fJI zfyZEhmb{mxGPFUWGo5<~n3l$lP~n?TVlBC0J^u)e{!{csQTr3^;G^qk87u7A%$n^aU0o2#0rF)6HKF^;4?Cxw$Hr6JYFxtDo3uKzk0r8)dBB zPNO?ON;pR@j~cvosjONGsfw+)q$6ezMguGu4Hyn}anGH{R!p85vun+nv^fqvb*{tq z06T!HU^}*ziN9`kXWCMBJ{&v+PN><)33M-DjdK?iR@s(w`u}h{|1|zsL;&KOf&F1a?d%yfX4kB_|5R@{vC*Y)$*fCn zM1z^-XFXwwajrMW7rrO@v~_~E(Zk<9wOn;te=#%ooXQB zaT`&_0ZDy643V4<%Wuj{eX-n?8tWW@y27AbklP4J;v$8Mh}@7J8x4mw_Hh1ydlCb) z4bV(3YmouF2`Dz_z5DJLMZ}||3W?OFRku0_vDg`vO639xbR;K^kq6tWDZN(YN(B_k zSBr9Aq6TE7tHN%`roSDREQh&dG2oJ+bw$3eabiYjl_q<<-tQ}XLj347f+=WdDmQ)1#Z=v#U8OyR6S?$l7ZFf>BwaHmP_VAo_9TC=jsOI*MSMLhKR#FEmpoPt-Ow>D#r9-do~F?w&O6w!~=_3cu|nmEN8+>vWl1y#{@ctxF>!0II)b?x%izvqFRK|v^! z@IQCd&YR<|shPX*Ypsn5dz&d8NPG%_P1u_vic3QQ%!9#?gi&QAHu0Etp zFf2&p@uI~l&~qqv_&=49@xjeGQ#Cs`_APG)qbi}0#kc`{28p9**k%V11k1 z4;ylab5VVV(g(*7?oL_V=(NCSqMEXG#_fcu^eIw~ky;#1d8^!N(a&tNLMOC?stqx} z>w4onwCI%{W;(1p_&kU;a-_hcPscXjnnzeC#AMRPS&#hvQ0i&C>T;02`RXpjU#E9NhBYI-&F^Ro^_5ALiuB;w)*nxczwzzRK9- zBR1_&?@t^o7Wd@os26uEJk3gU1v5X#E-`xoS(x93aS>W!1_Qg~K%T$grLoAv6*+P_ zFoTgtXI<3IS1LvR&WJ7QfT0?I8ga9t?c_Rgv2^LP8NQt6Cm)U%J}RR001E-@*Fv9; z^?P*&^BLU0tnBYW$e>^O0C^|O!eZ42EJ}sdS<=vep8z1%Tz0D%o0FUgOM&nz1RMn? zhpaq7<4C7sPcyDhq);n!3(6FcfL7?`ifWT#OfB?@eO*eqS|kNnRlwZ(-~T#Vj*S-; z4<#q}SY{;zMuWIz5)&WV=^TD8_LNb&0RyqbjrlxaCHMc8or485mt^B3#!7mx`RuMA zWnPfhYTNYnO5!c~s^>GX-Ho4oxo!fx!wZMM50-B_7r+GFLYM&?l>Fr{&!Z#EisOaCQ*bYD zC_*ymo_lRU7{~&;y@+=7>ieA0V$O8+$nM9c*6s;1KZBl!jpOk(4$}F+D9% zDfsE>2|J(fXqnRio1cW)*)3JFtJ`@hyQS4&SD}l$l>pMUsNB^h@wqk%$Q-lGJbvNQ z*)9=iU%2Kin{9W_Tsp4?QaNGG?4=7Qn$b1S(~;E+TrTIdrESK>#j{=dn)!?61MPjb zjRPE#?k_W2F?OT@fPxz}!}G;+VKp4+ z$NW4z5|3+aU0+Q&9oP*^pa*;zXI<<-p{g!(v2h`xA2OBO-%R8LrA{}OJ2FRrKE<$T zEh;hOMFm3Xn_R@BZJ9A{*~2-ZNGebXg*1;R!21Fu)pA%$$D<`;D=n@T%N|xZ9PYd~i8oi8|P#Jl4)mY`j+fn@44%Eeb*}P`$vU;IH&Wm2Qs}&)*If}^7#2C5To zXEntv)F0*1DM@&Dg3Jt<$@(!0Gq1LwE15NYf(5}H5W|-IWISra?WrIj``4V2P^M>= z=8-hd+?BlIz>WyETxj$5OXAA;_wRH=sU>N=`ngq)q!(qA(z>OfmjPm;FqqM9@L`e0 z2FwWor7cD2KQvi0P-XJFw8K(7hpSv*_q6KJAzS9 z?a!7cG|Q20NJU%Den*fHpwF=sGg`qMaltTJoeN*cDvw%lSzcuq);86PVRbPfb<260 zdXKKIj^`H&FgC9p5jIbnnZM=sWSO6~ z9lq{R5-K)ceCPh%Ed-M{%QZ0|qmt<^o7!KCHU_Nmpr%0+Oa6%U*%ivPN88R(rbosQ z;VRzS0PU#=YH<4WxbnqSSP%5eIa!S$h$F+^(@JKG`{hHz-&t7tUGyL`PMkx@0uy_> zv-9X=n|6*Q1Cr-jYV zL4lDrEjSZBQ;u2^00t_0tpoMI*qDWvmq6kVpRHJhacxTtaZbFA*JW)d`|Cy8($qL3kD{`8zXQ-gEbgCzmD%1zHfLZ z*^pNaC>DP3BYD;L6YA2R(e9!~Zy28>8U;C{X;-%v8RYQ!Re0!W{Tk`Z;xM40(Ln)vs)feGn|3!)ATr56B7=kVA{`&a^( zuhKp~g*?ZlO<*yw%8)+&pk5K?~8RGJj}DZvvZQMXJ$ZX5C`Ut z(RVl}&1n=HsK!~nJMuEEIuiuOOHB(1vzA=L)K!-Q$+=_y_Q)CQDtk7L$)IgEIZ>5a zoc1zf$g%$A3q5idEc;y>jI5pm>%o;ZbC)sSVg7A)0Id$uFy1Z@p{6DZjYJJy(8VBf`g!2M%$S z+X+?aFKYBGv!esuoTt_5Ha{U1IwKS%{ArV|Eg}!gL#@t^4t|@kDw`0RBtQZJ>~P2& zPsei$1hc-|iRjbM@x&}J#}k$NqcF##&+f{V?jmk1J#KM`MWhTy1p#WH(A_ol^Ji8y zxaKTE+um35mmS|wN882KOAf3ZhOgeBkr0)u6D zIK^s)(w9@u;-KxaZSh5}KmnDdG9>s047v=lH1-*Q#0>En@HK$N;NSMwyuV3Sr9<+J zJeXqs16}#+?dYx|^ZWdsak_BSlr@E$9%#AYfoa6Vd#-O|p2bC42(4odRQM4ifewMC z*ovFTX**3^WvyR0&r{`Du(fO!@_Kc0_tqwL^S0g0hp^h7*Upzvyc4Wx z`*Z|Gf+*s?a?F@xXSHz!*5Bpi7B^Ibc`-q*i(N-kj$r>QjOFU??so}6>A&4rugHN; zbTXfGFgu32gMJy_k-;ovvGfHB78yYS@SB-v4s#uG%PBAZEJb$ly~8{8aCu6zFTV2L z2f{6I-(Yl%Z2$mmq^~(y;i$oO)UvWVAO4?1Tb970kbNBgpoMGc7x0`0~ zn~imW=O37DJ?yb(;;LFzEd59)tOxUtPl3`!a&(=B$E3KPK^ey(~1>c}=VFSDX zP;BgF*W{wq^USYj3e{@<1SJ2<_TS&{7s3o%^vQqk|9g|n<5kDh^|c*yUVHVKJ5y4# zD1PG;&;RiFpi7BCE=&tKBRkgAo-!s(X=r81S-V%L_Lv|QgmQ}8aXKF8;R{DC?FR?2 zuLXbFUs&OND;3uoEt90c&*I%IU~Eu;j6xkYeEKlL!}uEpSqWTuIXXmoA6pev*J^}l zvrOioQgJ?h59ArwI3im^YLKak*16G z0EOzg(Pttu+uEZL{X$8LoOm+#-3)5`DzW>@U2y>|Bcod{za+{dRhPbeu%50KyS6{J zQoZOqTdT3aL)%yPARj3Uu6E0-mo#3>OnW#zh~8Ol)SU5r%;~f-&PGCh^=EC0G!5nc&KKjs>CXkHd z*KgQ$X~_?Y%P=C+*JOcCS4LYm9O0>NX9J8sS@Ip`n7IJsPk2K5d$10peNY{Wmx1AI z7c0YYv!*N*12j;>*r;SXlth*KrgtbAqS z8Cs|zMU-xiL8jCWvS$~RGQ{T6C0lZ6c?LD6&r9Rd(?bK1QHC=ij{>cb56Xm^6q>|U zSxn4e=b1U31$G9>`1KR4+#|O-t`e>BHHt$Qa1x6(am(Y%QF~aUoG$GddVK&0{ce$Y zC--B&b(;mN;~ zEhQtmrh|F6K+GF-U0~{CMAs!}Ntip?>w;6n+sidM*CjH8SS@FnB4C&7^I{pb^#Uk*oamDRb5HJN@amro_3F)+0I6ZYOJ^8x12ri;;KoJUy6o{B z!2=nk&loXbJo#hd=0TD43=QMKGEtSGH9SUw<+m}wUXeS&^FCM!lLII5jw^UOV2=L& zgRpO|WW*NY?hZV+{*+k=TN&nIVE4yZ)^gcszFZ~jo)gYT4{DR!XZA>ar7OEofS_^;#3wvDeQ$Fn2H^ zaKw!usJc7yCbkB7fP90sqym~i+|VnQqQ=r^(;y?Mtmx^>04qK`62XhK%k2wZ*aL3r zTvEaB5oD=^oT}8k425@CF3f6n7bR5<7NO2ac_Wv1N*w9)dSN{+HFjx>S+o{yXI8=x z{4mtC{dvI|Cok=wS5!$i(6#x-88>cn;W?e!oewTX@5pkOulEV$G_UQU!c&2@7i?M= z5Ng!I#-%IITiozw-ZAjrilN$0edB!8zzhRt-WW&RlfR;^7TAi{9 zF9RLAUS|C{n|g2Fap_CV*wU>Z9zw55mOhz=1drEx{}#~Wyky(f^-UsJ0@bi=-NyCd z9eL5Y7#dH&_Y<%sKxDvhZ^dtxBML64x#SJ>8(0K>#1(0}-T>+EyTk zv-FpPAck#ST}~W8?mz%NR-U7;Vji%$=j0?7y%=wFMez+D_5VQe4bVx@Aw7`EZ0@wq zX~B}!EtAeeFPNE@OwQmHhuWi3gF#HlYUF%fvrkwXj(7!um<~;#lrlew5Xes$)XF*~ ztXHQU0!oZ~zNn<-+VE#98`NWOy=B>P<~W;SpO4soML z&o+13Sq+C%MMtW`PHiB-BJa6NqVDhMc?JEcler_0u87pH+<=v3qpRjI zpLFS5RAVe40ZnXDWH3qix~2wUjlbC?XpZQa+1xp-XZH8c17CWuC|LCBSX4V$zEhJJ z4U!J90=+W|BiMkKfZ|9SOhgtRb-#T1?m*lUXi&k{VwFF*fvJHrh{uFdip=!bwSh)L zH^|hmMIohy2LttTS!bjo*6E%-*9SCG&>;feUMgvf8`2pA3uxTW(n#@x;fSQou*U+A zUE>LkS)jtT29yz5H3uBASOf#`M}3(~3i@;G(zL#x!EazdbHv_eX#PqZ?CyRClnlRq zt_xln!2bS*r#q_0PoDyt>8DH?&D>X8J0Y)b(ByiNCS^}FN;;^97;{zP+WV#u6Ye~k zWWLYEIWT>NAL$QNOkbCfV&zo1oEtkBq?`&`FVJL40zWeUgSvvrQ9Eq{yP$l&z4fwf z8yl_uO_y)43c)aV8GGDU#%NwHiiv1(OGC&<}46B3DBAd-kk=47|XGrmh`k!Fi_M)R!*K?7*2)-1r; z>rp532)QJelhXXPdx|tIL$FuNEh7k?kVV=^eqwC8rAAcMaiif7)Bd87gLk3w?t^@`vUTpS|Czq4S`IkMq zE+tdQL6B7GrXeiR;`qw@wj5@(4vj9^B2tj~aZXLB32Mnt+HYDn(sS!CB>SU<4B(h2 zK}oF$Bf(x)^%*N=_rlq6s}#1f(h&nA16x5>Mm*S32>e-PETpm@4c79&s|FwjCN77( zp3^}$Lvu>PpO+g2wi>%ot`H*3$544)!s_~Jf!C*4mgFhSnpU-0i59f$-4=e1XRcx1 z3siTe)Dcy(h&1`;osXW+hsoEC4{a;4v4pjy?^~ z<;FPG%?;>IS#a%AkJYtcMNrweVu@GnU2-0}uwE028k!8TD3U$Gy#Ccpfm$t?^jGAi z*@LQ(6Gqf4gNBYVV#+|5689_yOS}#iwc@Z@cviR*fj=+|(qE|#IfRh|BEY>q&dl>* z(flk?TYB%S?(PFcnagK}Vu`AaF`I_F{|Acvg|D0u8?mLaKvuXF5bss_*E^UFa{0*< zWVI}N>6&^zO_Ry{=MK8qSOlybo6jJm4N?VBHZH%I1)~QbY0#k~#D#x)^V!pw+YG&@{PQ zo`IV1Vf4$f_%{W7fROe5quPa}Zf zTTbEZRo_i2?6rb=a)&aUVCQYi21skCqd!O?9)1(aWzyz`J@?H4C@^o<54P49Jr~_F z9a#7?k8Eo)1+TbyoUm~1t}qM^Z1}yh84p=+ZEHof*%_5tfJmq$LcyTbKDrqX;3q@=E^9#&Nvoy(MMOPvZ>ePm=@2S+#KVZatc7BeU9rIVeYLn2)KQNe$;KON{U z!e7}?4vDsW9=TySm1nx?&Ft%S^fRjs#J4R+=M1^7L0xrI)LkV1b8MUGJ_xV2; zSo4oBXB_|^ba=*^{S!VzFh+(WQnMBHrH*)1hOY|zR(Qq6=!?uoS; zf^`v}JSc4o8pW&}4$Qx6Z-@u1kd7?}rlA*)ub?Jf9LG4(zH*6&<5|37Z!)RoOSfq!T@ zCx>H7LotT|G-=B;SYgs80{^t~(LEs?GcXLs2pxjls3x16V=b!!Y&o}m?%`N0(z3dT z-?^|AIiI*FaX2oJ$(n6Q#Dgh{2!GNeX&g)gt}Wi@5*L4$KDK~6^C$U6B*gz|gIwWJ zrC+M1f=Ky!SgaR;KDBgvJPw3SRVQ&lQ}A1|ep8p32EDcuTwA`w5z~t;B7HokF8)cx zH%db?7%(kJ7PYMA;`@3~>Ep^^iVX)k&3GMr}_l zOQl5cFiJdUr=@KRoS;;lI;k*U2zH|^yF`TfgwTt#j&8HbJae$D@Z>QEx!iRQ!5WWx zl;PV()Vj)t65!1SpgTzARG{tPCxA#I~IT`^T(W1marNsddd=qWCRNB9j=G&JcmkJlcyPu zIU$9EN};WIds9Z27}rM3bQANZN3;zVeu8WE{5-GJXbNFaQEAGE#DZe*#NeBLVm^1~ zLxtLcFH%E7F)@dF_0@fcPRhoov_ z=FN3q0 zpSPfauTt~uGZwF0>Az~-@W|E3oDzakF#*(QcmOgKW2|)(M7}J!zp@%5ShS- zN{AB%GdNswdNyEAXiyXBO;vaC;9Oal$BpHwImV81B<~?=E~|)p!fK*Qt}je&C#Vwd zw8DO6M>ORSXyDW&BJHZ;Pf4H+5>;MZfNn9Uz3p4TL~kLO=y@VgsC58ia4#)20;3?P z9l%5{XzntDEU8}}h?=F;63~{-QEx+ycC~cQ!#4zgyU1(3;?7Auo7c>*=c#o<_lm8% z)8^_Ec}fFMnngfZM@JyVB2yp6^od|E`-Z2x<-=4i(@tV251PjRKd4AltWVRO2bDve zpnH}8jmKA_iFr^VRY_%by)NrQVqrsu_!x?471Dk2xaETn?zjWbA4yU2?YOp&lerxD z#or}4TA%9y$EEVD)*fSzELu0><>F88sb-?mfJxI0;1Uca}~x=}7}-s(dIr8GgOneFm=@ zv?!`*lyorjlu^C}hbv@DI9w6MB~EezqZqMSEU^F-#rYNPkRDF>fW}*#fH%H-`k9DeaMO^qVb5)Xv z6G-fiKABt%E5PTA%nr!uG~d2VJ28_TDr+T=0tf<(6|HANUPIEes5#Dz%;mra3iKG? z?dv<5&Ca44K!VZt_S?lfNhT4XyOsf&j_N{cZ^t&67A$^YJZgwajA9>8Aq7+is28as z<9xI+Ck*z(z@bqELFpSbM)`d$MImJ`zUA&iujaoV9y^9;GAB;(K?thkx9Kq?;>M6+ zXo64XmSj=Nju+(_*a8rcJ{Q~=hpv5 ze)P(BW9ZRC$1@z6Tp`GTEv&SjRKKV_%jOF~$WB_X)kJMb$hU`R1sH`y$i~yiV&~8s zxN(Qy8i(msPj`pj-zxP>Kxcw~TA5sk_@XjG>n!<kwM``Y}6T%Sv?#tuRV=hseh0N?qk(uv`{0#9i7) zd5BAL1`&y6i0c~b`5B(A0e_K~w}$IUhTICYD^Lf3P$KP=lTo z(Xz_Ym;mA>%=nvBibm$ZLy=Re(ivJX@sk;a;5uSkO3kPmnjtK4Lf7noZLxzQU{)D+ zgXe|7-FZV^u2RR_C^_E|7KnHb{rLHvT%E9U!315_HhodMP|t%NUGWDa2?LoY7qVwP zTKG~!i(sW9KJdIVu77tpDtH*h=GBA zli8nz9G3dL_yKwoJE-TLz*+P}PxVrXYZ|hb2&wdtT?4Rs0#D|{D4>oeqY?%NQHHI^ ze=RPxGs>8Ua)hV#Vae=@4Fvbv5nQ7@oI4tptqse@9ZsQ4xIP<^$7EfZXQTR-dVYde z-}GTWr3uX0zk&t&i%YMV)~3Xlfycl>(i&|7HtB=n4ms`N=W1KCJ;9mzW6(Th$iGs_ zwq%lO(8zt+R?_EhOtkAmpbQ{`K0h=`?~*mO>p^1EJg&hrbDF)yK4Uh;)7Ot5YpJsi zjQ`1j&z{=9s*!Kd^XnJwe)umti#Hk3k7Fx|+yc|z=WC3TgbFCxqc!+xKVjO%kF0hF zOsh!RNTNj9af)h{3Gyqmu>tlL&3>Jv6{%U?*M_KJVNqxgZz4f+ON6YdQRqGgN9=OQz?<0PBg)iWAOm*=~+# z@y>z%=mwI-Fl{?eHL((gtBkEw>0p;ZJT))s$drXT)Yo?}`X!Fk<@g$pjl6eOmy-Lt zev#2^0UJGYo#qGri}&|aD_)<7gfUZRlQ1o8@WW(~)@B4BjLKxtd*SX3@2n^LPtKmK z&cj)`=NfalXL|M>yf#kAlb}PtyQ@bQyL|6fzudoL@8vkb7D~8jkp^z4w)4W(&8DXF zH=&(XuiYO&?Hp9-f!4Y}*1D+d*$xt|U`JW)*2v%LaIJFy4IqwQOn4>2Dh#NC z6hL%Kgb>e3H>4anP>G^5VxdnKU`JW#ZTb91U56f;Nlm)vU=+>iF$WukX+eV@{{<4o zwZyI&(@&QdO~&_1%l4kx=NL1i6J!BS!gb3Xe@4$$Xhj8)R>k|w(7a&2)9jkR7~S>R zXDNIc>MosJhWX|O=b{Sp&5#(f@*I`a>)@hWmG->>L8tprNjFrYuCU)=K(k0aL{OdPw>PD90tJKxU-!$8W0v-|?K#`l0 zQTh1UiL|g~xm)a6_7_pTGDgyX<)W5_4j62uz!UK=0xJ~x2%u3G_eu0mtW;Cl z;>YW9x%cw<*Tb+PvR`OBeGj+YngYdU8rec^&f~8N z)coQTRId0$R_&cVXyMA`?B%R z^jxnj*HZ2F0r6H>S~yRo@E9sV$j#SPrhYXS+as5jx~#u{UZgJSlf@(*-LK{?(_3H! z$8R0~??TsGH?cv^>cA`b4Z<+H!FJB|;P|27&O5l;2{gWu;MMPK?1OV(5=eUTU<|ME322opI}yqy26GFcU|$Ol-R?2_;Vf4c9EQ+#d= zrmhZYhpfG8-`MuUYsq)^oEs`=GW*GoVQ}NDII~SSq7#hTw{{G6Zu!&Y)IAZ!!aN4;qIbN)N+q<`NC`*>`WVf9<;P$Q*!-&AV+&6TG@3a>bgE#+BWH7R^48G<$7T zinU4QTB++o6d9XaN7GAg)gY2!=n|qry?rGw)!4kl^hSrnJ8H%~yf@=<{Py6Y+rt zg?|MQR^TC4g$KZ;OU3sVf~K$)6#hXH9a@Ui?BZnV`Rp@Uimj_l#tcS7Jl(1FE^(+0 z$;>PGW8cbEiy8s!$o6mA5k-Pww$NITo(E^aQCy+jbLgrExc;-jyBw?d`1a8PMhT+3lUnMdYBWFUlCxHvDBdZIv?ye5H| zPl?Q8w#I30i#e6}_3-VJg#(A;=mNhvBn?S|MJqYvXX21~MP^^ZiVv|g_+7mFQBxu; z)^f%Um@fDTO)LIf<~PNRehn*SG$ajHL*}tz@r9(Aw9Hg((uXn_xIIv1j>-5Zlwa#= z$sdxO!%^lzo=(e3m0k&u0VrDg@d)6~q%n!F2mdFf>~R2Yhwls-(Dit*p9tH1SSS?VVBYJM_}WT= z)UoaA0vAkS{NG(6btwVR*F$)5s^-~KZA$x$IgbMgh@EEhxvZo0_6g%{ZrjAcC#3nE zUa-<&w`{Vfwr9}#;(gSS;SV+-cW7nn@0?7Sl3-v#^RkE-@X^Y=(^4t&3FmtN3e)9P zS!XG)XO@ayw=xo{=G898psLlDpagzO2o99D+@P^M*1Q32!8T={S8Mek@{w^PMJNnuHc)T`A1&}piK>l0!K4W5RTWEkEc2T{p3>D&iSI}Ff9?^eM| zjyTJstge_)z1Oy!dr_P}_1?@pf>lQm{L5qN?9x0j4C-H5(0�%yzdJy1Ve^d>-U_ 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ҩ>c+ZsOxwug!S{)CZ7QK-s9TPx7!W@| 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

    YzU|R;9N>M~p>KGj&Br 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%0DkT?6IdD+BI#^OApHos9xO2Z1 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 XA@pE|HNZeAKo{L|7d^+mC{mLX-9a7a<*inw9 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

mJoT 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