From 4ef76dacbe2c2f9686a372052212cfbfadbaa47f Mon Sep 17 00:00:00 2001 From: Peter Slattery Date: Sat, 16 Apr 2022 04:00:32 -0700 Subject: [PATCH] lumenarium working on OSX --- build/build.sh | 4 +- build/build_.sh | 70 +- run_tree/osx/arm64/debug/lumenarium | Bin 0 -> 854999 bytes run_tree/osx/intel/debug/lumenarium | Bin 0 -> 186055 bytes run_tree/text.txt | Bin 37 -> 41 bytes src_v2/core/lumenarium_core.h | 44 + src_v2/core/lumenarium_core_assert.h | 60 + src_v2/core/lumenarium_core_file.h | 252 + .../lumenarium_core_hash.h} | 26 +- src_v2/core/lumenarium_core_memory.h | 802 +++ .../lumenarium_core_random.h} | 1 + src_v2/core/lumenarium_core_socket.h | 8 + .../lumenarium_core_string.h} | 32 +- src_v2/core/lumenarium_core_threads.h | 21 + src_v2/core/lumenarium_core_time.h | 39 + src_v2/core/lumenarium_core_types.h | 215 + src_v2/core/lumenarium_core_window.h | 235 + .../graphics/lumenarium_editor_graphics.h | 419 ++ .../graphics/lumenarium_editor_opengl.h | 76 + src_v2/editor/lumenarium_editor.c | 327 + src_v2/editor/lumenarium_editor.cpp | 376 -- src_v2/editor/lumenarium_editor.h | 10 +- src_v2/editor/lumenarium_editor_renderer.c | 18 + src_v2/editor/lumenarium_editor_renderer.cpp | 22 - src_v2/editor/lumenarium_editor_renderer.h | 4 +- .../lumenarium_editor_sculpture_visualizer.c | 60 + ...lumenarium_editor_sculpture_visualizer.cpp | 100 - ...rium_editor_sculpture_visualizer_shaders.h | 65 + ...m_editor_ui.cpp => lumenarium_editor_ui.c} | 300 +- src_v2/editor/lumenarium_editor_ui.h | 30 +- src_v2/editor/lumenarium_editor_ui_shaders.h | 75 + ...enarium_engine.cpp => lumenarium_engine.c} | 13 +- ...embly.cpp => lumenarium_engine_assembly.c} | 24 +- src_v2/engine/lumenarium_engine_assembly.h | 6 + ..._output.cpp => lumenarium_engine_output.c} | 0 src_v2/engine/lumenarium_engine_output.h | 6 + ...tput_sacn.cpp => lumenarium_output_sacn.c} | 2 +- src_v2/engine/output/lumenarium_output_sacn.h | 2 + ...tput_uart.cpp => lumenarium_output_uart.c} | 0 src_v2/libs/HandmadeMath.h | 2 +- src_v2/libs/glfw_osx/include/GLFW/glfw3.h | 5913 +++++++++++++++++ .../libs/glfw_osx/include/GLFW/glfw3native.h | 594 ++ .../libs/glfw_osx/lib-arm64/libglfw.3.dylib | Bin 0 -> 233228 bytes src_v2/libs/glfw_osx/lib-arm64/libglfw3.a | Bin 0 -> 309344 bytes .../glfw_osx/lib-universal/libglfw.3.dylib | Bin 0 -> 495372 bytes src_v2/libs/glfw_osx/lib-universal/libglfw3.a | Bin 0 -> 590968 bytes .../libs/glfw_osx/lib-x86_64/libglfw.3.dylib | Bin 0 -> 231576 bytes src_v2/libs/glfw_osx/lib-x86_64/libglfw3.a | Bin 0 -> 281576 bytes src_v2/lumenarium_bsp.h | 42 +- ...umenarium_first.cpp => lumenarium_first.c} | 52 +- src_v2/lumenarium_first.h | 47 +- src_v2/lumenarium_geometry.h | 129 +- src_v2/lumenarium_input.cpp | 3 + src_v2/lumenarium_memory.cpp | 2 + src_v2/lumenarium_memory.h | 2 + src_v2/lumenarium_tests.cpp | 40 +- ...e_atlas.cpp => lumenarium_texture_atlas.c} | 6 +- src_v2/lumenarium_types.h | 2 + src_v2/platform/lumenarium_os.h | 58 + src_v2/platform/osx/lumenarium_first_osx.c | 239 + src_v2/platform/osx/lumenarium_first_osx.cpp | 28 - src_v2/platform/osx/lumenarium_osx_file.h | 213 + src_v2/platform/osx/lumenarium_osx_graphics.h | 58 + src_v2/platform/osx/lumenarium_osx_memory.cpp | 30 - src_v2/platform/osx/lumenarium_osx_memory.h | 41 + src_v2/platform/osx/lumenarium_osx_time.cpp | 4 - src_v2/platform/osx/lumenarium_osx_time.h | 22 + ...lumenarium_shared_file_async_work_on_job.h | 36 + .../shared/lumenarium_shared_file_tracker.h | 106 + .../platform/win32/lumenarium_first_win32.cpp | 2 +- .../platform/win32/lumenarium_win32_file.cpp | 33 - src_v2/scratch/lumenarium | Bin 0 -> 34023 bytes src_v2/user_space/user_space_incenter.cpp | 22 +- 73 files changed, 10483 insertions(+), 987 deletions(-) mode change 100644 => 100755 build/build.sh mode change 100644 => 100755 build/build_.sh create mode 100755 run_tree/osx/arm64/debug/lumenarium create mode 100755 run_tree/osx/intel/debug/lumenarium create mode 100644 src_v2/core/lumenarium_core.h create mode 100644 src_v2/core/lumenarium_core_assert.h create mode 100644 src_v2/core/lumenarium_core_file.h rename src_v2/{lumenarium_hash.cpp => core/lumenarium_core_hash.h} (50%) create mode 100644 src_v2/core/lumenarium_core_memory.h rename src_v2/{lumenarium_random.h => core/lumenarium_core_random.h} (94%) create mode 100644 src_v2/core/lumenarium_core_socket.h rename src_v2/{lumenarium_string.cpp => core/lumenarium_core_string.h} (87%) create mode 100644 src_v2/core/lumenarium_core_threads.h create mode 100644 src_v2/core/lumenarium_core_time.h create mode 100644 src_v2/core/lumenarium_core_types.h create mode 100644 src_v2/core/lumenarium_core_window.h create mode 100644 src_v2/editor/graphics/lumenarium_editor_graphics.h create mode 100644 src_v2/editor/graphics/lumenarium_editor_opengl.h create mode 100644 src_v2/editor/lumenarium_editor.c delete mode 100644 src_v2/editor/lumenarium_editor.cpp create mode 100644 src_v2/editor/lumenarium_editor_renderer.c delete mode 100644 src_v2/editor/lumenarium_editor_renderer.cpp create mode 100644 src_v2/editor/lumenarium_editor_sculpture_visualizer.c delete mode 100644 src_v2/editor/lumenarium_editor_sculpture_visualizer.cpp create mode 100644 src_v2/editor/lumenarium_editor_sculpture_visualizer_shaders.h rename src_v2/editor/{lumenarium_editor_ui.cpp => lumenarium_editor_ui.c} (66%) create mode 100644 src_v2/editor/lumenarium_editor_ui_shaders.h rename src_v2/engine/{lumenarium_engine.cpp => lumenarium_engine.c} (92%) rename src_v2/engine/{lumenarium_engine_assembly.cpp => lumenarium_engine_assembly.c} (82%) rename src_v2/engine/{lumenarium_engine_output.cpp => lumenarium_engine_output.c} (100%) rename src_v2/engine/output/{lumenarium_output_sacn.cpp => lumenarium_output_sacn.c} (99%) rename src_v2/engine/output/{lumenarium_output_uart.cpp => lumenarium_output_uart.c} (100%) create mode 100644 src_v2/libs/glfw_osx/include/GLFW/glfw3.h create mode 100644 src_v2/libs/glfw_osx/include/GLFW/glfw3native.h create mode 100755 src_v2/libs/glfw_osx/lib-arm64/libglfw.3.dylib create mode 100644 src_v2/libs/glfw_osx/lib-arm64/libglfw3.a create mode 100755 src_v2/libs/glfw_osx/lib-universal/libglfw.3.dylib create mode 100644 src_v2/libs/glfw_osx/lib-universal/libglfw3.a create mode 100755 src_v2/libs/glfw_osx/lib-x86_64/libglfw.3.dylib create mode 100644 src_v2/libs/glfw_osx/lib-x86_64/libglfw3.a rename src_v2/{lumenarium_first.cpp => lumenarium_first.c} (62%) rename src_v2/{lumenarium_texture_atlas.cpp => lumenarium_texture_atlas.c} (96%) create mode 100644 src_v2/platform/lumenarium_os.h create mode 100644 src_v2/platform/osx/lumenarium_first_osx.c delete mode 100644 src_v2/platform/osx/lumenarium_first_osx.cpp create mode 100644 src_v2/platform/osx/lumenarium_osx_file.h create mode 100644 src_v2/platform/osx/lumenarium_osx_graphics.h delete mode 100644 src_v2/platform/osx/lumenarium_osx_memory.cpp create mode 100644 src_v2/platform/osx/lumenarium_osx_memory.h delete mode 100644 src_v2/platform/osx/lumenarium_osx_time.cpp create mode 100644 src_v2/platform/osx/lumenarium_osx_time.h create mode 100644 src_v2/platform/shared/lumenarium_shared_file_async_work_on_job.h create mode 100644 src_v2/platform/shared/lumenarium_shared_file_tracker.h create mode 100755 src_v2/scratch/lumenarium diff --git a/build/build.sh b/build/build.sh old mode 100644 new mode 100755 index d2ffa2d..bb270e8 --- a/build/build.sh +++ b/build/build.sh @@ -1,3 +1,3 @@ SCRIPT_REL_DIR=$(dirname "${BASH_SOURCE[0]}") -$SCRIPT_REL_DIR/build_.sh debug win32 intel -$SCRIPT_REL_DIR/build_.sh debug wasm intel \ No newline at end of file +$SCRIPT_REL_DIR/build_.sh debug osx arm64 +# $SCRIPT_REL_DIR/build_.sh debug wasm intel \ No newline at end of file diff --git a/build/build_.sh b/build/build_.sh old mode 100644 new mode 100755 index 81df051..b42d9a6 --- a/build/build_.sh +++ b/build/build_.sh @@ -83,7 +83,7 @@ popdir # Compiler Selection Compiler_win32="cl" -Compiler_osx="clang++" +Compiler_osx="clang" WasiSdk="/c/drive/apps/wasi-sdk" Compiler_wasm="$WasiSdk/bin/clang++" Compiler_linux="clang++" @@ -91,7 +91,7 @@ Compiler_linux="clang++" # Platform Entry Points PlatformEntry_win32="src_v2/platform/win32/lumenarium_first_win32.cpp" -PlatformEntry_osx="src_v2/platform/osx/lumenarium_first_osx.cpp" +PlatformEntry_osx="src_v2/platform/osx/lumenarium_first_osx.c" PlatformEntry_wasm="src_v2/platform/wasm/lumenarium_first_wasm.cpp" PlatformEntry_linux="src_v2/platform/linux/lumenarium_first_linux.cpp" @@ -115,60 +115,61 @@ WasmSysRoot="${PROJECT_PATH}/src_v2/platform/wasm/sysroot/" # Compiler Flags CompilerFlags_win32="-nologo" -add_flag CompilerFlags_win32 "-FC" # display errors with full path -add_flag CompilerFlags_win32 "-WX" # treat warnings as errors -add_flag CompilerFlags_win32 "-W4" # output warning level -add_flag CompilerFlags_win32 "-Z7" # generate C compatible debug info -# add_flag CompilerFlags_win32 "-Oi" # generate intrinsic functions -# add_flag CompilerFlags_win32 "-MTd" # create a debug multithreaded exe w/ Libcmtd.lib -# add_flag CompilerFlags_win32 "-fp:fast" # fast floating point model -add_flag CompilerFlags_win32 "-wd4505" # -add_flag CompilerFlags_win32 "-wd4100" # -add_flag CompilerFlags_win32 "-wd4189" # -add_flag CompilerFlags_win32 "-wd4702" # -add_flag CompilerFlags_win32 "-wd4996" # _CRT_SECURE_NO_WARNINGS +CompilerFlags_win32+=" -FC" # display errors with full path +CompilerFlags_win32+=" -WX" # treat warnings as errors +CompilerFlags_win32+=" -W4" # output warning level +CompilerFlags_win32+=" -Z7" # generate C compatible debug info +# CompilerFlags_win32+="-Oi" # generate intrinsic functions +# CompilerFlags_win32+="-MTd" # create a debug multithreaded exe w/ Libcmtd.lib +# CompilerFlags_win32+="-fp:fast" # fast floating point model +CompilerFlags_win32+=" -wd4505" # +CompilerFlags_win32+=" -wd4100" # +CompilerFlags_win32+=" -wd4189" # +CompilerFlags_win32+=" -wd4702" # +CompilerFlags_win32+=" -wd4996" # _CRT_SECURE_NO_WARNINGS CompilerFlags_osx="" CompilerFlags_wasm="" -add_flag CompilerFlags_wasm "-Wno-writable-strings" # -add_flag CompilerFlags_wasm "--target=wasm32" # -add_flag CompilerFlags_wasm "-nostdlib" # -add_flag CompilerFlags_wasm "-Wl,--no-entry" # -add_flag CompilerFlags_wasm "-Wl,--allow-undefined" # -add_flag CompilerFlags_wasm "-Wl,--export-all" # +CompilerFlags_wasm+=" -Wno-writable-strings" # +CompilerFlags_wasm+=" --target=wasm32" # +CompilerFlags_wasm+=" -nostdlib" # +CompilerFlags_wasm+=" -Wl,--no-entry" # +CompilerFlags_wasm+=" -Wl,--allow-undefined" # +CompilerFlags_wasm+=" -Wl,--export-all" # CompilerFlags_linux="" CompilerFlags_DEBUG_win32="" -add_flag CompilerFlags_DEBUG_win32 "-Od" # -add_flag CompilerFlags_DEBUG_win32 "-Zi" # -add_flag CompilerFlags_DEBUG_win32 "-DDEBUG" # +CompilerFlags_DEBUG_win32+=" -Od" # +CompilerFlags_DEBUG_win32+=" -Zi" # +CompilerFlags_DEBUG_win32+=" -DDEBUG" # # add_flag CompilerFlags_DEBUG_win32 "-DPRINT_ASSERTS" CompilerFlags_DEBUG="-O0" -add_flag CompilerFlags_DEBUG "-g" # -add_flag CompilerFlags_DEBUG "-DDEBUG" # +CompilerFlags_DEBUG+=" -g" # +CompilerFlags_DEBUG+=" -DDEBUG" # +CompilerFlags_DEBUG+=" -fsanitize=address" #address sanitizer -CompilerFlags_PROD="-O3" +CompilerFlags_PROD=" -O3" # Compiler flags that no matter what, we want to define # for the most part these pass the build parameters into the executable -CompilerFlags_common="-DPLATFORM_${PLATFORM}=1 -DMODE_${MODE}=1 -DARCH_${ARCH}=1" +CompilerFlags_common=" -DPLATFORM_${PLATFORM}=1 -DMODE_${MODE}=1 -DARCH_${ARCH}=1" # Linker Flags -LinkerFlags_win32="-NOLOGO" -add_flag LinkerFlags_win32 "-incremental:no" # -add_flag LinkerFlags_win32 "-subsystem:windows" # +LinkerFlags_win32=" -NOLOGO" +LinkerFlags_win32+=" -incremental:no" # +LinkerFlags_win32+=" -subsystem:windows" # # add_flag LinkerFlags_win32 "-entry:WinMain" # -add_flag LinkerFlags_win32 "-opt:ref" # eliminate functions that are never referenced +LinkerFlags_win32+=" -opt:ref" # eliminate functions that are never referenced LinkerFlags_osx="" LinkerFlags_wasm="--no-entry" -add_flag LinkerFlags_wasm "--export-dynamic" # -add_flag LinkerFlags_wasm "--unresolved-symbols=import-functions" # +LinkerFlags_wasm+=" --export-dynamic" # +LinkerFlags_wasm+=" --unresolved-symbols=import-functions" # LinkerFlags_linux="" @@ -180,7 +181,7 @@ LinkerFlags_PROD="" LinkerLibs_win32="user32.lib kernel32.lib gdi32.lib opengl32.lib" # winmm.lib gdi32.lib dsound.lib Ws2_32.lib Comdlg32.lib Winspool.lib" -LinkerLibs_osx="-framework OpenGL -framework Cocoa" +LinkerLibs_osx="-framework OpenGL -framework Cocoa -framework IOKit ${PROJECT_PATH}/src_v2/libs/glfw_osx/lib-universal/libglfw3.a" LinkerLibs_wasm="" LinkerLibs_linux="" @@ -320,6 +321,7 @@ then ./lumenarium_wasm_imports.js else + echo "$Compiler -o $LinkerOutput $CompilerFlags $EntryPath $LinkerLibs" $Compiler -o $LinkerOutput $CompilerFlags $EntryPath $LinkerLibs fi diff --git a/run_tree/osx/arm64/debug/lumenarium b/run_tree/osx/arm64/debug/lumenarium new file mode 100755 index 0000000000000000000000000000000000000000..c44bd32c293f14891a5825ffb0d4ad83f25b9755 GIT binary patch literal 854999 zcmeFae|(hHnfHHB2Ers!e*cgF;a7zuTBxWfxW!4PMvQG#prApMNdh=C!JwcNWCbK! z*21f3sEb|fQV154w8buM?TjV(BfHkJTei|I-N!x;MYJ|ax3tpMW?X^ieVzNv?oX-w!K3FzvxWJ@SAF(FT#HoU3=MNfA zu1!2-Qg})J!VTevt5+;rwrc6az^3DU?3j&*D%3x@Ht|O4a_6JEdPQxduKIzc4~LeA zS3TSduTbOtL4(M(*Lm6Hv%0!&MFTj_zjXd4{4blo8+CQawdg<7zv}9mRW%LOb*mm; z8E&}0x4gl3Y`ow^8$qu7#!En{7t;BArC*M!kM9q*txm4Zf2J;_+|XY`%>zq&>2KYL zT!r_L7%2bb+WeORuWotGs#OA*&fkAev+*`*5VdHZsUcu{mHfY zuQ%Q!4WA1)EU6AREL*{Y>HPiI4L07v0XB+Ur(>A-)zwQw)yr0j>eRn3s7Aw0^Tt|o`CMCE3}+c?mEU+^wK&Q(j7uUxuJjTd4k`dvOYZnODo z(d|{PO+0MItsYdp3Sv5cg*$A#9!)~7O+1R-@K!zY;L??DcoUwn@tl|B`U3F6t7}#& z4$}GiL>iu4_f@ajPL|X>T;q!8*LY9q>Xqv>{t ze7t}8irSjxF7-QMuZ`#bm`z`<9p4~@F@2%O+vVZaOBto}OZM-jkH~EYyuU2c~ru2IcJg}m{DM-hgusKil^AoOfp0NEp=PDgf+U;Ea zs;fVJTgC0SeCjr5pn1i{vHXs8*e&#DdG@v7m{^e8XxnI>HJDE5T75nEiaaYi$@USY zZ+hb9JnOB?Eh{wnGOOoDcDuima{2cuNXXw_fPaO<_j|k8_5Z?gmswAm4Ctq%TbRI~ z_>0pYS+#Qd@^J0+C2N;2;adKU;ZOJ&{a)_BHP4(?{r7J#9skycug;o5*#!P7B6~jvy%0AwgzDgc^FoR%$>GnPN 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 z%0D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

K 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%0Ao|oIh_p|h|upd4O4#I=sFg#NGJ<_LW50BR# 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 BcH#g4 literal 0 HcmV?d00001 diff --git a/run_tree/osx/intel/debug/lumenarium b/run_tree/osx/intel/debug/lumenarium new file mode 100755 index 0000000000000000000000000000000000000000..b6ea3bdef823360a92c6effc5ae3c28b7539ad89 GIT binary patch literal 186055 zcmeFa3v^sZmG6C8ZQ;{aJhp5Hzx9YPmh1%M*zw~gxo)Qk@dFYf8}hO(jDgq@!8nE$ zYfOloCKD%y2_k`n1SYcOOj-`}!8d_L_d*&cqnS${yzE>a7rq%vXGS2WEy@cP%+f>2s=f?b@|#*WSB!JP>il3}92!<}0t?T$pXjKV5{ye=i5r z{;5<`(?>tB@1rB-i}8K=3a>GPyFGk*SG)56COED6XC9iG_I~tZ@7tSCD#my8Z$pMT z@9>f6J&4cs@xep$uc>Lr?ho%BA+Q+VFTdvD`|1P_Uhn>+kD>4fe0x87+pZ7a>?arF zYfpLj*7`{F9{d-iRq0JlAN%m_yFUE>rd=QY;BNC?*dM35J$y6#f_g8;5yY>4ec0f6 z+uF@*n_|~oy~*oc`p-}j^`ZU#bo}=)$@&w_RQ{TpZr(k@HNBU{_Zizf@Tt80hsZih z?F+x6YZb5_oxU-KFJ%Cv&e40rp&2ifJcv%IqTly zI2EM5OXc|YUWnG;ojm`H--}IZ>HmGTz0BEBBJ0mctKm=MbIHf{-nQgJyWY3t{VgAQ zKkxcCmp{?5`05SMmNl>WTx0gn1vMBH2jq;nPw`@9Z z(|z9U-m(2dhJ$c%)7##0@kJNE<*ob&KX<(kF#d_IRs7}4JJs|q?X|pDNz?SVToEky zX3B`4HCH1qu&BX*mwf2oeEUJ=b5beyj% z-z|^6dO^t9oF&Z#*1$}3a@mPdQ=a!j8E~b61#jEa;iexB_c$kp_Lp@I@!lS<9&C>{ z4fYQYKa>Wyo;PiA9!!HH4UVDxS9AjJm5V_a>AhhuZ#XtOz20eU(BX+8^p1 z0ybE70(Dr}q5W$+Ep4LD&=@PDoZC4RE^BKKR}UWUsY)ioO@p*Imk3u4n&(TRsYK6w z(zgwE_H0c$v~^F&d9b}>{=P)V)_s{W=MtMIJ~$DlZ5R3OWzMujjB-8OlAW=w$%fg^ z9`c(P!N(xHJKJgN?D?ytyKC2~L{D|{Jt1etaeg=REBxf|36&R?;X;PCciB3^Bea?N zYn`_BHm_%%SATeGQgw5E!Dd4b@5g$!BpX7LDwO{B#WXdDrftb%zyZ_T&{Dlg?OvA0 zTb;bnr<3-0bVi&#y^gc_7=0XZT2E$%A8V`+IVrWJ*1}ZMmRY0QGT+DR-VvIf=$N-J z$RCIHoFB}O7v)3iWb)g06s0e9+9n3e#mMi0538NZOw37TV$oD)jYHpVOS)^LdzztL zwEo(mJ)~u3l1HCs*F;m|YiDfBKEsD+8VBa_WAVZ@se)w{uI3F+npBGpS?ZWqQ3bX;Rhy&zZ0CU(>l$qZKz1l z?w5y$XZm$k+WND!Pvxm|Q>NL&nVIgl$;&%5&>U@9&sbvI&vj_mH`T7`Ub|H9%A&pu z_6vM$>+JAocPZ;4_r>_0PF!nxOJ$?T1` zBsBKaS5v%pX?zB8HGHgU(^z=!Q(LFd*26Uw?&XYC`u=vGrYyKsPGevIy6qV7(hBQ1 z7rh^(9-|Au-z5AR(@UK_t?|(E9 zkGalf`#wOrXmrc(t;j4a;>B90ExRz9x-Zn)I8foFY+rK~$%6wG(NwywG`!%{UZ)a$ zB3i0}lU&w$_1^{k8Ssj(T7S%BtG&EVKhG^^tU*8bpcM9XfTnysjPoU`XD;>lJPM(g zGIOIT^#lD{Ve3|3aW}>c<>@)XbBZyb@ym464hZKT3M9`d%uw?|{ZO+P2xu)2 zX`XwL{XTGPk?!>Q7EJG(;H7(f3)<%pHgf_tGnBWPebb#>Klc9=^_>>Y;if^=h5ldO z&hugVuWx!3m?$t&V4}Ipp?d{=W%KV<-%muwCrXB#JyuU36Eo0Bxpg7uYt}YrC$<`$ zEL;09I*Rc%Jqrx=rR1-aghh@&ZDD~iu+UNx7W;aag$2gILUT!2S=ci_Xo%MduqCbphD??&gr zKGDm&#+sFbM=yh48td_GgFE4k#v=aOa%0!9UEHlR0~^sOJ0@Gz37lw?&Mko7h)iG? z^6)&%26O^v;Nx2h;jaQ7naacSEIrx@oQJ;%{uSx@9>2{Wvth|zxO1onpE4Zq*O0XYZ9gUi}35cgS-s^wCx;g9h(xPY$J@tPLMvd>Xs5pr#@tU1rM~+Y26i%Ti^H zu0@`IqVlrADo@|lSXxv+JQ=foY@KZQKdZbqh6?M4?`JD(b^Ui$p8jz|j;UWdHY;BT zU*dqzKlG95C*|om6OI}^?8$qqa~R#=`PTtm5s>$O^u;M;{51N)=r?qRmFv0mq0w)Q zr6b5}KjZoo@_$-73)+VE2gXwgU1#-N0^MWvSvme_U%32OKYyqAtI~LN@XuyGHivc^ zd3Ymyw(uV$Kd6iF6*g=9$(fYIe#P4=b?;P4c z107o4mgotcpr3Qt%wINKj*SQ*ALs;p{M_N5xyiChCl{GbI`u`$om_Ru$sO;Rm2^lu z+;da%QfOs-!@pTcw=!z-6Y=YlqQldn^OD=c=ulvc?8P58bC?a#+}=NDU!wmf`vm*W zOR=@U9N#-@)$#bucoa8<?BUL?0dIu1`?&n^@ah}EC;!RCmq>(XG7q~hDIC^s zm0ysEksf;}`CO>=q;p5)(XQ)_f1YEGm~-LhPUf-4d*&sp;luHsHztqon6)YqyAIuO z9ej#3Ct{@afTL$5ZP5gLvK`m2dN$--f^RL}w;3Ao6%z0$v6nn&){0Si;O3I98J(1s zu5m;1(Pyn<4CPd2vHCam9_C-yiKi9Mmk7IK^Ij9&zo*IyYPUJK~{xRg_NqD>= zR8jE)a|(`Hl-8-LUJ- zK9_N)xp)S?s!xmir~!C8E*s#3#+QMoFSr@d=+a`oZlFv7Z^3<5n#Eu61!Z63P-Df? zrF^5e)yF*#CkMijW2)yE{DZ!e%$**U{po}6{qVh(@r$i%l#T0(dOA>g-00Of`bKda ze1vCy7tpEb!vuLo@5E;&WBxeDuCGkcuh05@Ej@ZR8Zz{?`b@kk6K~b;@K*0(-cON# znzZfE_c_s~b|T;6e+F4M_7z&|R6q4v89P_KectU@Q1tSLUn`+!daTOm{*TRJDhzx{C4qk6?bRFuzi~SH0K=cRm+h2613V zGte?B-{SD|H5MNFcYF!rh!Om^di00rbIWEK`sM`ccfX%#422d}IkRf3+I!}AwTI^y z(0e>SKY2VhKec8XS=lIC`s{Zi8nG9OBJye~XV=9qrbL26=RmU)Rp^ zRi>_gp^SyM^!CmzU6<WCG#OK?9f1s5L;_uW!(J%w7EST^o#66 zhCX@-J($4e`~776PUnt>M}PKi6OYJc7UGwNST{nJq`MC~#3p!_uh0&R`V@csYiWMJ z$h-XV)r=M4lq_7Nm>=+I@PsIn!0ut^PnO}=hn?2XepEQflP$7xAsg5WzRZr+R1kKT zU`x>P3DUEq3lIIA6D=)DL-ss6m{VY5jlK!Zot8mAKlc0KnTj*o`O@>u33ulT^%Ga^ z&Jf;u=x$&xCfvf8ppA*1E#8^}^E{V%p0R7pZ;|OU&wwk<9D8X0=FZ>k-bB2p+{~ZX zK+|wIOw6N#n8(N()sb-3V0uR=A16|bPqCst=F_c|F|oZ0>c_TZZX%8nciR4(bj6Wu zyscuD^I(*9iOeC7XPP&C7#PKeG;h+cXzZgb^MQQ1p_R^qt<0@6n;5J39MIp~4*eGv z@k05UFB6|Mv0rcAYGYy>i4lao7(pTll9~GcnuLG>0)X#iUo5_?LKl(P+5ah$9E#SPMp; z199W{1mYf3iF;HM|D4d4c#60Oee66lVKB5F`MuIfxzD_9kol|Pn3t$Os&8;oS`XE8 zggoY%xk>zPSlX)fjzf{PWrNPzD+VWfZB~rHtgG0vSNUaKU=%A3`*7f2Zejjs5QbRp zze|p(uYJe-eG$qX+p%?@Vil3KVd{zv{wkk8Z(nt-CpT^_@l37BA%~L|c#raD z2KntfX6+-MWcc@#g^$hJ*Gby3*!BBr;7w?KG__$3K5m$KT^K!%f4df)@Dq*w9oO%Z z+^BD)Cyb0hbL(Vh^LLdm+_dqF;7 zWe?tMP#o#{q#fJ$s%*cPm+ePC&?fnu@|W&XUeGUI;^Z>F0fx2dR?#OuB6mrR=hvbw zL0Nf9^ioguWl!g5?e|}PQy6nrdH2d_Dsv|^%U`A4n#b8Vj@6kT(waW=Q~%wYUozii zO)tmVZ>k~UR1PqYw(Dck!Lo^sqW>${s>_`)xH4GhePMV? z9qYoR2kLrWdo5^_yB7O76B)xV$Wne_2RfUzRp|u%x{M#zUvk9!a|4vOGTb-ljrsH% z+PKE+5568SL-V3*i`pRFfX|_Ruaqqs##b@Eh|+8Qbad4ZNVoE>U*`tt=xgyg-o+Zr zgwZkku(!s-8WrO@uy%1#tK`klZPKv^$jBvHe_by=(H6>HeO1f(!ixne~(A| zbooJA*ZKitNo^dpE*SKIe4h6~m*wrV@YXzI8!exwfKO?%q1LDS_OEFV?bSPT$JDdD zd+WTc7puP&^Uv2G@C$K&JCOmdxmW2mSvY!c`1s<6@&%y&I_yQj#$OrlXzd9$M zx*yubYo|PFenXYf6ms&_D_Y;&#ymg2Zf*PKO_B+Cvrg^w$4z#kZDXkI4CA-h_bdrJ z8z0}o!Z*AMx|0UxVe@Phs*W`}t;1+X#O74G+;CyVn6e8hwdur@m7#F3&P9 z;FX=5oRUn$1M`#le*d;PZF~KG&^oXBtR&nQ*e7WF%lH3F!X0+nnk<|z10~@)owj#d zIKThTHYVF+)m;U67Wnit24g;+yuXj!chc4d3&XhkAHWzrdAO!oda^y%)P)BbwnD*eI(bU7Z zcF$Q4<$T#3+J7a!#MtZqmiNVbhAfYVKdUwGdfcPKYzmof) zP5b@7j@UF?KYI_54d|eMf_o4?Wa|H~ZQ~2YZR}AS-@smKPlh#i567zpkHo5yhr`G* zaoi4KzDHy8yZVLvWj_V70NNsP9pw(8UPF6}&P{K+3to}M+%h^KV- z??B%1JNjZq?y>pXhy!d(YHTastvL57{EVy+!A z;-t%1`&q)e;9}MVDZi0ef&7s#zDszbxkvaN+W&U;fLpm4y)V0+v8uQi?HoKBo>q=GQO}mfd2EOtSW3O<_D)>*X%K-U0b_m-;pV z94bq?*-!f~*azj=Jx+RN9A9!AeKM8!LH5#CViw-sgD=sR;uu5AonSaAoN`wViP}Eu;1p zwe^-czHJ<%t(tGRlbu%+?8QDqe@t?m&upli-RAPyu=OoZieHDEQ1uTDKSF~m6R|DH zEOQg_u`|4Fuz|SX0Bx>sS(FU&OmNJzjo+Frt~vC_sB)!DxHntlW<~xt7K5W5A z{$i~yY(e(6BD$nOdIe9N>4dOND1YdG%oDE$A=;u-O{DJMh z>TGSp56sj5$F{A~Yj?@Eo$uwTZDY0L4W;sYo=ha~mp)JM5!x7k-QvwU@kTZapG&fr zZ^IwRo8Y)#%(y?R>}&i=M=+Kr3l@1vFupY>lEYR2KOcF zyM15gk9Ijf=a2o$=zjl|u2O5p;hCx*xrme7t8~@~`9bk}ub( zo-Ijq&vNN}Ct6#T*ZaN=FnWKD(_Ih$v{x~&gV58RF;8#aB0Uu69K_<*RHS8BlK7PL zK!x^oXMi*9M{m6*9Z6n9{9vC#Ate?5Msh_eo-GwgcaAIVs;X3H5ldj%2H~`HJEw>o`zk$6gN|#Sd z%**Ua)m${Y(5uHO$Jf+*o%bH%T{e?=#b);KYp;1OyQDRBA8oR-Rb43>wj>W~J>+%Z z`V_p>KEu}odpEGfbw<#W>Z^L{HEmE^)TRo4RsR&)i@k7m?dm#=Z8!cPHduaSF)n9U zLzgWhKCAt`YiP6aA@gNC-Y}+i@&$YQ)$&CG=LAa4 zGw@k%HE@A>MsS=mM%#NBoAOy=%rU%inmmHv(t#a6#n?Q}I=138_-4tzI;U+KJ}Bce z)!wtM%dM%Y+Ad!WzeafUtF*Pqgv~!pzI>;R&>^4VYUv!x%1^R*^)BD&NDN;#j4%75 z)7IbPw4Hj2c}$1XmSX>d_-Sps=5gX*R(cIvulUw5zCt3rb?~6(Inx2sw>j($S-`k? z3vnv(?Dy{^?u_3fU0tky*{hGf_0KmbU%s|CUt~Ruc_Oyoo^w!H`No>Fl{({K=PWJf z@aK(A@2N_5#H*4=OX&5}*cT(av`y==_q;|s(0?|q*x&A>fBWfQ?R(Z6vcw%&E z59g(rTPudj94M8D@hklij;7%A@(g^f=eHOB^r35|N3^e_13hvy#$E{I2memYwU7rR>-nAN z&jf8VafvW?{VX!T*^uO4W80qy&l~KF&mBy}<`M^o?j;(Z9{uJl9D307?P9-g(UWGL zw@mF}?zd9y;P+B~=}*=d@Wr<#Gcn-Ng_*1P4R0CLdQ&2P(;#O~a$dV{N-n3}@ITjw z{p?2uP9Y2FWwd=|w7c(8_<;R59b=w%74y7>%n=qxbI95;eCS*jIa!47Qy+0s-kGJq z9)S4B9RBt2q>uSQ|3c&hz5f#9;AMP-Eb%zWv!NA!*t2R4_yuL?GVuiclhS*b_oMWq z9XEZ3?L{^naLN==5TC{G!Xv*k)Xr{%5b5>3`<= zrvK~w{)dlNk97S~aS-}<3jK?&HDiuFXqx-?)%iS9ecq0dbI2{~B}?y5cl^Ry^fpwf*aYJXJF9n(&38nY5$<{{m?^_H|h9M>GI=%&mxnYPi&EIZJsr6Vw{YE zuk`R37|m}jyyj=6;LkVsb1wJ{E_9`QOxa&Y{vh?blr?$i(tMtLJ>@~usB*LYJnA1+ zZoZet8cnx+R`JTjQEC6kIlK{lW6qJqy;vH4TJmVm{G^SYwaV9j2jdvqps|!i=c$eI zi?TC`fA}$<8o{U!(TzLhCqeg4?Sb>(WfyukdgEUC@$arz;mYvgLg3Y&z58gZ z<}F$W_0~QE@l*V3@t3iZ!oNyst&O!6Z(SEU>O(xEi?Vty=b7JXY>4@t?Ek_m)&sot z>mq+${L$Xi13v$m=j1-YbKx36(OLra_xa<G^5Fkw z@mga={MGo&r}J#m;dcQorR)Im$vQ<+XGAq`)?VgBY%BLlcysjoD!n;+XY5PKN#*{z z0Oo*c>?C^|yItlE-|=mk-tW-f3H%(Lm6m-|n&JbW_tWLupaZ*QU))+`h5kJT?h0^k zxTE4x?Y*i$zhjCl!)w zVwdbqVQh?s%Vn3frW6|xoch76Q_)_0+f;}?%deGV@7PiAJQahMSZF1T^2=CB0n)etTVb;s$o97Di3?HGt!o_D$9C=_#YpNm~;HPAn zaU~x`I%ZUPXech9=Qr|SFfU#PtRI(pOmV5$R>en%qs~v>raAEv?fVGE+ed77f>^NK zpX$wzs_=QMG)GPKWBag$#;?fIR?#V4csyJ^$UM;-r+)hfh-r%-ePQ=ld(1gubOHN# z@7chfR?Rn5p4d13p@~Ji>;XT6?_pxmYnP9TMQc5dF>mIHs`o;zAJgxOd6>0j@)kun zb4Xo_p1Wn$q|l^h{4QvmRH6BeU|%>n6Gu&*fd-w4+CVuY(;;WI%4lzn8+mSy zi6K!YpGO(PS7_1syoZs!KP6qeUMF3*{fX(i_jS_sjz2M7ov)KF?cM!T_M;g)uS32h z?^eg(qWus7d1st1|K2Z(Y!dJhWI4eYh&;Dzl_&po zmq~S{^~|l*UsBJ^%hv|3~!P+3EP1^ci}Uan)9=>t15N?7@QbI;C~pyVrTT z?rC)0N6>RMWzu!bYka-Clf446FXql7^l$_p(3Ne%kJ0>9x>@VTp{X^-$J9Ox#UGi6 zF=zGXH9cAfoWvfGvbIE>a{`~1xh;1@;CtEiK+O*tz}p$0my8gbZIJICW1j%e^3xOH zdE9frU(x(w!=llCxYm%`d*imF9Mp z^#2b;S5Jbb^|elZZee}dhP(Yd=0&y*werXPn9AYU+%A(&drZ1`waMvL8y(uKc#f(6 z8b1xVFOins=yV?s>#jWJP4sv1e8$d6ZmAV7wz3cMi^)m&=XUKXQ^)+e4nCgGUhit% z=T>6QF{r8!r1q4l(>{)eavsL zInSN(`GCJ}`k%RoeDwj%F=$792wQ@0j9nQ?EBDjN18I{@T66v6K$@AqO=_-Z-eKyK zpZ}t_w)ClAdG*@#_V`U+f6+Ilzli-DCe6yEombg4i&GCUpJHyc2U$`-3XkdU^NA-z z_lA(?kDF)ct)SnVXL~lb7CWi7H9)iEYXf!SyEk88)(A<5Zj+8oD7}t!;eHe4UoV}f zX{((B{-x%8&}iC1T`uGLIrbST?e)^Evk;=W7Mk^Y0W_*?9W)8=1n@qrbvj!QwEvgX z1Kx*OA2Tu@f)@V_ta*pe=3Qr4p%JUxf)Z}sQG!LsjFf!ujafVd<)%ge$3sw9N z{ElLYOZ@$aF?0y&z1Mj0I+GtEf3Y94+~maudp8F16(gj)?Q_v0eR{YQF2y0iWng{U zOzf}}UgC?W@EPneGv_wpH|J$|*0|I&dgNcQ4Z(T!mw8t_NBcz<(QoU}ZLFgt8+fiq zm$4s&`{y>W$IZXXs;BV2H?v26isq@_KJ#AI3>1g=)=Gls==^vYYaZ-HP8lB;`yqc+ z_Czri?5g6XsVq1KDhlHa`91>%+DsX(bEu4stGVz8d^wGIgNuGHiOcq}a3LeA|DE76 z=VwSOMMM2A_KYbnfYa*!dh`yqFqehq2I5Tl{SN0Brc=+MNh&WIX{XU+kDYN-JZ`*Iqi`diBlGy zhinfMXTg3S!8U7;z|q*eq++I-I{J7C^)Hbv-y*xvyofu1%w9p{S!?emmK2E1**4yy zGiKyxmmmWsF6h}Lc%REIW(^`>->Mm-7FN6$k1d?FTgb<`VbBrh#KYNojYW+m))!OX z6+da8d8e)B4xojj+xx~?407@Vw2x3-v|8KKY5%g`T1vsh>uQ$f25)p0 zg!M;ny-{mZ8DjZny*%u#E7~>uHzCV0v(^@f{lA{IwyTQP)U?hP3#_SWjcuX7rWTNA z^_$k|GUe=P@YjJdw0o?zHQ56BwC7r1GjOy`{w;A4`QY8@u>V}{r>maxeLH3AT;;EM zVe<^U(q{)?w3cUKuvPPs$x?LNI)ikE%sQZt9~uhESvo|k>}_EEFkip&ir4A1b|^co zJlSFBb?rJ`a1F0`oi13ec%3d-?scrw{ciW)abDaz<1ySb@kFA(>_ldvle@S0uDrF# zTx=fuaONeCaA#h}Q*&2oo-kpllPkZ-$-SY$$xU1!m@Uj_W_6k0IKMsD2liTB@8!k4 zv|4nH%~xzoGFE-1llzAWteH@b`}Vq&=B(uotnikkaI#;y%ld{#UJIS*2$!8WI=$?~ z<8@^xwy|d?5xd^r*Jkca&{^V6-MxfP57zM{bqMz{?)U4YjC|G3*sP>^r;K^$thIUP z3^DH&ot)=2@8C1<+~uUZ;W(r1m*<^4b52_L!ZSI~g}=gjWR|*gA6^6R^~?uUw|h|_ zFH9cq`Micep78UY&sz}46Ro`4JkFGxd7^k{`F4ap-88_ttk?|Jw7mQG>>8r>fj##& zbfWlN=|JOyN$1}_@!~(&v~t~%bUx)a%P-rLi1Xa@Zg|E!JiSkMq^T|VV4Xdm%ikAb zY@7D|v;Gj`?q$Kq=YGYY0^w zsx6P+Q2?uUGIrW~rhBk)4|YtP@#$th)CrumwV|Pdp4Q(BRqHTe8nnn?aHi!2k!7`4}&Yb$&3NXpY}88ULTz?K1{mi+$I)5ns}u9 zbzfu1=`z>CHez}&tn2lYE^IX7MqC=k@>1kwtE_ZCj$d8jBZtT)J zqt~~}Lyp4a#jZuaT3ZT}(* z>f^D}HO?aVZ=D){jJpf)v!u@wVeU-}b7vsBMq_Z`R(v*egznf3+*jFr>_fg>eBzUh z_r9g`w$9j8#_fBOH6{+`?R!awL*1R=QkwXX9+vG~+ik|8;y%CSeVFqR>NmarhWFpH zU+Fi*p3ngy#`MkFhxMB7UntZKlXe8;lKwlFT&7>~;z`mY=j!Y98R&RLdji)Qo8HTF zAJ2A-_MYJ#y7k`2b3f0)G0MFb-RYNUSL|KL%e%aOuBom1N5-hqgZFT?$EF%PbT%FL zjPBC%b=)!fZ3DW}-c?w;>z0ywj{7sZ6=aBR$^fBMqEPB;vA1yn#?%e*)!hYN6^~1?; z`*&H6rI*q@PWO3%zEfW}EM5HQn09+PSZ_~!mqv>y!7zbnM(eyWbet#2w(*C>E ze)>Kg^UfcpN!PRPS?lfbU>-+*nXyw`W=)_B&*?Rkz0^;mte(@C^7|CO>eFuo>f~Mf zUbP1*O}d`B3#PmGc%aTwWtIiX@T|SAI=g1@P*%_ErRe597H_-<*=&)R2W z+i7?qx);({q6?Vb;_`KY@;tMj)WB=6O8QCOi)mKds{Jx*GtcZf&9~FkDZ1zSb(ShW zGfS&{5XD;clgx@OwgA0NrtF9{Sf)It&cL+mYTkn4SB#T z+Y7yB%-`?9=5@d!Dv=Dk%RbZPoAXnBY<>4-;v@8B05?BVqNpIP`loL{preS)F?1Y_!g zR^nn^>l6p0j-{&Ob@0Ad{iQx=qJF_!-l?zth(5^Uy9s>v2k;g3MIP=t;F^HDiTbWX z-^1T4h8Uhw#a_Se(eYEe(>^VWa<^~ zw+|RQ4*JQH{Pcg*`!)O|zn?#o&KS|J(z&NV4m^P?}%r=7EK+*Uv0;Km;RH_ zmw4)?Rf->KeJbzQBm3=f=5KLt{w5o(dAQOd=sTrncKi1mV{1Q6zTS1FO)!exn6l35 zD&qdRW6YPHWFE%8#^xu9r)ckyxeJ{+7v|t)-1*5TZZr2q z!_RWX`6ySAZu(?S*JSaZG6!e;Wni}>C{`O_^4 zVuKd9nVSlp_+UYr)^h|)oKQ5T@f(8i$opuM-ZMA*X9aq$GtcrJGB^A2cKG!R)}Bmx zZ2PG4D$``o8i0%EG&WuL2b*0e)lr9-{8}2wuJOeGupIyr0T`9N)UUf#`IUk4 zJZpb};4_!g(8Y7viFVfe%w6{2Ht*c=pguD; zq@TR_ye`q{!SYNWn&&Xjw9zXwuPb*kXWwOuD07%IbpOVCbh7p^Ngs`&Z~hQ@mHgd5 zhWs7U-Ur4z^H=jt2OJp{in~ci${=!4*KsX{r5QQrjO8v%nehS-IT{3G|P^Ky}f$I zrr~2~|A74B$hD8%7}R5?48F4|6AzT>8M};ccQ`{bJIS}B%pLIB3lX%}1vbAzXG|Kg z_t&!L#k*Uy;(ucE;{|KX#I!k^&G~HBm6~-+=fHm5^~_ZkGFMsX&3~KOAFk(uc`vdq9A@5&JgYv@XySv!WNe1^p)FC>1>8i( z%=HWCBA(Mrdz_D~Gz#S#e zd6!X z^;a-gtoPTjWbf7X@)10F7`x78VIofVPM<%c&m9)Xp}psU^<(Z~c&du^du0Wr?!D(8#ugs0A6B$$II-|*vS2( z1?RrwMQ0Dgj`q&x-VOf>&IPiTJhXoz-vRKyyUBPt5`$LuWa!N5<8ke6Wq&gMy4ky; z=Sp@5znR}Mep7GfD@ug`40TNK-xyjQVkouOc_p6sPL zlZxIqc(I-Omcti>6B_`|=3ed=HTz5Ej=)gX(09M!*pDf=!`kcA!&z5sfW>9tpz&_O zVG{(m-JItDZh8?McUtZj+;k7F7C*B95BG=eC13X$OV61#ZFr%5!m3AdQ2@`~#WxEd zeVLV95O32j-)!bgP4%GG)q?v6pJM$?{UDhd+J6<_M=0^lOY-&2P~D+u?jfbEr)bA% z?AA-@;+K&fBa^WvV48s8K0exgiZ-3broDttemQKv85_7WBUWDcO~N|=Zhp=hbH5bx zh521&lbu`#{d+V%FZpis*|hyF+@97@6z6< zD}TLOeH}tKW*N_>fAtMU|L)|q=)!zD_a-;^cP1Y|_vO>MFS)_LEBP7eI*n0u<<;0S zHyYgo9r?8NN^6boIiS7mfSTqbd8v0Vy1vD(JJ(l$ zOLs8KXScAPZ615iqQ#Y!NX@PU*X}$pi#Uqd(HVR=EJD{Z#%*#n4{;M zt?1huoSgOwM{eNE^j6N&lsm}y)}(o^bW$#9%)@gIcT{lp`egl^h}&%>?Hc;;O3JS% z@4&N{)$rXo2OQepiVyJ1D;`|YHke_|1IOGmS&)}l(e|pJ7Xg3GY$sKa-?gGG8_b_y zl>hw|ZN0(#+M@hZE86}~Fn>W&{@{wX6T$q3qWtq#wmlcjzo;m`W@Xzme!lqQER`PL znoQ{aKH94^cYZX5Z6A4G5KSdCCT)I0G-Z4y#`!h+c8pE0HDh)JZuSV=mB69v4eWY! zz4q#vZ|pM1J|3P~$m8WJ+a89-_8xtI@I6Ue*YZGJ8SJh4m3fH16MnLHv6K619sOJ9 z_3s(kzJ=`l4~LH7@8>FJJGn{oDKnYx1lIDMK*`1u?77M;@nwSjbs_A%69HyH>*ea- z>@p|kA{(91A-^o-96kAYm09MOiBM)TWy-zp4;q=MeERZs=6I~JBVYGiwwCsOycS)t zGMd}Lud&NKhvqxeR)9K2&AFx2#!NcKc_(mr#a}L~nnR5~4 z*{i5~Kf}TqDBBsI3T!2?-@mN0Cv+maMs)neWe1At$li(Gjnh8y;!-EqqWnvJ8rJZ8 zJNf(3CGqcG=FD!ryq0_IFQC4@dz@59UD=7NfKLP0cTY6+OigQJ2m3s)2&5f&6KTuJ zPFx;HJFK)=*@;!E3z`j&uY$hIY0p~Pb4fH8Ud?;~z7R*tF~86C?iCH+xy+g0db#-? zCG+<8qC>QA{VT|nzTIhM1lx~Kd0led1Y$ekk@Uw&KTNvmm$^>v#}|0@GspDWKhw#r zh9=!HF1iNP59AHpO#RKO|J#@4<)&I^4zEKt<%eCD)SWO{;j4z;Cg67n{)NjNWax0* zuXBo%`=+gPieKk+CpS-gm`=ItD0h>}J%5>Ve(U9;p+K*!TiNy^ep@^Kr+mnRc6{C- z*))ES`Ch@HpYhEU%F0J?pkM3H_rCFKc`e^bX?izu&Dh6onYqNrDQn>5-{ap(E~+ol zea+MvmyhZBR|ER~GUatfuc6YZe3HCL%xSdFqJ6j7C(ymnm3<;=<}x1yujn!J693La zSNkHd(UuOuS~_mD@c8xk7T!0Brjy^mcb*iN^y|*z^V@n%S?o@e+8}$Z_VN98!vosz zXTI(c&75r*Rqk4q!-f}^Q@cH1hj|_TjiDF5xR;FRHsMyedfKe|8s@ipZF$aVTL|8Q z{#fnk&LrX$o{v<#CKU9MbSGXfwp?eNG^f$o3Fb4S&qIYZkN58c3sVMJ<34}gTgmwg z%E7zix-Stt*00i9gP!GEiGBmeyPYpRw#4%tEKIrhr#{er3GfcU3(r;u=1>8D#C~VM zeDh?YN5A==+C=7K6HBz=EM@hLJ9MVuK@i7x-pbesLsQ7%4wlE}5DS`CaPA|fTGaH{epf1^)5-3d3s84qm0LA_rtnPLtX z=i7s?FgRj3UkRl$XV4!%b8?xN`TZ%sKc!50^s_t5xf4sz`u4}? zoIPvd|0eO&Pg}=)@oN#@U*r3I-1V9H8RG|B$n}}bqu_mXt>L{Ja@n_t|HXUeE2Jrg zpn56CejjK;M#ytQYktTc%p7|Xb5YLtd_%ZRU3?=1+>1EtJwTq}hoO;nLht{UjC*i= zn;5(gQBSyjk^4+&TIK=oz4PcN8#|94y^Xpza8~GIew(uo7+NOLj^+PLI4D;t?;n&0 zt?Tr?hd>*%+>zr(y*Z%EcgQxtpRZXwz(Hq9@Z_}_{)$FD2Wi%Kb9ojzM<^4FHH)mAd2|sUVD7r%B6VCPK*A2}uu*?hiX0~WOzvz9| zC|rM+ujh@U^1hMJn>Q*i6p&T7lWzq`2K&`7%w6&0v&etue)x3%+EfPq2l+L}FB_5U zqx%}3p%1QeQuu?L^Zjy~v~N8&N9kJYOoW^jnJ3q#)@zNIJ8`r0UxUgk)}Zo5b!0@l z?c`%+v*c;5$KyTy{C_+dGw+(apYXm1F$(WwZ_Jx-l$kaH`yG4>`3ZVg z+2@c4D{DUd#Iw**AnWDyMIC+dPtL2EH-t75tMU4x@`6!);g5%0emrzACOWVKJ^c2V zJD|V5Q{OA^d~=&k%T$wxoE&ucb{@a_c7%-!=$ZA9T<^+gD$F^>^zG=fo{6i6JNT1s zyNQ>&1t_jJPnvo&T4ZY)UGf&YzJ^$0b7tOP1x!l<^ zNwUOqg!ql?^q!0?clr11^Q2x;z=*2a4I z9>C#KR8nSj<~TN9^}V{@+{dQ=F?JbwF|f+}#mDosWN5eHC-Iw6u$0X_0WFfDz4Z59 zXurhSvkN{Z(4i)cysXl(*MFn&5O~jEBaNOTKZ4Jl1qV8K`5!{#tJ1-=iM>#(Gf&Vy z@jvA8FHsH+PflE&RT_OD8pMCe`c6O3z#pEn=aB9DWll=p_%rEkA(NhvOf2CJF470U zwTt(I>Qm+h?qT|rJjJceo`+@p`n9O19gF7=PbG!r%H~Q`DYn3_cLbhFB~%mEZ-P2#$Ts@cj8y7K0A*5@wI0{D0FeU zjxqIOd0QWJ_A|EjyCue!m8aX09iG*1k|`r+v?)uv3w~sOkIu2*YsU&{S>EaY@8xd; z`pM{@Kasu>kE{-Pnz-mFn|cp&a*r=3*u+dYy25pyJ(;P@{EGc>IoZ#h%p=@snUnTC z(%NqH@?APVfz9oWM~9r6?Nz7gANyV#-Ojm|?N#q24WD#|V3eo562^XmH&SEpRA}C0 zbR+#h-;T2Br${f>K{q0U#r8cYqf5^rqr*B=7L-xHPruBW732SCK7dTS*ywuM<8#Pr zfxWUasrDdGxB7CMw=u)$f?>YvA)SZ**SsJ5@pbX3WZl3TJx94;$%g2ixv%yl8T;|A z2^T|S%HYym7rHG>hBE)^msv-B=feMM!7}dr@k5NxYlG3LJX@V=bS`khueuVx{*J&m z;(DdWd!QZW8%RFB0q`guC|+so1!eX}(x1r6y3ku!7#?p#o`JgsxsF6e?6bag;`_tq z`%K#FAiJrtYIQ@L^VP%Z8}K~~zRYeTZc9+DPIBFURL|%12Og*@Oj|DnaF#6J)r(VCXi+Muir1JyUCY~TuWVl z^1k%@te`K?(H7snm2S)JBXVHJS*NcneEFy_;|%^;Ir@*-H`yV^S+gBy#*f$7niySS zZ0RfE)n=?Y?^-de=T~B@1MA)~Ytys3C&tK#A73I(ak-s3)6o59^{Hof zU+G!RJf+h3%l^HrlQo8XJoz#|IC~k_)tuIrPdKwYo(IaiAN0ypSssPFc#6wQ|(8FizbjPB3tw*!)*N5s?jPeooV^8+u<1vSIq0P@vHQ0FGE7*Wn(6^f7 z8k_1G8)V`R$dBg08SI;(gYgSLE*XY5(zWx&cYl5>JFxK%che&INwqJ`*@!+H2v;22 zz}+Uu?R|N4_~AYU!)Iz#P5&%zAVO1I{1y>o7J;?OZZZZUviXD44OW0 zLsMU6uf%5Q8avN|&&J0yI!AI1oD+KAU&$|Q8uEB2-k3Rs`a^wJOI+<{+6-)@=8Gpg z|E~R4YFk|G4x~+rJom^3?k?k=yEDd?iU!g|qmAJxeOUa1PWpZ&=NWS92gbaSsR8uu zz2~(yZsgwaW@5@ZAGV>TdXs-2evA5ao$h6mT?59{!}GI4!(1L#>Dr01U{ zgS7owjREnGSQ}-$cqi|k{dJA~#gE=>V0@p~=pVs|7I<8vJx|gN|H1Z{{s%AoFnqSY z^=W9mhrgiz&R(Mji^s09g&Kb$z9(J+kC7+I3oyk#1!c@yk+FI5I}INBk+h9xqhFP- zxSL{?9rjoCv34fEk#z>^rUghWwkEjKP_VLCR{4D!*>iGTYPrq60Y5wX@EXHMau%h6ZQP-{_tu;rteOUNbT< z<{BC{2{_iXk85oEa}}OdHcNW2U4lcNmYemp;GE@W=vv7R>x3@8LcL@WSmcE=c?5QC&CA0<#qA+8_+>pvfl{snCCo?C36QFn&nFfE>UVO z1rPA0M%H4*E1$n+E>)`iPf_nvMeXN(%=VL4-2P>>->k)Iu7sb5PG(-k^H%n0$X`dM z6Pio)&^}~xfIQ9R&`l}qcjcnU3+OGg-^24erw8U~JZGjukMH-pjL~1{{vC~h*CV@M zp}hF|l>lFP&hyn9BPNb!=+vAF_-D^0!*;Y}Y z=9n=zYTjAY*V3B>W1s|mW<9x-3_J;so-C39-p7;y@``2PZ}HI{KHC_0f;!HnXF7m+ zg1+hq^cByHC*+3T;27Zjb&Ubw%oqU2m}B5E>V2%J{k)Iae)5Xje;e&LV?cUcb^v{! zh%o-8_a6oSx!V2^FptvqhXQTqS!G!hGx&_{5N_TjV`t>oVB?qrr%d06z!8))<=I$| zUq<+JhpTWH{&_YM9}~T-_-m0|nYyGyC^shm9-!U_iulL-nEWHJn12_*zo$f32Yj0Z z-}u!T$aC`T5HR=C{zC!2@vO2sn9=a|nD4&xoZr{hOdFbM z!_dSLKaTe?+dy7%8_Zsfui!U>H@GK3=a_enbr;8!Xlgh-wcsv}1?+cR=QvIc2=(`V zp1&A)XD*e`Q~rhiJL`b?^a*}h<^SLIm!TbL{&qt9f5)HrsCpUu=2v}jHah-cjQj-Y zGr*HzlKt%(?=Om@rDx{v`81pNhyHGc&~ufs^{XuxGPqR#r`(bHl~#=7$G|$^ULL?N zo(L`oulk4CE1RCq{?ls4&vfQo>=DjXXzY3GO=dh-o4a?Gn{;9X&k~!{a~61P>ly8n zxJ2XLlw-^a2W5;-1MknJcl3@<>+sL@$Y;^G(w^Y_-cFv~P{X9i)X$uZO#P~2H}}zZ zU!%DmZuv46H@LJeZq@|Bt-Uzfiw$jgI$iX9W+Hn7NQX9XqyNXC@fFcn)F$pCL_gW@ z1;How_4mRn_C62ko_6k-AL4wJp3V0#i9hW*rnuU~R_@+lzpo$T9^gG&=Zx$JnP_-Z znW3D~_Y>jcccP!wd4c*6ywm&8M;~w-qMv2Y(W~M!>8gYDJ6}u_N6*uxeaY~Vv(mXt z*wc;TsT*3gBFnqgBWc2m+Fs@}65xjaVMUC`ff>q@U3TUWMi_)hd!?C*NSeBYP8(YHoj=P$)m z^R1Uek1s+lW)b370yi9xx~xyt_=Et2Gl}w$1rr_|^&BI@TI=P9+@=we{`@ zwf*Y??x9%Bcvu!4a-DsDm7qUGuZh>zIYUbCtz%uEdki=yKg7MAL%pP#_i8_%w7%-- zQ0*%2MgUIm=Dpr~=WLc&ZXxCB$zS6AMofM5F=Nfvd+*P`c5>GbfB36NSFacUC4Of3 zKzj^NdbT8=bp}`H?2EgLxV_pL_Rh8l&OZZFp|ngGe-;@vu-lzIT8qsx4%L_1Q>k_~ zEHM3YW(W1GBMxiR=`XVv%*YgDqM_v$(Rrp$^EUEKz2Gp<*LwT-7tj~lZ=(8C9{A=m z&QuD7t-+Z8 zA$Y91Y}zDf$jAKayneHEDRye;B3-&DQ-|+f=GhUARmJ=}sdIqzv&H;1me(of51gT2 z^{AiNqp3cVtx`SDYW$MElewYyofI$b-m894oA7(pMpIT}oU)4ZD=$06leMVY$2&g1 zq0Pq0{W7LL%?q>--^jG|Pe}Ceoi%h1&pE*s>m2VK&O1BN>E8Fhi_X&M3{f@=eb_hQ zIKo*X?i0zK3UlU8XDB%%8THQxVIR4(X5<`l!MT`N^Q##wI zvO4Fv+!^`qOaY$u^V%xGgRhdyf=6<0#lk?-O~pv$Mx#g={9(hLuDw!xgo%jdg$p0xR*6*Ykq^w-yewz&WS1KbFgEe|wI-QQWBPVURt~4iaK2Ohnqde;A5N;M{uU)ePN##19x|5&tmnN%49=(zHQ5s?v{rt zMNe3=Nxq&9F3xe6#KoD1Jg!{%DC8=XEe$feTIpsrM z9LK`Allk^zc{CNB*4D_qUna&gpz|)w5rxC8d*w)c+hBZN zTO)SIl=-J%y}&O*?;6~ZXzIPfjhzyGFA5GB?nh4xzvhgpLw7TIc(>vQuleC~z-gRV zI`DtF-)?JieWiz2Ft)t%RF~2U?Fe^Jp$85iM??GH&OLCR?z(po_9LLb)Hg2uqVZ+U z&T@`d_i**k<$fdj(B5w({^@(;mWO7%Q?Jr24@JWx(5}6bN^dZBDAF8Z93{Ayi!r|Z zz;}zjCoH`I53r%BTD~uIB-}Kp{t$nKZ<1tQFy~VjI0Pfu3;6BuVFmYb)hjqllh1qQ zeN1_bJwsC^{K7ViCUl9pUt-HxG*L$N_0bpV$5J$5p9~B#WoVLrBUsgY9rXrveSuHY zbMXn;UHE!uS-q(8XwI69~?0YTL zX43D($120eqOQJv?w%s%&Y2s7FVx!F*xzvhzLsNTQSuq(43_irH@C?LtPeT4wa^(V z=Cx0^W9i065`OOfPpuctD}9=8hvtddkU%1e;X%TIzFL!bkz`XFCBDq$(7I@=Qb<1z5!KWrp zWAsojePHQUUOqk09+Q62h~Bbz-1T1CTJ_Cdznx9UHGXEhY?kDSI{S9e-kYfNogTc` z-m~}x;7LL(<#`hw2mnDzyA|(HUvm?Sq+bVTN*TnE>Uqtae@DJ$xw)54- z`WC)zdjAMbHy6{i37R%RlVG5UZvy0L8rT@kogwe%>pW+*w8@OL<1ARVljgxY( z^=Srf062Zyw1D0==p|kBst!Xd^_{{GQhOrgi?$%G!Le<9{=@KcxaZ;me}6vxAwSRh zHvNp{gTBr_Obp3=H~2r}v>oedO4hX8lGK>i{6+m+;P(V@$Um|;r1z!Ui544qTqJ&n z8GrH>(WRjYo_!R)y5c<7vv10qM_xgFJtKE+71W39NserNe@40Ew4)RHUFdE=rtk?< z#(xzJ^s~up*_DjY&+0o9rv)a%{3t=3Rz4#7J*RsT8i2RF5M96K+(tsU70;m_?Q1CZ zp)GI4&%?mBLdTKTyBfpT{DFGs!PDRvt8LQXA#92hdiwG-dM+L2jvwAL)16e-_?{zk zTILV*~K>JC*jvy}lRiow26mn>a7Zygj)9+x7QeJB&O$r86wHtaueDD_%Wm+WEH5{5&T> zuY5G_u`#}zq-Zzsw?nvKG`j>dub1lzhPk*xU3;ugZWqAJ_@1OMXbl_i|B4(m{NXx0W zH(Y+~4Yl#czVI84Eu^j1*4#~*+bN?vE)(z*eMlL8tNHEGJ&sL$^H=vh2HG3&i@f-A z^Xe#D@93m~zpNA84%A z?|WMtxAS)%&#gNTG`^AFnhzgnoTJ}pYvUAtryBZ3=D|bzk25ZuHmBxbV~G5r{m+dj)qN=)PImd(GoRHGIFA@nPmE$elZza>OU3 zw==VN9ty9PJOaPktqt!{zkln6!hSdTL!3L9@8usKm0zMh;(CfH*4z4cUZ-c($Fu5} z?m*Vg9HGu*qi`0|bfi>%fTl-^^QptMX@N)cXG`U)e1n&NUva*8hz$`B#XrMe>0x;N zIC?m-w`tYEN@vCK9`4WW*=l%SR$0V*=J2{#NacGOC#(apUNFL|e0qFd$#liKO2ISV z8LM6J zJNDVclc22(e)ReNo8~3K{9foXd=Bs@)EYOktMy3vBKl^zzX^>s7ty6 z-uGc|3hJVLrP2?>JJTl?-XB9s)7mk2{tcopbC!mo=ZnWlk<3UgjP0JEyxrLDb=arT z_w%};r%&o`U-9W_a7uqm*D40|JnxEQn{hj|hOxu*(4G0Q`u`QvK)zERZByBAk|+4c zp1V#)6#MeWqD^ym?OJ8Wyy_ulanjs%hOh6{|H+eICEYwj+K*4r-DbBLIYrRzDLu5byuME48wXWM2(|Y+Le7c+#;+ z^oPA~SiZ2a^%2k38`^kQe9qo2EPq9DCaoD@pHl{g@t}Sa?i!vILsDPwVw~E(kt{mu zV_-CXO2J10eQDs;=YpT?(co4RlSY=Y^W5`ymio!JvX-x3@~!&)zAW%bjckOBY#6`B z`Z9sBm0=yt^J%^Qvv@uVZ{>$uIu$pwbeb_wABtAnx0=g;;kiQj@!@i3fZGMUXx~7; z-$K8ufAYN7*cI>TOYvTPYR1`Fc&eCco(I5-2Wfr_#&SSL^X=@Z;v3w2yCPQ2w<)T- zWLM;;+jg%|yP0QXWM_~O`Rm2BiayD<=nc02hNAWlkRO!w%tWtkl$HKVacK( zla}EM)~&+P7I@GC?^f4GcvoGb1Nioyf4+>{w=XmLPxT{v!TMJh)lXRuhWdUE?0uBc z*l4B?4$%jSdlbsch>x4+7rZjx`hZs*d|TmYysGPQc*x!IgGa)|+#%daVzcH zIw-m5Mc1VH=0`8z3+Y?TcP*AgyLUxbaBJhH5k7%BRpX$BqTP4uRJ(%A6V%`HZ_@#MSFEsT*M}BSW4{1kzQ9JY=Y=_>*Y6tb$d)8&| zW$UC9ujQ^;t!Kz)McL=&ysa>P`c3jT^QSn%NBD&=BY3bUYe~!dDeNg+=kK>LxZdyK zV!Y)#fm2`8pG&cun-w?Gw^j{Y`v}})|37LNH&t7;2I1nDvm@M_a!W9Kt}l#HPJ8z!?@1~3@VO}CM-?@&J2$D zNgNpd=c%Pr-30af&iT*z&-ptiZ@+b`?!9&E)~$Vcf!7mHKpR}jxtVb6OT#xlAUo<8 z*%rz)Ag@`6a=xDJ2YGVOMLFER1)pzF&m2SFntM9@Y22^k8w|Myg^MPvLCL;SiHvs= z_Dtxts*fu}s~9 zI%XC2w+v8yh8m7{OPl)(>|3#XNS?&S7=ZPC&vygsd)9}NAL135a|`G%Sp1Mq)YUEX z^aS%nKZ^CJ;)^q)@p|nZeif8`m!~WO`<(`c3yJ4}8}%mI0jsZK*@Wz?q+%`y^sI+@ zCYWhC`c7b4I5)-l8rnl0?(2V*?Sc>^uS1+up#v}0!l&JWyagWb@soXU%-ga4U|zh% zyntKZD*!o>7tjg$r6WFukyhd}UqCDOW5MpT+~^}iKK2El2h2F9gMQk|L73Nrt-w#^ zFV1X3m%X7A7t(?|LF5`CX^9gL{|NYVo&93WIWWES-vWN|&>QSRj(GxX+0qql+3YD` zKU?1A3*K(|EgWlZ(#qR&Z&%R~K0` zPOQ3pEZ6$t5Rb>{IV^6p+OOB_*F*aCVm}plm`ANzx{87#!sIkyax8w9M8GqCS6;Hbx`x#EWSH~I!JwIh-u@#5`3QvdtRYC z^vks^ckp12O3gK1i*~ga`rI*V4KdljPw|!Cp|uJCJ-L$wTt(BKh)eJf1D&9dNCK zY=wD5yWar((HH|FUn|*Hu5fVwB*Mz!7U&by8(TnsiMHTEnJq_M%lR&rHJ&B^2;)`{ z)+@M|ym2VrrjAdFlk0M93x36W+`*S+$Afrf8}Nh*H|usifkXYUuEqGExvlWTOFjm# zqm(!B+d$kS-wzM=hlyl7_S`;gmV3X={5aBf@=1)(xyPUZ^Uth5#-si~|D_Yx_#N~i zC&0cA^PYB&1JUkt4V`$aPzOC|(u+PV`?CJ@Mh*6-_b6~iTKrt#w}O$;m#dpc!Pd!sE%;lftKBP~KT(WK~QS0c~OUO247t+DD zv9V(b%9`5O)(LVT-l_`REt|1*sbVL@m;Uvfz%V?qu!~fI}rzASvSJ|p9L)Q z0b^$L;gK$}>^`;yktMP(&UCYXA=7qzNZGx>XWL=;%RTd&?jGRvMYs$0D)IMUP=>tU z-n+-pvO}kFKfOiAy=OL`ito~rIsOkA4+YijtkYW|z2&GY@NKlp^AVRPOeB^d%?!H- zVJxRE`m@X+4>AANtm}!&)>&q*0!~0XVzmjMKvsczLCij{3}qZ^1ZJ#ewb2$n$Ew0p zzK?U~w_rbX_EWY&>z4!N{{s{`qaR0VXCh40v_`D5gD4ZrO!+Y4v!euUN4;=5GngG#y%CHuO7j`@u509Jm9?^jS)NXuM& zgAjH37h~mjtUBU*5AJJDVhqvLkl~a~LV7t)t1JD3TyJO?h4u#h6MVz)WWy#=hIRFQ zR|5zAHsHL4?_{hR+lcv5Z)f5xIO()S8AQBwoHqlG0PNHFA{zS#kUx)67Us_Y)})%uBRas5d-VH)7j}v^06)=KLty zq$Ji6D2v#ujQR%oPupbu(uR6KKcWtPvi?s++spM%*8iwON5(R4YmLsbf7+1g-(Wv2 z=Np=OAzx&hjyjKVaNH4(a&G1s*uRYhF3Ppc!vK3vmE$nA{}Fhc|HJp6lVQ6_l$r9w z9-Erb_olq2|80*~7%s;T!?8Y!GAR&uEc9p6%>H0J>e_nLwSVOJ6MVc#YdzA9eXvz* zBRc`#Uw>gwvz&)SnT(E$ZwTDtgkCRrVi6>i2!eZU6eFb)kO=3merj4 zrFD^2Uak0&DRWC@+RCr;zG818@c2#9*d7~ZiUaAlZmdnK9^Yf*%-(RzyBu*w3S->U zQ(>phEfY@jo0#Bx8sp&8c3NwK$2T0`BYs)V&nwy26Y;>-*NGKF%U*yD(Z*1h$}x}! zIz*nn^5t&m-}kZZ-I*DVKU3jbgbe!y6@v=zR?*>%h5o4R2Rs1@!CbCt3E zc?bO`H9mbQ zg=5BhQLoDJ3+glWXPhTFe&txkwRboAC+rUxzkf>H&gkoQMqlJww2xPy|9!>DN$leQ zUZwE`cr^5Nmo0*9N0+8FH7t?in{^^+U*Zwyf!~j+OLdji4ZvJ$K5*wiCrBH{zN#@QNt934H8X0_?IxO7u&mQPu8QqgK-eQ zncP%Lf2<#0Ot_0cy?qtFMSUgayjtn=6V2mXwwHLevMrbTy=7Dx&rh+<-hw{g7W5aS zY_)oh0Cg+Jh2`!q$Fj|2Ux9rK<`w$#`!+%6SH{48*>6Ohz_ASb1Ku#%W*&PBeIWJ$ z=oc4`_7rtH`*QxZKIkEqdrc4z{R6%STZ;Zcq}pqPIXhWba{Ywk0p>0Hss1@v;?fW8 zne6l7K05R})qTafJ@ez%@=RVC^#6^! z5q%!UD-ecx#7-3`Gu$KhEZryx{d$XC=;%b&`FIM4V&6TABxYmeDVp3%@E)H_JU*EUQ6T^%~mJ zo|R^9iRIc8i}AJ)RjDZJD-2F*&&uV-?e1AwXxz0uD)WuIv`1x*ai{j+IarkzcaO@& z#$DUJGQ+q_yH_qW?$qv;*BCd>Sz^qm^>BXWJmbbW>bb^^Z`1N#VX0sD`IT57)A-#g zXBc;Bx5}x;o!YGuV@-*JdpWBn7*ZQH6O?g|kFdjW+HKQ8m)I(?r#9+ei$zs;;~pcbx*GQ= zQPtVFhl?uCgGl_L>U$c}JxEkx%%}V@);0NyI$hr9DRD4Q<~BH(3p;(&Oq^fQXG~L@ z*EgZJ?akjt>vi%Bd7&-Say#Z2d@)ZBg*D9 zoq1UH`zuG39X#_4_FuZTx?e20eD%DN%l`n~JOmoFVRG-(8uW=J?%@$-lR#HKu;lV9 z@bD5W1A+Yb;-Vq&^FS~;|!GN@o3XdtCD?e zL)kugus`;Al#=e)I zzNvY?)^)%QUX!Xv`_Hu3yHlDz{5I&U9@v0tBqLy%>54QdBXzwXE>chELwuFapi6?n0yqPWGQHO{dI-WbZrErYJg87UM z!n6CO0cVC%Be72?tPE#w*;m>gkA8nV(#C$07=nJuJg3UlUvR$T^2RB+FDVrdzQJ^6 z44y$wm3Ii{K6+w(Bpm%4xDU?5_xj>tcW|$B!yZSa@Z3%Fw^z{*YKX)gNA1E#_0sWPs}2Fi{!NVq4yWrVvD9E3B@cM#_V z{3ggb=msE6(jwgB70a$eUYuFtRQ-xHNTcWv8$y^DVHFwfz2dX%>PEovkllfMC-|Rd z^MJqM(K(n0!pMVk;;_hn0ko~pLEGvaw2a>Y?bD#e22YtTTW;w$Tj z(l~rol}yJOSm8T=YZ$L~HN-*|6Lo#Ah#iGHlNsT1a(N$X#T3wjeL+N`;( z_gjjW@;_|i<5~jZ3#MhgA57~&X6kKC5bZ(8`ihYi_xBi?=r_v9YWcsYW%abh`i9mK zDj52b@O%w}r-ak6#{|4d!#wbG7V2AdfW7!0 zt+Ay#?3H2r#dOhqI1T$v=3`IBJnYSwld_X%$&X;q48yN8=?1;gS#TN#+i5`C7LW$) zwFyWA_T5O>qyc+(ev!;WEt%mygnd2Si&HlS55{tbv0sMy>4h$s&T#09d46G#{7)m_ zrkH#~f6nBa^rPN7H|NiE-UIzJHf+-3LVVJV_}#`0orM`U_);d6TV?azls*qZp1ww& z-p%qzKTDo?)CJ7b{~I!W>k5>Kwk^vg%89YnrMiwfjeC54PA52cvHl;#qn%r6l738+ z<{JiiN#fTI46_|X!8u+*uq^a@ZRaJ6rnDsip z>9{GpECur56tXo!w%E^( zN?xSvM>^oJ%|C)TrEb6*_bPQ_U*bte_g`*6pZNxiLGMQY1$}wc!QW2pf&NQJvmau_ z+5H!mzn;x?N;@4_dFkcV`1Zig@>;x~=l;bx)pZZzor?E!c$eb6iQ#xZ&G5O^b&rdk zl(Ftb)Vt54y?7A&9G^?sNt?qw-p&m@o|*X-WMx{8^g`P~+)coJ8f^-2`=<1cIsABv z#QPX{uTcM#4|iFZI{0gyCjs(3%=jS(<)nO+lk!nc%6C7*As^*U#rs}{<4w71@xF`U zS4jEGQ}HfsPDlO2foVB%f6C4mbQ+BOI0r4$aOf_i7xEt|P1*SjaPBbj_ivW})&GtB zl$-KXUdm5-DZi!fU^%7EyNjLp7KGGyefL0p`(;J?zJ~6fiThQ|*N~s@XOIueL3f3b ze@L_Zcf#-giteFvriZpu58DygqgfBzk#E?De8W!ouDcC*kefCm{gEf~jeL-Aq(kD} z1iaheuIUpaY8J-S-;}bmH{8A9=6BeBhcZ|PKY{cz&$)L&;uD4}rp!s1TCfA`ijL)q67k5o{Iq*n3H!gSdzOi1vBteh$ZvH@|0egcTwPDZS#;xp%W}U8 z;|+&(u;>%xIbMM?Hv?h>_cNanJ0pNk9KCO#!}FZS#`yYt;Csf3j>739@nreh)m&e4 ze~WAn##r^Gsb^QlSF=897=Z72V9diY*_Kn-!-=#tEE$h;AA`gh7 z8d=71;i>$$u@sa_#~Cw;EXhb1sU0D{Vi_ zNi|Ro_N^Evzny|ULL>G}IQ*Um_Dj*tyAH#UM((TPeu(D1OM!cSxj&|Xa}!?BasHvL zN~3IhaX(QcZC1}+9K$=?The^?!Yil`c@I+qaO-daoz53l5;chFuv-WSR_!u5MH!R)2 z=h@-ju!Yum4!c`#J%ZV!w;>i-bJw0pqNN z#DT6+25{a%=?=C*dF4KShAW=%gKp(n0^^5tagU3Mlj$;XQLl_6jBoG`=Nmj*@eMw$ z@m_^=KO)oFd=C3eE$3GwuolHL((24V_uq>CI4@p{H7(4Amb;%E>k%a#aL=MF)2ydC zA2=QRSy+B6YH{CU?flBA*t@bJ_1a2Fhd$L++<%S!REog^{ZQCBanavewhDc9iQ67` z#XvUf?X7wQWfbQb(Emg|f%#J2uZgts`DlHU_2@5QML!jy)~er z-Q%7ttjSiA=W5cX_5j_rxX)10MWRiRaH{5m`lG_VppxlBm4`jFbdv^hqWtq7RgU3s zKO^D9UBKr)9|zA6>Y^|Dv;zdz80C2Y`Q8XzF&=YmlTw;q!TKo6HrGmVmvWQn4gda_ zkHa|o5Y|z5gU8wR$8^krpMCCC>ILhdoLlBOX`COa!h8WBukIjCbI*)Gw|x|r`q;-ii`W~KQ!b*k$- z>I-+?@vI@_Nol$fX*FTZb)jW%LG_g^w_a7Iaj(Ws5sSVI;*$PtwLi)d{cG5kBYzEz zzgz>4_RstdF4tc`)_{5sHf^6-;ht-p?Wxjxt<|@`v1be8Guf`}eIu~_F=scpuZw!w z%DxEqS3>_Rn|C1nQfDX^p5ESp7+Waaax4Yi^1J}b1lBmLz4(?)?1NC3Mc^abMx7r# zpFq2n`Sh7v-E+u18{%5Vvw&zzJIS!Wy4ANo7}n@sw${+V-*XMVzXLhRe?Dze=51`G z=f50zS4zC$@pt#KLD(BE`JrF+q2}R*Kk5N#SCSXo8t|G*Ua%pL6T1|=q&(*tUg)o} zybzE1Q;u?44teF?V9L0>IeZnu@tqhMPFpPu(ml_pme;1?jEbeZAbVo_M_FLg{x){4 zvM0!gJGkLq5XATA@M&+Jw#Z|*zLSsT1#XmS8Bd&-YgX1iIXgd5H&Ld8z&CY9ENqhb z%<{{)8@MMPyyV{aAlchc_c|W-8IB?xXG7$-kS;}9(7o#<<#RA@Z(YK&D$k{ohIgP- z?<|)AIt!N1t@wWm0&9|GyxA!@44d32E**D5%TsZO^ z?T*=p$u-aVG%@-h@{;!=;_kpI+?!O@kcN9*VQXB*u;a94Z}oR#Tbxe0pa`HS&bvz!2V zIksS(o`vBH&%HE2x2F8DKf*m)9H-EB(08k(ZLlv9jj%fOU3ku@4rhz%YSliZbnxv1 zzMDEad;5}iE$(r*cn-37vM3p$*K_0?4NQ`H?)avyT4Izxmr{qmd`(}vE9zrJ}h73c2J z7ut&SvMy&`!glF>+6&4B_OVO5YEVMV?DZc zoBT~xV4F-jXb^@x#;=Oj3uTL;{q z?85}5jr~^ga*(D4j0bKx_QKnY^Dtk@_B22T=nKp7FXuE^Ude;|1i0Vaj|)A}Ki}vD zs#3Z+D^7-)Dzq9oS^)dVJp#AU_3y& z-bllRv;o$CUg!dElMhGHo)D+I(I@LH)IlD8qjwzcQ)D?Hd`nnI!s7vBx}($Ip&!mo zk#;@yWd^kOrGfhvh(lZW40v?Y))xiSST?i;c2|M?3MjuVw3m&{Tgb~Zc<(5;hr#m*_>k@<(8+d~^~x`h$%iRf;Bihd;{eGuJDSo*~Bl6S;4v! z_1_8)>JQ9wVa$v3jHx|kJ-Efq^OoMFAL4rqq(fa*hJI3$9A~PqNDp*fQQMPu(lu?Z z#r?jJ9eLDU;Jf3a5C_(ER$|ZY%8F9*yawadYt$G6HYo4Q((z(y4(&^GIOo4~IL4|m zm7JR;%yGdCxDUW~r&#If!MK)+m3}$V)}0vu+gghAMTmp*VN9DGy9|J>^p&=@M z*nY^l4dAG;#gr{Lm#g|YwbprN^er}M`}q)Y`Rxbgk@EWM4cJdC>iVUK$JkE|@nJs_ zhOE_uGZc(HkY&j4lhilnfLG9lW?<}P;H??gu0R_dNq?R#G2q^ojkVWQJ5jMQeLPsJiR%+{Z~*5K`^31S0C&Y& z1?DDkegO1XC-mU%mbkt#hx!r+ZiYj4@-cK=2f^41ca|Uw^OvMODDlY;^D#)5yzd0_ znCv5Z#^Zb}%3>VKJ8dn6X-7KI&yx3+ps%_Uch&9eE#(6}*Do=DGlcVfZjAHLhm`lv zAfAnoV-wOd0kVZ5O@}czI-zU7m`w;f0{JuI`p0AdJ`DMAcP8`zeL@Bo+PUrM9~{OU zr{Re?NjYCi{TzZ$$dkONha*UjpBKUi+q|9xFV-jI#Xhd%q*T=buO4`}BaD9N$FQtN zbFC)M!CrlxepPQ+^Zjn_?~laXv8!xLs@RKmyQu>89O{K8jAwBc6?t5WJVst`LSAo1 zUO!XXv-;W8p4HE}dscJKb7N_bN~xn-%o*dZ8O&i;GhcXTkA&TTkxtCFD!8_LHSWKG z?P$0Za4KNnD0;wdz`#-TCfv}Uufr8wH=j1L0Q?tJ^DdeV?giBw@t8bS>xAhs8*1mn z9_LGc%z5H|ruo$qJbhz&!yeW8VLI#&c&Wg{L;8(w;NfWrPoyl0;l8Z$+N&Y^)iUn- z`LHKE!EsC6IhZG(hkU|AIl15JARdVez17X)d_3lPVY8esDWa{;;#@q^1)IE--;2iB z3U|9GUB>l}VcFsxLvnp^24sQGH&U-ilk}TH-KcWt_e+Hza5hrE2Jd2~;~J#f@*6{b z@N-*!qmYIfkUJG=Fto$rHwAtdTYf{~2b_arEI-r{SP$BHaFpeTI-_nl{9yNfeyBt0 zhQbdv?e{~SBEr#EMgLr;AL%>@ISwJ-!=OI`{I6mEe?ytu4t-INEO+QLl|?yX=VX)% z>dx?}11`(Dyl)Bd9EO}nAlI`<|8q!hOFTw^hnx%4d^lEM*^{;l8hi(a^Qld7@Hgcz z9&VPu(>KjPTdntrqi(kM4x4qbdh~0#p2fZh-RPJH%m)YTw{=JEjl;S1=J|%0ld#36 z`Z<_qe;V@~k7J(WVa#(ph&ik&=rfJMb1|M&JfrYrpg%KD%jr1FayfTr;FZ1Rc%|;t zoeKhYHRpDKT!Tat#}y5K#`!b28wR2M08PA8g1#u`@&>@~!4#|+gE!tXEFAR^`Zrvc zc5p8j*Nkuvc~j%lB~|y}-a2zf8{3+Oi~yRY5nUnE65d}8TI@BE>rt?0zn|vEJHQ$? z;ofTWVe251N=HeR3vxTC_o!doU;Mx!^z;56Ex(ymbqG2}ovCpH@0cLnA>gs^%RKhr zn_EOd?4h4Rl)Y=Du#m<+%)F1=!fkg@N=+fah zVjjljC=-VeMi~Uwd*og+l=Cxbu!}UE$84X_PkdkX&6*n1N~*X=4S9kxkGc@}(!Su2 zyPm4+jX&!KlwGs;gY{}dzTP8&I@O69EN!e#)Qhgz>~qKMwMi>npTn$(LmYGDtVd<~W4GzGVIl4udVStfAaNXU7&I4b=JNuu;1X zF#9rSZ)e8~9Cu?*(i0#5_*t~wRo&?m?Mv zaEmHAwq%+(P6XWGPEm6bOjGN?Gzsh(tizpuo@n3<*XaQc)5H4{Dbq3Nfp>m-oJgDz z&}T7$9~T{%e&W|*J~ozn28TC?2gkuVQ^S|~{onFt-;Q&TM%SEIlljp;D2+NlO&&~y zt~jQ^I6&DQc&KlWT6rHC$m1+p%!x?-B2M`YSnxs{D9bj+^K<)ye~YrTq;JR@pl`(e zlR81T!4KBAohFn)zl^W5%mJ47;6hfjKE=5`Bi@E#kLr6Me|lB+L;L}A&#Cz49okLYVJZ9Q4XLoxROoPu(jh(|!m(>p zV`_6g(7s}!KYX_y`@l-Z#lr?0VY9G-CemWx4Ia{C?1Q%ADCi|@l|xxaVf-gx6SA%f zF4M3D>Ja0_5glnGl;Pq)8IDWZp!b=>T^FfoqJ@lK zIOrFEmSbSbV#3<(LPMd`lM~-AFt5(2rw#=GXJRD5rAIpd0=Hc^jj`ZNG5(kskR) zS})%0ckV(z!}#-zae3){=y|@JZ>YmKy`^oLE9*CMVI@`O7T`lCA)eB9S)KE&^-@JoACvrJG% z=0hXeJd-E*{+n#`;!&nzp)Y)^LFNVLV&t3-NppHF?&7c6y&@P>tX1z zj`IFSg%oD&Z`*x zNFI7`d>pn{JF6y~=Dv8IAD-HR{Yn{;F3NrskI~I01tb ze!{uVP5o&3?$hPMPP>%X($AlML0o?T&itUXGcG%Ceo0&}|AM&C=UC5m16!~DbZI^R zWL#R$+%J4iJ!>7_4;+q}Y@70@>wgf}Ex#bHV&Fs|u3(w``JrXHj=XgF!n|Kq57b3$ zv)K;u48?Cxb4+9H0j>?)x61oZIi4au*IFCcFXwy--qO!4lW|h zqPHmP583N<+Op8k=e@{XOCvc9<@^KZBUm=YQNPLi`#FX{ndQ0{>#y-h_X)^p`)!8b@3#l8 zGg5y7eLub(^y5g&_GCv89{JcfT*tt^=1z4Sw~!V*NIMDspXhjPe;?`xj)m$`zj2IW z!VZG3zrO@t26j+~b1hA_eXQrToOMXAKTa)gZcDroCfEOT-+_7w;0;+MZ`AveH}E+o zW1Jl0n{mY|^mQq>o`Z=t{?yUZARVzTG4vj^Sq3-V;$i$a-kBdnpJ34&JlMZKe&ffu zFA1XUZPD6s-)qs^{)~T25D%QMl4Dmp{l|cJuJjKIqBm(ba%Sm#vH86Vd8EEOD_iyF z3Hmy$OSp$9xW6#r9BGR@N7^_)g^iZ}yfE@`PlJ)s*2Nl&kHP(^bpQRu7Rpdide~p3 ztuyT|^s{K=n1hh88}PZt4eU3aOAi72im=v%b@C?G!BU?XFL11mb*r76CuLdW+@WLi zjrju^j<*c!(!944V~h^X`vF{g8&a_jgt{C4oWE*1n2K*eV~y!B)|!rBy#Rg3rdaSn zzZ+}G;0KxMM>qZYAWY6vpq$q&5j!z2bT&TxTEx!){+Jf<;nyO5n%L<@eHtte>sSZ! zpda5P=W;l2LV4z+j4wf5kb$uo`|jGmK26sL^AL`(df-U>ISQZazY?B>^$v^)&PBf-)`g|!tybt z8GfGSLc@mELwmy50X#-9jB*fWc_KgFQ^2+DgOJ&YN>KV`+9>b;KrR!W6FHVH_;|K>|jMq!suZ1UVHyE!w^v8br0LVr=?gAM7MnBAU5n=V{ z+sSaWYpl2Hq4Ps{TpZtFPlOrEaj%U@6LAjWAuQ`-mI>&P>wu^O)ZPY!OPi)`o3LtL zVBanJ#KiMlHB#QGCf&Jkqh6NoRdA!8u0x*|d&k&!9qsu8?yg`tA{?GFdMeH=O1BsH z6QW#6ciWWFYv7h?94e|ZSOzq`7xBek_1~lAd>6_r`=Ewbe0YuY$2s$6fAEd>D*y3_ z*N=}l;@c{JuCJN6rUu8AYsG~&rp367e{fvJ{~U1*vEoACK&2fzL4C4}vdXxALN7fn zda0LHmaOPAwkWId50=&VpF>ve!9Ih$z#LiCnOc2LBvq|dG$0Sq4vprUdFmM#HOG^V z{hxs25f9GcDK~gy9Vya(j>YcVbNqw3^MkM*tXs%)Q$1mOXp6VXwLgp%IA_Uqs6|+N zS_u2#d9=mULHm>{>{m#V`_O;`S&vVs9$B^u`wHva7}tQd(T#cpxKGpL z6&<*q6^}RV2|VYLC--g!@LK4)zigoL|ajzZ5o81u>$vw={HU?>Z4Eq2KjkG<;`=klu8h@`8oH@jOe0Y0!9vk+DJv8i3EUTm2_(y4f-22lT z?f{+`ORq6JI|juUFUnS#FqA3mk3$)|M(Vk7P>C!LjqS0g2*8I1mDm{(I_do)05=GfUjnl~VAWwRGgK$QRvUvuF z>E|3U`jY{C#*4C<1_yHt#Hr`L3R|AbMA;;b(-5qSt3=sFCJeej-B=aJIu~Vi3v@z$ zrX658MfvK)`&aGo>1gLUN7NWuQYF7byb5g@+8W|ePpY0$;c~qkd>awQ^>Qg^3pyYB z5$^T2>Id${^903f%O%f{>wMv!j!BqPYA$cqUTM^=^1S;{oP9<6dkA*QGo!SrsXbwH zXisIGt=nPN(G5efe}5>>AULjNa;_hFVeAM?xF&i%G!^WXh5{NrzF)iK_2%e4YKo>za4uCwS6@3_vQ zs{q|oT0XCMT%NCf9=1+-y(J1BNSHcfdrY07Et5Ly1)b4mac5aex+=5yVvoa8=znE| zid#^+Y?`$T&@8@iNX zPvR;0otKZqX>%VE=46*`W&e1|D%>~MihJ_pIl-fVdB+>p&(xkl+?^!rI^3fq_eQ;j zvQXxGpy4&{zl9tb2sgYk$Sb^=7vRRet(tiem-Qy-$cu8;zk@sblhb2x?)UVWH1JDP z{36(=e{PjO4Lr-ymy;&PQZOUlnLifE!c8nr(o%)Gg?wJ>9GA>0ZQzy9jw7vY%HZc!AcR=YSh) zEndVWFVOkz>2aMm4TGroWvzB&`Eo;lE#6;0gcU$*^ITPx6ExZAaQ0 zZ3MP=<|gD@5o`pwjdP$+);UgWvyE&*K753J$VX^1O+E2Z3F-~2&H>z*>Tb3X;!7BAwG7wDvoFs(Ofecu4t-T}XN6hCPrRvM&@ zyi?L_BX9@ENjmZd4{0N|oVDOvtN2PAsST17aAT<@CvnLObkasFIi!sgX_@np50Jl} zFl}U$@@JY3=36##17P5o{H`Z#h2y@))0j&-O&dFkxGG5Ic(QdB*H)gn+ZHKtjBj}{<%+j_q3voRNUJqKl9t1DY z`fUer;~|R|amfpG(soduFn6xntNE~<`@!#i#V??KK^mm(++WgcJ8%ccNjmZd4{1BL zocDt7y^622oqL1i1l+jEl9RaP1v+Uvrp!YQX*=_@%yW=ukRS8#f%Oag4$iS`Wj4Y0h)vGX0>Fc|KI<`B20)2fXH3yylRX)12pk8xL8$h)Z6elX;GGU~iVn z^D&TZ7WmCl{A8Y6X^?q7tE4&4;SP|KbmR>lGS6)}XMpbv#aHI}j37AyH*T`zBrbV@ zPUg8Khs^U)TIS)%6UdJ>mB9J}eg}tJc{~O%aQt~r*a|oGMI+*2f0Ffs!ELEdXt8bS ztL>w23-$rOv)Yzk$iFTDZOeAg_`ZQ{OBd*^i>0?N)SG21fEzPJv#k)9dIO!bmG;_J zFmKI!$v98oZ>KtvmuR*Xz>SA2Uc@CY(D`kpm)3iC*h+iwYp?iOZHr8Uw3YTH&9(w} zfSjZwZ}5<|V#^r`zLAQrw3WypIRQ6rvg9N#d4W#aifUV=9MV?0Xqh`Ae;_~BaszDz zepoB<=XZT~z`!y2FJUX(*oxJ*Y>%(+_rGde0{SLyZ9nc7><50bO+tBX_)4zj$hxTE zbLBpjzhKLm)YfVby*qG^i3i`8;n{S~k9sTQy$13g8-72vqlS@>*dGpCjKo?izAy9a z*O-T7o&{jV>d7 z1Ne|fTsIZ>gWyjY0@lZC&#_mj8)U|Q9(g7Nd^lH)`RMhSBbVQUJ#F9X7NnC6&gX3FPpP#o1$?H#16ihGPZ4w>?+qY~xqdt;^1HI+ zu>ffcSZ_K9AJWxay+y0C?gZrJDraIykNgu7wLy*RNPssQi+%4cqUT>iv z#Q9i;JD}@u0D1#Ixu>i%_`9+9s}y|bMtnS16$>|cV=sVw_kln5Ok$n#;!ntjdlqDT z2yfuGj}a#KV8M?3ZZE#oPMzy8+{+`=Rw3s$1>+%9QZ^67q+s-mIpF$PyE#gx6h9n*`>~r7wm`8UQIs4g*VG2 zai|;Uatp_~NI&zBwh#v15=J;-+LY8oXJxx@A2Bv+-5Jn=Z3*g;_JnkIr>t=M{h+s= z@C&f97Rnv%i}k}(h?9Eo)MM@oX)!eb(Kko3epwaacztjE? z4KvNm3#>)UI;kGVclxwrBFK&c?Bk(+|i+07Ty2!x22b59Q{_t-vP<4|D zUp7?LO$JU+P<0ddl1A1|cn8!;rDvBvY2PUK{MNYKvuMgsDawfc9vABthOvxH`;_U{ zUY7;qhFD1x&sA!!_-A*d6Uy@`Q~r9@L5Q?l9P$Xl0Whj<1(%}HqqAKH8LYC03W;&_6qHacYWY)y^}RK$Imidhp^K( zS$1D*t;@l_SkJRw^yiJ#H`e9c(6`o!yf3E|_u#;9Ao9TLeg84Nhw~Wa&xAdCaW^l^ zHrluf)k!V$oE5~=;QDzo|84tsm+aeh7-bIWl{SgG z@eK0k40OnN?e=CW&%&dQARhC40_sA-(r)l({Y%|5U$C#wpFhM!dgsOk%ck@1DDs>0 zro`I_yqI7-!`m&IzNFpIM*Vw;aRwbQ>(PVYN15HwAJ>Sv9xH7QxCY0BP#eN<*a3CU@LgwxYd*lS z`Meg4M;<6+Ypk}9w*9+cJjREIW#cGp&Fp11ZK7I^^DXlVAlPz z?ra5HXS~oo9qlzl*1$DwS;>u(jaj2b_dcUguIH|;={f4I4)MSUYV zMe56e4p_h5_E*)1H0^}63GimRO2Jpv+2UJi7p2S(e|>W=&YF&v_5gp%&GtK>?W}D+ zZ_2(p+x3l*e^Y9&$~TAiO7=j0)rQhmVz}2u))#C)82>?>AEn<>$j*9Vy7Z5@*Mw(b zJ(giC%Nr2RI)gZUoCtX*KwT=nQ{6> z?2G!usTpU!7cJ{gl;IT6ppQB-4(k^ckejkdxxr(q5Tn?Z($5o)JK2zqKcP-!I}v;i zgL%PzCGUvk+BWNW^S$Z2scVyG2xD8$w!)+}AY8XOrXSl#THwk&1W(y#M_#ZEm;1)R z>taVVU5q@s*ejr0=v21ps;p8D4Ig7Z#zBX1!1M2yvTTs!Cfeaf>@|4vWtE4<4mV(b zgwzrId8aPprd^vfY{cFOnJ)NK2G$9l?CX+QzUYpJ8~MJp0sEXi*xy|7T}*OCE$-lT zc}6nNNW=0XuwFm&W7RM9;?CE`)}qP|o5HZxm@B}&;*H={@!hrLJ1}0ZKZ(MI*5vPv zXyzYv7XN8Be|I4N2@G@pLjH(53pPSsDLX-$rJeLTSqVF-csVT@w$;HdH&OUxN|XzI zc2}=Yq`Q^nj#(mgRn1xo;Hrp8BzO6Fv(qgzt}k zMAu)`d>?n5@WLyu_!#dJ8OHFl{}^V6H@h8;jJ*KzFH^r8+{zJ!jS2iKzf)nROhAi> zzmkV=@{WJ?-=jF-@BPQd$oJt$-j^#x!}U|U@E!Hc{sz9w3uku4;6bF^81>!Nc$d7r z`PTaw$*%l=-PsrKd#+hADFcyYKKJsgb?9O?+#S~UoqG^~KbcOv`=t;P;;Iz+O1WRX z*VL-_btmP!Wc3B(8NR1OhJ3I7^kMnddW%gfcTGSrBpk)}#`Wjt;+=BjiG+=KuZ!7T z{R!SlzxsY@n^aL!H)>_=_*7AT;Es7o*QbhiXD-Rz^?a%rSGMr*l~`F=`^t)*FLs_d z`=19tIeh+%i4S~yX{(QpmrQ)@QT|n3d{d_vrqtiK`r=btzTJ1}qS+S@N$qj$;K=hY z{x<8-npaL9zUaQczf%6g+uJXi`eOBC|N8XCi!NN7aPT)PCtdX0Pkz-9c|r6=Z|wZ^ zv#)OceB5s{SJvNl`k8UjM~AF>^xrf}HUZTnuG^;ih{;BG3<4V2W=Vp#B|9;AOrK46>J$l#I$KKk}e{_68 zgy*H#+E)EzZCCFc>Rx;L`iqmZpZnmm#mj$u z?Xs6Tq`W*NZcO?WgZuqy;-ZmZ?(Z@)9)CRXwH`mb{KMz_2Pa(Q`P*H0w2$k%t6=iL zy;J&LbLFY=hyJrFW?yXWHE$%o(QW63W$*V{d!p0lkCc@jZZkBhB6D`3`}!r3BI>2@ z-LG$GH8kP1m!Es@FV4!k_{!gn*)=Nj>2ddMnf#BJe1q=k{my`47c@FsAI<*kviL=# zPd(M=t!I^ zYX`2YD2zB3vBs0MtHW>l%q+dC!;dso@!!+y-*F9jW#Zez=YI1{tDC1~K7IK4cki7r zv)|0PH#gnunX~r4-ugcNqCN9&{(Sr!Q*Zn2f)oG#;DWo07Nn1hy#M4Uf9|t5;=VhQ zonsBxjqA{F*`!;x=Xbra_=-R6TV8zo@Z#G#9vr)J`wx$fKHbB8tBg!69G`Nm?Yk3R zIW{Tc)vZ+}V;bJiIq$~3eJPF(cI(3xz6Y=Qro3-@|2E;>mOcAU&Zm!d`TYCj^XHBJPsfcv z&YClHn8-`d^@+UYIXNP2#-&r{inOKtopQ;XOJXM#7UmaT7~8)nLiE32Ab*P#G-qN! zVCcCd`qQpE#h2AL4M#|?$q#XgB6 zU1xKqcd;)oLYze*BnABoZpch4@)e7WEGR-O$(iEI`?asI*tcSQVPX2pBKSL}O|XK9E4?SC7pMDyIm;JmI2B1L_RYyk&-5`S<(QMdyfDKDFf~8704nhZ zE9}{Y`AZ7Za}f@MO3%ph2Vat%x3oF%iXvY#FvV94uqQntnZTiCCW?3XfQMwfO17%_Tv1)TuTt`b7?vR zT#>Z+dI41zUr@ZFSX?26VQIMP6>Q)bVaBT^?% zjupA-D+8`)nOu5dnL%X3m-IeZ9@w_ z7kGT0d5N5q+l_Y{ah=%V&?Vdp@q?a>^C8}+glL8PAB1QvoOP{*SkYFvD!SvFhcUv{ zwIA??i?9kDcJF$zXniUL-(8#_+y@X(=5!HOJRRRpoF&2*&Jxb{Swd7^A>1YNglorD zLae@8wBEcxxK^w{+_wr>!73p(mkQT<^ltEdRj18bq+^E&t9(_2ufPeDQPz7+_)>%)_!4o~31@blXq8nb#O@;^Z2u9YrBS$cA4S@Z31<&By-xhQ zXf^fk7$|=WU4Dmjd?(ydILtoylyFUraKiRSKtXLBX8}G;bgHxC>^aYIC*XqB{pUMQ zzwVBBx3}Z&+Q$)33~*du401%lP^a~_1jqRz!4Z4LJMOp%PDI0GM_f6@3BPih<2*9W z5hrFk-VZN#Jh2NM5tR*o*^ZNw?T8O^o$xhz@Y{nERVk3CT<0^gNc}~XFuRcQ5@i!n zB{Ek5W9~%ytIlauNh=K_Tctm3igfIf@*Sbyk^0?6ztIuJUsOpu{Z_r-s1n$n^pDnW zoV}EANB!=k-#E*Hzo?S)^jr3c0e97KH~l_ezhQ3piz=br^NllB@{Rcp`R=9PvHIOx zzx(KSU;T!;;xDSCzkXxQO~R@>A5{{k;duQXsNaM18|M%37gaJuzcHsPVOcQYpP=DH z`4%PW75WWnAf$ni20|JLX&|J5kOo2;2x%asfsh758VG41q=AqILK+BZAf$ni20|JL zX&|J5kOo2;2x%asfsh758VG41q=AqILK+BZAf$ni20|JLX&|J5kOo2;2x%asfsh75 z8VG41q=AqILK+BZAf$ni20|JLX&|J5kOo2;2x%asfsh758uQAQHjZkqlYC7OB^!D(uffwMvfRYB6-BqJ%^=OcdhL_4=b>G4NZ@C>xZ%6|n4TLlh(m+T9Aq|8y5Yj+M z10fBBG!W82NCP1agftM+Ku7~24TLlh(m+T9Aq|8y5Yj+M10fBBG!W82NCP1agftM+ zKu7~24TLlh(m+T9Aq|8y5Yj+M10fBBG!W82NCP1agftM+Ku7~24TLlh(m+T9Aq|8y z5Yj+M10fBBG!W9j|H~SPg>XFK-xY`Ahv99XjSmNG{<<0m-qM}YN{E_fY`WYoJbmy? z#DV~o>#+!NSib9lC;zuUwYxB!ovJQ4Hx>-i+%I5^D^^qP(BlVIq55nv#7W* zf2AEd<&v~1zT(-1`5EIgGYfr1MG6ys7Sm~Y*~Q9#c79IIr0aco23%g0Wr3G1Ctljj zIV4}<%UE8Vz9`2xJH0pyzG*%sWm;OUFE^uLWm-noQhEa_@)aAXs5m`iDS@=b>Df69 zZ}wTTJiRbeq@`!%L&}V-%xt7NBPYMehZntkD;WLa+{N@xOH~LK+fBC#=Gt(wrId{%X0Sy=Gynzdv5otFRW*7TRS#r`uxM-7> zn*{|kPkm`w;N~k7k2(3`DJMhR?Jg4A-MQj{wuSl2^D@(lvTuaA`DvoD?Gj%;Qe3z) zO`L9by|1v?w<0aQxVSKT5yXRJVDe-8Vo?&cn3_owZ%3^t$Vo3=oL`umR+Pm^kb?Xr z2uxc78xe=2(u<0Gxr=hZ@PTL)WFcHd;&}%NP7{B33D=4=@harK+anql7plbi+^`2_7x#hS9Q)x&&$lAdJC2pi@Q39iEVeF>Ij2^ z(?o@9aW=w4MaL!LnN9^aAicg~@o^{NhHcflGV*hCVTPZ(GJV=v54nnbh1dJU$1aps znCstMVPfr_s6xbU`TK?ZJ&9i-C1eDm)Xi5>ns^fxLd9JObJNyYjM5~+R(F^7Ni&Yu9!PHxi}xci6he%WiLTN%TCV|kG2smltJ-H7z<{ZN4Tcs ztSrcymY3;UAx?x{nqHidm7TYQ48?fP`pz7s}<^4nY2&A={Ul}#E#$dw|p0W zEBDCXy%g-%M)LPsPhf$A-XAxAhWYq_;RNDvX^8Pi#t4*rWX`|Vp8thd>K$A?uE!td`A37{zCjY zqTHji{VA{3!V4Z~;op$`8=|-=(EA=#a0TQoHhaZZVEW;|ctjnTuK%1&*L`UyPBl~f z=oK$VSQKl$;sI}%I00Pze#PGdb^P7`9e+>B-`zh@JgHVK-#)M3hO|$K&Gn#HoB-E~ zla4dH(1&8hD(SfhX#GcWUHxyFT$74*5uysz&6pb^#P5K-ncV?V`5*pPm!KOUPOai^ z-R=C{U5bh-Y=Un|cAoeyViF2LQ^Xu!@hsGbMd`T(In13i5zPC`)AN@2#2rv##a*Oa zeJ_72@ylxNH<98{qzIdW3fxzCxi16O{buClC|^G0cX7V*`9mZNgK~cmDfWWbZgfP# z#21_SyKTGt-NE0wO8%~|;%|-o-HxsbY~uI)-S%((?l{HYFXZq35_C?)yZ7+7<}v=B zdfY7~+uG*(BJpt>;YM9knJ#g=>+xr+p^69O6iO;aa|UF`7j2 zczaf*pTQ$TcK5`K?Uxs1qTeT8X%D5{PwH*xD*D6!*nSZyzC!5c-!k-zC;40c6o1z} zP0VcZkM`mO5Gu>*`HlSDyn#Wg-;^dEjmly_f=zOUD2Wzs9s7445fno5Ouq9YQan)Qtx zkq3VulT-L*?aIE0Sl5v~H}Mcc*T2os!}7Q89lC4Y2WIQ^qLq0WX*c8-E=|kNOS>+A zk@$B<*%w^ZN#+}hfw-%a?AxW$eP1Wldw#GJaEqV;$oXg|3Mc!OPj^C8ACUd-Kk~O^ zFMp5!nZFGm^LPIz{N4R2#bo#F^-eh~b*eM@eJ5Iu4eLO*B%LB zVW%SF;!>tAtajD7w!0VZaJKiTbG~uiToHM~RpQL9bQ+ur*N4u{bK_3AGE1Dy zR7vZ&ciovMoy>A)y=%3r#>vb)>|X1howU|D5q7{6^@TTT_MXV(cilU}k_H!)ht&-@ z(SA+%8Yk|gJM(a>ZLWTYo#Snj);MG54qiRG#PzOIhe#fARy$urUh;%%>~7a3W2Y|2 zid*Yka!GQ9`=qPVGqIq;NlM=C9Cx-k3FS`Lu3dZVX}!%=ykff(H+!?YYlE}h^`R?k zVb;{*6%)J8zImG~Y3_E{Hh0u<*GVTQA!VC;#e(EDPC>sb!#?zUstH>cHv544 zM62W)&-&KYu7ne=6CLMncCGhZS>r7z2}}9LeZ19y*89)j<4n9{>e%wIiL*a+9&w*= z$BrHQMOZZkxYca9+X~SR?`_l6xV)`~_iOk(4WH6*FAc|DqVPv*c;TfAzC^?QFyIGU zk*VRi*DCmC4fjY_@Dm!|y;#B38m_ob!5?XO>M{i%*6`fx75v{CPP#+E-gYWIm1`8- zQ^T?MDL7HXZ5~kYbPZ=dqTmG@PIy_tD>U5i4F#{&aAl2xpVx4Y-3s2T;haAx_+J{H z{kDQ5+bj8s|ES=>8czO`g0IqWW|M*oG`#jl1>dRRe*aeRBO0#I@HP#9<8q|_-_vlM zTfuc2j_s!4Ga6p6;a*WnzPYg~JW<2d8lI@(9=%ogWg2eNU%}UEc=aF!7i+j+h=NyX zxIx2@YIx!WDtxnsw~bJ6wT3fCD)=J}uhVe7hAYOY@PBA{zlJ^0Dm@1-QsKQcTym*` zM`(E4Oa)KYuxFNn=V>@a!+9F6)9@V{UN~FfKc(TRmnryl4S#dFfcU#LCNp=wF*B^!%t{9PQzp8sqkbCKceBO8m_ofgxk$mO z8ZORM@D&=~t>Ih^Ke1Sa-=X2C>lFNmhNo)yH4U%9yddS@ui+kr3O=skD~lBD?xf^h zqv7*3e5zQ5Cu#WjtqPv5;fc2?_*xBTl_>Z|4d1+4!K*a9U&Bvnc>Ucf{6!6O4wLf! z-oR@W{I-TCYWNckC;Uc*H)y!LOu?NxtMshEz?S@mX!yg83ZA6lCpIZ~zJ}{GT%_T_ zn^pMT8ZOrG1`Ti5@Jf9)NmDH4;VX&ey4`FYxq44C%9DjUkr@FGUfTFfiY|* z%!z#ROV)5S;7t1KzllNce87uAdB^T67ZHU#F2K*W3Cg_{;r%R_;r;L|#KS+rGx4*K z0R9M*zD=rfzoqF7%y7~tbaB-y?|L zhDpCd)Bj7;8`#h%1ku|t=_@q7tDDlFfen3F5WNkPew(I`*7OGcrS#i1eQ!-~U_*aO zF9Z>ui60x5@$3HQC=(;L{(FASo$VbUMg^s6+zfermwI`GHWO#Ij|=}musy{0!X z@mYRS=)fOeq_<(xoAJT(n%=;~Cq1fL`NtROZJ6{?vlQ=Ln%=;~C;dV^{4?|mC8S`| z7ijten%=;Meust6_-&Z66lwyN9MXFvCfoLkIr&BE1chzI>qyOVacPCO+wJ#=}2DZ^NWFw zBB=b@FzL4Q%KugXnFT^fj8kUeg=c&^H9p+c4?Pc=+F%-oS=Fjt>0sH4{HJO!_@b zRam?3%Ki*YeC9uv&*h(?w_(yhk)!D2G`)chy=^ay--b!wHCNH6YI*}3`nf^z+c4>K zG<~L~H?X0P3!=AS(y!O_%Qd}$4gJk@;EyjUzXg*%Dqn>?r0ESzH0m!C5C06k4U@iD z)4!(lm5yA#rs=LZ(u`zJSct}CcT+|arIF4 zV_-vnDoimT%=m4X^k%-Mi>5cQp)YX<(%UfU_pem)$7^~68+tpx8NUsa{*igr>B|Y=k1*r!cdK&0qv;LIaHhW#9r)vm^fpZT z7n!I$;3MTSagJ=D5l{003 z8BJbVMPhiX!Lz>kOy#M`+x?C5TMd5DJ+Az1l&2=Y-h2PD8hn!(jvu5vHTkx#_~HJu z8a(UA$16`w-rg@!eyfB0XS)3V!u(Z}Z|NOBtHBR`!142xrw)0q{QmhjRr#gLQv-F5HTXWW9lu|BYVw~*y(K2-RQYFhkpEH_ zSM4l!{<3|8{GOmrDau<7p6wrvl&2;?*(<-*;1|B&)_tM!)FB^~KAOK=p2388@GW0- zacRm^lef?NR0*^i{2=8sl&2>DBNk-B4|uD=r_a32uT0Z#8(f?@dykntYnaTMhmWZ692!JT-ZHze4_2gI}inYUQcPmuu(>01e)1 z@NAFVqC7SEhFFjZKj5tf&-TmRb=>i%MtYoU@^}g+@>YXqduOG(j;AI+(c`TK&-T&N zl&2>Df%p8h8vMlLT>X19<*CW{^zyeF{CedtRGylAZ7j%ypH%s0HF&n?rq*@aPmT20 zfA)L>Z#8(f|Bg_entWF*$b=v8R)fze=eGamx-Nfeq(}aCd%;@`ewp(3C{In^mKVI$ z;P)s$S9xmkDN+VZ(BQ2G-=VxK|Fd;n`Kgf}N=hpQQ#ZOj0qaN)!-W{U-@juQM^3>$*`zG?Y8u?FDzL)aUN`LTMd4*@-397K3aaK@|Sb_RUa*1Nh*|(cC7N$sA1rD*vnozvmQ}|AWd?leh2N;H?JF{#FZ>rzT(ImEUUc?4Pw(d1~@w zJl<;X$DiiP|8M1~$v^4wR)b%md>Ogf)iavBeO{$Xpw-|%SH8CL)a3hk`CARX<>{{c zt(B)H|1cJ0!VmJd8vJH?p+a0&<*5-SLFlFsOwi!12ESAJzRFXR-|q2N2l=1j^3P=c zs>vr~K_>hlf2+Y)I?M56l&3~|l)onyWWo=4tHHBB-&EzPksf@O%$Ueq4W9k~9#x*2 z{NR9&@>YXqf5GRJrzUUnL;0-+KT-P|u2P1?!KZpWv0>YVe;Z-%)vL^7ej-{H+Gh{-u{IPffn1m%r8EJ8A#a4CSfGr+K{9 z;HN4-MtN%T_IgG6tp>lcf!qIoQ=XdqLM+IHAMjR#zfnG@5%-Yt)CiMPA|W3OGT{fj z)!=tFa{N-|sgWN1k1}H-Z#DSsjUB&Ad1~@G4i9;&!KZ0|;CGd$CZFu_R)c4M;_b>) zlkep5R)b%u`5#iAn!MfLsS;>4c=lgTY~ZdRYVu>e{H+Gh{?2D8PfdQ1$6F1a{i9nc zPffn9$6F14g8W0;PRdi0pX~8ggD;ol_{)^1CZF%|R)a56{wn3E$>SWv1f44XtOh?r z`4P%flOGt+QQm6sJC&cPJT>`p9&a`HJ<3m2o|=451)x!WtHF0_>Gt1a%2Sii!GcWq z0dF;U_J@B;d1|D`zFH?c5-iAsAMjR#r+q+W<*AV#`_FD~kiUdsLOgid6Vz0m zn!Hp`1rvV2TMeG}2g%A)BR%r3?e!nC8a(Y4x+zahz6lm&!VmJd8a(YAu2P;F>5;#^ z-+;FoJnbQJm8T}(R@Q+D8obruX+Lp;^3>$#0G5gToIpkQKkY51D^E@SMw1@-TaEl_ zpYeq9)a18&yw%`o&#_8*YV!7b1NmDGp7tMGm8T}Z&dc9w@U$2CUU_Qrc6*V()!=Dg zQmvu8eyGV$_42nGJnd1=P@bB62Q0{hALMT}c-pTtRh}B@asJu-z*`NT_AVDGPfdP~ ztOFA?_&E?VL4&7#OdsW`5q~u2KkaD-D^E>65eqWm2l-o#{AquauRJx_lUj9~tr~S~2%2Sj7z~ik3 zKVgu&|8L~>t0r&nw`F}R)eQ~+d<{2$=mxi%5ODz+QZdq?9N|m^2x6F z;rU~AQ2s)9{hp^h?dixDVL>MRAb+dD)86hP<*AV#=kK1%@=qr6R)eQ~-XP_v$)`Cy z`&4iEFU8a(X_ zA5)&1e2JI8)!=E5xJr3y^7&r=R)eSg;wI&($tQUC532+I4tM^1L0&caPG0_2gQtDu zcgjjOHSE=o$#?L0tHINrb+z);nl{#-a1n? z?X8QUE6N7S0|{lFsG9cH_o$}5^#awjw|+@A?X5ScroHv2(3NDxYG1ugHSMi;siwVk znPx71vf5jpLap}I4OP?Lx}E4cvU*O~27VhL45!_R$0cGh*gi2=7aeVH#j%CntnHPp zRkQuGhibMbr>karv6#&SJllJxsb>4@Jk@N^d3cd*o`1P`yb`1W`Ckds@cCq zhFJ*Gv%kzEs#$+2!xjYb?2qt@YW7dVcMQtU{sv!AmviMgpqlpFGOTTop6z>eRkOXW zwQ9B>{!umCBXQqBer%sBRL%A>^y@}E+rQ?iW_!>Q)ofo`shaIQn;5U{VcS%*J?jV6 zY@ezk*FN%Nd&TLh*?!PSHQNKasAm0sU)8kNPghO*`vTRpr@vV>#|OAaHQPHLRL%C^ zMXFh!U80)p1MjNl_yymRZ|RQTkE+=puvR&@z3gAuN;TWNFI3I`V?9)}Ki2@&?4OpY zn*D_*sAm67jBJPf%l@qQt7iYyg{s+Ka|QLA?tby6YW9c!Ts8YgSCV>stpCZ2UHUUs zv;TH$)wJhJQO*AS160%AGfVZ#o80;)s6Ke3)6-ScK60sQ+FNc`P5Za~s%cMtQUzCD z+6OmPO?%^>s%gKFp_=ym6I9c_cDicX8~j5x?N8RJrakdzs%anmvufHKR+ncH_9yL6 zo2aHeYcJKbZyceT_Wswarv3PI)pG{B{kK>(?Mqgw=6D0|siytFF4eSWsUXiXl#li~ zHC5BzzA@wV_+6s9gC4&u)wD01s+#tWe^*WW$u+8JPqVIvm`jbZ*|*uvTEAz zoU6Kt+9O@4y6YsD{%Xe0aQZscw7;6Gn)YljsHT1Go2qH=yhAnZr>j(PVv-s1CdN(bFqEEu*?(|I447 z-uLvEp5E!{L!PdBeC+yadb)w9lRe$h)4e=>wWsquJ>Kc?c-`#j>7IVv(@Q+P+|wnV ze$~@&c={brf9+`*pcXqnEbl>2%ZQZ;pUC{F%v)vtOlCaOw#od3%wNhZ<5?zrCG*!Z z|6As7WR}q_6L!eFQ|4VV@0R&{nfJ)NSLS^(%h;C*Kg#@*%==|NAoD?)f0p@>%)iK- zAkU-YWG*9fS((epTwdl1GFOxt&(q2>SCP4@%*V@IP39A1K2hdGnSakVd?#i2zp@>; zLh6VUfzo5wN5X;R(}%*R0Ed+qg~4OJ5I5|rNo9wXjRtercn&OEDkdCfHX4J$Yon_4 zAhwZ=aD;d9c_0H0hocKSDXWYfMmP+1qYQ`A4L&T=4p;2_Cq&1T7rzM@h<`{hR<8;- zV6P0ouS59fVkBpHFu=gh{&>v{j~UjPfo>>g zs+fVGgTejH#$hnrV36HH$v+%>*QIiU?ISoCu+|2KBlp_CV6r&b_m@k&?SYt0MtJP&-=onA>vE{$;}Ap z;#wmJ#QNVCd3#&4Y3iPM~B$R&<{lXV0e0n##pBaaYJKwyh$z* zadxRmaM;+GogDyic61OPe_?6ONizMN$v5G-FJIq(7}?tpYpAymEy;2>_eeC&DYWHn(}hP;}KOTZj)k0jr} zIXOdQmq#PL;3375D*DOjZs(G{er({ye&`Y6Q+oA^$RoC>AU&h#@?jY*5+Vrc<-7om zMTq#%Ly$N~bn*I?imy>|F&O=%GaqO8j?Wz~Ur0z2EnBdJ9R{CIkqj)!9trk^OP`gO z9}#Cj@(~fZ1PVUag0HiPcyY`x#O`%ccC2%mA}67i2cNzP5pQn<9&W@lkbGIWlPgkC zoEy{$uoN1ck(nunR(#+f&oJ?j;!NnaF#&}mvh%}$jKYkfF_D6ia<$0O_JhT_RlMMg z3|zM{>9dCh8#^3c;Ua~_L&Sd+ODqKlLc#!-XYjF%Z!&S+#-v)_P`j;)-5%#$Q8ybv zLEv_atH>R8t?WcO=G-yC296FjPLvV)KEOcv>~k*&3<$O*b}NQvXA}j&a=Ayh4F$yZ z1-m|^nKleSG4sVKWb{A)#DPFvgKR+fRu_pL$lxjpR}pV_b;B2nlw2;6?t%X!ZnQ)M zPlJo)G>jG&m1E8wAJfUFcA=b^xb@+PhMC!LbK{enVS&^?3>_Zto*hKWr5YO@B_gAW z;X^3!kg3PUL}urT*DV{DC0;7?)eop9$Dx(0JlhmhF5esta~Ve@QMegy9jE}yEsmb@ zE;P87qbZ%o$c&t9@$u!hK^&5fDvsXOq-ou3X@sJf9yym<#tKKE=2?$PPl;!zSeX?P@So?Pnop*Pb~ z;kxnO%?7vpz!Rw#t~H2W=umOCDc)$~uUqz1E_P3RM($=oPJvH1U5|tv=2l-iLW}9A zcTQvd&~U5#2;D3{INUB5Q6P1x;*LwsPq;XfqZB?F^!^v<;0;G^7}2|O5L`MWIN-s- z#sQS$CT~HZ9HJ)>qH>1~FD=D2SD0856y>?ITGNZP32dwvCF!#BqR)DH{~4Li6|?p# zV@R_sajAy$Qq~_ETFl_c(Cp#aMeYPP)w97vak#t@MZ?Up9O$Afxh;i}F2FrXg9mc( zC>Cd=xl*d(IeA0mRirRO+!BgI-Grq6awH0q^5w4}?;5nPk4#F)3FGB?Um%ZX32l~-=uM;0W@G(0ycEh*l5nzm@2IkZ)qX7cPr-Dmtt&7i(De5Lu#^{=S+ zmLnUytfksgY#O zN=(IxJ3|{Ijna7xZ1J!bhwwoL_Daa>Wq%&lTl6*Y(#8* z98V7y+K=8~^?@53%iK{77+eGKAupO#>8l#Ks{jx=69pj{Qq~$H$m=V9VDmK); z8vpKE5VI%#OSL0hLxFZ|K%E(QVoz^3#FVu zzoCZ4y#XG+mD5yUgkGCjs}bAgf5bN1*vQfizK7{P5q6A_&K2@0rSeH#Oh><`TtAUg9bs%2mzYY>@Iy>oT+@%We9hR(QR|jEi~@(x9+&Xf`mO|D zc3u}5Q|B7LCYCG5c4h~yEbbHg=<8->4S-{M&6w^hLF8}mK{G~fG*T6gJuo~+RxXzm zj-_4)EaQJvAB^?HcA<&sU3ILUID!gZ95+6ewbC@I5r3?nINUwmj@1(%t0z8IPb_uY zL5=gVdgA{N^~9#At6I%4x!O3 zq0IWb>XbW}k`g-?etkCB5?ZeEZP4!e6G$`Rbp|ODf(~W8d=` zN&WNIADaKf*==vCbVZA_;q8;(Tzb=%>-(jye)*JLyOw`*Q{r3Go|}DEzw%?JZ=Lk< z$xqE%ac`5PfuCG*+#S>QH+bZWpIXfuF#MvrH+7r2uGdLTr|-FTSl8Rfy?x@Iis{eJ zeeTwlJJ%-WTsL#n@|myi{oBO$qyN0-mQVlGWA>n|z4e!N=+yDA{qOr}QJsbRCOmy$ z(RDkA47hsb{rAlpTljF-uiqK={55;$Rcya{dFGDJpRTT0bM-gvN8kCzvT5I3J$m)p z?6tRdS+?>|4|f>Zy4RL{d9OAoUz|R(Zg$><842GtZ#BQgX_p@Q_TB@hO}u6M;N;Vm zJ#gnWvr`v8T)phFR&Be!*8ivTDpuNj#lg+DF8Sf3cxbi|!b7 zL+!H5N4-|1*ALYi_j&%xJuTN2lnio~>efmW=c5OI&T>YDyK6}ZU0~`CSja2`~S)Z&;nmM@nzb@Omc+22Z z{#q_SW$TO8=GFY^lXLgiAG)Ji@!nxif3>op%Y#3RKI^mMn;t*sij-^LI(60`pU<9K z+^zXzb85F3zx$+j+r4qYlJ-B|*`>nddR+$8oZUC8eYI(C>?&NG)~Mvs&iCe?7D;T< zVcWDy<@5Ufz5CjXM~n8H-t5tlsU36L6fVepzs?OEd(3zsd-g-GocPB^*Iiw9%sWp` zOTF!s&OMW-)OdRNdyBFok^OJ1zP0OLY781Wd{d(n=5L&GUWL9px+h=Or03R+_1k54 zY1^sSyf2>XTj$V#@ikw5_PQ6>H>@_dcmDeQX*+LkSK;HbuP(ZIJ8#)-JbZNu>kBd+pi$ZS~GcpU;1MOY05gUTi#T>zX~g4vqdWab%@g zcfOrcy<^X+>38pH{q-m5nH{Rn?6hI(x3^8XzH{1b@4P=|LF<(H>*{yyQvc;EpIvzR zHSOQO_vi6%o>6w%tZ|cj|G7q5L1b#J`%akk%5BXbn)`dNuV3TetI=ldnxuA5HFW_aLsKmd|JQEt&^`UTk*B$&MDqh^3(Q8rx#^Z zUhqtteIHC&ll4lEJ!P+&QLVw>ubZ)xwoZK=1ocI}s5IuzMnH9O}(@n_@KygjeyaSNvo o{$O13(hm~PNf}V@_0i+bT>Q(Uh2P)2VMepo3l~fodct4+2iR%Af&c&j literal 0 HcmV?d00001 diff --git a/run_tree/text.txt b/run_tree/text.txt index ccfbc2907e133e5420b8c0917ace2b28be40e2bd..fc361877f3e89159f1110c72438a64a25f5e05fd 100644 GIT binary patch delta 18 OcmY$@oFK!?fD8Z-zX1pU delta 14 RcmdN?ogl-Rm{ +// #include +// #include + +#if defined(__clang__) +# pragma GCC diagnostic ignored "-Wunused-value" +# pragma GCC diagnostic ignored "-Wvarargs" +# pragma GCC diagnostic ignored "-Wwritable-strings" +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + +#if defined(DEBUG) +# define USE_ASSERTS 1 +#endif + +#include "lumenarium_core_assert.h" + +#define STB_TRUETYPE_IMPLEMENTATION +#define STB_SPRINTF_IMPLEMENTATION +#define STBTT_assert(x) assert(x) +#include "../libs/stb_truetype.h" +#include "../libs/stb_sprintf.h" + +#define HANDMADE_MATH_IMPLEMENTATION +#define HANDMADE_MATH_STATIC +#include "../libs/HandmadeMath.h" +typedef hmm_v2 v2; +typedef hmm_v3 v3; +typedef hmm_v4 v4; +typedef hmm_mat4 m44; + +#include "lumenarium_core_types.h" +#include "lumenarium_core_memory.h" +#include "lumenarium_core_string.h" +#include "lumenarium_core_hash.h" +#include "lumenarium_core_random.h" + +#include "lumenarium_core_file.h" +#include "lumenarium_core_window.h" +#include "lumenarium_core_time.h" +#include "lumenarium_core_threads.h" +#include "lumenarium_core_socket.h" \ No newline at end of file diff --git a/src_v2/core/lumenarium_core_assert.h b/src_v2/core/lumenarium_core_assert.h new file mode 100644 index 0000000..ca7896d --- /dev/null +++ b/src_v2/core/lumenarium_core_assert.h @@ -0,0 +1,60 @@ +/* date = March 26th 2022 3:42 pm */ + +#ifndef LUMENARIUM_CORE_ASSERT_H +#define LUMENARIUM_CORE_ASSERT_H + +#if defined(PRINT_ASSERTS) +# include +# define err_write(s,...) err_write_(s,__VA_ARGS__) +static FILE* file_err; +void err_write_(char* fmt, ...) { + if (!file_err) return; + va_list args; + va_start(args, fmt); + vfprintf(file_err, fmt, args); + va_end(args); +} +void open_err_file() { file_err = fopen("./err.txt", "wb"); } +void close_err_file() { fclose(file_err); } +#else +# define err_write(s,...) +void open_err_file() {} +void close_err_file() {} +#endif + +#if !defined(PLATFORM_wasm) + +// this assert works by simply trying to write to an invalid address +// (in this case, 0x0), which will crash in most debuggers +# define assert_always (*((volatile int*)0) = 0xFFFF) + +#else +WASM_EXTERN void wasm_assert_always(char* file, unsigned int file_len, unsigned int line); +# define assert_always wasm_assert_always(__FILE__, sizeof(__FILE__), __LINE__) +#endif // defined(PLATFORM_WASM) + +#ifdef USE_ASSERTS +# define assert(c) do { \ +if (!(c)) { \ +err_write("Assert Hit: %s:%u\n", __FILE__, (u32)__LINE__); \ +close_err_file(); \ +assert_always; \ +} \ +} while(false) + +// useful for catching cases that you aren't sure you'll hit, but +// want to be alerted when they happen +# define invalid_code_path assert(0); + +// useful for switch statements on enums that might grow. You'll +// break in the debugger the first time the default case is hit +// with a new enum value +# define invalid_default_case default: { assert(0); } break; + +#else +# define assert(c) +# define invalid_code_path +# define invalid_default_case default: { } break; +#endif + +#endif //LUMENARIUM_CORE_ASSERT_H diff --git a/src_v2/core/lumenarium_core_file.h b/src_v2/core/lumenarium_core_file.h new file mode 100644 index 0000000..6113182 --- /dev/null +++ b/src_v2/core/lumenarium_core_file.h @@ -0,0 +1,252 @@ +#if !defined(LUMENARIUM_CORE_FILE_H) +#define LUMENARIUM_CORE_FILE_H + +typedef struct File_Handle File_Handle; +struct File_Handle +{ + u64 value; +}; + +typedef u32 File_Access_Flags; +enum +{ + FileAccess_None = 0, + FileAccess_Read = 1, + FileAccess_Write = 2, +}; + +typedef u32 File_Create_Flags; +enum +{ + // these match https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea + FileCreate_None = 0, + + // Creates a new file, only if it does not already exist. + // If the file exists, an error is returned + FileCreate_New = 1, + + // Creates a new file, always. + // If the specified file exists and is writable, the file is overwritten + FileCreate_CreateAlways = 2, + + // Opens a file or device, only if it exists. + FileCreate_OpenExisting = 3, + + // Opens a file, always. + FileCreate_OpenAlways = 4, +}; + +typedef u32 File_Flags; +enum +{ + FileFlag_IsFile = 0, + FileFlag_IsDir = 1, +}; + +typedef struct File_Info File_Info; +struct File_Info +{ + String path; + String path_abs; + u64 size; + u64 time_created; + u64 time_last_write; + File_Flags flags; +}; + +typedef struct File_Info_List_Ele File_Info_List_Ele; +struct File_Info_List_Ele +{ + File_Info info; + File_Info_List_Ele* next; +}; + +typedef struct File_Info_List File_Info_List; +struct File_Info_List +{ + File_Info_List_Ele* first; + File_Info_List_Ele* last; +}; + +// For Cross Platform File Operations use these: + +typedef u32 File_Async_Job_Flags; +enum +{ + FileAsyncJob_Invalid = 0, + FileAsyncJob_Read = 1 << 0, + FileAsyncJob_Write = 1 << 1, + FileAsyncJob_InFlight = 1 << 2, + FileAsyncJob_Success = 1 << 3, + FileAsyncJob_Failed = 1 << 4, +}; + +typedef struct File_Async_Job_Args File_Async_Job_Args; +struct File_Async_Job_Args +{ + String path; + Data data; + File_Async_Job_Flags flags; + u32 error; +}; + +typedef void File_Async_Cb(File_Async_Job_Args args, u8* user_data); + +typedef struct File_Async_Job File_Async_Job; +struct File_Async_Job +{ + Data job_memory; + File_Async_Job_Args args; + File_Async_Cb* cb; +}; + +typedef void File_Async_Job_System_Do_Job(File_Async_Job* job); + +typedef struct File_Async_Job_System File_Async_Job_System; +struct File_Async_Job_System +{ + File_Async_Job_System_Do_Job* do_job; +}; + +global Allocator* file_jobs_arena = 0; +#define FILE_ASYNC_MAX_JOBS 32 +global File_Async_Job file_async_jobs[FILE_ASYNC_MAX_JOBS]; +global u32 file_async_jobs_len = 0; + +internal File_Async_Job_System file_async_jobs_init(File_Async_Job_System_Do_Job* do_job); +internal bool file_async_job_add(File_Async_Job job); +internal File_Async_Job file_async_job_rem(u64 index); +internal bool file_async_read(String path, File_Async_Cb* cb); +internal bool file_async_write(String path, Data data, File_Async_Cb* cb); +internal void file_async_job_complete(File_Async_Job* job, u8* user_data); +internal void file_async_jobs_do_work(File_Async_Job_System* system, u64 max_jobs, u8* user_data); +internal void file_async_jobs_do_work(File_Async_Job_System* system, u64 max_jobs, u8* user_data); + +typedef u32 Platform_Enum_Dir_Flags; +enum +{ + EnumDir_Recursive = 1, + EnumDir_IncludeDirectories = 2, +}; + +/////////////////////////////////////// +/////////////////////////////////////// +// IMPLEMENTATION +/////////////////////////////////////// +/////////////////////////////////////// + +internal File_Async_Job_System +file_async_jobs_init(File_Async_Job_System_Do_Job* do_job) +{ + file_jobs_arena = paged_allocator_create_reserve(MB(4), 256); + File_Async_Job_System result = {}; + result.do_job = do_job; + return result; +} + +internal bool +file_async_job_add(File_Async_Job job) +{ + if (file_async_jobs_len >= FILE_ASYNC_MAX_JOBS) return false; + + // Copy data to job local memory + u64 size_needed = job.args.path.len + job.args.data.size + 1; + u8* job_mem = allocator_alloc(file_jobs_arena, size_needed); + String job_path = string_create(job_mem, 0, job.args.path.len + 1); + u64 copied = string_copy_to(&job_path, job.args.path); + Data job_data = data_create(job_mem + job_path.cap + 1, size_needed - (job_path.cap + 1)); + memory_copy(job.args.data.base, job_data.base, job.args.data.size); + job.args.path = job_path; + job.args.data = job_data; + job.job_memory = data_create(job_mem, size_needed); + + file_async_jobs[file_async_jobs_len++] = job; + return true; +} + +internal File_Async_Job +file_async_job_rem(u64 index) +{ + assert(index < file_async_jobs_len); + File_Async_Job result = file_async_jobs[index]; + + file_async_jobs_len -= 1; + if (file_async_jobs_len > 0) + { + u32 last_job = file_async_jobs_len; + file_async_jobs[index] = file_async_jobs[last_job]; + } + + return result; +} + +internal bool +file_async_read(String path, File_Async_Cb* cb) +{ + File_Async_Job job = {}; + job.args.path = path; + job.args.flags = ( + FileAsyncJob_Read | + FileAsyncJob_InFlight + ); + job.cb = cb; + bool result = file_async_job_add(job); + return result; +} + +internal bool +file_async_write(String path, Data data, File_Async_Cb* cb) +{ + File_Async_Job job = {}; + job.args.path = path; + job.args.data = data; + job.args.flags = ( + FileAsyncJob_Write | + FileAsyncJob_InFlight + ); + job.cb = cb; + bool result = file_async_job_add(job); + return result; +} + +internal void +file_async_job_complete(File_Async_Job* job, u8* user_data) +{ + job->cb(job->args, user_data); + allocator_free(file_jobs_arena, job->job_memory.base, job->job_memory.size); + if (has_flag(job->args.flags, FileAsyncJob_Write)) + { + allocator_free(file_jobs_arena, job->args.data.base, job->args.data.size); + } +} + +internal void +file_async_jobs_do_work(File_Async_Job_System* system, u64 max_jobs, u8* user_data) +{ + assert(system->do_job); + + u64 to_do = max_jobs; + if (max_jobs > file_async_jobs_len) to_do = file_async_jobs_len; + + File_Async_Job_Flags completed = ( + FileAsyncJob_Success | + FileAsyncJob_Failed + ); + + for (u64 i = to_do - 1; i < to_do; i--) + { + File_Async_Job* job = file_async_jobs + i; + system->do_job(job); + if (has_flag(job->args.flags, completed)) + { + if (has_flag_exact(job->args.flags, FileAsyncJob_Success)) + { + file_async_job_complete(job, user_data); + } + file_async_job_rem(i); + } + } +} + + +#endif // LUMENARIUM_CORE_FILE_H \ No newline at end of file diff --git a/src_v2/lumenarium_hash.cpp b/src_v2/core/lumenarium_core_hash.h similarity index 50% rename from src_v2/lumenarium_hash.cpp rename to src_v2/core/lumenarium_core_hash.h index d219110..dba3a11 100644 --- a/src_v2/lumenarium_hash.cpp +++ b/src_v2/core/lumenarium_core_hash.h @@ -1,14 +1,14 @@ /* date = April 1st 2022 7:29 pm */ -#ifndef LUMENARIUM_HASH_CPP -#define LUMENARIUM_HASH_CPP +#ifndef LUMENARIUM_CORE_HASH_H +#define LUMENARIUM_CORE_HASH_H // // DJB2 // Source: http://www.cse.yorku.ca/~oz/hash.html internal u32 -hash_djb2_to_u32(char* str, u64 len) +hash_djb2_str_to_u32(char* str, u64 len) { u32 result = 5381; for (u64 i = 0; i < len; i++) @@ -19,20 +19,20 @@ hash_djb2_to_u32(char* str, u64 len) } internal u32 -hash_djb2_to_u32(char* str) +hash_djb2_cstr_to_u32(char* str) { u64 len = c_str_len(str); - return hash_djb2_to_u32(str, len); + return hash_djb2_str_to_u32(str, len); } internal u32 -hash_djb2_to_u32(String str) +hash_djb2_string_to_u32(String str) { - return hash_djb2_to_u32((char*)str.str, str.len); + return hash_djb2_str_to_u32((char*)str.str, str.len); } internal u64 -hash_djb2_to_u64(char* str, u64 len) +hash_djb2_str_to_u64(char* str, u64 len) { u64 result = 5381; for (u64 i = 0; i < len; i++) @@ -43,16 +43,16 @@ hash_djb2_to_u64(char* str, u64 len) } internal u64 -hash_djb2_to_u64(char* str) +hash_djb2_cstr_to_u64(char* str) { u64 len = c_str_len(str); - return hash_djb2_to_u64(str, len); + return hash_djb2_str_to_u64(str, len); } internal u64 -hash_djb2_to_u64(String str) +hash_djb2_string_to_u64(String str) { - return hash_djb2_to_u64((char*)str.str, str.len); + return hash_djb2_str_to_u64((char*)str.str, str.len); } -#endif //LUMENARIUM_HASH_CPP +#endif //LUMENARIUM_HASH_H diff --git a/src_v2/core/lumenarium_core_memory.h b/src_v2/core/lumenarium_core_memory.h new file mode 100644 index 0000000..2f4e7ef --- /dev/null +++ b/src_v2/core/lumenarium_core_memory.h @@ -0,0 +1,802 @@ +#ifndef LUMENARIUM_CORE_MEMORY_H +#define LUMENARIUM_CORE_MEMORY_H + +#if !defined(OS_MEM_PAGE_SIZE) +# error "You must define OS_MEM_PAGE_SIZE for core_memory.h to compile properly" +#endif + +////////////////////////////////////////////// +// Memory Helpers + +#define Bytes(x) (x) +#define KB(x) ((x) << 10) +#define MB(x) ((x) << 20) +#define GB(x) (((u64)x) << 30) +#define TB(x) (((u64)x) << 40) + +#define memory_zero_array(b,t,c) memory_zero((u8*)(b), sizeof(t) * (c)) +internal void memory_zero(u8* base, u64 size); +internal void memory_copy(u8* from, u8* to, u64 size); + +////////////////////////////////////////////// +// Data + +#define get_byte(value, byte_index) ((value >> (8 * byte_index)) & 0xFF) + +typedef struct Data Data; +struct Data +{ + u8* base; + u64 size; +}; + +internal Data +data_create(u8* base, u64 size) +{ + Data result = {}; + result.base = base; + result.size = size; + return result; +} + +////////////////////////////////////////////// +// Data Writer + +typedef struct Data_Writer Data_Writer; +struct Data_Writer +{ + Data data; + u64 at; +}; + +// NOTE(PS): functions ending in _b treat data in the Data_Writer as big endian +// order (network ordering) where functions ending in _l treat data into little +// endian order +// It is always assumed that values not in the Data_Writer (ie the other args +// to the function or the functions return value) are in little endian order + +internal u8 dw_get_u8(Data_Writer* w); +// TODO(PS): get functions + +internal void dw_put_u8(Data_Writer* w, u8 b); +internal void dw_put_u16_b(Data_Writer* w, u16 b); +internal void dw_put_u16_l(Data_Writer* w, u16 b); +internal void dw_put_u32_b(Data_Writer* w, u32 b); +internal void dw_put_u32_l(Data_Writer* w, u32 b); +internal void dw_put_u64_b(Data_Writer* w, u64 b); +internal void dw_put_u64_l(Data_Writer* w, u64 b); + +////////////////////////////////////////////// +// Allocator + +typedef struct Allocator Allocator; + +typedef u8* Allocator_Alloc(Allocator* allocator, u64 size); +typedef void Allocator_Free(Allocator* allocator, u8* base, u64 size); +typedef u8* Allocator_Realloc(Allocator* allocator, u8* base, u64 old_size, u64 new_size); +typedef void Allocator_Clear(Allocator* allocator); +typedef void Allocator_Destroy(Allocator* allocator); + +struct Allocator +{ + Allocator_Alloc* alloc; + Allocator_Free* free; + Allocator_Realloc* realloc; + Allocator_Clear* clear; + Allocator_Destroy* destroy; + + Allocator* parent; + + u8* allocator_data; +}; + +#define allocator_alloc(a,s) (a)->alloc((a),(s)) +#define allocator_alloc_struct(a,t) (t*)(a)->alloc((a),sizeof(t)) +#define allocator_alloc_array(a,t,c) (t*)(a)->alloc((a),sizeof(t)*(c)) + +#define allocator_free(a,b,s) (a)->free((a),(b),(s)) +#define allocator_free_struct(a,b,t) (a)->free((a),(b),sizeof(t)) +#define allocator_free_array(a,b,t,c) (a)->free((a),(b),sizeof(t)*(c)) + +#define allocator_realloc(a,b,os,ns) (a)->realloc((a),(b),(os),(ns)) +#define allocator_realloc_array(a,b,t,oc,nc) (t*)(a)->realloc((a),(b),sizeof(t)*(oc),sizeof(t)*(nc)) + +#define allocator_clear(a) (a)->clear(a) +#define allocator_destroy(a) (a)->destroy(a) + +internal Allocator* paged_allocator_create_reserve(u64 reserve_size, u64 page_size); + +////////////////////////////////////////////// +////////////////////////////////////////////// +// IMPLEMENTATION +////////////////////////////////////////////// +////////////////////////////////////////////// + +///////////////////////////////////////// +// Memory Functions + +void +memory_zero_no_simd(u8* base, u64 size) +{ + for (u64 i = 0; i < size; i++) base[i] = 0; +} + +void +memory_copy_no_simd(u8* from, u8* to, u64 size) +{ + for (u64 i = 0; i < size; i++) to[i] = from[i]; +} + +#if defined(PLATFORM_HAS_SIMD) + +// TODO(PS): +// TODO(PS): +// TODO(PS): + +void +memory_zero_simd(u8* base, u64 size) +{ + memory_zero_no_simd(base, size); +} + +void +memory_copy_simd(u8* from, u8* to, u64 size) +{ + memory_copy_no_simd(from, to, size); +} + +# define memory_zero_(b,s) memory_zero_simd((b),(s)) +# define memory_copy_(f,t,s) memory_copy_simd((f),(t),(s)) + +#else +# define memory_zero_(b,s) memory_zero_no_simd((b),(s)) +# define memory_copy_(f,t,s) memory_copy_no_simd((f),(t),(s)) + +#endif // defined(PLATFORM_HAS_SIMD) + +#define zero_struct(s) memory_zero((u8*)(&s), sizeof(s)) + +internal void memory_zero(u8* base, u64 size) { memory_zero_(base, size); } +internal void memory_copy(u8* from, u8* to, u64 size) { + memory_copy_(from, to, size); +} + +// @Maintenance - if the function only has one argument, it should become +// round_to_os_page_multiple +u64 +round_size_to_page_multiple(u64 size, u64 page_size) +{ + u64 rem = size % page_size; + if (rem != 0 || size < page_size) + { + u64 grow = page_size - rem; + size += grow; + } + return size; +} + +u64 +round_size_to_os_page_multiple(u64 size) +{ + return round_size_to_page_multiple(size, OS_MEM_PAGE_SIZE); +} + +///////////////////////////////////////// +// Data Writer + +internal void +dw_put_u8(Data_Writer* w, u8 b) +{ + if (w->at < w->data.size) + { + w->data.base[w->at++] = b; + } +} + +internal u8 +dw_get_u8(Data_Writer* w) +{ + u8 result = 0; + if (w->at < w->data.size) + { + result = w->data.base[w->at++]; + } + return result; +} + +internal void +dw_put_u16_b(Data_Writer* w, u16 b) +{ + dw_put_u8(w, get_byte(b, 1)); + dw_put_u8(w, get_byte(b, 0)); +} + +internal void +dw_put_u16_l(Data_Writer* w, u16 b) +{ + dw_put_u8(w, get_byte(b, 0)); + dw_put_u8(w, get_byte(b, 1)); +} + +internal void +dw_put_u32_b(Data_Writer* w, u32 b) +{ + dw_put_u8(w, get_byte(b, 3)); + dw_put_u8(w, get_byte(b, 2)); + dw_put_u8(w, get_byte(b, 1)); + dw_put_u8(w, get_byte(b, 0)); +} + +internal void +dw_put_u32_l(Data_Writer* w, u32 b) +{ + dw_put_u8(w, get_byte(b, 0)); + dw_put_u8(w, get_byte(b, 1)); + dw_put_u8(w, get_byte(b, 2)); + dw_put_u8(w, get_byte(b, 3)); +} + +internal void +dw_put_u64_b(Data_Writer* w, u64 b) +{ + dw_put_u8(w, get_byte(b, 7)); + dw_put_u8(w, get_byte(b, 6)); + dw_put_u8(w, get_byte(b, 5)); + dw_put_u8(w, get_byte(b, 4)); + dw_put_u8(w, get_byte(b, 3)); + dw_put_u8(w, get_byte(b, 2)); + dw_put_u8(w, get_byte(b, 1)); + dw_put_u8(w, get_byte(b, 0)); +} + +internal void +dw_put_u64_l(Data_Writer* w, u64 b) +{ + dw_put_u8(w, get_byte(b, 0)); + dw_put_u8(w, get_byte(b, 1)); + dw_put_u8(w, get_byte(b, 2)); + dw_put_u8(w, get_byte(b, 3)); + dw_put_u8(w, get_byte(b, 4)); + dw_put_u8(w, get_byte(b, 5)); + dw_put_u8(w, get_byte(b, 6)); + dw_put_u8(w, get_byte(b, 7)); +} + +//////////////////////////////////////// +// Allocator +// +// A generic interface for any memory-providing construct +// +// To implement a complete allocator, all that is really required +// is to create its Allocator_Alloc function + +internal void +allocator_destroy_(Allocator* allocator, u64 custom_data_size) +{ + zero_struct(*allocator); + u64 size = sizeof(Allocator) + custom_data_size; + os_mem_decommit((u8*)allocator, size); + os_mem_release((u8*)allocator, size); +} + +///////////////////////////////////////// +// Bump Allocator + +typedef struct Allocator_Bump Allocator_Bump; +struct Allocator_Bump +{ + u8* base; + u64 at; + u64 size_committed; + u64 size_reserved; + u64 page_size; + u64 high_water_mark; +}; + +#if defined(DEBUG) +# define bump_allocator_validate(a) bump_allocator_validate_(a) +#else +# define bump_allocator_validate(a) +#endif +internal void +bump_allocator_validate_(Allocator* allocator) +{ + Allocator_Bump* bump = (Allocator_Bump*)allocator->allocator_data; + assert(bump != 0); + if (bump->size_reserved > 0) + { + assert(bump->base != 0); + } + assert(bump->at <= bump->size_committed); + assert(bump->size_committed <= bump->size_reserved); + assert(bump->page_size > 0); + assert(bump->high_water_mark <= bump->size_reserved); +} + +internal u8* +bump_allocator_alloc_inner(Allocator* allocator, Allocator_Bump* bump, u64 size) +{ + bump_allocator_validate(allocator); + u64 at_after = bump->at + size; + // TODO(PS): align up to 8 bytes + + if (at_after >= bump->size_committed) + { + // determine new size of the arena + u64 new_size = bump->size_committed * 2; + if (new_size == 0) + { + if (bump->page_size == 0) bump->page_size = OS_MEM_PAGE_SIZE; + new_size = bump->page_size; + } + if (new_size < at_after) + { + new_size = round_size_to_page_multiple(at_after, bump->page_size); + } + + if (allocator->parent) + { + bump->base = allocator_realloc( + allocator->parent, + bump->base, + bump->size_committed, + new_size + ); + if (bump->base != 0) + { + bump->size_reserved = new_size; + bump->size_committed = new_size; + } + } + else + { + if (new_size <= bump->size_reserved) + { + u64 next_page = round_size_to_os_page_multiple(bump->at); + if (bump->at == 0 && bump->size_committed == 0) next_page = 0; + u64 commit_amt = new_size - next_page; + u8* new_page = os_mem_commit(bump->base + next_page, commit_amt); + if (new_page != 0) + { + bump->size_committed = new_size; + } + } + else + { + invalid_code_path; // out of reserved memory + } + } + } + + u8* result = bump->base + bump->at; + bump->at = at_after; + bump->high_water_mark = max(bump->at, bump->high_water_mark); + + bump_allocator_validate(allocator); + return result; +} + +internal u8* +bump_allocator_alloc(Allocator* allocator, u64 size) +{ + Allocator_Bump* bump = (Allocator_Bump*)allocator->allocator_data; + u8* result = bump_allocator_alloc_inner(allocator, bump, size); + return result; +} + +internal u8* +bump_allocator_realloc(Allocator* allocator, u8* base, u64 old_size, u64 new_size) +{ + u8* result = bump_allocator_alloc(allocator, new_size); + memory_copy(base, result, old_size); + return result; +} + +internal void +bump_allocator_clear(Allocator* allocator) +{ + if (!allocator->allocator_data) return; + Allocator_Bump* bump = (Allocator_Bump*)allocator->allocator_data; + bump->at = 0; + bump_allocator_validate(allocator); +} + +internal void +bump_allocator_destroy_(Allocator_Bump* bump) +{ + os_mem_decommit(bump->base, bump->size_committed); + os_mem_release(bump->base, bump->size_reserved); +} + +internal void +bump_allocator_destroy(Allocator* allocator) +{ + Allocator_Bump* bump = (Allocator_Bump*)allocator->allocator_data; + bump_allocator_destroy_(bump); + allocator_destroy_(allocator, sizeof(Allocator_Bump)); +} + +internal void +bump_allocator_rewind(Allocator* allocator, u64 to_point) +{ + Allocator_Bump* bump = (Allocator_Bump*)allocator->allocator_data; + bump_allocator_validate(allocator); +#if defined(DEBUG) + memory_zero(bump->base + to_point, bump->at - to_point); +#endif + bump->at = to_point; + bump_allocator_validate(allocator); +} + +internal Allocator* +bump_allocator_create_(u64 page_size) +{ + u64 size_needed = sizeof(Allocator) + sizeof(Allocator_Bump); + + u8* base = os_mem_reserve(size_needed); + base = os_mem_commit(base, size_needed); + + Allocator* result = (Allocator*)base; + zero_struct(*result); + + Allocator_Bump* bump = (Allocator_Bump*)base + sizeof(Allocator); + zero_struct(*bump); + bump->page_size = page_size; + + result->alloc = bump_allocator_alloc; + result->realloc = bump_allocator_realloc; + result->clear = bump_allocator_clear; + result->destroy = bump_allocator_destroy; + result->allocator_data = (u8*)bump; + + bump_allocator_validate(result); + return result; +} + +internal Allocator* +bump_allocator_create_reserve(u64 reserve_size) +{ + Allocator* result = bump_allocator_create_(OS_MEM_PAGE_SIZE); + Allocator_Bump* bump = (Allocator_Bump*)result->allocator_data; + + u64 reserve_pages = round_size_to_os_page_multiple(reserve_size); + bump->base = os_mem_reserve(reserve_pages); + if (bump->base != 0) bump->size_reserved = reserve_pages; + + bump_allocator_validate(result); + return result; +} + +internal Allocator* +bump_allocator_create_child(Allocator* parent, u64 init_size) +{ + Allocator* result = bump_allocator_create_(OS_MEM_PAGE_SIZE); + result->parent = parent; + + Allocator_Bump* bump = (Allocator_Bump*)result->allocator_data; + zero_struct(*bump); + bump->base = allocator_alloc(result->parent, init_size); + if (bump->base != 0) + { + bump->size_reserved = init_size; + bump->size_committed = init_size; + } + + bump_allocator_validate(result); + return result; +} + + +///////////////////////////////////////// +// Scratch Allocator + +typedef struct Allocator_Scratch Allocator_Scratch; +struct Allocator_Scratch +{ + Allocator* a; + u64 at_before; +}; + +internal Allocator_Scratch +allocator_scratch_begin(Allocator* allocator) +{ + Allocator_Scratch result = {}; + result.a = allocator; + Allocator_Bump* bump = (Allocator_Bump*)result.a->allocator_data; + result.at_before = bump->at; + return result; +} + +internal void +allocator_scratch_end(Allocator_Scratch* scratch) +{ + bump_allocator_rewind(scratch->a, scratch->at_before); + zero_struct(*scratch); +} + +///////////////////////////////////////// +// Paged Allocator + +typedef struct Allocator_Paged_Free_Region Allocator_Paged_Free_Region; +struct Allocator_Paged_Free_Region +{ + u64 pages; + Allocator_Paged_Free_Region* prev; + Allocator_Paged_Free_Region* next; +}; + +typedef struct Allocator_Paged Allocator_Paged; +struct Allocator_Paged +{ + Allocator_Bump bump; + Allocator_Paged_Free_Region* free_first; +}; + +internal u8* +paged_allocator_alloc(Allocator* allocator, u64 size) +{ + // 1. Find the number of pages we need + // 2. Find a run of free pages that we can use + // If found, + // remove those pages from the run they are in + // return those pages of memory + // 3. Commit pages on the end + + Allocator_Paged* paged = (Allocator_Paged*)allocator->allocator_data; + if (paged->bump.page_size == 0) paged->bump.page_size = OS_MEM_PAGE_SIZE; + + u64 rounded_size = round_size_to_page_multiple(size, paged->bump.page_size); + u64 pages_needed = rounded_size / paged->bump.page_size; + + u8* result = 0; + + // Find free pages + if (paged->free_first) + { + Allocator_Paged_Free_Region* found = 0; + for (Allocator_Paged_Free_Region* at = paged->free_first; at != 0; at = at->next) + { + // NOTE(PS): this set of conditions checks to see if is bigger than what + // we need. If it is, we also check to see if this is smaller than any + // region we've found before. And we abort the search if this region + // perfectly fits the size needed. + // + // This should make sure that we are always choosing the closest fit we + // can. I'm not sure this is the best strategy for dealing with fragmentation + // but its a decent first pass + if (at->pages >= pages_needed) + { + if (!found || (found->pages > at->pages)) + { + found = at; + if (found->pages == pages_needed) break; + } + } + } + + if (found) + { + result = (u8*)found; + if (found->pages > pages_needed) + { + Allocator_Paged_Free_Region* region_after = (Allocator_Paged_Free_Region*)(result + rounded_size); + if (found->prev != 0) found->prev->next = region_after; + region_after = found->next; + } + else + { + if (found->prev != 0) found->prev->next = found->next; + } + } + } + + if (!result) + { + result = bump_allocator_alloc_inner(allocator, &paged->bump, size); + } + + return result; +} + +#define region_end(r,page_size) ((u8*)(r) + ((r)->pages * page_size)) + +internal void +paged_region_insert( + Allocator_Paged_Free_Region* before, + Allocator_Paged_Free_Region* new_region, + Allocator_Paged_Free_Region* after, + u64 page_size + ){ + assert(after == 0 || before < after); + assert(before < new_region); + assert(after == 0 || new_region < after); + assert(new_region->prev == 0 && new_region->next == 0); + + u8* before_end = region_end(before, page_size); + u8* new_region_end = region_end(new_region, page_size); + + // Before + if (before_end == (u8*)new_region) + { + // merge the regions + before->pages += new_region->pages; + new_region = before; + assert(new_region_end == region_end(new_region, page_size)); + } + else + { + assert(before_end < (u8*)new_region); + before->next = new_region; + new_region->prev = before; + } + + // After + if (after != 0) + { + if (new_region_end == (u8*)after) + { + // merge the regions + new_region->pages += after->pages; + u8* a = region_end(after, page_size); + u8* b = region_end(new_region, page_size); + assert(a == b); + } + else + { + assert(new_region_end < (u8*)after); + new_region->next = after; + after->prev = new_region; + } + } +} + +internal void +paged_allocator_free(Allocator* allocator, u8* base, u64 size) +{ + // Figure out which page base is the base of, assert its the base + // figure out how many pages size represents. + // create a free range + // stick it in between contiguous free ranges + // if the ranges before or after meet this new one, merge them all + + Allocator_Paged* paged = (Allocator_Paged*)allocator->allocator_data; + + u64 page_base_rel = (base - paged->bump.base); + assert((page_base_rel % paged->bump.page_size) == 0); + u64 page_index = page_base_rel / paged->bump.page_size; + u64 size_pages_mult = round_size_to_page_multiple(size, paged->bump.page_size); + assert((size_pages_mult % paged->bump.page_size) == 0); + u64 page_count = size_pages_mult / paged->bump.page_size; + + Allocator_Paged_Free_Region* region = (Allocator_Paged_Free_Region*)base; + zero_struct(*region); + region->pages = page_count; + + Allocator_Paged_Free_Region* prev = 0; + Allocator_Paged_Free_Region* next = 0; + for (Allocator_Paged_Free_Region* at = paged->free_first; at != 0; at = at->next) + { + if (at < region) + { + prev = at; + next = at->next; + if (next != 0) + { + assert(next > region); + assert((u8*)next >= ((u8*)region + size_pages_mult)); + } + } + } + + if (prev && next) + { + // found a region to insert into + paged_region_insert(prev, region, next, paged->bump.page_size); + } + else if (prev) + { + // got to the end and all were before the free region in memory + paged_region_insert(prev, region, 0, paged->bump.page_size); + } + else + { + // free list is empty + paged->free_first = region; + } +} + +internal u8* +paged_allocator_realloc(Allocator* allocator, u8* base, u64 old_size, u64 new_size) +{ + // TODO(PS): + // Process: + // 1. Figure out which page base starts on + // 2. Find if there is a free region after base that is big enough to house + // the new size + // 3. If there is a free region, pull the needed memory out of it + // 4. Otherwise, alloc new_size, copy base into it, and free base + + // TODO(PS): you could do a simple version where you just always alloc, copy, free + return 0; +} + +internal void +paged_allocator_clear(Allocator* allocator) +{ + if (!allocator->allocator_data) return; + Allocator_Paged* paged = (Allocator_Paged*)allocator->allocator_data; + paged->bump.at = 0; + paged->free_first = 0; +} + +internal void +paged_allocator_destroy(Allocator* allocator) +{ + Allocator_Paged* paged = (Allocator_Paged*)allocator->allocator_data; + bump_allocator_destroy_(&paged->bump); + allocator_destroy_(allocator, sizeof(Allocator_Paged)); +} + +internal Allocator* +paged_allocator_create_() +{ + u64 size_needed = sizeof(Allocator) + sizeof(Allocator_Bump); + + u8* base = os_mem_reserve(size_needed); + base = os_mem_commit(base, size_needed); + + Allocator* result = (Allocator*)base; + zero_struct(*result); + + Allocator_Paged* paged = (Allocator_Paged*)base + sizeof(Allocator); + zero_struct(*paged); + + result->alloc = paged_allocator_alloc; + result->free = paged_allocator_free; + result->realloc = paged_allocator_realloc; + result->clear = paged_allocator_clear; + result->destroy = paged_allocator_destroy; + result->allocator_data = (u8*)paged; + + return result; +} + +internal Allocator* +paged_allocator_create_reserve(u64 reserve_size, u64 page_size) +{ + Allocator* result = paged_allocator_create_(); + Allocator_Paged* paged = (Allocator_Paged*)result->allocator_data; + + u64 reserve_pages = round_size_to_os_page_multiple(reserve_size); + paged->bump.page_size = page_size; + paged->bump.base = os_mem_reserve(reserve_pages); + if (paged->bump.base != 0) paged->bump.size_reserved = reserve_pages; + + return result; +} + +internal Allocator* +paged_allocator_create_reserve_os_page_size(u64 reserve_size) +{ + u64 page_size = OS_MEM_PAGE_SIZE; + return paged_allocator_create_reserve(reserve_size, page_size); +} + +internal Allocator* +paged_allocator_create_child(Allocator* parent, u64 init_size) +{ + Allocator* result = bump_allocator_create_(OS_MEM_PAGE_SIZE); + result->parent = parent; + + Allocator_Paged* paged = (Allocator_Paged*)result->allocator_data; + paged->bump.base = allocator_alloc(result->parent, init_size); + if (paged->bump.base != 0) + { + paged->bump.size_reserved = init_size; + paged->bump.size_committed = init_size; + } + + return result; +} + +#endif \ No newline at end of file diff --git a/src_v2/lumenarium_random.h b/src_v2/core/lumenarium_core_random.h similarity index 94% rename from src_v2/lumenarium_random.h rename to src_v2/core/lumenarium_core_random.h index 625a842..cffb7bd 100644 --- a/src_v2/lumenarium_random.h +++ b/src_v2/core/lumenarium_core_random.h @@ -3,6 +3,7 @@ #ifndef LUMENARIUM_RANDOM_H #define LUMENARIUM_RANDOM_H +typedef struct Random_Series Random_Series; struct Random_Series { u32 last_value; diff --git a/src_v2/core/lumenarium_core_socket.h b/src_v2/core/lumenarium_core_socket.h new file mode 100644 index 0000000..c59b228 --- /dev/null +++ b/src_v2/core/lumenarium_core_socket.h @@ -0,0 +1,8 @@ +#if !defined(LUMENARIUM_CORE_SOCKET_H) +#define LUMENARIUM_CORE_SOCKET_H + +typedef struct { u64 value; } Socket_Handle; + +// TODO + +#endif // LUMENARIUM_CORE_SOCKET_H \ No newline at end of file diff --git a/src_v2/lumenarium_string.cpp b/src_v2/core/lumenarium_core_string.h similarity index 87% rename from src_v2/lumenarium_string.cpp rename to src_v2/core/lumenarium_core_string.h index 6c6ed7e..92a81ef 100644 --- a/src_v2/lumenarium_string.cpp +++ b/src_v2/core/lumenarium_core_string.h @@ -1,3 +1,24 @@ +////////////////////////////////////////////// +// String + +// NOTE(PS): even though this has a len and cap, it should always be +// null terminated +typedef struct String String; +struct String +{ + u8* str; + u64 len; + u64 cap; +}; + +internal String string_create(u8* str, u64 len, u64 cap); +internal u64 string_copy_to(String* dest, String src); + +////////////////////////////////////////////// +////////////////////////////////////////////// +// IMPLEMENTATION +////////////////////////////////////////////// +////////////////////////////////////////////// internal u64 c_str_len(char* s) @@ -9,7 +30,7 @@ c_str_len(char* s) #define str_varg(s) (int)(s).len, (char*)(s).str #define str_expand(s) (char*)(s).str, (u64)(s).len -#define lit_str(s) String{ (u8*)(s), (u64)sizeof(s)-1, (u64)sizeof(s)-1 } +#define lit_str(s) (String){ (u8*)(s), (u64)sizeof(s)-1, (u64)sizeof(s)-1 } internal String allocator_alloc_string(Allocator* a, u64 cap) @@ -266,4 +287,13 @@ string_f(Allocator* a, char* fmt, ...) String result = string_fv(a, fmt, args); va_end(args); return result; +} + +internal void +dw_put_str(Data_Writer* w, String str) +{ + for (u64 i = 0; i < str.len; i++) + { + dw_put_u8(w, str.str[i]); + } } \ No newline at end of file diff --git a/src_v2/core/lumenarium_core_threads.h b/src_v2/core/lumenarium_core_threads.h new file mode 100644 index 0000000..203ded3 --- /dev/null +++ b/src_v2/core/lumenarium_core_threads.h @@ -0,0 +1,21 @@ +#if !defined(LUMENARIUM_CORE_THREADS_H) +#define LUMENARIUM_CORE_THREADS_H + +typedef struct Thread_Handle Thread_Handle; +struct Thread_Handle { u64 value; }; + +typedef struct Thread_Result Thread_Result; +struct Thread_Result { u32 code; }; + +typedef struct Thread_Data Thread_Data; +typedef Thread_Result Thread_Proc(Thread_Data* data); +struct Thread_Data +{ + Thread_Handle thread_handle; + u32 thread_id; + Thread_Proc* thread_proc; + Allocator* thread_memory; + u8* user_data; +}; + +#endif // LUMENARIUM_CORE_THREADS_H \ No newline at end of file diff --git a/src_v2/core/lumenarium_core_time.h b/src_v2/core/lumenarium_core_time.h new file mode 100644 index 0000000..5a47360 --- /dev/null +++ b/src_v2/core/lumenarium_core_time.h @@ -0,0 +1,39 @@ +#if !defined(LUMENARIUM_CORE_TIME_H) +#define LUMENARIUM_CORE_TIME_H + +typedef struct { s64 value; } Ticks; + +internal Ticks get_ticks_elapsed(Ticks start, Ticks end); +internal r64 ticks_to_seconds(Ticks t, r64 ticks_per_second); +internal r64 get_seconds_elapsed(Ticks start, Ticks end, r64 ticks_per_second); + +/////////////////////////////////////// +/////////////////////////////////////// +// Implementation +/////////////////////////////////////// +/////////////////////////////////////// + +internal Ticks +get_ticks_elapsed(Ticks start, Ticks end) +{ + Ticks result = {}; + result.value = end.value - start.value; + return result; +} + +internal r64 +ticks_to_seconds(Ticks t, r64 ticks_per_second) +{ + r64 result = t.value / ticks_per_second; + return result; +} + +internal r64 +get_seconds_elapsed(Ticks start, Ticks end, r64 ticks_per_second) +{ + Ticks diff = get_ticks_elapsed(start, end); + return ticks_to_seconds(diff, ticks_per_second); +} + + +#endif // LUMENARIUM_CORE_TIME_H \ No newline at end of file diff --git a/src_v2/core/lumenarium_core_types.h b/src_v2/core/lumenarium_core_types.h new file mode 100644 index 0000000..46bb7b1 --- /dev/null +++ b/src_v2/core/lumenarium_core_types.h @@ -0,0 +1,215 @@ +#ifndef LUMENARIUM_CORE_TYPES_H +#define LUMENARIUM_CORE_TYPES_H + +////////////////////////////////////////////// +// Explicit Names for static keyword +#define internal static +#define local_persist static +#define global static +#define local_const static const +#define global_const static const +#define external extern "C" + +#define STMT(x) do {(x);}while(false) + +////////////////////////////////////////////// +// Integer Sizing +#if defined(GUESS_INTS) + +typedef signed char s8; +typedef signed short s16; +typedef signed int s32; +typedef signed long long s64; +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long long u64; + +#else // !defined(GUESS_INTS) + +typedef int8_t s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; + +#endif // defined(GUESS_INTS) + +////////////////////////////////////////////// +// Basic Types + +typedef s8 b8; +typedef s32 b32; +typedef s64 b64; + +typedef float r32; +typedef double r64; + +////////////////////////////////////////////// +// Basic Type Constants + +#define u8_max 0xFF +#define u16_max 0xFFFF +#define u32_max 0xFFFFFFFF +#define u64_max 0xFFFFFFFFFFFFFFFF + +#define s8_max 127 +#define s16_max 32767 +#define s32_max 2147483647 +#define s64_max 9223372036854775807 + +#define s8_min -127 - 1 +#define s16_min -32767 - 1 +#define s32_min -2147483647 - 1 +#define s64_min -9223372036854775807 - 1 + +#define r32_max 3.402823466e+38f +#define r32_min -3.402823466e+38f +#define r32_smallest_positive 1.1754943508e-38f +#define r32_epsilon 5.96046448e-8f +#define r32_pi 3.14159265359f +#define r32_half_pi 1.5707963267f +#define r32_tau 6.28318530717f + +#define r64_max 1.79769313486231e+308 +#define r64_min -1.79769313486231e+308 +#define r64_smallest_positive 4.94065645841247e-324 +#define r64_epsilon 1.11022302462515650e-16 +#define r64_pi 3.14159265359 +#define r64_half_pi 1.5707963267 +#define r64_tau 6.28318530717 + +#define NanosToSeconds 1 / 10000000.0 +#define SecondsToNanos 10000000.0 + +////////////////////////////////////////////// +// Math + +#ifndef max +# define max(a,b) ((a) > (b) ? (a) : (b)) +#endif + +#ifndef min +# define min(a,b) ((a) > (b) ? (b) : (a)) +#endif + +#define lerp(a,t,b) (a) + ((1.0f - (t)) * (b)) +#define clamp(r0,v,r1) min((r1),max((r0),(v))) +#define lerp_clamp(a,t,b) clamp((a),lerp((a),(t),(b)),(b)) + +internal u32 +round_up_to_pow2_u32(u32 v) +{ + v--; + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + v++; + return v; +} + +////////////////////////////////////////////// +// Flags + +#define has_flag(data, flag) (((data) & (flag)) != 0) +#define has_flag_exact(data, flag) (((data) & (flag)) == (flag)) +#define add_flag(data, flag) STMT((data) |= (flag)) +#define rem_flag(data, flag) STMT((data) &= (~(flag))) + +////////////////////////////////////////////// +// List Helper Macros + +#define sll_push(first,last,ele) \ +if (!(first)) { (first) = (ele); }\ +else { (last)->next = (ele); } \ +(last) = (ele); (ele)->next = 0; + +// TODO(PS): Stack, Queue, DLL ops + +////////////////////////////////////////////// +// Hash Table +// +// Rather than define a data structure, to allow the most flexibility, +// this is just a set of functions that can be integrated into other +// routines. +// In general, they expect you to track a u32* of ids and a u32 capacity + +internal void +hash_table_init(u32* ids, u32 cap) +{ + for (u32 i = 0; i < cap; i++) ids[i] = 0; +} + +internal u32 +hash_table_find_(u32* ids, u32 cap, u32 start_id, u32 target_value) +{ + u32 index = start_id % cap; + u32 start = index; + do { + if (ids[index] == target_value) break; + index = (index + 1) % cap; + } while (index != start); + return index; +} + +internal u32 +hash_table_register(u32* ids, u32 cap, u32 new_id) +{ + u32 index = hash_table_find_(ids, cap, new_id, 0); + if (ids[index] != 0) return cap; + ids[index] = new_id; + return index; +} + +internal u32 +hash_table_find(u32* ids, u32 cap, u32 value) +{ + u32 result = hash_table_find_(ids, cap, value, value); + if (ids[result] != value) return cap; + return result; +} + +////////////////////////////////////////////// +// Predeclaring Memory Functions + +u64 round_size_to_page_multiple(u64 size, u64 page_size); +u64 round_size_to_os_page_multiple(u64 size); + +////////////////////////////////////////////// +// Vector Extensions + +#if defined(HANDMADE_MATH_IMPLEMENTATION) + +#define v2_to_v3(xy,z) (v3){(xy).x, (xy).y, (z)} +#define v2_floor(v) (v2){ floorf(v.x), floorf(v.y) } +#define v3_floor(v) (v3){ floorf(v.x), floorf(v.y), floorf(v.z) } + +internal bool +rect2_contains(v2 min, v2 max, v2 point) +{ + return ( + min.x <= point.x && min.y <= point.y && + max.x >= point.x && max.y >= point.y + ); +} + +#endif // defined(HANDMADE_MATH_IMPLEMENTATION) + +////////////////////////////////////////////// +// Color Constants + +#define WHITE_V4 (v4){1,1,1,1} +#define BLACK_V4 (v4){0,0,0,1} +#define RED_V4 (v4){1,0,0,1} +#define GREEN_V4 (v4){0,1,0,1} +#define BLUE_V4 (v4){0,0,1,1} +#define YELLOW_V4 (v4){1,1,0,1} +#define TEAL_V4 (v4){0,1,1,1} +#define PINK_V4 (v4){1,0,1,1} + +#endif \ No newline at end of file diff --git a/src_v2/core/lumenarium_core_window.h b/src_v2/core/lumenarium_core_window.h new file mode 100644 index 0000000..704366f --- /dev/null +++ b/src_v2/core/lumenarium_core_window.h @@ -0,0 +1,235 @@ +#if !defined(LUMENARIUM_CORE_WINDOW_H) +#define LUMENARIUM_CORE_WINDOW_H + +typedef u32 Window_Event_Kind; +enum +{ + WindowEvent_Invalid = 0, + + WindowEvent_MouseScroll, + WindowEvent_MouseMoved, + WindowEvent_ButtonDown, + WindowEvent_ButtonUp, + WindowEvent_Char, + WindowEvent_WindowClosed, + + WindowEvent_Count, +}; + +typedef u32 Key_Code; +enum +{ + KeyCode_Invalid = 0, + + KeyCode_Esc, + + KeyCode_Space, + KeyCode_Tab, + KeyCode_CapsLock, + KeyCode_LeftShift, KeyCode_RightShift, + KeyCode_LeftCtrl, KeyCode_RightCtrl, + KeyCode_Fn, + KeyCode_Alt, + KeyCode_PageUp, KeyCode_PageDown, + KeyCode_Backspace, KeyCode_Delete, + KeyCode_Enter, + + // Function Keys + KeyCode_F0, KeyCode_F1, KeyCode_F2, KeyCode_F3, KeyCode_F4, KeyCode_F5, KeyCode_F6, KeyCode_F7, + KeyCode_F8, KeyCode_F9, KeyCode_F10, KeyCode_F11, KeyCode_F12, + + // Letters + KeyCode_a, KeyCode_b, KeyCode_c, KeyCode_d, KeyCode_e, KeyCode_f, KeyCode_g, KeyCode_h, + KeyCode_i, KeyCode_j, KeyCode_k, KeyCode_l, KeyCode_m, KeyCode_n, KeyCode_o, KeyCode_p, + KeyCode_q, KeyCode_r, KeyCode_s, KeyCode_t, KeyCode_u, KeyCode_v, KeyCode_w, KeyCode_x, + KeyCode_y, KeyCode_z, + + KeyCode_A, KeyCode_B, KeyCode_C, KeyCode_D, KeyCode_E, KeyCode_F, KeyCode_G, KeyCode_H, + KeyCode_I, KeyCode_J, KeyCode_K, KeyCode_L, KeyCode_M, KeyCode_N, KeyCode_O, KeyCode_P, + KeyCode_Q, KeyCode_R, KeyCode_S, KeyCode_T, KeyCode_U, KeyCode_V, KeyCode_W, KeyCode_X, + KeyCode_Y, KeyCode_Z, + + // Numbers + KeyCode_0, KeyCode_1, KeyCode_2, KeyCode_3, KeyCode_4, KeyCode_5, KeyCode_6, KeyCode_7, + KeyCode_8, KeyCode_9, + + KeyCode_Num0, KeyCode_Num1, KeyCode_Num2, KeyCode_Num3, KeyCode_Num4, KeyCode_Num5, + KeyCode_Num6, KeyCode_Num7, KeyCode_Num8, KeyCode_Num9, + + // Symbols + KeyCode_Bang, KeyCode_At, KeyCode_Pound, KeyCode_Dollar, KeyCode_Percent, KeyCode_Carrot, + KeyCode_Ampersand, KeyCode_Star, KeyCode_LeftParen, KeyCode_RightParen, KeyCode_Minus, KeyCode_Plus, + KeyCode_Equals, KeyCode_Underscore, KeyCode_LeftBrace, KeyCode_RightBrace, KeyCode_LeftBracket, + KeyCode_RightBracket, KeyCode_Colon, KeyCode_SemiColon, KeyCode_SingleQuote, KeyCode_DoubleQuote, + KeyCode_ForwardSlash, KeyCode_Backslash, KeyCode_Pipe, KeyCode_Comma, KeyCode_Period, + KeyCode_QuestionMark, KeyCode_LessThan, KeyCode_GreaterThan, KeyCode_Tilde, KeyCode_BackQuote, + + // Arrows + KeyCode_UpArrow, + KeyCode_DownArrow, + KeyCode_LeftArrow, + KeyCode_RightArrow, + + // Mouse + // NOTE(Peter): Including this here so we can utilize the same KeyDown, KeyUp etc. functions + KeyCode_MouseLeftButton, + KeyCode_MouseMiddleButton, + KeyCode_MouseRightButton, + + KeyCode_Count, +}; + +typedef u8 Key_Flags; +enum +{ + KeyFlag_None = 0, + + KeyFlag_Mod_Shift = 1, + KeyFlag_Mod_Ctrl = 2, + KeyFlag_Mod_Alt = 4, + KeyFlag_Mod_Sys = 8, + + KeyFlag_State_WasDown = 16, + KeyFlag_State_IsDown = 32, +}; + +typedef struct Window_Event Window_Event; +struct Window_Event +{ + Window_Event_Kind kind; + Key_Code key_code; + Key_Flags key_flags; + s32 mouse_x; + s32 mouse_y; + s32 scroll_amt; + char char_value; +}; + +typedef u32 Cursor_Kind; +enum +{ + Cursor_Arrow, + Cursor_Pointer, + Cursor_Loading, + Cursor_HArrows, + Cursor_VArrows, + Cursor_DTopLeftArrows, + Cursor_DTopRightArrows, + Cursor_Count, +}; + +#define INPUT_FRAME_STRING_LENGTH 32 +typedef struct Input_Frame Input_Frame; +struct Input_Frame +{ + Key_Flags key_flags[KeyCode_Count]; + + char string_input[INPUT_FRAME_STRING_LENGTH]; + u32 string_input_len; + + v2 mouse_pos; + s32 mouse_scroll; +}; + +typedef struct Input_State Input_State; +struct Input_State +{ + Input_Frame frames[2]; + Input_Frame* frame_hot; + Input_Frame* frame_cold; + + // cross frame state tracking + v2 mouse_pos_delta; + v2 mouse_pos_down; +}; + +#define key_was_down(key_flags) has_flag((key_flags), KeyFlag_State_WasDown) +#define key_is_down(key_flags) has_flag((key_flags), KeyFlag_State_IsDown) +#define key_was_up(key_flags) (!has_flag((key_flags), KeyFlag_State_WasDown)) +#define key_is_up(key_flags) (!has_flag((key_flags), KeyFlag_State_IsDown)) + +internal Input_State* input_state_create(Allocator* a); +internal Key_Flags input_key_advance(Key_Flags flag); +internal void input_state_swap_frames(Input_State* input_state); +internal bool input_key_is_down(Input_State* input_state, Key_Code key); +internal bool input_key_went_down(Input_State* input_state, Key_Code key); +internal bool input_key_is_up(Input_State* input_state, Key_Code key); +internal bool input_key_went_up(Input_State* input_state, Key_Code key); + +////////////////////////////////////////// +////////////////////////////////////////// +// IMPLEMENTATION +////////////////////////////////////////// +////////////////////////////////////////// + +internal Input_State* +input_state_create(Allocator* a) +{ + Input_State* result = allocator_alloc_struct(a, Input_State); + result->frame_hot = result->frames + 0; + result->frame_cold = result->frames + 1; + return result; +} + +internal Key_Flags +input_key_advance(Key_Flags flag) +{ + Key_Flags result = flag; + if (key_is_down(flag)) + { + add_flag(result, KeyFlag_State_WasDown); + } + if (key_is_up(flag)) + { + rem_flag(result, KeyFlag_State_WasDown); + } + return result; +} + +internal void +input_state_swap_frames(Input_State* input_state) +{ + Input_Frame* next_hot = input_state->frame_cold; + input_state->frame_cold = input_state->frame_hot; + input_state->frame_hot = next_hot; + + // Clear the new hot input frame + Key_Flags* hot_key_flags = input_state->frame_hot->key_flags; + Key_Flags* cold_key_flags = input_state->frame_cold->key_flags; + for (u32 i = 0; i < KeyCode_Count; i++) + { + hot_key_flags[i] = input_key_advance(cold_key_flags[i]); + } + input_state->frame_hot->string_input_len = 0; +} + +// Key State Queries + +internal bool +input_key_is_down(Input_State* input_state, Key_Code key) +{ + Key_Flags flags = input_state->frame_hot->key_flags[key]; + return key_is_down(flags); +} + +internal bool +input_key_went_down(Input_State* input_state, Key_Code key) +{ + Key_Flags flags = input_state->frame_hot->key_flags[key]; + return key_is_down(flags) && !key_was_down(flags); +} + +internal bool +input_key_is_up(Input_State* input_state, Key_Code key) +{ + Key_Flags flags = input_state->frame_hot->key_flags[key]; + return !key_is_down(flags); +} + +internal bool +input_key_went_up(Input_State* input_state, Key_Code key) +{ + Key_Flags flags = input_state->frame_hot->key_flags[key]; + return !key_is_down(flags) && key_was_down(flags); +} +#endif // LUMENARIUM_CORE_WINDOW_H \ No newline at end of file diff --git a/src_v2/editor/graphics/lumenarium_editor_graphics.h b/src_v2/editor/graphics/lumenarium_editor_graphics.h new file mode 100644 index 0000000..9e50c91 --- /dev/null +++ b/src_v2/editor/graphics/lumenarium_editor_graphics.h @@ -0,0 +1,419 @@ +#if !defined(LUMENARIUM_EDITOR_GRAPHICS_H) +#define LUMENARIUM_EDITOR_GRAPHICS_H + +#define os_gl_no_error() os_gl_no_error_((char*)__FILE__, (u32)__LINE__) +void os_gl_no_error_(char* file, u32 line); + +#define GL_NULL (u32)0 + +#define SHADER_MAX_ATTRS 8 +#define SHADER_ATTR_LAST (u32)(1 << 31) +typedef struct Shader Shader; +struct Shader +{ + u32 id; + u32 attrs[SHADER_MAX_ATTRS]; + u32 uniforms[SHADER_MAX_ATTRS]; +}; + +typedef struct XPlatform_Shader_Program_Src XPlatform_Shader_Program_Src; +struct XPlatform_Shader_Program_Src +{ + String win32_vert; + String win32_frag; + + String osx_vert; + String osx_frag; + + String wasm_vert; + String wasm_frag; +}; + +String xplatform_shader_program_get_vert(XPlatform_Shader_Program_Src src); +String xplatform_shader_program_get_frag(XPlatform_Shader_Program_Src src); + +typedef struct Geometry_Buffer Geometry_Buffer; +struct Geometry_Buffer +{ + u32 buffer_id_vao; + u32 buffer_id_vertices; + u32 buffer_id_indices; + u32 vertices_len; + u32 indices_len; +}; + +typedef struct Texture Texture; +struct Texture +{ + u32 id; + + u32 w, h, s; +}; + +typedef struct Graphics_Frame_Desc Graphics_Frame_Desc; +struct Graphics_Frame_Desc +{ + v4 clear_color; + v2 viewport_min; + v2 viewport_max; +}; + +void frame_begin(Graphics_Frame_Desc desc); +void frame_clear(); + +// Geometry +Geometry_Buffer geometry_buffer_create(r32* vertices, u32 vertices_len, u32* indices, u32 indices_len); +Shader shader_create(String code_vert, String code_frag, String* attribs, u32 attribs_len, String* uniforms, u32 uniforms_len); +void geometry_buffer_update(Geometry_Buffer* buffer, r32* verts, u32 verts_offset, u32 verts_len, u32* indices, u32 indices_offset, u32 indices_len); + +// Shaders +void geometry_bind(Geometry_Buffer geo); +void shader_bind(Shader shader); +void geometry_drawi(Geometry_Buffer geo, u32 indices); +void geometry_draw(Geometry_Buffer geo); +void vertex_attrib_pointer(Geometry_Buffer geo, Shader shader, u32 count, u32 attr_index, u32 stride, u32 offset); +void set_uniform(Shader shader, u32 index, m44 u); + +// Textures +Texture texture_create(u8* pixels, u32 width, u32 height, u32 stride); +void texture_bind(Texture tex); +void texture_update(Texture tex, u8* new_pixels, u32 width, u32 height, u32 stride); + +////////////////////////////////////////// +////////////////////////////////////////// +// IMPLEMENTATION +////////////////////////////////////////// +////////////////////////////////////////// + +Geometry_Buffer +geometry_buffer_create( + r32* vertices, u32 vertices_len, + u32* indices, u32 indices_len +){ + Geometry_Buffer result = {}; + + gl.glGenVertexArrays(1, &result.buffer_id_vao); + os_gl_no_error(); + + GLuint buffers[2]; + gl.glGenBuffers(2, (GLuint*)buffers); + os_gl_no_error(); + + result.buffer_id_vertices = buffers[0]; + result.buffer_id_indices = buffers[1]; + + // Vertices + gl.glBindVertexArray(result.buffer_id_vao); + gl.glBindBuffer(GL_ARRAY_BUFFER, result.buffer_id_vertices); + os_gl_no_error(); + + gl.glBufferData(GL_ARRAY_BUFFER, sizeof(r32) * vertices_len, vertices, GL_STATIC_DRAW); + os_gl_no_error(); + result.vertices_len = vertices_len; + + // Indices + gl.glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, result.buffer_id_indices); + os_gl_no_error(); + + gl.glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(u32) * indices_len, indices, GL_STATIC_DRAW); + os_gl_no_error(); + result.indices_len = indices_len; + + gl.glBindBuffer(GL_ARRAY_BUFFER, GL_NULL); + gl.glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_NULL); + + return result; +} + +void +geometry_buffer_update( + Geometry_Buffer* buffer, + r32* verts, + u32 verts_offset, + u32 verts_len, + u32* indices, + u32 indices_offset, + u32 indices_len +){ + gl.glBindVertexArray(buffer->buffer_id_vao); + gl.glBindBuffer(GL_ARRAY_BUFFER, buffer->buffer_id_vertices); + os_gl_no_error(); + + if (verts_len > buffer->vertices_len) + { + // NOTE(PS): this is because we're going to delete the old buffer and + // create a new one. In order to do that and not lose data, the update + // function needs to have been passed all the buffer's data + assert(verts_offset == 0); + gl.glBufferData(GL_ARRAY_BUFFER, verts_len * sizeof(r32), (void*)verts, GL_STATIC_DRAW); + } + else + { + gl.glBufferSubData(GL_ARRAY_BUFFER, verts_offset * sizeof(r32), verts_len * sizeof(r32), (void*)verts); + } + os_gl_no_error(); + + gl.glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer->buffer_id_indices); + os_gl_no_error(); + if (indices_len > buffer->indices_len) + { + // NOTE(PS): this is because we're going to delete the old buffer and + // create a new one. In order to do that and not lose data, the update + // function needs to have been passed all the buffer's data + assert(indices_offset == 0); + gl.glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_len * sizeof(u32), (void*)indices, GL_STATIC_DRAW); + } + else + { + gl.glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, indices_offset * sizeof(u32), indices_len * sizeof(u32), (void*)indices); + } + os_gl_no_error(); +} + +Shader +shader_create(String code_vert, String code_frag, String* attrs, u32 attrs_len, String* uniforms, u32 uniforms_len){ + Shader result = {}; + + GLuint shader_vert = gl.glCreateShader(GL_VERTEX_SHADER); + s32* code_vert_len = (s32*)&code_vert.len; + gl.glShaderSource(shader_vert, 1, (const char**)&code_vert.str, code_vert_len); + gl.glCompileShader(shader_vert); + { // errors + GLint shader_vert_compiled; + gl.glGetShaderiv(shader_vert, GL_COMPILE_STATUS, &shader_vert_compiled); + if (!shader_vert_compiled) + { + GLsizei log_length = 0; + GLchar message[1024]; + gl.glGetShaderInfoLog(shader_vert, 1024, &log_length, message); + printf("GLSL Error: %s\n", message); + invalid_code_path; + } + } + + GLuint shader_frag = gl.glCreateShader(GL_FRAGMENT_SHADER); + s32* code_frag_len = (s32*)&code_frag.len; + gl.glShaderSource(shader_frag, 1, (const char**)&code_frag.str, code_frag_len); + gl.glCompileShader(shader_frag); + { // errors + GLint shader_frag_compiled; + gl.glGetShaderiv(shader_frag, GL_COMPILE_STATUS, &shader_frag_compiled); + if (!shader_frag_compiled) + { + GLsizei log_length = 0; + GLchar message[1024]; + gl.glGetShaderInfoLog(shader_frag, 1024, &log_length, message); + printf("GLSL Error: %s\n", message); + printf("%.*s\n", str_varg(code_frag)); + invalid_code_path; + } + } + + result.id = (u32)gl.glCreateProgram(); + gl.glAttachShader(result.id, shader_vert); + gl.glAttachShader(result.id, shader_frag); + gl.glLinkProgram(result.id); + + GLint program_linked; + gl.glGetProgramiv(result.id, GL_LINK_STATUS, &program_linked); + if (program_linked != GL_TRUE) + { + GLsizei log_length = 0; + GLchar message[1024]; + gl.glGetProgramInfoLog(result.id, 1024, &log_length, message); + printf("GLSL Error: %s\n", message); + invalid_code_path; + } + + gl.glUseProgram(result.id); + + // TODO(PS): delete the vert and frag programs + + assert(attrs_len < SHADER_MAX_ATTRS); + for (u32 i = 0; i < attrs_len; i++) + { + result.attrs[i] = gl.glGetAttribLocation(result.id, (char*)attrs[i].str); + os_gl_no_error(); + } + result.attrs[attrs_len] = SHADER_ATTR_LAST; + + assert(uniforms_len < SHADER_MAX_ATTRS); + for (GLuint i = 0; i < uniforms_len; i++) + { + s32 len = (s32)uniforms[i].len; + result.uniforms[i] = gl.glGetUniformLocation(result.id, (char*)uniforms[i].str); + } + result.uniforms[uniforms_len] = SHADER_ATTR_LAST; + + return result; +} + +void +set_uniform(Shader shader, u32 index, m44 u) +{ + gl.glUniformMatrix4fv(shader.uniforms[index], 1, GL_FALSE, (r32*)u.Elements); +} + +void +geometry_bind(Geometry_Buffer geo) +{ + gl.glBindVertexArray(geo.buffer_id_vao); + os_gl_no_error(); + + gl.glBindBuffer(GL_ARRAY_BUFFER, geo.buffer_id_vertices); + os_gl_no_error(); + + gl.glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, geo.buffer_id_indices); + os_gl_no_error(); +} + +void +shader_bind(Shader shader) +{ + gl.glUseProgram(shader.id); + os_gl_no_error(); + for (u32 i = 0; + ((i < SHADER_MAX_ATTRS) && (shader.attrs[i] != SHADER_ATTR_LAST)); + i++) + { + gl.glEnableVertexAttribArray(shader.attrs[i]); + os_gl_no_error(); + } +} + +void +geometry_drawi(Geometry_Buffer geo, u32 indices){ + glDrawElements(GL_TRIANGLES, indices, GL_UNSIGNED_INT, 0); + os_gl_no_error(); +} + +void +geometry_draw(Geometry_Buffer geo){ + geometry_drawi(geo, geo.indices_len); +} + +void vertex_attrib_pointer(Geometry_Buffer geo, Shader shader, GLuint count, GLuint attr_index, GLuint stride, GLuint offset){ + geometry_bind(geo); + gl.glVertexAttribPointer(shader.attrs[attr_index], count, GL_FLOAT, false, stride * sizeof(float), (void*)(offset * sizeof(float))); + os_gl_no_error(); + gl.glEnableVertexAttribArray(shader.attrs[attr_index]); + os_gl_no_error(); +} + +Texture +texture_create(u8* pixels, u32 width, u32 height, u32 stride) +{ + Texture result = {}; + glGenTextures(1, &result.id); + os_gl_no_error(); + + glBindTexture(GL_TEXTURE_2D, result.id); + os_gl_no_error(); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + os_gl_no_error(); + + glTexImage2D( + GL_TEXTURE_2D, + 0, + GL_RGBA, + width, + height, + 0, + GL_RGBA, + GL_UNSIGNED_BYTE, + pixels + ); + os_gl_no_error(); + + result.w = width; + result.h = height; + result.s = stride; + + return result; +} + +void +texture_update(Texture tex, u8* new_pixels, u32 width, u32 height, u32 stride) +{ + // NOTE(PS): this function simply replaces the entire image + // we can write a more granular version if we need it + + assert(tex.w == width && tex.h == height && tex.s == stride); + texture_bind(tex); + glTexSubImage2D( + GL_TEXTURE_2D, + 0, + 0, 0, // offset + width, height, + GL_RGBA, + GL_UNSIGNED_BYTE, + new_pixels + ); + os_gl_no_error(); +} + +void +texture_bind(Texture tex) +{ + glBindTexture(GL_TEXTURE_2D, tex.id); + os_gl_no_error(); +} + +void +frame_begin(Graphics_Frame_Desc desc) +{ + v4 cc = desc.clear_color; + glClearColor(cc.r, cc.g, cc.b, cc.a); + + v2 vmin = desc.viewport_min; + v2 vmax = desc.viewport_max; + glViewport((GLsizei)vmin.x, (GLsizei)vmin.y, (GLint)vmax.x, (GLint)vmax.y); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glDisable(GL_CULL_FACE); + + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LESS); + + os_gl_no_error(); +} + +void +frame_clear() +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + +String +xplatform_shader_program_get_vert(XPlatform_Shader_Program_Src src) +{ +#if defined(PLATFORM_win32) + return src.win32_vert; +#elif defined(PLATFORM_osx) + return src.osx_vert; +#elif defined(PLATFORM_wasm) + return src.wasm_vert; +#endif +} + +String +xplatform_shader_program_get_frag(XPlatform_Shader_Program_Src src) +{ +#if defined(PLATFORM_win32) + return src.win32_frag; +#elif defined(PLATFORM_osx) + return src.osx_frag; +#elif defined(PLATFORM_wasm) + return src.wasm_frag; +#endif +} + + +#endif // LUMENARIUM_EDITOR_GRAPHICS_H \ No newline at end of file diff --git a/src_v2/editor/graphics/lumenarium_editor_opengl.h b/src_v2/editor/graphics/lumenarium_editor_opengl.h new file mode 100644 index 0000000..caaa02f --- /dev/null +++ b/src_v2/editor/graphics/lumenarium_editor_opengl.h @@ -0,0 +1,76 @@ +/* date = March 24th 2022 6:05 pm */ + +#ifndef LUMENARIUM_EDITOR_OPENGL_H +#define LUMENARIUM_EDITOR_OPENGL_H + +// glext.h - https://github.com/KhronosGroup/OpenGL-Registry/blob/main/api/GL/glext.h +// wglext.h - + +void os_gl_no_error(); + +// OpenGL 3.3+ Context Creation +#if defined(PLATFORM_win32) +typedef const char *WINAPI proc_wglGetExtensionsStringARB(HDC hdc); +typedef BOOL proc_wglChoosePixelFormatARB(HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef HGLRC proc_wglCreateContextAttribsARB(HDC hDC, HGLRC hshareContext, const int *attribList); +#endif + +// OpenGL 3.3+ Extensions +typedef void proc_glGenVertexArrays(GLsizei n, GLuint *arrays); +typedef void proc_glBindVertexArray(GLuint array); +typedef void proc_glGenBuffers (GLsizei n, GLuint *buffers); +typedef void proc_glBindBuffer(GLenum target, GLuint buffer); +typedef void proc_glBufferData(GLenum target, size_t size, const void *data, GLenum usage); +typedef void proc_glBufferSubData(GLenum target, size_t offset, size_t size, const void* data); +typedef GLuint proc_glCreateShader(GLenum type); +typedef void proc_glShaderSource(GLuint shader, u32 count, const char* const* string, const GLint *length); +typedef void proc_glCompileShader(GLuint shader); +typedef GLuint proc_glCreateProgram(void); +typedef void proc_glAttachShader(GLuint program, GLuint shader); +typedef void proc_glLinkProgram(GLuint program); +typedef void proc_glUseProgram(GLuint program); +typedef GLuint proc_glGetAttribLocation(GLuint program, const char* name); +typedef void proc_glVertexAttribPointer(GLuint attr, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void proc_glEnableVertexAttribArray(GLuint index); +typedef void proc_glGetShaderiv(GLuint shader, GLenum ele, GLint* value_out); +typedef void proc_glGetShaderInfoLog(GLuint shader, GLuint buf_len, GLsizei* len_out, GLchar* buf); +typedef void proc_glGetProgramiv(GLuint program, GLenum ele, GLint* value_out); +typedef void proc_glGetProgramInfoLog(GLuint program, GLuint cap, GLsizei* len_out, GLchar* buf); +typedef GLuint proc_glGetUniformLocation(GLuint program, const char* name); +typedef void proc_glUniformMatrix4fv(GLuint uniform, GLuint count, GLenum normalize, GLfloat* elements); +typedef struct OpenGL_Extensions OpenGL_Extensions; +struct OpenGL_Extensions +{ + #if defined(PLATFORM_win32) + proc_wglGetExtensionsStringARB* wglGetExtensionsStringARB; + proc_wglChoosePixelFormatARB* wglChoosePixelFormatARB; + proc_wglCreateContextAttribsARB* wglCreateContextAttribsARB; + #endif + + proc_glGenVertexArrays* glGenVertexArrays; + proc_glBindVertexArray* glBindVertexArray; + proc_glGenBuffers* glGenBuffers; + proc_glBindBuffer* glBindBuffer; + proc_glBufferData* glBufferData; + proc_glBufferSubData* glBufferSubData; + proc_glCreateShader* glCreateShader; + proc_glShaderSource* glShaderSource; + proc_glCompileShader* glCompileShader; + proc_glCreateProgram* glCreateProgram; + proc_glAttachShader* glAttachShader; + proc_glLinkProgram* glLinkProgram; + proc_glUseProgram* glUseProgram; + proc_glGetAttribLocation* glGetAttribLocation; + proc_glVertexAttribPointer* glVertexAttribPointer; + proc_glEnableVertexAttribArray* glEnableVertexAttribArray; + proc_glGetShaderiv* glGetShaderiv; + proc_glGetShaderInfoLog* glGetShaderInfoLog; + proc_glGetProgramiv* glGetProgramiv; + proc_glGetProgramInfoLog* glGetProgramInfoLog; + proc_glGetUniformLocation* glGetUniformLocation; + proc_glUniformMatrix4fv* glUniformMatrix4fv; +}; + +global OpenGL_Extensions gl = {}; + +#endif //LUMENARIUM_EDITOR_OPENGL_H \ No newline at end of file diff --git a/src_v2/editor/lumenarium_editor.c b/src_v2/editor/lumenarium_editor.c new file mode 100644 index 0000000..610f2cc --- /dev/null +++ b/src_v2/editor/lumenarium_editor.c @@ -0,0 +1,327 @@ +internal void +ed_load_font_cb(File_Async_Job_Args result, u8* user_data) +{ + App_State* state = (App_State*)user_data; + UI* ui = &state->editor->ui; + + u8* f = result.data.base; + stbtt_fontinfo font; + if (!stbtt_InitFont(&font, f, stbtt_GetFontOffsetForIndex(f, 0))) + { + invalid_code_path; + } + + r32 scale = stbtt_ScaleForPixelHeight(&font, 18.0f); + s32 ascent, descent, line_gap; + stbtt_GetFontVMetrics(&font, &ascent, &descent, &line_gap); + ui->font_ascent = (r32)ascent * scale; + ui->font_descent = (r32)descent * scale; + ui->font_line_gap = (r32)line_gap * scale; + if (ui->font_line_gap == 0) ui->font_line_gap = 5; + + String c = lit_str("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-=_+[]{}\\|;:'\",<.>/?`~"); + for (u64 i = 0; i < c.len; i++) + { + s32 w, h, xoff, yoff; + u32 id = (u32)c.str[i]; + u8* bp = stbtt_GetCodepointBitmap(&font, 0, scale, (char)c.str[i], &w, &h, &xoff, &yoff); + s32 x0, y0, x1, y1; + stbtt_GetCodepointBitmapBoxSubpixel(&font, (char)c.str[i], scale, scale, 0, 0, &x0, &y0, &x1, &y1); + + v2 offset = (v2){ 0, (r32)y0 }; + texture_atlas_register(&state->editor->ui.atlas, bp, (u32)w, (u32)h, id, offset, TextureAtlasRegistration_PixelFormat_Alpha); + stbtt_FreeBitmap(bp, 0); + } + + Texture_Atlas_Sprite m_sprite = texture_atlas_sprite_get(&state->editor->ui.atlas, (u32)'m'); + ui->font_space_width = (r32)(m_sprite.max_x - m_sprite.min_x); + + texture_update(ui->atlas_texture, ui->atlas.pixels, 1024, 1024, 1024); +} + +internal void +ed_draw_panel(u8* user_data, BSP_Node_Id id, BSP_Node node, BSP_Area area) +{ + App_State* state = (App_State*)user_data; + UI* ui = &state->editor->ui; + scratch_get(scratch); + + UI_Layout title_layout = {}; + ui_layout_set_row_info(ui, &title_layout); + title_layout.bounds_min = (v2){ area.min.x, area.max.y - title_layout.row_height }; + title_layout.bounds_max = area.max; + title_layout.at = title_layout.bounds_min; + + UI_Layout panel_layout = {}; + ui_layout_set_row_info(ui, &panel_layout); + panel_layout.bounds_min = area.min; + panel_layout.bounds_max = (v2){ area.max.x, title_layout.bounds_max.y }; + panel_layout.at = panel_layout.bounds_min; + + ui_layout_push(ui, &panel_layout); + + String title = {}; + switch (node.user_data) + { + case 0: + { + title = lit_str("None"); + } break; + + case 1: + { + ed_sculpture_visualizer(state); + title = lit_str("Sculpture"); + } break; + + invalid_default_case; + } + ui_layout_pop(ui); + + ui_layout_push(ui, &title_layout); + UI_Widget_Desc bg = {}; + bg.style.flags = UIWidgetStyle_Bg; + bg.style.color_bg = (v4){.4f,.4f,.4f,1}; + bg.style.sprite = WHITE_SPRITE_ID; + bg.string = string_f(scratch.a, "%.*s_%u_title_bg", str_varg(title), id.value); + bg.p_min = title_layout.bounds_min; + bg.p_max = title_layout.bounds_max; + UI_Widget_Result r = ui_widget_push(ui, bg); + ui_layout_row_begin(&title_layout, 4); + { + ui_textc(ui, title, BLACK_V4); + } + ui_layout_row_end(&title_layout); + ui_widget_pop(ui, r.id); + ui_layout_pop(ui); + + scratch_release(scratch); +} + +Geometry_Buffer b; +Shader shd; +Texture tex; + +internal void +ed_init(App_State* state) +{ + lumenarium_env_validate(); + + Editor* editor = allocator_alloc_struct(permanent, Editor); + zero_struct(*editor); + state->editor = editor; + editor->content_scale = (v2){1,1}; + editor->ui = ui_create(4096, 4096, state->input_state, permanent); + editor->ui.draw_panel_cb = ed_draw_panel; + editor->ui.draw_panel_cb_data = (u8*)state; + //bsp_split(&editor->ui.panels, editor->ui.panels.root, 700, BSPSplit_YAxis, 0, 1); + + file_async_read(lit_str("data/font.ttf"), ed_load_font_cb); + + r32 w = 1400; + r32 h = 700; + r32 z = -1; + r32 tri[] = { + 0, 0, 0, 0, 0, + w, 0, z, 1, 0, + w, h, z, 1, 1, + 0, h, z, 0, 1, + }; + u32 indices[] = { 0, 1, 2, 0, 2, 3 }; + + String shd_v = lit_str( + "#version 330 core\n" + "layout (location = 0) in vec3 pos;\n" + "layout (location = 1) in vec2 auv;\n" + "out vec2 uv;\n" + "uniform mat4 proj;\n" + "void main(void) { \n" + " gl_Position = proj * vec4(pos, 1); \n" + " uv = auv;\n" + "}\n" + ); + String shd_f = lit_str( + "#version 330 core\n" + "in vec2 uv;\n" + "out vec4 FragColor;\n" + "uniform sampler2D tex;\n" + "void main(void) { FragColor = texture(tex, uv) * vec4(1,1,1,1); }" + ); + String shd_a[] = { lit_str("pos"), lit_str("auv") }; + String shd_u[] = { lit_str("proj") }; + b = geometry_buffer_create( + tri, sizeof(tri) / sizeof(r32), + indices, 6 + ); + shd = shader_create(shd_v, shd_f, shd_a, 2, shd_u, 1); + vertex_attrib_pointer(b, shd, 3, shd.attrs[0], 5, 0); + vertex_attrib_pointer(b, shd, 2, shd.attrs[1], 5, 3); + + u32 tex_pix[] = { 0xFFFFFFFF, 0xFF00FFFF, 0xFFFFFF00, 0xFFFF00FF }; + tex = texture_create((u8*)tex_pix, 2, 2, 2); + + ed_sculpture_visualizer_init(state); + lumenarium_env_validate(); +} + +internal u8* +ed_leds_to_texture(App_State* state, Allocator_Scratch* scratch, u32 pixels_dim) +{ + u32 at = 0; + u32* pixels = allocator_alloc_array(scratch->a, u32, pixels_dim * pixels_dim); + for (u32 a = 0; a < state->assemblies.len; a++) + { + Assembly_Pixel_Buffer leds = state->assemblies.pixel_buffers[a]; + for (u32 p = 0; p < leds.len; p++) + { + Assembly_Pixel led = leds.pixels[p]; + u32 index = at++; + pixels[index] = ( + led.r << 0 | + led.g << 8 | + led.b << 16 | + 0xFF << 24 + ); + } + } + return (u8*)pixels; +} + +internal void +ed_sculpture_updated(App_State* state, r32 scale, r32 led_size) +{ + lumenarium_env_validate(); + Editor* ed = state->editor; + if (!ed) return; + + scratch_get(scratch); + + // NOTE(PS): we need to know the total number of leds in order to give them + // texture coordinates + u32 leds_count = 0; + for (u32 a = 0; a < state->assemblies.len; a++) + { + Assembly_Pixel_Buffer pixels = state->assemblies.pixel_buffers[a]; + leds_count += pixels.len; + } + + // round up to a texture whose sides are powers of two + u32 pixels_dim = (u32)floorf(sqrtf((r32)leds_count)); + pixels_dim = round_up_to_pow2_u32(pixels_dim); + u32 pixels_count = pixels_dim * pixels_dim; + r32 texel_dim = 1 / (r32)pixels_dim; + + // NOTE(PS): Rebuild the sculpture geometry to point to the new + // sculpture. + Geo_Vertex_Buffer_Storage storage = ( + GeoVertexBufferStorage_Position | + GeoVertexBufferStorage_TexCoord + ); + + u32 verts_cap = leds_count * 4; + u32 indices_cap = leds_count * 6; + Geo_Quad_Buffer_Builder geo = geo_quad_buffer_builder_create(scratch.a, verts_cap, storage, indices_cap); + geo_vertex_buffers_validate(&geo.buffer_vertex); + + r32 r = led_size; + u32 pixels_created = 0; + for (u32 a = 0; a < state->assemblies.len; a++) + { + Assembly_Pixel_Buffer pixels = state->assemblies.pixel_buffers[a]; + for (u32 p = 0; p < pixels.len; p++) + { + v3 c = pixels.positions[p].xyz; + c = HMM_MultiplyVec3f(c, scale); + + u32 pixel_count = pixels_created++; + u32 pixel_x = pixel_count % pixels_dim; + u32 pixel_y = pixel_count / pixels_dim; + r32 texel_x_min = (r32)pixel_x / (r32)pixels_dim; + r32 texel_y_min = (r32)pixel_y / (r32)pixels_dim; + r32 texel_x_max = texel_x_min + texel_dim; + r32 texel_y_max = texel_y_min + texel_dim; + + v2 t0 = (v2){texel_x_min, texel_y_min}; + v2 t1 = (v2){texel_x_max, texel_y_min}; + v2 t2 = (v2){texel_x_max, texel_y_max}; + v2 t3 = (v2){texel_x_min, texel_y_max}; + + v3 p0 = HMM_AddVec3(c, (v3){ -r, -r, 0 }); + v3 p1 = HMM_AddVec3(c, (v3){ r, -r, 0 }); + v3 p2 = HMM_AddVec3(c, (v3){ r, r, 0 }); + v3 p3 = HMM_AddVec3(c, (v3){ -r, r, 0 }); + geo_quad_buffer_builder_push_vt(&geo, p0, p1, p2, p3, t0, t1, t2, t3); + if (p == 1008) + { + s32 x = 5; + } + } + } + geo_vertex_buffers_validate(&geo.buffer_vertex); + + if (ed->sculpture_geo.indices_len != 0) + { + invalid_code_path; + // TODO(PS): destroy the old geometry buffer or update it + } + ed->sculpture_geo = geometry_buffer_create( + geo.buffer_vertex.values, + geo.buffer_vertex.len, + geo.buffer_index.values, + geo.buffer_index.len + ); + + vertex_attrib_pointer(ed->sculpture_geo, ed->sculpture_shd, 3, ed->sculpture_shd.attrs[0], 5, 0); + vertex_attrib_pointer(ed->sculpture_geo, ed->sculpture_shd, 2, ed->sculpture_shd.attrs[1], 5, 3); + + // TODO(PS): make this have enough pixels for the sculpture + // TODO(PS): map leds to pixels + + if (ed->sculpture_tex.w != 0) + { + invalid_code_path; + // TODO(PS): destroy the old texture + } + + u8* pixels = ed_leds_to_texture(state, &scratch, pixels_dim); + ed->sculpture_tex = texture_create(pixels, pixels_dim, pixels_dim, pixels_dim); + + scratch_release(scratch); + lumenarium_env_validate(); +} + +internal void +ed_frame_prepare(App_State* state) +{ + lumenarium_env_validate(); + ui_frame_prepare(&state->editor->ui, state->editor->window_dim); + lumenarium_env_validate(); +} + +internal void +ed_frame(App_State* state) +{ + lumenarium_env_validate(); + Editor* ed = state->editor; + UI* ui = &ed->ui; + + { + scratch_get(scratch); + u32 w = ed->sculpture_tex.w; + u8* pixels = ed_leds_to_texture(state, &scratch, w); + texture_update(ed->sculpture_tex, pixels, w, w, w); + scratch_release(scratch); + } + + edr_render_begin(state); + ui_draw(&state->editor->ui); + edr_render(state); + lumenarium_env_validate(); +} + +internal void +ed_cleanup(App_State* state) +{ + lumenarium_env_validate(); +} + diff --git a/src_v2/editor/lumenarium_editor.cpp b/src_v2/editor/lumenarium_editor.cpp deleted file mode 100644 index 833730d..0000000 --- a/src_v2/editor/lumenarium_editor.cpp +++ /dev/null @@ -1,376 +0,0 @@ - -static r32 z_ = 0; -static r32 r_ = 0.3f; -static r32 quad_verts[] = { - -r_, -r_, z_, 1.0f, 0, 0, - r_, -r_, z_, 1.0f, 1, 0, - r_, r_, z_, 1.0f, 1, 1, - -r_, r_, z_, 1.0f, 0, 1, -}; - -static u32 quad_indices[] = { - 0, 1, 2, - 0, 2, 3, -}; - -static String shader_code_vert_win32 = lit_str( - "#version 330 core\n" - "layout (location = 0) in vec4 coordinates;\n" - "layout (location = 1) in vec2 uv;\n" - "out vec2 tex_coord;\n" - "void main(void) {\n" - " gl_Position = coordinates;\n" - " tex_coord = uv;\n" - "}" - ); - -static String shader_code_vert_wasm = lit_str( - "precision highp float;\n" - "attribute vec4 coordinates;\n" - "attribute vec2 uv;\n" - "varying vec2 tex_coord;\n" - "void main(void) {\n" - " gl_Position = coordinates;\n" - " tex_coord = uv;\n" - "}"); - -static String shader_code_frag_win32 = lit_str( - "#version 330 core\n" - "in vec2 tex_coord;\n" - "out vec4 FragColor;\n" - "uniform sampler2D texture;\n" - "void main(void) {\n" - "// FragColor = vec4(1,tex_coord.x,tex_coord.y,1);\n" - " FragColor = texture(texture, tex_coord);\n" - "}" - ); - -static String shader_code_frag_wasm = lit_str( - "precision highp float;\n" - "varying vec2 tex_coord;\n" - "uniform sampler2D texture;\n" - "void main(void) {\n" - " gl_FragColor = texture2D(texture, tex_coord);\n" - " // vec4(1, tex_coord.x, tex_coord.y, 1);\n" - "}"); - -static u32 pix[] = { - 0xFF000000, 0xFFFFFFFF, 0xFF000000, 0xFFFFFFFF, - 0xFFFFFFFF, 0xFF000000, 0xFFFFFFFF, 0xFF000000, - 0xFF000000, 0xFFFFFFFF, 0xFF000000, 0xFFFFFFFF, - 0xFFFFFFFF, 0xFF000000, 0xFFFFFFFF, 0xFF000000, -}; - -void make_quad(Platform_Geometry_Buffer* geo, Platform_Shader* shd, Platform_Texture* tex) -{ - // TODO(PS): TEMP -#if defined(PLATFORM_win32) - String shader_code_vert = shader_code_vert_win32; - String shader_code_frag = shader_code_frag_win32; -#elif defined(PLATFORM_wasm) - String shader_code_vert = shader_code_vert_wasm; - String shader_code_frag = shader_code_frag_wasm; -#endif - - *geo = platform_geometry_buffer_create( - quad_verts, 24, quad_indices, 6 - ); - - String attribs[] = { - lit_str("coordinates"), - lit_str("uv"), - }; - *shd = platform_shader_create( - shader_code_vert, shader_code_frag, attribs, 2, 0, 0 - ); - - platform_vertex_attrib_pointer(*geo, *shd, 4, shd->attrs[0], 6, 0); - platform_vertex_attrib_pointer(*geo, *shd, 2, shd->attrs[1], 6, 4); - - *tex = platform_texture_create((u8*)pix, 4, 4, 4); -} - -internal void -ed_load_font_cb(Platform_File_Async_Job_Args result, u8* user_data) -{ - App_State* state = (App_State*)user_data; - UI* ui = &state->editor->ui; - - u8* f = result.data.base; - stbtt_fontinfo font; - if (!stbtt_InitFont(&font, f, stbtt_GetFontOffsetForIndex(f, 0))) - { - invalid_code_path; - } - - r32 scale = stbtt_ScaleForPixelHeight(&font, 18.0f); - s32 ascent, descent, line_gap; - stbtt_GetFontVMetrics(&font, &ascent, &descent, &line_gap); - ui->font_ascent = (r32)ascent * scale; - ui->font_descent = (r32)descent * scale; - ui->font_line_gap = (r32)line_gap * scale; - if (ui->font_line_gap == 0) ui->font_line_gap = 5; - - String c = lit_str("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-=_+[]{}\\|;:'\",<.>/?`~"); - for (u64 i = 0; i < c.len; i++) - { - s32 w, h, xoff, yoff; - u32 id = (u32)c.str[i]; - u8* bp = stbtt_GetCodepointBitmap(&font, 0, scale, (char)c.str[i], &w, &h, &xoff, &yoff); - s32 x0, y0, x1, y1; - stbtt_GetCodepointBitmapBoxSubpixel(&font, (char)c.str[i], scale, scale, 0, 0, &x0, &y0, &x1, &y1); - - v2 offset = v2{ 0, (r32)y0 }; - texture_atlas_register(&state->editor->ui.atlas, bp, (u32)w, (u32)h, id, offset, TextureAtlasRegistration_PixelFormat_Alpha); - stbtt_FreeBitmap(bp, 0); - } - - Texture_Atlas_Sprite m_sprite = texture_atlas_sprite_get(&state->editor->ui.atlas, (u32)'m'); - ui->font_space_width = (r32)(m_sprite.max_x - m_sprite.min_x); - - platform_texture_update(ui->atlas_texture, ui->atlas.pixels, 1024, 1024, 1024); -} - -internal void -ed_draw_panel(u8* user_data, BSP_Node_Id id, BSP_Node node, BSP_Area area) -{ - App_State* state = (App_State*)user_data; - UI* ui = &state->editor->ui; - scratch_get(scratch); - - UI_Layout title_layout = {}; - ui_layout_set_row_info(ui, &title_layout); - title_layout.bounds_min = v2{ area.min.x, area.max.y - title_layout.row_height }; - title_layout.bounds_max = area.max; - title_layout.at = title_layout.bounds_min; - - UI_Layout panel_layout = {}; - ui_layout_set_row_info(ui, &panel_layout); - panel_layout.bounds_min = area.min; - panel_layout.bounds_max = v2{ area.max.x, title_layout.bounds_max.y }; - panel_layout.at = panel_layout.bounds_min; - - ui_layout_push(ui, &panel_layout); - - String title = {}; - switch (node.user_data) - { - case 0: - { - title = lit_str("None"); - } break; - - case 1: - { - ed_sculpture_visualizer(state); - title = lit_str("Sculpture"); - } break; - - invalid_default_case; - } - ui_layout_pop(ui); - - ui_layout_push(ui, &title_layout); - UI_Widget_Desc bg = {}; - bg.style.flags = UIWidgetStyle_Bg; - bg.style.color_bg = v4{.4f,.4f,.4f,1}; - bg.style.sprite = WHITE_SPRITE_ID; - bg.string = string_f(scratch.a, "%.*s_%u_title_bg", str_varg(title), id.value); - bg.p_min = title_layout.bounds_min; - bg.p_max = title_layout.bounds_max; - UI_Widget_Result r = ui_widget_push(ui, bg); - ui_layout_row_begin(&title_layout, 4); - { - ui_text(ui, title, BLACK_V4); - } - ui_layout_row_end(&title_layout); - ui_widget_pop(ui, r.id); - ui_layout_pop(ui); -} - -internal void -ed_init(App_State* state) -{ - Editor* editor = allocator_alloc_struct(permanent, Editor); - state->editor = editor; - editor->ui = ui_create(4096, 4096, state->input_state, permanent); - editor->ui.draw_panel_cb = ed_draw_panel; - editor->ui.draw_panel_cb_data = (u8*)state; - //bsp_split(&editor->ui.panels, editor->ui.panels.root, 700, BSPSplit_YAxis, 0, 1); - - // make the default quad for us to draw with - // TODO(PS): this might be unnecessary with the per-frame buffer we use now - make_quad(&editor->renderer.geo, &editor->renderer.shd, &editor->renderer.tex); - - platform_file_async_read(lit_str("data/font.ttf"), ed_load_font_cb); - - ed_sculpture_visualizer_init(state); -} - -internal u8* -ed_leds_to_texture(App_State* state, Allocator_Scratch* scratch, u32 pixels_dim) -{ - u32 at = 0; - u32* pixels = allocator_alloc_array(scratch->a, u32, pixels_dim * pixels_dim); - for (u32 a = 0; a < state->assemblies.len; a++) - { - Assembly_Pixel_Buffer leds = state->assemblies.pixel_buffers[a]; - for (u32 p = 0; p < leds.len; p++) - { - Assembly_Pixel led = leds.pixels[p]; - u32 index = at++; - pixels[index] = ( - led.r << 0 | - led.g << 8 | - led.b << 16 | - 0xFF << 24 - ); - } - } -#if 0 - for (u32 y = 0; y < pixels_dim; y++) - { - for (u32 x = 0; x < pixels_dim; x++) - { - r32 rp = (r32)y / (r32)pixels_dim; - r32 bp = (r32)x / (r32)pixels_dim; - u8 rb = (u8)(255 * rp); - u8 bb = (u8)(255 * bp); - u32 c = ( - 0xFF0000FF | - (rb << 8) | - (bb << 16) - ); - pixels[(y * pixels_dim) + x] = c; - } - } -#endif - return (u8*)pixels; -} - -internal void -ed_sculpture_updated(App_State* state, r32 scale, r32 led_size) -{ - Editor* ed = state->editor; - if (!ed) return; - - scratch_get(scratch); - - // NOTE(PS): we need to know the total number of leds in order to give them - // texture coordinates - u32 leds_count = 0; - for (u32 a = 0; a < state->assemblies.len; a++) - { - Assembly_Pixel_Buffer pixels = state->assemblies.pixel_buffers[a]; - leds_count += pixels.len; - } - - // round up to a texture whose sides are powers of two - u32 pixels_dim = (u32)floorf(sqrtf((r32)leds_count)); - pixels_dim = round_up_to_pow2(pixels_dim); - u32 pixels_count = pixels_dim * pixels_dim; - r32 texel_dim = 1 / (r32)pixels_dim; - - // NOTE(PS): Rebuild the sculpture geometry to point to the new - // sculpture. - Geo_Vertex_Buffer_Storage storage = ( - GeoVertexBufferStorage_Position | - GeoVertexBufferStorage_TexCoord - ); - u32 verts_cap = leds_count * 4; - u32 indices_cap = leds_count * 6; - Geo_Quad_Buffer_Builder geo = geo_quad_buffer_builder_create(scratch.a, verts_cap, storage, indices_cap); - r32 r = led_size; - - u32 pixels_created = 0; - for (u32 a = 0; a < state->assemblies.len; a++) - { - Assembly_Pixel_Buffer pixels = state->assemblies.pixel_buffers[a]; - for (u32 p = 0; p < pixels.len; p++) - { - v3 c = pixels.positions[p].xyz; - c *= scale; - - u32 pixel_count = pixels_created++; - u32 pixel_x = pixel_count % pixels_dim; - u32 pixel_y = pixel_count / pixels_dim; - r32 texel_x_min = (r32)pixel_x / (r32)pixels_dim; - r32 texel_y_min = (r32)pixel_y / (r32)pixels_dim; - r32 texel_x_max = texel_x_min + texel_dim; - r32 texel_y_max = texel_y_min + texel_dim; - - v2 t0 = v2{texel_x_min, texel_y_min}; - v2 t1 = v2{texel_x_max, texel_y_min}; - v2 t2 = v2{texel_x_max, texel_y_max}; - v2 t3 = v2{texel_x_min, texel_y_max}; - - v3 p0 = c + v3{ -r, -r, 0 }; - v3 p1 = c + v3{ r, -r, 0 }; - v3 p2 = c + v3{ r, r, 0 }; - v3 p3 = c + v3{ -r, r, 0 }; - geo_quad_buffer_builder_push(&geo, p0, p1, p2, p3, t0, t1, t2, t3); - } - } - - if (ed->sculpture_geo.indices_len != 0) - { - invalid_code_path; - // TODO(PS): destroy the old geometry buffer or update it - } - ed->sculpture_geo = platform_geometry_buffer_create( - geo.buffer_vertex.values, - geo.buffer_vertex.len, - geo.buffer_index.values, - geo.buffer_index.len - ); - - platform_vertex_attrib_pointer( - ed->sculpture_geo, ed->sculpture_shd, 3, ed->sculpture_shd.attrs[0], 5, 0 - ); - platform_vertex_attrib_pointer( - ed->sculpture_geo, ed->sculpture_shd, 2, ed->sculpture_shd.attrs[1], 5, 3 - ); - - // TODO(PS): make this have enough pixels for the sculpture - // TODO(PS): map leds to pixels - - if (ed->sculpture_tex.w != 0) - { - invalid_code_path; - // TODO(PS): destroy the old texture - } - - u8* pixels = ed_leds_to_texture(state, &scratch, pixels_dim); - ed->sculpture_tex = platform_texture_create(pixels, pixels_dim, pixels_dim, pixels_dim); -} - -internal void -ed_frame_prepare(App_State* state) -{ - ui_frame_prepare(&state->editor->ui, state->editor->window_dim); -} - -internal void -ed_frame(App_State* state) -{ - Editor* ed = state->editor; - UI* ui = &ed->ui; - - { - scratch_get(scratch); - u32 w = ed->sculpture_tex.w; - u8* pixels = ed_leds_to_texture(state, &scratch, w); - platform_texture_update(ed->sculpture_tex, pixels, w, w, w); - } - - edr_render_begin(state); - ui_draw(&state->editor->ui); - edr_render(state); -} - -internal void -ed_cleanup(App_State* state) -{ - -} - diff --git a/src_v2/editor/lumenarium_editor.h b/src_v2/editor/lumenarium_editor.h index b623912..f275a99 100644 --- a/src_v2/editor/lumenarium_editor.h +++ b/src_v2/editor/lumenarium_editor.h @@ -3,21 +3,23 @@ #ifndef LUMENARIUM_EDITOR_H #define LUMENARIUM_EDITOR_H +typedef struct Editor Editor; struct Editor { + v2 content_scale; v2 window_dim; Editor_Renderer renderer; UI ui; v3 camera_pos; - Platform_Geometry_Buffer sculpture_geo; - Platform_Shader sculpture_shd; - Platform_Texture sculpture_tex; + Geometry_Buffer sculpture_geo; + Shader sculpture_shd; + Texture sculpture_tex; }; // NOTE(PS): call this any time sculpture data is updated if // you want to see the sculpture in the visualizer -internal void ed_sculpture_updated(App_State* state); +internal void ed_sculpture_updated(App_State* state, r32 scale, r32 led_size); #endif //LUMENARIUM_EDITOR_H diff --git a/src_v2/editor/lumenarium_editor_renderer.c b/src_v2/editor/lumenarium_editor_renderer.c new file mode 100644 index 0000000..fa1714b --- /dev/null +++ b/src_v2/editor/lumenarium_editor_renderer.c @@ -0,0 +1,18 @@ + +internal void +edr_render_begin(App_State* state) +{ + Graphics_Frame_Desc desc = {}; + desc.clear_color = (v4){ 0.1f, 0.1f, 0.1f, 1 }; + desc.viewport_min = (v2){ 0, 0 }; + v2 wd = state->editor->window_dim; + v2 cs = state->editor->content_scale; + desc.viewport_max = HMM_MultiplyVec2(wd, cs); + frame_begin(desc); + frame_clear(); +} + +internal void +edr_render(App_State* state) +{ +} \ No newline at end of file diff --git a/src_v2/editor/lumenarium_editor_renderer.cpp b/src_v2/editor/lumenarium_editor_renderer.cpp deleted file mode 100644 index 67d9e34..0000000 --- a/src_v2/editor/lumenarium_editor_renderer.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -internal void -edr_render_begin(App_State* state) -{ - Platform_Graphics_Frame_Desc desc = {}; - desc.clear_color = { 0.1f, 0.1f, 0.1f, 1 }; - desc.viewport_min = { 0, 0 }; - desc.viewport_max = state->editor->window_dim; - platform_frame_begin(desc); - platform_frame_clear(); -} - -internal void -edr_render(App_State* state) -{ -#if 0 - platform_geometry_bind(state->editor->renderer.geo); - platform_texture_bind(state->editor->ui.atlas_texture); - platform_shader_bind(state->editor->renderer.shd); - platform_geometry_draw(state->editor->renderer.geo); -#endif -} \ No newline at end of file diff --git a/src_v2/editor/lumenarium_editor_renderer.h b/src_v2/editor/lumenarium_editor_renderer.h index bebff8e..4129499 100644 --- a/src_v2/editor/lumenarium_editor_renderer.h +++ b/src_v2/editor/lumenarium_editor_renderer.h @@ -3,11 +3,9 @@ #ifndef LUMENARIUM_EDITOR_RENDERER_H #define LUMENARIUM_EDITOR_RENDERER_H +typedef struct Editor_Renderer Editor_Renderer; struct Editor_Renderer { - Platform_Shader shd; - Platform_Geometry_Buffer geo; - Platform_Texture tex; }; #endif //LUMENARIUM_EDITOR_RENDERER_H diff --git a/src_v2/editor/lumenarium_editor_sculpture_visualizer.c b/src_v2/editor/lumenarium_editor_sculpture_visualizer.c new file mode 100644 index 0000000..b70efda --- /dev/null +++ b/src_v2/editor/lumenarium_editor_sculpture_visualizer.c @@ -0,0 +1,60 @@ +#include "lumenarium_editor_sculpture_visualizer_shaders.h" + +internal void +ed_sculpture_visualizer_init(App_State* state) +{ + Editor* editor = state->editor; + + String vert = xplatform_shader_program_get_vert(sculpture_shd); + String frag = xplatform_shader_program_get_frag(sculpture_shd); + + String attrs[] = { lit_str("a_pos"), lit_str("a_uv") }; + String uniforms[] = { lit_str("proj") }; + editor->sculpture_shd = shader_create(vert, frag, attrs, 2, uniforms, 1); +} + +r32 cam_theta = 0; + +internal void +ed_sculpture_visualizer(App_State* state) +{ + Editor* ed = state->editor; + + // Set the viewport to the current layout's region so that the sculpture + // never overlaps any other ui elements + UI_Layout l = *ed->ui.layout; + v2 view_dim = HMM_SubtractVec2(l.bounds_max, l.bounds_min); + v2 view_min = l.bounds_min; + v2 view_max = l.bounds_max; + v2 view_min_scaled = HMM_MultiplyVec2(view_min, ed->content_scale); + v2 view_dim_scaled = HMM_MultiplyVec2(view_dim, ed->content_scale); + glViewport( + (s32)view_min_scaled.x, + (s32)view_min_scaled.y, + (u32)view_dim_scaled.x, + (u32)view_dim_scaled.y + ); + + // TODO(PS): TEMPORARY CAMERA CODE + cam_theta += 0.01f; + r32 cam_r = 100; + v3 camera_pos = (v3){sinf(cam_theta) * cam_r, 25, cosf(cam_theta) * cam_r}; + r32 aspect = view_dim.x / view_dim.y; + m44 proj = HMM_Perspective(45.0, aspect, 0.01f, 500); + m44 view = HMM_LookAt(camera_pos, (v3){0,0,0}, (v3){0,1,0}); + + shader_bind(ed->sculpture_shd); + set_uniform(ed->sculpture_shd, 0, HMM_MultiplyMat4(proj, view)); + texture_bind(ed->sculpture_tex); + geometry_bind(ed->sculpture_geo); + + u32 i = 1008; + u32 j = 2868; + u32 k = ed->sculpture_geo.indices_len; + u32 h = (i * 6) + 3; + geometry_drawi(ed->sculpture_geo, k); + + // reset the viewport for all other rendering + v2 wds = HMM_MultiplyVec2(ed->window_dim, ed->content_scale); + glViewport(0, 0, (s32)wds.x, (s32)wds.y); +} \ No newline at end of file diff --git a/src_v2/editor/lumenarium_editor_sculpture_visualizer.cpp b/src_v2/editor/lumenarium_editor_sculpture_visualizer.cpp deleted file mode 100644 index 40e86ac..0000000 --- a/src_v2/editor/lumenarium_editor_sculpture_visualizer.cpp +++ /dev/null @@ -1,100 +0,0 @@ - -static String sculpture_shd_vert_win32 = lit_str( - "#version 330 core\n" - "layout (location = 0) in vec3 a_pos;\n" - "layout (location = 1) in vec2 a_uv;\n" - "out vec2 uv;\n" - "uniform mat4 proj;\n" - "void main(void) {\n" - " gl_Position = proj * vec4(a_pos, 1.0);\n" - " uv = a_uv;\n" - "}" - ); - -static String sculpture_shd_vert_wasm = lit_str( - "precision highp float;\n" - "attribute vec3 a_pos;\n" - "attribute vec2 a_uv;\n" - "varying vec2 uv;\n" - "uniform mat4 proj;\n" - "void main(void) {\n" - " gl_Position = proj * vec4(a_pos, 1.0);\n" - " uv = a_uv;\n" - "}" - ); - -static String sculpture_shd_frag_win32 = lit_str( - "#version 330 core\n" - "in vec2 uv;\n" - "out vec4 FragColor;\n" - "uniform sampler2D texture;\n" - "void main(void) {\n" - " FragColor = texture(texture, uv);\n" - "}" - ); - -static String sculpture_shd_frag_wasm = lit_str( - "precision highp float;\n" - "varying vec2 uv;\n" - "uniform sampler2D texture;\n" - "void main(void) {\n" - " //gl_FragColor = texture2D(texture, uv) * color;\n" - " gl_FragColor = vec4(uv.x,1,uv.y,1);\n" - "}" - ); - -internal void -ed_sculpture_visualizer_init(App_State* state) -{ - Editor* editor = state->editor; - - -#if defined(PLATFORM_win32) - String vert = sculpture_shd_vert_win32; - String frag = sculpture_shd_frag_win32; -#elif defined(PLATFORM_wasm) - String vert = sculpture_shd_vert_wasm; - String frag = sculpture_shd_frag_wasm; -#endif - - String attrs[] = { lit_str("a_pos"), lit_str("a_uv") }; - String uniforms[] = { lit_str("proj") }; - editor->sculpture_shd = platform_shader_create( - vert, frag, attrs, 2, uniforms, 1 - ); -} - -r32 cam_theta = 0; - -internal void -ed_sculpture_visualizer(App_State* state) -{ - Editor* ed = state->editor; - - // Set the viewport to the current layout's region so that the sculpture - // never overlaps any other ui elements - UI_Layout l = *ed->ui.layout; - v2 view_dim = l.bounds_max - l.bounds_min; - glViewport( - (s32)l.bounds_min.x, - (s32)l.bounds_min.y, - (s32)view_dim.x, - (s32)view_dim.y - ); - - // TODO(PS): TEMPORARY CAMERA CODE - //cam_theta += 0.05f; - v3 camera_pos = v3{sinf(cam_theta) * 50, 0, cosf(cam_theta) * 50}; - r32 aspect = view_dim.x / view_dim.y; - m44 proj = HMM_Perspective(45.0, aspect, 0.01f, 500); - m44 view = HMM_LookAt(camera_pos, v3{0,0,0}, v3{0,1,0}); - - platform_shader_bind(ed->sculpture_shd); - platform_set_uniform(ed->sculpture_shd, 0, proj * view); - platform_texture_bind(ed->sculpture_tex); - platform_geometry_bind(ed->sculpture_geo); - platform_geometry_draw(ed->sculpture_geo, ed->sculpture_geo.indices_len); - - // reset the viewport for all other rendering - glViewport(0, 0, (s32)ed->window_dim.x, (s32)ed->window_dim.y); -} \ No newline at end of file diff --git a/src_v2/editor/lumenarium_editor_sculpture_visualizer_shaders.h b/src_v2/editor/lumenarium_editor_sculpture_visualizer_shaders.h new file mode 100644 index 0000000..07444ca --- /dev/null +++ b/src_v2/editor/lumenarium_editor_sculpture_visualizer_shaders.h @@ -0,0 +1,65 @@ + +global XPlatform_Shader_Program_Src sculpture_shd = { + .win32_vert = lit_str( + "#version 330 core\n" + "layout (location = 0) in vec3 a_pos;\n" + "layout (location = 1) in vec2 a_uv;\n" + "out vec2 uv;\n" + "uniform mat4 proj;\n" + "void main(void) {\n" + " gl_Position = proj * vec4(a_pos, 1.0);\n" + " uv = a_uv;\n" + "}" + ), + .win32_frag = lit_str( + "#version 330 core\n" + "in vec2 uv;\n" + "out vec4 FragColor;\n" + "uniform sampler2D tex;\n" + "void main(void) {\n" + " FragColor = texture(tex, uv);\n" + "}" + ), + + .osx_vert = lit_str( + "#version 330 core\n" + "layout (location = 0) in vec3 a_pos;\n" + "layout (location = 1) in vec2 a_uv;\n" + "out vec2 uv;\n" + "uniform mat4 proj;\n" + "void main(void) {\n" + " gl_Position = proj * vec4(a_pos, 1.0);\n" + " uv = a_uv;\n" + "}" + ), + .osx_frag = lit_str( + "#version 330 core\n" + "in vec2 uv;\n" + "out vec4 FragColor;\n" + "uniform sampler2D tex;\n" + "void main(void) {\n" + " FragColor = texture(tex, uv);\n" + "}" + ), + + .wasm_vert = lit_str( + "precision highp float;\n" + "attribute vec3 a_pos;\n" + "attribute vec2 a_uv;\n" + "varying vec2 uv;\n" + "uniform mat4 proj;\n" + "void main(void) {\n" + " gl_Position = proj * vec4(a_pos, 1.0);\n" + " uv = a_uv;\n" + "}" + ), + .wasm_frag = lit_str( + "precision highp float;\n" + "varying vec2 uv;\n" + "uniform sampler2D tex;\n" + "void main(void) {\n" + " //gl_FragColor = texture2D(tex, uv) * color;\n" + " gl_FragColor = vec4(uv.x,1,uv.y,1);\n" + "}" + ), +}; \ No newline at end of file diff --git a/src_v2/editor/lumenarium_editor_ui.cpp b/src_v2/editor/lumenarium_editor_ui.c similarity index 66% rename from src_v2/editor/lumenarium_editor_ui.cpp rename to src_v2/editor/lumenarium_editor_ui.c index 44bccc5..894c11e 100644 --- a/src_v2/editor/lumenarium_editor_ui.cpp +++ b/src_v2/editor/lumenarium_editor_ui.c @@ -1,55 +1,6 @@ #define WHITE_SPRITE_ID 511 -static String ui_shader_vert_win32 = lit_str( - "#version 330 core\n" - "layout (location = 0) in vec3 a_pos;\n" - "layout (location = 1) in vec2 a_uv;\n" - "layout (location = 2) in vec4 a_color;\n" - "out vec2 uv;\n" - "out vec4 color;\n" - "uniform mat4 proj;\n" - "void main(void) {\n" - " gl_Position = proj * vec4(a_pos, 1.0);\n" - " uv = a_uv;\n" - " color = a_color;\n" - "}" - ); - -static String ui_shader_vert_wasm = lit_str( - "precision highp float;\n" - "attribute vec3 a_pos;\n" - "attribute vec2 a_uv;\n" - "attribute vec4 a_color;\n" - "varying vec2 uv;\n" - "varying vec4 color;\n" - "uniform mat4 proj;\n" - "void main(void) {\n" - " gl_Position = proj * vec4(a_pos, 1.0);\n" - " uv = a_uv;\n" - " color = a_color;\n" - "}" - ); - -static String ui_shader_frag_win32 = lit_str( - "#version 330 core\n" - "in vec2 uv;\n" - "in vec4 color;\n" - "out vec4 FragColor;\n" - "uniform sampler2D texture;\n" - "void main(void) {\n" - " FragColor = texture(texture, uv) * color;\n" - "}" - ); - -static String ui_shader_frag_wasm = lit_str( - "precision highp float;\n" - "varying vec2 uv;\n" - "varying vec4 color;\n" - "uniform sampler2D texture;\n" - "void main(void) {\n" - " gl_FragColor = texture2D(texture, uv) * color;\n" - "}" - ); +#include "lumenarium_editor_ui_shaders.h" internal UI ui_create(u32 widget_pool_cap, u32 verts_cap, Input_State* input, Allocator* a) @@ -66,7 +17,7 @@ ui_create(u32 widget_pool_cap, u32 verts_cap, Input_State* input, Allocator* a) result.widgets.states_hash = allocator_alloc_array(a, u32, result.widgets.states_cap); result.panels = bsp_create(a, 32); - result.panels.root = bsp_push(&result.panels, {0}, {v2{},v2{1400, 800}}, 1); + result.panels.root = bsp_push(&result.panels, (BSP_Node_Id){0}, (BSP_Area){(v2){},(v2){1400, 800}}, 1); // Per Frame Vertex Buffer Geo_Vertex_Buffer_Storage storage = ( @@ -76,40 +27,27 @@ ui_create(u32 widget_pool_cap, u32 verts_cap, Input_State* input, Allocator* a) ); result.geo = geo_quad_buffer_builder_create(a, verts_cap, storage, verts_cap * 2); - result.per_frame_buffer = platform_geometry_buffer_create( - result.geo.buffer_vertex.values, - result.geo.buffer_vertex.cap, - result.geo.buffer_index.values, - result.geo.buffer_index.cap - ); + result.per_frame_buffer = geometry_buffer_create( + result.geo.buffer_vertex.values, + result.geo.buffer_vertex.cap, + result.geo.buffer_index.values, + result.geo.buffer_index.cap + ); -#if defined(PLATFORM_win32) - String vert = ui_shader_vert_win32; - String frag = ui_shader_frag_win32; -#elif defined(PLATFORM_wasm) - String vert = ui_shader_vert_wasm; - String frag = ui_shader_frag_wasm; -#endif + String vert = xplatform_shader_program_get_vert(ui_shader); + String frag = xplatform_shader_program_get_frag(ui_shader); String attrs[] = { lit_str("a_pos"), lit_str("a_uv"), lit_str("a_color") }; String uniforms[] = { lit_str("proj") }; - result.shader = platform_shader_create( - vert, frag, attrs, 3, uniforms, 1 - ); + result.shader = shader_create(vert, frag, attrs, 3, uniforms, 1); - platform_vertex_attrib_pointer( - result.per_frame_buffer, result.shader, 3, result.shader.attrs[0], 9, 0 - ); - platform_vertex_attrib_pointer( - result.per_frame_buffer, result.shader, 2, result.shader.attrs[1], 9, 3 - ); - platform_vertex_attrib_pointer( - result.per_frame_buffer, result.shader, 4, result.shader.attrs[2], 9, 5 - ); + vertex_attrib_pointer(result.per_frame_buffer, result.shader, 3, result.shader.attrs[0], 9, 0); + vertex_attrib_pointer(result.per_frame_buffer, result.shader, 2, result.shader.attrs[1], 9, 3); + vertex_attrib_pointer(result.per_frame_buffer, result.shader, 4, result.shader.attrs[2], 9, 5); // Texture Atlas result.atlas = texture_atlas_create(1024, 1024, 512, permanent); - result.atlas_texture = platform_texture_create(result.atlas.pixels, 1024, 1024, 1024); + result.atlas_texture = texture_create(result.atlas.pixels, 1024, 1024, 1024); u32 white_sprite[] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, @@ -127,39 +65,40 @@ internal void ui_quad_push(UI* ui, v3 pmin, v3 pmax, v2 tmin, v2 tmax, v4 c) { v3 p0 = pmin; - v3 p1 = v3{pmax.x, pmin.y, pmin.z}; + v3 p1 = (v3){pmax.x, pmin.y, pmin.z}; v3 p2 = pmax; - v3 p3 = v3{pmin.x, pmax.y, pmin.z}; + v3 p3 = (v3){pmin.x, pmax.y, pmin.z}; v2 t0 = tmin; - v2 t1 = v2{tmax.x,tmin.y}; + v2 t1 = (v2){tmax.x,tmin.y}; v2 t2 = tmax; - v2 t3 = v2{tmin.x,tmax.y}; - geo_quad_buffer_builder_push(&ui->geo, p0, p1, p2, p3, t0, t1, t2, t3, c); + v2 t3 = (v2){tmin.x,tmax.y}; + geo_quad_buffer_builder_push_vtc(&ui->geo, p0, p1, p2, p3, t0, t1, t2, t3, c); } internal void ui_sprite_register(UI* ui, u8* pixels, u32 w, u32 h, u32 id) { - texture_atlas_register(&ui->atlas, pixels, w, h, id, v2{0,0}, TextureAtlasRegistration_PixelFormat_RGBA); - platform_texture_update(ui->atlas_texture, ui->atlas.pixels, ui->atlas.width, ui->atlas.height, ui->atlas.width); + texture_atlas_register(&ui->atlas, pixels, w, h, id, (v2){0,0}, TextureAtlasRegistration_PixelFormat_RGBA); + texture_update(ui->atlas_texture, ui->atlas.pixels, ui->atlas.width, ui->atlas.height, ui->atlas.width); } internal void -ui_sprite_push(UI* ui, v3 pmin, v3 pmax, u32 id, v4 color) +ui_sprite_push_color(UI* ui, v3 pmin, v3 pmax, u32 id, v4 color) { Texture_Atlas_Sprite sprite = texture_atlas_sprite_get(&ui->atlas, id); v4 uv = texture_atlas_sprite_get_uvs(&ui->atlas, sprite); - pmin.XY += sprite.draw_offset; - pmax.XY += sprite.draw_offset; + pmin.XY = HMM_AddVec2(pmin.XY, sprite.draw_offset); + pmax.XY = HMM_AddVec2(pmax.XY, sprite.draw_offset); ui_quad_push(ui, pmin, pmax, uv.xy, uv.zw, color); } internal void ui_sprite_push(UI* ui, v3 pmin, v3 pmax, u32 id) { - ui_sprite_push(ui, pmin, pmax, id, v4{1,1,1,1}); + ui_sprite_push_color(ui, pmin, pmax, id, (v4){1,1,1,1}); } +typedef struct UI_Char_Draw_Cmd UI_Char_Draw_Cmd; struct UI_Char_Draw_Cmd { v4 uv; @@ -177,17 +116,17 @@ ui_sprite_char_get_draw_cmd(UI* ui, v3 at, u32 codepoint) Texture_Atlas_Sprite sprite = texture_atlas_sprite_get(&ui->atlas, codepoint); result.uv = texture_atlas_sprite_get_uvs(&ui->atlas, sprite); - v3 dim = v3{ + v3 dim = (v3){ (r32)(sprite.max_x - sprite.min_x), (r32)(sprite.max_y - sprite.min_y), 0, }; result.pmin = at; - result.pmin.XY += sprite.draw_offset; + result.pmin.XY = HMM_AddVec2(result.pmin.XY, sprite.draw_offset); result.pmin.XY = v2_floor(result.pmin.XY); - result.pmax = result.pmin + dim; + result.pmax = HMM_AddVec3(result.pmin, dim); - result.baseline_after = v3{ result.pmax.x, at.y, at.z }; + result.baseline_after = (v3){ result.pmax.x, at.y, at.z }; return result; } @@ -204,15 +143,15 @@ ui_frame_prepare(UI* ui, v2 window_dim) ui->widgets.active_parent = ui->widgets.root; BSP_Node* panel_root = bsp_get(&ui->panels, ui->panels.root); - if (window_dim.x != 0 && window_dim.y != 0 && window_dim != panel_root->area.max) + if (window_dim.x != 0 && window_dim.y != 0 && !HMM_EqualsVec2(window_dim, panel_root->area.max)) { BSP_Area area = {}; - area.min = v2{0,0}; + area.min = (v2){0,0}; area.max = window_dim; bsp_node_area_update(&ui->panels, ui->panels.root, area); } - v2 half_d = window_dim * 0.5f; + v2 half_d = HMM_MultiplyVec2f(window_dim, 0.5f); ui->proj = HMM_Orthographic(0, window_dim.x, window_dim.y, 0, 0.01f, 100); if (ui->widget_next_hot.value != 0) @@ -237,16 +176,16 @@ ui_draw_panel(BSP* tree, BSP_Node_Id id, BSP_Node* node, u8* user_data) BSP_Area area = node->area; if (ui->draw_panel_cb) ui->draw_panel_cb(ui->draw_panel_cb_data, id, *node, area); - + r32 z = -1; - v3 l0p0 = v3{ area.min.x, area.min.y, z }; // left side - v3 l0p1 = v3{ area.min.x + 1, area.max.y, z }; - v3 l1p0 = v3{ area.max.x - 1, area.min.y, z }; // right side - v3 l1p1 = v3{ area.max.x, area.max.y, z }; - v3 l2p0 = v3{ area.min.x, area.min.y , z }; // bottom side - v3 l2p1 = v3{ area.max.x, area.min.y + 1, z }; - v3 l3p0 = v3{ area.min.x, area.max.y , z }; // top side - v3 l3p1 = v3{ area.max.x, area.max.y + 1, z }; + v3 l0p0 = (v3){ area.min.x, area.min.y, z }; // left side + v3 l0p1 = (v3){ area.min.x + 1, area.max.y, z }; + v3 l1p0 = (v3){ area.max.x - 1, area.min.y, z }; // right side + v3 l1p1 = (v3){ area.max.x, area.max.y, z }; + v3 l2p0 = (v3){ area.min.x, area.min.y , z }; // bottom side + v3 l2p1 = (v3){ area.max.x, area.min.y + 1, z }; + v3 l3p0 = (v3){ area.min.x, area.max.y , z }; // top side + v3 l3p1 = (v3){ area.max.x, area.max.y + 1, z }; u32 sid = WHITE_SPRITE_ID; v4 c = WHITE_V4; if (rect2_contains(area.min, area.max, ui->input->frame_hot->mouse_pos)) @@ -254,37 +193,39 @@ ui_draw_panel(BSP* tree, BSP_Node_Id id, BSP_Node* node, u8* user_data) c = PINK_V4; } - ui_sprite_push(ui, l0p0, l0p1, sid, c); - ui_sprite_push(ui, l1p0, l1p1, sid, c); - ui_sprite_push(ui, l2p0, l2p1, sid, c); - ui_sprite_push(ui, l3p0, l3p1, sid, c); + #if 0 + ui_sprite_push_color(ui, l0p0, l0p1, sid, c); + ui_sprite_push_color(ui, l1p0, l1p1, sid, c); + ui_sprite_push_color(ui, l2p0, l2p1, sid, c); + ui_sprite_push_color(ui, l3p0, l3p1, sid, c); + #endif } internal void ui_draw(UI* ui) { bsp_walk_inorder(&ui->panels, ui->panels.root, ui_draw_panel, (u8*)ui); - + u32 widget_count = ui->widgets.free_len; r32 range_min = -10; r32 range_max = -1; r32 range_step = (range_max - range_min) / (r32)(widget_count * 4); ui_widgets_to_geometry_recursive(ui, ui->widgets.root, -10, range_step); - platform_geometry_buffer_update( - &ui->per_frame_buffer, - (r32*)ui->geo.buffer_vertex.values, - 0, - ui->geo.buffer_vertex.len * ui->geo.buffer_vertex.stride, - ui->geo.buffer_index.values, - 0, - ui->geo.buffer_index.len - ); - platform_shader_bind(ui->shader); - platform_set_uniform(ui->shader, 0, ui->proj); - platform_texture_bind(ui->atlas_texture); - platform_geometry_bind(ui->per_frame_buffer); - platform_geometry_draw(ui->per_frame_buffer, ui->geo.buffer_index.len); + geometry_buffer_update( + &ui->per_frame_buffer, + (r32*)ui->geo.buffer_vertex.values, + 0, + ui->geo.buffer_vertex.len * ui->geo.buffer_vertex.stride, + ui->geo.buffer_index.values, + 0, + ui->geo.buffer_index.len + ); + shader_bind(ui->shader); + set_uniform(ui->shader, 0, ui->proj); + texture_bind(ui->atlas_texture); + geometry_bind(ui->per_frame_buffer); + geometry_drawi(ui->per_frame_buffer, ui->geo.buffer_index.len); } //////////////////////////////////////////// @@ -296,13 +237,13 @@ ui_widget_id_create(String string, u32 index) assert(string.len != 0 && string.str != 0); UI_Widget_Id result = {}; zero_struct(result); - result.value = hash_djb2_to_u32(string); + result.value = hash_djb2_string_to_u32(string); result.index = index; return result; } internal UI_Widget_State* -ui_widget_state_get(UI_Widget_Pool* pool, UI_Widget_Id id) +ui_widget_pool_state_get(UI_Widget_Pool* pool, UI_Widget_Id id) { u32 index = hash_table_find(pool->states_hash, pool->states_cap, id.value); assert(index != pool->states_cap); @@ -312,7 +253,7 @@ ui_widget_state_get(UI_Widget_Pool* pool, UI_Widget_Id id) internal UI_Widget_State* ui_widget_state_get(UI* ui, UI_Widget_Id id) { - return ui_widget_state_get(&ui->widgets, id); + return ui_widget_pool_state_get(&ui->widgets, id); } internal UI_Widget* @@ -377,7 +318,7 @@ ui_widget_next_hot_set(UI* ui, UI_Widget* w) if (w) { ui->widget_next_hot = w->id; } else { - ui->widget_next_hot = UI_Widget_Id{0}; + ui->widget_next_hot = (UI_Widget_Id){0}; } ui->widget_next_hot_frames = 0; } @@ -388,7 +329,7 @@ ui_widget_hot_set(UI* ui, UI_Widget* w) if (w) { ui->widget_hot = w->id; } else { - ui->widget_hot = UI_Widget_Id{0}; + ui->widget_hot = (UI_Widget_Id){0}; } ui->widget_hot_frames = 0; } @@ -398,7 +339,7 @@ ui_widget_push(UI* ui, UI_Widget_Desc desc) { UI_Widget_Result result = {}; zero_struct(result); - v2 dim = desc.p_max - desc.p_min; + v2 dim = HMM_SubtractVec2(desc.p_max, desc.p_min); if (dim.x == 0 || dim.y == 0) return result; UI_Widget* w = ui_widget_pool_push(&ui->widgets, desc.string); @@ -410,9 +351,9 @@ ui_widget_push(UI* ui, UI_Widget_Desc desc) v2 mouse_p = ui->input->frame_hot->mouse_pos; bool mouse_over = ( - mouse_p.x >= desc.p_min.x && mouse_p.x <= desc.p_max.x && - mouse_p.y >= desc.p_min.y && mouse_p.y <= desc.p_max.y - ); + mouse_p.x >= desc.p_min.x && mouse_p.x <= desc.p_max.x && + mouse_p.y >= desc.p_min.y && mouse_p.y <= desc.p_max.y + ); UI_Widget_Style_Flags flags = desc.style.flags; UI_Widget_Style_Flags mask_drag = (UIWidgetStyle_MouseDragH | UIWidgetStyle_MouseDragV); @@ -473,11 +414,12 @@ ui_widget_push(UI* ui, UI_Widget_Desc desc) has_flag(flags, UIWidgetStyle_MouseDragH) ? 1.0f : 0.0f, has_flag(flags, UIWidgetStyle_MouseDragV) ? 1.0f : 0.0f }; - v2 drag = ui->input->frame_hot->mouse_pos - w->desc.p_min; - drag = v2{ clamp(0, drag.x, w->desc.p_max.x), clamp(0, drag.y, w->desc.p_max.y) }; - drag *= drag_pct_mask; - v2 drag_pct = drag / dim; - drag_pct = v2{ clamp(0, drag_pct.x, 1), clamp(0, drag_pct.y, 1) }; + v2 mp = ui->input->frame_hot->mouse_pos; + v2 drag = HMM_SubtractVec2(mp, w->desc.p_min); + drag = (v2){ clamp(0, drag.x, w->desc.p_max.x), clamp(0, drag.y, w->desc.p_max.y) }; + drag = HMM_MultiplyVec2(drag, drag_pct_mask); + v2 drag_pct = HMM_DivideVec2(drag, dim); + drag_pct = (v2){ clamp(0, drag_pct.x, 1), clamp(0, drag_pct.y, 1) }; result.drag = drag_pct; state->scroll = drag_pct; @@ -520,17 +462,17 @@ ui_widgets_to_geometry_recursive(UI* ui, UI_Widget* widget, r32 z_start, r32 z_s if (has_flag(child->desc.style.flags, UIWidgetStyle_Outline)) { - ui_sprite_push(ui, bg_min, bg_max, WHITE_SPRITE_ID, color_fg); + ui_sprite_push_color(ui, bg_min, bg_max, WHITE_SPRITE_ID, color_fg); z_at += z_step; - bg_min += v3{ 1, 1, 0}; - bg_max -= v3{ 1, 1, 0}; + bg_min = HMM_AddVec3(bg_min, (v3){ 1, 1, 0}); + bg_max = HMM_SubtractVec3(bg_max, (v3){ 1, 1, 0}); } if (has_flag(child->desc.style.flags, UIWidgetStyle_Bg)) { bg_min.z = z_at; bg_max.z = z_at; - ui_sprite_push(ui, bg_min, bg_max, desc.style.sprite, color_bg); + ui_sprite_push_color(ui, bg_min, bg_max, desc.style.sprite, color_bg); z_at += z_step; } @@ -546,13 +488,13 @@ ui_widgets_to_geometry_recursive(UI* ui, UI_Widget* widget, r32 z_start, r32 z_s if (has_flag(child->desc.style.flags, UIWidgetStyle_LineInsteadOfFill)) { - fill_min = v3{ fill_x, bg_min.y, z_at }; - fill_max = v3{ fill_x + 1, bg_max.y, z_at }; + fill_min = (v3){ fill_x, bg_min.y, z_at }; + fill_max = (v3){ fill_x + 1, bg_max.y, z_at }; } else { fill_min = bg_min; - fill_max = v3{ fill_x, bg_max.y, z_at }; + fill_max = (v3){ fill_x, bg_max.y, z_at }; } } else if (has_flag(child->desc.style.flags, UIWidgetStyle_FillV)) @@ -561,17 +503,17 @@ ui_widgets_to_geometry_recursive(UI* ui, UI_Widget* widget, r32 z_start, r32 z_s if (has_flag(child->desc.style.flags, UIWidgetStyle_LineInsteadOfFill)) { - fill_min = v3{ bg_min.x, fill_y, z_at }; - fill_max = v3{ bg_max.x, fill_y + 1, z_at }; + fill_min = (v3){ bg_min.x, fill_y, z_at }; + fill_max = (v3){ bg_max.x, fill_y + 1, z_at }; } else { fill_min = bg_min; - fill_max = v3{ bg_max.x, fill_y, z_at }; + fill_max = (v3){ bg_max.x, fill_y, z_at }; } } - ui_sprite_push(ui, fill_min, fill_max, WHITE_SPRITE_ID, color_fg); + ui_sprite_push_color(ui, fill_min, fill_max, WHITE_SPRITE_ID, color_fg); z_at += z_step; } @@ -667,7 +609,7 @@ ui_layout_row_begin(UI_Layout* layout, u32 cols) layout->cols = cols; } internal void -ui_layout_row_begin(UI* ui, u32 cols) { ui_layout_row_begin(ui->layout, cols); } +ui_row_begin(UI* ui, u32 cols) { ui_layout_row_begin(ui->layout, cols); } internal void ui_layout_row_end(UI_Layout* layout) @@ -675,7 +617,7 @@ ui_layout_row_end(UI_Layout* layout) layout->mode = UILayout_Columns; } internal void -ui_layout_row_end(UI* ui) { ui_layout_row_end(ui->layout); } +ui_row_end(UI* ui) { ui_layout_row_end(ui->layout); } internal UI_Layout_Bounds ui_layout_get_next(UI_Layout* layout) @@ -693,8 +635,8 @@ ui_layout_get_next(UI_Layout* layout) case UILayout_Columns: { result.min = layout->at; - result.max = v2{ layout->bounds_max.x, layout->at.y + layout->row_height }; - layout->at = v2{ layout->bounds_min.x, result.max.y + layout->row_gap}; + result.max = (v2){ layout->bounds_max.x, layout->at.y + layout->row_height }; + layout->at = (v2){ layout->bounds_min.x, result.max.y + layout->row_gap}; } break; case UILayout_Rows: @@ -702,11 +644,11 @@ ui_layout_get_next(UI_Layout* layout) r32 col_width = (layout->bounds_max.x - layout->bounds_min.x) / layout->cols; col_width -= (layout->cols - 1) * layout->col_gap; result.min = layout->at; - result.max = v2{ layout->at.x + col_width, layout->at.y + layout->row_height }; - layout->at = v2{ result.max.x + layout->col_gap, layout->at.y }; + result.max = (v2){ layout->at.x + col_width, layout->at.y + layout->row_height }; + layout->at = (v2){ result.max.x + layout->col_gap, layout->at.y }; if (layout->at.x >= layout->bounds_max.x) { - layout->at = v2{ + layout->at = (v2){ layout->bounds_min.x, layout->at.y + layout->row_height + layout->row_gap }; @@ -725,8 +667,6 @@ ui_layout_get_next(UI_Layout* layout) return result; } -internal UI_Layout_Bounds -ui_layout_get_next(UI* ui) { return ui_layout_get_next(ui->layout); } /////////////////////////////////////////// @@ -739,32 +679,32 @@ global UI_Style_Sheet ui_default_style_sheet = {}; internal void ui_create_default_style_sheet() { - ui_default_style_sheet.styles[UIWidget_Text] = { - (UIWidgetStyle_TextWrap), v4{0,0,0,0}, WHITE_V4, WHITE_SPRITE_ID + ui_default_style_sheet.styles[UIWidget_Text] = (UI_Widget_Style){ + (UIWidgetStyle_TextWrap), (v4){0,0,0,0}, WHITE_V4, WHITE_SPRITE_ID }; - ui_default_style_sheet.styles[UIWidget_Button] = { + ui_default_style_sheet.styles[UIWidget_Button] = (UI_Widget_Style){ (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseClick), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID }; - ui_default_style_sheet.styles[UIWidget_Toggle] = { + ui_default_style_sheet.styles[UIWidget_Toggle] = (UI_Widget_Style){ (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_MouseClick), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID }; ui_default_style_sheet.styles[UIWidget_Menu] = ui_default_style_sheet.styles[UIWidget_Toggle]; ui_default_style_sheet.styles[UIWidget_Dropdown] = ui_default_style_sheet.styles[UIWidget_Toggle]; - ui_default_style_sheet.styles[UIWidget_HSlider] = { + ui_default_style_sheet.styles[UIWidget_HSlider] = (UI_Widget_Style){ (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseDragH | UIWidgetStyle_FillH ), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID }; - ui_default_style_sheet.styles[UIWidget_VSlider] = { + ui_default_style_sheet.styles[UIWidget_VSlider] = (UI_Widget_Style){ (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseDragV | UIWidgetStyle_FillV ), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID }; - ui_default_style_sheet.styles[UIWidget_HScroll] = { + ui_default_style_sheet.styles[UIWidget_HScroll] = (UI_Widget_Style){ (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseDragH | UIWidgetStyle_FillH | UIWidgetStyle_LineInsteadOfFill ), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID }; - ui_default_style_sheet.styles[UIWidget_VScroll] = { + ui_default_style_sheet.styles[UIWidget_VScroll] = (UI_Widget_Style) { (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseDragV | UIWidgetStyle_FillV | UIWidgetStyle_LineInsteadOfFill ), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID }; - ui_default_style_sheet.styles[UIWidget_Window] = { + ui_default_style_sheet.styles[UIWidget_Window] = (UI_Widget_Style){ (UIWidgetStyle_TextWrap), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID }; @@ -780,7 +720,7 @@ ui_get_style(UI* ui, UI_Widget_Kind kind) internal UI_Widget_Desc ui_layout_next_widget(UI* ui, UI_Widget_Kind kind) { - UI_Layout_Bounds b = ui_layout_get_next(ui); + UI_Layout_Bounds b = ui_layout_get_next(ui->layout); UI_Widget_Desc d = {}; zero_struct(d); d.p_min = b.min; @@ -790,7 +730,7 @@ ui_layout_next_widget(UI* ui, UI_Widget_Kind kind) } internal void -ui_text(UI* ui, String string, v4 color) +ui_textc(UI* ui, String string, v4 color) { UI_Widget_Desc d = ui_layout_next_widget(ui, UIWidget_Text); d.string = string; @@ -818,7 +758,8 @@ ui_text_f(UI* ui, char* fmt, ...) String string = string_fv(scratch.a, fmt, args); va_end(args); - return ui_text(ui, string); + ui_text(ui, string); + scratch_release(scratch); } internal bool @@ -854,25 +795,25 @@ ui_scroll_view_begin(UI* ui, String string, v2 bounds_min, v2 bounds_max, u32 ro scratch_get(scratch); r32 scroll_bar_dim = 15; - v2 scroll_bars_area = v2{0, 0}; + v2 scroll_bars_area = (v2){0, 0}; v2 scroll_area_min = bounds_min; - v2 scroll_area_max = bounds_max - scroll_bars_area; - v2 scroll_area_dim = scroll_area_max - scroll_area_min; + v2 scroll_area_max = HMM_SubtractVec2(bounds_max, scroll_bars_area); + v2 scroll_area_dim = HMM_SubtractVec2(scroll_area_max, scroll_area_min); v2 scroll_offset = {}; zero_struct(scroll_offset); r32 rows_avail = floorf(scroll_area_dim.y / ui->layout->row_height); if (rows > rows_avail) { - scroll_bars_area = v2{ scroll_bar_dim, 0}; + scroll_bars_area = (v2){ scroll_bar_dim, 0}; scroll_area_min = bounds_min; - scroll_area_max = bounds_max - scroll_bars_area; - scroll_area_dim = scroll_area_max - scroll_area_min; + scroll_area_max = HMM_SubtractVec2(bounds_max, scroll_bars_area); + scroll_area_dim = HMM_SubtractVec2(scroll_area_max, scroll_area_min); UI_Widget_Desc vscroll_d = {}; zero_struct(vscroll_d); - vscroll_d.p_min = { bounds_max.x - scroll_bar_dim, bounds_min.y }; - vscroll_d.p_max = { bounds_max.x, bounds_max.y }; + vscroll_d.p_min = (v2){ bounds_max.x - scroll_bar_dim, bounds_min.y }; + vscroll_d.p_max = (v2){ bounds_max.x, bounds_max.y }; vscroll_d.style = ui_get_style(ui, UIWidget_VScroll); vscroll_d.string = string_f(scratch.a, "%.*s_vscroll", str_varg(string)); UI_Widget_Result r = ui_widget_push(ui, vscroll_d); @@ -885,16 +826,17 @@ ui_scroll_view_begin(UI* ui, String string, v2 bounds_min, v2 bounds_max, u32 ro r32 rows_scroll_to = max(0, rows - (rows_avail - 1)); r32 y_scroll_dist = rows_scroll_to * ui->layout->row_height; - scroll_offset *= v2{ 0, y_scroll_dist }; + scroll_offset = HMM_MultiplyVec2(scroll_offset, (v2){ 0, y_scroll_dist }); UI_Layout* layout = allocator_alloc_struct(scratch.a, UI_Layout); layout->mode = UILayout_Columns; layout->bounds_min = scroll_area_min; layout->bounds_max = scroll_area_max; ui_layout_set_row_info(ui, layout); - layout->at = bounds_min - scroll_offset; + layout->at = HMM_SubtractVec2(bounds_min, scroll_offset); ui_layout_push(ui, layout); + scratch_release(scratch); return layout; } diff --git a/src_v2/editor/lumenarium_editor_ui.h b/src_v2/editor/lumenarium_editor_ui.h index 6a9b4e7..2bea01e 100644 --- a/src_v2/editor/lumenarium_editor_ui.h +++ b/src_v2/editor/lumenarium_editor_ui.h @@ -6,6 +6,7 @@ ///////////////////////////////////////////////////////////// // Interface +typedef struct UI_Vertex UI_Vertex; struct UI_Vertex { v4 pos; @@ -15,6 +16,7 @@ struct UI_Vertex #define UI_WIDGET_ID_VALID_BIT 1 << 31 +typedef union UI_Widget_Id UI_Widget_Id; union UI_Widget_Id { // equality of widget id's only relies on the value field @@ -45,6 +47,7 @@ enum // akin to a css class, could be used to style multiple // elements +typedef struct UI_Widget_Style UI_Widget_Style; struct UI_Widget_Style { UI_Widget_Style_Flags flags; @@ -54,6 +57,7 @@ struct UI_Widget_Style }; // combination of style info and per-instance data +typedef struct UI_Widget_Desc UI_Widget_Desc; struct UI_Widget_Desc { UI_Widget_Style style; @@ -63,6 +67,7 @@ struct UI_Widget_Desc v2 p_max; }; +typedef struct UI_Widget UI_Widget; struct UI_Widget { UI_Widget_Id id; @@ -82,6 +87,7 @@ enum UIWidgetResult_MouseLeft_WentUp = 2, }; +typedef struct UI_Widget_Result UI_Widget_Result; struct UI_Widget_Result { UI_Widget_Id id; @@ -89,7 +95,8 @@ struct UI_Widget_Result v2 drag; }; -enum UI_Widget_Kind +typedef u32 UI_Widget_Kind; +enum { UIWidget_Text, @@ -111,16 +118,19 @@ enum UI_Widget_Kind UIWidget_Count, }; +typedef struct UI_Style_Sheet UI_Style_Sheet; struct UI_Style_Sheet { UI_Widget_Style styles[UIWidget_Count]; }; +typedef struct UI_Widget_State UI_Widget_State; struct UI_Widget_State { v2 scroll; }; +typedef struct UI_Widget_Pool UI_Widget_Pool; struct UI_Widget_Pool { UI_Widget* free; @@ -135,7 +145,8 @@ struct UI_Widget_Pool u32 states_cap; }; -enum UI_Layout_Mode +typedef u8 UI_Layout_Mode; +enum { // each element takes up a whole row UILayout_Columns, @@ -145,6 +156,7 @@ enum UI_Layout_Mode UILayout_Rows, }; +typedef struct UI_Layout UI_Layout; struct UI_Layout { UI_Layout_Mode mode; @@ -159,6 +171,7 @@ struct UI_Layout u32 cols; }; +typedef struct UI_Layout_Bounds UI_Layout_Bounds; struct UI_Layout_Bounds { v2 min; @@ -167,6 +180,7 @@ struct UI_Layout_Bounds typedef void UI_Draw_Panel_Cb(u8* user_data, BSP_Node_Id id, BSP_Node node, BSP_Area area); +typedef struct UI UI; struct UI { Geo_Quad_Buffer_Builder geo; @@ -193,9 +207,9 @@ struct UI Input_State* input; m44 proj; - Platform_Shader shader; - Platform_Texture atlas_texture; - Platform_Geometry_Buffer per_frame_buffer; + Shader shader; + Texture atlas_texture; + Geometry_Buffer per_frame_buffer; }; // Interface @@ -203,16 +217,16 @@ struct UI internal UI ui_create(); internal void ui_quad_push(UI* ui, v3 pmin, v3 pmax, v2 tmin, v2 tmax, v4 c); internal void ui_sprite_register(UI* ui, u8* pixels, u32 w, u32 h, u32 id); -internal void ui_sprite_push(UI* ui, v3 pmin, v3 pmax, u32 id, v4 color); +internal void ui_sprite_push_color(UI* ui, v3 pmin, v3 pmax, u32 id, v4 color); internal void ui_sprite_push(UI* ui, v3 pmin, v3 pmax, u32 id); internal v3 ui_sprite_char_push(UI* ui, v2 at, u32 codepoint, v4 color); -internal void ui_draw(App_State* state); +internal void ui_draw(UI* ui); // Widgets internal void ui_create_default_style_sheet(); -internal UI_Widget_Id ui_widget_id_create(u32 index_in_parent, String string); +internal UI_Widget_Id ui_widget_id_create(String string, u32 index_in_parent); internal bool ui_widget_id_equals(UI_Widget_Id a, UI_Widget_Id b); internal bool ui_widget_id_is_valid(UI_Widget_Id h); diff --git a/src_v2/editor/lumenarium_editor_ui_shaders.h b/src_v2/editor/lumenarium_editor_ui_shaders.h new file mode 100644 index 0000000..1db4635 --- /dev/null +++ b/src_v2/editor/lumenarium_editor_ui_shaders.h @@ -0,0 +1,75 @@ +global XPlatform_Shader_Program_Src ui_shader = { + .win32_vert = lit_str( + "#version 330 core\n" + "layout (location = 0) in vec3 a_pos;\n" + "layout (location = 1) in vec2 a_uv;\n" + "layout (location = 2) in vec4 a_color;\n" + "out vec2 uv;\n" + "out vec4 color;\n" + "uniform mat4 proj;\n" + "void main(void) {\n" + " gl_Position = proj * vec4(a_pos, 1.0);\n" + " uv = a_uv;\n" + " color = a_color;\n" + "}" + ), + .win32_frag = lit_str( + "#version 330 core\n" + "in vec2 uv;\n" + "in vec4 color;\n" + "out vec4 FragColor;\n" + "uniform sampler2D tex;\n" + "void main(void) {\n" + " FragColor = texture(tex, uv) * color;\n" + "}" + ), + + .osx_vert = lit_str( + "#version 330 core\n" + "layout (location = 0) in vec3 a_pos;\n" + "layout (location = 1) in vec2 a_uv;\n" + "layout (location = 2) in vec4 a_color;\n" + "out vec2 uv;\n" + "out vec4 color;\n" + "uniform mat4 proj;\n" + "void main(void) {\n" + " gl_Position = proj * vec4(a_pos, 1.0);\n" + " uv = a_uv;\n" + " color = a_color;\n" + "}" + ), + .osx_frag = lit_str( + "#version 330 core\n" + "in vec2 uv;\n" + "in vec4 color;\n" + "out vec4 FragColor;\n" + "uniform sampler2D tex;\n" + "void main(void) {\n" + " FragColor = texture(tex, uv) * color;\n" + "}" + ), + + .wasm_vert = lit_str( + "precision highp float;\n" + "attribute vec3 a_pos;\n" + "attribute vec2 a_uv;\n" + "attribute vec4 a_color;\n" + "varying vec2 uv;\n" + "varying vec4 color;\n" + "uniform mat4 proj;\n" + "void main(void) {\n" + " gl_Position = proj * vec4(a_pos, 1.0);\n" + " uv = a_uv;\n" + " color = a_color;\n" + "}" + ), + .wasm_frag = lit_str( + "precision highp float;\n" + "varying vec2 uv;\n" + "varying vec4 color;\n" + "uniform sampler2D tex;\n" + "void main(void) {\n" + " gl_FragColor = texture2D(tex, uv) * color;\n" + "}" + ), +}; \ No newline at end of file diff --git a/src_v2/engine/lumenarium_engine.cpp b/src_v2/engine/lumenarium_engine.c similarity index 92% rename from src_v2/engine/lumenarium_engine.cpp rename to src_v2/engine/lumenarium_engine.c index 2f0704f..747a923 100644 --- a/src_v2/engine/lumenarium_engine.cpp +++ b/src_v2/engine/lumenarium_engine.c @@ -2,18 +2,22 @@ internal void en_init(App_State* state, App_Init_Desc desc) { + lumenarium_env_validate(); + state->assemblies = assembly_array_create(permanent, desc.assembly_cap); Output* o = &state->output; register_output_method(o, OutputData_Invalid, 0, 0); register_output_method(o, OutputData_NetworkSACN, output_network_sacn_build, output_network_sacn_init()); register_output_method(o, OutputData_ComUART, output_network_sacn_build, output_com_uart_init()); + + lumenarium_env_validate(); } internal void en_frame_prepare(App_State* state) { - + lumenarium_env_validate(); } global r32 tt = 0; @@ -21,6 +25,8 @@ global r32 tt = 0; internal void en_frame(App_State* state) { + lumenarium_env_validate(); + scratch_get(scratch); Assembly_Array assemblies = state->assemblies; @@ -87,11 +93,14 @@ en_frame(App_State* state) invalid_code_path; } } + + scratch_release(scratch); + lumenarium_env_validate(); } internal void en_cleanup(App_State* state) { - + lumenarium_env_validate(); } diff --git a/src_v2/engine/lumenarium_engine_assembly.cpp b/src_v2/engine/lumenarium_engine_assembly.c similarity index 82% rename from src_v2/engine/lumenarium_engine_assembly.cpp rename to src_v2/engine/lumenarium_engine_assembly.c index 156b3fc..db10fba 100644 --- a/src_v2/engine/lumenarium_engine_assembly.cpp +++ b/src_v2/engine/lumenarium_engine_assembly.c @@ -2,12 +2,13 @@ Assembly_Array assembly_array_create(Allocator* allocator, u32 cap) { - Assembly_Array result = {}; - result.cap = cap; - result.names = allocator_alloc_array(allocator, String, cap); - result.pixel_buffers = allocator_alloc_array(allocator, Assembly_Pixel_Buffer, cap); - result.strip_arrays = allocator_alloc_array(allocator, Assembly_Strip_Array, cap); - result.allocator = allocator; + Assembly_Array result = { + .cap = cap, + .names = allocator_alloc_array(allocator, String, cap), + .pixel_buffers = allocator_alloc_array(allocator, Assembly_Pixel_Buffer, cap), + .strip_arrays = allocator_alloc_array(allocator, Assembly_Strip_Array, cap), + .allocator = allocator, + }; return result; } @@ -49,11 +50,13 @@ assembly_add(Assembly_Array* a, String name, u32 pixels_cap, u32 strips_cap) a->names[index] = name; Assembly_Pixel_Buffer* pixel_buffer = a->pixel_buffers + index; + zero_struct(*pixel_buffer); pixel_buffer->cap = pixels_cap; pixel_buffer->pixels = allocator_alloc_array(a->allocator, Assembly_Pixel, pixels_cap); pixel_buffer->positions = allocator_alloc_array(a->allocator, v4, pixels_cap); Assembly_Strip_Array* strip_array = a->strip_arrays + index; + zero_struct(*strip_array); strip_array->cap = strips_cap; strip_array->strips = allocator_alloc_array(a->allocator, Assembly_Strip, strips_cap); @@ -94,7 +97,7 @@ assembly_add_led( assert(pixel_buffer->len < pixel_buffer->cap); u32 pixel_index = pixel_buffer->len++; - pixel_buffer->pixels[pixel_index] = {}; + pixel_buffer->pixels[pixel_index] = (Assembly_Pixel){}; pixel_buffer->positions[pixel_index] = position; assert(strip->pixels_len < strip->pixels_cap); @@ -109,13 +112,14 @@ assembly_strip_create_leds( v3 start, v3 end, u32 led_count ){ - v3 delta_total = end - start; - v3 delta_step = delta_total / (r32)led_count; + v3 delta_total = HMM_SubtractVec3(end, start); + v3 delta_step = HMM_MultiplyVec3f(delta_total, 1.0f / (r32)led_count); for (u32 i = 0; i < led_count; i++) { v4 pos = {0,0,0,1}; - pos.XYZ = start + ((r32)i * delta_step); + v3 offset = HMM_MultiplyVec3f(delta_step, (r32)i); + pos.XYZ = HMM_AddVec3(start, offset); assembly_add_led(a, h, strip, pos); } } \ No newline at end of file diff --git a/src_v2/engine/lumenarium_engine_assembly.h b/src_v2/engine/lumenarium_engine_assembly.h index 2c94fac..8dbed50 100644 --- a/src_v2/engine/lumenarium_engine_assembly.h +++ b/src_v2/engine/lumenarium_engine_assembly.h @@ -13,11 +13,13 @@ // more than 128 sculptures in a scene - but who knows, maybe someday O.o? #define ASSEMBLY_HANDLE_VALID_BIT (1 << 31) #define ASSEMBLY_HANDLE_INDEX_MASK ~ASSEMBLY_HANDLE_VALID_BIT +typedef struct Assembly_Handle Assembly_Handle; struct Assembly_Handle { u32 value; }; +typedef union Assembly_Pixel Assembly_Pixel; union Assembly_Pixel { struct { @@ -28,6 +30,7 @@ union Assembly_Pixel u8 channels[3]; }; +typedef struct Assembly_Pixel_Buffer Assembly_Pixel_Buffer; struct Assembly_Pixel_Buffer { u32 cap; @@ -36,6 +39,7 @@ struct Assembly_Pixel_Buffer v4* positions; }; +typedef struct Assembly_Strip Assembly_Strip; struct Assembly_Strip { u32 pixels_cap; @@ -47,6 +51,7 @@ struct Assembly_Strip u32 sacn_universe; }; +typedef struct Assembly_Strip_Array Assembly_Strip_Array; struct Assembly_Strip_Array { u32 cap; @@ -54,6 +59,7 @@ struct Assembly_Strip_Array Assembly_Strip* strips; }; +typedef struct Assembly_Array Assembly_Array; struct Assembly_Array { u32 cap; diff --git a/src_v2/engine/lumenarium_engine_output.cpp b/src_v2/engine/lumenarium_engine_output.c similarity index 100% rename from src_v2/engine/lumenarium_engine_output.cpp rename to src_v2/engine/lumenarium_engine_output.c diff --git a/src_v2/engine/lumenarium_engine_output.h b/src_v2/engine/lumenarium_engine_output.h index d8b9a76..3d3ff56 100644 --- a/src_v2/engine/lumenarium_engine_output.h +++ b/src_v2/engine/lumenarium_engine_output.h @@ -12,6 +12,7 @@ enum OutputData_Count, }; +typedef struct Output_Data_Network Output_Data_Network; struct Output_Data_Network { // Platform_Socket_Handle socket; @@ -19,11 +20,13 @@ struct Output_Data_Network u32 port; }; +typedef struct Output_Data_Com Output_Data_Com; struct Output_Data_Com { String port; }; +typedef struct Output_Data Output_Data; struct Output_Data { Output_Data_Kind kind; @@ -37,6 +40,7 @@ struct Output_Data Output_Data* next; }; +typedef struct Output_Data_Queue Output_Data_Queue; struct Output_Data_Queue { Output_Data* first; @@ -47,12 +51,14 @@ struct Output_Data_Queue typedef void Build_Output_Data_Buffer(App_State* state, u32 assembly_id, Assembly_Strip* strip, u8* method_data, Output_Data_Queue* queue); +typedef struct Output_Methods Output_Methods; struct Output_Methods { Build_Output_Data_Buffer* procs[OutputData_Count]; u8* method_data[OutputData_Count]; }; +typedef struct Output Output; struct Output { Output_Methods methods; diff --git a/src_v2/engine/output/lumenarium_output_sacn.cpp b/src_v2/engine/output/lumenarium_output_sacn.c similarity index 99% rename from src_v2/engine/output/lumenarium_output_sacn.cpp rename to src_v2/engine/output/lumenarium_output_sacn.c index c7f961a..ada76ca 100644 --- a/src_v2/engine/output/lumenarium_output_sacn.cpp +++ b/src_v2/engine/output/lumenarium_output_sacn.c @@ -165,7 +165,7 @@ sacn_fill_buffer_body(Output_Data* d, u32* leds_placed) internal Sacn_Cid sacn_string_to_cid(String str) { - return {}; + return (Sacn_Cid){}; } internal u32 diff --git a/src_v2/engine/output/lumenarium_output_sacn.h b/src_v2/engine/output/lumenarium_output_sacn.h index 568020a..0f762c7 100644 --- a/src_v2/engine/output/lumenarium_output_sacn.h +++ b/src_v2/engine/output/lumenarium_output_sacn.h @@ -4,11 +4,13 @@ #define LUMENARIUM_OUTPUT_SACN_H #define SACN_CID_BYTES 16 +typedef struct Sacn_Cid Sacn_Cid; struct Sacn_Cid { u8 bytes[SACN_CID_BYTES]; }; +typedef struct Sacn Sacn; struct Sacn { Sacn_Cid cid; diff --git a/src_v2/engine/output/lumenarium_output_uart.cpp b/src_v2/engine/output/lumenarium_output_uart.c similarity index 100% rename from src_v2/engine/output/lumenarium_output_uart.cpp rename to src_v2/engine/output/lumenarium_output_uart.c diff --git a/src_v2/libs/HandmadeMath.h b/src_v2/libs/HandmadeMath.h index 8f71b31..63f883b 100644 --- a/src_v2/libs/HandmadeMath.h +++ b/src_v2/libs/HandmadeMath.h @@ -2122,7 +2122,7 @@ HMM_AverageVec3(hmm_vec3* Arr, int Len) hmm_vec3 Total = {}; for (int i = 0; i < Len; i++) { - Total += HMM_AddVec3(Total, Arr[i]); + Total = HMM_AddVec3(Total, Arr[i]); } hmm_vec3 Result = {}; diff --git a/src_v2/libs/glfw_osx/include/GLFW/glfw3.h b/src_v2/libs/glfw_osx/include/GLFW/glfw3.h new file mode 100644 index 0000000..d074de1 --- /dev/null +++ b/src_v2/libs/glfw_osx/include/GLFW/glfw3.h @@ -0,0 +1,5913 @@ +/************************************************************************* + * GLFW 3.3 - www.glfw.org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2019 Camilla Löwy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_h_ +#define _glfw3_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3.h + * @brief The header of the GLFW 3 API. + * + * This is the header file of the GLFW 3 API. It defines all its types and + * declares all its functions. + * + * For more information about how to use this file, see @ref build_include. + */ +/*! @defgroup context Context reference + * @brief Functions and types related to OpenGL and OpenGL ES contexts. + * + * This is the reference documentation for OpenGL and OpenGL ES context related + * functions. For more task-oriented information, see the @ref context_guide. + */ +/*! @defgroup vulkan Vulkan support reference + * @brief Functions and types related to Vulkan. + * + * This is the reference documentation for Vulkan related functions and types. + * For more task-oriented information, see the @ref vulkan_guide. + */ +/*! @defgroup init Initialization, version and error reference + * @brief Functions and types related to initialization and error handling. + * + * This is the reference documentation for initialization and termination of + * the library, version management and error handling. For more task-oriented + * information, see the @ref intro_guide. + */ +/*! @defgroup input Input reference + * @brief Functions and types related to input handling. + * + * This is the reference documentation for input related functions and types. + * For more task-oriented information, see the @ref input_guide. + */ +/*! @defgroup monitor Monitor reference + * @brief Functions and types related to monitors. + * + * This is the reference documentation for monitor related functions and types. + * For more task-oriented information, see the @ref monitor_guide. + */ +/*! @defgroup window Window reference + * @brief Functions and types related to windows. + * + * This is the reference documentation for window related functions and types, + * including creation, deletion and event polling. For more task-oriented + * information, see the @ref window_guide. + */ + + +/************************************************************************* + * Compiler- and platform-specific preprocessor work + *************************************************************************/ + +/* If we are we on Windows, we want a single define for it. + */ +#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) + #define _WIN32 +#endif /* _WIN32 */ + +/* Include because most Windows GLU headers need wchar_t and + * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +/* Include because it is needed by Vulkan and related functions. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +#if defined(GLFW_INCLUDE_VULKAN) + #include +#endif /* Vulkan header */ + +/* The Vulkan header may have indirectly included windows.h (because of + * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. + */ + +/* It is customary to use APIENTRY for OpenGL function pointer declarations on + * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. + */ +#if !defined(APIENTRY) + #if defined(_WIN32) + #define APIENTRY __stdcall + #else + #define APIENTRY + #endif + #define GLFW_APIENTRY_DEFINED +#endif /* APIENTRY */ + +/* Some Windows OpenGL headers need this. + */ +#if !defined(WINGDIAPI) && defined(_WIN32) + #define WINGDIAPI __declspec(dllimport) + #define GLFW_WINGDIAPI_DEFINED +#endif /* WINGDIAPI */ + +/* Some Windows GLU headers need this. + */ +#if !defined(CALLBACK) && defined(_WIN32) + #define CALLBACK __stdcall + #define GLFW_CALLBACK_DEFINED +#endif /* CALLBACK */ + +/* Include the chosen OpenGL or OpenGL ES headers. + */ +#if defined(GLFW_INCLUDE_ES1) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES2) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES3) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES31) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES32) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_GLCOREARB) + + #if defined(__APPLE__) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif /*GLFW_INCLUDE_GLEXT*/ + + #else /*__APPLE__*/ + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + + #endif /*__APPLE__*/ + +#elif defined(GLFW_INCLUDE_GLU) + + #if defined(__APPLE__) + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #else /*__APPLE__*/ + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #endif /*__APPLE__*/ + +#elif !defined(GLFW_INCLUDE_NONE) && \ + !defined(__gl_h_) && \ + !defined(__gles1_gl_h_) && \ + !defined(__gles2_gl2_h_) && \ + !defined(__gles2_gl3_h_) && \ + !defined(__gles2_gl31_h_) && \ + !defined(__gles2_gl32_h_) && \ + !defined(__gl_glcorearb_h_) && \ + !defined(__gl2_h_) /*legacy*/ && \ + !defined(__gl3_h_) /*legacy*/ && \ + !defined(__gl31_h_) /*legacy*/ && \ + !defined(__gl32_h_) /*legacy*/ && \ + !defined(__glcorearb_h_) /*legacy*/ && \ + !defined(__GL_H__) /*non-standard*/ && \ + !defined(__gltypes_h_) /*non-standard*/ && \ + !defined(__glee_h_) /*non-standard*/ + + #if defined(__APPLE__) + + #if !defined(GLFW_INCLUDE_GLEXT) + #define GL_GLEXT_LEGACY + #endif + #include + + #else /*__APPLE__*/ + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + + #endif /*__APPLE__*/ + +#endif /* OpenGL and OpenGL ES headers */ + +#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) + /* GLFW_DLL must be defined by applications that are linking against the DLL + * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW + * configuration header when compiling the DLL version of the library. + */ + #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" +#endif + +/* GLFWAPI is used to declare public API functions for export + * from the DLL / shared library / dynamic library. + */ +#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Win32 DLL */ + #define GLFWAPI __declspec(dllexport) +#elif defined(_WIN32) && defined(GLFW_DLL) + /* We are calling GLFW as a Win32 DLL */ + #define GLFWAPI __declspec(dllimport) +#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a shared / dynamic library */ + #define GLFWAPI __attribute__((visibility("default"))) +#else + /* We are building or calling GLFW as a static library */ + #define GLFWAPI +#endif + + +/************************************************************************* + * GLFW API tokens + *************************************************************************/ + +/*! @name GLFW version macros + * @{ */ +/*! @brief The major version number of the GLFW header. + * + * The major version number of the GLFW header. This is incremented when the + * API is changed in non-compatible ways. + * @ingroup init + */ +#define GLFW_VERSION_MAJOR 3 +/*! @brief The minor version number of the GLFW header. + * + * The minor version number of the GLFW header. This is incremented when + * features are added to the API but it remains backward-compatible. + * @ingroup init + */ +#define GLFW_VERSION_MINOR 3 +/*! @brief The revision number of the GLFW header. + * + * The revision number of the GLFW header. This is incremented when a bug fix + * release is made that does not contain any API changes. + * @ingroup init + */ +#define GLFW_VERSION_REVISION 7 +/*! @} */ + +/*! @brief One. + * + * This is only semantic sugar for the number 1. You can instead use `1` or + * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal + * to one. + * + * @ingroup init + */ +#define GLFW_TRUE 1 +/*! @brief Zero. + * + * This is only semantic sugar for the number 0. You can instead use `0` or + * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is + * equal to zero. + * + * @ingroup init + */ +#define GLFW_FALSE 0 + +/*! @name Key and button actions + * @{ */ +/*! @brief The key or mouse button was released. + * + * The key or mouse button was released. + * + * @ingroup input + */ +#define GLFW_RELEASE 0 +/*! @brief The key or mouse button was pressed. + * + * The key or mouse button was pressed. + * + * @ingroup input + */ +#define GLFW_PRESS 1 +/*! @brief The key was held down until it repeated. + * + * The key was held down until it repeated. + * + * @ingroup input + */ +#define GLFW_REPEAT 2 +/*! @} */ + +/*! @defgroup hat_state Joystick hat states + * @brief Joystick hat states. + * + * See [joystick hat input](@ref joystick_hat) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_HAT_CENTERED 0 +#define GLFW_HAT_UP 1 +#define GLFW_HAT_RIGHT 2 +#define GLFW_HAT_DOWN 4 +#define GLFW_HAT_LEFT 8 +#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) +#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) +#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) +#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) +/*! @} */ + +/*! @defgroup keys Keyboard keys + * @brief Keyboard key IDs. + * + * See [key input](@ref input_key) for how these are used. + * + * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), + * but re-arranged to map to 7-bit ASCII for printable keys (function keys are + * put in the 256+ range). + * + * The naming of the key codes follow these rules: + * - The US keyboard layout is used + * - Names of printable alpha-numeric characters are used (e.g. "A", "R", + * "3", etc.) + * - For non-alphanumeric characters, Unicode:ish names are used (e.g. + * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not + * correspond to the Unicode standard (usually for brevity) + * - Keys that lack a clear US mapping are named "WORLD_x" + * - For non-printable keys, custom names are used (e.g. "F4", + * "BACKSPACE", etc.) + * + * @ingroup input + * @{ + */ + +/* The unknown key */ +#define GLFW_KEY_UNKNOWN -1 + +/* Printable keys */ +#define GLFW_KEY_SPACE 32 +#define GLFW_KEY_APOSTROPHE 39 /* ' */ +#define GLFW_KEY_COMMA 44 /* , */ +#define GLFW_KEY_MINUS 45 /* - */ +#define GLFW_KEY_PERIOD 46 /* . */ +#define GLFW_KEY_SLASH 47 /* / */ +#define GLFW_KEY_0 48 +#define GLFW_KEY_1 49 +#define GLFW_KEY_2 50 +#define GLFW_KEY_3 51 +#define GLFW_KEY_4 52 +#define GLFW_KEY_5 53 +#define GLFW_KEY_6 54 +#define GLFW_KEY_7 55 +#define GLFW_KEY_8 56 +#define GLFW_KEY_9 57 +#define GLFW_KEY_SEMICOLON 59 /* ; */ +#define GLFW_KEY_EQUAL 61 /* = */ +#define GLFW_KEY_A 65 +#define GLFW_KEY_B 66 +#define GLFW_KEY_C 67 +#define GLFW_KEY_D 68 +#define GLFW_KEY_E 69 +#define GLFW_KEY_F 70 +#define GLFW_KEY_G 71 +#define GLFW_KEY_H 72 +#define GLFW_KEY_I 73 +#define GLFW_KEY_J 74 +#define GLFW_KEY_K 75 +#define GLFW_KEY_L 76 +#define GLFW_KEY_M 77 +#define GLFW_KEY_N 78 +#define GLFW_KEY_O 79 +#define GLFW_KEY_P 80 +#define GLFW_KEY_Q 81 +#define GLFW_KEY_R 82 +#define GLFW_KEY_S 83 +#define GLFW_KEY_T 84 +#define GLFW_KEY_U 85 +#define GLFW_KEY_V 86 +#define GLFW_KEY_W 87 +#define GLFW_KEY_X 88 +#define GLFW_KEY_Y 89 +#define GLFW_KEY_Z 90 +#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ +#define GLFW_KEY_BACKSLASH 92 /* \ */ +#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ +#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ +#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ +#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ + +/* Function keys */ +#define GLFW_KEY_ESCAPE 256 +#define GLFW_KEY_ENTER 257 +#define GLFW_KEY_TAB 258 +#define GLFW_KEY_BACKSPACE 259 +#define GLFW_KEY_INSERT 260 +#define GLFW_KEY_DELETE 261 +#define GLFW_KEY_RIGHT 262 +#define GLFW_KEY_LEFT 263 +#define GLFW_KEY_DOWN 264 +#define GLFW_KEY_UP 265 +#define GLFW_KEY_PAGE_UP 266 +#define GLFW_KEY_PAGE_DOWN 267 +#define GLFW_KEY_HOME 268 +#define GLFW_KEY_END 269 +#define GLFW_KEY_CAPS_LOCK 280 +#define GLFW_KEY_SCROLL_LOCK 281 +#define GLFW_KEY_NUM_LOCK 282 +#define GLFW_KEY_PRINT_SCREEN 283 +#define GLFW_KEY_PAUSE 284 +#define GLFW_KEY_F1 290 +#define GLFW_KEY_F2 291 +#define GLFW_KEY_F3 292 +#define GLFW_KEY_F4 293 +#define GLFW_KEY_F5 294 +#define GLFW_KEY_F6 295 +#define GLFW_KEY_F7 296 +#define GLFW_KEY_F8 297 +#define GLFW_KEY_F9 298 +#define GLFW_KEY_F10 299 +#define GLFW_KEY_F11 300 +#define GLFW_KEY_F12 301 +#define GLFW_KEY_F13 302 +#define GLFW_KEY_F14 303 +#define GLFW_KEY_F15 304 +#define GLFW_KEY_F16 305 +#define GLFW_KEY_F17 306 +#define GLFW_KEY_F18 307 +#define GLFW_KEY_F19 308 +#define GLFW_KEY_F20 309 +#define GLFW_KEY_F21 310 +#define GLFW_KEY_F22 311 +#define GLFW_KEY_F23 312 +#define GLFW_KEY_F24 313 +#define GLFW_KEY_F25 314 +#define GLFW_KEY_KP_0 320 +#define GLFW_KEY_KP_1 321 +#define GLFW_KEY_KP_2 322 +#define GLFW_KEY_KP_3 323 +#define GLFW_KEY_KP_4 324 +#define GLFW_KEY_KP_5 325 +#define GLFW_KEY_KP_6 326 +#define GLFW_KEY_KP_7 327 +#define GLFW_KEY_KP_8 328 +#define GLFW_KEY_KP_9 329 +#define GLFW_KEY_KP_DECIMAL 330 +#define GLFW_KEY_KP_DIVIDE 331 +#define GLFW_KEY_KP_MULTIPLY 332 +#define GLFW_KEY_KP_SUBTRACT 333 +#define GLFW_KEY_KP_ADD 334 +#define GLFW_KEY_KP_ENTER 335 +#define GLFW_KEY_KP_EQUAL 336 +#define GLFW_KEY_LEFT_SHIFT 340 +#define GLFW_KEY_LEFT_CONTROL 341 +#define GLFW_KEY_LEFT_ALT 342 +#define GLFW_KEY_LEFT_SUPER 343 +#define GLFW_KEY_RIGHT_SHIFT 344 +#define GLFW_KEY_RIGHT_CONTROL 345 +#define GLFW_KEY_RIGHT_ALT 346 +#define GLFW_KEY_RIGHT_SUPER 347 +#define GLFW_KEY_MENU 348 + +#define GLFW_KEY_LAST GLFW_KEY_MENU + +/*! @} */ + +/*! @defgroup mods Modifier key flags + * @brief Modifier key flags. + * + * See [key input](@ref input_key) for how these are used. + * + * @ingroup input + * @{ */ + +/*! @brief If this bit is set one or more Shift keys were held down. + * + * If this bit is set one or more Shift keys were held down. + */ +#define GLFW_MOD_SHIFT 0x0001 +/*! @brief If this bit is set one or more Control keys were held down. + * + * If this bit is set one or more Control keys were held down. + */ +#define GLFW_MOD_CONTROL 0x0002 +/*! @brief If this bit is set one or more Alt keys were held down. + * + * If this bit is set one or more Alt keys were held down. + */ +#define GLFW_MOD_ALT 0x0004 +/*! @brief If this bit is set one or more Super keys were held down. + * + * If this bit is set one or more Super keys were held down. + */ +#define GLFW_MOD_SUPER 0x0008 +/*! @brief If this bit is set the Caps Lock key is enabled. + * + * If this bit is set the Caps Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_CAPS_LOCK 0x0010 +/*! @brief If this bit is set the Num Lock key is enabled. + * + * If this bit is set the Num Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_NUM_LOCK 0x0020 + +/*! @} */ + +/*! @defgroup buttons Mouse buttons + * @brief Mouse button IDs. + * + * See [mouse button input](@ref input_mouse_button) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_MOUSE_BUTTON_1 0 +#define GLFW_MOUSE_BUTTON_2 1 +#define GLFW_MOUSE_BUTTON_3 2 +#define GLFW_MOUSE_BUTTON_4 3 +#define GLFW_MOUSE_BUTTON_5 4 +#define GLFW_MOUSE_BUTTON_6 5 +#define GLFW_MOUSE_BUTTON_7 6 +#define GLFW_MOUSE_BUTTON_8 7 +#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 +#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 +#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 +#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 +/*! @} */ + +/*! @defgroup joysticks Joysticks + * @brief Joystick IDs. + * + * See [joystick input](@ref joystick) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_JOYSTICK_1 0 +#define GLFW_JOYSTICK_2 1 +#define GLFW_JOYSTICK_3 2 +#define GLFW_JOYSTICK_4 3 +#define GLFW_JOYSTICK_5 4 +#define GLFW_JOYSTICK_6 5 +#define GLFW_JOYSTICK_7 6 +#define GLFW_JOYSTICK_8 7 +#define GLFW_JOYSTICK_9 8 +#define GLFW_JOYSTICK_10 9 +#define GLFW_JOYSTICK_11 10 +#define GLFW_JOYSTICK_12 11 +#define GLFW_JOYSTICK_13 12 +#define GLFW_JOYSTICK_14 13 +#define GLFW_JOYSTICK_15 14 +#define GLFW_JOYSTICK_16 15 +#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 +/*! @} */ + +/*! @defgroup gamepad_buttons Gamepad buttons + * @brief Gamepad buttons. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_BUTTON_A 0 +#define GLFW_GAMEPAD_BUTTON_B 1 +#define GLFW_GAMEPAD_BUTTON_X 2 +#define GLFW_GAMEPAD_BUTTON_Y 3 +#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 +#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 +#define GLFW_GAMEPAD_BUTTON_BACK 6 +#define GLFW_GAMEPAD_BUTTON_START 7 +#define GLFW_GAMEPAD_BUTTON_GUIDE 8 +#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 +#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 +#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 +#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 +#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 +#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 +#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT + +#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A +#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B +#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X +#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y +/*! @} */ + +/*! @defgroup gamepad_axes Gamepad axes + * @brief Gamepad axes. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_AXIS_LEFT_X 0 +#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 +#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 +#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 +#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 +#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 +#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER +/*! @} */ + +/*! @defgroup errors Error codes + * @brief Error codes. + * + * See [error handling](@ref error_handling) for how these are used. + * + * @ingroup init + * @{ */ +/*! @brief No error has occurred. + * + * No error has occurred. + * + * @analysis Yay. + */ +#define GLFW_NO_ERROR 0 +/*! @brief GLFW has not been initialized. + * + * This occurs if a GLFW function was called that must not be called unless the + * library is [initialized](@ref intro_init). + * + * @analysis Application programmer error. Initialize GLFW before calling any + * function that requires initialization. + */ +#define GLFW_NOT_INITIALIZED 0x00010001 +/*! @brief No context is current for this thread. + * + * This occurs if a GLFW function was called that needs and operates on the + * current OpenGL or OpenGL ES context but no context is current on the calling + * thread. One such function is @ref glfwSwapInterval. + * + * @analysis Application programmer error. Ensure a context is current before + * calling functions that require a current context. + */ +#define GLFW_NO_CURRENT_CONTEXT 0x00010002 +/*! @brief One of the arguments to the function was an invalid enum value. + * + * One of the arguments to the function was an invalid enum value, for example + * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_ENUM 0x00010003 +/*! @brief One of the arguments to the function was an invalid value. + * + * One of the arguments to the function was an invalid value, for example + * requesting a non-existent OpenGL or OpenGL ES version like 2.7. + * + * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead + * result in a @ref GLFW_VERSION_UNAVAILABLE error. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_VALUE 0x00010004 +/*! @brief A memory allocation failed. + * + * A memory allocation failed. + * + * @analysis A bug in GLFW or the underlying operating system. Report the bug + * to our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_OUT_OF_MEMORY 0x00010005 +/*! @brief GLFW could not find support for the requested API on the system. + * + * GLFW could not find support for the requested API on the system. + * + * @analysis The installed graphics driver does not support the requested + * API, or does not support it via the chosen context creation backend. + * Below are a few examples. + * + * @par + * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only + * supports OpenGL ES via EGL, while Nvidia and Intel only support it via + * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa + * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary + * driver. Older graphics drivers do not support Vulkan. + */ +#define GLFW_API_UNAVAILABLE 0x00010006 +/*! @brief The requested OpenGL or OpenGL ES version is not available. + * + * The requested OpenGL or OpenGL ES version (including any requested context + * or framebuffer hints) is not available on this machine. + * + * @analysis The machine does not support your requirements. If your + * application is sufficiently flexible, downgrade your requirements and try + * again. Otherwise, inform the user that their machine does not match your + * requirements. + * + * @par + * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 + * comes out before the 4.x series gets that far, also fail with this error and + * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions + * will exist. + */ +#define GLFW_VERSION_UNAVAILABLE 0x00010007 +/*! @brief A platform-specific error occurred that does not match any of the + * more specific categories. + * + * A platform-specific error occurred that does not match any of the more + * specific categories. + * + * @analysis A bug or configuration error in GLFW, the underlying operating + * system or its drivers, or a lack of required resources. Report the issue to + * our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_PLATFORM_ERROR 0x00010008 +/*! @brief The requested format is not supported or available. + * + * If emitted during window creation, the requested pixel format is not + * supported. + * + * If emitted when querying the clipboard, the contents of the clipboard could + * not be converted to the requested format. + * + * @analysis If emitted during window creation, one or more + * [hard constraints](@ref window_hints_hard) did not match any of the + * available pixel formats. If your application is sufficiently flexible, + * downgrade your requirements and try again. Otherwise, inform the user that + * their machine does not match your requirements. + * + * @par + * If emitted when querying the clipboard, ignore the error or report it to + * the user, as appropriate. + */ +#define GLFW_FORMAT_UNAVAILABLE 0x00010009 +/*! @brief The specified window does not have an OpenGL or OpenGL ES context. + * + * A window that does not have an OpenGL or OpenGL ES context was passed to + * a function that requires it to have one. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_NO_WINDOW_CONTEXT 0x0001000A +/*! @} */ + +/*! @addtogroup window + * @{ */ +/*! @brief Input focus window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUSED_hint) or + * [window attribute](@ref GLFW_FOCUSED_attrib). + */ +#define GLFW_FOCUSED 0x00020001 +/*! @brief Window iconification window attribute + * + * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). + */ +#define GLFW_ICONIFIED 0x00020002 +/*! @brief Window resize-ability window hint and attribute + * + * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and + * [window attribute](@ref GLFW_RESIZABLE_attrib). + */ +#define GLFW_RESIZABLE 0x00020003 +/*! @brief Window visibility window hint and attribute + * + * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and + * [window attribute](@ref GLFW_VISIBLE_attrib). + */ +#define GLFW_VISIBLE 0x00020004 +/*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_DECORATED_hint) and + * [window attribute](@ref GLFW_DECORATED_attrib). + */ +#define GLFW_DECORATED 0x00020005 +/*! @brief Window auto-iconification window hint and attribute + * + * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and + * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). + */ +#define GLFW_AUTO_ICONIFY 0x00020006 +/*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_FLOATING_hint) and + * [window attribute](@ref GLFW_FLOATING_attrib). + */ +#define GLFW_FLOATING 0x00020007 +/*! @brief Window maximization window hint and attribute + * + * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and + * [window attribute](@ref GLFW_MAXIMIZED_attrib). + */ +#define GLFW_MAXIMIZED 0x00020008 +/*! @brief Cursor centering window hint + * + * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). + */ +#define GLFW_CENTER_CURSOR 0x00020009 +/*! @brief Window framebuffer transparency hint and attribute + * + * Window framebuffer transparency + * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and + * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). + */ +#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A +/*! @brief Mouse cursor hover window attribute. + * + * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). + */ +#define GLFW_HOVERED 0x0002000B +/*! @brief Input focus on calling show window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or + * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). + */ +#define GLFW_FOCUS_ON_SHOW 0x0002000C + +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). + */ +#define GLFW_RED_BITS 0x00021001 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). + */ +#define GLFW_GREEN_BITS 0x00021002 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). + */ +#define GLFW_BLUE_BITS 0x00021003 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). + */ +#define GLFW_ALPHA_BITS 0x00021004 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). + */ +#define GLFW_DEPTH_BITS 0x00021005 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). + */ +#define GLFW_STENCIL_BITS 0x00021006 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). + */ +#define GLFW_ACCUM_RED_BITS 0x00021007 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). + */ +#define GLFW_ACCUM_GREEN_BITS 0x00021008 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). + */ +#define GLFW_ACCUM_BLUE_BITS 0x00021009 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). + */ +#define GLFW_ACCUM_ALPHA_BITS 0x0002100A +/*! @brief Framebuffer auxiliary buffer hint. + * + * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). + */ +#define GLFW_AUX_BUFFERS 0x0002100B +/*! @brief OpenGL stereoscopic rendering hint. + * + * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). + */ +#define GLFW_STEREO 0x0002100C +/*! @brief Framebuffer MSAA samples hint. + * + * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). + */ +#define GLFW_SAMPLES 0x0002100D +/*! @brief Framebuffer sRGB hint. + * + * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). + */ +#define GLFW_SRGB_CAPABLE 0x0002100E +/*! @brief Monitor refresh rate hint. + * + * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). + */ +#define GLFW_REFRESH_RATE 0x0002100F +/*! @brief Framebuffer double buffering hint. + * + * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER). + */ +#define GLFW_DOUBLEBUFFER 0x00021010 + +/*! @brief Context client API hint and attribute. + * + * Context client API [hint](@ref GLFW_CLIENT_API_hint) and + * [attribute](@ref GLFW_CLIENT_API_attrib). + */ +#define GLFW_CLIENT_API 0x00022001 +/*! @brief Context client API major version hint and attribute. + * + * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 +/*! @brief Context client API minor version hint and attribute. + * + * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 +/*! @brief Context client API revision number attribute. + * + * Context client API revision number + * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). + */ +#define GLFW_CONTEXT_REVISION 0x00022004 +/*! @brief Context robustness hint and attribute. + * + * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) + * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). + */ +#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 +/*! @brief OpenGL forward-compatibility hint and attribute. + * + * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) + * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). + */ +#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 +/*! @brief Debug mode context hint and attribute. + * + * Debug mode context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and + * [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib). + */ +#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 +/*! @brief OpenGL profile hint and attribute. + * + * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and + * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). + */ +#define GLFW_OPENGL_PROFILE 0x00022008 +/*! @brief Context flush-on-release hint and attribute. + * + * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and + * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). + */ +#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 +/*! @brief Context error suppression hint and attribute. + * + * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and + * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). + */ +#define GLFW_CONTEXT_NO_ERROR 0x0002200A +/*! @brief Context creation API hint and attribute. + * + * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and + * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). + */ +#define GLFW_CONTEXT_CREATION_API 0x0002200B +/*! @brief Window content area scaling window + * [window hint](@ref GLFW_SCALE_TO_MONITOR). + */ +#define GLFW_SCALE_TO_MONITOR 0x0002200C +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). + */ +#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). + */ +#define GLFW_COCOA_FRAME_NAME 0x00023002 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). + */ +#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_CLASS_NAME 0x00024001 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_INSTANCE_NAME 0x00024002 +/*! @} */ + +#define GLFW_NO_API 0 +#define GLFW_OPENGL_API 0x00030001 +#define GLFW_OPENGL_ES_API 0x00030002 + +#define GLFW_NO_ROBUSTNESS 0 +#define GLFW_NO_RESET_NOTIFICATION 0x00031001 +#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 + +#define GLFW_OPENGL_ANY_PROFILE 0 +#define GLFW_OPENGL_CORE_PROFILE 0x00032001 +#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 + +#define GLFW_CURSOR 0x00033001 +#define GLFW_STICKY_KEYS 0x00033002 +#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 +#define GLFW_LOCK_KEY_MODS 0x00033004 +#define GLFW_RAW_MOUSE_MOTION 0x00033005 + +#define GLFW_CURSOR_NORMAL 0x00034001 +#define GLFW_CURSOR_HIDDEN 0x00034002 +#define GLFW_CURSOR_DISABLED 0x00034003 + +#define GLFW_ANY_RELEASE_BEHAVIOR 0 +#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 +#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 + +#define GLFW_NATIVE_CONTEXT_API 0x00036001 +#define GLFW_EGL_CONTEXT_API 0x00036002 +#define GLFW_OSMESA_CONTEXT_API 0x00036003 + +/*! @defgroup shapes Standard cursor shapes + * @brief Standard system cursor shapes. + * + * See [standard cursor creation](@ref cursor_standard) for how these are used. + * + * @ingroup input + * @{ */ + +/*! @brief The regular arrow cursor shape. + * + * The regular arrow cursor. + */ +#define GLFW_ARROW_CURSOR 0x00036001 +/*! @brief The text input I-beam cursor shape. + * + * The text input I-beam cursor shape. + */ +#define GLFW_IBEAM_CURSOR 0x00036002 +/*! @brief The crosshair shape. + * + * The crosshair shape. + */ +#define GLFW_CROSSHAIR_CURSOR 0x00036003 +/*! @brief The hand shape. + * + * The hand shape. + */ +#define GLFW_HAND_CURSOR 0x00036004 +/*! @brief The horizontal resize arrow shape. + * + * The horizontal resize arrow shape. + */ +#define GLFW_HRESIZE_CURSOR 0x00036005 +/*! @brief The vertical resize arrow shape. + * + * The vertical resize arrow shape. + */ +#define GLFW_VRESIZE_CURSOR 0x00036006 +/*! @} */ + +#define GLFW_CONNECTED 0x00040001 +#define GLFW_DISCONNECTED 0x00040002 + +/*! @addtogroup init + * @{ */ +/*! @brief Joystick hat buttons init hint. + * + * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). + */ +#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). + */ +#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). + */ +#define GLFW_COCOA_MENUBAR 0x00051002 +/*! @} */ + +#define GLFW_DONT_CARE -1 + + +/************************************************************************* + * GLFW API types + *************************************************************************/ + +/*! @brief Client API function pointer type. + * + * Generic function pointer used for returning client API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 3.0. + * + * @ingroup context + */ +typedef void (*GLFWglproc)(void); + +/*! @brief Vulkan API function pointer type. + * + * Generic function pointer used for returning Vulkan API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref vulkan_proc + * @sa @ref glfwGetInstanceProcAddress + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +typedef void (*GLFWvkproc)(void); + +/*! @brief Opaque monitor object. + * + * Opaque monitor object. + * + * @see @ref monitor_object + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef struct GLFWmonitor GLFWmonitor; + +/*! @brief Opaque window object. + * + * Opaque window object. + * + * @see @ref window_object + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef struct GLFWwindow GLFWwindow; + +/*! @brief Opaque cursor object. + * + * Opaque cursor object. + * + * @see @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef struct GLFWcursor GLFWcursor; + +/*! @brief The function pointer type for error callbacks. + * + * This is the function pointer type for error callbacks. An error callback + * function has the following signature: + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * + * @param[in] error_code An [error code](@ref errors). Future releases may add + * more error codes. + * @param[in] description A UTF-8 encoded string describing the error. + * + * @pointer_lifetime The error description string is valid until the callback + * function returns. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.0. + * + * @ingroup init + */ +typedef void (* GLFWerrorfun)(int error_code, const char* description); + +/*! @brief The function pointer type for window position callbacks. + * + * This is the function pointer type for window position callbacks. A window + * position callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * + * @param[in] window The window that was moved. + * @param[in] xpos The new x-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * @param[in] ypos The new y-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPosCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowposfun)(GLFWwindow* window, int xpos, int ypos); + +/*! @brief The function pointer type for window size callbacks. + * + * This is the function pointer type for window size callbacks. A window size + * callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window that was resized. + * @param[in] width The new width, in screen coordinates, of the window. + * @param[in] height The new height, in screen coordinates, of the window. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSizeCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowsizefun)(GLFWwindow* window, int width, int height); + +/*! @brief The function pointer type for window close callbacks. + * + * This is the function pointer type for window close callbacks. A window + * close callback function has the following signature: + * @code + * void function_name(GLFWwindow* window) + * @endcode + * + * @param[in] window The window that the user attempted to close. + * + * @sa @ref window_close + * @sa @ref glfwSetWindowCloseCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowclosefun)(GLFWwindow* window); + +/*! @brief The function pointer type for window content refresh callbacks. + * + * This is the function pointer type for window content refresh callbacks. + * A window content refresh callback function has the following signature: + * @code + * void function_name(GLFWwindow* window); + * @endcode + * + * @param[in] window The window whose content needs to be refreshed. + * + * @sa @ref window_refresh + * @sa @ref glfwSetWindowRefreshCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowrefreshfun)(GLFWwindow* window); + +/*! @brief The function pointer type for window focus callbacks. + * + * This is the function pointer type for window focus callbacks. A window + * focus callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * + * @param[in] window The window that gained or lost input focus. + * @param[in] focused `GLFW_TRUE` if the window was given input focus, or + * `GLFW_FALSE` if it lost it. + * + * @sa @ref window_focus + * @sa @ref glfwSetWindowFocusCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowfocusfun)(GLFWwindow* window, int focused); + +/*! @brief The function pointer type for window iconify callbacks. + * + * This is the function pointer type for window iconify callbacks. A window + * iconify callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * + * @param[in] window The window that was iconified or restored. + * @param[in] iconified `GLFW_TRUE` if the window was iconified, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_iconify + * @sa @ref glfwSetWindowIconifyCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowiconifyfun)(GLFWwindow* window, int iconified); + +/*! @brief The function pointer type for window maximize callbacks. + * + * This is the function pointer type for window maximize callbacks. A window + * maximize callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * + * @param[in] window The window that was maximized or restored. + * @param[in] maximized `GLFW_TRUE` if the window was maximized, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_maximize + * @sa glfwSetWindowMaximizeCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ +typedef void (* GLFWwindowmaximizefun)(GLFWwindow* window, int maximized); + +/*! @brief The function pointer type for framebuffer size callbacks. + * + * This is the function pointer type for framebuffer size callbacks. + * A framebuffer size callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window whose framebuffer was resized. + * @param[in] width The new width, in pixels, of the framebuffer. + * @param[in] height The new height, in pixels, of the framebuffer. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWframebuffersizefun)(GLFWwindow* window, int width, int height); + +/*! @brief The function pointer type for window content scale callbacks. + * + * This is the function pointer type for window content scale callbacks. + * A window content scale callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * + * @param[in] window The window whose content scale changed. + * @param[in] xscale The new x-axis content scale of the window. + * @param[in] yscale The new y-axis content scale of the window. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ +typedef void (* GLFWwindowcontentscalefun)(GLFWwindow* window, float xscale, float yscale); + +/*! @brief The function pointer type for mouse button callbacks. + * + * This is the function pointer type for mouse button callback functions. + * A mouse button callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] button The [mouse button](@ref buttons) that was pressed or + * released. + * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases + * may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_mouse_button + * @sa @ref glfwSetMouseButtonCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle and modifier mask parameters. + * + * @ingroup input + */ +typedef void (* GLFWmousebuttonfun)(GLFWwindow* window, int button, int action, int mods); + +/*! @brief The function pointer type for cursor position callbacks. + * + * This is the function pointer type for cursor position callbacks. A cursor + * position callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xpos The new cursor x-coordinate, relative to the left edge of + * the content area. + * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the + * content area. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPosCallback + * + * @since Added in version 3.0. Replaces `GLFWmouseposfun`. + * + * @ingroup input + */ +typedef void (* GLFWcursorposfun)(GLFWwindow* window, double xpos, double ypos); + +/*! @brief The function pointer type for cursor enter/leave callbacks. + * + * This is the function pointer type for cursor enter/leave callbacks. + * A cursor enter/leave callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content + * area, or `GLFW_FALSE` if it left it. + * + * @sa @ref cursor_enter + * @sa @ref glfwSetCursorEnterCallback + * + * @since Added in version 3.0. + * + * @ingroup input + */ +typedef void (* GLFWcursorenterfun)(GLFWwindow* window, int entered); + +/*! @brief The function pointer type for scroll callbacks. + * + * This is the function pointer type for scroll callbacks. A scroll callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xoffset The scroll offset along the x-axis. + * @param[in] yoffset The scroll offset along the y-axis. + * + * @sa @ref scrolling + * @sa @ref glfwSetScrollCallback + * + * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. + * + * @ingroup input + */ +typedef void (* GLFWscrollfun)(GLFWwindow* window, double xoffset, double yoffset); + +/*! @brief The function pointer type for keyboard key callbacks. + * + * This is the function pointer type for keyboard key callbacks. A keyboard + * key callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] key The [keyboard key](@ref keys) that was pressed or released. + * @param[in] scancode The system-specific scancode of the key. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future + * releases may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_key + * @sa @ref glfwSetKeyCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle, scancode and modifier mask parameters. + * + * @ingroup input + */ +typedef void (* GLFWkeyfun)(GLFWwindow* window, int key, int scancode, int action, int mods); + +/*! @brief The function pointer type for Unicode character callbacks. + * + * This is the function pointer type for Unicode character callbacks. + * A Unicode character callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * + * @sa @ref input_char + * @sa @ref glfwSetCharCallback + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +typedef void (* GLFWcharfun)(GLFWwindow* window, unsigned int codepoint); + +/*! @brief The function pointer type for Unicode character with modifiers + * callbacks. + * + * This is the function pointer type for Unicode character with modifiers + * callbacks. It is called for each input character, regardless of what + * modifier keys are held down. A Unicode character with modifiers callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_char + * @sa @ref glfwSetCharModsCallback + * + * @deprecated Scheduled for removal in version 4.0. + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef void (* GLFWcharmodsfun)(GLFWwindow* window, unsigned int codepoint, int mods); + +/*! @brief The function pointer type for path drop callbacks. + * + * This is the function pointer type for path drop callbacks. A path drop + * callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] path_count The number of dropped paths. + * @param[in] paths The UTF-8 encoded file and/or directory path names. + * + * @pointer_lifetime The path array and its strings are valid until the + * callback function returns. + * + * @sa @ref path_drop + * @sa @ref glfwSetDropCallback + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef void (* GLFWdropfun)(GLFWwindow* window, int path_count, const char* paths[]); + +/*! @brief The function pointer type for monitor configuration callbacks. + * + * This is the function pointer type for monitor configuration callbacks. + * A monitor callback function has the following signature: + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * + * @param[in] monitor The monitor that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref monitor_event + * @sa @ref glfwSetMonitorCallback + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef void (* GLFWmonitorfun)(GLFWmonitor* monitor, int event); + +/*! @brief The function pointer type for joystick configuration callbacks. + * + * This is the function pointer type for joystick configuration callbacks. + * A joystick configuration callback function has the following signature: + * @code + * void function_name(int jid, int event) + * @endcode + * + * @param[in] jid The joystick that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref joystick_event + * @sa @ref glfwSetJoystickCallback + * + * @since Added in version 3.2. + * + * @ingroup input + */ +typedef void (* GLFWjoystickfun)(int jid, int event); + +/*! @brief Video mode type. + * + * This describes a single video mode. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * @sa @ref glfwGetVideoModes + * + * @since Added in version 1.0. + * @glfw3 Added refresh rate member. + * + * @ingroup monitor + */ +typedef struct GLFWvidmode +{ + /*! The width, in screen coordinates, of the video mode. + */ + int width; + /*! The height, in screen coordinates, of the video mode. + */ + int height; + /*! The bit depth of the red channel of the video mode. + */ + int redBits; + /*! The bit depth of the green channel of the video mode. + */ + int greenBits; + /*! The bit depth of the blue channel of the video mode. + */ + int blueBits; + /*! The refresh rate, in Hz, of the video mode. + */ + int refreshRate; +} GLFWvidmode; + +/*! @brief Gamma ramp. + * + * This describes the gamma ramp for a monitor. + * + * @sa @ref monitor_gamma + * @sa @ref glfwGetGammaRamp + * @sa @ref glfwSetGammaRamp + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef struct GLFWgammaramp +{ + /*! An array of value describing the response of the red channel. + */ + unsigned short* red; + /*! An array of value describing the response of the green channel. + */ + unsigned short* green; + /*! An array of value describing the response of the blue channel. + */ + unsigned short* blue; + /*! The number of elements in each array. + */ + unsigned int size; +} GLFWgammaramp; + +/*! @brief Image data. + * + * This describes a single 2D image. See the documentation for each related + * function what the expected pixel format is. + * + * @sa @ref cursor_custom + * @sa @ref window_icon + * + * @since Added in version 2.1. + * @glfw3 Removed format and bytes-per-pixel members. + * + * @ingroup window + */ +typedef struct GLFWimage +{ + /*! The width, in pixels, of this image. + */ + int width; + /*! The height, in pixels, of this image. + */ + int height; + /*! The pixel data of this image, arranged left-to-right, top-to-bottom. + */ + unsigned char* pixels; +} GLFWimage; + +/*! @brief Gamepad input state + * + * This describes the input state of a gamepad. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ +typedef struct GLFWgamepadstate +{ + /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` + * or `GLFW_RELEASE`. + */ + unsigned char buttons[15]; + /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 + * to 1.0 inclusive. + */ + float axes[6]; +} GLFWgamepadstate; + + +/************************************************************************* + * GLFW API functions + *************************************************************************/ + +/*! @brief Initializes the GLFW library. + * + * This function initializes the GLFW library. Before most GLFW functions can + * be used, GLFW must be initialized, and before an application terminates GLFW + * should be terminated in order to free any resources allocated during or + * after initialization. + * + * If this function fails, it calls @ref glfwTerminate before returning. If it + * succeeds, you should call @ref glfwTerminate before the application exits. + * + * Additional calls to this function after successful initialization but before + * termination will return `GLFW_TRUE` immediately. + * + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function will change the current directory of the + * application to the `Contents/Resources` subdirectory of the application's + * bundle, if present. This can be disabled with the @ref + * GLFW_COCOA_CHDIR_RESOURCES init hint. + * + * @remark @x11 This function will set the `LC_CTYPE` category of the + * application locale according to the current environment if that category is + * still "C". This is because the "C" locale breaks Unicode text input. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwTerminate + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI int glfwInit(void); + +/*! @brief Terminates the GLFW library. + * + * This function destroys all remaining windows and cursors, restores any + * modified gamma ramps and frees any other allocated resources. Once this + * function is called, you must again call @ref glfwInit successfully before + * you will be able to use most GLFW functions. + * + * If GLFW has been successfully initialized, this function should be called + * before the application exits. If initialization fails, there is no need to + * call this function, as it is called by @ref glfwInit before it returns + * failure. + * + * This function has no effect if GLFW is not initialized. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark This function may be called before @ref glfwInit. + * + * @warning The contexts of any remaining windows must not be current on any + * other thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInit + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI void glfwTerminate(void); + +/*! @brief Sets the specified init hint to the desired value. + * + * This function sets hints for the next initialization of GLFW. + * + * The values you set hints to are never reset by GLFW, but they only take + * effect during initialization. Once GLFW has been initialized, any values + * you set will be ignored until the library is terminated and initialized + * again. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [init hint](@ref init_hints) to set. + * @param[in] value The new value of the init hint. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref + * GLFW_INVALID_VALUE. + * + * @remarks This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa init_hints + * @sa glfwInit + * + * @since Added in version 3.3. + * + * @ingroup init + */ +GLFWAPI void glfwInitHint(int hint, int value); + +/*! @brief Retrieves the version of the GLFW library. + * + * This function retrieves the major, minor and revision numbers of the GLFW + * library. It is intended for when you are using GLFW as a shared library and + * want to ensure that you are using the minimum required version. + * + * Any or all of the version arguments may be `NULL`. + * + * @param[out] major Where to store the major version number, or `NULL`. + * @param[out] minor Where to store the minor version number, or `NULL`. + * @param[out] rev Where to store the revision number, or `NULL`. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersionString + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); + +/*! @brief Returns a string describing the compile-time configuration. + * + * This function returns the compile-time generated + * [version string](@ref intro_version_string) of the GLFW library binary. It + * describes the version, platform, compiler and any platform-specific + * compile-time options. It should not be confused with the OpenGL or OpenGL + * ES version string, queried with `glGetString`. + * + * __Do not use the version string__ to parse the GLFW library version. The + * @ref glfwGetVersion function provides the version of the running library + * binary in numerical format. + * + * @return The ASCII encoded GLFW version string. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @pointer_lifetime The returned string is static and compile-time generated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersion + * + * @since Added in version 3.0. + * + * @ingroup init + */ +GLFWAPI const char* glfwGetVersionString(void); + +/*! @brief Returns and clears the last error for the calling thread. + * + * This function returns and clears the [error code](@ref errors) of the last + * error that occurred on the calling thread, and optionally a UTF-8 encoded + * human-readable description of it. If no error has occurred since the last + * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is + * set to `NULL`. + * + * @param[in] description Where to store the error description pointer, or `NULL`. + * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR + * (zero). + * + * @errors None. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * next error occurs or the library is terminated. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.3. + * + * @ingroup init + */ +GLFWAPI int glfwGetError(const char** description); + +/*! @brief Sets the error callback. + * + * This function sets the error callback, which is called with an error code + * and a human-readable description each time a GLFW error occurs. + * + * The error code is set before the callback is called. Calling @ref + * glfwGetError from the error callback will return the same value as the error + * code argument. + * + * The error callback is called on the thread where the error occurred. If you + * are using GLFW from multiple threads, your error callback needs to be + * written accordingly. + * + * Because the description string may have been generated specifically for that + * error, it is not guaranteed to be valid after the callback has returned. If + * you wish to use it after the callback returns, you need to make a copy. + * + * Once set, the error callback remains set even after the library has been + * terminated. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set. + * + * @callback_signature + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * For more information about the callback parameters, see the + * [callback pointer type](@ref GLFWerrorfun). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref error_handling + * @sa @ref glfwGetError + * + * @since Added in version 3.0. + * + * @ingroup init + */ +GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); + +/*! @brief Returns the currently connected monitors. + * + * This function returns an array of handles for all currently connected + * monitors. The primary monitor is always first in the returned array. If no + * monitors were found, this function returns `NULL`. + * + * @param[out] count Where to store the number of monitors in the returned + * array. This is set to zero if an error occurred. + * @return An array of monitor handles, or `NULL` if no monitors were found or + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * monitor configuration changes or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_monitors + * @sa @ref monitor_event + * @sa @ref glfwGetPrimaryMonitor + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); + +/*! @brief Returns the primary monitor. + * + * This function returns the primary monitor. This is usually the monitor + * where elements like the task bar or global menu bar are located. + * + * @return The primary monitor, or `NULL` if no monitors were found or if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @remark The primary monitor is always first in the array returned by @ref + * glfwGetMonitors. + * + * @sa @ref monitor_monitors + * @sa @ref glfwGetMonitors + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); + +/*! @brief Returns the position of the monitor's viewport on the virtual screen. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the specified monitor. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); + +/*! @brief Retrieves the work area of the monitor. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the work area of the specified monitor along with the work area + * size in screen coordinates. The work area is defined as the area of the + * monitor not occluded by the operating system task bar where present. If no + * task bar exists then the work area is the monitor resolution in screen + * coordinates. + * + * Any or all of the position and size arguments may be `NULL`. If an error + * occurs, all non-`NULL` position and size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * @param[out] width Where to store the monitor width, or `NULL`. + * @param[out] height Where to store the monitor height, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_workarea + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); + +/*! @brief Returns the physical size of the monitor. + * + * This function returns the size, in millimetres, of the display area of the + * specified monitor. + * + * Some systems do not provide accurate monitor size information, either + * because the monitor + * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) + * data is incorrect or because the driver does not report it accurately. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] widthMM Where to store the width, in millimetres, of the + * monitor's display area, or `NULL`. + * @param[out] heightMM Where to store the height, in millimetres, of the + * monitor's display area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @win32 On Windows 8 and earlier the physical size is calculated from + * the current resolution and system DPI instead of querying the monitor EDID data. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); + +/*! @brief Retrieves the content scale for the specified monitor. + * + * This function retrieves the content scale for the specified monitor. The + * content scale is the ratio between the current DPI and the platform's + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. + * + * The content scale may depend on both the monitor resolution and pixel + * density and on user settings. It may be very different from the raw DPI + * calculated from the physical size and current resolution. + * + * @param[in] monitor The monitor to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); + +/*! @brief Returns the name of the specified monitor. + * + * This function returns a human-readable name, encoded as UTF-8, of the + * specified monitor. The name typically reflects the make and model of the + * monitor and is not guaranteed to be unique among the connected monitors. + * + * @param[in] monitor The monitor to query. + * @return The UTF-8 encoded name of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); + +/*! @brief Sets the user pointer of the specified monitor. + * + * This function sets the user-defined pointer of the specified monitor. The + * current value is retained until the monitor is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwGetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); + +/*! @brief Returns the user pointer of the specified monitor. + * + * This function returns the current value of the user-defined pointer of the + * specified monitor. The initial value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwSetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); + +/*! @brief Sets the monitor configuration callback. + * + * This function sets the monitor configuration callback, or removes the + * currently set callback. This is called when a monitor is connected to or + * disconnected from the system. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmonitorfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_event + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); + +/*! @brief Returns the available video modes for the specified monitor. + * + * This function returns an array of all video modes supported by the specified + * monitor. The returned array is sorted in ascending order, first by color + * bit depth (the sum of all channel depths), then by resolution area (the + * product of width and height), then resolution width and finally by refresh + * rate. + * + * @param[in] monitor The monitor to query. + * @param[out] count Where to store the number of video modes in the returned + * array. This is set to zero if an error occurred. + * @return An array of video modes, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected, this function is called again for that monitor or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * + * @since Added in version 1.0. + * @glfw3 Changed to return an array of modes for a specific monitor. + * + * @ingroup monitor + */ +GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); + +/*! @brief Returns the current mode of the specified monitor. + * + * This function returns the current video mode of the specified monitor. If + * you have created a full screen window for that monitor, the return value + * will depend on whether that window is iconified. + * + * @param[in] monitor The monitor to query. + * @return The current mode of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoModes + * + * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. + * + * @ingroup monitor + */ +GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); + +/*! @brief Generates a gamma ramp and sets it for the specified monitor. + * + * This function generates an appropriately sized gamma ramp from the specified + * exponent and then calls @ref glfwSetGammaRamp with it. The value must be + * a finite number greater than zero. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] gamma The desired exponent. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); + +/*! @brief Returns the current gamma ramp for the specified monitor. + * + * This function returns the current gamma ramp of the specified monitor. + * + * @param[in] monitor The monitor to query. + * @return The current gamma ramp, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while + * returning `NULL`. + * + * @pointer_lifetime The returned structure and its arrays are allocated and + * freed by GLFW. You should not free them yourself. They are valid until the + * specified monitor is disconnected, this function is called again for that + * monitor or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); + +/*! @brief Sets the current gamma ramp for the specified monitor. + * + * This function sets the current gamma ramp for the specified monitor. The + * original gamma ramp for that monitor is saved by GLFW the first time this + * function is called and is restored by @ref glfwTerminate. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] ramp The gamma ramp to use. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The size of the specified gamma ramp should match the size of the + * current ramp for that monitor. + * + * @remark @win32 The gamma ramp size must be 256. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified gamma ramp is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +/*! @brief Resets all window hints to their default values. + * + * This function resets all window hints to their + * [default values](@ref window_hints_values). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwWindowHintString + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwDefaultWindowHints(void); + +/*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only integer value hints can be set with this function. String value hints + * are set with @ref glfwWindowHintString. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHintString + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. + * + * @ingroup window + */ +GLFWAPI void glfwWindowHint(int hint, int value); + +/*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only string type hints can be set with this function. Integer value hints + * are set with @ref glfwWindowHint. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwWindowHintString(int hint, const char* value); + +/*! @brief Creates a window and its associated context. + * + * This function creates a window and its associated OpenGL or OpenGL ES + * context. Most of the options controlling how the window and its context + * should be created are specified with [window hints](@ref window_hints). + * + * Successful creation does not change which context is current. Before you + * can use the newly created context, you need to + * [make it current](@ref context_current). For information about the `share` + * parameter, see @ref context_sharing. + * + * The created window, framebuffer and context may differ from what you + * requested, as not all parameters and hints are + * [hard constraints](@ref window_hints_hard). This includes the size of the + * window, especially for full screen windows. To query the actual attributes + * of the created window, framebuffer and context, see @ref + * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. + * + * To create a full screen window, you need to specify the monitor the window + * will cover. If no monitor is specified, the window will be windowed mode. + * Unless you have a way for the user to choose a specific monitor, it is + * recommended that you pick the primary monitor. For more information on how + * to query connected monitors, see @ref monitor_monitors. + * + * For full screen windows, the specified size becomes the resolution of the + * window's _desired video mode_. As long as a full screen window is not + * iconified, the supported video mode most closely matching the desired video + * mode is set for the specified monitor. For more information about full + * screen windows, including the creation of so called _windowed full screen_ + * or _borderless full screen_ windows, see @ref window_windowed_full_screen. + * + * Once you have created the window, you can switch it between windowed and + * full screen mode with @ref glfwSetWindowMonitor. This will not affect its + * OpenGL or OpenGL ES context. + * + * By default, newly created windows use the placement recommended by the + * window system. To create the window at a specific position, make it + * initially invisible using the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window + * hint, set its [position](@ref window_pos) and then [show](@ref window_hide) + * it. + * + * As long as at least one full screen window is not iconified, the screensaver + * is prohibited from starting. + * + * Window systems put limits on window sizes. Very large or very small window + * dimensions may be overridden by the window system on creation. Check the + * actual [size](@ref window_size) after creation. + * + * The [swap interval](@ref buffer_swap) is not set during window creation and + * the initial value may vary depending on driver settings and defaults. + * + * @param[in] width The desired width, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] height The desired height, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] title The initial, UTF-8 encoded window title. + * @param[in] monitor The monitor to use for full screen mode, or `NULL` for + * windowed mode. + * @param[in] share The window whose context to share resources with, or `NULL` + * to not share resources. + * @return The handle of the created window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref + * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @win32 Window creation will fail if the Microsoft GDI software + * OpenGL implementation is the only one available. + * + * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it + * will be set as the initial icon for the window. If no such icon is present, + * the `IDI_APPLICATION` icon will be used instead. To set a different icon, + * see @ref glfwSetWindowIcon. + * + * @remark @win32 The context to share resources with must not be current on + * any other thread. + * + * @remark @macos The OS only supports forward-compatible core profile contexts + * for OpenGL versions 3.2 and later. Before creating an OpenGL context of + * version 3.2 or later you must set the + * [GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) and + * [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) hints accordingly. + * OpenGL 3.0 and 3.1 contexts are not supported at all on macOS. + * + * @remark @macos The GLFW window has no icon, as it is not a document + * window, but the dock icon will be the same as the application bundle's icon. + * For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @macos The first time a window is created the menu bar is created. + * If GLFW finds a `MainMenu.nib` it is loaded and assumed to contain a menu + * bar. Otherwise a minimal menu bar is created manually with common commands + * like Hide, Quit and About. The About entry opens a minimal about dialog + * with information from the application's bundle. Menu bar creation can be + * disabled entirely with the @ref GLFW_COCOA_MENUBAR init hint. + * + * @remark @macos On OS X 10.10 and later the window frame will not be rendered + * at full resolution on Retina displays unless the + * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) + * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the + * application bundle's `Info.plist`. For more information, see + * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) + * in the Mac Developer Library. The GLFW test and example programs use + * a custom `Info.plist` template for this, which can be found as + * `CMake/MacOSXBundleInfo.plist.in` in the source tree. + * + * @remark @macos When activating frame autosaving with + * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified + * window size and position may be overridden by previously saved values. + * + * @remark @x11 Some window managers will not respect the placement of + * initially hidden windows. + * + * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for + * a window to reach its requested state. This means you may not be able to + * query the final size, position or other attributes directly after window + * creation. + * + * @remark @x11 The class part of the `WM_CLASS` window property will by + * default be set to the window title passed to this function. The instance + * part will use the contents of the `RESOURCE_NAME` environment variable, if + * present and not empty, or fall back to the window title. Set the + * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and + * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to + * override this. + * + * @remark @wayland Compositors should implement the xdg-decoration protocol + * for GLFW to decorate the window properly. If this protocol isn't + * supported, or if the compositor prefers client-side decorations, a very + * simple fallback frame will be drawn using the wp_viewporter protocol. A + * compositor can still emit close, maximize or fullscreen events, using for + * instance a keybind mechanism. If neither of these protocols is supported, + * the window won't be decorated. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size or refresh rate. + * + * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol + * to be implemented in the user's compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwDestroyWindow + * + * @since Added in version 3.0. Replaces `glfwOpenWindow`. + * + * @ingroup window + */ +GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); + +/*! @brief Destroys the specified window and its context. + * + * This function destroys the specified window and its context. On calling + * this function, no further callbacks will be called for that window. + * + * If the context of the specified window is current on the main thread, it is + * detached before being destroyed. + * + * @param[in] window The window to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @note The context of the specified window must not be current on any other + * thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwCreateWindow + * + * @since Added in version 3.0. Replaces `glfwCloseWindow`. + * + * @ingroup window + */ +GLFWAPI void glfwDestroyWindow(GLFWwindow* window); + +/*! @brief Checks the close flag of the specified window. + * + * This function returns the value of the close flag of the specified window. + * + * @param[in] window The window to query. + * @return The value of the close flag. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); + +/*! @brief Sets the close flag of the specified window. + * + * This function sets the value of the close flag of the specified window. + * This can be used to override the user's attempt to close the window, or + * to signal that it should be closed. + * + * @param[in] window The window whose flag to change. + * @param[in] value The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); + +/*! @brief Sets the title of the specified window. + * + * This function sets the window title, encoded as UTF-8, of the specified + * window. + * + * @param[in] window The window whose title to change. + * @param[in] title The UTF-8 encoded window title. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos The window title will not be updated until the next time you + * process events. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_title + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); + +/*! @brief Sets the icon for the specified window. + * + * This function sets the icon of the specified window. If passed an array of + * candidate images, those of or closest to the sizes desired by the system are + * selected. If no images are specified, the window reverts to its default + * icon. + * + * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight + * bits per channel with the red channel first. They are arranged canonically + * as packed sequential rows, starting from the top-left corner. + * + * The desired image sizes varies depending on platform and system settings. + * The selected images will be rescaled as needed. Good sizes include 16x16, + * 32x32 and 48x48. + * + * @param[in] window The window whose icon to set. + * @param[in] count The number of images in the specified array, or zero to + * revert to the default window icon. + * @param[in] images The images to create the icon from. This is ignored if + * count is zero. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @remark @macos The GLFW window has no icon, as it is not a document + * window, so this function does nothing. The dock icon will be the same as + * the application bundle's icon. For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @wayland There is no existing protocol to change an icon, the + * window will thus inherit the one defined in the application's desktop file. + * This function always emits @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_icon + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); + +/*! @brief Retrieves the position of the content area of the specified window. + * + * This function retrieves the position, in screen coordinates, of the + * upper-left corner of the content area of the specified window. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The window to query. + * @param[out] xpos Where to store the x-coordinate of the upper-left corner of + * the content area, or `NULL`. + * @param[out] ypos Where to store the y-coordinate of the upper-left corner of + * the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no way for an application to retrieve the global + * position of its windows, this function will always emit @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPos + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); + +/*! @brief Sets the position of the content area of the specified window. + * + * This function sets the position, in screen coordinates, of the upper-left + * corner of the content area of the specified windowed mode window. If the + * window is a full screen window, this function does nothing. + * + * __Do not use this function__ to move an already visible window unless you + * have very good reasons for doing so, as it will confuse and annoy the user. + * + * The window manager may put limits on what positions are allowed. GLFW + * cannot and should not override these limits. + * + * @param[in] window The window to query. + * @param[in] xpos The x-coordinate of the upper-left corner of the content area. + * @param[in] ypos The y-coordinate of the upper-left corner of the content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no way for an application to set the global + * position of its windows, this function will always emit @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwGetWindowPos + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); + +/*! @brief Retrieves the size of the content area of the specified window. + * + * This function retrieves the size, in screen coordinates, of the content area + * of the specified window. If you wish to retrieve the size of the + * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose size to retrieve. + * @param[out] width Where to store the width, in screen coordinates, of the + * content area, or `NULL`. + * @param[out] height Where to store the height, in screen coordinates, of the + * content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSize + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); + +/*! @brief Sets the size limits of the specified window. + * + * This function sets the size limits of the content area of the specified + * window. If the window is full screen, the size limits only take effect + * once it is made windowed. If the window is not resizable, this function + * does nothing. + * + * The size limits are applied immediately to a windowed mode window and may + * cause it to be resized. + * + * The maximum dimensions must be greater than or equal to the minimum + * dimensions and all must be greater than or equal to zero. + * + * @param[in] window The window to set limits for. + * @param[in] minwidth The minimum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] minheight The minimum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * @param[in] maxwidth The maximum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] maxheight The maximum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The size limits will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowAspectRatio + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); + +/*! @brief Sets the aspect ratio of the specified window. + * + * This function sets the required aspect ratio of the content area of the + * specified window. If the window is full screen, the aspect ratio only takes + * effect once it is made windowed. If the window is not resizable, this + * function does nothing. + * + * The aspect ratio is specified as a numerator and a denominator and both + * values must be greater than zero. For example, the common 16:9 aspect ratio + * is specified as 16 and 9, respectively. + * + * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect + * ratio limit is disabled. + * + * The aspect ratio is applied immediately to a windowed mode window and may + * cause it to be resized. + * + * @param[in] window The window to set limits for. + * @param[in] numer The numerator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * @param[in] denom The denominator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The aspect ratio will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowSizeLimits + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); + +/*! @brief Sets the size of the content area of the specified window. + * + * This function sets the size, in screen coordinates, of the content area of + * the specified window. + * + * For full screen windows, this function updates the resolution of its desired + * video mode and switches to the video mode closest to it, without affecting + * the window's context. As the context is unaffected, the bit depths of the + * framebuffer remain unchanged. + * + * If you wish to update the refresh rate of the desired video mode in addition + * to its resolution, see @ref glfwSetWindowMonitor. + * + * The window manager may put limits on what sizes are allowed. GLFW cannot + * and should not override these limits. + * + * @param[in] window The window to resize. + * @param[in] width The desired width, in screen coordinates, of the window + * content area. + * @param[in] height The desired height, in screen coordinates, of the window + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwGetWindowSize + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); + +/*! @brief Retrieves the size of the framebuffer of the specified window. + * + * This function retrieves the size, in pixels, of the framebuffer of the + * specified window. If you wish to retrieve the size of the window in screen + * coordinates, see @ref glfwGetWindowSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose framebuffer to query. + * @param[out] width Where to store the width, in pixels, of the framebuffer, + * or `NULL`. + * @param[out] height Where to store the height, in pixels, of the framebuffer, + * or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); + +/*! @brief Retrieves the size of the frame of the window. + * + * This function retrieves the size, in screen coordinates, of each edge of the + * frame of the specified window. This size includes the title bar, if the + * window has one. The size of the frame may vary depending on the + * [window-related hints](@ref window_hints_wnd) used to create it. + * + * Because this function retrieves the size of each window frame edge and not + * the offset along a particular coordinate axis, the retrieved values will + * always be zero or positive. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose frame size to query. + * @param[out] left Where to store the size, in screen coordinates, of the left + * edge of the window frame, or `NULL`. + * @param[out] top Where to store the size, in screen coordinates, of the top + * edge of the window frame, or `NULL`. + * @param[out] right Where to store the size, in screen coordinates, of the + * right edge of the window frame, or `NULL`. + * @param[out] bottom Where to store the size, in screen coordinates, of the + * bottom edge of the window frame, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); + +/*! @brief Retrieves the content scale for the specified window. + * + * This function retrieves the content scale for the specified window. The + * content scale is the ratio between the current DPI and the platform's + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. + * + * On systems where each monitors can have its own content scale, the window + * content scale will depend on which monitor the system considers the window + * to be on. + * + * @param[in] window The window to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * @sa @ref glfwGetMonitorContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); + +/*! @brief Returns the opacity of the whole window. + * + * This function returns the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. If the system + * does not support whole window transparency, this function always returns one. + * + * The initial opacity value for newly created windows is one. + * + * @param[in] window The window to query. + * @return The opacity value of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwSetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window); + +/*! @brief Sets the opacity of the whole window. + * + * This function sets the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. + * + * The initial opacity value for newly created windows is one. + * + * A window created with framebuffer transparency may not use whole window + * transparency. The results of doing this are undefined. + * + * @param[in] window The window to set the opacity for. + * @param[in] opacity The desired opacity of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwGetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); + +/*! @brief Iconifies the specified window. + * + * This function iconifies (minimizes) the specified window if it was + * previously restored. If the window is already iconified, this function does + * nothing. + * + * If the specified window is a full screen window, the original monitor + * resolution is restored until the window is restored. + * + * @param[in] window The window to iconify. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no concept of iconification in wl_shell, this + * function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated + * protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwRestoreWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwIconifyWindow(GLFWwindow* window); + +/*! @brief Restores the specified window. + * + * This function restores the specified window if it was previously iconified + * (minimized) or maximized. If the window is already restored, this function + * does nothing. + * + * If the specified window is a full screen window, the resolution chosen for + * the window is restored on the selected monitor. + * + * @param[in] window The window to restore. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwRestoreWindow(GLFWwindow* window); + +/*! @brief Maximizes the specified window. + * + * This function maximizes the specified window if it was previously not + * maximized. If the window is already maximized, this function does nothing. + * + * If the specified window is a full screen window, this function does nothing. + * + * @param[in] window The window to maximize. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwRestoreWindow + * + * @since Added in GLFW 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwMaximizeWindow(GLFWwindow* window); + +/*! @brief Makes the specified window visible. + * + * This function makes the specified window visible if it was previously + * hidden. If the window is already visible or is in full screen mode, this + * function does nothing. + * + * By default, windowed mode windows are focused when shown + * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint + * to change this behavior for all newly created windows, or change the + * behavior for an existing window with @ref glfwSetWindowAttrib. + * + * @param[in] window The window to make visible. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Because Wayland wants every frame of the desktop to be + * complete, this function does not immediately make the window visible. + * Instead it will become visible the next time the window framebuffer is + * updated after this call. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwHideWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwShowWindow(GLFWwindow* window); + +/*! @brief Hides the specified window. + * + * This function hides the specified window if it was previously visible. If + * the window is already hidden or is in full screen mode, this function does + * nothing. + * + * @param[in] window The window to hide. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwShowWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwHideWindow(GLFWwindow* window); + +/*! @brief Brings the specified window to front and sets input focus. + * + * This function brings the specified window to front and sets input focus. + * The window should already be visible and not iconified. + * + * By default, both windowed and full screen mode windows are focused when + * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to + * disable this behavior. + * + * Also by default, windowed mode windows are focused when shown + * with @ref glfwShowWindow. Set the + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. + * + * __Do not use this function__ to steal focus from other applications unless + * you are certain that is what the user wants. Focus stealing can be + * extremely disruptive. + * + * For a less disruptive way of getting the user's attention, see + * [attention requests](@ref window_attention). + * + * @param[in] window The window to give input focus. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland It is not possible for an application to bring its windows + * to front, this function will always emit @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * @sa @ref window_attention + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwFocusWindow(GLFWwindow* window); + +/*! @brief Requests user attention to the specified window. + * + * This function requests user attention to the specified window. On + * platforms where this is not supported, attention is requested to the + * application as a whole. + * + * Once the user has given attention, usually by focusing the window or + * application, the system will end the request automatically. + * + * @param[in] window The window to request attention to. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos Attention is requested to the application as a whole, not the + * specific window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attention + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window); + +/*! @brief Returns the monitor that the window uses for full screen mode. + * + * This function returns the handle of the monitor that the specified window is + * in full screen on. + * + * @param[in] window The window to query. + * @return The monitor, or `NULL` if the window is in windowed mode or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); + +/*! @brief Sets the mode, monitor, video mode and placement of a window. + * + * This function sets the monitor that the window uses for full screen mode or, + * if the monitor is `NULL`, makes it windowed mode. + * + * When setting a monitor, this function updates the width, height and refresh + * rate of the desired video mode and switches to the video mode closest to it. + * The window position is ignored when setting a monitor. + * + * When the monitor is `NULL`, the position, width and height are used to + * place the window content area. The refresh rate is ignored when no monitor + * is specified. + * + * If you only wish to update the resolution of a full screen window or the + * size of a windowed mode window, see @ref glfwSetWindowSize. + * + * When a window transitions from full screen to windowed mode, this function + * restores any previous window settings such as whether it is decorated, + * floating, resizable, has size or aspect ratio limits, etc. + * + * @param[in] window The window whose monitor, size or video mode to set. + * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. + * @param[in] xpos The desired x-coordinate of the upper-left corner of the + * content area. + * @param[in] ypos The desired y-coordinate of the upper-left corner of the + * content area. + * @param[in] width The desired with, in screen coordinates, of the content + * area or video mode. + * @param[in] height The desired height, in screen coordinates, of the content + * area or video mode. + * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, + * or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise + * affected by any resizing or mode switching, although you may need to update + * your viewport if the framebuffer size has changed. + * + * @remark @wayland The desired window position is ignored, as there is no way + * for an application to set this property. + * + * @remark @wayland Setting the window to full screen will not attempt to + * change the mode, no matter what the requested size or refresh rate. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref window_full_screen + * @sa @ref glfwGetWindowMonitor + * @sa @ref glfwSetWindowSize + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); + +/*! @brief Returns an attribute of the specified window. + * + * This function returns the value of an attribute of the specified window or + * its OpenGL or OpenGL ES context. + * + * @param[in] window The window to query. + * @param[in] attrib The [window attribute](@ref window_attribs) whose value to + * return. + * @return The value of the attribute, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @remark Framebuffer related hints are not window attributes. See @ref + * window_attribs_fb for more information. + * + * @remark Zero is a valid value for many window and context related + * attributes so you cannot use a return value of zero as an indication of + * errors. However, this function should not fail as long as it is passed + * valid arguments and the library has been [initialized](@ref intro_init). + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwSetWindowAttrib + * + * @since Added in version 3.0. Replaces `glfwGetWindowParam` and + * `glfwGetGLVersion`. + * + * @ingroup window + */ +GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); + +/*! @brief Sets an attribute of the specified window. + * + * This function sets the value of an attribute of the specified window. + * + * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), + * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), + * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib), + * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib). + * + * Some of these attributes are ignored for full screen windows. The new + * value will take effect if the window is later made windowed. + * + * Some of these attributes are ignored for windowed mode windows. The new + * value will take effect if the window is later made full screen. + * + * @param[in] window The window to set the attribute for. + * @param[in] attrib A supported window attribute. + * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark Calling @ref glfwGetWindowAttrib will always return the latest + * value, even if that value is ignored by the current mode of the window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwGetWindowAttrib + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); + +/*! @brief Sets the user pointer of the specified window. + * + * This function sets the user-defined pointer of the specified window. The + * current value is retained until the window is destroyed. The initial value + * is `NULL`. + * + * @param[in] window The window whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwGetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); + +/*! @brief Returns the user pointer of the specified window. + * + * This function returns the current value of the user-defined pointer of the + * specified window. The initial value is `NULL`. + * + * @param[in] window The window whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwSetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); + +/*! @brief Sets the position callback for the specified window. + * + * This function sets the position callback of the specified window, which is + * called when the window is moved. The callback is provided with the + * position, in screen coordinates, of the upper-left corner of the content + * area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland This callback will never be called, as there is no way for + * an application to know its global position. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); + +/*! @brief Sets the size callback for the specified window. + * + * This function sets the size callback of the specified window, which is + * called when the window is resized. The callback is provided with the size, + * in screen coordinates, of the content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowsizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); + +/*! @brief Sets the close callback for the specified window. + * + * This function sets the close callback of the specified window, which is + * called when the user attempts to close the window, for example by clicking + * the close widget in the title bar. + * + * The close flag is set before this callback is called, but you can modify it + * at any time with @ref glfwSetWindowShouldClose. + * + * The close callback is not triggered by @ref glfwDestroyWindow. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowclosefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @macos Selecting Quit from the application menu will trigger the + * close callback for all windows. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_close + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); + +/*! @brief Sets the refresh callback for the specified window. + * + * This function sets the refresh callback of the specified window, which is + * called when the content area of the window needs to be redrawn, for example + * if the window has been exposed after having been covered by another window. + * + * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where + * the window contents are saved off-screen, this callback may be called only + * very infrequently or never at all. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowrefreshfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_refresh + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); + +/*! @brief Sets the focus callback for the specified window. + * + * This function sets the focus callback of the specified window, which is + * called when the window gains or loses input focus. + * + * After the focus callback is called for a window that lost input focus, + * synthetic key and mouse button release events will be generated for all such + * that had been pressed. For more information, see @ref glfwSetKeyCallback + * and @ref glfwSetMouseButtonCallback. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowfocusfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); + +/*! @brief Sets the iconify callback for the specified window. + * + * This function sets the iconification callback of the specified window, which + * is called when the window is iconified or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowiconifyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland The wl_shell protocol has no concept of iconification, + * this callback will never be called when using this deprecated protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); + +/*! @brief Sets the maximize callback for the specified window. + * + * This function sets the maximization callback of the specified window, which + * is called when the window is maximized or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowmaximizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_maximize + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); + +/*! @brief Sets the framebuffer resize callback for the specified window. + * + * This function sets the framebuffer resize callback of the specified window, + * which is called when the framebuffer of the specified window is resized. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWframebuffersizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); + +/*! @brief Sets the window content scale callback for the specified window. + * + * This function sets the window content scale callback of the specified window, + * which is called when the content scale of the specified window changes. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowcontentscalefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); + +/*! @brief Processes all pending events. + * + * This function processes only those events that are already in the event + * queue and then returns immediately. Processing events will cause the window + * and input callbacks associated with those events to be called. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 1.0. + * + * @ingroup window + */ +GLFWAPI void glfwPollEvents(void); + +/*! @brief Waits until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue. Once one or more events are available, + * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue + * are processed and the function then returns immediately. Processing events + * will cause the window and input callbacks associated with those events to be + * called. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 2.5. + * + * @ingroup window + */ +GLFWAPI void glfwWaitEvents(void); + +/*! @brief Waits with timeout until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue, or until the specified timeout is reached. If + * one or more events are available, it behaves exactly like @ref + * glfwPollEvents, i.e. the events in the queue are processed and the function + * then returns immediately. Processing events will cause the window and input + * callbacks associated with those events to be called. + * + * The timeout value must be a positive finite number. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @param[in] timeout The maximum amount of time, in seconds, to wait. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEvents + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwWaitEventsTimeout(double timeout); + +/*! @brief Posts an empty event to the event queue. + * + * This function posts an empty event from the current thread to the event + * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwPostEmptyEvent(void); + +/*! @brief Returns the value of an input option for the specified window. + * + * This function returns the value of an input option for the specified window. + * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * @param[in] window The window to query. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); + +/*! @brief Sets an input option for the specified window. + * + * This function sets an input mode option for the specified window. The mode + * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor + * modes: + * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. + * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the + * content area of the window but does not restrict the cursor from leaving. + * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual + * and unlimited cursor movement. This is useful for implementing for + * example 3D camera controls. + * + * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to + * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are + * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` + * the next time it is called even if the key had been released before the + * call. This is useful when you are only interested in whether keys have been + * pressed but not when or in which order. + * + * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either + * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. + * If sticky mouse buttons are enabled, a mouse button press will ensure that + * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even + * if the mouse button had been released before the call. This is useful when + * you are only interested in whether mouse buttons have been pressed but not + * when or in which order. + * + * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to + * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, + * callbacks that receive modifier bits will also have the @ref + * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, + * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. + * + * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` + * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is + * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, + * attempting to set this will emit @ref GLFW_PLATFORM_ERROR. Call @ref + * glfwRawMouseMotionSupported to check for support. + * + * @param[in] window The window whose input mode to set. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * @param[in] value The new value of the specified input mode. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwGetInputMode + * + * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. + * + * @ingroup input + */ +GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); + +/*! @brief Returns whether raw mouse motion is supported. + * + * This function returns whether raw mouse motion is supported on the current + * system. This status does not change after GLFW has been initialized so you + * only need to check this once. If you attempt to enable raw motion on + * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. + * + * Raw mouse motion is closer to the actual motion of the mouse across + * a surface. It is not affected by the scaling and acceleration applied to + * the motion of the desktop cursor. That processing is suitable for a cursor + * while raw motion is better for controlling for example a 3D camera. Because + * of this, raw mouse motion is only provided when the cursor is disabled. + * + * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref raw_mouse_motion + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwRawMouseMotionSupported(void); + +/*! @brief Returns the layout-specific name of the specified printable key. + * + * This function returns the name of the specified printable key, encoded as + * UTF-8. This is typically the character that key would produce without any + * modifier keys, intended for displaying key bindings to the user. For dead + * keys, it is typically the diacritic it would add to a character. + * + * __Do not use this function__ for [text input](@ref input_char). You will + * break text input for many languages even if it happens to work for yours. + * + * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, + * otherwise the scancode is ignored. If you specify a non-printable key, or + * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this + * function returns `NULL` but does not emit an error. + * + * This behavior allows you to always pass in the arguments in the + * [key callback](@ref input_key) without modification. + * + * The printable keys are: + * - `GLFW_KEY_APOSTROPHE` + * - `GLFW_KEY_COMMA` + * - `GLFW_KEY_MINUS` + * - `GLFW_KEY_PERIOD` + * - `GLFW_KEY_SLASH` + * - `GLFW_KEY_SEMICOLON` + * - `GLFW_KEY_EQUAL` + * - `GLFW_KEY_LEFT_BRACKET` + * - `GLFW_KEY_RIGHT_BRACKET` + * - `GLFW_KEY_BACKSLASH` + * - `GLFW_KEY_WORLD_1` + * - `GLFW_KEY_WORLD_2` + * - `GLFW_KEY_0` to `GLFW_KEY_9` + * - `GLFW_KEY_A` to `GLFW_KEY_Z` + * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` + * - `GLFW_KEY_KP_DECIMAL` + * - `GLFW_KEY_KP_DIVIDE` + * - `GLFW_KEY_KP_MULTIPLY` + * - `GLFW_KEY_KP_SUBTRACT` + * - `GLFW_KEY_KP_ADD` + * - `GLFW_KEY_KP_EQUAL` + * + * Names for printable keys depend on keyboard layout, while names for + * non-printable keys are the same across layouts but depend on the application + * language and should be localized along with other user interface text. + * + * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. + * @param[in] scancode The scancode of the key to query. + * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The contents of the returned string may change when a keyboard + * layout change event is received. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key_name + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetKeyName(int key, int scancode); + +/*! @brief Returns the platform-specific scancode of the specified key. + * + * This function returns the platform-specific scancode of the specified key. + * + * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this + * method will return `-1`. + * + * @param[in] key Any [named key](@ref keys). + * @return The platform-specific scancode for the key, or `-1` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref input_key + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwGetKeyScancode(int key); + +/*! @brief Returns the last reported state of a keyboard key for the specified + * window. + * + * This function returns the last state reported for the specified key to the + * specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to + * the key callback. + * + * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns + * `GLFW_PRESS` the first time you call it for a key that was pressed, even if + * that key has already been released. + * + * The key functions deal with physical keys, with [key tokens](@ref keys) + * named after their use on the standard US keyboard layout. If you want to + * input text, use the Unicode character callback instead. + * + * The [modifier key bit masks](@ref mods) are not key tokens and cannot be + * used with this function. + * + * __Do not use this function__ to implement [text input](@ref input_char). + * + * @param[in] window The desired window. + * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is + * not a valid key for this function. + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +GLFWAPI int glfwGetKey(GLFWwindow* window, int key); + +/*! @brief Returns the last reported state of a mouse button for the specified + * window. + * + * This function returns the last state reported for the specified mouse button + * to the specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. + * + * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function + * returns `GLFW_PRESS` the first time you call it for a mouse button that was + * pressed, even if that mouse button has already been released. + * + * @param[in] window The desired window. + * @param[in] button The desired [mouse button](@ref buttons). + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); + +/*! @brief Retrieves the position of the cursor relative to the content area of + * the window. + * + * This function returns the position of the cursor, in screen coordinates, + * relative to the upper-left corner of the content area of the specified + * window. + * + * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor + * position is unbounded and limited only by the minimum and maximum values of + * a `double`. + * + * The coordinate can be converted to their integer equivalents with the + * `floor` function. Casting directly to an integer type works for positive + * coordinates, but fails for negative ones. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The desired window. + * @param[out] xpos Where to store the cursor x-coordinate, relative to the + * left edge of the content area, or `NULL`. + * @param[out] ypos Where to store the cursor y-coordinate, relative to the to + * top edge of the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPos + * + * @since Added in version 3.0. Replaces `glfwGetMousePos`. + * + * @ingroup input + */ +GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); + +/*! @brief Sets the position of the cursor, relative to the content area of the + * window. + * + * This function sets the position, in screen coordinates, of the cursor + * relative to the upper-left corner of the content area of the specified + * window. The window must have input focus. If the window does not have + * input focus when this function is called, it fails silently. + * + * __Do not use this function__ to implement things like camera controls. GLFW + * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the + * cursor, transparently re-centers it and provides unconstrained cursor + * motion. See @ref glfwSetInputMode for more information. + * + * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is + * unconstrained and limited only by the minimum and maximum values of + * a `double`. + * + * @param[in] window The desired window. + * @param[in] xpos The desired x-coordinate, relative to the left edge of the + * content area. + * @param[in] ypos The desired y-coordinate, relative to the top edge of the + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland This function will only work when the cursor mode is + * `GLFW_CURSOR_DISABLED`, otherwise it will do nothing. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwGetCursorPos + * + * @since Added in version 3.0. Replaces `glfwSetMousePos`. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); + +/*! @brief Creates a custom cursor. + * + * Creates a new custom cursor image that can be set for a window with @ref + * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. + * Any remaining cursors are destroyed by @ref glfwTerminate. + * + * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight + * bits per channel with the red channel first. They are arranged canonically + * as packed sequential rows, starting from the top-left corner. + * + * The cursor hotspot is specified in pixels, relative to the upper-left corner + * of the cursor image. Like all other coordinate systems in GLFW, the X-axis + * points to the right and the Y-axis points down. + * + * @param[in] image The desired cursor image. + * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. + * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. + * @return The handle of the created cursor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwDestroyCursor + * @sa @ref glfwCreateStandardCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); + +/*! @brief Creates a cursor with a standard shape. + * + * Returns a cursor with a [standard shape](@ref shapes), that can be set for + * a window with @ref glfwSetCursor. + * + * @param[in] shape One of the [standard shapes](@ref shapes). + * @return A new cursor ready to use or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); + +/*! @brief Destroys a cursor. + * + * This function destroys a cursor previously created with @ref + * glfwCreateCursor. Any remaining cursors will be destroyed by @ref + * glfwTerminate. + * + * If the specified cursor is current for any window, that window will be + * reverted to the default cursor. This does not affect the cursor mode. + * + * @param[in] cursor The cursor object to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); + +/*! @brief Sets the cursor for the window. + * + * This function sets the cursor image to be used when the cursor is over the + * content area of the specified window. The set cursor will only be visible + * when the [cursor mode](@ref cursor_mode) of the window is + * `GLFW_CURSOR_NORMAL`. + * + * On some platforms, the set cursor may not be visible unless the window also + * has input focus. + * + * @param[in] window The window to set the cursor for. + * @param[in] cursor The cursor to set, or `NULL` to switch back to the default + * arrow cursor. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); + +/*! @brief Sets the key callback. + * + * This function sets the key callback of the specified window, which is called + * when a key is pressed, repeated or released. + * + * The key functions deal with physical keys, with layout independent + * [key tokens](@ref keys) named after their values in the standard US keyboard + * layout. If you want to input text, use the + * [character callback](@ref glfwSetCharCallback) instead. + * + * When a window loses input focus, it will generate synthetic key release + * events for all pressed keys. You can tell these events from user-generated + * events by the fact that the synthetic ones are generated after the focus + * loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * The scancode of a key is specific to that platform or sometimes even to that + * machine. Scancodes are intended to allow users to bind keys that don't have + * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their + * state is not saved and so it cannot be queried with @ref glfwGetKey. + * + * Sometimes GLFW needs to generate synthetic key events, in which case the + * scancode may be zero. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new key callback, or `NULL` to remove the currently + * set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWkeyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); + +/*! @brief Sets the Unicode character callback. + * + * This function sets the character callback of the specified window, which is + * called when a Unicode character is input. + * + * The character callback is intended for Unicode text input. As it deals with + * characters, it is keyboard layout dependent, whereas the + * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 + * to physical keys, as a key may produce zero, one or more characters. If you + * want to know whether a specific physical key was pressed or released, see + * the key callback instead. + * + * The character callback behaves as system text input normally does and will + * not be called if modifier keys are held down that would prevent normal text + * input on that platform, for example a Super (Command) key on macOS or Alt key + * on Windows. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); + +/*! @brief Sets the Unicode character with modifiers callback. + * + * This function sets the character with modifiers callback of the specified + * window, which is called when a Unicode character is input regardless of what + * modifier keys are used. + * + * The character with modifiers callback is intended for implementing custom + * Unicode character input. For regular Unicode text input, see the + * [character callback](@ref glfwSetCharCallback). Like the character + * callback, the character with modifiers callback deals with characters and is + * keyboard layout dependent. Characters do not map 1:1 to physical keys, as + * a key may produce zero, one or more characters. If you want to know whether + * a specific physical key was pressed or released, see the + * [key callback](@ref glfwSetKeyCallback) instead. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or an + * [error](@ref error_handling) occurred. + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharmodsfun). + * + * @deprecated Scheduled for removal in version 4.0. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); + +/*! @brief Sets the mouse button callback. + * + * This function sets the mouse button callback of the specified window, which + * is called when a mouse button is pressed or released. + * + * When a window loses input focus, it will generate synthetic mouse button + * release events for all pressed mouse buttons. You can tell these events + * from user-generated events by the fact that the synthetic ones are generated + * after the focus loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmousebuttonfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); + +/*! @brief Sets the cursor position callback. + * + * This function sets the cursor position callback of the specified window, + * which is called when the cursor is moved. The callback is provided with the + * position, in screen coordinates, relative to the upper-left corner of the + * content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * + * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. + * + * @ingroup input + */ +GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); + +/*! @brief Sets the cursor enter/leave callback. + * + * This function sets the cursor boundary crossing callback of the specified + * window, which is called when the cursor enters or leaves the content area of + * the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorenterfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_enter + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); + +/*! @brief Sets the scroll callback. + * + * This function sets the scroll callback of the specified window, which is + * called when a scrolling device is used, such as a mouse wheel or scrolling + * area of a touchpad. + * + * The scroll callback receives all scrolling input, like that from a mouse + * wheel or a touchpad scrolling area. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new scroll callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWscrollfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref scrolling + * + * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. + * + * @ingroup input + */ +GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); + +/*! @brief Sets the path drop callback. + * + * This function sets the path drop callback of the specified window, which is + * called when one or more dragged paths are dropped on the window. + * + * Because the path array and its strings may have been generated specifically + * for that event, they are not guaranteed to be valid after the callback has + * returned. If you wish to use them after the callback returns, you need to + * make a deep copy. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new file drop callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWdropfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland File drop is currently unimplemented. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref path_drop + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); + +/*! @brief Returns whether the specified joystick is present. + * + * This function returns whether the specified joystick is present. + * + * There is no need to call this function before other functions that accept + * a joystick ID, as they all check for presence before performing any other + * work. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick + * + * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. + * + * @ingroup input + */ +GLFWAPI int glfwJoystickPresent(int jid); + +/*! @brief Returns the values of all axes of the specified joystick. + * + * This function returns the values of all axes of the specified joystick. + * Each element in the array is a value between -1.0 and 1.0. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of axis values in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of axis values, or `NULL` if the joystick is not present or + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_axis + * + * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. + * + * @ingroup input + */ +GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count); + +/*! @brief Returns the state of all buttons of the specified joystick. + * + * This function returns the state of all buttons of the specified joystick. + * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. + * + * For backward compatibility with earlier versions that did not have @ref + * glfwGetJoystickHats, the button array also includes all hats, each + * represented as four buttons. The hats are in the same order as returned by + * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and + * _left_. To disable these extra buttons, set the @ref + * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of button states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of button states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_button + * + * @since Added in version 2.2. + * @glfw3 Changed to return a dynamic array. + * + * @ingroup input + */ +GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); + +/*! @brief Returns the state of all hats of the specified joystick. + * + * This function returns the state of all hats of the specified joystick. + * Each element in the array is one of the following values: + * + * Name | Value + * ---- | ----- + * `GLFW_HAT_CENTERED` | 0 + * `GLFW_HAT_UP` | 1 + * `GLFW_HAT_RIGHT` | 2 + * `GLFW_HAT_DOWN` | 4 + * `GLFW_HAT_LEFT` | 8 + * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` + * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` + * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` + * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` + * + * The diagonal directions are bitwise combinations of the primary (up, right, + * down and left) directions and you can test for these individually by ANDing + * it with the corresponding direction. + * + * @code + * if (hats[2] & GLFW_HAT_RIGHT) + * { + * // State of hat 2 could be right-up, right or right-down + * } + * @endcode + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of hat states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of hat states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, this function is called again for that joystick or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_hat + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); + +/*! @brief Returns the name of the specified joystick. + * + * This function returns the name, encoded as UTF-8, of the specified joystick. + * The returned string is allocated and freed by GLFW. You should not free it + * yourself. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_name + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetJoystickName(int jid); + +/*! @brief Returns the SDL compatible GUID of the specified joystick. + * + * This function returns the SDL compatible GUID, as a UTF-8 encoded + * hexadecimal string, of the specified joystick. The returned string is + * allocated and freed by GLFW. You should not free it yourself. + * + * The GUID is what connects a joystick to a gamepad mapping. A connected + * joystick will always have a GUID even if there is no gamepad mapping + * assigned to it. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to + * uniquely identify the make and model of a joystick but does not identify + * a specific unit, e.g. all wired Xbox 360 controllers will have the same + * GUID on that platform. The GUID for a unit may vary between platforms + * depending on what hardware information the platform specific APIs provide. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetJoystickGUID(int jid); + +/*! @brief Sets the user pointer of the specified joystick. + * + * This function sets the user-defined pointer of the specified joystick. The + * current value is retained until the joystick is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwGetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer); + +/*! @brief Returns the user pointer of the specified joystick. + * + * This function returns the current value of the user-defined pointer of the + * specified joystick. The initial value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwSetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI void* glfwGetJoystickUserPointer(int jid); + +/*! @brief Returns whether the specified joystick has a gamepad mapping. + * + * This function returns whether the specified joystick is both present and has + * a gamepad mapping. + * + * If the specified joystick is present but does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check if a joystick is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwJoystickIsGamepad(int jid); + +/*! @brief Sets the joystick configuration callback. + * + * This function sets the joystick configuration callback, or removes the + * currently set callback. This is called when a joystick is connected to or + * disconnected from the system. + * + * For joystick connection and disconnection events to be delivered on all + * platforms, you need to call one of the [event processing](@ref events) + * functions. Joystick disconnection may also be detected and the callback + * called by joystick functions. The function will then return whatever it + * returns if the joystick is not present. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(int jid, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWjoystickfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_event + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); + +/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. + * + * This function parses the specified ASCII encoded string and updates the + * internal list with any gamepad mappings it finds. This string may + * contain either a single gamepad mapping or many mappings separated by + * newlines. The parser supports the full format of the `gamecontrollerdb.txt` + * source file including empty lines and comments. + * + * See @ref gamepad_mapping for a description of the format. + * + * If there is already a gamepad mapping for a given GUID in the internal list, + * it will be replaced by the one passed to this function. If the library is + * terminated and re-initialized the internal list will revert to the built-in + * default. + * + * @param[in] string The string containing the gamepad mappings. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * @sa @ref glfwGetGamepadName + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwUpdateGamepadMappings(const char* string); + +/*! @brief Returns the human-readable gamepad name for the specified joystick. + * + * This function returns the human-readable name of the gamepad from the + * gamepad mapping assigned to the specified joystick. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `NULL` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the gamepad, or `NULL` if the + * joystick is not present, does not have a mapping or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref GLFW_INVALID_ENUM. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, the gamepad mappings are updated or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetGamepadName(int jid); + +/*! @brief Retrieves the state of the specified joystick remapped as a gamepad. + * + * This function retrieves the state of the specified joystick remapped to + * an Xbox-like gamepad. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * The Guide button may not be available for input as it is often hooked by the + * system or the Steam client. + * + * Not all devices have all the buttons or axes provided by @ref + * GLFWgamepadstate. Unavailable buttons and axes will always report + * `GLFW_RELEASE` and 0.0 respectively. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] state The gamepad input state of the joystick. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is + * connected, it has no gamepad mapping or an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwUpdateGamepadMappings + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); + +/*! @brief Sets the clipboard to the specified string. + * + * This function sets the system clipboard to the specified, UTF-8 encoded + * string. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwGetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); + +/*! @brief Returns the contents of the clipboard as a string. + * + * This function returns the contents of the system clipboard, if it contains + * or is convertible to a UTF-8 encoded string. If the clipboard is empty or + * if its contents cannot be converted, `NULL` is returned and a @ref + * GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_FORMAT_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwSetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); + +/*! @brief Returns the GLFW time. + * + * This function returns the current GLFW time, in seconds. Unless the time + * has been set using @ref glfwSetTime it measures time elapsed since GLFW was + * initialized. + * + * This function and @ref glfwSetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * The resolution of the timer is system dependent, but is usually on the order + * of a few micro- or nanoseconds. It uses the highest-resolution monotonic + * time source on each supported platform. + * + * @return The current time, in seconds, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwSetTime. + * + * @sa @ref time + * + * @since Added in version 1.0. + * + * @ingroup input + */ +GLFWAPI double glfwGetTime(void); + +/*! @brief Sets the GLFW time. + * + * This function sets the current GLFW time, in seconds. The value must be + * a positive finite number less than or equal to 18446744073.0, which is + * approximately 584.5 years. + * + * This function and @ref glfwGetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * @param[in] time The new value, in seconds. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @remark The upper limit of GLFW time is calculated as + * floor((264 - 1) / 109) and is due to implementations + * storing nanoseconds in 64 bits. The limit may be increased in the future. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwGetTime. + * + * @sa @ref time + * + * @since Added in version 2.2. + * + * @ingroup input + */ +GLFWAPI void glfwSetTime(double time); + +/*! @brief Returns the current value of the raw timer. + * + * This function returns the current value of the raw timer, measured in + * 1 / frequency seconds. To get the frequency, call @ref + * glfwGetTimerFrequency. + * + * @return The value of the timer, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerFrequency + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI uint64_t glfwGetTimerValue(void); + +/*! @brief Returns the frequency, in Hz, of the raw timer. + * + * This function returns the frequency, in Hz, of the raw timer. + * + * @return The frequency of the timer, in Hz, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerValue + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI uint64_t glfwGetTimerFrequency(void); + +/*! @brief Makes the context of the specified window current for the calling + * thread. + * + * This function makes the OpenGL or OpenGL ES context of the specified window + * current on the calling thread. A context must only be made current on + * a single thread at a time and each thread can have only a single current + * context at a time. + * + * When moving a context between threads, you must make it non-current on the + * old thread before making it current on the new one. + * + * By default, making a context non-current implicitly forces a pipeline flush. + * On machines that support `GL_KHR_context_flush_control`, you can control + * whether a context performs this flush by setting the + * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) + * hint. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * @param[in] window The window whose context to make current, or `NULL` to + * detach the current context. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwGetCurrentContext + * + * @since Added in version 3.0. + * + * @ingroup context + */ +GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); + +/*! @brief Returns the window whose context is current on the calling thread. + * + * This function returns the window whose OpenGL or OpenGL ES context is + * current on the calling thread. + * + * @return The window whose context is current, or `NULL` if no window's + * context is current. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwMakeContextCurrent + * + * @since Added in version 3.0. + * + * @ingroup context + */ +GLFWAPI GLFWwindow* glfwGetCurrentContext(void); + +/*! @brief Swaps the front and back buffers of the specified window. + * + * This function swaps the front and back buffers of the specified window when + * rendering with OpenGL or OpenGL ES. If the swap interval is greater than + * zero, the GPU driver waits the specified number of screen updates before + * swapping the buffers. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see `vkQueuePresentKHR` instead. + * + * @param[in] window The window whose buffers to swap. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark __EGL:__ The context of the specified window must be current on the + * calling thread. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapInterval + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSwapBuffers(GLFWwindow* window); + +/*! @brief Sets the swap interval for the current context. + * + * This function sets the swap interval for the current OpenGL or OpenGL ES + * context, i.e. the number of screen updates to wait from the time @ref + * glfwSwapBuffers was called before swapping the buffers and returning. This + * is sometimes called _vertical synchronization_, _vertical retrace + * synchronization_ or just _vsync_. + * + * A context that supports either of the `WGL_EXT_swap_control_tear` and + * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap + * intervals, which allows the driver to swap immediately even if a frame + * arrives a little bit late. You can check for these extensions with @ref + * glfwExtensionSupported. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see the present mode of your swapchain instead. + * + * @param[in] interval The minimum number of screen updates to wait for + * until the buffers are swapped by @ref glfwSwapBuffers. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark This function is not called during context creation, leaving the + * swap interval set to whatever is the default on that platform. This is done + * because some swap interval extensions used by GLFW do not allow the swap + * interval to be reset to zero once it has been set to a non-zero value. + * + * @remark Some GPU drivers do not honor the requested swap interval, either + * because of a user setting that overrides the application's request or due to + * bugs in the driver. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapBuffers + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI void glfwSwapInterval(int interval); + +/*! @brief Returns whether the specified extension is available. + * + * This function returns whether the specified + * [API extension](@ref context_glext) is supported by the current OpenGL or + * OpenGL ES context. It searches both for client API extension and context + * creation API extensions. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * As this functions retrieves and searches one or more extension strings each + * call, it is recommended that you cache its results if it is going to be used + * frequently. The extension strings will not change during the lifetime of + * a context, so there is no danger in doing this. + * + * This function does not apply to Vulkan. If you are using Vulkan, see @ref + * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` + * and `vkEnumerateDeviceExtensionProperties` instead. + * + * @param[in] extension The ASCII encoded name of the extension. + * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI int glfwExtensionSupported(const char* extension); + +/*! @brief Returns the address of the specified function for the current + * context. + * + * This function returns the address of the specified OpenGL or OpenGL ES + * [core or extension function](@ref context_glext), if it is supported + * by the current context. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and + * `vkGetDeviceProcAddr` instead. + * + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark The address of a given function is not guaranteed to be the same + * between contexts. + * + * @remark This function may return a non-`NULL` address despite the + * associated version or extension not being available. Always check the + * context version or extension string first. + * + * @pointer_lifetime The returned function pointer is valid until the context + * is destroyed or the library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwExtensionSupported + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); + +/*! @brief Returns whether the Vulkan loader and an ICD have been found. + * + * This function returns whether the Vulkan loader and any minimally functional + * ICD have been found. + * + * The availability of a Vulkan loader and even an ICD does not by itself guarantee that + * surface creation or even instance creation is possible. Call @ref + * glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan + * surface creation are available and @ref glfwGetPhysicalDevicePresentationSupport to + * check whether a queue family of a physical device supports image presentation. + * + * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_support + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI int glfwVulkanSupported(void); + +/*! @brief Returns the Vulkan instance extensions required by GLFW. + * + * This function returns an array of names of Vulkan instance extensions required + * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the + * list will always contain `VK_KHR_surface`, so if you don't require any + * additional extensions you can pass this list directly to the + * `VkInstanceCreateInfo` struct. + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * If Vulkan is available but no set of extensions allowing window surface + * creation was found, this function returns `NULL`. You may still use Vulkan + * for off-screen rendering and compute work. + * + * @param[out] count Where to store the number of extensions in the returned + * array. This is set to zero if an error occurred. + * @return An array of ASCII encoded extension names, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @remark Additional extensions may be required by future versions of GLFW. + * You should check if any extensions you wish to enable are already in the + * returned array, as it is an error to specify an extension more than once in + * the `VkInstanceCreateInfo` struct. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_ext + * @sa @ref glfwCreateWindowSurface + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); + +#if defined(VK_VERSION_1_0) + +/*! @brief Returns the address of the specified Vulkan instance function. + * + * This function returns the address of the specified Vulkan core or extension + * function for the specified instance. If instance is set to `NULL` it can + * return any function exported from the Vulkan loader, including at least the + * following functions: + * + * - `vkEnumerateInstanceExtensionProperties` + * - `vkEnumerateInstanceLayerProperties` + * - `vkCreateInstance` + * - `vkGetInstanceProcAddr` + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * This function is equivalent to calling `vkGetInstanceProcAddr` with + * a platform-specific query of the Vulkan loader as a fallback. + * + * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve + * functions related to instance creation. + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @pointer_lifetime The returned function pointer is valid until the library + * is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_proc + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); + +/*! @brief Returns whether the specified queue family can present images. + * + * This function returns whether the specified queue family of the specified + * physical device supports presentation to the platform GLFW was built for. + * + * If Vulkan or the required window surface creation instance extensions are + * not available on the machine, or if the specified instance was not created + * with the required extensions, this function returns `GLFW_FALSE` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available and @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * @param[in] instance The instance that the physical device belongs to. + * @param[in] device The physical device that the queue family belongs to. + * @param[in] queuefamily The index of the queue family to query. + * @return `GLFW_TRUE` if the queue family supports presentation, or + * `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function currently always returns `GLFW_TRUE`, as the + * `VK_MVK_macos_surface` and `VK_EXT_metal_surface` extensions do not provide + * a `vkGetPhysicalDevice*PresentationSupport` type function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_present + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); + +/*! @brief Creates a Vulkan surface for the specified window. + * + * This function creates a Vulkan surface for the specified window. + * + * If the Vulkan loader or at least one minimally functional ICD were not found, + * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref + * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether + * Vulkan is at least minimally available. + * + * If the required window surface creation instance extensions are not + * available or if the specified instance was not created with these extensions + * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * The window surface cannot be shared with another API so the window must + * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) + * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error + * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. + * + * The window surface must be destroyed before the specified Vulkan instance. + * It is the responsibility of the caller to destroy the window surface. GLFW + * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the + * surface. + * + * @param[in] instance The Vulkan instance to create the surface in. + * @param[in] window The window to create the surface for. + * @param[in] allocator The allocator to use, or `NULL` to use the default + * allocator. + * @param[out] surface Where to store the handle of the surface. This is set + * to `VK_NULL_HANDLE` if an error occurred. + * @return `VK_SUCCESS` if successful, or a Vulkan error code if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE + * + * @remark If an error occurs before the creation call is made, GLFW returns + * the Vulkan error code most appropriate for the error. Appropriate use of + * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should + * eliminate almost all occurrences of these errors. + * + * @remark @macos GLFW prefers the `VK_EXT_metal_surface` extension, with the + * `VK_MVK_macos_surface` extension as a fallback. The name of the selected + * extension, if any, is included in the array returned by @ref + * glfwGetRequiredInstanceExtensions. + * + * @remark @macos This function creates and sets a `CAMetalLayer` instance for + * the window content view, which is required for MoltenVK to function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_surface + * @sa @ref glfwGetRequiredInstanceExtensions + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +#endif /*VK_VERSION_1_0*/ + + +/************************************************************************* + * Global definition cleanup + *************************************************************************/ + +/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ + +#ifdef GLFW_WINGDIAPI_DEFINED + #undef WINGDIAPI + #undef GLFW_WINGDIAPI_DEFINED +#endif + +#ifdef GLFW_CALLBACK_DEFINED + #undef CALLBACK + #undef GLFW_CALLBACK_DEFINED +#endif + +/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally + * defined by some gl.h variants (OpenBSD) so define it after if needed. + */ +#ifndef GLAPIENTRY + #define GLAPIENTRY APIENTRY +#endif + +/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_h_ */ + diff --git a/src_v2/libs/glfw_osx/include/GLFW/glfw3native.h b/src_v2/libs/glfw_osx/include/GLFW/glfw3native.h new file mode 100644 index 0000000..fe74c73 --- /dev/null +++ b/src_v2/libs/glfw_osx/include/GLFW/glfw3native.h @@ -0,0 +1,594 @@ +/************************************************************************* + * GLFW 3.3 - www.glfw.org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2018 Camilla Löwy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_native_h_ +#define _glfw3_native_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3native.h + * @brief The header of the native access functions. + * + * This is the header file of the native access functions. See @ref native for + * more information. + */ +/*! @defgroup native Native access + * @brief Functions related to accessing native handles. + * + * **By using the native access functions you assert that you know what you're + * doing and how to fix problems caused by using them. If you don't, you + * shouldn't be using them.** + * + * Before the inclusion of @ref glfw3native.h, you may define zero or more + * window system API macro and zero or more context creation API macros. + * + * The chosen backends must match those the library was compiled for. Failure + * to do this will cause a link-time error. + * + * The available window API macros are: + * * `GLFW_EXPOSE_NATIVE_WIN32` + * * `GLFW_EXPOSE_NATIVE_COCOA` + * * `GLFW_EXPOSE_NATIVE_X11` + * * `GLFW_EXPOSE_NATIVE_WAYLAND` + * + * The available context API macros are: + * * `GLFW_EXPOSE_NATIVE_WGL` + * * `GLFW_EXPOSE_NATIVE_NSGL` + * * `GLFW_EXPOSE_NATIVE_GLX` + * * `GLFW_EXPOSE_NATIVE_EGL` + * * `GLFW_EXPOSE_NATIVE_OSMESA` + * + * These macros select which of the native access functions that are declared + * and which platform-specific headers to include. It is then up your (by + * definition platform-specific) code to handle which of these should be + * defined. + */ + + +/************************************************************************* + * System headers and types + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) + // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for + // example to allow applications to correctly declare a GL_KHR_debug callback) + // but windows.h assumes no one will define APIENTRY before it does + #if defined(GLFW_APIENTRY_DEFINED) + #undef APIENTRY + #undef GLFW_APIENTRY_DEFINED + #endif + #include +#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) + #if defined(__OBJC__) + #import + #else + #include + typedef void* id; + #endif +#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) + #include + #include +#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) + #include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) + /* WGL is declared by windows.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_NSGL) + /* NSGL is declared by Cocoa.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_GLX) + #include +#endif +#if defined(GLFW_EXPOSE_NATIVE_EGL) + #include +#endif +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) + #include +#endif + + +/************************************************************************* + * Functions + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) +/*! @brief Returns the adapter device name of the specified monitor. + * + * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) + * of the specified monitor, or `NULL` if an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the display device name of the specified monitor. + * + * @return The UTF-8 encoded display device name (for example + * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); + +/*! @brief Returns the `HWND` of the specified window. + * + * @return The `HWND` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) +/*! @brief Returns the `HGLRC` of the specified window. + * + * @return The `HGLRC` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_COCOA) +/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. + * + * @return The `CGDirectDisplayID` of the specified monitor, or + * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); + +/*! @brief Returns the `NSWindow` of the specified window. + * + * @return The `NSWindow` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_NSGL) +/*! @brief Returns the `NSOpenGLContext` of the specified window. + * + * @return The `NSOpenGLContext` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_X11) +/*! @brief Returns the `Display` used by GLFW. + * + * @return The `Display` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI Display* glfwGetX11Display(void); + +/*! @brief Returns the `RRCrtc` of the specified monitor. + * + * @return The `RRCrtc` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the `RROutput` of the specified monitor. + * + * @return The `RROutput` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); + +/*! @brief Returns the `Window` of the specified window. + * + * @return The `Window` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI Window glfwGetX11Window(GLFWwindow* window); + +/*! @brief Sets the current primary selection to the specified string. + * + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwGetX11SelectionString + * @sa glfwSetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI void glfwSetX11SelectionString(const char* string); + +/*! @brief Returns the contents of the current primary selection as a string. + * + * If the selection is empty or if its contents cannot be converted, `NULL` + * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @return The contents of the selection as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the + * library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwSetX11SelectionString + * @sa glfwGetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetX11SelectionString(void); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_GLX) +/*! @brief Returns the `GLXContext` of the specified window. + * + * @return The `GLXContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); + +/*! @brief Returns the `GLXWindow` of the specified window. + * + * @return The `GLXWindow` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) +/*! @brief Returns the `struct wl_display*` used by GLFW. + * + * @return The `struct wl_display*` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); + +/*! @brief Returns the `struct wl_output*` of the specified monitor. + * + * @return The `struct wl_output*` of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); + +/*! @brief Returns the main `struct wl_surface*` of the specified window. + * + * @return The main `struct wl_surface*` of the specified window, or `NULL` if + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_EGL) +/*! @brief Returns the `EGLDisplay` used by GLFW. + * + * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLDisplay glfwGetEGLDisplay(void); + +/*! @brief Returns the `EGLContext` of the specified window. + * + * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); + +/*! @brief Returns the `EGLSurface` of the specified window. + * + * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) +/*! @brief Retrieves the color buffer associated with the specified window. + * + * @param[in] window The window whose color buffer to retrieve. + * @param[out] width Where to store the width of the color buffer, or `NULL`. + * @param[out] height Where to store the height of the color buffer, or `NULL`. + * @param[out] format Where to store the OSMesa pixel format of the color + * buffer, or `NULL`. + * @param[out] buffer Where to store the address of the color buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); + +/*! @brief Retrieves the depth buffer associated with the specified window. + * + * @param[in] window The window whose depth buffer to retrieve. + * @param[out] width Where to store the width of the depth buffer, or `NULL`. + * @param[out] height Where to store the height of the depth buffer, or `NULL`. + * @param[out] bytesPerValue Where to store the number of bytes per depth + * buffer element, or `NULL`. + * @param[out] buffer Where to store the address of the depth buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); + +/*! @brief Returns the `OSMesaContext` of the specified window. + * + * @return The `OSMesaContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_native_h_ */ + diff --git a/src_v2/libs/glfw_osx/lib-arm64/libglfw.3.dylib b/src_v2/libs/glfw_osx/lib-arm64/libglfw.3.dylib new file mode 100755 index 0000000000000000000000000000000000000000..5fbb9fb2374d68643159d206597debf39547c58e GIT binary patch literal 233228 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್ zjxBi~%1LbHtk5d@(YElEpuEMN%|k8*b*Ga7sOz)(Q-CVNO<)6T77pKOz_M3p(ix14 zLv+u-A)Y;ul%?Y;OyfFFUH%t8liJ&%a^Ql<`#MP%Y2W%4WU2=|6$H zr)2RfVAIp__!j=9N^_*ktNB-W`E{=YaI4QQ3x|WPp z3c?alCEtqW#@mY*78kOYbc@pey}R6Bl5I!>Q7Qc+iZ5_X?s6yGu5G?=gI4RURK4`n zom%IwbgPcWa~#<&MaEP#1cEqmVU8-+HsZS>=*Iuq(H}he>hp)xU_(7!aO$p9aR@Zz zL1+-p=axe_8AD!NFph%iYqby#k<=-gQm!;AO$zO%D$L}rFixtN)fgqrO3kBaBTR%d zkWBuHa2v!gnOyKgrLgqEg3WWt4`wrA(M>#}k^eL)$%@qK^rly9b#Dxc?oAAV#VoGfiqu7r77mE zhL;YNW(sTo=4CM97-w@-EfB!%=^N3Kkl(Kc>$KWhwwX)i!x^KYHiQOw{6Vk*?0f;I zNZ`lOQaaI14Xa{J^|V@`7YFPZ<|+Vl+B6zO%u-{-7MaU)?4zq<#_;xH z5Pa2Wowfmlqft|k0M1es9t~9O^UHV?UEu+fVRX)?oLaB*3`}UPB2?RytU^wx6`&&6 z8bG-q9S9&A23aYMDauBjB+d|wi=Z{oJE4kNFFGKrHBhAD(r6E_UN(=7NToLjQPITe zA&hIL=Id;cq#$cKy$GYRtJdUi2w4Ugz9$e7ge8gk3ct^Xslj=ormn6j z;fMemN~Yljrwqd3hL16D=bJ4k!&#IM6fhaiXBsDA#^7nnxdQ=zKv`H^Tv(i=t}0ko zP<3Pv5r+z?jD17;=Jai%zh0~GhM@Ks3XG^l z^RWOkO%DtESlH;UXb3S@qYyo*)JcI9#aWJtsGgIn(2Ww1UqNLF-WQ<&4~Ghge+HEj z4`zY0wpLl$0G5I1^~yzTYA7p+V4!9xb;`wlf1NU)5f_pY{VodN!f$0E?x7E;iy9DC zf`M`Slqv-T&X7$*n4=WCIWmF@7|u$2;`99VO?eH000;naY+QH(_SS9*9~7ixY9PjmhsaWu z#-bQzA9{N$!H zdi&Cs&Ot1z!U0pVd0Q3m*Qxd7#LXtg02zeNXw7hb30vHrzua3M&;m{8GX&6h1HOm$;9h5CRMip(xG zNx4qK1%N@4jab<9S;rVM-zZh9C@c}BVlgy?Qu{2KOr`eMCDBNsgRr$&e@TT9)kWRF z>6D_vl6+SLvB@T6V@NGsUea%xI>_io6T8NG%~xHE>ArZmxkR>Da;u!&RfALWbRrn9 zz=$P+t`?KA1Z&H}5>a9)^rMg#sHP>NYFZ1hG^(z6iq(UxFKv#46vebTDNIqWgWf7r z;P?hq!Aeyt_iu0ysS>}hR?m)wpFgk>B7L?=W3HeFR_X)(Dy-wNIs#K`46%epbNbd< z0@>)MB|kmsMYIP@RJx%vLv4ZLVZ|roM9{e*hM7WLPYi<^g9SsM#9~eeEQ=PAF$CI+ zu!8`C5rj`xw)*6%ESX5$)wK|HV4hXpY9~|6!h(Y0OLA47d?8b<0qbjBH>E3e2cTJ! z_Jxo6;HIR}0_3w3br7y7U;);g0e_R2RHhJ98lH*kAEtyWv>LZyqm+-1pv-5Sm$j5W z^GOlGvVfvjl7$4PzJPN2L{GuLnX!j#6$~wgI>{6cp}tqDkX0}Q)cc`l_elu?WxAn| z4Q#er3WLJLtpILHDN``x3Lmhwa-h#`AP=h&cSEsQVtr!KwicQ?gfs=`Fr9{^wmwODuz@Bk zaUvIn4di1@SWfa(pZpR9X1-xc5h+?ww&=qEDFjC}Gf&X=;^hlVHl(c0TOnqF3`#Z6 z3Zq|a_{HiBNlCC#k0jFqhY7QV7z13%l0j56v@tUn7R-hX0Yk#|O)9NQxBm$n6SF|E zc+N#=jcDZcO9L6%xEg$582)M>DL<;QhC<7X4{j(WQx^n0tOU}GW~8X~!a#)5__)!O zgng_UCQK-2I*awunx2_mVIik>8>~yxtzHC%ekdg{u>cNDY7#L{WNYBYKV~CR}Ke^BB}U*e{`(K?@|WAtZ-E5fpIEc&GuVDY=b4Yd;8rzMM#Tpv)Ztbul{*5sgqPm}8@#~BPMybR87hgk+64>pRl zs*`K+IvlBllw+)(EUJVDE-gtU2i$T71;Kg3tu#b%+(ZK?M=ikX7?Q~Zk&$e=keV#c zn7?(946+K^AR%gs$TMo)8VFF3n`o1fkaQ3csInfArB)<{x_LX#UkFuRg@kC|LK zIR;4pbJM|`Y{75%XCy()W5UGbLP*L8!CXWKMU;@Ec|x-C^kxakLzsYvgDTc z45A1ZArTVjt0*R01$!DO9n?0MO!+8BNEe9;6~#Vw(ivwbouBblW#ZH`5|!!KKm3@2 zH?DHNmYcUIf4QTuc$Mqxit*2;L@Ty3{E46`_>CdBv8dE_Nm-?*wy|EB<48@<%+9&s z!rb|bmMkw&a_3*QVA0ZoqTSJ?#wx8ESH?_M&mMz+ zvqib7N}7_cWGc&*rOJ8AGUZ&`dA20m**1r5ge}1qXIpJsWpmjsw#`>oDi9bmmM^^XL3A z6*Ck6Mu_4@ieH8+z=XeO{6*n!6#gh(0{$pI7Ju|FjsJY6|J%+uKZX93aZ?j#q$o;0 zN}+C+;m?h~Ec{U$zUxqwE%>_ze^=x0OoYWuRhXr2iMtjuo`Ga56U=jgv||>OL=G)v z8%iu2=h=D=GXF7-;0vv$)p0>dDP%med*w0PvndlSbhXU*E{$X+^H?6=P{>g#{RP-y zfe_A78tP$|gcT5GS#FqAu-D?jB$l?l9DfxFj~s;?D;ruv57MIU#@ja_rsJ z@}>uKn0XLlbptcq7U9m)iY5diS&rfjE?kfMd~%cudTgDViOp+wfR;cdtjYdBPM-kU z%;1F&7-vrA4T9e_Hle;{P$~+m*i%_l{R%f3&-4ID1gbk&>PPwzEW~IU^tyV#uM%NK zlfX`Z8$?0KK(1*GIOr{49+k%oJe&MJw}M?8kAjt|JHR^$QCSi2)-ye$685BOuy;M6 zbY*g}QhFBsk8Ig|O><^)adMtwlDV+pVuMj%hvk^#a-d84RuwM?;!QbN=pw9TBZo#v zT&afd>n z(_jvcZ)_~0EO<1)T^rsB3yz#sSS~JyF^o?mnB|}~hgHrqEP>Ke>n?T^7IQFktGz+m zWaPQRYghow9yfWL5xo(6ceLvOwS=vo!|KSX^i~$Tt4Z?rD17g~=)6ANoE;bI{(Z4Ouny0ri+p2~r%`v2{{4_H*y_BXy~7!{Qim5jPpXp~l# zRBFh@;-3fxihxRK!N3eKIWXhQpip+hGPAUzuD7V{#x*i3Eh_7hVNsb%_%E`EgEQlfqjY3IAW6K54ZgGnCD;k8nR?ihxo}t@>K-TkMOrqC>9jwt|{c zoa41653DA{ekCso-?!vtomZHdsB!H+`BYpOG#lPBn=>xQNa2H^>DOL2-(($i#|>aaia zU-2|q*G!ZvZADZ#s}X}is?%u<1T}-($=rqxn4e`Kd2}@IV%oGa%mp?6 zni1@eX$wI9xEkyP4`Jc$nCxm%%p~S>Ra7|b{9!frPRJqLDZ)#8Of;jkI{8i?RRDHM ztU9f!;k!TjMH;?)X1BqVH=n<-$i$u(#90k3%a;%Bs?e1NZ(KsGNo*-DAjGpXST5@y zYQpGTW5*_v#Qc>H%Tit(*!pl8Mhne6Go9tj&@f4Cndp5u6Np8PWWkWY$3AW&)B#2= zG;TfA8&XrsutRnD4Xp8TfPwne#ek!$k%z;fI?!P>bZ1fMLF=T#Xyg^OX6WnG$7Od0 z3uSn$74X&*pXQ;N+3Ym7dFSAcws_5!7YI)2} zk`QwN)D6t;@N&3J2%09`B~vzG)PQBAe6`98%DULf9UiY3fq4DGL=GYC9t>!Rq)f_0 zE%OBV6EJA3GG3}WKD3FsW==WmsEhZgVGZG`si>UktaI}%0SZ_O_rcsLzi7Am#Hk_4 zK|^c}@V2?k3-7Pcsx_!SJZaH}9I?Y;6-#F?I9B6D6gTBCsV{@?#d&ebhHn$#<^}#A z8WOzPuPx|w5#;i>`}t}HNCs?N$p7L%LuejsQHYo0g*K|`u+;UlcmVO1sxE*I%K&~B z4B!E;p;HWUO8Wu;Sdbrfz4CEQDi|S z_)&!ck_L(yG7*|qGk^~_?|6FzbEj^MrsgZ!wZ2+tOx0L?#X>w!O|_W6dF_b0fW0E| zvWHlP%&CF4R>tqaxe~5vL|22(iZccA_-z~vGrW+{NW>(H1%`H61^0`BO#?OxAU>fs z2WrIu)haREdW)A`1&2bwN}@o_kf0=4)>@5)^JjK7tQlZYC5C5BFIBu3na{^Rs5JeA z37blOXoHE!AiY8?RQzi(KEH^Uv**Fc1ic#4;VV1FdmZeU*|RIEU3`#~t1Xx#_}(*2 zxv8*`r7h`_a19c~AYNac(~b);C}n{k@o0>FNti}-Q1QPks~7H1VQr5E)YS{$N7EMm z4!K8yZC9IrP#afZGO#6K<{SN${>IOutDsZuc4(11M}}4S#i=@tsdx zgI2*p68a&Gw*~OP4z_8)5TfUb$b}By1LbQvQD=rbqa=Qe0S3$}H{4wD8zd?vl*=b( zlA2N<56y4-&k?`p!eSO)>KBnGS)r!j4J#TCq)nmQc=^h^Tqwbu2|m$TDW4U!xi`%L z{!QKd7BbHXn_}K1@$?k7m7v7<-z-N(Wm2ib=gqTw3Lt-QJK+_CGvMJOj1e$H3F9Wg zzA40F^}uZxJXk8=uO#rTULG7$fgZ{4EJOw%Y(5x>;>Bnfs`1Qd`NPfy_ZP+`gn#Xy z&EG0ds&x4Z+%7&L!8<6+(#0^&veTfv^nY0Wc;Qaf;UO&E;DCO@w@QcwD-`J5IdDcP zAByZVaOb)Ca7nBRJM3Fqow|jR%?^9D9y_i#aa)@YB(zE?cX@EbiPs>%mwTE6rXsEQztr-<4_M3T+r3_d=8~ zYQR)jW`#EiZT3RG0bdTIpsR`|XNWu<7K<=i!q}2#hnLhHd}AHhVyNUhNM1N6A*z;h zaaql?3eQj>B(973{8IsQKNy&^M0m;`pPvQB?JcjE{=|Y@v{bw`gy9rc*nHh5R12-8 z@M1`X=!-aXK+nW69L7&^ALw7@_}d3HIxd z?^kjKyxR{;(-kEmo_;8 z@{`D;0DZ_L<9tN2Xfh%!8lsd7p=?VH9AL;yzylE7Rsqkj%u|4bKP*Y*uV9bU&{x%*&7hHv> zD)#)j0s1u)AC8Zz^cSPj_Pcn5)P#jC{JV#|WsS?8&8Jd0rE#>(@f%|g*Mb%mx}ajM z#1}}g{SV417bY)FxzJw+7w8&QfGxS2R-=Ba@gV)#R!Ooy<@AeS+2payEqzgDf6eNj zx`;lABIvRFi7u`crW?>z4)J%{Qpc5CWvRmkD-HW}6b0Ve?|$u1Oh^bgdm%PE zK6@;kBF26gkrgEagb`lOG6p_P95iDoBB&`{ve3t_OrOc8_~}5!+GILZDg2+W3i*Gp z!d`C(b=V`yA>OEoXodtL2e5&aLzrp8 zP-Zz2#mo)Iu!t_mNc1pfiiAWuhBMP4pp&E7v1>;%lY101x5O~k9>XGvj%94+v5@`I zj5UvD=84BKRv*jEB`2`RmQ$Ez)2VFW%JIyUIDtjPoX$*J&Snw2;hmbv=deM^=Q2z0 zxy)QY8NyCx5x(=8c}x;Bwf~*5BY$TR>yuezRthuiPGv*f8H}yVU=h1A*r3BRSVUze zW1X4I?9O7Q{aK71$YSP%Y-Vz1Lmat`CC+9MowFHhox>t}=RleBSVTh}GZ)TfrcHC% z;K~AKT3g5lcFzZ$A{KF=h?#5`GxN$zm}U7wW-7XrvEEBr47?m~ zUdb#IS1{A+70l9h4P)D{VV0s*EHZBmV~cKLrZKm$!6mmcQ`BvY<=n=iYi1sdFw%-sDXvmAPg4NPcbmYy~?sPSot?`bxq=^1E0&oFaF zJG9|;W|H3^yKE49 z59<0o$me@(kh7baV)n2BYxl6B86Pln^9Nw355ayPvVmJZV&Np#HysHuViN zTfSux&TpBi^AL+{{vG@%l?o4#Zl_}GH5gk%#9eb@(!Y)wjTBNp9l)syd=|Pd&e=_`yN0Fz@!u(A#g!bF#Zjy&; zACq!0yexm^2Z-B<_7F|ji~JU%37;ZvAlgTiXCp<)OBjYN5Vk7DGSL*GIYf(y+K9S|E+@L0=sKcJ zL^ly_Bf6bv7ty^$dx;(*%C5qE=3I@mh^URIo9J?)tBI~7+C+2{(Ke#niFOg)OSG5h zA)>4v(~Tk;OEjKn0?}lmSwstomJoFkttGmWXamufD=?icL_3J?BHB%KKhZv-M~FsJ zy~YrYBRY|2BGC+@c|;cxtt9FrT2FK>(MF=pL?@GdQi!gnazs&m#S)Dtnm{y}Xco~z zq9sI~L~DtzB-%i9J<%4TTZncL-9_~9KhT~Q%3n0mF+?X2?I!*GMEi&yAsR{X#1M@m zI+181(F~$_L>CdQBrvL5q)|SsXIT$29%*NZr5&Z+B$nxqrFbO8(S$L1t{;jl{0YUf6K96t&kDgW4#D?^;NKX6 z-xPwsEd+m02>wqY_#>^s%X@kV{)Hj<7l+_q9fE&f2>x3k_-)h<-XeN91U|V2%OmMD z!cu>(B40zeh3G3pe<6C(Qj9NysEpS|_;!WLblQo3gy^JY7|$Z2QcuQrBk}*IsT{wh zKNdMohFU-UQ&~Svcn!-b!>RQDt9dZgI!xxLh1OxA^0S)q8LC{bDCJViq2f4TaN8w( zfaPCXj&!?e9C;ue8^U#_n*XV8LEAMsI>2%E@Sz5Sp8od0N#cte}H zC6#v`QQ1Fb|CQ}swr|;AWdD%;Q}$okFJ(WJ{cb$PKbq)ZqGqCp7NfnsCi)4{7l>{l z`T)^8iLN5LlxQWOrO(uFa(Nl;<6Eze4iTcrJMBgC#EYT_&KQAUagXmdAk0TmM z^k+MkYd=xB{*vo9xvrDz6nP&q?Gg-^Li8e{Wkjzhx}NACv_7$vVz{%3KbY`TqFF@e z5iKKHMYNXaMxsv<{eWm6QF9rlGlbHKCM@rZ&m}yY=w(E!h%P58_Y>rO{J)65k!U;7 zmx=ZfJwkMt4f8RPXcEzMqJ=~+A-aU@6beeGtoAp&lCM8wWkM&K1Z~hXb;gZiT+6R2+@cNv{MYxu|y{m z%_MpWQ7h3^MDHMaFVQE6zDV?Kq6dloL3BhVrkg-?D$zWm4x(XbDj_(X~YHCi*bZr-{Bs z^edufx{n`EG=XS3(FH_ZMCJS~{Z~pXsq|+l@&8|`^tY+`+1!iv4wYZ2Fa2}MJ#N1K z;cM%o{%yzjQ)qn`Nv}ZjU~OJqr}(p=3k5N zaMxec>!bMUkCJZUTgLeKYFJ*p3{!5z^>O|hq^`9{*WQHm@|%&KcMH->8j!BI73uWb zkS_cu(z@Awze^xKhsMzrY;#M>H??zns=^!104e!dCmN1KrjeH7`RM9+Q< z@vO&@Uik#l&0CNzeG+NzQ%D#57im=+((9f^de2s*UC$tm*oJicvq(oghjeNO(uL0> zz4is98(&0Pz8z`&OGw`#de;ub#XFJS(24ZHmyy2w3eqoMMLOy=q|;wVI{yu%E4z?B z^d{2ow~!9rjWp>Uq^@_7Hou3oy&LJndyu~HKGH8gKpOoa()f>%UivZ8`+ATr{RC;o zr$`s=LwfCgqz`?DH1~6)JwzY+0`Y-fq^Ey{^wO`9-g*G(vj>s3e1r6bZ;`I;Lt6PA z(ly^B_5OhLpNEh>@gvgrenR@&&qz=H1!?-PNSFME^yVW-+kQv-=^scV81~b%Oh}8( zNUx4Sdang(`v9c&fk@*AAuWhRx^ghmM}{CBKNP7s3hARnbB;mGh9Qj~j&yc3(p4jn zK0FfXj!{Ur#vpAy7U{;(NZ&jT>8r6wUpgLX-w8-##~__^BGP3iAwBVAqM zEYWdDe>(-~i}A!i73uKtNE0U@wVsajhBJ_Mo{9AEM5JTSMmlQ}Qf~s%|D1#LjdPLy zb{^94Q;^P?iuCI9k#0^z`tCHOaz1!o*)M2N=C6_+M*VuiB@{uYBA4+>`Y^>`xziYr zl-GygmyklotHHy`@CTLrcPaB=&l|zR%lJ$F;`}Ak3)8R#!WIZyAZ&rK1;Q2xTOe$K zum!>v2wNa*fv^R_76@A)Y=N)^!WIZyAZ&rK1;Q2xTOe$Kum!>v2wUKPw*^LwU2Ss5 z7Noi(ONOV_C&aoVi^efHbe`@`$)Ay*`WODC<)@X5Np(m61=YV2T@am;vr^r0?nrlB zQF=j|JJy|0kddG2jt!b%nx9(|O~DFM;a^7K3@B1Y$&V(;tGmfmke;8JpYD#!Psd+K z0silfEqTzCT5pMj=y_6L5BL{5myJp(o?Vb(FSph>efc%jIWCtw*JZP_xl5uOQi|uK z%}Os$&q*yPD2@lcRFB76$2?6_0!0~CpPkjm1ra#Pd=6K&)l4#dnkWiR^O_Rp}06bGu>6~^;xTZ1wN0Xx+2|a^?LK|<#vy~y3Ed&beTI6Vj<4O z>6xicr>o5BbIHh9eeZX=+~_rC*EpRFLy<`+1Hv*WD6Dhag*no#PG_36Y_XR@a6yJv z=8Nog{VUA3I&17Ym6()bFf^2^%wzZ2XF6S_R%aUId@-w^04Wz2Lutzv7nfBoF0QDt zdTgw|QD+icozn&yHKoO+j%u6T!|D?nj^#C+>UOjG)jCa{h}G#R^+3JZ@@J-{yPPgh zf!hjJgJfnGcy_o%gc)GRc>EhahbKO5{%WU)nmutI7MZtuoaA81|3`( zc=*f&qc)#$VDPe6+r&u88ki^2FG+_Y`RrtLE{pcdX4+xcseuj(>{tU^#FPpnlg(bs zrEz{~fy?6)Vi?YuXMzx5y{Eg}b*VMA4yOaAvKh7ZGOTGnZGmQjqM2{^x@tUSc5jBm z0|s?@>PRtBrwBR3xEDBlmDx6E0x$+b4MTh>Mm3mSt$8j7ZzIr`XIraalxChRqf%x~ zwHQ1rJkJVQg~GV1sV;gn6-b^> z+68qm(O1C?iSoTo2m`q_swp7#WBR#LzRp#KG z(N*KMr&ikp#aT4Z<#pi1&OC=vo#IP_4r&u!t==q>BfjWtPA4H=MM7zHfRavw8=%3U zz;nyFjRx*aYgLuCkdM;oR#@*ie4=KW3_97~RIk$xs|E<&Vvz8>faS96j*3drxLbpX zv*%ut7E-#%~z6Z~}vv>mx*Miv?7H7$|l9 zJU|BHMGmapokHDPP~+xp)e9@dY(5|^wZdW@svd(u-B2!J5mN1iJAt%1QQ2IlQPY8C zs-s%A>KunxRAm#2`CvhD;DFSEd|XgT8(6)I3ta}aR#cG zVD-T57<8z>j?@`3GNm|s4n=|H%dRemENS;!P~tAs%F52jurGC#*?Gsxwff2`VZ@l> zv{%8XAX;g+q6cQo^SIo05B83pK(RIj^lCDS5W?oTDqwBygprDyy{{h)9G4FV(clvT z4_$8&1%)E`?44YIDuYMkBiz>*sS3m>e zcd6XM(z^Vft`wHRJVTv2fGI19l@D*M7Rurw93H0azAQ`#g1M z!t_ji`{_l!0_d$^B1l(Si8!JS_8F9<27}}eTVU-zyFm1W?CN~JLIrO90KvtZNtY+n z{VrMSh`kB99&7h>pd zqJ?!M^wz|$%F*X4x!m|~v;mxhNm5$BY`x~SLz zg98s$KahtKCFO86L1=>5X9#=k!pMyS;U+;W>#a4=AaIS9=W;poTw-=?3MsGgiq%Vt zrT}-dRlHfjz|B|eaz)UpDO7nY3Sgq(xoT6HFzVYq=WVSEV$JrMs z68knFIvgmfsg}a}LA*Rv1hBfk2&=hl32a1&6dE{!GRQ{N$T2lfo`WWVy=B&FVVf2K zeV(!^QB$oF;!?CtLa$pix(>olY=fNyt0{DshB0_IVG7+Np-(jMUV=VXjp!SF9M@<| zs>2*E^;Togf~>=zskp*fzKjiK(YaRkkZDG(&tA>vcs|`j`Rz8g+XTIqy>BXD|B1+E z4_XTCo+?K*@7S+d^4Z>jG68EwSQ8PGGo0}gRC^j@jH17^fXS)VLMQYOP2SbHEIT)7F zE~kG!|7>sutfe%iuLo-tzHf-A>Q9D>n-cb-tkr$Plv>pSKR62Vx{~J=wpB$gx(4zM z@G?8hx0>yGp@4f^xCz=G;=0ylV(!d^T~>XM`fZ?{?E=$vKM6_^Vq2kcPyvh|a7$@t z{~pAeq4FD^;_=k~m;WAtUuK5&Xj+ZW2R7{(gq3pxRL+q$u5tKj9u;n$9vlR>!0e{M zN{f4SC^Pexb$Af_E)o*oYBp)b+cTI&;98eG5?KJ{vcV2CF}{wZ+CBuO>uKjX!EyP` zNb&drrMwAv*}sM{GX?uh2D@b#bjxRXCcB^Gzs=8^O|W8tMW0-%eLUF0I-lneYpe&M zMr~dVJ_;HQFNiqcS7!=M z!umQzy07rxj$Qn>fgb}j>$U$FqGkC;2*}R`LWbe=A7oPecEAaB3p>!w1M-2BJu4DJ=p3>B@YoYP1-_JwrhF><&%U+1eW3NXoaCsKPCXAJR86`#~c*s*`g@x>oQ6ll* zqV&btz+3zw9!c|$JQ-+T`=V&X5yRrQkjeoNL0UiY-@W3u`Dc+X{2HyZ{us?VEfDkC z!(6RZ{2qW`XnE|v$FOZ6+VTq*9sZU7cKv2H2@Ac;!~Drv4fPT5yZZ+I+i)ZQUA>0? zHm(H^S>}QoPdR_&a_um71GLVTo49E0I{w?-$bY-;~4Asr)f*@GkXw%s){o$Vh9c4t?uq|DGQv>nTeJ*r9f8~H?2eIga=6cs-?v6WbG(ly zx)+ku(&`5G>SoSvYmPAIz>EzY>ben{{3DR>1vykMtRj7|Ipc7#4I{)e0(K7wcWo2} zd4T_}ZxQi}-?b0&|8Ez+Z4ZeE_)?ihs~<){JNNn!LC#^4<L+;QG$HO7$@c-l$XWsJgSlZlsK5ZQh5xR5lK*yz-^QnS zP~J#1^);jTDu#NM#(fkb=>cVEjsF!%j#PlL$U7v4kY=NPek zW7i&QVeR{Qu-4D{Z*wnqDJcG$yG_jl_FH;}beMKWtTUyg_*RI+G}bWn&@6$Z(3fm+PulM3;xAt(O-k9 z+jJPNF8G&Hl(lJ42T0csh);BOm=Y69S|WUr8ObGG0~al_Wo0F#WF;iVCueOp6}3mK zG&PxaSzM?YcN@o3lBt<FlEm6rueWrSIt)~!uoCv;j4m@Jma=&VB~bO5pR1jbH+ zRb{*r>-|>3oz;jp5}vpO@e73G>Jaxx`IU&jBfOvRpM+zVqde+wm|h~`;|UiLJ_GPD z$j`c~QGbfmzXovz;ZDMZg!8UNc{$+{!pjM7A$%+09>Ohz`v|uYW-BqiU4#<|?SpS zfbe$0>$af$UBZ!1BL0?eG-30JnBPLev4k54Pa@n$cn0B=r!l@u0rT>$C+sHqVZv7v zZtXz*2Es>PK)jJ~%!`O$Al$SQ@gBm!}3)U&LBMT3zRPa%=43X5OE#JHxa&-@ZN7w-b%Qa@D9K{{POQn{tjW^&xk(* z%*TiNUl6mgsGs~R;^Ba~JmojUXAoZbJK|ZSpYR9bg(P)Ns|b%d7Ug#n?jigV;f&EJe~<8lSj47yjK6{K ziGX>2cM;Af9CbYE*Ab380r5J*4TM_>Zz8;#@D{?q6K*Fw_Eb!7JK+?8Q@mP?6Rst^h44zk z?-1@I{3Bu8$ryh0cuapU;ViM>vJBjqpmsPQs58_7VPy za0}rR&cOH%pMmkG5k5k=jIiZQlwSv!n?8zgBjF6fPY`yVgZjG&w-ElEFgq9J<})$A zKEi*K_&k&+60V$#xR9`uu#0f~6qK(aypr$(gm+Cv`OAcx&PRNJ@PtIf$4tchG!j0W zuzMQH^9dg&TrK5EC|^UkgK#t9BZOZjocwpx@0Ick5L@7*B;39!7a|@j{5JcoSjM zIhdZMfYK*CneZgS$%HcqXAr)O@Or{^gu4mfO1Ovc!-RVYZza5_5YvC1a0%hh0gL&p z2<3kePPrKI@N-cfbqV6Jgx!Rv5w0biOSp@$6)^7)4GS^6i*QZ};%i91f$*IqKR~#Z zaWy{BpwbI}Z;6 zJ}Ii6)z+KEeB8t3QH(VbKFsCA>sjOVC_jD*;wHi~3AYel0(jU+hzd5A`QL4XrQg*@ z2}?hA9}t#)?1oOo@Y0Xnc*4?;-5kQwU)^%44;#(=?`gu)FWonU<##wvJ|E+k{#|nk z%kOd25|(~lHxQP7SzjeAzl-s!3{QUTPEN%5rJuV(!qU&(O@yUiyJw{w_PF`q7lftX z)?=noe#t-UG{VyV>q5fPf9rC>(ogH1fKM9j|1L-eVfh_}{e z`HB4C77&*HiJgR{pWNFCOFzZ!gr$Gq4+%?ux#quP{L=4l9AWAIHjS|KOIu7>`W3DP zJS>*6F7jJ@J>hP`cW`}>_Y&SLaJ}|@uuj4a{9yq6^%3qP9Fq*;kB9rYeJKAM;9(~) z)-gIl=yNW=H7WVGfGmb^_q~W=dK2=fR}iNVZrOqOV!~a!5HBGdMd4QxjwksYgmadm z{-cD8-bLI&xUCg&H{rw)IQ|?Y93|%)VDtQMsY88!o5Jzo^@#bhkmJct_<_Iagb&mB z$frFnZz6da;g%H`o)24Ge&B7yHxQn<8Sy=Y4- z%pY&^@XgPlK7V$`@ovKKR7&7QgyE@=zz4RX{$OZUTtA^5aXjHMq@PT95$Wd=UQYF8 zB|L%V&l z=6CfTlpjZUEy>R!yy;DpUr0FeEyVeR*S(L}Nq8cqznpO5J1D<}aO*!1-$}Tq9`OT& zotqFpOE~gA#BUQ`yA<))glj4OKM5Coi1OhBv3yY#S?C(_BfgFA)23N5T1Mm+G_#fUG<2|33s$0UO{;GcEq<6t|j|!B-}`N zo0PwX`mYhr>O#Daa1`bLSHLECCWum48w@q#cm+>UaIS(&6ueTw4=A`(!CxqN2(0Dx z`5UX?WCiCdc!`3qSMWLoH!Jul1wXIgw-x+_f)6Wr)G@~LoUh=E6nvS2S19-%1wV%v zMk)O3QE=oik-jEBUcu)pc&>s=6nvF}8x-84;O7W!DR}rSMc44&9eTsD)<8h|DfQ=5h6cY_)`>ofr1MZ ze7S<_6?~V1A5n0Jf)6P8xRJ*EB`UaB!B;5wMg`xk;C2PSui%4-Vby_uhZH<~l*pep z9-fLAW-0uej93ewqhPP1e}f`_QNgoUhxID{#FE*DknTgX?v;-hitMt~cR&3$C}}+6~t`aPhq<{+Xg~xc0#H zK3pHbwHK}r;ra-!kKyWp>l3&>g=-&N`{DWwuFv8603OM#5pWF#EIuPbR6YKhE76n@CIY67dj@L&yXDdNhLqW8*o-g%H*LWaqvWC%3~-hUmQbG znc}31$}|)}rlmh+AOrA&ak~E-!huXXo+NdsG7X0X6qz9o($CW$4pH>=)l2HZa!MlY zoQe{Qzln&$S9D}bD(MgDNgf{66Hcko8#XZuf+ zNnSta5v7Va&ZY-&EL)!QF|hF%kYvrLGkOZ9^LZLqJHQvf@!J}^F`W>RddLjgL{Q{E zc47=dRjf5g)RsqOjJo<(gL>i|i%}_{9qEpn3Qc}4$A7R9S^UJK_CIm#M0vyt>0Nf>i*cEu0k8 zj-cq7hSPVNAlTr}W6{l58Z;j9)1okr9Vn99&r#EE;#$%z9tBm3SQQR91u^a0S=W))M zHIm@jDkD>zWD7_R1L%8j2o>X@G-K4_%v&H!e;~~$6|R=_N30Yv9mO(o4Wol*1#NWD zb3&9sJ!)r+Uw`0Fk?Nv!SZ|=vc+jh|0szqhhzP8f?R_sgLs>h9_Vm6Ed9($E?*@I z4|6((nAfClImy>~l>^pM{mB`0z};35PjZ?H+|!$%5#Zu2m`L^Qrs+VIq*FINkG#3*Ss~oGfl5gKZ772zLOO0cs>e32@K;>5 zfgat$kdHP$BbakGqm)7l_XK{4aL49{V)8TkVe<<$2W);8j}3}Wp4S5S(&bu!K<{fU zK!{G(jBI~Pk|y9uOSfuzUDcnOU#4@UrekUzzZA>pT&MZ94L;L=EmmX(XK6+z^qr%4 zNdtW_AXSd)bPR=oe$jw$bchCwem$XqoGeHwsV>k!0rDC;8=;(@9mU%ji2HYQrdI$v zX#S}bJ`F%3HowO)okug&4-|nbGgTyfm<3~IX9Vb?*D_UEaD}@vloR~ z7`q=|*dPkx99{862GH+4nOC`7Xz2McsOJZFl?}mz_%H+R|DyYB2nmVloM)?^fWe=x z<~ln-CS1G+a8*ais)FKdJ3x%ClT|jl-wxo?U7X^-7*;VbO{+}5w?kEgjtEpPI^0f& zal#5@qmw8#BJw32z}EZyR)x?e1ES}56`FH@HGuH%tuk@lP7ww5OpPIoB3)EQfs9V^ z6d1|}Kj-7rfvy9=AOBH4K>!*$uY%lvzs{YY!JWVGBWU2Dga062wGAxtqD`&`rO!cd zSIC_WYF-B6Kf=8rQ0`X{9SRnM7h333`fndlZ5Wy2g9u!WR@S71s~BMOF;Dpz0@vnj z{|y1{N#M5<0>xrZ;CHH|5X7$``a1L(92!bbhMWo)hWtNXa8ef1X<={y_f|;m%Y(Qn zM2YlIXh7tc5IquVe*7wQe*84%V!sbU1CN{!YCNOYL4_^c4Jth0N>JgEgF%f8Hqkr_ zl1o9&m!NEvtk~-n-UHzq62fhupy2RNQ10rF|A%`BEz%iORvTV7VVyYb6l-bM)W_Jcp70LCQY=(gn0~3MW+g zzNQ}Iu9==A_SoQQ6?iJtMT0w;V$TRoBfg>`CPuNJsn_M(lX@&S27~cZYaP-;B7ag> zKAi9;CMEDNM~leeqbEM1-l_W2KCcVuR-bc7=r> zLBOJCSJPgf_=ZHW1Dggdy20(a5|s8$(e)bIktd*S-}}o&EIIJ|^JmoMp~W4l7}uoD zL_q@C*gEI?A5Vx_X=_1aLnLLm+n{F&)dEkv#)yR!JEDPXrE#GyKC$py3%T@6A}|iQKdP4~Ti|*T#zqy3&fIiu9;F#p{>7Fc zp}6lV{samhECfnr<(;)~W=`gUEV~oD#m0HTsVg|(w?Us29xp{Bp*v{t)frpTrOXh* z=7Kd_CAbIG1iH0y21Hi@i_kb|?Q;E$8;Dx<{MBIEcW-dnl?Pu6r~?199`9d`V1dKw z%!H}HTbW~p&p!OW$ugww6^HnHV^t&l^zXLbQe^T6kFIed5~TRgpj zg$?)bs%I9L@_7sV5-)WvmK84Lnnjh!c$3Fxg-UC8Xb(!fJO@?W$GLys+rvF<`#qmw zUbHmiSRz6Sr_7S0q|P6Vg%BAwv+=1ob#@xF*a2Yz2R~_9h>eo>4*-F(Abm7Y$^YQnP`CR0YNe*e05UOr;zKV(FxV6Fi?CPH zh#>nNU;1$W=QE)pp-Ag4ismx$3_!QL-@hVs39u+U4mqk?E;J*p{p&1(>2r$)%{k@= zlF5ZKSba5~zmisl9hMh=Sv$=R?adBD9nW5k@OX?fsaU1=pDSMYifRgLs1)PV=>B8D zFL})=D|6Ne$IaX|sAf=VQ2a(LuAh3;tJ%=gwH%`LB8L|qvcXgkOa=>B%@#blU^>>a zGH?#)&2)IYJ}5kV9tB3OV2aD&({f(y+d0;{;5umRkm542YQs2!nnRx%u^J4jRmDF8 zk>Ofa-H+5`t*Eg3CpEprMDTg;(1Cf&4j$CQKXoE97BYFAN%LIW#Si>v)RWGQt+nqsk2U)ME;9m@Z{aQ~5gTR7| z&-NLh3folZ=09j;l~!-A)w9@cYrO^DKnQ-co*#iZ`3^bpS8ii}+IumS3xX@3f{AZZpA-5QeuESkPiI zli)j1HCAWn9F@uEjoJL0Wjr|l7+BEEm*bdL<^wH$_bEO>g)tv36-PB}$N6}<|C*g_ z@LenTmQuAXtxj%WYgxhxF-|`iBTJe{Rp1Yqqz0|eJp2Pb(55a9Sl-}+U{qJuXfWwZ z-}J^Mr{OJ8!z7mht10-tL(u5-??M>@!Eyxy(AyHhh4{uva9Pmx7sjc(4U>xuExn`3 z? zvLT3mfY;ue7aG}c6UZw(aH9e8ECk|7f>K~9gZpB*ZQx%WFt!Iwuh6O9uaa>C1w6t4 zZ7^#f6QhQA$KYe5#zZOdU?SL7SsaW%Pkc5=FX8s!?~+s8+NOq%N9_x@$&p_b@H#N^ zz5ciO{0#XPA97%MpnRDJ`4!@o3i$~VA#YL=m^~@c(diEc8}4wI;)Dw3 zpIDa}%t=j~kyD(PKc{d``kWl`(R=wU9t{#ip&#=F(dNr*d^F^A;G8ZB?SCwtKL?Wa z?_$fG;WwT`2;==(4yfVT1;!Her#mOF5T0-c(a$T+$u0;XLsMacDlWV@Z$?4zI8ZNt zMkbf{W3;1Z@UI0{a@0>Cw5_c50H;Qi8M$S0(ywro#v8VWN7031;U0GqHpK|Ds>tnK=AquG9CpnVh}CeAZWB; z5M9N5K{SG-iAE05)1^>UW;SGiny0a5&R!Ej%>=vhr*z3J|K#}re(BIh-?N`(q~s^!Vpm$T>}%L;QGj=pjf;V0WSx^ zr?usc9A72zg9~z1D&M=Y(kBdQl9mHkkm<@G3TiW))(m=qy-IwVvA8(b?t%T~nPSHD zk^>MTzkU?e!Pubn0O6#$_=^D^oGKr*nwh~pgc<%ZRtZ-TirF+4alJdv%)sN+U-&cE zYf4T>DbLW^=ba5UbCj}k$KG+_v9F!Kqv_tpZ!WctyJYUbC+1CRn0oQ9k4lfJ&iKW& z`RYxN7rAzPS>9oJ@69(Co97e__;dM|$UGeVj|I9z@pIHMJ{aQRS?Pg1jrFHI+_ixJiVdt|y z{k(kdqpKEPaN?)Cc5j(={m|}757^$m<%5&PY#u#x*y`b{zPaJUH>Pg4JY{=t%|90Z z>%2F{qWO*T@Q@;;EzSnf6ytpZCuZXYSeF^6KUlU+nFypRjXr!~=_yH%y!JYQyWzzg_p#b8#;}bXwAj zXF48o?%Q5jwEp$XJ3S-Lxa7lUF19o-IC926JwMMVsOm0R`P;f>qi;VwyX0Qqrb+E> zUtM?Gq_`VA&e;7wul;E1xoh9ZsI<wr!4ZhDV$Y|((`LpK^&Gh(?4NSleLtMD$bHMw zE2o`)(b!?fdH$Am!_KO>x4u5-rt`j9zy0nTBVT;!m9mTGU-C?&=i}J7{`=uQj~)~G zop;hQ>vgaEG=1zz=gr(Z<@}#lKl$cGCtRNVf$h`_?!A6UU3&9XUmV`>^wN6=T>94F zr@wtB{j8f8xbFS2_N$3?QzyK%?!~SH2&y;4EKrL`mz|(I-XurqnE%)On$O z^(Q;O7?}^BluSIm{kLb_muJQQXViZikDE5TcJ9!v-!8iP*xfBLtKZw&{P)>EWf!NU zKeVFY_5~-ddAQGXttIQOD{9aAZNs!zUU)iXM^xUlN8&eT{=Ma?)-Uc@()hWn_v2}v z)^qM`8~;w^f-Ozg-97$;lTSOY;l4k9e>=aisr0;UuP=K1+R0;&-Sy?ZNxS!5n)&*~ zSii4+pwqgD;_YIo< z#@G4rSKK+}@@skqk2!zgfcJL}eg3NTH=eZU$zRud4^=$&L|@g8dq%Iyy6?7A|II4f zSM^>$>)xC^SKJ-m*~M$Fdu7f|wl{x&>cqEVJ+oJ=sJn61`8{9FODTBx&l8?}va;d( z_iw%W*y|qLR9@tJ?X4Rw8c~1BZcpW9>1(#ns{QrCukPL1u`MHO!e5*R`yi4Cd?`Zj-J?>rm>c7o+>A0HKUyD9|;@afqtH(Y3?WBEk61IGP zTuJ+j_uOi^{gog0>>hI{|CTFWIyR*@W%7|<*4?yr*B=KDZ0=k7)`Q32{6W&#+utA7 zx@gMp$FC{f@zFL*UejG|C6VX4NA0YR$*(WjWx90#i>vlqHh1T!4ebkC#TrJuEUSVZg4t?@BSPy253j=O#zc5;{X`=kv^=9V8bbn=N07G}IR(zbKw z#&_nP+H^4WrN^JIh~CokQO=L1!{=Z6ZSUT_|NiRdNxz@+a9+`!33p9fR~mE6&t1jW zrT1R_>nVS0?Y(~Oh3V@LX1$d-@|P!X>Z={{)#5pOpI*4?r$^f6-+1QcGsgbs+FkoILA+b!Eynq1*h)G0j%_fs%AOj%@$pk^I zMxos(v`bprwMyGq*=?Y@wY#`WTDFZ!cWLYPr>@(jyY6p8%m2UerCV)jB`!9*gn?z*Cg7qA+KL zN7wVSa}XedbF#AwJn$>Z&&4-=>QZWJmsj1kzHIdxy=r4+_3APWA9u2*txnanfmEk< zbh@UUnBmg4v-=;}J;>;oA;Xt2Rx#eexR29)h24L}?g4iH2jh>}f0)rZQ|3Ewnk+{N zV;1|@uzLvQ&0ec%w@uPC-$93V%z^lgn%2hd@3Ncfwfh=P+spo6VoaN_X`5RUw5R8x z-WwCN``|8oG(r2nobH#L|F<~)dG`NDc5ilT+C$%TXdmHxlAQAW7g4^hZ#uP~a=wpn zzTcXQa+D-!VNSP*~3JZhw*+6|0=t`%|;E~_4_)%ZyDF;X%7E4#;YIm@aR# z|4z>59>y;)-pF*hm2r^M|BCSoOs`{%-)H;}#$PigPnP4_e8%OB<&2vdckp}eVC>^^ ze2?)7F86khe=p;oF}}p{9%J|S7~f?7Nr|!@G8k7du3@Za3^RU~@l#x$7dgK~(2eH9 znT(Hdyr&p{%=jwfH5|{&_&fHWhxvo%(;UWMasE@LNO~<|^fJ~l-p%-Dj88B=$M`eG z3ydjKWqykpOBiowY-N0q@iE4~V|;<}`%M3zFh0U``52e~O3Y(4U!UdpZ!)?echLMg zhjBS$+5%0ht=-zZ<&M&(*4B>Tnv&AimMx*J?76mMQ=mE22)}S}cQ_)bGPtEZ*wMs6 z#o=&!sJ?@fRl(7+b#2S)-Qi$MN2s+$dT8QBre|kcTWfnb*eLyP42DZP+uMUJ^d5Sh z;a$<*+ECosh}Yo-RMz!@?Lk#0nMC?m-4SRj>D;m<*v=8jV=Xdk-xX-)vN5b~X=rT> z-cr4$P*t_1tuws3y}h-aJ!-e?2<+ZsIzlamqa)nj*x6>3k5f^}P>D@=JF0AivfE06 zwJjm89X*wYTG&+;lqDz)G&k1=8n(+ks)Ox2LM?%Ckjqls+}zr*u60jGI7Cro>w#>+ zcF?b*wS8@ipiN7-xIGx)@Uq~RKxcD!eW0xkEu-3LO?xnC%ZLheV_-+HEzoF-yp{-5 z+7wXqk#6zE)%0?Hlf}EDRlP`fmbJHnW}>*l9rb49ul$O4ha%D{|B}vdm}ncFOL+i9 zG`(*M?y)-8w{~^}OPfuCi4s&bw6`{cF$DjESmB_gpw*`;9B63_v^QEq%7Wm4);(4) z;@;*^TYW2{TANyOHCjawgIRAh%XvIwH~Ld4q56? zj&?BQ&dy*<1KQ3KryYY(CzC*xX>A7+OvY5+6&NJY6{Kfn;12QH^{rtVgCd6;^fhAU z$gakopm;}gK&;s45_;@sJ1& z6cyjnKv7|`pG0|^?RQICBiJ_fxFLos1nmeEx3>rOsBSI1*SBK0F-BZD1#Jp723sZ1 z%Z}N)qb<-LG`v*?G?nvU=SbYH4h}gU5=hw&qZ{q@u!LKkTKTirERAIV;nHKmTGNg}yk5v0vT4mAS>n=Wh*k6g%o)}hi9<=$X$dnM z+0&KVR39htdhG$~#h?Ik^9c0m~=ax+Vd{H4E9-H6;b zwgnnOVRO!rajm^l`ozdEs-Ko)^pde$eie{IR__8QFxBw#@ai3H;XT4r zX2nb-lYt_LZOEDETo^|q-i*#_BWhHq<*Yi|f(_wH>KXDyNNKzTQoYSnFm#-(tW6Rp zifH^eVMHw3+n9cF5-3u}3s%z$HMdc#h~_qYjpnxc#K~8!eImqkBVAQfYiDz#Ad{^! zCIgv~(JkY=g<|{BZxv4%X{tkEHR%|BQH+RE++pRgTLYo6mBUOoP2;VdEHlX@=90v8 ztC5>%DSaaF;$xT>mlaqW%%HMbVGVKQwH<84{6Ik;8GwNbIkgUxLuR*Hc2 ztE-F0mxVp1%0}knFD_Z_udS%uSiP}yqaWqjP!+Q@abs_+--a%Mfmal3yctErGqR|y z$8v3ZZDX*bp*_@wURs-%TN}(RsC8Vmp-QyKRXGKYRoSMqP_0${t${{=YeS$}PC(=g zwr{B738A7n5Z=<-z5}D1ZH+0$Z51pRn-N~dG;2&PAw!Vth{~VFCM8YUUL7I#$yJ7U zk?{hRE;`p}K}{7H^|6Ru5d}w(5me}hF%iW{V6UzIQVVN{tx zHZF%*dmg8aR~W=b1`(b-L6x>Pv<8e>E2{VKc)KYSgajKEs=9xi09&tIyQ#R6yRIeM z<&Y$|2OFz}K1O5|CtkQ63Jd5Kq|#xun0K(mZI2_1t4g&zBAUIwTS^#b?1-qmJ$dA- zR6ma~Y*4+0goVXD=35mrqNhj4p~h33AtfcXNQ_`88Dv*5#E7Em5;w>Yiz8y#)D*G8 zV&)tnpGBmy2o%-rftC(hm~16Jz$ysHQt<0Zt`kaA zLxxbifKf&SShT4T6;I=7CKp+hG;7Nn7rf=<2IR{1VJLQTOE;`=`u1CUYr-6 zjjT+svQS4`bHG$GAXen89r41ARqKNt%6LO99pPcTR{8R4q_ecOxwT!I!3_3MA<#Bi z3~SQ2EZ7!q;`lHtYVr14<*$gd-zvM%*l*P!$-lf|c`IclKL6+KU;GYcP*^JE7fi3( zX>#fK#|K*lv_cUooKatG*i%BEA&#TmFoA3I4->!m)Ygj1v5V}Q)vGsG8&2cFjlCQ6 zq5QC2NZX7(AfF+R1g(oeeQIkPVCJErR(|aHseG=c3gPnx_F`B+l(+SR{79AE5U%ZP zxdUTHZLPn|8lH{4I`r{zJ?CJr3)O7^dkA30r%yzdx$waD5=mGMhHDq7jL&lXQ&Gsa zJBRB?@iMQ}v?AaMUDKXKPDr6u;GaGp;eUEh4*p>#pYUg7ulB+_cR7x}Q>yj2(|yBz znsz){^YyPy)I4rSNxz#g!Po!F$mc5`82Mg%vLku&s;Sye*!-*Ah}Set^DNQ2DnnXt zdxj%<`yl++THH@3A>QKRCD=Q#^CpK@y~J^01w98et$G#kabQNWwsX-`>3(gBR=o}B zmm)u3qBec#Bid1rp|rXVFyy>J9iZyMY($hT(v)Gf;$s&wJSAjm+5*jR-7T1 zHmvffLwud$$H+^S^G7JtQB9V!*okt@(soV-PNZDccm8~2?}!>VDvzk?Itb z2iq*tS54P;rog=v?#T;${jZNaQh5OMZgxzW{8iAW1n;LjsBEj?9{T!M=aoC$DMZU+ zmsV}i0W?!}jaA3%61Du~G+#f6>LI!}qfN$})~ypCeA(m!q)%AlyYoKe;a*H(Ux*4@ zgfJa-vbLF(HitnQtNS6iU$eB=A-LUW*JoyEp5!cFKj<}MD*mV7|23C$DR@5pbyw=K zU$~|nd(}1l*pSP4Y?1Eh*`BDqsZWAK&k35;CcqzYugCKU{C_;_v-4c(zW#faKc1EUv`jpM_S7EP^z2C6z5~zy?MR*c zV@KLeY1zL140;dchi4<*N?-qC{Es*iw*NTsv)D>1^2zB<(W)2Y`InA_n|}GpY4a1% z=f0Yt<#ZwaHF(~qCEoOBD--4?xGny8R{p3{j-HG>P^TPc!c95%OrMYXi1dq5pAs$M zrkl&0^HCS!cNOYVuQ`REbB?IH@V^?*C7Mh6gAY|6SL5062Ok*zcsBgO1BO4Il|Sep z-w8UTIh{96Uz0XJ&ExAosA-;TV1`rMnKQd*-p^c)WB=)xvVHHHBh?P@4Y@}gQ@6X| zz7KRD_bO+~_PuY6;Msj_mF9l!Q9O5nM^eFKstr?qHB$XK_)Vj}#dJLTn~~~o!EZYJ zsEmQPMymfF?m^^3{|{|0mA5`!lusE1NLZy5CuKbGOsk|L|4r zo-gIPd%8>9J;RS_N8h&eb49D(1kJM+^y*7NKXtgbQ~xTSq*X74-#1dhUyjM!e~3Be zLC|tC>b>2e^}{n&#E!Q65q`s*6>+tuj5Wk=uMT6z@yS;z+wG;wJ85UM zwwS-xT^Ol`yq5mdB<E}0o7vrgvGihvu z*nIGiQ;wTmPT3#3(Fch~aBe{Ii%X7`qw!0C`Gw?*^BbS()3uDBs4^-)v}t-T%Ie@T zR{2xhA&jlsH6{5p|81rcyNZ>x5r}gxzK0OUQNiqfc<1Eown z5_5r$vHGlQrkG!R$(jc|JADXgzUOpr|Hkh|sty4&`UO%d$4HhE3$1z4T5`{CAr4kmCW-MAXyr?pSfwwqUn$s8MHK zh~7Z^m#|YqFRoatXYalyyKu8+#1UqtSRotRf-N`tbtoKZH?e+AX!$iEBN+#_wYP2w zH3wCutaZ}ayF-U{MsICt-lI1Lw}e`PjXJc7x-H|p<+(a`xaxs=C^xk=t?hSU2kSDS zsR)PaL)Z_uM-O$3Bb#hXHmZ93uGLj>>Y+%~-df+;5pKZ-Z+!=LyQ&JQY>a5wM-b=; z>h-~KBbl4;yTg07O1A?-$gZE=0Iia_eXDKF_$!a5A3wA2%*q2Sjst=;K>OtCJrZZ=m5l7)zrZpGI z(rYGGGYp&N=ZMs5LQIeRu)o$Q!y|N`6w}Rm*E%3nx>4zyFuBra0RNclqr$OX6Q7q5 z2zfLr{2~^E^ueS^df2G&gE(75AD{S+4u3u}JgWR@IDpU>?E`0in}vJ}9xKi^IdftC6lvqPLO#3xSkQ2U5BP5^JV# zIGrWB3h5FgdM}`!RF0Q`6rbu1tQlbc<3P&qFo!?H;T1s0l*_V!1;7RD9su1bzvI9~ zc+Zm(y>#}9;;#f!{491)0qTh7mgqf?cFlnM4T;|4K&&s9-43L3lmV%nK8ZDRfb_m8 zK(LJ8Ezx@p4)X5?Qo6f=ly0}gn%g;iGZ24%C}0V_uVX<&@lOI5!k^9>1HDba>)_uA zgeu-&C(%2H{nLS1Q~J{+dWRr1QT%g2m;n5P61^vZRIU?1dM}-Yr1#QUZF;Yt!=W?K za4gYZCeaH4PUM#joD2UfiQbpM{PdpZfpg&hoJ8;4K9qu_2y=lOia8Hrwy?`@olpmepru(pONT2 z4FoIrPf7Hi1PZzX1>GfjY5bvjR5O+V1%FAbIgFl-VkVNnE?Eg4p9}r3WMx?VOc`)HnLXz`B!bN;{Cmu*laz2!JIMMAKNI8{~ zpO|@aCd!$9Cf)74kbW^8Z=Zc&Hp({p)a)eZ8&{ma0zPvN%t>-SIrsQnxAUR-hvz4_ zo}d5H{4?{Dock7ZFK{~#FX&x>xC_qX`QVj@u1s>ie&rh&5FS9Iq=LZe^DR8%iVAHq zn4Lafz(2W_-LZ<|<9`j?GrQQG#ctRMMEHH|CcdHgr`Uan-Pdvcbmo`BE7^T5=hwjT z*Kqjm8KOAaS`L4d<1b+MH`)Dhj(;b+ALHL=U2h*Acxc0W=j82cCX_6hS@!X-IKU}uW|f&?EVeAzr*=|ncc-4 zeu~}Kv%8DkbY}>C8ra>&?tFgV%@`Ev<7W34*?pGde~;aN#^KL!`g(S!aQL@5{yBEv z&f$t*t|vDJ1Z8I?W$QHjD>>`8C6ILXu}q{_auF$cDL*C0 zU``fpC70dAZY3xE1H02OSks4!VkwSx*yg_7=Drq@t?{3*g@4!Pe#++ljLpp(L5w{V z*fJJ%Iyv4+WGpnJjwD5#PL9}g6R{me9WIb-9^+s&gmV08&9%!3eSw z{W>Hs(ueY+*VaL3dyG7y_v^IcI3R_HkA1(6%7=@idDMeSU_-HAX9rFs@u#-7thk!% zMqa93ZFwq&+^?ft*0G5E#@bIbo9nrY6MoEAK0C>4YjNl{px#FLN0#pZ4aoRFrWGGr z2if!BAOW?t^|)Zc{MhsB^UAO}5H{6^n^-tw)OXbVP7iVUdO6_$%18N;e1RsWPegHZ z;equDkMR^))@(WaXi6SLy61tEh~hnod2ki57mJuaWQ-KXekXX*+D5zwYiC+tP586w zqGM+_Y;-7okq+Ac>4#Tc%-9JVTy^H%ld9Z_^I+H4iri_iqoiwj?gXvK$MG`nPOIvM z4KefXDOK*|`9{2C#9fj#DK8muMH;tORL5yDim_Kmoo`hY(0s92(BX_~(^{m!2vN!DodOv6+>|SozzWVkqxKIqeJnhfuE7f|2 zlCJ?#UU~Xgm8r7p$>_&HX{J!*!vi!ga}$_xl_f zKPms_fy(YFz3oGJTEBdk*7H%MSI?Sbz&n`K<<%Y?SULFEeJi0`Fv5^$diP%)s4P#7 zOn;pvj*xmEE?os(fX7 zA8hrsj5h82WJ?@$YES8Cf5-ij#^i^!{lT9&VL$rF{gnf-tDdEOB;XJCb@x~P3*2Ov zBll_8Ua^)PehL4|58W*t<%eBX>-l_&*58$@^_)c;iu9r$NQ3=>PLChp*;ph zMxG)!J$E6@>QC*`4f{CRhi}4OK-h<0q_)QNldf!&um|^aJG;mp{Mu6Vt<%V7=AO%E^&8NPSMEJ0T) z%e|mQ-LGJKL)oZ2ZcXwKg>_MxQGVKAL$oA6MOX3sb<^M4mhapZY5$aT0>2Bjk(N&5 zly#44Ird}pVP8as=H5O)`kFe>tATSc`VD@;!~AKEwe{hmn@X(tgY>5xhBsI9-UNfxod=r9aQ1 zJ!S11G9CC>g^!FJ*RaRYoulZ6(9Io(11UG90)rl!rla&hMM`5&!r3hH$H zS8op0x8oKHvZ9g2fh5cj?4oz#gaqQiGARNKLx{4$D4SoPeQW0q94-?!%V10A4jqTh zV8ICEw6KZ;lS*e$L@>iP!o1SDMc)zJ(b~R;-UKt9xO@RtFfzd6t(`4_U4c-uIIj{N zK^ggM5sP(f-xud?m(eMn(3Vhx9;EA{^wtJp%n{YHyo^q8!0cqphTg~NQ6RQYv1v+? zV0C5X#>yM?TQ=OZVdJeEBsGPfQE?)s-bB_)wt!;15pofs`kast5i%5cvA7$EpAx_CB{+_}wi5H&5;hXVhj0;iu?_;6y9P*3x{w7XQh(JV*O5Y2mCw(w( z&?l;X$2pwz1^7gzCw(z}G9^T%-_7BiFe?0R4!;}eW0jxu+VqK6J`DpcgxgE{anRxjA%!Qfn~=iKgWlx-hD7hT1FuKC(?H^@Qxd%cK;oa{KuY(d zMDHPXA7pnIa53U-23`X-a<#;ol|ZUzp+v6-xDxRe1BniV6t1(IkmxW6h{<$W0x%nR z9wP$L?;LOt?L|oC8Duvh)#D6s1>&6oF2mmdkoqkl#XrezLW+N!{poBDxk)dJ6|TQm zqOcob4J+(MKriG;VTWpy==B3JH~Y&adVN6D%fC{hR|jI~@h_0*O#q?``!$K)3mDAM zHT>r#dI#m;<|n%on%YbHZIHk}AkljQh@}4G61|6j`12o>=nVruhI;#f)DGnmYhFh8 zA-cZ=B>J2NLbb50OQxGt$LM3!88ya1#K+^L0mfd&F2*`WAEV9)5a|+Jr=8C^pNGBa zpz9FqO~+j)@IBxCB{;;X0UfC<*qZq|^9*GU+(J z&m|4v`+U*`eD8C2yYV)6FTO9hFXH<^%E1(;vv=|l*tnjYa(s%@d1&fGux0g5J%aD& zrYgPp0W^x$ZuB{FqhXZ3s~*HkMFT4R(!&%E_ibPf`s`)*4PXxXY-2awflHrHu=`GS z``P_Pc6-@)Hc z^jk+MJ?g0BhCQ5r2j|yFZu~2K-7Orh=&^>}mi$(b+w%TQa--}@U$qzSp9VjbUm~8Z zc9YMdEaX;l5aeg!R&rApyOo^v1jko$*;m=ElH*_C_%zN?d?iOsh8s@fbJpg@e$9w*>c`gjn~>7#&bEbPOo|Bqh0XmL z+xzC*(vzLhn*Y~q=`qGcgn!4Dev-}otS!IAw)AA@v%c>qHaCs`*6@F~x$SnPyKL#( zZ11DItoi-I7QfS$zp(K%w5faE)T!@L&S6I%mR5=4ow=5Wk@&>2d!Rh#8Sx0S znktQ~nR%d`N{6d^A}+j*FtSBlRAeCq%z?PpmFsG?#8Di)I^r&2Smnfx!J@XRC@8e$ z(xCb~gYA3)8&Yplw+JJpFyo1o#=&oOKVmKHeYkh0wxMZz?G~(Q+1wZN9$_i-{;k>1}Ve_;11Wod~tm zYHKI8hn(Sre*r)=>nu3-#Pl@5QgbP`B9d>UuoK%^!@~`3*W|v>}aFeB{J8qYE5@>;W&d18rS&F#PW*q;PL=jMO&kQ2zUH^E8@9zi z=f8VM#`Up0q`fBd+w5}CI*~pRMZ{WTRJ&JZqQhu|If(mYl7kL;YR}JeXmx3kcCUXy zIQ?UNtW8CnYk(8|tZGZ#>Bc#6w{Ow@dvTt*4!Y6?C(eR@ro8Y0=*W}XaDE%Q@DOyC z$qub3@lf&b_n~i`1(ithqLLyym!7i7S+olJ=cl3HFNK@p{Dr1Hh4oIl3t{BG26iC# zZeRZc;dwJMaE5xZW8b`9oU_8S42O=G^r3eB_^K{#=hZ0RuVF*Vyy&<&<5SvB>^-Xf zjmss@-ntJL55taf{DC`t{p*nTD&$?_xPP8;?gnRu@}WPy|KZ}{pFwA;{H^+BAIf2M zQ#l+5i-(I5pU$n2d({GMC;DeK)gi=nxZ1II9`f|i+45x2FVo>HO4wICycp%_LOORC z=hmQiZ6exP!?~``^S*a{dfmeNKsV}0Bd8n*Z9#?Pi za4Fn%?1p$O>~79qtQ&R`tu^6p)aKBUb&r245r80TpciXj3CeK&t-3h*7?Wc=Q zQeN&UzG3GN78TNS`2uZ5vfkCd^lsnhm;7MS{+qCka|*)uhn5shPIOe!^O8^cKA+{7 zvVVV~Rx~-;Dg1;x8Md&guByot$1!<-=2Wh5$7H_clu{p!=DpVKwmv~-R1``R4o_aOXk zxKaB3Y=QKfkucn}uAK8*B>f(S-^bT-e%DC9s}hHswyop*mPo&2@VoOS&TpCY%bhgb z^q`;f%awlLhTp^MIlltwSCTZ`bZi6XcZ2l%A^g6*k@NeQ^s96aH~p|ep7ok*+F0uT z4gUXjv-JO{#lJpzxarkO>0e{m;Xh!xXy>PL04$j%m#o4@h zuoo@kb#8=`TktE|Bo#ItD><)ddc^9M`HbtEMR?jK>oIN9tISlvYL(ZO8A9EV+ zGcy33OPJdHMysm?nZK_neOA({HGsvpQ8L{ znBifHKht#YBX_##K1A+WruzuFXCKAXAncbk_EG=I=+fSF&^goleMK4H(sn+I@wID` z?}@re2~P|q`G#kG3if#;jkF7ATy(ri;~$-2?AumXNa@a^&xM^%VLPO=s6XR74o>52 z;}wZo&)cvEW1cwp6#DQdFb1mrd==(}F1U5r>m2CwR3;7XKG(;iY{vJk(5m0Ls|I{@ zJNW4n;H!^=zixxwcr)yFN#gA1pz8{pv7B|x$@dKOzB7_9{p6hsZ#lL7Z_(ZZ5iinj z$muI8pF%3ZuF8xja2Lz}j8tblrS0qmE5TCjgkqHp-2w?~fCdyDv;0~qt^ zor^%y#}9(C;0(S{ihICegYv+CuD z3z3G>%%C`qkrCKHVSjXKMT5xW?A2P2x`zP*Vv*a0w#S^k2zg|>7Tn~%Qk&5<`Sd*Z zWUXk4Yr*7KUCB44Ow)?q0zbTpvepheb_Q@)#*oW>6U9kJ*w<-Hjq?sV+e^FzK{WE+ zX;&PxzF)sMQcdrm`&_#5p5#Qw&8y~WJD-_}x%NJ7I^@wJobxvP_rkv^h26M+=QPJ_ zN^ur7rJDW^P`nwY+lV&<@n)O;BHldHZN!_0cneK`5$`I~ZN$3@@vb%fMZBe^+laRm z@s^wZB3`cPHsa+XUV-T^;@x1njd(X8-p5RT5wFB_8}UjIZ;k0M;;l2?M!a>1x54xm z@hVNX5w8;QHktk+-p5V15%1%O_a~;mh*xjAjd=Blx5e}q@wS<6Bi=T|Ycc&rymr%V z#A`>qU8cW?cc|<-4vm{b2O+bQPHHF5F8e%Dl$(8^j$OU7JjI9o!<$7SnG4Yu&D0rrQU%q>t&> zi*<0<7frVgx1^8h*M+ra*Wa3M4Q`T$wC|gK*f+Ry(DmmJ(;Tm%{jB@pF4W5XaBpw@ z4rHC^dqsZZN;vjgtbO0Ynv>SV=fMMR@CM1!$;oBnu94)qt0gX3BeCd4iEGOx-nLd^ zXr078H%WZJFY!z3B_7=%v45k)A5=*E>CF;fsgyWeC2$Vvf;BUaK6bsh5V!<9y#Tlt zh_j37q(gvCBmDs&WWn^KKoB7P2f!J?SAbA)q$fj;O9d_gk`7@lFa;O_qOR!=0Ac<} zKMExI><2)i{X1scjWD@-xvEF?R&j6T8E=tb*YTACDMMty8Dx!sJnj>{uA+^fPWYMo%na) zUwfj?+2ytF<-%Un7p(V|(D-l`_sIMVvLC(UXRhL9*dZ`YI}`X5M_Thj%^g@+0(S}A z#ducx1=YF^`3d>jy3bDW8u(4zSvEBCrOIyHN0_N$?=J2tEQbs$$11JoLEGM4?QUPh ze!D@wzl_R;et`Q}%)NL+bpMVcBloP!+-nyro(BDtHJt{XON1Nxnh5uW;t02$X4d*; zVw|wouN(66dC~W9pN|-mqw6^|^5=pk-L#(>clum42eRlr*sJGA-#(CzHPb!V6Zo~H zp898!#M+7KMYN~!+Dd!)r;~i0iFFb-1KjKoV})FEQ`=Cul|ER2q<}qvsx10dvDUMyIPuMaS-88>nY_RFzSAog9nf2@TZu~w6SNge zSGrP{3QSDhCNL=#7jMBoIrUY6lT()_l6z|EHi6Spj|rTf`l`U0sY@qO_^i}z0bCz$D!@L1^jhc(#rrQN6;Rn~uOWA0>Z=GB?j__# zd6at@xsyeD5uQVCluw1{lY46Ft8a7qB66d=%Izih^we$2T}*D2U%6M4dsgbJ!<>FC zxlteGUQh11soRwMW^$u`%6$vDuS|XQ0;j)?+!?8_{+iu2&LX<&(rC9`vfa9{CdXcv z{E)Mxi0+5O`Tgq9B>C*4XUL=EUq{cW^0|wiA%Bv8FFix{q~`&8hP+A7gY*nplb$hF zSKmuA<}M9=!sIK`1FG^g-5DK5{5pWSkK&vKuQk104BmEZAH@1N@V29$c-fjC@hRr1 zn0KvO(+X!#QG>?>|<#S-vrax272@YTKbNkv4PwQnUA+`A>ID1tuZw~fM+Qj_Vq#TuTR`pR$N z*G}P+Q-46uyJWaQFY>!HsfcLy06pK6RHWz@_$|tFKio{aVsd{PZl>QNaz6++)6hZg z&%(`g9E7gnn<&5i-Yc4Snjp`{x$g>d$kQ?J%c6AH>)^@29iP3VZ}BDW#MzW;;$@7X z(BnA3v(a~G!K{Nb9f>z*cwu)Sea>O+=8RuBcCN*`SXb+hqggX#J zbT$C@C0Mcl%z37_uPCY%7?FG*?{#a<9E@XC0n7tQui21ifR9=$#fQPV_^pMP9t@~N2x7rrc`&Q+Zn5)GlcA7wl*4to0cZbO(KL4?D@> zu=`EUfd2Gr;3<0>^l=;XiZv#~<9S8F|kk#XXJj-VGbFx#Qp^$Om?ANALLai8UADJYfG1Fveu~wD&p( zN6d}M&^5UAqmPi@1@eGLTa*U7nYoT7-j3COF<WH?rS8v0c% z|37HGFz1r)i|SPjdQ<=JLS3m|$8bM5)h!uyTe76AACsYnbV4b&q&%{&2>P+)l*v?I zRex>zA5pz6?P=88-kzwVXwSJ5td~u9r1oJnVg4H8zC-(N#*kmZE9P3wK1NGkiVSyC zAM#6nr9KLtU#j|%7}trPH@F{hznRvPA@ru*58K}nD_^@_=L1)tMKdQ`taJ^iqYT!pb1cil~Q&z#l&ZMYqu zyx|eD-HZDCY09vB<`?=Yp4&0+5%<5iUKmXBJ@K9_O)RxLUwmIY~C4PfbJB(XRrk0S>~eC4`vKGmv^gxd(&f>Wqui-t2~+ zW#q-w3#20++&k%s!M%z2M;Z3I@QJUmc6E6Ne=h9~v^T@mCCADk_+^9&3b6+5 zIg4ka!Qk5?o_RBG>A&Jn*A3SuX*<7x^*HT+_{6<)9~p8k*snRrRwMV1^rC$a|EsI# zUe^L)PdWy9cExXKPs4)!e@(J2WMy$TIr7CBecUY&=_Xp7erqJ(Jz4I@(x9ss?Eu}m zd%oO{r8UU?SenZ2?`?0kB@cXFTkEQ)w?#I$*CJei8lKZi=tL1(y?GgBW zLhi@X8svT~?drr~_jb7-OM6W2$I`w5zq{mqEbZrVKbDp^Y1qAA?#I%umiw`^@4)X7 zxgSewko&Q;(xhScH{^aS?J>C@OZyT0z9aWzX+M|yv9v1pu=_{mek_fDYeM^X`2V}P zAItD>NFH{-X70x_{9l9r|Csx+4F8UlVI92FxA(TFJv0G~+vr2McVRX9RT=tMDf(Fn z`WxN9@DD;?V(Z^A^CA5nwUd2p#X?!!+22j;D~u_$z9L!X=N6rVb z%6Z`xZHSMt&@g2#i&bEo+Hmn{lwc_ooG`R+BN}gjB)cW{7%hY zN6)G>tg$do=$iIKJegDJrL?hSPSA1<@?VYjl;M4);GvSELO1cO)J;$wmHhbt+DXZ2 z0kngl8~k2@oJR4kyT$#;Hq>(+*37hi3qL)xXEOYk+%ox*{QJ^+3Z72uSy7yZHTleA zeusPi{!f(@-3z@n#^dUH@f#hG`Ks^59;N_v<*#AwO>rK4proj7&$g2fe&(5?V#igm zaV=W7zvr2v06k~o8Nc7P9e4HABHeW~{^BkixT`V0q<;f>tV15_kjJ*rwnDO%P+Rc+NoOm zS@fSbFg}uCdZjz!5SOK4?e7SICW98^5B>ty`%2)hky&+ia7Q4xz7HZx5%nj$H?69rL;& zm%B;-hrQh034i}$)6?JoRc6W1uSgfD{YBlv9cmnbes9R7z4Ko5dsGh^pN#srn-;pY zJzv4yNk8hwT{LQ~X4MzQ(uItN#_u*A$zim&5PCiF8-9a?=(nVMbtm|WmSn@mHNAZM z>);(4pQ#Omf10#??SS5lc*yYArT-J)>9@gG+N`-(F48hS^Q{xvdD-GqxFtI%9@w2- zl$}HFtlYINIr=SCCA#|U`mDeW^|@K~H`M23)#I$y4fTatjcvGAzU79d?ByOjHwU+b z>6!f7LtC4KBNvX&HuBENq6i(h_`SI?*nUI3N4moy$}1;ZxNsTc)~ys+Ae_5z2uS}u zHw1FBM4o2)eD>fBINZo#g$za(x$+5l!o17dXj)#boHy+~TWakx1>M-a0L5Y(;Hsg#z z946MKAx?HdeoW3;pO;Nc1AZaSc~87j7{MK2ZR%#Daz{ZVJJhdG-9k3K=og;xG<|+f zc0sJBN9}YzOd6|eZ0!s+25B&f91tYaTbOjrif~IBNj#AinE(&x$L`=8WdGK4V^w2< ztu|_{RZsn3clCn&+?ZYc4^5^INT<)s&&j3kkdqsz7u~`(U2IrgHG0Qjj=Bz$9Z#pr zFafIB^g8j3$#faQ?On$w^j?ohuTXk9X_j|5`j4|FpK=mNoT!-;c zkmkJ&=ecT*W8zRFQws}0;6qOxLrluK%sbISWKK2@nkMfM>lnOKC8S82E-M0!5z@9@ zq_p?>adZuqcPA{<<;G}92)tD^(vLE;zken4D5~0eqESK+(=utB60ISio20RqI%+Hx zOBfn;#~z@^vzo|Zp~*Hqh@!vWBkTulHIbcDz+|zEu!{384RPLuAohEjhw|U8yqcXm zItyKAVSR()fB*98?}<#tvVEe%7|1j#GhHSVt2go_nQQ~nt)X`O(jCjX>S)Lz^NDSV6v;&p(?qx;T1+-Fdj1MB zH;m0jE0{(G&D6qgoHRqBCOGLa(bzNKapNP}gt}hA_-NKpkSq8rC!mBE=ChKr zVtxI_8;kYL75U3H>lOGx>FD{BOm`Eq?gvljxow+u(6phVse+c zWXLm2eWRN+6shXp4XGw82-iw2Lk$bbKFb`s94T=<~kpJs6vR3iEjFlfy!#5ELMVm%@0uy;U#1DZ8+q z2JQF8L6IxF(fZW~gf7s0iBYEzA0i39r8rr-r#{#YF}rbVFf63)($4x|Y$BE=%x=whFsVs5v%M+uGNlz*`D5jwxz+$~b~hkX}R|18wIwSB9;X?dPr*}0>> zIjCDz-|y?ta@~6$dzT>#LC%OZhhf+s=isX*CQm_*S}4jXij)O5zOZVyJaQ8c^GAI? z3EI^9*pOt}Ve9jGQ&YVsa&-~Nk<+=AIigm;xpqM>huMWHoNcTr3Ke_g30bdDtSNFw zTT}!Zd8EkMqNZiykL)a}b4R$fO)n`~mc1fd-<(&F9lKx1S-MEcef6l1s((%%9!0}o z#G&0@utV2FrdBhwTs*`Pl5IOXqNy~-<}Uj_53@s=i!g&l3dfL*c|(q8MLv{Do)rZ- z1&syyE3$z?Ru<%{B63;mToEhwKlXiZW3ROuvU8;FB1bMy!9`~G5wsCvUT2Gqjo#Z- zq*%!=6OT42z4rkprc7)sPRBXk6sTR4F!qX0$6qEhZLV+Kty9M%rFx@{ZV~MDzr6eL zKGPMAtoq1j7E>ya8`}fB@MCeSn?vHxeEhH+D|jO|TAI^ZECEJM))Np}j3kBSiQ&tRZ`yXn_HBkEmHM8foVf!VAFV82A)gM#Y|Qjn`EBLBm_A*oj5!s>W%~OxC#gZ=13k(V@QyNYMhqhT{wJu|M4G^Kr82M$#g}yUvJi>7 zkQ`Ttlh#yJ=@ovM`TuCg-%CoTV7wlOHC^bBmP9dU^@*wq)WRw!Pp*WaY2p6X8Cr)` zRTWNJ*wh0;E2&nzP!}4DMngRp=a`6HlY+H`ZHR>`Pwj&idb0x3Gmd&DQrRU6OihO@ zf2gE$%a%YhZ4!^FLBvjWO9du+&Lv8lYEWNj(S_}DR3&MQ(#wu)l%9^f<}M3hZ;D>H ztiCfG#(oToCeT)sSQFY9YcZzxI19WY$h&9Q=qi~7BM*+{F2fcPJ=4D=>pHmv#L6;P zKJSrda+ewYg<0ZR_~(#_7@=~4ayM2*)QHMjX>$o`P<5|x*r z5_WEn)EmZF6?01nJ;2yX(Oge%q#i(NMAqF_CA50>t+ME`!aDc(v)|Z zK4LJo(+8SWX_~oApP2L!p7_c#=(7eJ`qiwZXO@Yd<-G(dra#`ER%nbwf>;(x;SBp_ zN@ZsoeXfWpmCxG?OrF9H%n$Qmy(KOSfiNZuZ8kewgpBp!FzXp?WOg{YIxyHs?olB% zTrL@p{?HtCk9|eNN+%`z+O!EVmw!h@`|x$y4jWM5Tf7ozi?jELBmt@%=F~Dfak4s`N~P6^@f&A9D4cB3Pk^l`={P z8p&Z*bWl;RUaePMcbUuRMhwv{3q4S($WN?pX(QT)oYU0CMC0Bhr9{Af@LjF?jn&Iw zyrMagl?UcEWoie#p|lXfI3Jx=8X9)muZM}DHZyN!8`ox7dRYv;7VTLywk$@TR=`?Y z=o*c+_lnUrFDkltJhly+>jQhXGzU7Ggn(t+xoMFd)Q(NDHIWJn%}c&z$0F@s6gw8B zl1LS5Jmv-a=0heXs?MT<^#s^B1puW>TA_N5IumD9cYR=Ms6pRQWz-Q$V4+Bw_|Bh&l8Df0uOX3Nc&Ck29qmZPVbsIrVsc55i4mtu73Kv#=AZW*EG zH@30Wi(Sw>ypZu_!W*KE{_=a-o;0@oL-jBSIFTFUBWQAqu=tx4iP|Dx$b(TH5n)1S z1jVdnoD769OL)k6%VU$KbEO8~I`2fyWNOPik4ql=xTLn*BNHCdFkHh9#v_y5T`xu^ zc#d*;PYl8dnJ0poB;9DqW??5qya+v<76a@MQxX~SwP?GCX@W2R8AYWB`ACD`cOlAYe(yruwI1|TepV9-cX#h z-Kt-U1Gj-aLZVUIYFJfdSa!!}7&S(d=#FC7TjY;%DuM+OHMOkBVSA&Pe`(BY-5L<1 zLatuEwu~Anwsz~iG!pmWaU7|R-G-dre!#{Q*sQWD4*(N9Nu6syNo|~>#?jZ9r>NiU z(coOW5FasAvc*<007OyZdh19TW$zqafQz~P!#qVj&ZEKVzA2GV^~DDdv^w9W8pZi>lTV~&*JvbNUtu$tJSiZ<~jin&f0WeUbnBxRPIpghB+RtFnaZ?2BD>m>F9;oY3I zh&|q@-UoTtO5Cvx-VtmszDzvpwf4rIBFh$F8jhlgN7p^YzlLVQl36@WMC48#+bUrE zDYpc z-`yG`QZTd)GI1ABCI{K%XZs+-90D#f&!ih_2B8)nTQ2Z4$PUsNkax#`D9i&`FG9qi z{c>>>RyImSu7PFMjTRk$WsM{TH&3u8c`I_1ircJ771v}_C>$_^$Ef9ggtE=5%QtQx zh|Rd;>BkYRWNd*Rr}AFO9tDjJxaCoNxNcI`pwlv|cgL^Tc-eRK{;4KA8za9Tv*p-| ze9%LR>ZhEYq9d z1)=i8x?L{c47C6j59*E$n(V|_dqX|(JK3u|#swQZe3`0K+3>1%V*PJ)*Kz!8g1V%S zGho$-k;AAzn;`B~gME$eIUH4Mss=O*eYmS!rVsIoq7TLqb<2~YkH^kGw3|F?koM|dxo~39MEU*ipRrw#x@rW;1#k?AOm7?ZH+w6ZyMyA3d^-CUGBF>v3V|`quhTvrw-@3`-NY+VBGP zkJ3_UP)c2OXJe%Rsan)U#`+dqLk4m4GH=O|T-`4zPj$)xy(-wgE6^M@*%^nuC%94> z^{RUL8>hx9V;shB+d75!%NjY1xQrpY;-c8xf@SRl|q#uC@wQPSkdS63HCM_ILa51BsTJ6Zy_}D7y zsDdiZo>|Zs_dnS5e8x5><7dO^+FzyoqFaQ8_G=l68>z^C&&4mm<+XyiIk+51et3cm z?rLrB6bg3I-$q(J-+wdv2SlDwIfyXFmxK92)gRY7cVtO|s2^BK)TV$7leO6+g07x(VaXkZFhr5 z3n@{T@z{QA2%{g@2igs6+7hbLg3&f9*YiaQm|z7hxn|kcs)-w0Ef?BEuwK40H`q;U z<1i~3W?*qCjF?GA{lyjaYuULu{A<}pJBS~|#r-xycVo!hD5yFB6FDhNq-@YogOcO; zIc$07Yxb51I$}N+lbe|9DzF94;1gxmG5BTTyUdh`YFKy-f{Gmka*z6Gtshr;SJm3G zM_jp56>RAc3%?KTgr;cJU@CzH+hv(FYNC?0RU#{ce$xWyI+F;aMxILlcETzD16Q*{rH? zFt9`46lxFC4N>u?sR>C)k&^|lDCB`7Idd3VfLId6s8$8u5@ci$YY&hyiI4NHG<6>! zwtp%9;eHnm2AiQp2n9Rz4WS+N5kJ|cq!gkI3n_Gjgm)7N)gEmph^UyU|gHcqv~v7hf7fB(MMsUDlz1Uc(;QXX<}CYp7GT>uTWOgXzBmmwU*YPY)`PD z2*0?JyCQ!@Uas2o01l_FZ)@u~Cu(SK49n!kF)6uOOtCwiN))HPvz0un4jLN5Rm3EI_1zVyipY%icZ-if@LACv_Uvlq7Jjly1Q@N-W1akcgxlF`I*BV!;|JZ8wN zm(mCZRmQtyw()Tnm>ILw*z8r`C{GIJFeuOE(WT0fY$dd7;4MDO7^_o7 zs`jD;ah_7fxl=brDdo6YJ%Lj4v^sI!&U?07psalMQP9@-%BsF2)Drb0OmQv@A20Vs zHikN3D@Q2Yw-CW~QgpI5Rg_v2;*M-Q&cVLb7>p*ukqM86!ce6|hH>6YZk(UtgQ_@e zB-T$^n?em>_}$|0x-jVLRaB7o%cgI1HZ{^4A}FsGjR=OmZ=Ca=QR5Z7h~{4i{X^GS zZMm~?$|bM=ilQ7j;_xq_!t5@)bo^^wY@?16lgDvulv+c|N?GUci0)umTxC4EYs4-Y z*^~y@>aVz;JH|xLA@HIqe+3p*w5-~)!c&l+o1Kd**=W+rB2rWaceI9u+E7zREL9k)uOn<=p;BwSU*C$tXDr73jrnQ8ViB{ojmGse?(z8t;n)3uUNBFA<}pEQ?`I<)iT ztunBU?CM6y*aN$?J&$b|SN$`EzN$lP-5R^zg5U>}Dbc8r0Y2m1Fmu&e%OP)ps1a+z8;tPeEAk+$$t zg6bA~(GTS`Xlyzeg}dJEehP49qzY^lV>V+svwXP4A}*=&UtnZdj`#Mm@2&a(%K zvkY2ANL-g`WnJzVvwQ_$z%#bFba^e$8E^sW{_IDPup}E zPUSllK;qbON;pKB>z}<1ePjPrx zoba-Fqo*I>@H!cdTT43VTc0nV-5{RB5lz3$1v30`K&Fj7~vPj2>0pY^>N?dJx2KR9M0oZRQ>A~ z$^6d%V$r|wDj9wuPI&g!qo;Rs!#s~@vHI7UF~a+1M78e_hi{hQQT6j(D+A)S zUpI$8j>@AcqSAYo%Jc((Smi&@;l!V@!UwLC=?|mi(_-|G+n395CPP&Hx;VU0MvE%n z2@Y?j_s7V8@%1v{K%DS%93C(K1w1jt3$NzzI{BKY@|PiexTi8Xydigy?|3wVITyE*)B4sQc4M0g#CQ~M#G8Xb5o{O16#0XAo8+5%uE zkn)`a1grVeC3@cgUx<22tl0;o_|-s)?_taaQo1aOUN?}^B}lA!68uN$x`33f4M_2u zC3?$&6u(SjO*SwU@pK^gv3Y^SnlvD#KeI&oza+8d6cCNN>~Y3JjCV6OGFC9IWXxnt zXVe&9M`KZbXBba0KFN5Pv750On2mDX4$J~(1Fr)n0MXx;z3~xEn+kUykis?KQs5wn zfJgt!61^vZM28a+YaRzu{re==gn?9lzYK3Kmspd{{^v2yQ2I9{)|>-U{Kwg!#wmo? zGy|zU3ORfZV;T@y`KL(qzK#x0`3*^|ISiz9O+d=GoY4oQbSou#7XT^U9Emk2G5%7z zeLzYV22%VsiC#aD;+IRTIdzqce*j4F?*>x*-4eakK#E@>vF7zfGX8NO#Xkb1_`MRn zcLOQ@ZizLw1F1ZjK#D(wF#$;FG>P6pU8Z|kV$De)#XrRU2iZT&{(kl^Xa6krPhfwI z{m)?#r+iKVsaz){)*NR4F#ET$e>MAOv41A}PhtOakPj%IL5Ve|fRz7X_J4@|53qk1 zFazOj98U5H(%1Nb{{?>a0V(}TAXvd)DABu^{Vzh^nThaoz>fe=0O|e5CDt4OQu;Q= zav;605Qw$JGB+?CI0U(h(w&o7a~w$T?*mf$F5nDc9gyDR15*5z5^EL%7s3A}$ajl@ z&jCff86P5ll>d-KZy}J zWg3w3IX6ef8K-U|ea`wvU>-p&4PK(MI4S)#WQcop*T z04cxISSO(A{HG*(PXg(Ehk-h9ACTzj1A;aEDz?_*LqOuI1C09^{Xi%9sSJ2M!aa=XK;owa#@ExN z`}8#Vo>LNQ+JIn84DRR8PgdP7~e>h=>{2}V?4>&$M_KAKE^O(9b*OKO2#b4 zIgD<`L98!nzIhx-bn25>a}Y@L=sw`pz-G6m3KKLn)t=%B=!eL!l*HXvBi-z?GF2t=3g*GcqN0GA-%Vj$(W07&uYNc6suDE)_k zwih2_cZVdxKBy+o&bV1{l_JG`+&3HJ|fY32$&A{L5bdOAXw19Poj4> z5Uk`6OY}AY!4m#PiQdgXu!g@{qPHA~Cia&}^m>430)MtdZzd3=_Ai#`odcW#ce+Hc z8#o#61c}}Y37VDy_j!rlAz(7x=OlVx0-~w>&r9^42BL}lrzCoh13^OnlM=m0fXLe4 zE75xhh(G^9iQaCY3+{aqy}Nue~57(V;ke` zjOC0TMxAjA;{{|w`3&OA0eq6N7x=FzFRe>}-a|m*?}HL+x`EV>pF<+@Cp{6c#s?z2 zh^8q7z5t~5c^*jZ^M8Ok@W()EpML_T0iOd>`}_zp?*O}i-v;gm z_5<61CxA`BzXR3*{}#9z_!O`LcpO*`{2QPT_}9Qf;J1L;z$by3z;6O|;9mjf0G|M+ z0Urmtf!_dXz+=D*XrH6NH-LS>A>h}6gTTK8o&o*^@Oj`7;A!AvK;nJVPH4#5nvbaVc>4ymw;`+hk#AMKL^$UzX;q6`~t87cnDYy z{5;SH{2Z_l*aQ53?7e+_RL6BUes@=(m3XlLVPn9sfQ%&!L<<6h!nIc~U;zurLdL{K z(Js=0WL8?C7my5&7lRYoCXI+mLsA;AQ<4gTThhp_)RI_^X(A^y#SZmD8lGmcX&&Lw zM6ne|vcdem=gygX@7`S@Cw2e$^^^HX`<*jq=FFLwJ2Q9QZZ@zTm&;|T6;1uBJ zfoZ^lKqv4SpaOgvNcHk5U_Y=8*a!R^km~7Yffs;J0?z>t0DFP^fjz({fL*|SK&sDS zUJfgzv^SO=T}tOce4gFq*62T%b%0;GA>8el)L8rTQi4vYe~0cpN6 z06Yh*0@CwW3G4xG1$F`bz*9gUume~Di~v6kJOV5Swga~S+kg)P!@!4tEx=C!>w%kr z)xZaVKHw(cX5a(B5?~py7`PGW0hR)Df%gNmfhE99;0B-zxE?qKxDJ>G^a7p0wLk^9 z1~{lF%4%Rguo&0}ybl-!t^!^Ft^}R~76E&Kg}@$Q0k8|04?G3*06T#90wchCfJcBT zupPJp*arM0FbvECwg8s{>w&qzYTz=U54aS#8Mp*k0?Yvx0~Z55z(qiWQQW|6ApXZ^ z0zUzC0T%+N02ct$fb)S);N3ugG7soV*4pFI)af8gM$>qJu!k|i7-sY_dKg`d3S)E> zhi8m1h8cZ~9!3|V!Wd2B@Qe}0Fr$yr!{}mE7^4mj&lq70Gx``kj4nonF^cCxOFv_T zG0f;=^f0;@6~-t6YvCCqjA2F}qleMOs4zxRF0hX7VT>?_8GVc%Mi(PM3+J@=I?g(h z?MFvNMmg>6qYjTswqG98HzwJBe#`~@o*C1N-_9{z_&qkJ1HbKK4&(R0m^SXJ+=!Omdvc=*;NKfF>Ci@O$jejyvIR?%}yd<|f-u&+WnQnY()Lf}HvN^O52O zkp)SP4);m-DR+`1>b~sm1D;=WVbR4!$@XiD!i$p}=N6w|d|`32eQ@zLqH@mXT*yHx zat3oiEjhpB!jdFM=hCjFrSX)DHSKGVZ);Dkb=v#a4&b-fd)Di;cda|U4*IM+x$e}u zWc$T+QBdbMUf6hXW0K=&S)}Y(8S=TTw+#7L)(`uEO>LW!?I$;#+T^rfeX##QC>M^&V73D)5wd8{)&N$B*!sdhwr41Y9jie zThO?mB1^Ly&o|L>9qmb`<+|BKG)&|13_kIu2yv9cgMNl-dY>Zt^GyF>oS?tJ^l!!r z`ViAon0}V&{4s)mgz5TJL4S?u=TZcHjOm}SKHp~gI@(8y|0SkB$NIg>^s}trd8WV3 z`u&XQe`kFzG3{WwkLmfW-*1?HnDzUB>8Dvg=UXCwx>>*RO!u*V=}Z@)!6$vEF9<(l2ByEo^1sLWeaj~DN7CC^ z-=Cv1B}4D)lz)ThWXXJ;!%s#hOy|=d@ z!1O8B_c8_pWb(ND>=-PNS;hLfFo+;i#rmCP`tz(`9R?d@{+{*A!XSjqFIb;d7@Uw9 z&vekEk&4RtJ)1A+AnW&!1%mzy*6$aEg1(dW+fyWHH|zKCNwVtrhz1)a(C;x&SPkoDWXR?wei{rv2kQhqo%Q?edO_#0 zez%nfx{~!$4q$QZkd6K8(RCnF7|Y4TD%RJ6XSf zz~Gk52dvLeHw!wM=_Cw_$=u2MEyZA&%zD=E2GhG)zc;oBeuVXlVz5o-Us<2`FbF5} zA?q{Vr;*A6rsw(vy@mDr)K)?NlJz-QDd=}tpHo$WPGkD30YNWk{a)H8=&h{Zg;Bj|r*{XX%Cps%n#zhQa`(=Y50{QFqHPX`748tXTwR?z>K_32~!1J-9^Nbob5 zUQ{pWb*x|MPC@Tt{Tdns{SDUdC|tAhxL2mfS_MveSZ0*px)Y|1pm(vpXCs3C2J8F&^Md{a z>v!8<3Hp<)U;Z&ce~R_n@eM&g!TKHirl7yY`u+W13;I0k)7K$r2h+|If?mY>WqwQ0 ze%5d0NkO->e!pgVD(m;c3xYqF^}F~tf-YkH#+?#$E$g@J+k*ac*6$S4FR?z){GH(c zn)S*3j-c;g`rnxLvVKo>3jQ9}?}ZlyJ&N`FKYuUi39R2OU4s4u>zC6l=*_I(hJO_F zKGv`Bp9Fn^^;>>g&_82+KJi^aJDGmydxBoZ`jx#T=xwau`W`{|vp%ga3;G)C^ZfS( zJ(cMTuL!!3^`ps5GC|hwn@oR+^$Yw!@XxS5pZlSp-(`JTdj&mP(yt2oe%9~6j|Ba5 z*3bK6LH|G2r}eC$M=^cmUj)67^?Ugzf_{+od;4Dn9cKL|z9#6uW&Q4dUC{r*`t19u zpvN(N;=G_&uzo-NH$ne^^}F_lpkHTw=3NkUKkKvkXM(<+=>z{R=mOU7)XxRIgY~;` zQP5vy{ha?H=vP^vrN0pLAnQ{R74&(MmxMW-w*-Bi8=elOFD zf#iRX>2&7HeVJjFNAr+mCgPv`OLHrykLK^lG;(;FzavBQmgHaV<6FYC+?V%v;1OT$ z)vU(Q+SQ-Dp9}eN)%izuYJFW9G|!m4D9ieY1o-tVwF}g?^Sd~`3s|1q zH}x-^KDp0o2kR^MmF-~v=UlMBjAg#u7y1P*AGuHQA*SWN#8E7t_92nE#Q7ulMK-d3 zxzF%r_@VU5eVa6&N3`6hc#P>b7fHh!38zo)W4+3J&s@RZ&-p3$>CI=p+;`c{wA?58 zZ!)|~grC6jGd>~cJ*>anm-l7lH=K0yq=g`X(?>1w(|W9#Uu4lIYLWMC3r*{Q=I~jl4`%ufi~oKw&HVpsiJzKfGrzzhzt#ZIII?%WEK12%(0r>8qIzSwc~UpAvluHje#bUON=_PEEYSQXXtKXS#&69 zZfXkE#i$|G%WtWX?nU_aQgg6roxi@mrf$1*U0qkx#0Mk|4#|I@zRKSeNXUXRhWtRI z60BH=vJwd{!nLmrp;n=+r2s6vnEbJL)iXy(Eo=xtnS?@PStL`qY~*8vHwl!`i&o+* z8yZ5KAZQ{J`#@u$p(IpOhx?P`>Ol-oD`!oRh<&99VsftbLxe#WHH7N53SU_(uufVU z>+1wVvltVsfi5+g!raVbI`2N#!7r%k6iE+ z;`C%iW%Z7VZT=d~MLdq=WDX$}QYva1H_@5XmBBzQ9;8*F27?u&Q3+zOu<+;xEKd2s zV5rjKre&>`l)@k#)zriyfoK*A{lTDi-c!1X62Jo)&p{!q3sogxXwR@#XbA(wIa2Y( zIhu+hjwiA=&RHfij)7#>Zw=v4EG~D)!^`<@D%v;?+(g8=$CLoIDptw${)WZ?Hw8+? zwwk&stu%EPO+dxAT7SznRs%#$og}1A5d9#+hIVhPc{HF`Pp$ohykN4YkoMT!x6(9WfhBZr8Yy zRv98pE-}g=QKFWjHo~|0ncLosLKiy3KD`^|S!|0kAI+C2npL4nv=%I0X4dLP&I6?a zjV?WWN<}53rgb46>Og}~cy%4!+yIAs_|>yYin{NC)kPNdVtN&gFFKEf?&Zt5A6aPF z+_}1=VRJ9j9Sxg%sqSdl+)H#v!{*M>9Sxg%vF>Qt+>3Na!{&DDjwV~S?x5hiYy;OHJZ0;qxqhWLB=#GZXy;yfNZ0<$6qhZ5$45gkXTej|~ zTinZ+N{@!kovS+W+rZy+n63Z0;Q0(XhD}>yC!ay-0U7Y;L#iXtHJN zj=IIYe2JbQ-R92Kt%l9LOm{SF?xnh;VRJ9h9Sxg1M|U)A?!~&JVRJ9i9Sxh?tvi}* z*}5YvO||toGA-`qy4A3`b9G0<=3b^d8aDS*-O;eQm*|d$&7Gq=8aDT0-O;eQ7wL|M z&F$75O}1>^5f&tCv5_p@x?H!pb9Jj>b1%~!4I93rEhQN?_Y&RFu(@+|N5ke`tUDSu z_afcVu({p3qsf-7JHmowEt1N(m+Mx;=FZg}4I6F-l7S4Hd#Ubd*xXBWN5kgM(H#w& zd$I0l*xZYBN5kfJ>yCyESAn1>)U$Nh;#*)GGNnOKgV7-I&PYe}{n48g|rOG|TdT&`uym*SUC&`u=}?h$(7qii3VI{i0}dzb;r{ZpVMFc>+XpHGZZ{5cWRyBWX;-(AGoR zey5p=il#sdud$LtMMc@l&1HgT{yl^FcrqjpQ!(16e@)vYB}}9=6&00uW2cu2VXX3` zoJGt(iFE<9(PWz(ATLx~@2_mCXs*LYII1ctyfn3@n?cr#_7#$eLLOOLZWVb1Ym7*W zcMASRwqVkqHU`1aG%A*$6whtizGy8F`MUr*2T13c`XLx0Xy2=5Fy%$tFg1BIfQa%B zHa8r$*WP>3c6?xi{rL4gj^o!~Q4S3_Y$x7zC?_(NaA}(oX@K1JH|(CFdllynL|9hL z?$6nsJN!Yh1D+4?*v78Yub>M$A{)u;K68t)ZU%0=HYVkU`znSdO!jS#{-MDev?;Q3M zz4im$I2UlJ*Phf(dfI;b7)@6mzJxUQd}tf`9kQJKWR7({Gil$M;QAoI*Oni?u87Tof{&5ZP-E;bxb;O$&r3SvEBPdOkQET74ay{^*x2i^Md2= zJ(zzSWpJp+QSk#_U5t;K`N=Q%)(e{Sy1pkLI(@$b^3q8kTd^`k_}+uxg*)Qi zgF3RG;ob}$)vTBD zg488({5Hg|Ab#6Cst@^G2f}t`D25(wp;MKiXQwLNX5C2saL)jxZ<5zDv@u!fJo$A` z_j9P*V^Wl|@MzEV@ygs8<5r9v-!|8i_4LAmtgDW(^L{Z(ardBpzXXhqqwVYA*T*U0 ziMQZ?JpP@?*Izp(ocIm$?!O#qCn(PwwR$ z3FSo^=L_Wt ze7J;spmIy3-+x*48-#wTq~G|DQNM8({ZLK`^!q4vs^{GsWirp|k!NYBJ87HRA3}$e zj`WrOq4nn#X@v|{H(h{uePO( z$+C@sTgr}oHl-}Z<;ikBmNISLd{5Sn$5N*`ZDV%44EdS1)E)bP&U8tei%)9>hPqVK3ewu}})L?0HHU6{cKP6=? zrEw>w8{0ejWYPOwg$N?M|C#D8=UK zeieOAimj+S1@6lA{Gsc6UhW|O(f!II>hGwHr+O*fr5v-2D^i9{$#Fu40@>34aB}j| zU)_s13xH@dbe*7Acd;0Hq?^K~Tm2Uz9G&$+2y(-P7Gi&&~A6 zdZ)`Z!wE5l z{8fl&08BzP386BgQ`)#&4Gn6T_X4vlN zSWj`<97vOM)(j;xi(VNHJC)oSZI3Q%`Tc0+5XEuBKKWO3KD<#juo3SBla!&~-K})L zhYgN9g%PaZ^1Y94^nO z?1rloZP4Y9&Ci(_6GR<{ziJ+1nx1EFXT?}pt3R(OubIccnN!eqAbxWl&2)%oi^|1$ zLFCasEssPRBgi94FV$f={=D&uR(}%amB<${h9-aJdTtFb@4nscudVgFa6@jhc5!U1 zbA!LO-qncJE4pUZFdZlyluMG~B5dSNrV0PB#_^}~TP^Z{3{!%j-wbx4m*qtAk$;+5 zf!{>(k1^i|exmS6a3n+LgcI@0=*1Xji-0)&PL05){ZM481jL1}XMVBZ$K_Ag2z-Sz zj^}UU?8<66q{j`KFjMYGr?_pd4L?L@~ z1*%Cv(u*dXfaPbA-{k)k@J`@SAn}g~EcXFP{$`*X=mpv!uUMd(3!Dr0G$6^jjPj@O zQGw-jo{QWMvU?l5*Ry*GyVE{y(#ON@8SGB=mE6VC-c)2&C`_822((0T;u)7)asL**%GI0Fh9* ztBjW!&ok0}9K=7vNY9-M^bz1EfK5PDl?5KAF=nIl>I?eteBBMCZPIrE&j9BEJAj!$ z{A>A=A+Ve(JA#gmLNCG|#t37W(Z}dvbTKN7Q3Te)Ge#K0j6OyWql-~tj6xq+NB1yB z7{iP{Mh~Nl5uk;0+A}h7hS}NSblR_t58vXn_uO*k7Muf4JDheT4X2OO&Zk`fh9?}D z&^7_*geRPxa1Pi%VPL`_Ff#Gj#EywcjXf!a8i;ZI_dJHzDddU-t@ES zIEy^_=;X*`r#*b@fm?A-`PS3;y*#CFN|NK`?Wb<`X?N}?EgN`@ny6BPqTkHKER!iTKsZ6a5wvx{aZKtm;K@6 z%$NP!6%H@^t3uXK_OIVzKDB>j=HMSry7@W?Gu>>VGa=8+=jTrkPsfwYd^!hUrd11l z*5d!07Ws7+`U8tTZVOFoJm&cPmhihR@!x5oe`xXlu!Tlj6eGXR5}x8V$8Xxlt8E|R zO;Fkbn%IWKTZEK~o%j%i+;~en0kILO)}P+EI2P2^il-DWPw^=+ zu~?4D#aa|57I}tb)~67=(Zm+d`p|B<@9+=Ugveq_s#_atD*ZvRLD3pJ?~ubwU_f}l zuGiYoE@LwvONrS%C>0cY;;?vlep_4Pm?+F_~Nn10!h+A2Cg2yoi0& zb@hIJ4<>n<$O+m#RwO74ak`;(@VZ8t4G_ky zR|p zhj}c+9dnFW%T|7#I^<&>%>yf#d&D}t#)~8=Igh6*J8f78L426oGv@tz5Vs5a2*_Re z*EJO9i+E>9m-6HINy>|N-Hh*0Uc@_9I>q>Ll_lvdsA;kSN z%n71;wd0P%LwN{;D%1WV?C&8g^lSe;?ATY6KJ}H!-ET}xIESdV_$=&@}x19RJ$=$yON}Z`5OnP>5x3lw!QpMqX zhWx({KI);i?xg&So+fR*zwf2bmUbNMYM6aAy}4fFm^o@@8OKV%%HwgF*Z?}O~N*Re+h&qXnKcxTh< zTG;M<=A+K7TlbcTXT&qq!Rs-!UPW{2GVTcG(L4SFZ3xe$(=!aWPB|w|`%Nf4@$>n{ zeiY(IeuB2ZG#4-TsaW+fuMdfQF!sJkojk~&UgSeH^q@5wTDPJ0#jKM#@9CM>)<-7O zRlBCPS1XTLJqIgJqkW0ppY^z+42kx`Gt@`rqpdwSkWY5n6LaD{Q+|b^TOV|TpUw_@ zK{w`;a^%{KIqoQ){Rp0Y^Saz%#hJLgM4Bfi@{=e%J;V5w?b(~ir?<3xGS(R>PRc6< z+vf9BPvNT7-s}yf4{UxoShJPKQ|^UTt)P@m+VCpR#CGpJ1{O? zjnN8D!~{wjLY4VdRSj0}RiS|R3}B#zz5?h<9B9{$m37THgozV7QsBxKoDgZO3DrSz zeW0PK25(YQl~p)XhVKbBg_QCe3PA23DFKH*8(Q(DLy-&@c1en8U6n{=Q=aS2 zM9~fxs8RS|Td}sdw4$-OVVl1)pln)Ou@3*W{>o6J*%2EsaY(hvAJiQ;Hdj^#8XJ{- z*EXC)4Y=@yMG;fAUu0rypb2`_;v<6io+7;M_SZDID0}?cClRGL-3!u%Pc8;rjrD=b znr$_dXLJrKzs`j`t7~%6#~5q2*Wrx=(oBxc$a(2ZdEDGk=kn7lHDYW;zK2|mwRoR$ z;e&~qe4Kv8AyFt)9csh}BLlS|Q5_eNybilL*=K&uT;X~V8 z{yJA^>mz|m%7Erzl~xb828`U$bg7}Nq4R@Uumzm#N+iMGNM~KkkQc$wc6x!M%&q5_ zITx!$`L{I?sDmGj!TIo-iz1iWvI^u;PmgwR7+{u7Z`*L3wYec6BQQKsvJ7dv0uA)sklx~fi3{M`+Nu>>RYMItlZJ>l zgo@IzyQUHHal#F=4^1^&@g`b^!mjn#wQ}ym-!?65Q)_*|Rqe;4=MN%#t6D|QRl+Xn zrlAmhR@1Llw#4596}gY3@)INUMIqE}hj#v5s5pL71s-<$>np4MsMU2L$%p95YBVxh zJr|Fht6pz2@IYf%aj zfNMs6$!cUP*0O7GZksBNsKQzUPmf$cJJP(ev~)vhp6h}2Yu9ghaJ_5O1Kzdy>s^|w z-X@Ew54{MrdO!m8x-D8T(RIj%e7HcA)*57nmNlGQq(Q50RL+&b8fw0vy{i#TB3So% zS3OvpF+r$kYIXbrLvNQM}lzLZ}`9 zlKU3M%|N^hdTD(CsOA7^Jt-ZCcj;i7z;e7(YT+&d=feL5foczMDf}M+Qn(8X}~$4#|l)FfU`kUjsev{Wd1DB82b{cSAj0j7<&_9e~`AW=)EXVJrBhCqW7FY zwHJ5?=raP<)4=JVy9BDIfLIdpo)oAa17hmJ8xg1;0b(x7dsv`)5QsYIZ4;=5ff$2& z_X<>-fEX)#>jkRSK#b+RRRYy5K)h3UY5fPN(!PyJpuGasBH%>O9)W5u5OYc19D(Xs zU>azrKsAb*kLSmGQJ_leO_&<?rvNY5RW zQxR|(+_QmrhO~836_^B?aKI+;Ja7!;ofD|`0#iZL`Y2GP^-;Vld%FaxG^a=L(fvv! zw+Tq~3GWOvFXXKfsBQtygZm0#E^t1O{JDU5p1jiqs!8ll&lw&8?|?w{GLZaV0HP{; z&kIz~uzME}Rm|HdP(2Bx_*#I-T5pp;wF*ejg%60Nd$$NwOMp3WF9PNPkrrx4ytx8Z z7m)IEy1?=%5d6_Sj1k5#qmR+U=wbwD;hgsAu4H@eie&p1U$VWa1$SB7x@@>3+I9iI z1GYi@9<@j8SoyT~;rE>5JZ{52EEtN0yA9>j0hc>uRzA9S|Uo!HK!POQ{A zPdPiWM%?clz;9p5)fC(doq7#-ZC@C3aSU$s9(x#fW}hE>0lyvNPL7+3LNc%4oP}3JzbxbTZSQVcJDBWXkzt8_Qpfhl|X+Oc(Q{=?|FxGSffg`2Ldpe}(x2 z%+KWbe#`tI^Ka$(;7q0`GN0~cqV)Vd9%3@Pm_EexUorg%)3km}{^>qMGS`_N%k(0S z{}()e{Tk~_`&-ETn(3`fkKyq5F#YdL(|xyOUSRqKrl~!n_Z|BE<(W-z^-=^mzKeS4N@G$?X@9p56<*1N0VPG%7QwEiwl3iIVS z=YFOK(O8iQ;Gg`fDeV!kpXezEH#1mWdM zIi(@zNaz(`TROx1NvRm=R!Kklv`2z<$L)mM<@psR~x&H5p5l#ww(^LrDzk`3=O9ZwY-+ zHi;NGv+;TydwU4YJ$W&i5ES0TRMh&7@_er8q7D5f4c%h8v_ij?LbsSMfY5Jv&@ILd z3#Mxo^m`L@i*av(>9PXzwFKfYv~drB>G1z>$NY`c^`;~B!yTSC&a9gbstfqe7)~=Eb=~$L2HRvv9*OLmg&%5Il9VuhbyHD+HEvA9 z1##B~8SA=jJIhJq5Ya8iFlF>j%t-6Xzh!yUE|YoHBF|ccBdsf^O%ZamLWH#sFHw}b6VpPlovPpNoHTgO@+pnAd&exo>BE ze%v|cvT@21Iv0fUOFxXWBG2s__1hk-u~pmCpK;DASWai)=q$H9(}AktSMYVeDaLAT#G{d>BO^{c%+lm!G^Pp#Ghs5vtE9j4<&xSmCw4q{J!A( zt$fyh7W4O6`JASGLn8e1Rz9cm63&}a{4ZPioOTcRGOe`6e7zbND>oyFF_3mayvlRsK-l9OBy!MJw%x?A4-<4m><5>-QU#p?7EE{5Z}vQ5``Y z%W)xnwkF|6+fVR8{t)yYQa-Q^-I|SaZFhUFD;~!+=g$kfuRQGOe)}0ucSHXRB07jMJN!mH1n6p<3+^gr}9AOgnaQqNw3AJ-a;+z)R4t@O> z{f&O^Xy9RmhQ<0G5bSSwy<`8wgLq}o&Lq;g#CvVdU(xzI)jyQiq3e5!P=+n;FErIXF=cJBL3^Ne?hqQ{R7T&nrOO@f&7}=pmfA}*e=$cJG6C8tTiJo zkAK}ZB zqPr!YM>|!GI5Kf(1No8948rL7V|J5vdWOupV*aYV5pp1_yAQfP{* zQ2x7Yp6k9_mFv}|3eE$pcQg3ij_#%8{tZVr=H(3cFDdkCCWGFobk8@_%?h2dHu$YdcZQkXhq`H|pH#Z1 zo9U;NZnV)x_|I#5MhyA^r8~{cKcsYHO2*)Sh1xyQ203jr7eyV$ela@NjCzH0p|qb$ zoP8XwKCec7UXAus)(Ic#UY3atgI;Z}BcPR?XiI0(o){sY>ah74lJ#2InHuL$**QAS ztq;%NM@hqQ`*W1(9z4(SXS~slY5R7l-9cW-{!!cGXG1?r?ow|`gV|59Hce}!>!a|g zZ%6(9$aevl<7-2F&J6V3kYUw};{NZ*u7+$|+bE2vW7CtUPN1FB_QTwpq_`vK3o3v< zV7_B;*=+nj4%&rr>vO;;+zXQimu2ApamBXdS7`s9Q|vpw1;n)uS&p=^S(GNMAz*)z zQ5V}#E}68SaU9N9qpy)X((lq3qc07^pNscBN812gdLuy4J9nV2SD^h|0JJ&BX=y>97n2rQf6Tf#pVVlkQd<5He%lDorg=2LMW`5fUI-C6_k~LhJ;aSeXSbJiof_qyq_PByF>%;h^1LGjgElZ4p z#Mn2{KGy;?HTXY%P;5bd?mP7Ei*T+Z5ah5ql7ssBqPOL4}=tBkeKX%;%eLZ@5k zDHhsgp))P?bPJsnOPkZAp#6|E)fH){I!lc?>ZXG}p_WIHF*Ksur>qhAwa5_5i8G^KgCe(+}f=;hl+?hlg=kIEYDG15utHtSc7^daxG zJM2tpLpv+(U^4q{qr6BPIWH20?WMK~b1gQX4eyg5?Y^F2n{E5olwY2G~r%J|z{8RKCV$XjuE^B&)b(}GKJESze58O4>| za%Xn#=7cP9&FnBfuxMFR+gvLz+({rFUz`}hho5!{H@UPe)VQ=KFJ8qEE~c$%YIWVY z&8nfl3ER)Hu{2=SuOWa{(Z*_$s@()66HVK%NscrZQ2_W$lC(r}Cxdr;GBIl#xBPQI7M%q5YD56}Dz!H-MdS?0Tj;a?qr zFZab{4-RG4JM-f#^;Y0lUQVi zi+?ZkJ({n0{ZEe&{wnixMff=V_8A~G)RH$MKZ5%?FFKYy6;NxUFj4Su5f z8)W`)@gHRVaPqrG2!Db3+>XTM&-pZ=c)Dn3;`n{oR7z&J`Y*r#cv5(a3x95+U}Ol0 ztDghRA5MNY77fT03y727G6KJ61imv}2p&#;$q4)-Bk-dm@G~dhJpTF-_+89*2{Cc` zdtn6rAoH6<__+KH-YOWw$!`O{4EtL50#U~o)B`b}AEa==@@ilU+_wP9-wMWDAfoo> z2vnUw3YR3Xd;m=H-v`_cya*&drHAC6XMQhmJNT!WPx(RoW6a;n?k()Th23-5ozA6` z|8#c0nl9q$6Igy0NO~M&_XxWmVD~NTzM0)uuzNbYr?ETkhScPo1yVYC1(u&=_XF%6 zX7?&~U%~FV?CxTBh25`B6#DlA%b@3ZK?mu%D@D4_0&yqIf|EevM}TgI1AG+zI)M)ZJAivhF7Pp632+baFgCYSeC1f90LPD!88lYVk9l z+HK;uvHMc5EJ$@~r=_KYq#%KRhDr~CTq;ob%$`PGb7KxB>ACs54+lH6>8 z<>^53?*#gRgJT7s_7hXQeLziLAm)*@`}`>US>|^!pYHSXflv2N5&tOjTbLgNZUNuN z{4LC1!TekxvdEhwP|X1Dfd4e+pT;H!{r{P~PifFw7GX}U*@^y(B?egsJTb|AcX4+>Ndjuz)U z=)2BvQt5mX_WgP3d=pUh04W@uYr>zG&Nbmr?ZbGVG>`LW&mBl`{AF?IRVS*e3KRrklJUbKoxVL%0~D<3;YbQ6Sx^j=X}Dz4B&&nG~j;V zQH%gck0S!h4+1G3%;RhE^g#F~_=_-x8GVc%Mi-;Pcoo9{3Ks-E0EDheIWUS$hnLYk zj1k5#qmR+U=wehDqsUh+JY$40%;;nEFuE8OMk)_2JY$40%;;nEFuE8O#whYl3(pu~ z3^V!|J&Z0!g)xeJ)xtAI7{iP{Mh~NlQDKZCuoj*%!Wd@sF?twXj0$5Exe` zn9;}RVRSJ9v~W)Qkx@rSB{}G{PdlCNaUR4eo1@N%^BB(8w5J@#`I^(IJ*js4(J_%R zcKe0Yi>XfgY~LC!Lyv(?yfcO*#*}I;nrs0PtvfB>fofW;~tVlYRy`n0_riJXzk=hDgY%I~^SkCFUGw|r56nj!i^ke~9;yJ(!FW7Na-Z)n(2vmh z7P-%P9{D%XKO{ctzTCI`dkg(*q9L>MR;po&@-IxEVR{zH1HXf5>O3g^F|@M{hWb%6 z{|%zSpUeF3FPB0%Xx^OvOF&aO=R+se)2EpA?%!<)65^s>D|lpmswvq@30gyDEw9C zUuON~yx3D5Up3+(L;W)OADAfUw^%`6~PG!AlUCzh_#$_h04su;_P(g`a`^Fvst;#E-j>V)#cb@x5!&@0XVF*7JeuE%FXp z(o<^5FFK!U)^C!9|AHkwKSOz&{XcE-PvdVhpPFqm{i;R3S1kEcYe|3D;{R!j|A`Q8 zmT$dZcb+BvKe43eZ3{ixQvbeS;s3QI{<)U)zGI;?Eb=~Ok$2ppUy~)jc35a}{!zcC zc7s@9!!afEwWslHK2Rx67$y#c(~1^0RuJnd>su9Ewp6R3aY$15T#f5fYPP|H!N8~4 zg^EQ11P`?ej~4wbJW`HDCG>9Lk@t<&q1_4nni=F#`{;T?pD`Trx{g*n@d1*AzO76O zU_O&+NntFDJmU-~zG0eJxP?dFi*XHdLPg>jBD){Ng;p!+YO2OEtd!E#H?dV>IKFn| zRYX)sr&8&tEHq`I+I>02SZEeB?r?5eSzF)Ks>Ni9!O9d_x+9?7yxY=*FW5IgJxicf zbmQ;V=55;o4P_1fx<Hy0NhlZ;S!MBP zW{^kyF`_Gpy{H=$RpJLN&WA~N{W5G_Ui@9yu`G&Qe;ngI-<(wzlvb$xW##Oc=AF)Hh>M!OJu)wL+Rxa+L-gvD^SJ{o8US=7qc_8yed zLG$5?B*qJ=$5mUzjod&*!#zuu;KO-}sSng3S;FZV#=Ht#i&wd$qOy8N1>JXM&hB*~ z++9@|tf|~#Nfftph5CitF_CJIz%V@2kzqKp4kVT-TeV>VQ>~6;nI74Md{bi*7nXUZ z3%d<3i7VJD-1^o;pG(%*B0N3x8^uSIx#wxzL>F<%mL^oUtp)*%$|r)!#Kv3MeuK{Ut61)S7;44h+jF zt7(e6X{qi78M05L$tri>Oln8p7UXN z#kdl`VHlohJ#bZ}aRo$7`ytwYy|#(Sq@$LMLbQm126WW;FvRLQ&b55Hu%16luU`$J zUjw0E`G89uaQ}h%@&=H@UeX|Mw8v!$?!^`HH!i?^@v;issUSSSQdqLuy@*`Ioe<{h z78d8yeG4Lpus|j(B1kp{&@jW^w}4O2C%Pv;$DOU;w@?|X4EZatW3Fjot^5RiqVLbQ z;N3`ZQEcMA1zH;!&a^EPoFfzlM$&lwq4gG8Q`O8zy>H<(7FEfRJiJmUE*#41r5B?l zC5&I)jC4N&t^bnA6rgOz3mjg-bc5HM7^BN`)67x)eGC08kBdQRgFLegp4QQ2R#f1o z(8`L+pue%P4r4>>{SB@O!fOGC=%N=)lcBVmjg%)p4p321lwX!__@H%iGUs@{gyt0~ zy*|9CzpHU#e^?$aee`P#tGwLl!heK=otrJ>4PsF#o!!j9@^GDPH6<4fN*S)VHGEuP zc}p=bN~V5}K>0gNdPyE#G#V#wJQwUdE`)C`l#&DvBd;-lyGpk;Qu)T_U+#Pnu7m0t z%(+D(y+@FSC7|&La1GGd2yc`xNwms~E)f2z1t={!LY`-nwr)(W7I~F;&!ho@FxLDl z=JerSd(A{4&urq;Te;0F(5fGO^o&fDABrP*j>*~q{qV@enTiU%s%Si`JgH9)hit*6 zb|miz79BBF5NA05a8GMfC|J|jWR(}8Oox$~l)FO6i$Wfy71cQ zjHz>kJ^c8GsY8#C9y3%u_fz=(_PuZTK)Z0}vU=X9hWv}z4SXM;!<6UgppLkI!6wd( z(!P0luI^?$I@@E`3FV}n6P`4bKlB~wB+ukE;+}%<;9QZy=T&9AiNdBM>|y9fvL@L) zL&)Cr!w5eBd2RNB?hbsDB3zKK-Jefs9>P5iW_@oI+F!dCa^QOyNw^zg6z+%^jkMr< z%X^%-@56p*GUUDpc^%_%4i@)S+zPq}w2V)F=b305;z!xG7vLKv(4)PQzqves`(-GM z^jn7e?Pb~>2qVKf&pd&9U_|(1+IIHX%%!^2_1`YcSYfG=zIui!Fh$@`Pz9c z)``;nd+0#%OyT%$Wt_~I4wP|Ua!ffvVWz`BDr+a5s|@3tEtl|Z4{|r|%Q3$5A;VG` z%5OnOM=Lpo`)zO+a{oIrJt%{ZTV}+jwH$}3?%Ng5(3_|`lwMgblxE5Us$1eYQVtPM zL7olJT^+FB2Kyz4_|6H@l)o~+@XVix-lk~saOPY4*1eSdCg%y!R2H`bmpc@EpL&Y+ z9hEm7x6_?OuU`g|9waM_y7U3=Dx&y)e+%w(fxC>0>Ke(K3RyzN)D!QIQHJRI1?111 zu6L6ansV0aEAgmYDJ<1V@y&|KCuF?jPU$72IwZ?dhPho2BlPrX^+n`|)a?V7AD;)) zG~J{wGHyyY`jz$r{2X0!OvSer;yf^EfNN<@}GXF^KySGsu(K9(2c{i2ol8BSaL-53NE#tX#3+gEAZf?^wc?d&o z;2X&29{f`n@}qsDh|)pjF~*>+={Ix~I>~rq^HuPM&l}>4GPTN=Y5iluCerQFB+t+j zc2SnlwH^P|_G-^ck173c;rY5*dyFvY=Kf3e$C-4u&O4L4NoF9GZo+z4drldk%a!e;b9{ z^KhfMshz^!R&3R#`WE)5Qq3p-Vo!VykU8}d?m)e@&qkN*NW3*>LhO@&T`KM1eG@&}_jJgA6ypyW`AxPGLuJxt%}pWa;m4XJ7<(VqL-=JO$4P{hZ*Z z{OHNj)LG%uw;#!BN$G;!#r7XOS^CJGY(M>E>5sC6{rKo`>G4l1t$2^q?#YU5wO>m~ z4wt5kjx-$4Q@U%M;nG)AVV|gUXQjZM?5mXSS7AS%g8SC~ZbA1IvXlFpjxHgmM~!Ti zcW=RN535ps^z~b>KQ$&?`qU`+-=uUOPY%DHl^l8J%IKbVj*p7Ib9|~Ylrk3bex$V4 zz~AxDDy^@M0)9_vJx=taaEE@!zp1odA@{#iTC>uD^WcuO9{&l_G6(oe_;-b0Kb{eJ z=lHCicWN@C?_8OE+fWwy`J&RgIwM?q#RVPSqdUQ5+Lh~B$fMPF!u>}|_fxPR|C+7! zIN|qft*-*J=7KkST-OzH`x{&9>bXF>t+fXD6!G3n={inskJwtDng@JSX?^N$;6K7I z=`{m>Q9j3iX*2SC_V{bBl3wrFTC>RS`=;_JNWNABw=44?yH4p|4Sy*~ux~|qkev5z ztyeOE+aM2Rnw3SoFIIuguBG=kx}rY=o?sf(*JM{(uNmuy)8lg z(CwJI)a^9xmhFwg@0=7K{ebpuL$Y`5-xA-4AaAukWIy#GvES{YK90hf`%L#uYH}{L6RriLQ1>r zx1x|G`yuI<_#{7quzFnR1HV3g?a=q3GsR)nP54E+mdW!ZK<|Rwg+sRZ4aSp2vdMv_75s6l~SA%D8uAj zK6dXHDXVaP@jjdb*sPS;JhpsWfvwP1WLs%lWuwpC6bFL%@|Qx^{Ca$2x6)4w!9{^! zU^`Z2l=T}EyKd0FqQ&u&0-5~JPJa~8oDkj<{wRZd*XOn7VX{>QWI zbqV`4Mq9 zmWANI2^*K7T0@|*K2%o)H$x?Sn;3ZmRuEtK4JiI*+MF)zf>lUgaaJA;)dduM;I&%8 zM{@%WB9T>r#>$48dTsY?6?SiL$9{g@LGxU8|NK&Oh_X4L&B4k%v)6AFdpKv$FP&cq zrbUk5crz1w6!lLn!s@yTpG{8en!s~epte3PfQWbl#eluS*z{Nx z=jEnMO*snkAPO9N@*h|ot4}>Pt~AAo%+sA4^Qa17-yrRPZOm)Lp@$L*QsS=*1Y;9n z$)o&j*vaShH}W=lZGUG~OynX!v7a7}(g5XR9*U0lXo}5&u`v{dDtD|4)HTOQfr7yx zfAve-;vLJas;MdsY{xd0K!f(|)rOh^ct-I>ZSl_CNEstO9aa|F0Tp5j5uxdW-ZY*7eaSd3-~(C%YgR1Q3%0m76xCGaBI6U zASxHWF`qc#uslsYt<0<`5hWSpN}dxpw@A6@ZZ}po;Ct^SemcK{r#m*!bzd7QD}&AS zP4)O^iMl7PM=wG>F!JMpI{mZdF)GD)hkVW<`H6G*4F*G%3T@IwUxKq2)$0Sh%c|)E z>w2fx6e{yKY!5VPt*Y#Q8>voKX_4aZuFi)usRiU-QBOml{Z&Y>!>TTwte|I~=STePgw0kQ;3?BgcAHf%)zY#GnPxCEJv z=a@E`=7qGGOd1%}Vney^>1I6k%W1^G1H+6WU3EoBMAD&kplW0DRxu#Z$43}?XuC8i zDYRRY(*Ho&s$AVQ(6kQY5$<2As#Z4zYPFV*dfhy~mPL8Ued8(DMrDYoR_l@ssn7w< zL!J_9s6weVpj|}W(=soAE4pB<>!h$aY34_UP(+kdghC`Ttfn%6aTRrS;(4au4fuR| zgQ=RJ#-pMjxrR#XxUOggt~6_nL4Gh88wd}J_+ljGVGa6cH0N3(NgVgPB5oc=u7fv! zQ*#5FIeoPFP$&d#{S7!Ww>_}BPD^H<(iGahJs4Qk91M!5Gf&yID94kXm+Qgi>;l6& z$GwzX6*vnNtUUPgEM7!TuzK*ZMNdw)L4lMXH%rcSWpTul-(sXB3+?TK@4?&j!YhS(61mT8~Wsu&hQT<6>{ec;G{`G zB58v1+>5mBigAI%{TvqBnTn7UmO908C?)wQmDbrNT@(5e6<_lPZ6n58h|yUC`9h5vKB4B(4?KJBU9rn^uTcf=F;%Jr%9u*j$TbRb zv%IxLc{9(2YqjB)9BOH4HcHk!3a2XlC-bKqFz0~mjg`8ZtxB+F>#pYD4u9Q3_rj`H zP)Z>kiOO@)>sg@6)f94JIEazE%WsUMTyi)snhiRej*8~FH(RUi8kwt5!y2IX$Hx4+ zs^U1qzJ==z0QN`$^ru zQb6M<@=DpSjR2IDbbil80|1v80pJQtj4HHD7Gny$A86BGjS5~q7E);i78b8A!$@>% zs3ks!XmZS@^A~QT(f;mG!wzLf+3Jnx!ZAc?YUSL*P{^z0I<@ThsM*HCP<<<(`Ug)d z7vaG)cSrtkveo1wr7GTaV65F*MK8O%&@v0M3kwnP_Uj;>^6FT#h%7g^ zH)h0bL86UYWav0uqVVT5u6BoNLVgBU$RHl9nR+xF2++2a0m z%fN>~M+K@EfO{bSyuk9aK=@aCfXxVhk}(2ohrgo&%jtgc=fMvGDV{3eF39x>ROw!E za^DQZUUP4mK-CMR_=*LVdw}FG7uW=UIRaG|@Xz2rfCK1Xfd77h<$XXZr;EU6f#-l2 z8+gwORL=nMuy}g}s&o%y18BOJ9H^cI?gZT-P(2F#bI3UYJOn%p{35UlNa@c3HUhJO z^$0g#pz31x>A(=&rwCNXvbz&l2Y0%+52y~Jfp37E0bniM`vt0(fji+I1qR_x_m~4! zx_|Lexc35EfqQ|a;I{}=GlAns&tQ|4>a9Z4piHLM-lD-km^SZum$J? z;y!op7J+IR^NSf*0C&M(HW2q?d+FXwpqc^P4fpB5dSE)R377;V{pkL397*=lMrxos z07RSUrTff*D&2cY?GN2&4pc7#DO?mt&pF+14piwrb8_!tqz&<(0>4wBdWzjo0yo2* z?z04{$AAxljtEo_0_pi}6Igx#NOI}k$W8FqB2cA!(H{U^FHoiXCd)uq3sikTYEQNZ zET?T1@1*(}qYLBJ^slAvYu>2bOA!y&}8G$O@i%a?3DX{z`@Jk3E0g_z0hmzzT1d`lp zU?IX+2~;-&_rkplSOE7DfvOis{ymI2z;+QzGfZ~^SAaexP(2C!BMzs-3`0(5D2d zCxPVu81OE*M+B-zfK(3-3oJhfB!34O_X4S$=^j;b4+7_ct`?~J*nKnbPPmr|R7-#v zpuGasVjzXj1b?d%s_I(%%uFDY z03kqtfEb1!YY@RC1PRvYgn)oXh#@LkF%uw~Kp+u<1%F4RZ7lRQC~dhdUyUuj4V1QN zi?>OoH7d8ombO%B%e|N04oZ82!5S;ILBV|QyZ72NXU?2SZSQlR@A=M?%zM^ed#}Cr z-fRDybM{Y*#ueLu^!E^u?e=Dk#ZBT~4`jPttFbr)q#k!^EM5*A54uug@ggAQ%?IL{ zvn;5w_*x*-dnIrO_)~%Omkne(vNRSC7558X%|8cZxNf0O0<%G%&{)iK@F?dnkaD^- z7I%nyn_w%Da&`&b48$6qvTYiR9}@RQAmwnsa9}a_8K?Y8!7?D_1T_|OA9L~xfmv|R z(^z~Z5YO~wxf+Y70!M-lXe^!p#B)_yw#MQtAcp>BnHr1zK*~)4Vkli^X)HeJ(e52U z4h;`#EIt6t0Ntjs7-MWz&KT>c_HY-F@{soyy4JF7LWhAEa+aa5Ar_<0RC3Wb5{nyw z7}Ay1Yb>q>QcehnAx_y{8jF_$DYsH%@ggAmx%nDb1b`f;X95|%*HX`YWoI=OM}YKy zQsat)KF_j6Ogw`KGLN6U5+oa zJXS_Ka0HO!$5B9z8=pc}hJil>a(wtBV588rz(b%zz~_L=fj;1^x*b0L}+yi+d&zd63};V#twUiF+S1vj;TCiRgMVx`C7v0rmk;0MXQD90UFY zcm()kU@MU6X#p}FwLp|v#&Y0rV7cHT!JuG~V4h&EU_dZiFjLSkXbJW~dCKn<>=+_0r`3)Hzz+u34;80*2a0sv!NPisHrGst}YzC%*4g)D~Gtdug z1f~LOfrEh|;2_{~U<$At=mRbSGF%Yo1r`ArPae<%I#>7s!EE7Y0zZI1ztEP@eHcGo zgnKtol@suN&>SC<=J@bEAjgHI+kxkS91oJ-4P?1C3mpdj6?CJ}wZL~lb6iOO<-orH zgF+Vp&wF$>SV?dp}T-@fo>PN4M_XtxQ*dk zfNuiBLT?7rjyWzPKLn)xmIJ>4;h6=2kGT3H(pc7LfA#(2xH+up4*+$nni@fyaQq0UiPV8rT73d>qFd z2Xfr1H-^?12+S|18fw! z7WgI5A>aYva-qwC`#>)Ob^(LHuK|k$^MGFkoeO*h7yv#E%m)4+U?z}q{XoWV0hu3t zXzbZu_X62ocMBZ>vc2Yb;W^+jAlvIBz)oNnknMFFkaAmr{|amtIt)Z#l+g%ee6_&u z0ha@r?sDLFfk7bCUj%Fi<_bRm{1)g;pwb)oP0)QFoiDw>Z-9;f$v*+y4?F^7K6L@x zfbBr0vkmxl;BFxE4SlBdFTk+Sn}K^lqs>?O7y^C;bUE-D;38lvun5R}%>#ZJ7yvSV zvw?enejxR+fL{cnZBXe)9kq6YhK(zIV3XG8LAL@w0R)fd8D?w-!sId2*kft3@id(3uO6x6qpOV1{eU&1!e>1 z05gGC1O33+Knpkv*av+JfW1K4LpN|YFam^3Reo0jkAa>JJOaD|*ae&h>;Td(+kuEX zqYd~N=vLt6pdkxu$8|Yf25bgB6&MCi0d59P0yYAnvnr>Fz!2yh;Bw$4z;fVt;3D8S zU=T<lWIWq| zLEsZW#uEnS0Y3p`JdXhbz?DG8^9YdfGy@sWDj>jm6nG5n&kA4{@H4=6AjZTQtwOf| zKL$E1bR+Oi&>^AAfp>ro3Y`apZK!sS@-ji+4zz^di}vF-&=DZ{$AB1ft9DGq54r+$ ztMFTZ<)FhtHv*S}4hdZjycu**=se(!paVi@0vCg}gzklXEd(6_s`!BmKz9k<4x9(N zRp=IA325Z8^4|!&9&||Pa^Q8KgF@#4Vf)I?DL)f*A_lwJ4@r)*0}^`1@X#qYL3%{b4m zYtUi*o)~lzzq==jjbTf&0@L-5EHkFXK3V+cOU0w=Ls924czBi~F;~ zdWXT!ux^~}*FNkZ?%ReP!2PaayLr~%uok#%8`exeL%WCiz4|1;BSVi4MJz)P&boFOf6**2sZzrE?_(xENR81#CNr60$A zNBSY$x2GS({qFQVxIdW|NlWz}PCJ6%_Oyd(&^B#vT8eL1+U~SHpt}8M{a){J{|Udx zd(?j%_ecH5@O#kT;ZODM^|#@Ew|@_Q`%*8YBHvRxQoY^-sqOgPliHe!llM}0rS1mR zH~0ebsC)3)!5;6)!QF##vf=QK;ePL);jP2H-owL>;P=GvlW@5(Je-M>{W6bdo`4l} zXPyOhU_|?fgClTW--xp#dT}aZ^Qax8AQPt{dc3_j6%nZ&c@Fp8BYSb*J@V{GzxU+G z2=0%JJc{3rk%z!-AK8KX_K^p1hT`s#dq%c`IykBWl6aybtYTCf?psIg9hK_s8+8Hq zJXaA?alRs?jyj9qlcOTw9>{9X!byZ#kt}F2{=#^#cklQ%{5Fr@f!~&KyT*CF=f?Jp zMcA?D#v<(4v$#Jwwj1{+$42nGYwT|PwvRbDCdIdROxu_PV?5qHWA=_gzKvRvnT!W7?Z9u>rHAo* z^wMKEt+DsgbC>pAik!;n$U&Srr}29{=R^)pSIjw@b1VmCII(piI1^9f1jpkOPfR=s z>R8}-0O<=H3?O}hw!i^UErDJ5y$}db@_5e$F5v!Lpf3Q+n{;pz>;5+`L*s*n!(9CC zWv9nwfgXZqu$kIN-3U!za+Rj}UV;8wM8I!^M%$>aRH2Uv&FA(ExS4&ftA&rTgu2d< z4;>;iH2sAM+JEp$O}~!@lHnH#y^8*af|sxPpC6;?fY7(+YX9Zp{~4r(;WI`4N0=Va z*+Snf{D9D#Bz&&ni#~ZmzdBjR7nb;ZXtAk(p5#}9@FT+iIm1KWR-u0^`gRGuf;99g z68T4%UZ$@=r*GddEx$@2@$UULvEyBM>^xG|TCgnq3 zm-yc%;Uhx-*GF{tR`LJKfcDRiLcDlxA?3FT|E2Mo9}xZw$^*Y$_zwp(-68Z-l#lp> z;=e({hlKu5$)7Iq|5?Vz^b3EA$U7qZg(9z2_{E~%G2!Qk{4U{tn(`qpBJ{hoAJAs= z>_JmNL;n*Jeh=)(c*rr~QIHCiM4Me?XrQ`qfdIjtKp^iJ&pI?iIRgayXuG;rpe%2^4Dj4%$1~xO*l10kMyehMQ|e;?%|e~t+~FQEPBivKy35B>?^ zFCDAth|s$!AN+2i`=tF0O8TzL0Dmaj3!yv3e#1h4mE{Y5tI%Jj{ebQgIwK1-@~1dY z=ht(T5Bj%4{{nVPd!LFt=9MPpyIb`6t>jm$(7zY`+k_r2?MI)`J=6#3vBVz!DDAOd z=n)K$_>V~b9AtT>Ab-UkyV(EP=oW?_g#JMIUqfB6)8Axz2BUw099}UXAga^Kiey`Ud~0$R}PGhk-`=izGjm zBdxTbh@}5v<`4X5i2n)DgZW|3q3A(b*y+(y-d4Vr|0(7N{NEz^_pGFMoXGnFLJ++$waQ#J@)9V#-5)PnYy9WPXA!75V|n2YrXo-$pw_`Hd33h4CQ|$4P$rm>%%A z2>-%V&7Ug#i)=5ze^mItW&4BhR|@|u+Yj)!3I8oZ3PV~E3`2Tvj4u3-U`$fOIh2JLnMTGxp(eEDNe^K;%OZZ=)e$a;>sd=@tJp!F2 z^nZ-h`rRktIbV|eT;W?%URMddhWh#OE>ZkHNd4e{j__BAex*Xs2Gaj0#Q!4EZ>jJr zCI3Dn{MDjgrSQK%{UHAip%1bB1-)8myt`2Lo(F%tzBN?y8-;%oZmbXH@S3Nf3&TGq z{IQp7`jbNEN_w^n?UnR=Ug&p`uMGbsL$mz^{dJ)~VEX~OL+CDvKY(_Q*CeJ7Iy^1u zy+iUJ8!W2}-{y4tA^yj({-O*b(q8sLZU)+1b56=FXj_;*KjiXSEBW)X#NWvLKzu(I z`TxfD5c>T=_oeS6GCsHzM#J(bTi^5-68ZU(f7E}4~xEU3%ySC9fo?#>mkv1s?c8&eXkMvl(cV^ zLjO$Kw+DnS7X7{~^hZU%p9`HO^(`RvZ4UK?z1$@EJ%;*%t`Yhp)ED%2p{Gz^(BBn$ z2K5DfROpcO7pH~(9Q6f1=L(&^`=!75sL*FF*ZdVizXm<&e}~Yo!){1_N9Z52{Q&)2 zpS6uL&_e_Q15k?_w5|4C^t_?*V;J*jWM5jrIC_XvHPv_BVxzDwGdA@IlR zG}6NK&JcPk>J{n5LT5|(JA}Sn;;R+<706|NR9vOy9ish%zDMZq)80XE6#74nIQY zzbpK9$^(5+=$}acc&qrIM|r7O10i%K<-vcK_|F#oJ}vwWBJXA4KOyp-5&j1(Z-oDq z@Q<>*LBA^Wzlpsa5dW7+dY=>ePO;bj5dZtcetstWCq&-s!v7TILH-|vJ|_Lg@5TRE zk@tr1Zx?xIg@2RCyD0qGqTdDKe}?iPe|VlQzkkO)=@CLl#6Bkq{hwl=(}ccT!rv?O z=Ouiz&_`%raBCO(McNnWp9+1E`JajR6SH;v-=clm=u2pSh{K%w7Nk8RPtCb)9~}hU z2SYyO^5WrIq(eei3%^gm*0cmi5aa{o5cU5N7H7!c#8aCtyWO@-y%Ye7f+`-{J-qrf8fyXpOHShJkHa#(?JLQRfl}~wfo=b zpr<(KFFWL=JM{T)2OWZNyZmoE^eywp^MB#+|8WPs$PxY;M|#p6^1koTce;a5v$gB@ zxWgW}?#RynvqPUENBG+u^m<45(+>Kd9rS#Meeyl2J^mj!XrCj$KkrDd&yn5^hkk<` z{zH!Zz0MKds#-el#?q?NvXW)Xs-|K)qS&4|IIEHeBq#XbP6@(O`x5B=7t|JtayqI~uu<1KoW9<)U|nO=7PaqJf;@38y#d=)mSRr?Zp&DX-AGFt)?r&tY>VL#x0rjF zRjsR8hpijHQuQIldyQ(!8RAP~Id51xMP()P7L+knT5}dnya!j7BeuBx z(Dc#Jl9{UH)b>F*4!d@B-G+o>vG0H*JElc5J0Tx!$40~(R06}EW;@d!tYRrlF_9Sy zn&81~LV_(Z^ll{FH*E207?0YWE-`UxmpKcWip@VPedexhkJoZ+_)*>fhB8VBxyMsA%!YyX?6#^_*K^0w z1nI1LYDc!Xqt@@iE;CSdp{hvB)cz&QYMRvEkIHEycktvMGKh~GJZ-=}kT8R)mDmw* zZB>08T&n9)*Be&a-OYBi4I8Rv6;#y}TwUei=2fy!jpzEj7+FMdOR%BIdTevkRI^Y? znn&qLvUbzPTCqdZMj(%G!#0V~Q19c#qA?p2V)K@D#?@iq#yReo`AV~e9O6*^?X3gN z%2r78WlznRS6AD14H2hHQn|`k%yhM3yUMdy0aLr#C?^$d4-l;q1Bi}k@nL+cTpO_6 z93U!N;EDw|u<`tGo}nTd=4gvMKp>X}asb~ZKUE*+>MySTl&bBTSpO?z*Js>nV`I03 zEiskF!)mb~&%N9jl74m5!{!1zsdCrK@&@citoFlIJ0aPi#CRuM#SCTuoqCDb>7g{r%WM7+N>*{CFK|6}AC|(>>U#6bxvG8qBRU zu_YuoPb%de+7&hT)NH6(ze@Q46D`K7+O<{pZo+n(QoGk}ymuM4`%Gx9^!B1weHG4< zW)`ikGG~WZiQi=l$`+JXF0H77jV!2GfS!3-75u9zgAyyRT2gZJf~u0r%8IBn4W#O} zk_u%aQCHoID&Ho2)T4H_<)RuT*kYVoWzG0ll1gUZu`AkECv5JzLImiOlLE1g)(ykO z;_Q;SzpHbX-47WQO8tW&9a~~w^Wh`p)?88Vl4iYwYRziX!`Zg1G8@pZfRS-Ti5=qW zWuw%MOO}ZvP4&hGbg^}-*2Y|;O?e`V0V?a()oh50D8p`Cs@JLiN+{67g z=-z;xNNX6(R9Ox?qg#K?uiK#Zg584gXuOw_O`GfL>#!AVY%4S6N2MyNDz{^^>YLUz z&Ku#wt6=UYcrVTR-iUt+|wp5mQW1p!QTEv`We)5xY6hnu;dSC^>c2__# zw20aCqi*xnt?3VKwRolrL)F@u1%NY;K_LP)SFl%7-!FE?)F|_&xiGKJvP&G3@ zDF+PQ+PF1uGYj&QN=(i%5>-2w*nZ6{$V(KeGbcYO2O(gjMfPUfMRNY!q9mE57>P|g ztTtJQd>4++OvP}MHOJ`ZnwR-tJ4;Xt95`IT)rsLGyOMIi7^qZd56I33+o`CIP%+$6 zUO2Eou-yeJhMT}yMqn}{%7+hknbDxGrBG0i7|zs@M2=3jOAuk?Ck7E=E*vQ|260Pr zUZN}s0nPxWiD0N2bFBK(^2J3}a|ZI7KNsG#C`Ti#7`hQDq95G`s#~{KEas9@hYZ+BK0~^hpJK$9wK3&rWVVs(OyysvFE8rBVO9A_Ia-;k#b|-9R+&FH z8Ama6>_zmWZu8Y`d>V9yfiXZ0DwvZjntT_I&K1RQ%g3t+j4B^&_p}Ziu3)wio3v8E zhf}iHu?gyGeg%cG{8P7X`KK6eshyP=sWe(iIbaM_76pkC#SUFKQXLS4rX5X4fx3-P zh%x4<_&8%8Sf{*bpacUa$0cLn42@=seFL?H7R=?Xi~oGZh}T#rE?J0zqNvn-b?X*5 zDWhP{?14%lA8e;FX>}AsSG=o}`N>bpNy;dgJ+MAti$0D=?U^x-qihNajmV@`20omr z)Mla>I+e4G6xZ6554KZ;&Zwk}f`Y^##=?_v7=#u+pe_YqJ9RNuALYbZebm*Nb$Q7+ z`HG`*240|2p_n+(&8`dPlA&8?b?auOF+T-Gg#(%;*v=H{+*S;idQ~uIV1Zye1?ntQ z3^##S8-Yo!3O<}NwUUbACUbVO5cx4qg55KWo3KKopu53>?XKOx;R#2XTsnss~B=`H37;1qM_G;RaGQFHx*kC?A{w0%~<e2eC*>%H4t@2kffAn&wlguhFcd?Jm_4uvuth|I{gb0* z6h=Kc+Od2Wj@H11Ar>~vD3r8*!-spaTo@v>AX$+7q#QEXs)pRTs=9LzPv&x^*@1sGowOf&tA6Y-gHv0tOCOFvo~ZTC(ur zE;$<1y%era7A`+2M=@MlfP&dcWyLrNb-|>}UA;oXPMUD|a8I~mxT%T5ZCuMbUoqSY z7!2LACDWpyAW;j`AtZ84&C<0bDL+4vV>$$*k87r>aBd0DOB5*eDk%pcSd*oa08KBz zTbDTU=aS);hhPlQ+Y}Tf3zwgilax^~XTZ4f!FKAXGuDM6Wp%ZYn9Kt5;lo|1Vn~l+ zq_~&c?5K!@S`y_rx`~3qfklGt)JmsFF|<~*=tnnk>NdXgbk2Y=Q0WyUMq|uB8HYh= zS_2CP+g<C)<| zs^au8ApliXl?#?v#%OcbEc2czk0MWCy~#UdrdVNuxvHvGaW01;6XY2=2gFARbHp)q zH0cF-_#%x-A>zZSAJ5I;by0&gRMIJ=($(A(A@3f$z^bbGC6y&HA4QzQj;l-kV*NVS zl~6yf$3uA}Tr#hvZe8`gH9ULODX&lDVfw4OjzON|k`!oH<{#$ytZG8t{5VdOuc|7W zALk$Wr7mR|CHcwY^BsE;@PlNj?;~qSp1%DA=)_#u_u7D1^pnFTUFL>Va4LOet zXqjh4`LB@QHO4ylj?dbk3;*4zR@4v5wq=#WZ#cy|_!sznZHl#%ag=y;9PiStG~Vs6 zaQnU2dOIaM_+FQXTdG+tld#oX#5a2XYrZl28F#$fSmhS+joN<-e#pNc%VHwp_v7l` z_|g0iqjT#3I(I{7ujk?K+SBs?jou~k`F-y1&hM-N^SepqxACL%+w$FX{uIiGWy5kJ z(#@2k*9t3}a&sF6fAoI}dK#P7wmJ&-pyScuv`t}C+N+|4!exUW)sg#ace^-_-Y!309?l(~ajRLbovPEtDzR zl2=UG($1W2Y!jSrk*lnzT^L*Gy2Ltos?@vF8wgkU_-{S4f%$Cg$M_4w_Fns{XJ@sv zVXpkA{stdyrwQM^HrRDIYt7H*yU#!Xx2_AK2x_w2H*bKksu>)bzmZ0p>& zs0OtId+Dc!2fMj2o!S<7#{)=qRkS=p(q|GGV#=(BpRNV6(QpYmm^aM-6t;d_Er z@KgOkKm3eS?*0_(mWgTBeMc_F+~_xsKLh*={gwMJ^k@EbO>NP%wDj%oqiqg&CjMs8 zO9=lN&wWSU@8?lSEo(j2&bs&eGuPA^e_6^O{bT>vXOH*yk6qN`y=CHD>%QFg`YWd) z?YWbVjDH_>zb^bl#Y9iqn$Y?F%8#AzKNtYdBl&UxI$=zAe!So6jQB25x?`;w?sYoC zLoD=nazC8+mmm)&D1YBaobO*1JpZMO{m&l6y~!`OE6m&1AREgGTmFhXmA2-U*O7-9 zx~X=IeUQed3q0PxBsi;uLJ`HN^e8l;5cG;rm7} z&)hc&dGQ$9Df(^m-Pz}C10O>hh_-0w#RnIleVUJUsub%cAW$-4?sJ)w#Gm;o`Q>#qDJmw=*toY3PTX zx=eF%TkPUi=i>H+i`zaIx0hYq&bYXpTlypPc^>q6)=oS^v~2VS&xa0_U_)**a3fujovHOr$ zk1Zbc4mp4E!4lMi7nR-Hb@yAr&PAzKA;-GbLl_T3Z?>&yw<@z>BcVrv7~9A=1U#Ih zw3BYipOw`!w7^NvYP=CT+}dnR=1^mRtP;1Jl};r{snLFJf9_) z$078~977yQ51yZB`FpTeZ{^Dwyie;HhCT?(?6Wu~`~%zZRGoju?@!UMb){S9(WmY= zVb-CK>B_LqpMl#kggNK;Uu`e9pZRpT<5@4u$ZH!J>_i%G@?Yv-hP}1#d+oPRkJo9_ zcA;!S%J6BV4UK&zWtwv1I7p@KV*kNsY-zJD_N%mYLl1k|--NuO?TtabGyM?rJE{-z zf_Xl1lJ&Mf|MOq;|K*WaUt7~%l%SK?MN}u7Eg79!9XdrWXr2C>I(dVg&i>=fl#+F@ z9W|Dw4cW)Ov>DS!sIl+kIemC&-f8-jtw;~cH0ZTvhbj`?!yaq)xhnLz_~-M4SNi(q zdDhNz7PgmvI^1(y!F&Hu z_`!cVc=Xqeat?l{`HSQQWrTcmQ=0Yw5rLvb^Y4)4If``-G;?Q4I38EHw@g#TEQiH8D~^tUcu(e@UNsMxwrCW z>xk&_!~WydqvJZlmv^>HUdu&YoP55&v0qNULtMi7;HI363}<*#M#=bS&!Sf_dItl> zLkHqEW)bDkomU??comhv-ysSOrNQXeR_ez5>`vErhXAmxgzy~1^GX5JjlW!8^38|* zR8L}fo*T>S0RG*=^L$%gLG_#P`q7#X{(Njp!+jqYV7rrm#ueGXTj8Dw#4}jgP>sbF z@OHTK{9Eh^Fe3uY0{^7OVxEIb_aowdSlkZ+DZgFgih3X#=NXm2%Yi}QM}UREn}M0Y z5?~4t52T!4lq2PI1L^OC&_{vvcLYd(?c&}Bq(7c- z%Wyk@^w$iezeaHn0_m>^I1+fJU_g-P+0xxF$QPuf`(Ss(Ucqj`h~NpqV}eHn(Vweu z9fIwGZNM8)etR{p;5oFE9~P_^TrN0YFi&uTpkMGDDk{TA1dj@K2<{c+`Cs(+kYKHG zN4=vytbf22%|P1mL%>_&{2#6|Ewpn9wqws5iEZ1`2RA3M|8(0WLA2=fy zNI6-+CBUx1*uMsH4rwgr`J&grJq(-+tOw2k-UTcIRsyF3%Yc^yd0y2=fVn_ck*OMs zxz8HihXM%+UHvk?ySZYr-4_&{Uq=@;Bg?5SawWf@eyD#+`E8Kz3h<2;)6ii#Q`AN>=~^> z?-tx47zR!SzX^B+uoeha%2sPE4vBju5PxOm8r3ji69KO1 z11l${*HQ_(^%XKr2A1d0xRIYTH}hlfV98m8dpFD&kde2A6O3epvD!5ll^sB zu10mfBke95G;l>b5TDR8T7mO`)B}6^WQ2uo1aiy0kkF9L^Gh>=LgxYT{w^aRbS4nb zIvD^ZF9JmTgS!M<1;c_N!JuG35TL^Oy{l{eI9Dab7o5K+)th@|iZ6RY!0&DG?81pE z&7K_|oTcLF!!J)-(Pymqy@$MAI8o(*uN`No?8a#-IHAKAPVsxs`TF2;I;9)uqZ~^) zo`Q282Dc49FgV3`c2Mu2b2uaA*r4P1Jv69m5YC0b87U`mRtir5@q3S^9>dunJT2r9 zP7OJpb^_;*Tu2M!T#`NMt@u5Z-i6;?Lw4g#lhZ@G@w<0u8%{qtG^`7!rSxT7$VlS!A@Aoj5M197`aPjH zGCXuL-^nY4-X-bz0m4u}GtN}|OhVpX3D5q=9{veQpBeYw%=Ex5Q~du$;$JWHFNEg) zfxIrGJX`u#3tb`n59r^Pzoo+Ge$c$06?uDv-YWC~q3;y`&kCI)^z%ahmj3bIC;9gy z((uDU3a??H)jn;SwALeSq|G>frSQ$TeTvY#({+ITNE^IIulY!eoo4%DrzbmToUIne zpXLaUk3VtzTM@rq-YX7%t%Jt<_Bj9VIpX`eBfi-V|NrdJmvP(Uf571%W1KiX`zyQu zHy!@3bEM}^hdw-q(jNXtj_{W|+>~-es?qmPSAuT`~p>7vE+^-CDNElp$1hNdl66=vD2U)6}4(i=+nq6W;{s_Qq^lwf13 z)is+X;DY*^b=cGj%(8}i>sD3Q-&_rr+StM#vb13n_hVZNS@qc8sTwhuN%SQ8k=xdU2bLo2#2v)nXozM7R;#kLe9{Vh)gAxuvltwi6xp6e+E)ub+p_ zXW(DhDlv)9u}~_NHV=vVm29qqJjs`34I6aEY~(~kJ$-7X3S;)D;=Uy&X_#YK-Bgp{ z)v=4o%uRe9MqiwhY0o0rdQD}{&DHDSYr`^Z#;i4ku+lF*kcgRMgyChppCNS$v~dQM0ZA8wg)BDVLGjwwb*_o7nXV^x;5Mf5PXRMVt$&*Z_)sG@a^_3&m-mKJ^UCfPko zYJ$Vn5t(|!n_y$H_r9{76l$rMr8E%SbH`?^U@l&--TtASr&hrp8dkZ^367fVhu=}i zkw#`H-ZCSvPn1M`9Tcvl^Kvl<*L7ZQA?BF}c$s;*>l(1pQ^SV%X}PZRa+jmev;vG( z&&%bzhGbWe51hC*GYl?6<6R5ixA0wzx<2f@+>}w;Kjksn4m_m(2c1%^Fu`0hPjwZy zR@+c>&qn7wRlmqF@rTFg?=n2M07C#?G9uT6$Xi#_RI7KPbIcpg6nU>`?^ZM9*)L}n zi9GD)MeR6GH-26&=6N7cI?rwnB*Lyy3aH=ReD70si@n z@%LW+zEphQAHD8E!x+r@8H>3;*_Z<~4s#&JW8TIk`!2pTIBpJcn{Qm-YfpK1B83$m ze0xTGyUu+*i1}1m`yYcF>G$z{mwxDWO6FW4ztueCG|#rqYab3inRT(`{F&+2`RfN+ z_YJ|f^ruHz_pQXMDnDf6b7_ULD<^H1addHnw# z|2K}X-kyYc6%#!ZdLjt>M23HRv(NvtD?SnIs{$YIWZ!-Ue7v(Od}li6T49cyd|O`m z=Z9ZKUPr&ZcOwmLcy%4}SXupWSM+qNa1`{3>W(yU?&z7zt>|3RGnl8C2KOuAPE`Eq z-hGK~o_+k*-HkcY7aDx~@Y*3O@{M38^Q-$w>!O+4#W`k^kdK^`FYM$O{t0Cg^eKX=q`6hL?5Z|fG^<0N@EE9Z>f8FQXdFra* z`4q1%tH>bhAm^5Ke>8ah68N7W>CMJHWsDOX1Ee3OVWQ`fo)Gfe%uVZ_6Ffh9%R_xk zgPA{g3UlgU!Fg*SEkD>H=FF_cGi$6&pVMyDDCb(}_U}lK(G_*H;@6~&o{%4az1nqwj?uI;PtKj` zKj`sn&Y6sV6ED+Li@f$*p3d=^p3c!bIR8@5l`&<)`6o=TKM=|}^~e6o&D!>(vQJ4m z*&fl~k+kkt{GNNi9Qs55?DLrCgXXy9PM@`tcA@eZb5=`EW6rA7y~ykRh1BnqZ#?Fa zkHc##EvNN^{)5cp{^zYumYc~#GheeCX`cqa0n9;Vyc4bLwH`GWmTM<;Ioaju@^a@f z{{H?k)86I0WmQJ8GBfd=Bkxt+rp9#9dDV@wI)YcJXTBfoe1e~aJ*zOkYE_OuyE=zu z$9cNpzW&P7AH>ScX*)q5M4F02K$nb@4^*{S#@CzYx7i>wj*;1c3PPTTUt#~^E zTMS`dR2cR7vBA~|uf*R+TZCWAHFJF1e0LYUwrUm=-ci@A9n}(y5;EeZpS>= z+xDHAa_c(ug=)SM<@A?&(J%Vey?1X4{0)Nt!3dX%KGDDLqR+e2%zdL@HAl)@qS|ui zP3@Dxi*%=boAP6QH1~d-MwjMUox?d|xt`|ne_iF9hPpmHGRnG`hPrfS%Aje+Z>(S7 z964Ry%9d7f?vq{z6Y*PxA;cf;j}aH+=Ulv>VQwt-$VOYa#s63Z`o!Vm5eMr7=YaQn zv(?;N)$YpN;b@(+#-+1OdI9s}>X4?GE}TC-TE!7bjomX{(`@NNUw84nDc)(QqpBUE zPN56^v+*wVU@hjDu^w-t$q`rRz|>s;n80((9Af zd8aO2@AuD+K$k_co~p=w_3Ilf&*eED#OH+$_V`UbaMSz#_xfl54)%Fw%5#`Q>46?z z=;MPOVJ(Qyv-2Iyp``s&2j+X&W=G9pN2-2FS=(*OX-7?WX3W~@-xfTN_vLC`S3l;;tMZwp%O~Ko z3eOGK9dX`Oyw~Fh(K0c*0kf z)K2*75~us;pi3~jF2@S4%t4#{!>2%pvT@Qe=n!b;>BR?2q02m!Ez9+=D%a#Tmx4U- zArHL!|BAd|+r;>l9ex&bYf<)YdVO5-ryF@P#$z1}B=%Wp9z{5{H8x6@uczxYtMleg8TO+!0#9`jr~TT$kw zy)?GKeDL^mJHmQ45q-{ftQ8oCHt0cVJ10onITvl`^}g($FxpqPIUMgY{c0Sp^5K$b z+qqA*o#S~)dzf=yji?Huwad-KF)md_gUn6&SvzCM2AobB6gEZY7Dv`eRuCuR-cDYPA?Z|cT< z?l7xx*p`XQzHvox-#*R_AEBQ!haxZMBM*r94tmQ(Psa4O<~%+AdElRb-%hpW{1g5a z|NNt`-r~vF{-|d}&sJ-!k5Ri4bA2<{^uEBz|P8{YFL(AUGg7g*&PuKZq)FmHnn z46^3@!jqZ)rxa_>pFAVdzXcq+>5(ThB2QQR>8-X6UBgnA{K+?T|69Ic`+M=s`?fC) znG(_XH42=U3lG>dBv)8kG%TWn%Coa9>p8(%A52_ z>q6#8Ys6b4tP#J!^E02lp2qxq)C){u48QVC&(I;m@!x_puk~bZzY+h_@bC8w{aGe- z?S-y8(uZyjZ&`oH3sx4`W?4!3-`;d}T_ zI{=*unE7t^2-$@#GM(13c5bQVn|`ePFP4%k$o$)8B+0O!N(%ein#x#^#ja zU-9wG_@*!Wif>{*{XcnzZU2QgWBXC>(CxqXW~eg%xp&z1=RHG}9lV7yKbA3i`_oA4 zS=hnzu#Y!^Z=w8mc!s4P0Dj~CN1hytygiG&4Z{x3qRb(G|DQ1ac?-7C3tM;_^^W%7 z*%rJoX>aCLlTJ)pKj{MOVen(udOjKNcFLD=#U$9p3u~Ua_S7e0yi>km%AMiJL-~*R zCjNJb9X#q8t?Ym{Kg>5|$hW*hhBTmDZ}bd@4Gf134B!53?~te+{49OQ_MPAd>+XBV zIx*=HWe-@>5!!O)p@6t?jYk*ksq4585P&p^;I2igY96=%JUdcVeEqblvSyz=zJ7)yp=m)U0c)P3t$--MhYKH9jEe4@LKE;87#k+TnhD z+^vAr$_9QFMReC#_t$N#TUlRogYv?Uv-Nck)T~wqkKphh9Hq5-V`YOmQwQGp5m?80 zjdg3~4Mp++ESj|c)f=4dqjFAW@XOMI((3i=8=3<5ZK~O@C4f{m;gfV=BT`Zm_&Bn& zVG}84xaAh$;|&|u;$)U;r{DOzSiE$8-NwfH>Mc0zWIb}w64GFFwSl*v^ zC7$9Z*@b2L!#uprE8VmKhp#l1*KMw;#|dlr{F&gYzQ{+*>Igqx*e*5k%|<)n1lR_|r@ykj8jJS;ncf!Q1i0_eSlkSxK4m~W`^*Rc8GZtg;kn)dSj=@6l+Se) z^xq1kzdb;_NG#(z3ScqUPtbiEa2(vj8jCjr8Gk)68}79liZ)&0h>UFf%gL+0**jAZPr-a1Z287-;>C74mSaV zK-yy-@MhptU>PtQxCqGg4P)Vysj-;zITym+0*-+@*E;}<&jIg&dl!)MJAjLUdxhR3 zbQpLq+?#--5x!Al@oI7Bx`-^es|Q8Moevu0;~9lO%DoauxmiHU;d+M};A!9}go|iY z>lqf`3qB@m?VFe-Ds$u?xuj+zf04hJeh+yMWBcMjv8+pD@j-EK2cn57JD{<6FK{*d z?*=lx+klLx3CMJ=1~Q!?Aexjip7#qZE(0oB&^-uz7?=x82cPRCfW-k|8t4fci`nj@>Xc<^ zEWUt#gyByMo&=_Xe?nvNVIcMB09FF=T};{g4j|iyFp&Ab8VJ)Y3u!FA3kXvwTduLV z9Ec(*E7Mra^%6*O*?f(~*8-tZS&_zKu9v`H*_9fLxo%<$>fuz4D^h?DAl`H6r&y0r zS5<$6G9j)&nOPyYqfJo!pwPKM*5|1jku=L%gCa*8z;!Pf^gk202zVth2%HWq0$u^k z15N`{4*oL&z{`Qzz>ff7o7QBYA2G;l4j7w)rx5g_Sfz(Qb`(Cxrk zpj(A*0TzG`3*89J2OSc+9GC|>C^YU-3ABEcp9vaiR{D@;IpJ?`P%t1!N4iJgpV%eX zDi{_F2?hlNf&dlH@2#y*@lDOW((8?QPkTMy6F@J1PvZBe_ZVCb1HJe?g5M4-vG95i zc-y^LLg8)mo&|Nnchcwe?oDY+@p$*7>`n3Fw-xuhQug3}SITZIx;U8)gJARM)kNH!*C;TVzdoZm73oIgOr}5jHehy13j;Ei%?}Z^@EUIW3 zx(mO3LoW>9pm-x9=m6(*Bc(Y4Zpjy_hdt(ac$$UfMQ(BxD?;9 z%Z^`m;xeRp3@RJf6PW8yFn-SGH}h?tMkOTOi^h`IMN}5jxoC8Gl`%Z%JfS}g10r1{ z^fRcGq=Q0FWO&wLk@sEk-zW6%#6KH#UY7{%7y93+A7q&MHtVS$=nixayl$g^_<2$M z7g9g)PZ+-V?-Tm>j353li2rw}ALv(wJ|pye@jpT2Ek`HD>pGFQS?F5ILzvw{v(X}* zZTwR|&_zN=ME>m(Uqteo`wsH*3Y{(V^O7F{q1#0NW}y$!zb$`@NTb0r^RdzxpN;+{ z!=rpmd4C}Ov!y%&LYE4?QsOi7r#L^H`DN($Bz>lQZlr(2cdLZoLO$sALa$+df__x! zPfC2B5ISGNe@W<&gl`l2Cz76j6&f4iD18n}ew>l;KNUX5VT|v$LjO?m|3Ae)*TphD zJwk`+AM|u7|1U6p(ANq5JqceS^otUHtc3a zB42nNL0OVE&qu#RS&=RpqWP1=e?TJ`LRj-cMa9yzbW#~^Hnj@!|>+1 zS7`Hm$@NI&o9ERW32&aizKMXg;Ot}L=p5*8=l{sTFLdyo>m8m)+1bNC=%D}TpvOAs zA0x0m{A~{UJxBa^BmeCFCp+|g9qG68|LouwJLKQskpE8({hAznj;HMM(;R$`Ywi5` z4*z#J=r22#E0)yar{M&@GTDivmE~a%fSyj^6!%l|LqR>=N$R-JBPk^JLp{w zd0%s+pW}3UetyLfA1Bc3bq+X9c74-^Eqc;@=?!>YC<}K=7s?w*%rakBUC9HUORKRZ zZ5>zj#NJ}6ld2bE%iGv$1+0;%SvTOCA2pYqQgE6)URO74Si;?hafUqRyDwc|U$-8s zZ`4cDGOWblJb1HoNEQIu7ZI364~y?9$9rbHtxU2$D4HJ5`bVHeHFfva!n4vvEeBBv zRWV^%PTX{Rc$X7{%Nw|4$7GF&!b{Qm>U-@BE;WKoNd>*Rh>V^EYrBBRxtu*OIo4PL#8$0XO+RBx;)Z)m75Z!n9G%yJ*Bg;51n zQ5{{EWLQwy#)_)9cw@=N`kERDDqSdRSfpTXz!A+jco{j2ZzgIn)54Nf_ie%n%*j0H zrJ-xJn1*;f6O)vUj_sW#D|Zm(NSXV(nbw2=Yi zG(&c7z zaa07H){Z(@TY=9`tldl1m#65mp=g2724b$ZGwv6na3$v}H&n0Rhz}I=wy36uiXz@* z%p|oH-&pt!XW1%z!Z8QUN3~!b6?s(1o)yuEG{Y%9T0x~+mDV<3(V5LP8V3!GHt;__ z+a4+4dZT2`((Ur?$#pf%0NdfizsuPL5+KQ$9!3ebW7N4&&3?kU$~n|9*6BosF5`v` z>+Vpep)b^*pG=ulZ(Li6UPbi-`1~acfox}ECp~jIx(F(IqmCBV>x%|Fc^7B=4sdor z^ju!IB}eLLR~<#t!&8$nqGzY-#ZG_YJk0@5w#2%w0a6fK>*ca&D*5?_NzV>U#u#wv zm^!ac<<#FePAXV$8xiH|tJzPzVnF7$B~s$9v@S1s^W1 z&&vzMuIRZLv)$L{&6zXDac%}rM`-xCS)S*1UIxEqSOLbS*X4C%ES&6$Y}B0H41>$i zcs%EO<>(r&54$e!co2bbQ67fu)@Ho){W#-KvBLO`Ub5iZM#rDOVdUH>KI#`ny}I7W zx-u*htyX;JI=VoK4%RE7J0K5_3|8L1SXPd>*}<&K+k}S$w{?S=^R#cir{&eQNXrX+ zU8fsPhNbu-FX_6$fXI7&nDTCQK%V_#UfM6CU$S+B{&MYm5uUSnwcaM_g?>+fMv=Jb zw~Ff|xv;Uyv97VaQi-vG8mw-7w6R}F^uwGIJkQ{AmPd=o3*o&HuUvdgVR>x+hGqRx zxy1k2@~=s)zIN!>tG*22o0O!td3AjFB>L6eUyZMixSaZhR_gF3llp3-<*FHuU(rwH zpPRijio8|{=daW0ZTqhJjz?D$mGXi5fu{rxSoP&BkIYrt{Zo>#HpsJIiRt|t>o{w4 z=#U7>tJnH1`kwkuWEZXOtE!?^P3ZV_t9=f6Eh29-*L|XL&5Y zM|;OBLv{6vyxow;=YG8QbL5|TmQdy4CNCuN_#KE>pU7*4JlY{HH+f0VyV>l}FLRw1 zV*7Q-8~D7Nu*eHZdyoxz)T;yft<^%~iWuLT23)tA`F%{hLnbj0)7<)^Wo-q~^@e4& z&yQcX`UWzT|MTGQO87z3@poU&H4B`3kFry9|FEueAMZJ@K7u)c5WXvj`RJok64x4- zd4pDpp3iLA<^`Ua^22rUYX`XQ33Cfm=5yymde4 zB3^n2*Bka!t52p_0|TD5H{L(i$m~~PYD=;AuxD);em%9mPU^1wABgvF)(X^8);HsM z%Kt;9KeYA+hFd49?+#+^oYFBIa|^*Of;dXB#=-NDuX82P8@9#Q6!ROHB;hy5+$^{S zu%2oX=Jk7;e4SpPce4+3E%jQCGgDrI#dBU}jOKa__jME2{w(Bc^WemM4bO{DTT?>5 zX7xOVbeMG|)$uje3>7RM^6!Ig2_0^M9 z{n2~q)8Cu3o?F*5-Lvk@6ff#hY~7PRJ`3x>s=ur2X)Wb>^qMTL$EBUG!I~JB(GXQe zYjcL$$|xKyqqVAxJY6U=Tb^2%wk?@_>AoeUm+oIO8M;wd>TJ#-GI}FD(K+W_x6m`a zWZj#y^!g}!K5>4zX=hlk*&eWNN03iUyONK*u;*0-bGVIrGC#@J>R9_{Tg?@l(AM}L z3U==EPAnLMwheQETG;lS!nzQ&x9W_pQ4`0hvS8kZzEyJm1+0~1yj)YnJUJz_HFn%Z zYcAI8Trv)8`gA>D+0m~hX+Tq+Wzw03bn>hrwjmQQMI58=xab*o2g2$wcG=N2)Dpju zpMtWy3~Q@zKzZH^ePT9__)$iaP)1uP>|OHJ313@sc*4Id`NM>-FHw1hHK=uu1Us{k z#$C|A`Q2MPulI~z`xx4uZcLG&9E)u%knKIgJpJzI&e|)2=P{?`pfxCX9$g&Px>$wI zH3eM%#x}`KhLPtM263poamJgAylY0>ZeiTkqNz3yws-`3HskDoW~}9*eK8GcEuhVg z%{n{N{;-{6-fFwmZLC?F=CoJJQ#Ro$k8MM&zB1pfO z=IiiGBiH#j*Es&g);F_1?8Z4e%wOI|q_586J^E_1#+CWdigrQ!3wLf>liO$RAC-G& z{+qDIUr7AXE{v_3c$FSF`-ik$&TFOC&M8s{cqR||_V8F!6y4{6dp)Rg#H5Y1m%CZ7 z!u(1ctC%(<+-cR;s&p~^iTc;}#k&R1zvD8tF@3CAKWWnMhipgLWd)EnmXi|`${p#> z@=(8~z7I9tS<}>K>;P%bvdc62WI>-NP?twR_D0m@TGZt$(6+5X+jhMteXR#=S$C2; z{V3{HGwO7$)M-;L_Bc_GP{(7oNI&+nWm&j|bMwc#T&wDGOrFUzx3rCta@4lsRdv|^ zP}!?K&xDb_@)5IWf2^zQgN%;MC!cT%<&um3qUszcFGSwal8YYjtmeDdS<^x}lX6$)3`N?U<5KoR zuHo4iv0Z_zi9h$8pZKx|{b&4oR@&@8n(yp$|2OiTa-I3^w%(X&_9MS(|FQII8(}*i zbJP84yxnjQozeTX{_*X+2}j%c--=hKFFxMHxO5t#?FGgun3mJ>Eb90^)bSg|z9yoM zPfZIxfCp-2W6rwyJnCBr?TA~S_CJX;fH*Oq$2CsY^EQc>)@_**T*IBcHfIQtez)NnD{w^)pJ}XS-cQd7 zvraaas_{Wqd&&7qwtnXrui;jtxAHHS^kb*dBS&9$_EX zgR!*8_!2rBH?|YJciIleH^z^>uh;Ey*8Z=Y4p+R6HW;soU!e^4?V&ZZqjK$GI5u$a zXJc&=(xTR*CR^8RZ)+(}jW@9O6LlO7I)b*?oOw0zg6}@OUaK5qg+~sSK0$?95ZM0m z{!dhlsXMbdmNq?JXB#mVeal$%E#xtuH?OJ19!$EuFlmfn9Vzz-;h5&M?7f1#N*woK z>^0!H2Ycz@RcieCsnFS8_S{p#KJIz%-siB-MBzwue5~i&+Hl*$0@3Wy;KjXBaXO#`b_L|Y@;l5tj*GFu~-Zz`| zx6XHEcKeST6X7|KO_p)QPBkX)o+;9mfI8 zvq+L>m)ECQJEw{tGq$jYS7HCI`k#d}MfF}kTtjbkrkoI-&lraXdt#8L{-~3$&`&no zJm5Ih)^UG~Y^>$hdq0`IG8iWOz?{CnV*iTgy<>a0&roR119;})x^HdQ+_&QS!PeW) ze)8!rh9B6-eq`51<$qMqW7y}y^mlI0WhJl$j@d6hxDaJ|1Ily(%62~X36Z@iu#XeV zo-)mQVCqcUG0$bRQ}SVVZ%5FMn6>1|#v|;KpEwT?I@}-a+o(VFaoPdvHr?%YF`3PLPM*u? z7vBj~TgrP=PN6kdN9&qN$KT3R6E{8qsC@#Nx6oC|cIb-NKRVq8owC)luH!wp7kf4N z@NdeDb^OEDZ%6zp|BNk|df@cqmY-d=d^5Ic>bX7Nq1(Pz^}Zwg%FB^{Nnd{SSdI;}-yGI4j^K3`A zx&vKRy`dcj5T6~-O!?6|bKWc81yZK^m-n>x{et)$d}hjv>K$Ca&-bf0XZbLuOu=}2 z5ccyKjCz`i`szo$O+)=nM_W7uZLxRf`?kG{n3t5#@%VV;%bnPlX3;yhc6MVq743^{ zsk5BuZrs>TnLR7%&as)j{R!{)oDX0x$S~g11%anl$v$PEPc5@{zE-MfY)v z$S8fEhWqZzOQ)s6rah27341|K!+rNhg46u4%QXC7;aQn81ph`Sqf0a7*PZr$qs=`7-egbn7a3OBro2a8iLpN4cb9?>TTpFt_+LE82fSy5 z+`ph-!MnzTCfsD~_j9>TM+>q8cqhYr#U7g#qp>Hd@k_Tb-XjKw-*K^I)EyV??!n>X z;5P1JH{N9)f!))e;cv~Y~Lfk|7Ja4*<66_ zzKb!~JJ@UXONcXq=gvv6gV$t_r1*My$^Q41Uxv}=d{al-gUS0-80(sLE&MId`L=8D zZgzvOv-W!ImxTS#?CFAjlE1OE8n@k&eq(E<{fO5`pSQjh@5|8+W|3!?Z}OXblb3X( zY^L)ogLPWz<|dc2w(gG)YnMNH0R4@>vB(<}x9P)MrF_}u%o7>Zf%`UvMOS;>T7>Ux z&G#b@i4XWXBQh4ShcWqY!khe3VIPsOTVr95VE?La?2&q8aImw^_B|FhQMuSgw}Q5R zuPwp3xr{eFgnPR3d1(yB8~SYckk6WZ8_GfP(_Q#DlNOCymR-ka9y-b>{9V*J#1q8+ zjLvvkah5deVp}Sn<>80@uE}qv+bec&-uKgw>35uM+HB;1R0pxScp18FXB+mId}m|a z|I_bmc75HxvoSt1-ocyIr+WEz3?-!xnUx+<9Z$RI$ z0R6#ye22q+jo7!C{fzw`AlrQA3;TeOYq|&iwqe53ww-xu^7F&UO&p8G`XnP;e?!aa zDM7!>Z)o3{pyPPWl=(H6I%KMnwy zAEsXOo?~Q_N7SG9V+7gm6d?@z^&rsL((5R1^Iija_vC5V&}GsFv5#gu$hg=xQ76jy zu;EqM50FlkC-M6fn&)d=2mkZvU)t&%klqJ`-pmy^#xmAoBolu#QI|B!zjO%MXS{} zmapL6ImhL3d_!kh#KL8%ZwI=3SkG@jzAQlg%tu?RpM&*Who7kVI&SZs&iV9yp?^gl z_8|{xTa?GT-UXepPiB4?&)WTit^6R+@~zA{1>KAe^haIVP&b#*?rq?x}0{ zW5LhU@Y{v9vK4Y3v&k~=N0}#nZ|{@p-H<$I=sFvFM{C|qIc<;6$_e{UihivUcL?Z= zn>xC+mC(#d`H-An&T=$E0)PXJs{rA*~p6NeO-!A&9yeMxU${l+SKZrU} z%6*3i*aP<4@#96lpUcJE4f9RI`g%P73#gk@=Z12cQ9rv;SMfsS;1tZ)Syfbv|FzhI ze6!jU_SbN?@NLj4Li@9&WGNmu+w=M3-EixkClzOecSvn zd1=18IP(k7+aAs3&2#HDk*U+KM0Vl!382K)bR%FOeTVeq+7W z-=QHd?%Vo6@pj=TWyWjl(~L8;ZMw_*pNy%PR(t<%?*r$_J3?pNZ_et7w%f_x&HTkT z2yIRZ_A2(F{qgQU@6wJ>w8r(Y?uJp8raiYX?$_h)ajLzdejN8UV~p_67%#BR-I9fU zif`f^uB@KwY~B7xu$S)@;CW;WZpJ`vvW{Hrf0obY%@-4&&FA9T+@AkD4}dz*&G|e> zy=rk5huuG)%Z-0q8EQB9|9{n2ZK3U=jqmo39^%K|xoMus33Ddx?|EKC`^~Y$SAq8Q zaU5aK6O%?W_HJII_C8j9$`k8@oj5BdKY~7iGAz6^nI!K`%y_c-PMiO`KZO64Hvjj0 z2>)Y(os66B;wGX0;d_``*wJgg<}W(S$)v&AKht0QbGm-dJ@xO*Q|2f0)#RzNAK3m@ z=)<<J4#-3%&5QHIOkp_pKqz#8|usF^eosC z%Zf5tcJ}Xn++&_)=N!}6(`xFv{kb%RK9F*;K1jVoG0&%X;o^uZHokY-h%=6V$o3s} zh%^q^ul}QPFb|wD^^$gB-UIM^ zDf8Vai?-^NXW_ZgZhzWVborU@u9SsuH|kq~GrhDg%A^eQ-e5HDpT+ylHoP}z1={5w z6xvyj_+G%sNa6EAv>s&f9FZr@I|8=9PMOp}mrKm<;D&P^;@5zfZyHX0|1W!Q9~akk z9{3N4SlCf)Y|9CbWqT~kHnL@zH%Um*u}1>Q$VL(t$d(gfF=9qyV&2RQ60#*{oG1-R zNJCTF(o}6pLL1z&8t{d8Hhy%Br8ArM#}M)H|`viRB$-U6(Su zzV7+XmsDoAt&@LmDt`Z&^734iANcfhntZ4BZT52f7T{~n_e_xQn2xR2y;5>H@5Po} zPWhcGx*z=+8cFM$^NbAUmD|4(|2S>Lb>1J!bprV;QOo;OYnJ5ebqz(H{U!Y?>x=uF zdxLGyV7t`gZ(B_zn7B>F-tLdlvZ(`c34U$F<`%V}ba2w9z>J>?@ql1gpjh z_QZN7ul4e`5sB-Al-I{+v3LK`z8?m-&J+Kmj34@Uzted}$18ul?}zfNj`$yE{7}}j za`wT_HDJc0{Qh3jc2Lh(Z}8nLe_K$?UQ52;6TO`qE7!vkuk8eON1W?P8F`Ua`#bmh zSND36wC#flf4hUZDO9zy@mNeeljk8`QO&PFn68&c1y>`!D8n(TW^WH+RpWmPy4XR zceStadyUcSo?JC%rM%(26ij_-EA!}p2b;Wyr|JnFmUZ~1Ol%6^(YV7_tA zj30ZS_6O(CuYH^6&dKj#%CZCh(#u}JEu%Yrq`d3+|1ILW?K5}FTRwRGm)?DBJTv=) z8#Auw9{XG$;#q*}{E5%(vik<&ZKUo$aKF2Zlehc5pyV%YC~@cb&RF)u@_TsqH}M&K z7PIqj_4Ov&c=@LYr&@ZHDz8?yKg_180AJw(0cKIwavb#6E7?$_SH`t}p(9^k*!ul73Mko-1H z;<#(?J$y%)_W^9W=X1(GE%4iw)O)(Mdwlo% z{p9(UeEoFpwVyuL@!IdU_Gf0l@$TE?J856F9S6Rj`T&35`cS04&TBuDa1M3X!{pBeZoZCP&k3piCX4fIv78T=_h?Cf$MFi|V2-s`;wAUF z{Ki}Uj-y=9i}JTw{qmea=lhnGYq#z*tWw2r%PIZ)?@1@;S^2HESDJLcPhMX8`R#<{ z>z)&m>nCfvlu!KSdo0dB&KynjV~^zVTie^@H3=eX$Hy<%dS6YK2GU$>sJ{2RF*xXHCwN-=t*7GhFO%X~aj)L-L)#vJOA@93}lM zKB?xQTlVX}aQt&O{Gt3!A?MNC124*XEBi}U&O-K!?DVJar`+GY$@N)xox9%edsWU^ ze#Vw_?(*D2tm8We`@FTp?@uIlVmq@&JHLgKaw$aTNz`qoKH@8BWh`G$8(q({8MFW5iRJx(eBUQ~ zml?`ANB*z9E92Gccf9A=A4Wgf`kh;SpZgB^us>Pu8)?5({dASzaj)*H)O&_hd5`j} zy5+o&{>-uWyLnT;*B;1x^;_(xq@4CQZd_}lyfOykORur!*lTYy%+XZk`lhV;?zp?& z_mu1NrylyRpkMvFMCOJ293uW+!~GrN%6v%(y&9~pPl^cQo zSARvggQBmkg`0?keUa$fo0}WMAz!+uEj8EGHMB*!XQA_qC!eI3Cq6ySjT@hF?ufL< zXYY(u#bb*aLOi@D8g^A>kr20J<3@i8io?z4R*3`*#@bp}JC%hSQ|kAJxqC;Lr$;3O zlpM}Bt=5&+2b<1@kFF}Zo5W{taA(_q8^bwImDLrW z8YSGy{S3=mgJ;i%L)F|1C%VU{_mAXJS2k!QdbB0TQ=NQ`-1P8FgcQ#0IvbnYqTB}a zTsS08#cGHJPgp$blSekmT^$cK*~avpZi~g5oAkDor)}Y?Vr{kj#?LqhPlgQf@jnhl7=H; zh1PgkQ5mFZPd5i!Lq6_yc{>#9!S*;ABgxpSOb&Cm+LkoFqA zR4TVqqJ!Kz+sBsa^T+nZoaauhdH~rO9(7f9fr2z13sYseyQ{t1W`n(PW+eI~gZ=0k zC-9!-S+Fn0y@Kd6VmUVrTCuotBe(73hPHa^OnT2XIAhIMXPHpSWyZB30hiz`Di!PO^fO(vsZC8RI7 z(pWtC&8aJ0CHDbl$F)X<^O(_U6RrwU z=h~c3mkgU3*bMuX(%5Ea5p+h|(KFl%G8SyA3s={-Hn*K+sk_ipzmo7YH;i>|94s>+ zF>@VP?mANuJ{N9~QGP!9G+hyq8*5%j>0cLYT3*cg!G2@+&C!HP-}IAu7{9${R$f~+wjoul5IF6_dskNVSFL`S%#u{5Kz ziuqWbZ1K*>(rW!lk6LoD>(Mjy;jk=KvkP z&bUtO7G0f}Rfm~us%vd)l2!Q`=^dvp_V{?{9^KR28Va`_ZDXuqX1xrbm4_ty>f{Wm zb6u9Yl}8dfj@6M^170#4na}prsyc4!CO4Utc3>Pi&(^bT;+(%#t!D>oAd2I5l#Yu~ zRaf2E?JibJ%%T9*kDi2e|>HtzbgG zu#KVsIv66+r|r`z?O0zv*;#*kTHhD5OVH_XL$mIoWE|KC*2P^zbRR&+uRI5n6Dtpf zWR5qq)CcVilj(_l%aWWnW&MiDiPhJ{3hkU-+u#-HnwMBpX?Z=nAMTSFpue!J6ShWMOY<|NSiqG+)3y7usho0Zf*9g+6(Q8 zk)Gl;w(Lo46P_7LOgZngotFCy?jgHifpaX}+{IK9eqFC{s-FgY88u{}-!NPCP1(zrH^ z&$>xrmdj`78GEtS`;V0k#i7O^r}_HkSXE22oW5FHo6qyqOcs6Lq5afX-?QtAM(cx- zR+U@iY{!%-=WMSkwl~c4itw4(Fx}3kxvUi}#MdhT| z;>r2lk@wkCv~&7&J{mY<*DkB9we0m}-{`nHgY}6jVKws|sgmuo^SqAIh6oF+<6#qVS=xF2pF9Kb zKlPG(r*dui|Jj$Hnn_!Ey|_j!k9Koj!c{l5RsFvQ(w^MQ@W(H00cj6@d-q@Vr7T^jJdnJpG6gNuIu!iv)GL%) zYsb-3IK1GNeMJ@6e57jmYb^byaPyB=2q&q0E4|rmid3=GcCNTYOPsd)6!NK+aW6R} ze*e4KCmMO$AeW!kl-gOZ+|M7fXa4{F>rj*PHKLyje)7#}*neNd=R9t5kN;qhZ+%1l zShJrmxmzRQb78++I1lkvwBN3PX+7ne2>%(b9r{~VzQXnn&2v#0lxq?^{p6`9%a5Ik zwzZz&DzXppz=>*}YZ?nSBq|SMXbjdhN0*h4*zcIpKX?=_l1bOYrq6$~VN1GUZjzf3i|G;@- zl&X9u)E@A#_o!WdP?#$IK(>>Ouf-$%CcVg}{j+9kTcUOiv&J5H9eerf*elgu=~2F3 zwO{qH$8NCo^D5s(wO4qgA6L81t2Onz`a0?TdQnZvmuh@2sNF07fM)EKe}x*n()Xyn zLGn*AzOwjXxxCbEP5pAz?v?(c+GE5>6@Oms?H=}eezYvFy)r)6tsVb;{6Uz!^!nzS z@(rooY2Os}>(GRoWd5bF_uXvcOa6pfGyi68vGzfbDt*_j);*EH2^6KM%s{ZR!dx_(8fKtn}!=%eSvexTbs^YWFIi+&ocUUiKcfJMELA|0dO*$2!mb zf7bNhB0v0=m)H7U?03w*6M!nNN#CjVdF-kB@8Uf+y(CUGzAtXJ_I8i-3u@Pl*R^p5kF^(wex#?-})5obK*X0zY0>#ziszhdk08W{~@)vc-Xf*VAD^5 z^(o4~q;@BMivGQvXVXjjrRtw0wO4xBE4JG7Uj5&p_JBwFakY<9`I}O-U&q5Xewj!5 ziPy2`Y)_xQ`gQC*YInwGiuUVx#Kx}&srqkT?IDlySLfUGUhO}jc4_}q@i*z;08~i) z6y>W|d%1^wQ0-pxV@U1UwwP3ku@kjPp zyVv|#RQpLupQ3-OB_Xc`{-=sxZXC03(Ze2i)Y@fy@mf>AF1360e~;QFWvce;2{>_` z^8@d6m|2}1#{xdz=}h0leeiguuc6nnrVD=8=d0+nH0|&^$T3S(3ng7OoI_t}Y0BZ- z(Jwvb^ZgzAMN4xPUP3<(CEW=8TkOM@W)S`j@_?m@!&&5umZkwp`RXleLXdlOJbV&< z6u%Rerc(9g@UPLAS(*~n=fhI;+bm6<>bJoC=>3)^OZ7hZ3+R_md;6iZ_eS{V_~%%fEYaK6!aiwfCg271 zV^H!NwX7L};@=Pd4F5h$b4B&t@Ehp6EKLV2A^l~`nmCm77vb0OYqvBls&9Z_Ltk%c zLhw(JYc0(QDD74TtDqlN6MvIs%|ndxKFFS+Vu|?+%>oqtHTVJabCzZnz8`tU z(o93~n}mOge!|j>seTx4Mn7a}2H`!(1D2*2O1-aG)^tOO*9E11otCBpO8qWdnu}2C z*8-(p4VE>PQ0kQrCC)a;mbfC%(rkfz#HjFFnoUsrv!M9P!tiG7OK)>%7NO`DAb&er zF>h(EL5VYGX=b6s8G_ zf6>ykL#Yoxl@%I(Lh7Wig@26xq@_7w?G@FQrVL6x0r(aC_F9?}Yp*D_G+Utf`QZe9 zn=DPPwO4GkG+9vmeDKToEpdK>W)VvH7A(yilzBf5{|Nn*r5S~iegsPY4qKWbDCq|+ z%@z2E$UT6a5$I^7ei^RXE_I5aiJ!Wa@RUd#~M8DV4dLNYaVX4@mS%Bg{58sUbnx&aj{Vco< z{fwoVhBE%9EX_ES^keWX=tnKhh_zP?Tbe6S{CeO<{JJeo7nFFNmZlv_d&ewm>Y=n# z36%P7fD$Jg%6gV%X%>sDegR7T<}J-El=P!e(hopM-v@sezg|nzt@?WSJLp4}rWOt% zpR_b5pro&cm(W*Qnle~SxdWCpB~a>7Y+17nN;z_&lp_ni3HqSKTPpPVK0&-iOEU*W zKMg;Qe#+8J!kxsOu&fz{;x`OGkKd4`8H9bv1D2*AieDd;a`#%AZYbsMvaIQVQtr!^ zH5Z|jI|QZNl~BrE0VQ5Jlya9@niAFLK`HkZOS1_|xpOURa-gK&07vl4wlrB#%I&i> ziv`wi0ZO^&EzK;Ha?e=SOhGC4Rm++QDCHi2Qtloo`E|qJCQg^7i9_+LgyL5Q#V-JV z3%|XVCLcQe2c7DvH8;0UH1b-U8K}*x8`d;`c^j9oR2s-6~ zl0E<>{a$OYD6uqhVN(32_?#|&6VS;=IRNvB+iz*EK=E&Y;(r3}f_YHV`Jt>Yn=DPP z>Ni4}PdS!miR%jDzX*rXFIbv6)z84+L_ck5rr`fTzG`X4p`;&!pG7}vX-1&Tvtdg! z2&KH2p_I2BO1c>2^IAoVr3pdt3qbKJhT@kGe*?d5mc|doZ;9(J;x`Y)?;7M9K*gM; znTFyw48?B%ieEqc41Rr-;Q~b$$X$ z`Z3sz->9V-R{bFSH2MKc)2I3?@F&stSeh=?$DxeNiUq`DOsIYoNDC^Y~%bITJj2|fDCk7>51N>#u z)mxgAQ2ffF_?1BM%ZDBKZL>6f)o+3_KXNV21}NzlSqvoo9F+9aP|{CXnhDj9LrFho zX-43GLmsv?{ZP{P!2$HWmWG=II{Cz*2ngz>>d6g%j_>IAS{6;O! zfa?2I->3RGlzgh8ksXhn(D*6qUW?_rD*P4vCN0gl z>PMlh%OjR%Q1$)r1L*rKO)q>u@)b+d4JDs;DEU-F$)`k_5Bu=XQ+cCuk&7SVHxI>r z&C<-mPaw}&nrZlPBqxlMTghj1RlwHvpwwdZGAtLYXHWmZky9_^gLAKFd|!3uT_gA#8RO1x<(<)5-N6Hxp{;4`ovz616` z@xKCp0skIL)1~?j_)+wiElmtQi+?Swfz|K?48W7n2c;ZyciOnK@OskESehx-k3*+D zq4*D|z7NX$?X@)BQ2e^oeo+~NKaXFFrD=dY$n}<{7D~NNz@I~3ZD}f0Uj}~`eZbO` zsJwG*0m{0N1>X;sHrad^q3lBzEX|ziXW>WC&sdrX)sMlS zLO*J0hE+cVyU-6>ngRG>itmay9r8tv#e}od83$+{HiTYrRvKeQ@Enc(gfhk$a^hK36%83 z@DlobOOpp>z1m_~lM7`%+-O;|0m}RsxZSQd{ZQ7MYWN&1ga4Sp{t-(2rCdig3-AK@ z%v+iXDE2WJMn7t4hE+cZ+tCkLnm*NEf$v1$V`;in-w98l@31tNVFWpDY1*OW7lVAn zt!S|{4XUq)=h25O%}FTjaKf_24<-F3DC zP=)-y2AU}-ev_~T{e-0%ht0@imSz-+-w13%KWu3R;op<*fTih#;&&M~;1{%FrI~?JziG>waVY6W zpwwsB(hNW;Z@*tU9qkuO^wM_#(gp;?5I-vX5NY~Iq$seT3?L_ck5CgDHOpA(j5 z5WbW2{ZQIZeg_Lp2dqP13?pz8lzcYAQsU)UnhmPYhWpWHS(;%!1c?6-ydM3arMaT| z9w_s!+tPGE$^WvY3BgmOFM|>%09l$V_F9?}$Plk6wluj=`gNmaO*WKxS(fJ7n{2#E zDDfsBQ@3K=(u_fgH)?76pv3F7tm%dluglW3!!yLGgc7eD=99k6((F}zG2Dwj-_qnk ziL=GhY=DwJ8y4c1Wodj+;!ka`_DLx5CoIjF>PMi&AGS1uP~s0*nr z(wv0if5Os~L-8wvQXctTI5c~q#K~2A4wN_>EKL@aIPwE;XePPHBJ1xMlz1a>mz2}e z461$r$~fq^G?!I>5$;6aZfWXOUki7jKWS+KQ1abtX*NMA=i&`E-+3tIyk==;q4>{O znn@_-n}AYZ`5nI0cMM9LUbXi?iPLRqI-$hrurw#3#5ndv9`=Vt{3`*Pv zcrWSeElsWJtD&54DlJU~l=DrwrP&Mj5U<3trWi`RZBWh!d6vcxrQDk=O)eC_9OVWm z>v^`N$%3-K^;w$5^|n3>mgX9i_MWpe(@@%R60RfNgrymS(vG8+W(Z3C2Q6#bp_C&A z`G{B1Vri2(tvkl7Us$BRyTw*YY{{obF*P!_G%oU-ThR$^gwRb|9 z4;_}~GL-Qcw=@@_#0fze&$X83r0P#VnGe;LrV={y$BitKq#Ly~1FG+XbV)_G%3YAHMMVd^jdb-;=26J9<|K4}mjIu}UIC?@ zN}%LZ3?+S@%3Gks&xO)nIZ)zlu&j}r!r*U~vK&7%0dx4B#R!ys7=)5fzv_EbABPg> zqGe4zY{0J!%5}ODDCOA#IW<=JEln1b>vTRSpPOeGTq0kEG1vzsPA8P>p_ie=yQumA zl=|jCNw)z?oViS!-wb4Fu9&toQ>veY(hd`rW)w<$T!GDy-{?4TYoWyD+L{x$3`#xr zLW#?7<%FhK_53!*iOVydgk}?zxErCgn-5AmEoC^YS%4C69x`Mqu34Hs*n(bu7cBds zTqu6>cWx|Y6*-n>$!GP8Q0lW_Y35)f{u62+hfJl4F-tQHoqmK;o<7T(D^T+3fl{7s zOH&Q&(QkusxCPSG6@E*T3#nQKb3y3j-cELY}9q=nK4kutc{4#8Te+28{AHrHV4o|>8 zfR*s~VLAK~48Sp10>23J;qSpb_yy>Pqc9i#F3f?y1GC}hp%0G0MF!Jv!+H2yQ0DdL z;0zpwGM|4FPQw2I$Khw;C>(;r@HgNf{0!`epN73~5ca@N!7ljUVF&zgFb)S`JN$Ln z0)GwG!&hM~?1v}dCt)T0Rag#x1qL8<_{I|W378K*4)fs0pda?aT=>f{2mTVwhQA1X z@CsaHp8o=r_2Hv%4*oo3%=mgBeee4@I0=6i(kH&3fwZl!8`4I;pN7=c_Yp{$d8jn? zhh2~uz7Ip*`+gF3zz@MVd>d?sdteLP4eMbEtcAPa30MRxArEA^u^bk_0L+K@@?dxB z54XcS_%QUtZ7>%;1ashnFdJ@#K8Wv)i_E77;5@t^&cXZO4BP^z;Jt7XZieIV9ykig z!&z7EhJ(m=!G3rr?1h_P54;0*!MDN=csq!vLgC&bo3F%tyWv=E3jt)(=^$opt4(VGi>5U^e_G2z>tt{pHcl3 zY(qZ@A4NZ|dfD&B&<{g{eo*!OFp9nxz72hk>bqbo`VP1UeO&eJ@CEcOa5wsT)z`un z^e12m`byQ8!)EjWSd6|z_4!cdbsj82?^k^;Y(k#{3(#k)-Ul1eFLHi<1pPdec9??= za0YHiKLw@VC*kwx$Kk`sqfq>Z;XC0VWKVTtKa_Uvg%Q{TA41;+Wn6W@dKiZfqHkAy z3p|Uy9&SZntNIi04Ejp=0Qz#(2cWE5C2$M+d?@+mL0QNAa1;7m$llV~m&m?ij`Ojs z8&go$i$VB(*b7g>9{6_H1y8^Z_%w{eTG$R{9=AZ5=k@RutcB0P6Hw||31!}uD+ACO zuTbV`K9qGO56U`{3nl*?_zviUQjSH=pU=WMDCL=f&%jA2)}?wV{Nf{v zU7CVY&q*lj(I}Mq4#NQKhf?oeDC=h&z7e*-^^h^*`#a%nWWs*P zB_rp&EBYQW!!F2_a?ZP=k0ZZ^+zuIn&Ushn5o@*Yhp-k>MCZIKi#QhrO2*6{=5@!Nw4fx#+9|ofYPt@DQB28PI_gpGOnyu29$oKPdUTn za?&e%m2qXQGNAM;eaacuStq@+R~c8MCp!6$&lP)vUza=wsV{T?NzqW3EUDmp#b@8mrS(%x`StA_#vj#X$zhUMLnVA!BnB>@- z-ItA5cKrIw*Jo#T-q3YJcINC2b2nsWj=pj1joF#=Z(MjIaW`~t$jI#2(6u3xV<*R} z8>Y}qY`Dt%i4Bt+XEw}=^-Y~`%E*krspCzV94~X6d($yWvv^$Y3Qb5q`91HIhmQ0IahNsGRJc!c|V>rk(0GOiW#b6P zfsKP3Gcx-&4)DHjV?W2M8>i4rY`n_*iH(ySyKn2cjq={s$#ML)369rpo98%l+bqYC zH;=wKGjs9HOB|=)Ji~GLEhBHCu5TIO*qPf!FUNB)a~#bb<2ai;$8jomn&ZUnlego4 z`v}K@+Xp#berv~D83%72=Q#M*A&z}-?SE@_X73$+chG}(baNcPW8#jC%+Wi>c|Ur` z*d5uK-J5zgk#F&$CU%ETa zarmB*d$QK`-!pK};62%y)A!6EEo@%gytJ8?+C0l~eDlO+%Ds7<_oJJ~ICgIC;y8cL z!ad}A@65f_{N8bnom;xLWM>X-8Q!u!b9T!db7kqi`2DoP{eAZ{zV5%uap?YGdH=xG z2dMJ{qa6Dm7~ps%uQ!kWcyQ@K@_lfYKxb6e-PGA6fP+nTj*YU}jY8KkkT;~e|94sh(*dWB=h z)=un;c}sb5q`rsxAIiwQ@=)JHl;)w{hqBgnZ|m81WgBg}ZI0vAwrP&N5BEKsk=gxl z@58j|!#x~lx6f^7q;8+xPHSwR;W)m1g5&V^5%h!Ghj~A^eTZY<_I@-y+xvLmv;7Lk zh3$(Rcpopg%yB+{0qbo3Ts|$3Kb=2=G*B>zWwc;S>;(%2jKJcaVoFy$ zRLp8t++RF^bhUVj<5=-{aYp7y@fhz%ibsprXAbTd+Ck6lxXQ6}XV*@Ac8>2{pLuoX z6z@BBb?zeS&IR80?;7C!*sgJoGrMLv4wej+Fj`9{Igaig+l^-T&~Ey2_aN{4cMovv z-rd77zWXxA`8^AJ=*2zrd+5bI*En9?GsSUq<zSJwqIO_FUn(uzL~znccH;eB12X z=%KguaqQu*{23GcO+RIOtn)GY^wHi&(LCDmD1C00OdM&-Ok?j3^aNNP0`nZF0@H!4 zbrXTfz|}x@X8*o{ebi*%ILG1rBm0?y`@1>9`Zs(~u%U)5XHSB3BK@#EN!4|1G8zQA$%_zcIZ zPftC~@tLV-sPQwS96L^Qo}j%>jBuPgagF2Xvt!Sa_Sr#>JagpiQ*1DlH!)Hd$&MMjEZ#<(*b?s-Vv8KR+Pd5DY@6YD_1x4s(w-aUc;#I0 zx$Ml#=R3~RcjpJsvmZG>!27=Q{T%1dFQAz_KhOKQ^Vc{oosYLO?%D_1GctSI`+48n z-q+6jd9nA!z8A4yh;y8~aP2}y=FEk;3-r;2S&kDICOHmW7)C#EVTktw7X~ko?n3W{ zKBUeIU05z(=;Zz73msUlwa>RN5WnlC?w1&UFLk`s`4S`R#U+XV;FOo+jF%>PKYnR~wX?$R}m11}H0OkH2@dpSFE?&WK|pL%(kOSEDAec$>@58J$LUb8GWy0^uNMB z-uHZf5C8H;UoY}SWTO0;o00kKlC$4B$nX7b(edM~lytb6t^!eI8 zRa&1OwaeejOMm6=xBg$1{-V4sTHf8-ekGdz3-{P~0hK?*k5a_HUH#X|#c8R(+TXX+ z%9Se5YWWBFd@rvbK5XqL)c%?KtX!*dhx*I!jN~PMuOjj5)t-L~GVS5sKlYUR%k>C( zy-nqEl{cwe>BiIX*sJnWD#y6~AustIw#0Yu@A?tB$WHz(n*R=d6eIR=^?y+7+phNQ zn*OTVU#`>0>-}2)xcWb?_3u#mcjY26`E{xM`x?)^-|N$wzg$0(*Ar^5Q29G5 z_o%!>%ip8%E^2!DU8206SN|N9Kc(e$@6YsR@! zI{w`Iv3_6EyZ2xH#ul4?Q2pQKN2aafI=*gWoJxBPtNm5^QUZBYpn_E$DrxnAYcn~@p&Jz<;wPiy*VP5%bX zzeW8k-1(yRJ{|vyD&MSj`BFe$z38QW?)_-rujOyoct0q#<%z5ObGklvs4Ra^A?YtO zj^*|DH(S}gKkbcLUiW^qb=v-2n*L^4Z)neXZO_l|v-wR`*?7Msi<(Zo@dnmBLy~n%Q2h&m2EbCyQbf$^L?y>RmHQuji|MzSD zC$;@YwLWq`9_df{;|zJ-DdnTQ^2asu`o;s+o~`zSTdmx#@q49x@XuEN2ef=S>i?TM z{&Q8{Tx`?(RW|ZvD*4xIyl-lMj%)cs4_W)5${$lX&yA=3ldtlCe5oY!N#(toe?aB$ zs=Y_!y{PtHmDiVQdM(dC7FfAloRB5Uv0^nauCVOZtg)%F-y{|fD|NtHiU zY|~GvTqONXdyZ;d;SK0ZJm-ft4`J>uj0hNDYzs;{!<+o_O6Dt3@-`e9UKdSy6Dt}Ga`!1E=E$2t- zKdANpXPFP=-=p?Fll2|@u-Xr5{9d(B>wN52xkcj-sx0^8k$A%@2lae0s`4Y6-;Bz? zr{il*<%910Q~4V@eil`h`&UT(Y@LsPF6R%{gPZH5_1OPBzKz^C*UuhS4os#)QdG6ElylWRSdE@mH*{_Yk!-{jWXWwe@f+BWW2BE{Hp8u`z8Mb`SY8RDSwyRpVIoc^54n$ zB3`Y=d#}Xjv(0>sQypJa;w8v(e@^j_ss9-%KlXc1S%0~|o7mr{_E{O9*te_wf5`fa zy+`dosrCD$%8zWe_Rp)Fq4oW`$^)g={vDNLTK*rZ{5kqk>N}V>A zmH$-6JMwXro_m)yn5ou9W$V{biM}QcscJr}8->+ayi?)wcju0 zBfk%+{GCUw|5w!ib2|QiLG6vYK73v6H|l(yQ2SrY`G@?L)c$*0ZT#=3z2`n_&kFjS z*G`?!H$QIWH%s|Q|Ag8&juUGKK2{IC10y-?*Z z>U#Ayl|QWIds5{cTE6F0{;KT1DPM!izpCrmMU~@u*8X9Yk8AmUQRRQU+uDCk<-gSR zb6Dl~YWe<5<>#e*^v{y^$D6f$-%|S@>-zXzm7mq}EvkG(%lDefH|5##j)FRbM)Qu|#}UdmUX>A%0%#t*3dld}F|FID@SG+z5jn_sPz ze?7mM*Y)W)GLf^HPc_#5H@dz)sqy|?_Gh&Jb1J`0{ae)kXI1W3`4bOV|5o*v`%+2z zb1MI4z{>AcS?(7t_7AH3A{_cG?{eM&WS&jD_Dt}eix8GH{O5=T93n@sEKU_m|o9 zb1Hv9_6PLeg31LNPyVPvUSECC+H+Jc-)!Z3Rh}rd@@|#oe&-UeLgnW)eU-|8b&s`& zRen~}Ur_m)?gu(m-lymPkEks7t(5p5SNZSvTlv!}_iRPpz;A!+Z25oaxAqaWSIKz7 zejsG+avyYwH=%a9zp2PmD%Y$1+baLhZPxy`D$D&R#sBYB&QSmFsr%T-^BG;?@zfg-DQklQyab)-N=PR0DkH){C z`HiZ){!RGfQ?Bwq(3f}L)VsVNlE44C`^Mho{n9DUZIXxkJfjy?cAsDLXV}E&b*XYzqBXzE-lZeG<`tjUzhg4Ud?$xUJaVweLmW=8h;DpNM3&ai@*DP zt%o&UFYPR^4D}zp*UEA&Q2Z;HXY%52Ol*46$?LaNUdprb@6rC^fAJnG{~s;C`#h`- zG9IwI&)@po^;YiC_}|lbmo?sNj1}>Bp9l50_Q#_3$AZ?^eIC{YtjX%hF zNM7eucArmIsO52=SN7|g-$cIkzenYT%~sx^`HyRPDVkG0_jzQuX#R`pf4i2?eO}t% z=y-6SulG%DFZX$Rf2jR=QPVeRd$`Xdd{zD3=aaot+qa%|S6)?GpN@yE+^llXb}N5S zW%v1V|DfYtK1a&yhnjzm$}%sc{oUs&KA_{FC*ZjIK8(M#f%|$pZxZE?QQt)Q2ef~p z{7u?xl}vpS<M5ABy||2z6OQU2wm@_#g`eqT?rN0RFI zOj3FNHYxp=7(a>m{bG{*Vv_%3N%?JLeMwCJ+l;S7d0$d_zLymLsigXUDXD!vkd*#@ z&JBt2|C;fTC~r*aud9rYM7#WbXQI3{$^U;P`M=2eljvWSRK7@3e|;v&ejVqA#PrjQ z_eA-wr1A8BlIrv6B>yib<+md#{Y^>omy^<8pEMr6nbaSlr18H!$$u!x|IVcL`TeBv z@i8i!Sl^eD%KuD~{DGwYIFdA;K9MAUB&k1tA}RmRCXJtePO9GzlhS`R$-g|wza*)D ze>17SKAt4sp45I_N#);@B)^)}Uw@Kh-hoRB^NIas zlKg$APMvKybH1`67(3J4+E^8iJrijPHJ?A)60D2FE+m;BUt>PH|B2F5r4{?Cs!nY= zb)>2+QWuLfHw9ZsS$eQ4)*5L#TiO~9#=_4;V)do8fD>z@L4Lc?6#`W%EHlD zYx4!`n$%)ik(9Qo`sVW~4F{X++M=s0PSYHwO=8Whs|;?(9S*if8Y3^#%+h;Fg>ZWy zh3Ob&Z*EPUtUMB0Hpn2M_e-1WnuE)EI1Rex)S)9))%%W=9yoRQKy~@ivMQ%>U8hxD zA+5g3K#G0t=t(r%zOt5MN43A)l-9VCbdAHRJdael=^XV+G8wO~$>~p8ExASvmP7mY zR~)c)N*FLHd=qQG%5zn5k_MiRxWrPe@knfp%40{XkCq;-km;7zak)`e6~(jZR(Y)| z@R2H+ASueZ%HT1r8iTFRheOrj_E^%8d?px)9XQAAi&jS(!_953Jz)(fZD@{$kA+`o zV~8fDW+YbDUx-HPf(>QibCJ4mWotM}u%IkHRc$RT&8;LUeY`9ZZD|NzINW?LT-w$e zZEme@u56ApC5NkQj>Zl&w!|(tCDN+8!}3U#YFEwqgRQ~F@aeWQXTq)3t-+>fOR$yv zS4M@~PirT~(aLHDo-~P5*V2Ya>V$SUovMDelF|30Bv>;IJrh;z+kc?q)N&DJB6yT1 zz0dQd2lq8JG}i@LLdwEtf^7}7K+@njditH=I#-=I%#T#LrXy8{o7yk8#%`AA#iX;CM5vrSR?6b%+?Ymt4(z80|JRMy&z+sZD9r+lT}Q!N^m(AJnu}C!_BhDCE0bE)G#sG z);Lb3k3SP^ZE@1sHeh^3T+_a2w7D+Aw#KpVYYL_GbE=$B4x5MUYkbl=4PltL5FBZ1 zXh>|Rs=8L@BpSSfb7l zBOEVfukM^Y`S2lybXq83JGpxEWz)Mm@f7Zf`>$l@RgJ&0(OikgD}a za#q%9C6uS*sxtA>$!UbrgU9SjB14vsIF-&|lo6ZMi}X}g9V>owD13yiNRoAVc2q}V z4H%R1+Rynw)T>6nt;o}nXoT^bWLu8MtctuS0~`lu@e9ko>C`!A&}*WE6RK`2De0P! z%R?>6Cn0KGu&&-MNkY)Fpsb^7D&?%MzEfvf!)_XP)gmi~n%i7!t7ezR!!)JuR9j1k zj!4wdHFj@vtgWe{xtY~e{8lv`89dF0rDiqp(U(fe30c>l(uQC(dMwOlG0Ztyy0$df z5INmSPN8Fu?=O|}RTZDOljA0SaI0!-J!3r*7SgkAoGsV1#L7ozT}~ULXRE?ZIIb$S z?QnPPNVcv%-{__~ob0tcFv`Mp%}#w%X5#GO)+DwCC}(%h4kl$f`|&vwxWD6Top$YZj?lywkG)?D4#J>S?hz*!^@u&Q#qVtvV@jTn9+mH zt*_%xG0Gw#E;luu4ez&IRmpxW+!~97qp5PRvp%s~)3{XxFN9lDMLExej~;gx5Ko_A zU0t{(7Cjhgjk0-xJQ`*jT zPlo>U&NU<&P!{{MO^lB{ujjcul9oLayFbF5lJTIRsQyaMq+1SWuj{O&^oF;8m)l$J*M&l!b{poBU_$ z!{LTyds5e~8dWcbU)QZH+{kDM#@brh!oIHe;eU@WC!E&}Xcv#8b#)DG@^P9^rm>Yo zi36<8`EYJ${c_Yqhr}80boR1W$`<0Pa9cyjx%jp0m>4e76lEQgwRBHwxTS$DK_h24 zXR4?4kA`C_tL2_mE60x(;EY|W>SD~Z!&hLc)AZ)RC&k zUHu`}>jZJtX6wKzFGnhUTy_Y0t@ThD50z@<&)jUbsdhly3wQ5cvkP)IH`@z5Ef~^7 zEGkKBE=+GONN-MWE!venYs|?zKCSC=!j-+;s{PvbWrvilShO>J#+W@a_OvWV^eR!& z4zHkvo|Xbni(`;$lG}@lJ>#aZI6LO;1z6GyiS*W@BF_v{STsW{X)<)u+1eC(2KTfS zV6nly+J4y~^=K&Y%+u3S;B9dWlR7W%ijaC}6?$3MPjYRF25;~SVK`!`n)iERLIkkK4MW}`V28AXQ-8XorG)CX$=d~ zXNXxdbb98Lp08Hat1n4x_cRpcr_U(8xgfonLb7h`dY#pwaJTD`aw#iFZ%%J5Dsf|b zjo`v%kJP!RH!oYg!WZpw3y?B=A!d(}lfq(qIeo;UooZXOk!MyZEba~@ZB{AL>4fLcj8b<>p{J$5 z(;^0DUP1b@VD`vz#j<*N@k;PI8RdJWEA+G!cv@`LcBbpl!rePPYF6NB@iY{bq|Xa; z>Q*f9w4{$%w96}Ep{Jz)OPUexnXYJO+H{4OJt~(zVR~!P4mVfNH3|=pj6E%$hN5CO zyVPqi=H$HGt;t%8ovuz2yYDGV9~^UXa9wOYEsjAyrlb#ExHh=E??|7Jbh19IO|GjE zmNdhuFul3JGp?thC_jCM>CFY{&9<^TJo=$<_l|UREl6)pZ!IeE%+=FUfW@}G*W~a_ zTC~eentGsP_85zv7RO-6;!dyBg`SoIPm8Cah`;|%H}o)j)FFLBC!Ky$@d{B`>}4sy zlBQJ4R=nqm#v=N zvCFH(g`SoIENSvgZ!OxHHgO^5)Wf47eZutCq8(mg3q36bo)!#g>R(ix)?A1=xrXju zVy#8@5@N6`Q&IZhn3IFMdkHU#XOg1A^m$=U&dc3eEL&E_UBWLMwo6J`EYij=N^dSq zZ!W-`TsmzDFGEp&+VT{pHy5Ng+Zq?89XPv-Jc?Y1CC!K{NN-MWEhf)#pN3Op^IhN2yAl~xA(>aTzb@$jhCa@v$9 zFwb;F#af+?`0;;G|2Fby4Bkuy(E%dRhunSZqtoQs8N!5uG1a>MsHLIbXQ7(5Wm(+rCMYv1oUp7SD5R z;*mOSfv3gOP*ma-tT2T|8xV^vyH^oYB(Rp_5J*kMue0 zSet{pf~>XJ=5vzh;*mahu~&!!Pm8Cas3?72m_3@x)8cI?OrIC#FMt1U?k#WRJ}KP( z$k#4!{QT#|?O%Lz|6g_IA05?o-TON;LK;bc!N}%^F$~6bBn*ULY-7qbBft*W6PpOd zMu`=T0Aa}p2}{C1N}jD6>I#fg(P*`5N*y_&Su!PlycG9IeY{3VNS|Kn)e@KIl2zIY z+wVoTNkS9ZWx61|&pv0L(bZ@KxIg~rSu^*0_ddVRJ@?%6W1oG@UG_`AvO87Dilb38 zBS%_$s2?(>s!Db$DFIYfmEXHTb)*h+htE}$@Wij^!$U=k9QxiW;7nB&TX)zo)}4;yan>Ao-n8mjQSX_TQIFGJ5{jpae^8LRxU=+C!r9*!sd@|lMWnYq zikG+yltI0?11lvwp67z)%151|;fsIj z%Yrz_Gsul80*20wEM3l_tK}OW6%P8N`I~c<426Drp^4o+_j+j2tLBW{8a;Q)kobjm z`I`eBaPCREgLH8QtrFyc9hRcUqv^gT(bv(i=^3?0!w-8n%{#Y|?eSH04O=p|wzGHA zczw9Keh2#>jr;12&5iYJo;DseC=p6G4iRa$;}5wmB3)v}Y!~j#-Y(GWX~U2#U^7D9 z(^W0C>O4_N*w==D-3>0e#Pl7x}`lNlpj0o~d?aVY@ z5_uQIle9C%(AR@)yfj_J5o~9$l6S|%gIYU}cmHFXp@;tbRoBk^GU6TbV&49c*ZL*_ zb;Lv75~6IM!*L~EsI@HSbu|ee?WJYXwhTS=y>4koV$jL3*Bj(zh8y+by}X-ClDV`$ zgz?<79`O!`;pG^9k;6>?|KaJn$+of2-Q=abcfH1BIP@*@^sNzTq-;ogk)%a%-9ziw zZdew(4`mKDn`14Fu}wzPS8S8rmK!TitoO!pvyHd=X##OZ+Z%0W9Tz?HdMoca&tjB) zo7!iqYhu-Y1^Z65A1nTIYA@|&w)p466f;)*Qh_dKFKtK>?fxQg3OF7_CE|j9JW;0? z90Pe551SGuNyl{+@>w7}SAjJG082k?X44!<4Ts!k+v4>8o`!=PW{qsW8V6>`z4gQTj zPzf9(AMW6H%;W>N?zwzL?dAE2`7VEP@9M>8ly=YQu+r_I7*Ufe?%i|x5E?RVwm}5x z)fu!rx1hb;2kGZB=$RSrb2I1-8MIfm-F}#=%o|g+nJr)Fn#=h7sxlsQkML5B+~ohc z26oMF&1RDrgKxKcsgIGdv&ph0BYcgzyuLZZf*ot4newq8<iVT(IeL8K!jbn^%yt=K*jsbW zY}n~{T(%$6r|CMXFI$^*3<5^d8Z?Bbx*06Ds%mvO}L3bmB9^JE7s}chKuJol}V+ zZ8E~Ue82LPh8Nf8+okD?^08E_5m~-czj6cqqJ$-$qz)$ecqYIY`gI4$Y_MN>JAC;| zofI|cIQ`fr*ngu)+ndAjRPCJ=scux0$1?hl1m4cyjB%59PEU1ZaYNEgKeP|OWA#I& zFM4TLc_wDu8)fXqj5>6fc+1a7|t!GewJ_ubb z{o8TgXI)&|=$Z^g!iPSLgbqpHxFj0yT`|FX;)9S^E`GWv#(QUv^PZp&Qttdvwng37 z#(Ues-jeQF@!omf?y|>CJOx|N;7`)xh2j?n^1O@Pi{rhFXO^USh2F(B(y?N)_r#01 z%@28t3u0|$RP`bk{($EHK6q=??GJx-sa(>9E^zB7{zBQ-@vUWNnKyW`qPQoT?@iuY zQPQ&~O!~)ppXv&G<$H7Ey;a=Dxqq=B-uoQ)1H`#DlwVj9DlB}T{{9Nzdt%;q_s%Gc za3AuXs0;0#Q83P%`~l&P$G%>}uB({Wvxl;fum>m$=cYc>4ds&QW?!b8>qomeoats^ zytj_>O+Pd8=gNnAMAxvjtb14Gd72C}7b5c^D?-r^Lf3lb7k7S!x{-MGqemWKZX{yn zM)oX=_r6LO=sogv2*2|rU*vNS&qvZ5%k|39t9{4)*qzO7En5J75Q!eTm1nSLULd_Z zFDaX|*pDci8P<(Abg6tVb)t$eyMB48{KcDWxyQNRcWb=&Yf^r{xRibd^Freb^GU~F zlK+=3U7GrSBs%Z@51;*;Lh{RJuDz9dB+t0DZr+8x#5q2%wQL(WAvB@zXYk*sxUDA| zDk%Kl6$^SKZ!08Uw*I9AucutjM6N$1WhQh8`fc0^oxCSx-ox(enM(?JN3Sa_6+cDU z%KRIo?K;McE^HU(#(Rt(6Ye{a>r6b!m7x^v&C#}dsQZ-pr97`U9rqM(|E?Qb%S`;Q zm8NQ&R`t%N-o2gowHeNhv0GW1+K7FSC-<~(`)h9v8NS@x=MQgQC{?#G3x6^EJBRtT z%R(t>o3hoN_|GntOWdxW%_7giHqMNlu^*zHs0|mS<9;se{ZnzM?W?@=qtX=(?fI&d zxrA%eA5Z1~(eq_qDF4MXktwFU1|mg=+!z#hMVD5Ee)Qhl(6)~r2~&?Fv~fAFUW|nH zOS}?}q@%52Rd08Mvc1OZZKbSSIlXyy<0` zPaJ&5`*!g!e)5Yb^NgVzyB`#H-rdPr(e@K>_TMu2i;$Urte)k0Pw@9Tf^i8wpn15s zb2VvQ#XGn1)%WI>ZX*xoy}R^%??*!qF~_+x{OZMB%yW`n@h5r6EDsYN-vuw8JwL;7 ztt2kyJ-_efJzLAg-(Fv{5VcVakJWpk4 zbF87UC06|;vm~N7FV@%)V~+Eo_3E;`wkFn6-NcB4ITRG3iL#kk;}+{Cwz;v!`fs*M zja_`VFI*IBY>M5!@KZ6AOyc;Nm~(Oa!o@K(8pWzNqBG^HB56d6y7S%~Lv6@YD3x1a z`e!Yo3y=w&rkdFHrp7Hy^tjm_<8U}RqvKpJ>QowIXuLzg6$)6SBsSMo`U+dQf~ zx3Gv2t0ozBMwMV}d)?DD^^%xv)h(kO>qL{5vJRnmYQv^q#|MrxqVwsPpj9d-<62Qr zHLPQ7ndf*YtRV@@no&7bWAyN#c*kSZXy&V%myyDCXtk%~UejdwkBAbml?>C-&LWf8 zJWrcWRp4hmqoHh>x2<}sXc`pF(HgS12{p2!tS-o-Ze)#Y3#y4~R~jAEp6Z_sU|4XfV=G$eHl3BL$9;w%X})2 zDk1Z=pfB^KWFaxlqCe!BcQOF2F?SiLtY6e;bUjQ{R9X}R|R(@hF`8+1P9;?_9=ELwkjqSStj7x$fc2lDd5@8%71-xl2$4Tp#F&U1e_ zdL)_?>B~Q!-=CisKAeAq>w)|(t{wTETzBWUalH_2<$5kUgui#AgIrHUPe${?r}9td zN5e-7juzmnpo?oqK_}PNg53q-@V>(K!f^O};f2CzxNrRN@!|04@dM*?B0Uq1P3W7D z6X}|8a63X~xecyp+;XsU`fmQjsvL*^q(p1zRQ29wEGVKlhW?H`%R_YcXqwf?z?)2md}Hl-l>}2BO3ofrMs2hrRnWa z+O%urr%&lMn*M&JnNKj~(}x=||AW7jm!tb7JpQge{1>6|1TH0T6KhvdO>06Y3Si@VY^k1p}gwk?e zrug5i^jFmXcBNkun!0wvxfhzaPbvKv`IGgrr%h?G-lw#Z-rp zxc@vBL3{ar1?f*@xMz-Zg#CmJI%APd*3+`f-DD_zv_lX#$}noc@hgMcG%t9F!)DVos58=PB4#M{_LMdOaj!gm!dSv?`YrP|P1l?|nNO%zx;_v}c})|Vf0-n(Jj5pL zi8kz6lXIPFHXDAXn5-3cMWLaUbsZzK3!SpT%SpsuR%e;fb!KFgo&K@xDH&6H(&e=o zU5);s%PKP&Qwhoy^puRH?!f3zF!{Y2B?gz>1#Pxfo1ol|<}r$Htc{OmC#97SHzI&6 z%dc9uc5&6^_d3ZQDdWj(qcV5t^?c)f%xw;r-HKs$RoHOd)&>*W737|?zoH8fvo>Z- zIYy)vv&lE3rAq}FlLa*aaRMjcoK2pfmT$Hfv+*&u^-l4P8OtnXFfB&Lb7CAVpLhAw z{V?Wgh#_h@-1_|$S^4vWdUaLN< zIFlX{-XP)0SQRrOiC0<=Uvmq72}?Z5Sai`R80<tL?Ku8BWfk?K#ccW16$*mdz&Sd${Aj^xABQ%rgsErzb$ySSI+n>BG`_xb6m zBw>xut5LRob<|HVDv zMo{dTs9I8szvMj?saFbKU|n#~qNUUy{O z>c`&5J7lb#OI%$Oyw@3L6xC7|5@&RL{Ij#~_MYe#`2ylCVQsbe$F=9bfSV}cH@e)ZoN?=Anzc)z~5H;47( z%<`>`j4WT8Jj%zeYcsA-zuUoQE6=Ny_M?`1D$nXU>XfttU4MUxdS+!Io}=BkxO3$5 zznXB97cag3(~Na)*KUm!FVEJ*YvUZ2?+&iN2G?2h_mghl*6$eUk7<2z>#beXl^Au! zt%3Kk=IUk8mv)W&(S^oIul~zplV3ewbuH`6Q&^KNVqN(<DG9M0^}^;@fv zmCAIpF%Vbn#i@6;AtyCEG-YcH*@(52cb$>n%HR4M$nUfvD>WOLuWIZv!wE-+<0}4T z-d(5U9nW|^K{wG~%)aZdui$3z+|;}N0yplv9(?!d`V>jM7@%yW;jJ zkIaorn^ENI>Hzgk>fr!x1-}~hj&8vJ)8uatd9H1)Ku&7f);T%I6cpLKq^^mlV#q$# zJ~r}OfK1tlZvpdOMO_oK$YDi3f8KsG;wdMGb*5P4us+8-TF$$=o_Ds4clWceUT9p0 zOx8Ff8xjx1AJ6fY)ctl7GIjCZJ;;6K=XswMxxG2Gmu<+DiHy*o$Ot_%d;Ok(%$>+b z#K(E%_j^_bPv|+&h2&YDYcXk_O@8HBMyI?`Hn`sF-OKY`gIx*#&DiII@{OarS(I4@ z-6EqG_#V<{G~crg21mEsKmXOGsoC1y_uxyKBu@IYCeGWq--|3<6?uD~ycL8B=CvU& z#=E>E;XPkgZ|daut+bcr^8<7>boX60Fa020*&;^|3jYz$n=Ecc}lbAm_Kw^X@}M5=dZLrP$!C#A+xn}#y9#lC7Wd!6 z?j?<94>D^7BIAPH2iWby&dJgV{rEE_J#}AeGV*_WkeR#R+iT=2<=GC9rg;IHxzzIf zDZ5QSL!P6NOC*f5*X~Y-DYAC4Ga06(y{E(j1$RGx0tA#OjJK z)b6tBzUfa&Q}4h#qu-aXI7F3&yly7szZht-O?U#3{<%Rh9BKS|f*wia>Rw8$` zk>?`q-)sce1}W2j3`e(qm+ykuyRlYmJ+gqmx+KfNMaAopMWpOp85MtGSY|N&{@)f# zm3%S_|91Fy4fBhCO=S$Tw2R5V9Vuh@&c#bpGslh6k0~O59mrF+G1h3M|MyG!E7cE{ zrZ(MQntGc)jMUQs>RVez|9wqH|B`Vp{TtJ7c{2ivKlzL6WJ1mlu^US^-s<=dstKEo*=kmhpteRScu{-UJ$dB$Q= zPEtmWANOXz6_f)EzhwKN!oQk$y>+Fj0lu+LMzEE87q+DRH-5K*_iajAb~BbGTnQtI zKhoIoTv^DZ&*hQ!^=KPoOi8yqm**bDp66@$&j$GShtheHc%9s!t*gkBhWKXEK1msPx3X5G#@QD_yr%ZtY5pTZe+7d&*Q`PMjzw;KnWAG;D5s zD&X)l!ybfGO7ap_!CJ+P)scc{6IVG?#0c2z@T zRZUY9$J{%6Gx^Io!p-I!;WW3Vr3x9xDx^0#sNOEe)R@%RKrT zc&ce8pH+?KAW~s3i}B1x3bb1Ga4}^Ha^lNYpG=1vMdC9pDC>$KC}SINk9bz1cY9*j*zJY&^!QO@%^Olo~~0H|}WKRAZdUDyH33 zZ6s7h)Y#cu$y<&N4ft(zr*nFx4Y3^!2-!A1*1&6rNUb}9QRIb(36|V;)Wn{uZjNnd z2OI9{8e$UUu#5USrnd>rK0nc35<^URha5IJES4;L)yM>))om7+B*}^U>SGxWf)?az zLNKD#NHuTav}_SJ#@h~i@+c!t#E-3Ptb3RuDlO^WL@|kwvE3{y52ISov7N7?#2O-{ zfN1fy>g_nKZm~}-R^P}ux=l74nqY0wt|rC$noD9EIB6DvUkyXsr7MM@^)j7Vo(59I zv0!O>rCRjl3t8+s&V6ra<^l0AyoVYPDsPHy6Cv&N6Ee@&IW~{SD~&zK0j^KhuzFAS z`}b_-Gv?B#b4m4#URXqlzMuqT&(%rNY0Xr7{o*4H5jF2e5Hb~IC??7rq0 zk5S4&svD`NfoNj8p=~Ogc{9q&9x7WF``m*MJowNf51I;RSn|p&i#^z=m6a;fj7N@+ zZ9vl8*bTqOvV!fRaJ4CG+aZ$J&VlnV?9kLjn^2nr-gQ?u$yAm)`BZI9LrfOIw@XE} z)v;N=&How9F$U7~F}aR3!WXlee>Qth7YH96!~RjVKTU^?@yMv~m+E5Eg)#guxdsbN zl7F`NJJep*xG)U+N1DTG&zwb8|2dPa`^{t6*Q)(;>ugl|52}6r81|EN-El1YdhFM; zDz{E?Ciq#pZ__MRvL0sa-z6S#cLWss!xk$$l;5KK?aH68bg|MiLCRpkY03kcr3G(* zCZ_z&oiv3xO{s1U))u%1`$HC7L?mp$WDSsU(@h2=+E&@M=zxfvZV(=mS zO#|2AuE=6#4!8(+ve*gwLkLBG68fA)|18LQQ)1Afe;Ql}eafPL5?la%!lK^~&WAp3 z(LW4U;G`Yo-B=*|xseY})LZn+!FkZ@Ec&ZK$-nGN2mPgB3G@<+ezDr$toGADDW4*X z{t%N8LZ7qf9|Vh`yDa*hAWOiB4vT&fI0t%?MgJ_5dok!ii~ckwEN+D^vgnToC4Etg zz6Y|zoVdV%81#ogu|H?gKMhKHPFeIt2wciv$4+i+(%! z1>A}JtY9t3(^p!i=6&c%J)qCcO3_#^OTFF5Fxbujw|K)(Z8%0t%LL9;JF{Fkfy zHQ-F_S6ei4|KfhBx}Oh9ITTy;MZRCsCG!33XGom0==UgJCURI$Gjjc)->UpCfz#kW zZPAY_e>o`o8kSo0qsq?#Wq*Tb(SL&$RnpOK(LV^9{DO?-69+8%BL6S^dTG=(i|;J2(k`y+uE%e393r2}y_^70_p1*MzeM}4=Vp% zkgA;+u;`yu{t1vOnRvsZ->3XzAnR^M-w)^?R(>}~l}#M9=yxi=1EdNj+AaFKmEQ_d zH4MRO}2dAE$8VzEdabWJ}vy?c5j(lNbr`hn^AnLfm|V@Br;GCQN2>(LoKT>EAm=XzqsNv>ySoSTso z>6qC$^T14UICD4Gb2kj#Kq_uH%k|U^r@5ZE;Uw4NH}rEoJoCuRX!wnpCve$z;ClAPb6n5gc!BHgS#7h(|E!K#(eUwE{oD`CdYAjo*#~Av!^dX#aqW&Bjzz=g zVneZ<$l*Ch<{X`q6Y0F^z)f8@@vQIXr3vm2c@3WI4{-8fzs)pD(QiquJm0>&r|v@G`{6Z|EAIpD!p3i z8l@vjw6euLiqelN{dJ{fpP0CxOCv6(RMYc^nxEU${ZV!Q6LF85I3FD` zJJtU(^}kH%&nul$|J#-RbESV<>0L^HOX-)@|9#VJ_)ltj{z2nkpma#xe?%i-o-d82 zm>-LO!fe&_uM_tH`XAN4P3>hdP4a(S!>iQzt2F*OYX5g?U$61!NW+PltMsi(?}8`g z)RUsz3To6r5{uJgwjVfeS0;3Zrt=erQJB`O{Lwq=)WrM#z9G?-MHtd z=I2i|zL^@|PR;M%sr@&U?o#>UK!|5$0(dd>6yxzdeF$LTDI zxku?QC_O>xT}sQoPN_ftOX+KrF4Xe6UgD>2I(g4#o`>wGapUAyl(w;X-aAUWaX5WM z(vXYPdv(o)PpTHc)?{d$J|stkHz27NArmVR0=ytx_l zUuU@g+YEYshWo$Bu=m_n7iNLnB863u7qnSrCvra4W)_tIUT7j1v4lZX3u~GeH#f@c zs3^6&lG9HOI~9R)O~%@W?K@gj{~g?hP20A!SEHV(-Uh+uXSU&R)W#Q+9J{2kw&C9N z-ihE2msPcmjmS1_QTbgRPK32cwDON(rgr=-Qx7!h#eu;nK|>@>UBoH1krNN?6K z=k*w#IcCQOkhTqO;JCd?HgGgQRoAkqcA-%ovM_5^TR431$?z#9<|q;qxH%)lMkwLg z2#4qT(0R$6%UIWZJlNIR;HFZ6y=z%E;8C*skG?*L?O9UeG8z z&AQUQ47abkRm=7i$TjGIqenGC^4nx~z6j##b+|r|=b(A4-08dMeId0P-@t598(O zsU-eK@V=gf_suN4Ls@vQW#N503-3?a)9^BT8jy9W{U+%bJj9*`!PhEM#e(0)9$BG2 z{xR|plvi=-?Smgfwva;XU{o-|O+R$jJp<&o@1uacIpq=zJ6jn`86}Zo_%Vc<)7?YxUq}t#M9a9~R`RMz*fBwpn_ihW9lyLvvCnF_m1+U2|ak?E#W}@FuWKEGH4a%B+ z7y4D)^6D4y+P|3@SO0}euNUK&eJC;wXX?;u-0s28aVu5Ae>w`yq0e^CqEd64_7}4)0kJeZ$2+o$KxYE5dpWnZbp~4*oGRoVOv5DS8YK zBb!-*{O2KLE{*?RUAp6a+^=0*^5Tk+mm1*yOeDw1lO-QUZ&^SF?%zYto|H@RA6BGF zqbp0iIlGMPyu>p=xww1`WYov*U0)m}Py7mHaB*h>d17=rqVH4Wprrm@iiFSw8iJ30 zxt-|B`@Xkd>H|ZU_P3Cq^JFg#I`Ks3q1$gz{l(JM9Nv#1^yAfjdu8v}kPVdZKP-g) z)0Ms7flea-G$3+z#PQ+!(z;ikE&792(kZmalqJ6yO0|4D+`HpX!@d2ygUN?WQ#Z9f zU-l02h3|?UIOMtFDreWHa(3eP;?7m1btN*<=&wV@Qu5)-!5bkbH`<-JwfSx}`tJB% z7@en~*DF$4WzWh>Q+>RD&Rz76RL)GEGi8u;@8;)6%9n}$!A#wQE({}UhOD;er+XZE zvBzmgjLbFiu8DKxtlf*wb zHQw9L-h~}qAap#S=}3VHxA3O ze~9e;zgwRF+kc)sUrs)+E>jke=XfRA!Yt+grt?GHH{b6lb3RBGJ+%Habn_N2RWT$> zW|PmeHX{dGoH3MzZ6)`b)ha`n&bki@&RGs)z*UV1l-WJ|>KEqf8q}m`G6RD)br}@o zx{TlbT{fW34dF#Cn zJ#V1D9h#}qM7>2n2^K*=YSG^SGLA@;TlCj}*FwuW1ZdWm8PX({LxcVjkY}Hed126J z4})31Jz>$`2eQbQ;CpA*ZCgM|zl?<>{W8WKkA0CvKdSbkC(GoIN<%*@anhpS4bH{? zL5r2GU%sJw6S5u*`p2m=x8c4Iq|O_? zbf7u6Mfiu|Q&ke(7X1UD@H;`OMxw)_-=_TCAXOmIYSC{|{&p}2e!WFMsr*MliZZdm zqMuOy8jvDMthVSc1?Lg(B9Nqy(0_L`}%|)#;_Py6Cz?hglHq2z7F8 z4ejPyzdbL!;nBSC>NRd%wI_Tm%mQ9`D4Y{H80n52W z_Bwo^yN+eVaVNQ+%{|A`>FL}7t|xO(aXp^f&-GYtAJ-$fN4bhNyPU|;yq>&cc~PUu zE-&1be=t8MA{yxiz*aQSwXv9byr3U_be-c5jE{zU#vdD>7v49q9c^=66Aw=8o@myI zC^%z59{VV*6{m+zUpP8W}QS1Jc($^{d1EuFFeN5>U zO0U)UzOLc@iQ1Q|{oP{E-_5sd$e@$z|2NeAtx69ly+Y~Nl)gd2=kLBRk1FlHCyh$G z@5k>e?Yq2e@5w;rq?}>JfV4^ z+!tkdR11}%0$dt@I* z&|MicvS=gh-^rlAn?XO9LH||;{lg4eXZ6#o1GZmv*>w{;37TawLl+oa5W`(exAb6b zg8j^^T=xhZM|hv;WVS-K>t+8*<|;>U<>azU8a6T6RyCZ>=-FmxV=^Rb8;&t@dBbr7 zD;z~mb&`i_HG@J>`8!(Kp*^SXD z%Tt+lw^N;Cr&PS*C@PrM!Ap5NDc$!pT})F^%lUrqT5HejLF}CGdA`5CXXbhKto2^j zyWaJ#`(>~F(b=_ik|af0BquP9 zYqMM=lHf4=8G?mdR5bm*2PYOye0ajlnU74EHmS9|xFRmET<{yPAto&CKni)&COM{% zxO385E#y5)1qwd{<`6ERFg(IF$#XnD<6L=XX7LbH<9GlAHpHAO&-qBn)JN_wn)=A( z>0oM|-uugVh-IR@5ZqdZA)DNyqDfPVCKppu*{`*{I5!X7ato&uEJSletA8@fVwA0- zqFmcuHWSe+v?vug10Kj>l1Wb|4kG*`4;RgReA<1}A1<2VC_b+|VKzyEJhNU@AIgO+ za*B!`m>w#1=jscDALLDaYy$N{=cYGZ$V+8ZNg}wFJVD`($dCIcI3_Se z>+~u@UXAEC2>x?C>i7f5cF_wSHrM;qqqOWN`5I&VYp4 z28i-;-^|dc;9UDPUddCJVp7VS-q!M{T~_cE71{HL4b98Vze_|lP=xXdSXgbbXb4G; zSr&#=Qg1v|FBv|X!beL3i)T!5OzHLT)cYQIcyh@NH{Edm^AS`K zsM&S|In&KNkWc#eHN_Kse>XH)(BC<;m`Vjb+(b9rW|R%EpJUH?={7Xc*Z-M*wiz?d zlkl8goF?R&(;Z_?MyVV4XL2b`gNrB3m@;+Z%=4$(;2`Dkqja0&kt|Ns$Un_Dif6>6 z;>V^=ob)I07#u7X9?y9A!}GDH^`S)BZH}NLB4|$$^m3iD&btosEZ4CR zF+9Yj6yg;w>ywZy|G!+PqmjbXQCzczj1&I2fvYU8Q!#VbX@k3X76%R^rDvjMb_L@c z*>x&Pe#tv9b=$zwvleF$MDrPh`7d^Rol{)%6D3CqM9selcqtUUuXi92&_<`iY`>7% zqKaeOyPT=o=(KgPn*{VfL+E66pW@mQH@2`ILau}mpB16u&nEw=v&?^6CE!d-wGTW4V*S3IMu?9k1b3c~mwR6quDLKAF&gNwtbZ?&*=b9HU+2m*I zbG6ZldB|-b5-m2@ZYftAoRsJG5+aEqw9)CH%i6u^SqJ9Dz5Q+SqOGpeh&~q4_qbU8=Ps=%#&ss(i0g50jQr1omIGQ*oPgsP z>^cSRQ?NvjVe#@mx7!ff(IL0TsKh)3&b92cxmp-vP!bT{T+1e{C`AZJAp!ffqAmjN zBH&a3rwTYtz-bJ&xdKe!yxtHP$hDlxtNJm|^0jMzAITBxn%BqT+9@gOvAnDua``LB zD`z)A{YEy)<j z!4fUIW09}E1pH-q$J)l(3T^k=iVEu|*MyZ1#r0!KzWSS@p3w%ysFg9eh`6DW>N-_t zyXX4BPew@vo(<{v2!>q^=ts^-Qog#4yx+oWbIp|`M=#ep-a7Q62IFE)BPso==-&~S z5eU>M@G0uyz%%6WciBkaoj_HKN4eHemU*4`>N9aqvf{~pxd-D6>%sTh*z!%0NfbWO_Bml488({e08f`bv7cRG)S=3(Vf$4=}%D`^xIP{ z5)|$aYEn4WuKuEDaO<#xN?hlh)E7Q7>XtXF`GHc!P^lPtBg)^FbWbSBr;Z_qY-n zlsO*Z5y-9{Rn!76TCmkUFhA)m&QbD22>U&ybmRzwCIu*E2IEVS7 z5t*&5e;UOB@e>ge0v3?N#S0+^ag8zwIfiPbcoOFnsBNw~RtV&Z zEu;wSdWlV2*j7oft0!%N=cp)T9Q0+v38fTTWOFUXpQFV{p~W<=#XnS`#kWX>q7^nO z?t_j#MoG;1UrHjPUqyi_C+I@)jDtpD^}S4ZPv%e1Li9;K`q~LdBPml3<3aykOp!BYMS$&? z{X1!KVXb92w6NAj!BJi5Jot~O6g(FX2xS`yy(UW_D>r`{Nng!MPWQN@qp!!NGBXh8mk!jrEC zHj=hVboP!>QIfv!IQt3kAt-U>DvOQO?p)y5%4RGH@hvn=ge4wk@kRA*ds_ek=> z!=PjwG+PJ#>BeaE3F;v*2CL&%lAt!&)wBAIm+_`}A5gA(OTWTBb3XMw&*X??``#dK zPv#n4NTX0CeShUBKS$9h(>EU|78N2INTz|U#-slc@%(lvnpL1~MfXmn=VQS6>K1?J z8rz9H>9Aug>mbfDJdFUrnq*h?VV<5>DOvT71EsSAsg6DV{RoQ)#v=l?-jC{vFeJ=omge9Gq2^QF z%kW|p6CCjJ@eIN*5#bYE8(Bx>xVSLz7V!t$jY3~1$`?=Ocnl3hkuCK70sTVa#P}KW zACGmYka&%H#?UDpI_dtSJa;cq5A(r#VA+^ZJZxAqh+?3UlHuhnzUL?!Hh!b@GWq^; zp5k;=T_b{q5s08#M392^#)x4`s~GA+G3d8Iwh>W18{fIk&M#>{u&JzGnI`PEEH&?|n=CoVmOREN3O#D%` z^qCGOGmt2i^dYtjUmBs5 z{kRYM+0?U&x+wJw+F;d_4#%##do#z=7fyxO(O2&79tf}8-7}myi^el&$qeSaQOcb6 zYM8Tf8FMzQfTL*ELw7`BxPp}AH7o8Da>aTW1XBRT<4z<7)!jsnCod7+M)KCuHxYU> zF1MG_HZ(KGLr@)kN(L>v{w9pIE$^`8%6_I487f!&gMxUnUtWX)m34%es8NyKOMpj} zkfb{Lpp;&m#EtC9c7Rh+x9MHLZ1-fl0a8Qt9);Dcmsb!qT2Z?u!AFGGLGa&c^DGDi z&SGABfm}%qH3o>Wh+ml)Q>IuN1I==x^}%iy2^Kp7bphEqL}_SnOTPyKPfWUB^5wBE zudDJw6xxcJaf+)RBi@xPq3U7%8B$WS-m)4xplvcpx#~%b^)+iXsyW%TUtY89b|Gy_ z*%r!4logutAkwr{sL;v%16Ls)knd9{3(8NIGs=&gvKx@^LrytHl%U$5aVVs=10Tin zEyTD4Li8{pp91n1E48W9CQX}O{5Z_!{tn`m+S{Fu)ajE`rvX87e8YL@ePI!;4Mnt# z*+=rFbG`#SmQ!5S`mj)MghKgFVGIGKc7!p!7h-5|2Oy%D%>F57J+CaDL-##AN%FnM zS=Wb2ec3FPGLyb&=$i#r{h|vkQcV;zUy5f9o^SBbWc5m9^$$PyIhHGt~qyGQzKoh*`O%_@nKRO<)8q78Sb&<+J< z62ffwE5TSu0z4A1hv4NuGC0qG7jrlh@HEiTN7StVTPFn5U&7Fpa_;!jmAwREB}cnLp9e+EJV0RmVObz5(JDDEQ%{!# zEaXd}1xu^sOi?p`bYPrOuV(7P{f4UA~$+ckd{mIm{@x$1VC>MgVdzOH(bN%6;t!02tahr&4UBgH2AadlkLzq~Nfs%kHoCrK zNs{v#v4nepZAG+ezC&_G+teoYNN!a{Y$@yjQE^;Up(85L%+qsJPJEueX*5~Bp~-pS z6Nv;L;qXpp)a-6Ydq#g0omJG)SX^mR0xhDI64GJ)1Jg_RY_F2 zT8;nN_-**cw_*Rfc6rafj`XWrS$){uSn_@TuKZq#^ z!inV5CvYNtMi|6&IGjj6J(m*`(OiJoms$-bmVElPoS2GQ4x&Ppoe{~Wx97y(Slk0~ z3>;1*pZ-$^rqDpFRDw7K4kwaNZ{oz^a6p^|hZD)Cf53_3AsxgjIGjj6{W(sYk-&(H z;cz1P^v5}|6x%Eaxf~8Bl20GUi8V4K*23XL^69s7;<7|WY=py!&_H8o_Y8s>+_T^yKJ;YP*EoSz@)b|zD}+?t zRXmW&X*Hbo2B$6NwCS9-jMJ!8BiwRM8_8)aIPE=7tL3zQoaW`UHJsMSX=$9+#AzEi zZ6Bv~mmy9WIIk4Ap z>6~ek6Wie#mMC}9Y8d~L z@yGzVldF^Zj(9PHmiu9%9<>3_XkF#)b^BgO0QMEy^`t06JJEHDL(j%S8x?`D&AXwT+uN~5}k z;#YrG)Xn-ZuH2_NrTwqD#o16``Hs>r;v1&Do;?F03*6tx6<1Rn)$ME>AXMt#!;x&; z2n?ckrsie*!~uVFUPd6_Gt7cz1B%jCJ;;);e%gP6BeDM!$Grac$!-h6tcdbQt+3dt zV$yhIFcoV@*w&K1+se#gs~VSPv6W(PhHs_ks=nOrr&dJCtGp+EwN>S&Mdexk0P@6s zTa`U6+O9DXw$cIfWcN#m`@}xZRP}ILv`-^tw#B4HiwNyJLM*EAIE#3kC?32VHNXUd zluM*dU&kmH)SFbQn1*zSIDOYcI)YMJs*d$28%s~Mn;8?6S{18ki>SC&mzTk2oFJF? zLN{AoUT$El@`9Tg#%03X$}lu|W}(1CyAjppZWHEqhFM_3jAoch6Q+n^s!W&%7)CW= zrZY^n34;*>;-WfW#E#htFi)B=l?>xCVV+``g(l4N4D*x;vy@?|0vnRwVwk5*n13?N zUrm_R4D*Z$vyow*HDMYUW|0Z=Z-$|jawD$23_~m12IersEH+`jXBb+RH+X(wm={c# zlMM5s2@_zLmrNL%7*&@qF=1qedD(=ygkhEjF(q**H01>A)lV3k9c~Oo2~9;Ptk_g; z#~K4s${EE}d@45y3gN2DO~t5kji3-NtT@Bqs`70?AzXF2sd!bsA}EBb zE;kjk%D)K;;i}6`#jWybK_OgqxvAJys)9neu;N!)CMZ-S!-`?$ifQHDfE+~YnE;kkL$}0qgaMk6eVqSTv zpb)OQ+*I5vI|&Nms>@BqzVZS=AzXF2srXk~1ch+b<)&&-c?t_+R7MFGRvjvT6%?u> z)#avYQRx#D!d0{CU{u8~K=C!>Pp>^|-m);}%j~=l_AL^gc@RqkWi*Sydhfz#P&*ZM zZj;^fPcLNJwO435W1o8DI3V;`=j@l|d-`|5EU=WA)t~iF7|dc~)JZ9;rx5vBhn!#d zY!J#iM%up@0bZd1nzM-(>-%2ABCohOM1F(GJE3HDj> zK#UrUQ11)U$Aa|t5NV|#y)Q^lg-B}z={Z4igh(3%X|^EU9U^TKr163@AVk_KNO^*U z?Knfj?SgcjAjO49p9qpHNIwA<*4QaXzoqdc?+TGV6Quouv^qrEFGzKQL}gA0{6dgk z6Qr^b=}SSXVkF0dBE+`>{U}F|5NIFJ3UXM#o8$WlJSorcHjcllz|*ITp#5slt_BUo z&Fw9a^Ukudl3i`#^RM9Hq~Q8m@cbH`Pr|y7-E;MZ2cj?wT%X3~--_z=qEI)=6*}Y- zn$5iBimwI8=Gt-vrH`m=b}d&N79g8X%M}L%$Y#)T1zDGv*_>IfXc8csCCe2%1jy#a za>X_QvYD`4u}Oez?#p*|NEDmx$`zDP1hV<9T=6dfvKg&hL1mn%Yz`||EEgb~waOK* z0mMm_hb^>=ik&kbwLtK(tv#Pd0H|k@uT%ihaQ%-FPYn4UCZCmj_mQt1`NohBV|X08 zBwrl)a>;iA`EDT}X33JjH~Bh{?;7&ant;Cx`4Y%?A^9-Jm;7<$!-O6Ui;hKJX{aZr zr(&hNqN#FDLq$*WgCN-_9<3v_Xr^=g6gbt2p0pEHFfpJ^Jcv@Ww2s*H{eqSX8pF`6 zW{W`f26C|aVb2uiuJ4%+H%EP`XJ5ED4AeB#)4wO$u>Jto&WALV&PILGY0`@k8i|m~ z30~a}0!jbZ=|F(gp~W0__;HK*fQfm1fUntZK5&kgT!9#K3af76GcDLX1(mv;oqg2`X(vH-YyGY|#8!SfM`QBd537`8sj_K)AW zpYI=EsUF2C(tpz_(wLHK(E*I2gc%!fTG1T;08Hojp*u|H;=jgu&z_i|#o_c52;x-j z@vneR){18M6SX3Tzk^mZ%im60+Jb}xcQ$H1z`*}YJm2B*!+xH%IY&ppykX&#=`{Sm4bq z0M)~}>Irtrq@lsIvClA>&>xAqX{A`S_w9kK3~wGbSr>V;a%RXCGl3w`U5@zH(6C^# zJl(ovr-j^vH{kk{uwIU(^hBlX)c1&Au6PGwj>+@Jb@&xLyC=(zrpfZWT_-kM9M)~Q z9e$;dUrm;ae~Sb9t4%*78kD1;Y~5usz+-}O=5Hy$?};|>zX3nv;7G{b5B%;J1AmS!Pr{c z-+^yS+dqguTwCYeB#|_A-iu^}w3I7oe(IkPS`dI8Pq6q|x+-WH2&j`lnS;5z0q>(f z5YGnr9j^imwBoJELKNF#I!M0W@Px{M!!Z;2?|i6qT`7zgEmxEwk4x8;ae!7bO4pTh zfJO|Z>s%b5vm2%BDmbu&0d5Yw&VU6Rc!vQr9f)?uZgY`GQga;a#DbxOnlp>R`kNcs zuqr#_1XLO*FWQ#%0aZ1}PL;VR>a0{x2OCOt$-hLY&Q*`nabBFW$~(-;`z)f+K~3Lp z7#fzY+Xo>?Szo5heh%EqfCC&D#DIewC}6;UIB*vOzTm)E1{~tReGE9vfvF6jF&g5T z!GJG0P{M$(I53X^Uvt3CfNuyO(~t+InZZo4%~eX4GV+0~pKf!NaU9PM_oI}dE&_tN z;(n0fD2sxb+zda0CFya!jrm0-Vpz2xLSMxcS_h7>)qo zxE0-N8IAzpxG~)yFdPBEahtl|WjF$WrLXO+8uY zyMMD;%43k?zsOVRg)XiZx%hL>;Qg+a*^hl1e%#A^KI@%AuF+NMY0quV+1ZGo_$E}A z=l*H#*Sa#n8-v|n0^oIMMgqZJP2J18R^N@#%{YI66buc@KN^(Z9rFJYCV#_0D1L*v zgMEiEUDPJI?j^R_={ghbOfdF4*OB>yQ5*JU{rSOhJUy4IM_p&*iYclC|1c-z&U2y~ zXo{*7f{m!i&(Dhnqr&Dhs~3EK4x854dTvK-ihCFNqnO`g9VxW9zHI)SXlx=nZ=xOU zcnnR99m;kTf+47L#+GGNVSUiPg}!$Wp#1nwpp2OIyJ;K`leUayNt7#S+=|Um>&fjF zspLWUyieRuqn}>@(^_ zx`MlpM*aooE5mUX{30ZhzZp@0fsjo-nXmp1`_QNmf4cMwjb!TcHMbs3zUX{)3HM>) z`@3BAbgufV-r%K_IlIu{uLnZms7Io?j16Y$@t1`{hbqJ7Pa~j9cI7>!3!S2+#SYp& zcjNt-*U7IfJwoxj4?3^)4-O@%Mrp_y4myptGEV4cQA-uAGaWRz(w;SQxbrB9a~=q0 zxW0ZLEdUdT6KnM+^(PUcmL(|K+HxKC3~-7;lk8bXoX7LEc8ZGC<&&(!vCVj2=buf@ zfC)c|#L~!Fytfjxxv}2C()ZTgJbezB`Yeqp*{f;oW)3$QoOW}V!7GCXUn&fa;iUet zmznx6WNK=CVCw74rvA@fRA&_4Ocy$MFTG|B_Df6xr4oE_~IwPbjq zZ`CGKG7Ei`2x>Zy%j-W*ky406g&(9))Ya+8q410!W{Q*AT)yAV!oO$=&(1!mtH}uu z-|_t6$C|>kBNpmva>B!Z`gthLt>W)&3Li&BOI=M)c=(0q4}WlUDE;j8gSwiW@bJUV zAO1yCcy>BMT}@7S_>SifKh_kUod!`?lM^2P)6dSIep7gM`a)ezPI&l*ZH7mA`2wfk zDfcf|PrCw%to6@$Ta5ZJYa4}d)D?#6U9P~WJC&*16Vbl7*2mE#TXO7GJpJP^{Us>l z1p4do<~A!-e|YIn7KMNHpoaJVQ=BBj%zs-r`W_T&IsWAMaO@f4)~ z*AxWL+m9F?)c@DJ&ecEnEwjBJ*xlORBMI}r*qiBp^4^fWNnx%nEt~vb*c&Bda2uMw z@TOVQ4ZEP1-E8T12y;stmQFJj3%qP~LcfD)In+}zfL3Z0Id9*&+L_LSL7&w)AK$v9 zwhz;}1^}{$XM40Mpq3@ZU)aJAD zz}jp7o#&U(MbTbj68uSK(+-CSvx#sLDzqN-qL7FFV=+6{rPh)Y-u`ri1f#lz+V9}_ z1?OF8B^BHKnO6l*y1?$YLN?hQ?<|sK)HBtwv>Sgp3LDmDmtr0q9AA2rrqWaGi?4{; z*#By|vI*56yVlB@TT!j(QRLS)$*wg(qr=63M_>OP4NSHw*#R_`a%Bw#z**VuZaOg! zXBl^DxKqlV8QdAqo#EUW$erHYN##x=cO>o{!2|~~o4L~j2PbwmfCkN^H4@Th_iSha zj1%tcXv7ctfNv$~wrv&H6Bcvv4HSq@DC{{Hz-l&MRL;}tXuricD~6-{V4|0r?<`Qy z+O;=flaPj%OaoHpzvKCY{yejrn#cJ*zvWA8u8firoq(h6ph`JWXyms$72_kU9rBEehT{2ZL%s#s2#b8Dw+Diq zlTgQoQ zpO|}@6Wcy9SH_8LpP0L!6Wcy9H<%OKJ~4M4C$@cJE`bxk z=2mecotR@&ROA~!Hg`2nIhCSlrHwuM>})7cNa@b>)sf^*yRTb7yomqJMQ4>vc0LkTmWjs7LQb^r3~XjZi@%s4m{!xLK8m*hqD z)PRa-P>}`nI9pm96!=gX5zeBhvMCJGzm6lH*D~aLm9=rR8OMkMA2}Y5y`PMN>EF*7%AtYA`w-Y(pmy(fErn8cBT5ffpiL7y+9RJ*$h<6Bp23Z5kSf6 zVkC{(G{pY}8h=IvUAJZIvvnx|wo|LL13C!YEA5kSdGHIl^@IDfKIgUKQvl0`=$Z0j++Wr@pTMbXV56vcnQ6D*3QM**Rsw1f%~ z)Ei^XfF}NePzgLnY{3#pfs8c$#wcNF`t3s`~L9ZkCYhbdgU{Ly5z3XNpwYUvt{?h;hF2 z*^XOq3}9e{*qt8TZTP-b|uhV`DG;7=r&fW&!LwDvU1HZZC4 zfA;@sdbf?d#(Eb!AIHxVoxqg`WoIo?j3ieqg#cUG*(d_sV<8T@-ocK#FFu0t4wkj$ z3hI#Uo=G@EH*JrY6-w+M*|Yk`I%X&?Z=8~~+4-yg zIz??zTn%wXJc=jjlNOAX=w0$rpHr*Gb+M~`5&H=o9Sp_ph{Mzoi|~Oakp)gd=y#Jw zv^Nvl+E6BLC&8qPYg0gFdLqdfKW>Y|J6uZl&5CPti~j9rloo4ESS-#L{L4a_#&$qx z;6?=l3o+^$eg8Ow($;x_)HRZzt!pIzeC}@||4jH%-?5!UARI3oFgC-%>MZk9zpoGB z{v+fc5DY{h0yV=yAli)4uOLR_h6mq8fP(A!SURr(3oX!?)(`1e%`v(#g$jLLI{x(! z_F(+JxC(Htx`NID^W#qJZWCBg>`V9_Bt1;~e=OOGcB{Sw;cZb@<|El*XH|t!TO3x2whR4 zEhVebMpU9rdwv=G?p^cm@r`Fy*6F3_@4)&Un~Dr2BrZIdh+~4Dgte$1YcXU3szJXB z8suvmSq?1SO;v@-)kb=4s*ox##M^_onCsp+n>HvuPn(AbJE{eZHf>mpTJUk6HaW?r z;wHH>0X1)nTyYYTajTqMfqAR65hXv6u^ktEHQCmZ-?oAN{oRB0$EJRgr*6g`80MgA zVH4ilNy$f%)=1RfAWEAVr;Uiu?S4r8_2hop{%QBk>gOj9$@Zg`PuX2_vNkjkFN3Hb zojf4hcUnHzF4Bg^^cdNQ`|WxZe2hEqEIV_xoTNN;TV8i;Cmua{z$V*2x4C`~*iJU( z;zil4vvPR}baGyho8^Gg+uS1Z4t&aZvm)D?_*wiz5bQ4bN1Uuf#b_Dw8-iD3z}S(>yC z+RT_91xVrc9!{k2gymChc9ME3xBHjE3Y5B&d*!^-d0Be#LZ>x1>qK!S{La6^=k(-e z9hS=-q)xd|lqE=H5LfgXqkb@bPoJx=TtT-NXhY+2yYD}b#-CC?{c5uuIgiGtbGv_~ z?xbA($k6x{Y5XMD*i9POkj7eW)?T^1m^3cshU8fwG-d|IosDdN#HJpzsnB;@EBne7 zL!qy&7DWmp5FEk~b`9x%9xdCp>yhH;NXtXTPvv1N_XYTzi=bt3sefUpZ8g?Uw88Pw zgX5wHCu+muqld*s4@>Oc=)6LcbG3HbU|ig|NgEYolmFS&y~)`jxBDh%9IlG&F(?VI z;o}W(v$$N|O#i=@=L)3OQiCApHP|P5^QX3q8aWc(L5s3UzZI`Or&=1+EcF(3fG1|Y ztvk*TdgsNvqHsB7OO!L()y`tpQLMi=#FCxS^(6P>6W^1+pN`ymn-k$n+DJ6fhNWcmtOd2yGt_ zabQ&T%}CQIuF&^wEe+9y{m&B~@8GvKf!BN)HC6^xdyy#=cW-q#=m`eN-!T3X4Q@Q%hx}}`5=$gCM0z}rz`Gk(<+ydZez_W zpl?GcUF_%lhI-|7Ff84ykk5PMZ_p#B|Bh`3qep)F<4}*BKz`99=Y3;SnQ$9&T+|gl z-NX@%pM(9W7{+<5FWxL_p5j^hI&{MRjXwR3)(K8%mEhp`${25?W3W9OqHM1IX_z12 z4M>_})1+-dGWl%@m`yksN(6UKYR@gAE7!aX%Xl_JSW{ zD@?g72_~2LVIRiAwQ(PkB{{K8wAu>~6`UJUa8Pb=rjLRJ^xLpp?!OxG#2E2l7Uk9Z zLAJkRP(8f|U^YS#LC2R6f=1rmIDakYcZ>(=V~}v^D(+Hntq^E-Z75z#+ZAY{O@)n+fzeBp zvnwRf8CQe~P@>!61Rq}Fru_dGtcy7n1hC5s1I`}40T?=g^JZ`Y$C$y{Da6TUfhpk9 z=b+c}b>#dL4as2s=KY{p#*C@Bq~8u^2=pDo&g!ioiNt?T; zE(V(G?GP9nrgV2D-L| zBb1)TQQbHyl~A1+%30UoY80~k|7vh;G5l{Th)Ev>^%`7MawsyqD!2?@YPSwAfpOo* zK5(edr}Bql|5FAn1l01U1@CvBOZQWl8qFlmb;w=6LDx=CA{=z^@bR5N-K=#D;I zwzCiLk8-^9mr0m+ErZmufd7*h`q53hTqfMV6A#>_6bIb(0$x$YVY_g<3HJyLMtm!T zTQ1xJ;r@&?5Zx=>XN9}R&GE;CnIM5toM(y! zCluIu&_(4E>W-N$2Q%`Mm zu$|OTz85}%Hg;dd_)YA;qNV%`6rdI7o3R*^&yV)9^uCFc6HuW)E+*%xMIHJc$3!pz zH&)4gSK<|65hc4NR7G|gP19pgfM3+!YC)a%7sh=w!<7cg9vJ=lcW)q5%!OeUMct7f zuFfSwoqX2@uFfFzu&_6{N1?LkQq1gv53m0FyHsXS<@^_g?D0JzQEkN$+~6CU2)i4F z+0fccY^T8H-^-KB?l|Ai4Q&MS-GWyZLyNMk{~0xcb#{tY*$ky@i!n|&WXtj{{v3}t�kR8JMANBP>I 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 z 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 g-2Hv)DBImdo0k1hKXk3jn#>4T#gIu1 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⋙|fZw>+QP7uAfhTlcKS1G+Rz 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 z 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 oX7%!QO$d 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

1uXGuvmka}>AFZ09I$ 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 I>F?zK2mTEdE&u=k literal 0 HcmV?d00001 diff --git a/src_v2/libs/glfw_osx/lib-x86_64/libglfw.3.dylib b/src_v2/libs/glfw_osx/lib-x86_64/libglfw.3.dylib new file mode 100755 index 0000000000000000000000000000000000000000..392b8b473e18b990de8f8816bc02462ad936f9c9 GIT binary patch literal 231576 zcmeEvdstM}8uuPxgc96XP?VZfWSEvxa*`Bt0(7H;S>~mT&`i_HG@J>`8!$7%W;aI1 zEKg~F@6$h>jg=%zv?NLG@Fe4znIK6XDG@$Nx(v@`5Q~cL${TYRLq-1iqFRNm zz|wP}pcWN5CeCz(S zk{KK) zPHZVJu87Mk7yJfnh>1u$kV4+niH^x6?ws^i33-oEfx^##IV81`UZx+(b38HqTzO|^ zat)@$aR~-|etFJEOQt;fK+%*(CrtxW%k(}_#^o&&<%QsuX*6V$TU0c0a?zw>N-F!c zlo#jWp_^~vbb^Iwj%e{uW?77~RaBH~yUS)G`h*sx0%yPjIZQI?>BvEZfAo=}8Ba{T zf7&BO(;da>7dNE;=x#G6WkC|J!yj0O}5Ny`Zq#E;@ z>)9hyW;j~PTfBqIOBVqNZXu61#DXs5O)sA2nAVy+pOBX#_z7+yPf)lcPCK?wdI^qVp9k>ZJy(A>9_m)OL$Nfh}( zuvs3eRBQHQ?H);NDKGUqF0Wanh+wlkpj(qS!-;OAHF+uD3;l#Vg8v73Qyw2rz0kSo zO&9V~8C8-9ZXr)lxFho8f$@&<4AC;ZijY?=`VE5rTwX|2tMZz3p5B=vKM4LW^=;bJ zsnZ@cly0ftm|wWO={Ff1yuC9Zp|$~{eB3`HJSsTXehpXg)TNk|GN-qtJZhH}JVizJ z{9!}$a`W#JQ4JKKd;%6$TPzwvl4F*IA(hk{57kSCkEZa^(!k>B;~kTGJu>C~2OpVK za>GqGJn#hkl5~|Ml@dSk^hJQa7@^e&n-ca&Y_yc#0rD=1mZ~wxA}f*XCZumTfWG!< zXhc333yumIsrlP?3wh%_J@1jQn6zFjj6Z) z=jFyU;8?|ogEG{IS99$)-KuR+wM zmP{*tct)?BX%nW6zk&6!gy=PDV)2YAXjgjKIEhI)SMJ5o`cLKN-#&DTqjkBA6p}j` zzL37tZ$sDf+@I@PJaN!8=cA|~P_y+2a;BMiAfNQ_YlpuclQF_j8>xQTAK z%_tjSKgXVP(`{&?um3asY}2QoC*e80I8Dekr#r@)j8Zr7&*V~?1{aT?K6%Q78Rt*6 z!9mL7N9i`lBUzlNk$;+R6wio>#g9*!F!4{~F*sN(Jf3mzN9JQs%b%3HKhMLQUST@q zw#+|C`Ucp@{G*ZV4K{P`Nm4g(QGHpS8ZGH4vE2n+P4yT4wqKhC+APp!fi?@YS)k1V zZ5C*=K$`{HEYN0wHVd>_pv?kp7HG3Tn+4h|&}M-)3$$6F%>r!}XtO|@1==joW`Q;f zv{|6d0&Ny(vp|~#+APp!fi?@YS)k1VZ5C*=K$`{HEYN0wHVd>_pv?kp7HG3Tn+4h| z&}M-)3$$6F%>r!}XtO|@1==joW`Q;fv{|6d0&Ny(vp|~#+APp!fi?@YS)k1VZ5C*= zK$`{HEYN0wHVd>_pv?kp7Wn_g0wWdm+Y!SRZE(8c@i{uUZj~Glx@y=JrH=cw(J|ig z;L_iNuIA_&6SYe{yJUA)T-I22+Jb9Y9aGCr(`C7`XCbVijgHf9kN51F+tssuW+&Ha zi__{lWtrE}bvjD+`~U{ec6q^9a20RnB|R)sU|7b%jThpk$cz&iK7Asta`pejsmHqm zd2nMi(R}()qU<(D&;b!#ND=gMowClo4)QG5u@Esl#AOuX6)x+Ou<pT&JUv!qZV) zv-*q^fw+OIEUr^AbJl5tJ9`%g4O>Slic$VoTIUEL5SNpe?-^3OKfHp({AcGn2X zpWhLWHn^vn_pwd=ygqLaBnC5l^?8ltv8|#1Kw4Ntp1NNh*{BxmQAn9>O1^7bP383#Sv=f=6_#!EK&*}7b9bYdQI8;C@U&9z&~)dnZ!d3=OO zVhC+?I_R=?UwYPoxpBFc1KkhU)ZMw-yxw`9AhGr4Y?o?9{qr)u>33g$o4jbN>olT| zMf5!`k^i|%D~fTQ2|D6>+!rJN^PuH`Rum`TI0m~;f%_CJ(PLP={Lk$+gm$#g?J+7b z4}o(nJ8iCJh8UCtgfG{!Nh?Yb0#Zo8eyympfIAB~RlunNP7`n%gKe%L6F9dw1O{_0 zr}8R)%(Hy$n%75i#JcA8vAA|hih3+BYlmF^3i8U?6;QvCjdJ-yf;tjZutzTU0Ft}r zqBf{?O4c^nQwoHC8vepr!{`~p2C}D_IL@@-kTO`JWlt>f)t`XB4BuGWy|zNzeYT>) zx=Ga$AMrCYVj!7 z8p<-S^FDnB?nzd>*{@t{k%9{+voNl{j&FkdIxku0-#*!g@`Yjird26Cn zc{As9V+~&%r=)^Hnbr5S$Sm2t5;_%lPB@48qY;^{tbZEC0r3+M5(4Iv!^I0B2XT!u z2|0#prFawiR7FXyELi?wE=hK;MbtJ|Eh_}FdkZN7yIyM37PM9p?CMEd@Hr|983+BD zaKb5t7TH{jap!0;QfM)iYw-_NXz?vlp=gB-iszuCk5LkH{+E)7=vPr-$_ctqJma8I zSp6>(-kbRov=DugpT2g2+N$OGG|AR4H!WU%>P}QWv?tN1Ctab=>@Fy&{SYKndV3>v zOneFghm$FLK4BIc5G_CTCd)SGo{d+OqvS56LapWPS#EJ$Sno;#fPm8SC}#>p|8$K- z(*FS*jC+yIH9IXyBCZs{bs}$19KoFhY;z5Wp4Z-~kjkh>vu{-{Z4u&IV@}KcvAzfyY2pi71DNjwe`r zqsmS3W#0+NF*18R9OvCNmc(c&V27O>t~M9ihjG0&l{eQ(qtJRf!P27HKzSbm2G&ug zm>Ra4C`eOXX;1*lbRcEQVLa&Hiz#x(tO&3jvVSKnE~>E%hZfeFC^)Jsod^FBm4fHu zMrk0mD6U!QlH&r_h|yj0q~13tgnEvfQJ)O|3IUi zibfk&nFb|{wsADBKxbV3Xb{ak0`KofjX)D__hvpnKT68?)>3<|=P(5aNRC^nZsaKH z0i${-q+w^R%2Yi&WCRs;x6xJ~P}IF+ZTA%hU!{6#=-GvWU7ZnRlx0MLmfMkcLQBH? z-;0qX^3)kal8F9hII8$DeE7xH7Y)eYPVuRBbzvCmnW-WgWy>hNlq#Sd;9kKFr(m zY9*`AaiDZoFx9aqupeO&!8k;q)&)>qGpi%&PA_~zL5v~8eLgEV0bTA|3LPWIhr{#L z4RD9uLrNVKMQ5@Fa6(tq==N=1{Kh%7xdl^2AVnPF6KAu7NB_e#HYa{E39G4UZ z-y;4{yHV)xNcrN;9EYKSD6)nAKcHV&oESf2{^PX{6%xCtXAGUvp_3js%5(Qp^)Mf- z2bYZr$HRs-gD3_nDH%S_;(v~!VdFPSFOwfA=P6D{)iolhAAty}L(uLyLDjcr=HO#+-I*d}-xii-|v~hCb85WCjzZl0L+CQT!3kA20Y#VWUi8 zqifJOAS}y5qdc+pVbq9xl)u&ZzJ}tRX<=nX-P&7ubMe4moaC<3OI^pJ#`rQ!;4T^*3RxZFz?! zSN6hEWT@=^2L|`AxX9LK`FgBi5uCQ?Et5uZqqx1+3wBu z0HlWMJqoK?uW%DJT2Z?s!AFGGK?vMw^UeWh+mlyQ>IuNf=zOw z^`Wj72^Kp7bphEqL}{q^NWTYzPfmP5^5?NGuZ!|Q6xxazaf+)BBi@xPq3U6MAt|X@ zZ&?i;&^8&QT=gWz`kJ*0)tqeFFRw}VxR5rbYzyTi$_h<+5NTQ}ROsmWfvXS?$p0yn z1?8tJ80AM!*$v45A*UQ8N=WU`I22affsf+(7hqfhA$o+6PXPsrm73J46Q@oqegbCm zda>?8TpIo|;u%PFpET|}ri!lC@9Fou9q zJ0cj~3p3Pvf)G(mX8)A4o>vynq5B`1DEVLGtm`ABzHF9CnMq$X^v?vVe(^;XsX7Xp zFU7M4&o_8zvU(M=dI+8;@Vt)a-+00mnz!d8hO<7)mA!2a6=u&eWC;rM8bG!5-6Q?A zjuuI?W|c%qs`Ue4Q3}!kD5`Y{AbkuzXorF_5n(p`m0&C+0Uin1OYrg^8JuUpi#ePL zcq-`VBWhQGts{czFJb6aZ@mR#sn+P(U_~_lATeblQ3Yc4%Yn~07+SgsCnnVXpmmW) z`{a(+dXlbXH=&Lyo}eQg{f#~rA5a4BV~%tF61d1LLDG9%#ptgabXWEYs^W8VG4Q^8 zQZ?pNdU`*wVECd;ur4CDthzbfV3IQU?OLCG7@E@fMsn=V_pb86Lt%bHOAy$Mh{u9U ze>M?Stlm15B;!|a%@;l}40#3&GdRO7@NU+B!n1vwT>_9b8qZleXNd6z-XW5SaP=8ytoIAdB zWiLTk$Pl_N@*xRDev0V`xS6G>e?xfKCmbIA zzj}s*#47a^63zC1o}>iO6f*EM(mekMh*meDxpO9l`gSy~-7o>vY;pDUZ6k{OpyO*4 zYzz}N#VcxiK3XshkHmNeW#NzaVO%x)1f0UUYSWMOD?58H3U^7ddIT%9jw?Ldouf+E z$5v7ljz?Vcrb~|7x49V{9VieKi@;cHYbev5nRabyIucU=o%-ggK3CJfUGrvQX)w>1 zt8TZczCv5@>&mB?lt7#ajNW#8IGnQqsF{Bss4EOSl)I<<Z^Jjf4g1#~$DjUUdn~zmGb_<2 zW653`swXZhLQVmHrITjT9mRg1JUq15>SvR zI9k`Zz!o&5_)IR)7h{r5J{^nS6vGktK}o35>WH4kwaNe}WTBvCV>z%i(Y$`Sg1^v07%t z8aSLtKK)isT$ad)4RAP-eELS+w^nNCo>XC@rPhn~#(8Yj?7zT&NTg^;SJk_S>bt(w!`;Ize@HjUGkaT=9sgj>#O zBROpar@hB%HJsLu(|nw^hSM52EsfI}Ic)={?c=l#oYur?n>bD9wB~IraYs1qeNJoU zG(V?F7{MWZD>*HWLDqwumdI&aIW2|LwsRU^=c?GwY3ZC+!)df@2AQ95T3=3kh0_Ld z+D=YWIL*sx!#V9UP8-8%GdXP>r|svo$(%NU)24IU7ewsjl zD5ykFoWrrzC<}{`*S9b*ZyA*Sk}>5i2lhIST>*rY7qKF5U24?TX z!s4#xROgen(z&TUoil85Vmmy;66KCsHRE404jCYKbd?gMEtyQ&;i|h5Lh83tb{*Cy zaUt_cGO=`4+CRFdv!|kMpkRoU1yem^2vQGWUqXMY9hRdkhp^XY@oNx@Rd2R;N;|O! zkAMy1>l|M6`{gyto|$N*FyJlQLbb!R3cHqCDkK7$+zL(f0OVo_;|n*~G+sqZ+!a(> za;gObEj3w=DJoBgdf322bLeE}^~_e)&W&ZkXAob;!TvpD_Y`DK|LbMYRUJslwnJm1LfYbcJYcD4-=D)sN-NVaVR2GKiH^D=(oKp;9VBbe_UX2G%nMQN)V zWXV@Q?LXd;*nhHPZvXpbj|E{?L8s|{@m`TRz%6Gd?$XjRpzEeh>1z9j8(KnRNSh{%V0B3kjs0ao2@D@H!xOt{>=>IGGT6I7#cjYP~f56 zh^lgr33EHc%r{|1GfagEQ^YWpCd`8jqna?&7^cdE!H5BIQ5`U1$7}_dr%ad%hVhy( zPczH{6Xtn_dD?_o$}m)c4asjY%rhp;KN;q)Cd_JvS!lv+WSD17n0kg;WWxNLVQ8h? zh-)vy(8{)fIm|GNO_=W)hL+_Go?jT|1rz2Z!@Ow11R3Tf6NV;6Rpm=e7@1*SHeoJh zn57|1NgN7IIl+3>lg4I;2SZUpQxS?NHWk~k#z2&EMlltiicNw-xT1|Vp%aoPzYC5ZYrJ?;{}CqRpq8) zT5-3a5U#4+R9q|W5EQ~ym79ufMZTaAuBzNrd@F2%Lb$4OQ!%c{5){H!m79ulMTVdd zuBzNrtSh<;3gN2CO~t$7Nn=Z#NdX`;svE z4JPk|-bIkkpeq$2-xj1OL23$<-V>znui*kQYA`~*FGwE?(%-|Rm4fuXAUz!>tr4W> z1j!L5Z4jhcf^>J7v`LW03DSTtX{#XR2@1L3&M)%EF{C1*wve91n>Q-wO0&96dsy{Xi?o zVf}87?uaI&Yji#d z>pphxH5(p`!Ypuo8k>JBs?&!;-5|Sl$R{+LdCTsv1<2;wvYXOJR5rVo-G>Fp=F_tK zfB@MHT6U9liJ8rrWp|?h*(_Oh?+_rH7t8K#0%S8`*}X}CZ0^fGn!yPtgR$Tx<37{lYxCHdmWmrK42$af3*FiVyKy~)>}eBH=LYXX7J zrJ>%Ko{E+7il)jr_3obJ2SKt=I9f|;(M;#~DR8Rp zp0pEHFd?W+IEYfSw3gWP{eqSX8pF`6W{W`f26C|aVb2uiuJ4%+H%EP`XJ5ED4AeN( z+rKB;u>Jto&Vw|R&IWzrY0`@k8i0pr5p~W0__;HK*fQfm1fUn7^O3_DfPr5z?o?5a2i9FK`*TqhBo*UllJfe6<{-zH>Q+8CoF7F7I1(Uzn zWdU&aW*`cFgXbd>qoBA6F>HO5?H|AM0N+2pN6Er?QB$k zfPw#)c)r6Ez=N4#ko7;Irtrq`uy?vClA>&>xAqX{A`S_wRwM z3|}5LSr_@Ta;D4f89)%|DMx&3Xjm{wo@QOL(?V{-8*l?jSTDy?dZJQx>U+d5yWc^W zWAfa4+y4rl-IHWT<0N_Rt`nOr4(qnu_Pqfj>_C2PVlg&R7X=1zz^-W*TqZMWJQSJ_gM=9ZM0# z8UdTRwx?Rt_LNZKTy0N-V$$}EU~H-F@4&aF?H|M+sjc&Fl1Q35??W=eTFP#kp9aQ< z7X)C(6D)p~E;lU$0d*26b1+X=;QjOm;@J?t<5hsc7QF5(M6oTVz2xr=Pq+*?95ayr z&WB6amBM(@vbzj=D-pLcsTGn1Lkw!9R|>J zAlezb%|#wb&2g|33x*PE&P)dDZ*FA6s_cvtP-&pNXj|3?RMi|iRpz3ovr;_`Y$(+w z{}QD-S3OF{d2!Av?=UOxGl@b6HT}O~Xjr;#AA}%feVH!%IdCfj4sc))0}gVafC2yE zz+DXZf&*h2aEJrrZ9lUXozPz1HR-y2?M_3z+47=%>fSsz9E22LmrrBIy1#K zS1DP_$OpE5y3JL_aXdRbk5PuY2ngkh=OKopEDB|gX9B}fP65aB$a62l5da*|D$huU zBLFy-W3qb)aDF=@kP$)P=JRY~I0AsoWB@{hufG02RL3IE`=K*P z5d588I3F*U1&1SEXIK5xI^_H|^<<&{fz4(qk3&k}VsC{Hy11I<;?KQ<_q&>BJ^pFr zaWC`vtal2zMpvt+y|*=GXCs2*n^0Mv`=_~I>%s(Y40V4AfY+fJ35I$#buaH){Wn54 zRvYEom)K^f>rAvW!PxIyN9GSjZP=If z=LhfQ>A6BZ>N*=&Oi>;9hdC*Co)gtTQ&go8Y(zzVeqJ;b6*iw)z2N(E*tEvhb30;F zJiEvr#r$6DNTJ2`W%Fi7V-wMN6YX%vV`yURP`0BG3_+bUwk)Fx>q7P|^uK!m<;Q;l zWyG}KP2+f&w0SH`qU@$|D>g%|C%0Rql84~)J^28QetrQ=o1`V9@Sm`ssCM|aKRF2h zJ4*&)B!LKNq|~uM*Db49BYJh&EUxM>h+s4qjUEWl!RTUR2p0x(?6sPg-$RQ@i`y%r zknceHPwzLKE*7}&fI}lJ1SS^f0$)q%3hh1``4^h6498jUi;+nFW<&u7LN@hezWO`t zL!(0c>C!JWlBvtrJbE`a5d9tee_9*O2MHkhf$ zUls}DJoW%PqGTfHsk%Bel|4&Cj3MaOCx9T-b%>k#(D=!-&=R{^f_Savoxk; zucoz|G2CQu+Rb4GuLv1@sW3Q(llsR#X6nC?sj2mWsjoAe`agS7ol$r*UFhJ&c$sy> z`eso0Ji*Y?C=b;BK{K3kc3h~aCBqB-t2UXES?I4oP}6x_UjK25ltLsb{2+y*u1-e| zMP~dkQ=HW1^8I!e{zX%GcJ@JCO-^L^4(AU)))bx{u~1i&6B+)~&%S}T#!!J00_=BUv>1U@O)Yarfh97qR@GqLev(pjkYH}jOcQ}9ev8M3sG>E#IoXGH> zes=!!o5Hix7wT$qBEv6eH9X487dZV+xqpRv+7(P>t$)VbV$_FO+bD#it}tBhas@`+ zsZ80Pi1x*`K8_~Yl4Gyp?H`BfFF_e6&|i-;w^`x(!`puxlNgV<@w!MvBNY8|_n?De@fG`T;!l-Z;*RY4!l2KrM)p{vcGqDq>QO<{m(kb~Spa z_R;{F_Xnaf4n|g@a9h-(Jqzjk{>XFnjfv3rTGH+zv%bkJ1+D0NTMK=uBh*(HF@3w? za8aB@N~c3rNBbP@sR6Xc;Ek!|DMH%i9fRy2L#O|zyOc0n(@+0yS2=9X40on|T)c-iWNeh1TX zsMkG!R%#SEZ{NAvna+bjpVc@Y-?F4$7@^Pg=jhYvf7WMHAz6*|Y4~$}P+zZyCak_H z6aL+@0>&xohjBiLFxA&W|H7Tr=Cks^+Uvlb=aFL@6h-K=Ur$e72ExpSBFlz!0xv~HrXBTERto^GgYy) z8-E1~8`fr*VjdhCUwW0s(o+`}Um3Hp|21+&BdR}kt(7&mqFT|T$ggdZU2A|whl>G^ zzWzHJm~2(DgJ>+}ifRggv$EYibYdRPGVWA!r<6O>xigMC!?`n%JH5G+%AG{+NZdJs z2@Yg7ai^T_3 zYBpa~&eLjXzr{E!hNJsnqL-TQEKtwdwKoVf#^3qg^=YMu4g3DXAyQuf`DhyD{IV^_ zfyO3%(0MR$nc~_&p(N+H7VV+URc}H0dv7=$Z99a4O|DwQBA-yN@Le5j$5T+IxuUw* z@wEvW@!0XE!IbS3joq7OL5%G&5n9V&^?N8pY13c)hRB(AM1Z`ldld&YEP<+MQ#FF~_E;$Txm$?i!qQWXI;7$hPCv>9U7 z?;XPQZAHJUTIzQP*Ds#NLZqF!Y3Hhm{(`m7cky=!2H_Z3JEeY5DpG?+q|57ebR+#F z$5njbn1Pu}^UL%e-#5n6{^d}}Ux3Lz;X(@`F@(Jt*pQ|m-{xB1kJVS%-5DgDdmQ5J z-_IDzp@GKx5ZGRzcJFuO?hwu0j})gji`)Sq&=};G)e|aXJ6iF;b(5;|wdZ@Im62Du zD_=!;c~wjlPCs?PGP@-ouLihI$$Ua8uX?uf6)=?IPL8pqr=uL(N^zsdzI<&pofDK- zt>?jOpRIh2#Ejl`OulZHT$o7v83bMKm)y}}~j&@jUr zc-m-x!-_O2n|_Fad^%4kuS&Y)%FQdVVlT^{dx7we#UBMmZ)GQVDE_J{X*0DHXXJBA zaT$o4PB)aEik3aKq{FJpL(JLPQtn42l`-4u2VoJQ^j5ZUm#;m|l2%)Nn8J;wBzz>V zswOE&N&GW%ZD|vu_&~ukX45e_F`)-KPrcjrV32^T2sqUMz$SMbln9FkG9i~+oJo>b z#dkzjKmtOKAt_dWjYZ=8fjFVj#;VFM5!LyVhPsOs{&~{SG@O&PuUP_&q>&UOY2Ppk zDMm`Mqz#8+`cO&@k~WxtD~zNiwMZJ*=bWTjzTi++=-=-9Hw6=N8EdFy)O5qtHgO zeq-8&B4A1WYA>lGWKr7FXc>$?6oR1Z*aN(v(KUPej_FZ1ST~e4aOo@fTjX>BJ_P6~DAlg2=ZqS8bxso!=@GTAdT` zhhY5+C*^5=gi8~!*dMzhV)?5QF&phMtw+%MM;_28Dwv91=Z z8_!`)&ucm=-?xb`|C*Lxw$>pDqkRG&9;5T|4fexbKPF-T(GD8&iPL;!$t2_!7P2?V z>`Wef)^>XPK-xr z{+k=huj`;|NT&WS0<_F8@c)71<5V7yzZXXE&u)dkDz?AHk)ruAM20eIAyMu*O03fd|V%cih}^Ou%59iW4nF_4k7T#lwJKHV|yMJ+J0V$ z3t*g$+DKf#by#o0K1twZbvK=Vx{Y34a;HI0sHj+M>Ql_0udPpOCPlq{w$d>kUD=D4 zM0GPHR_({>t^)`o}t^D=uH0lC|0SYv4LXtyf(2aYj6fH|djRjFsqJ@=>2ttHyP)t9=ps z2^<{^$L@&3)DesD!A6kF1)P-S`|$rwLwi^DryO83o* zYjd;y?Pru0Yjs2{&KCm9!kNZ)Kxp7b1p^B)>KT3iy$GeP^8u-ABtcu(K>m5$-$?!$ z@T0zCJBdIzJ~&`(f`ipr=BIvNAHw}d$Uh(yh(H8tf`dS`8KYlGjK&QQ{)+*H*7LD+ zUJVvnpfRl<(y^LjbYTh=`r35->mTgF_AI#W}i@q9d zYsqihK>va6q55M}Kgm-!V-E~-P_?iT@9m`IqeyEc>TeLG&4|-R#OHQDr2cwxzij`s z`)2j?lZRycQOl?7t~ps7nuwP{)Q?UcknKAypKBLuLt}c3Y{30?JqkX?op+XDi)=HLaYBYH&MY`7^NYGYG|A8y2QA%v;nLN4)r)7d2?`lKi zyKl0o4Yrf}a%KA_mcYb_1llZ(T6=9qOpgMjaC;9YQh37hsWvM~J(b)2OJM~{-O0Uj z-s!w7y?BAsnwxc^xB`CXU*U6lbF&W1MOhH_5y8a zTyFRM=h666%BNp#mLuoU_;hafuhgBCs~;H}pCXN);u?EM<7(1a%gx#=mlu=9rQDD_ z3xvkZz__!K?T^^hV>T7~Zfjv***z5c+G?&s06b-NxZevY&}RQz-v zwsK#9&$$R%7MBJVgxgkQ{X`oaA3ZoOdT^pPEIxWzT=cNS?hVc>H91#nrwzu%jhnPl zF*f<1jolla?Q^?ta>n7R$R2}|@EShe05^-v<<0c}Yk96T{~4Ud>W(Q3rTq=GnUA454psyekTqQ#MCAqh0MRW*x=)dwnd~8C_3u zKR(Xss8v#5s>+JCn0nI4HM5E})Isw7d$Tn2{=kk~xTIv-a$6t^ z(#&f|W{FHcaY+GF5r;Q$NrBMzK@kT=W#5c6jp7RZ-`3C&UD*FT;qeZByL!}qdKtjy zh_%&|myD1Y7W)O3i$a6LLjMAYHD|DRUz}f}z(PmpSD(dg(3v!d(<-Q^Q`rF&0My^9 zk%v!uwGjX3`g^Sp3i(KXZj1DYynC!1EWjC31oUIBd@Lg`{Z=Qq?VuY+OfW`%s-BY%S)IsJERI~YCk zGarY0^OMPcgY{o;(3~v}0LCS_10in@Vr-%q zwTyobvBgIrZd9LE%_(zxm{Mcq!`9blvtwt_wSj}S%6 zYe%qYhvfoV6twE_>mPhbYXd!flXBFUNAq1tS^fH9>@t*VvGUO!y|M5dKT;+ z474&ws^Ui~4wy+l*e zyHKI+-qlTr*2qB*h1J%v9DIWNSq@HxpN)=P1R4W++7COSyY8ZMS{`4%oOdX)lKl1nvoq*v{vzhTZ^I_~EjDrsRrasrYYP1oO1Fv?_m3`(Zm<`3$ zoBbMMti?*dq~|w41=Y0}{4|kF)^EJVjF8<2!37;(LI@gpcjf#woZm4Hq>n+urK`A0 z!L>r5*|ni~Ep1n@kv0`JLIy@JQO+)qKxbSLDoBZLhZB5wiJS8OU$8FbR1m-}FAO?+ z_y=I<1kRhm2^?bvXU8xnn+2wTOP`Hi%in?XPcS5d`J4AcVi_~0;*x$lm?6-A2tzBl zq?zp52>_A3I6oq?*Ad>o3M6gLp4u2_uD3&AY?#vBm2}(Y=HNm~G%_|DX`^-qLdF;x z@U#^{2o?R~+d$=MBxTrOo%9$5`F6Yrm8(tNQ{ef@@faGfJczJsa~cAd*1LR&0D>iK z%8&}E)j>xA1k!fx%}@uC9{`AmuRth0jib79R4So5GL*Bn-qj#v1^!j<+G6C5P?8?JC?OFc|Tz5N^3}3xxYK(m-^daGw?K9uLPK6KX>6%Khv3v0I(p^1Hd1Mj z9M{)lsGiRw&3%u zjbRraI)f?U}J4vapWY>QFnWpL{QJ1a0iTit(G+e??3A7brk0&NpK*CZ8Ye zW$AqrCnumne_Tw?Q;RzEJ&uWB0&c95`>(<)!Xip`OQ?$MG@7Qzp#Z4EQS|lS^qO? z1ncY+t)dA^(daN1ott_Hjs8K|^H-!1W4w#l`~wRlbQ@D4a415h>#wLpDlASNtxFje zOIa}V18nuQH@dpOr?%4CQsQxxz*j~-+3kS?sGLL3amdA?w>U(@Z*bOdhynmYe^23P z@gC3t4plJ7Lpx=NzLu&1t>?1d_7kW8q*&qI2q>h4XBI3)0VoUE0`M|U=323Z7a~(O zF>)Cvb2UA8i_n-%a`OG0%=Pvtf*fOzb2ynN#B;MCTMcp=C-anfx(RYSgKXtwo>X@- z$ZQND+6%41C-Uu_`_fo@tyMJq7rOpm=tuqwz4^b;C76lI)%o<>_h;ej2Y04CLh)>j zU^C`NIMc0Qk{y~Kv-W|$w?TKvQpB3|_!;z9{H7>u0|jvqo^J!u7zRtGHuZP(;|sn8 zgmYr@g8#r%Kx<^X71djb=~2EmXpEwI2EvQGe+H${1wiTe8`T$o_bGDsCA~qCyDv&* zjyI7x?8Z8yH63GzOUk=cf7 zc-PYLW&NpIT3mjE5V`7xXW`(cp2cwN>U%Q@@@}A5^eunm=izQfN?0FKOFHNs5gZdg zM8dXH=yive$(O56=$Wg|>a8)A)to+>CkA5FoW7bTj(PgqwE1LAHD{ordB`S;ngic5 zMvc=v%b6!$^Q>T=M9uRd^CW2=AM>Qt=ghVs5t^qjgVQI;kNb|v^K!=EC5Oo<(olXS zB~0-yqBJO8uS5=-mTnKR!O=t)OB`+wqvLvlw)Q2~*5@m(S&HO%%(Y=X2ol|}eptT( zyOn_~bJz0HTfpG8+|27;?A#DFySeIDx#}qlGUpKyuLvC0M^eQ*h=Q~J6fZcqXUUmG zy&*2Mg%!dxt~%F-*I9(SD4cgXR-ZS#%MjQGJglz=BCuLtxE=+-SifQG7qik?4==ml zrlO5ka_Lo&_u=Ogn%;;66Pi@+ByvaM4pl~)>~M$b1R&M|)Vp9`_A{=qj)DGqJ?(5| z?Q_Ov1og46aFe>ASPd%#(bmJwm_m0grGWhX5Mn;AXt-b)_b1^xOL}G6A6yseFpWDf z{RMAA8Y7$PAEmF$i`TNQnZH5L)8ymouYjY}yBdY2a=JAZJDo_vG9q|qjjN?Z=)({l zXlE7?EoXYYi}XWjmK3(l$b71cR-KsioZ;Z=jb|VNea-`=C~RFZjsmGU>3EffLe;w{ z2dTW(yA}gxl6V?IU9L#-qi>i;XQB4SYu(U|kI$~7J4~h2C~00VZ&mP@KY}`V~y-8JO6=X>hZaCqV^Qcz5D_qLRE6^B|r_ z@X&j_NMN9F}M~SNNJdNjBJj?LV>#OhMp*x)$5T1DG(p?(dEP}fP554xf4o@AP z9e57l`3jGzJpY9A<+S*cLFGAWV3g$e3yKuEdH9GJij(uMjV~dk_%Ou3ezQnxgOqCj zD;S-Hs!XAO;H#LVyhJ5AI{T?G*DT^<1vom}8Ad+@(`k*J3w0 z2YGxmZ^L)M94Xka2|6yq$KmeA7S7DOvUbiMZp-q`9;%KWqYl1Ty?tD+I`{#ezH1}W zr!S?!K<2JlVw$9G!ig6DE?`~r;&6>NHsUuI`tL-C2Ch#-Tp#6f#<#&3u|5rZ{(&Z& z%KJ6yPI|wW^o5GhckYciZ*hYZ2T5*J+ zkrDdg{f98;-!Taer9|%uMp_<^TVO#m8LDq{1plRcF~9f<^2n6UYL)*J!QX2A zQxF984|2FZti5_sguo}|&hUcNNeq-i#u0;z3lN-!ig!%H*l`xtq4$QzTyua6Yac%E zl^xdqo=E-IVK^KPVWcoX%t!N?a_lf3b9(RtI-f1&?YV6#f%9cgMwJP&z! zq5mU8aK3hN5}-C>vNr=cs>ID$AxA3TKTYXK9^cz%PQ z(!GnjrRX?9y*;)6Wo}GHvf7pFVWR}cHXV%L*gh| zG&AJMnhbfNN?Yi^o5XwZr2@f}t8T`X`YipRpcBJP`u5)H;DLqyv*T8MNoquAcLpoS;UKL3^6^h7gjSRqncfBj`Lp!0@a;u-dY|2gqK%Djav~+ojgVyM z%fj!tj9ZMtH}LS}M1~)5{_vV9d?OD}PGtDA&zn;c5&uwAc(z)kt|likeC_$ew>O1v z;_;Ic8Gi2h!|y~>uRVYG z_NMR>CR50Naw5aeZ8bc~>nE3r+J^D*_=uKZD1x*oui#%2=D+9h2>wp3@=q1~mm6oY zi@VZ!>`B;yp&`MxNEv$=KTD2-;dx?R^n^;pOj8{pu3H?U>lp zYo@I-e6pgGu3%vX%M^s5AG~pwa4$ZcdLtQ-(P&lkYDN2C97ELy7Y^q%VkTN5Z~d{+ zlsUE-FAT)Oqr$_ki3+WwSef>@{Je?zz)+~Y8_M)EPC+{^4XxK4*7yAYbMQMqju;ZL zxn4@zQh0uT1i2C$DdQ%)miaC=f$Um#^7l}!J?tlL7fCTbPWTIKQi^iMc5?OxnpkSs zevJQ)tI=*7@{RKvv|+a_8HHtLJeDJ9y&9jG8IA53aVb2mx4)yy#<4N9SJ5*21BcGX z8=(Efgg41i>xqQ@A}#w03dmV;JYlG!CH#gpT1C46AumKoTTLp=Y>&2fflP=Q#KS{L z(^h%#nwyClfrIc&m7+ExgL-95z3a;ftyx`+O6M%CrQC}n$YdkWbDxZVj|wxV^p7=+;Nu-d`h&>Fd! zybGa2l7IS!v~~>C|Na*2?#=#;L_^hHik66rh>$@$z~Q(SCi&NeWXH^*)+i~Myb@Rt z{{aUPqY`KduQF8jLa@PXcVW1NZE#%C9^7fyt}g(Hyn#t=!Oy8IuoJJ=6Syx+(fUH{ z?~LI9QMJsI1bCCvc{($;=c|n(n3jDL$ydK)u#ksq=Mm^5CgCv4AqdHi;`*-RvO2R= zV^NsJknkR`*i%C=`kpev*uB;@ehY09Fox_s7qHZNL1hTWMF>TqZF$0sCNe@6=p9KCYJ&Quz2)g7d}%Q9{RVFrO^(9K`w{e} zm;_4thtp`X8!tI7gJHWenN+Q_C6w`9!DJ7^SlfjNJsE-brNL_^0dLyx8#Mx(de zojD@%(^@aSN*r~8tJx;gXc0%hJl)xyZ!%HrOgB2GcT!(Rv1ryC!iWTXboxIs6WQy^3))5)VAGdGf=|5!3$UD^SXeK7ZbF>`+$SmytTxchJ6Wisf8zz zMlxFVtJK(N$?J$o%UsWRH{m5IR;;?*dkAPciqYOy?=f;2p&Tq!<|42&#_WeFeo-(* zRER@o!!C4(3#iM|`XPpgSPY`M%I0DoC!9CoEnKCzR>HOpL?Uns6vWw!L<~4+abCX< zZ;>IJWOq3ULmp)U!RmdzzMN>N&ED)=Xi%VT%h;t)XXGuYN%{zQah1B`67+cbAOHay z^191p+~_$9d-cd*x_E?NO`-;CSy3JfHXD7(B&a9Bo9F(9zKO~1Ez#eieDhj6P}{EZ zFNSK_GpTveGT;A$RxmPlkzK^+MYZe)IBf}Nh>U%6)XTmtYGb=zEWxOp*}0r=4)~Z| zGiOl<%DmGI&hEh(9^nl6+9IBf2@{A<%iM!4ZaXf3(=zYj0rN7plW^~bRoCPFoO@7= zYJ+6VYbgaaH%d22eWbroahMJIBxJH1Zl(m!0(ko3qp0vsf;UGRMcxtM*V@1P^caEu)H@X7)TbCF;M>Tm_>mW>0r4~$tyCtk z*mb71APQGYy)WqNbS$XU_}r@lrl`| zLX>Jwp$TP}ay3yN=aey^6wtYW4^aN{H7}c%dbaax>T%eNLZVSzgnyMuwFMV3B~=!PddQi2&f{o2=0@SK zJFLc!GY8UeN;c3HCVBe-F%`aLB0r`}mnP!`#vj-p#V52_Uxns)1sPYf-n@_6Ec&Ey zqcfY1LYHl!e$I3V10w&pUx@56fw-9rL?`Ci`fHFJct^hw62sj+U+<>=9#=7GnZc8k zQHO)c?GPcR|A~^L2cj?CO9E+l@*Nn^Ykm&|Z*{+5Auyt3qxEw>h%MyPdBM9z=sL?a zj1s!cWphl^V#C43NNB5z4VZuPVux48^ba{3A?SzWjnr{U4h+Yv2R=8n?9H^ywn0nk zT`KG))6X;Y<{!You?#seoV?lVhW867 zEWUM#D6aZEypO5(q+(T(KnoHlLq|DPP)zF`=x{$CN83%Uyl;+NwCbNx4A7p-JbM@qee)eR<4qv5dlMRH5Tcezq^y?w5pghb&2ywZYQ-uPcNzxP z=PjpZ15EERF$w<&@irK|bkdK;B;JwBYcC{b6!+~Q(&W@TazzNYlHs<}prj9-Der}% ze(NE!HI96JrB{(WZ)Smk`9Yrv42*-k&@Y3R0^&99?-`y10Qg0Jm@x(Q2^2i6?%6$L znS>xYENLWxC9O4eF9(sUTN6^Z9m7ScTm3~y-GgY0pzg~C<_CQ{Fhbpj;0>uu_>j8m z8Bx?j@Jh+DTOk-eF}a14Ff z{c>Q0y6bQVC8RFlNdPVzJgg@$rl4*m*PC69i4x8|Q@O#yk$w|Q1QGi82rtlxgPL%R zMPtZ*oEONSV;S-|

PDNr1i@p^!znyD6tGgB*-uNwK})5dl$RR|8@l6cyhp7R37N zE(*e1(Sevr^)c{G%lq=VIDAjPi^wJN&U2tIRaU9ysA^MIYcvkM=?uO5}`^M+o zeQz&Zxpv7u4ldfy-6eEN3Kx{bL9McL)PhbUY-E2p1hr0I4WU@aa5hkb@;U&Q54-JAC3vatq`nL=KIRGEO9rKV$;(I& zI(B1Q-LAby1u@v<&1rNsPmn8S0RRgYXH6`Xj79LGRd(L!9|1nEYY_fj%^l>5TzJ+* z+fn#m+XOxeAiH`232xa<=h@jvx;7OVr)#9Ox*rL!tG!i)^+-=VO=pYaN!!m^;&Kwn zzlHl#&}q?InS;UQr<_6@GvSafZ~E&A0i!Jf7595mQ}ng zC517vlv8i`#{%N`#msR6DC8=|K`r`00;xv~%h5nsB`rOjS)ETbYW-_ebl`GbS4O$Nvvc4S1>{&v<$QrpJKW+(=ve-`K{m zrQy)5vS1Puz;45$X_kae#M-UvYqUh(|fVJH#j|Kv|W%L%fIsyhFT-1H41L zkpsL#yp03AL%fp%yhFs)ilp%lv6utALoDY2?-2jW0p20L$^qUX{tEz|p%r&Co32DJ z^uLW!Gww}94E*Nw2;x&j#M3Hq8WCA{)=Eg+ku0r2Kiq0aylX72!O)^rB6iB9H5h%g zN<0Hi*I+c#DiNb_X$?jvtr9m85u=q>iLVop%>!CVN(B)ynrSuULqx>rrd47A5i#0n zmDrnz9nM3fwTm_Kd59-~53j$|`H(K}&|J^Ej;<@!_fjzLI=XRI-@*O#2|#@#_tW?P z^bfe7KK`duZw`L?@}G|RIr-_ce>z%e^3yl}bQky22mf^J=o6m4_NPD0{p{oRMciKl zwe=C)-;fCZVD6_c{OSF;pM99V7x%LZb+0DBwvLUl3sm^)UF4@9-*v!_dahV+$NS>+ z5s!{A5q-o%+enSKzPb{uI8M~p{1MN5+}uSX(045%I{NO_RU{JI5S*mXBYf7rd3y}R zr$E3@U4eeT5PDO_L9w5~@FcH5$a^p>j|J&vlE)BpxjgDq^o!1w$NQQ?`X3csze~gN zSdhbn7y2>84Uj>7b7?j8v-E~s4BM;l_nKq8mlis38L>Yx9Jl%8t3lg|ZFqZ+$`B?j z%yhFU3K|f72_$wraJyUJE|y-U`$w|-EwW(u225z!MGE2;g^zGo0^T2@n-s=aU&o>k zh5#_j53|u*GV^lTsZ9Mk+3N{MNapJRJZ?IN3e*GBnGf98>V%N5^n4@`1Mi#+U%pn5 zsAM(F!J1iKBHoS3*G8r&xQ%H6ovi~73j~|}W8gRTyP%`rVS*KHPNP1UWdM^jdsSc^ z(vRC}yHe@FOpkJ9Hm289bV?}g&c?uBLgPUUG<)QxC1&ixS%Ib4YoipVhf~Nx51`Ol zb#tdbYAv$Sjl}epu<`P09Y1e^^*Yy&y%ij+)vTSi@KKSPhmQi)$6!J; z_zvt2QG=+T;VI2iyt6R-$-E&%_=*#H!q~pGsgy=`mxJC2yy7ir1ak*4V;~2EVZ6A2 z@S63Xbv!QGr^89$Exp+eoxTd18~IP=T^kms)ca5ff?2o66?d*d4&xLPE?){^<7c;% zmtr>LV{25V<47&e(}d>JnIdM)r}4q~J`hb)N6O6yVNz`gVc3T}Y3$jP<$XPNxoKE> zRL`ZH@LDf83hgKGdyxLE@OzLH)vIG9r(n@|!G5TzcyAA?&8{Z82|9L0Y{qu~^T6UR z>#v$|g*5VC(faIA>gT6Wn($LJ#||Vm0#0lJr?h}mTfpfp;NC6ZzGm392^SrHBzvfi zp`_xZi8p>n#;#C(fqpw9_%~ZnU!6MYx1w%nLRuYtYgwt*R#M8T9sAwQO63r5(s7n1 znxq}luY%QF8_2MdGugi>md(@z0&nU8Mu|xNno5ahIoVLN${eEk37`xPt>91(4$)W| zv}-uz<4{))HE`%|3>4V%q~{0_wEw#y9a`AcH&WpQrfVDe!qv~BN5l*zg-F^;I!TPr zV|fOWOIO*XB8MW_p#EZ%U#h{HhfFYwQq9a~ zeU46OV8#$@HXpBqLU~z`tT^n|YHaaDznvM>GZ~_WY5kjEEoeld za60NZX0JiK3`{48aJFOa_7Hd?xEp@R{rMIaq$ghvtLUqT# z9`i(VcvfEiR?05aW!Z>}b(!h&v_4BQd&g_bWMapIG{M(a^6If@1=1EwE=6g@$q73r zvAW_-zPf?-1tx+-)gPSzl^d!#!Q|nDL}v7TnEK{z1@v`U)R3Sj1Tc|xjDbNSZ!%!G=0;9UQ=-Tq#fVB-Q=%YNSdkIjO zv*VT>{#)jHNGW;*-RL$8NWy$TtQ+M*0R|F+HLP5R>e1h zf#Jvk-bD)O`3`WoXtYKnf_@%ib6!SpcTzGM8uVj#56JG@K_cx-5diHtWtz};3s~8< z7!>(G?0pG*RMpx31QSICCn!-=Xh#bcG0&beZyth@2FgHEd3I?0cbM78uVwse@Zv^{{kgRx@a{W`vxHtvTg4ALx6 zk+k_lCM6VTq|Cz$I~Q4zg0TTuu0XjoVX4F-pI%k=%#T+|jn-rM?K*-D??4DEtB=e; z1N?O|q?%u8%HROE%!EJ2o9@itlHBln4au5Jy#l)_6y6txi>`-*#>Hq6?3088UWmP* z72;lL=whNUGYv=c3d0v%@3L+}<=WPEAA)p79&#F1hgxsLSsw07et~CsXisst`g*qU zDz@<=bk?AhfT9*3z?0Kkz@SX541bnt{|B zrh`!s*Ovz1Q(@>~8G|hkQ{jCR=N5lRI01d&!17>6D=`v~R(K=BrSQAy0*=cI*7xx1 zzB9sPVv&2|6)Ot`NWDc9cL$q`h-=;p?BcIOEGhypRLu7ggIZfzD=Q>cvO=ul>k!5z zFkIv9y9RIHI$weK4g3=6RRXjK37FA(oDpc?PW*ywa07^abmzwJB|k5-ZjvqA*W$lp^8o=dwxr<$@YB{Cz=eRzcXhF6Q2(pQ5v57 z947()l<5rYwR3-p@z_l};{E~wNL+$2oc0SCE6h4dGCSPQk<8{Faq}N&tvDSfxV;o> zbI&3b7(}6-=jBQ7AB5;mU+V!j^8E3gWM;*P;HniMGg^W;mEr~Kcm%CCQ3O!F9dh{) zbh>z_wOfBF3i&q_g_c}bBE|@+J0+p=jacVnFjV|Y7V+kJir~tShw3jcWj|yS$pH(H zt2Tf(t*y5J=D@q333&u}>c(P8=^|v-#_V=%-vRo$FI$0BAa*YCpKSLZXY!WFh4!iu z#cdtM?V^6cH5LcSS*PnNR-<9KY$>ID;=kN2&$~#sqOQ-*DhxIMgIch30#B47mpw%xi-f9;%yPe4m| z%Wu$-vao+=Y4g1!Igf$zSBOKs$vmvfQ4kOF=J$@`&4}dLeQ5(vAv;{P*;;^j494-{ zRh#+!?fE>@FFj)re!0(a!L#lKFS!@|L$SgVBrXaEH=EL-a{}uE_=-EI1LIi03-hFa z!N0>Vu2``P0Kdl=9KZs=w3g$S{PG7Y0IKGPN*vQAhyQ_`hk|=w)k#g(>3~#8sCYXp z9_-m~kr(3$pfnqR3ifr#ckykzS%MFUZ9c&N%f4p&yy=Va_R&R2W`vMmd=MbrkP0L(mEcVF>nE zPr^2&hF}jN_&o)|j8H|gA$S;xF$8-Q5U`1Z1B*d;4d3lSI1O1*)Zl4SMB*TPpG9C0 z-o$T7cnb@#HZY9sA_(&jJya+CoBd2qhf|wB%;TKaQyO}vH1sz5W^EC0KN7y3&*uO>c#Daq12J^{Rx2GWfpHQ3>`rEwVFW1`WR6_POgg0C#C$eW95HWm5)wS z_+blh@Ec(Je?8e=^tHZMN!8axyIY_hql+0Q(;z}?BS!a z6aOIr7~G8i8v&T$Og??WedI~N+J&_}9_#3`fUT z_`n72=)iJx>-Y;;QvH ze_M)pfqo_rHnCL5s1EBARA4h{><1~{2;kUEdIQC26Ow>QGkA&w?_h8Nf|du(aq^T6 z)*<>!PjaL%yg%$_V@kqj?BpD8J@`GQXjU48H&miyITtIf+8QW7q2FA2{FCoFp)y@rTe19W|$^Ia$r6fC3A zZyCLTK?dYNb|?EyGG5@nyn)(!4&5dHHQe7i31v~YD}HinM|Ys(_#PZnX<5o|oCA$vH;ZAVt;jaY0{Cs4XuxL7kiQjPTC1Ioj* z2bPByq!%`SoZ2+7IQ!YoPK;q;q#SFLyHmEiuWZM+q7Tq4!Ii(X{cVGEn>BJrGD<3GG_#SeUPJFb`ePu`K#P{7-ZY!Pm<`nmpkD!#6C)}-< zB6E@FJ$EY^#}v;S?pDYLS8=GTu=(#F;moCMx?DXsi=O-qgI~fg`6Kk7p=;fz?tIJr zT^M!pU60iix}P38r7%*KCUKW_iz|!_8o*rLV@}58HMJD0<2RR2>CwbR!Pp#pPw0Z`6eHPAiP$eH~mXebAkb zuczYc@NQohDrNGo!F$MycQy)gY`3})Xu~j&z8#{@v7TVg6NCf+e*CK>1n#~)r4)7oGi;X*g!_Q|&hQCr88G08R5Xt*3B3v^fc|R*l`J{B>yBKv? z0WicR#DMm)iGKkGaGZbVZiV&C?rUYzp$^hoCLS&`JUfW0@OhZyZarU>?BVFZ$p!W zpK$XZ*hiSNTNkMIVi4?IMWL7Bpl|)IL1}EiTFNngAs#O}x8SR-KT|(Y`@i9X#{I_w z!#A?T_V=lh{b@K)(ggYha%>jJt+@O3QA zylou`+Tw?B@bxfWFTvTUs1PT@0YhT@kDy*uYPkP4r|YG~F2CL801hH2W7##Vhd8`Zahu!G8|^{$mAO7G$U?9W;A7o*t7 zeM=$GF_YbaWn!jY2f8nR4#&x0_)f>LElitg=c1w}D(57&XbnA&#J@%qX{C&9#Q3i# z4&Z+~8su(;sWB?2ggE?<;ZF`t6X#L@q0cX&QDH>M#2Z;$a46KVU+|CsL|C4;sArxz z5G+8Zgj`MPJolGQ1FF(zW&X1?zD#!u4X!1Trc7(YYbe2(hxM%obs z$2Jj81XkL2rpMs4#~KUBP@M;mZqk`{5lEOm#enoRJIiU*?V-P?&qt|4=C`x_?d~C1 zG7E3fwEJfaE-48KW0L?`bBJdAYLj3ctRT-@KgLM_y8D1i6AS@BtECAW@-+VgK1b3@ z;J1cLH^?-|YDy-)7aT;LGrv&)I#A84$NWOQDID!Q7*LAwEPH-Hp180S7mrg-J4h!OEzH*{=YzXvXC~7mHxC&d8Y%k#tD2DghpS7$KH4 z?R#7RwEj_xM%rc6Nf|RyMrrs))#_&h$D`Hjx2skI=o~JL-jMP(Yq1*ba^M6MTWtP^ zf#LZ1XxIF9FyMLM*zVEuA-&JQAfC>d+|ZFg)M&=5um*AC`gQ1KA;8BYJ?Z~}8B)0U z?F=CKw;@PyJ4(SYa^tY~3TfBv$krk81W##r`W(ue2_@kbpc1cN^&e@vrepdJTrT(v zT7a1EN=(qsO+~8f8;HM0#oq#Mh6S2=NPq>Ju=i-B2T~y1{Ln%mQ{h=onH3xVIYOUu zW@v8n`Pk_(mb1g+Iu1LQ6bv%wVZ^y1_3fV$H=@?pm_X4ioB?HVnpJe(frBv3{9g8x zd}zJT(INXYWmy;pmbFRB!uAD_`yY`ghMvk^qxtuA0H#gj$KVd)M*}jJ;LfA$$2Sdd zU;RMnip7us3eUldR}-+L7dh_%_&pk|81nvo_!h}3S@CXY0Ne4ULtuoZ}l*G%j(B%CPyqTFgQc)vg3f>a9d#^)&Y#Dh9b;zj=9r|d5 z@Zj%DC8-BvOcp$XtlXN;=2Y6v*@a^6P{kB5MP&Xim{x&ROy|u}nc!fd^5y7!Cl>Dx z9-@xB8Lh|H%3CBVlh#*E|Dp5HL*NamV)6m#?K0KcZ=xvE&a}U%=>7DE&>3h}+E4j0 z1b~ITzj>HVTeZvbq7ncbD!f7}hklgSDutvT5F0Vv*x@=OI_lp4#r($hhEd}ylL3c* zwYPVLPiX$vQOk_*I8+k+_O z5LHT)LmD2j39&+}4afjm#b8P{K)c{2@+$BHsqdm#eZ&hX&DkA2-ih!7{e;url7fa~ zM7*OPU^UM~GrooLLff`=4rzYTz0DfbygNOGhxBH@BhpC`Qs)mBIAKP5LJ{{pD5Lq$ zA3I0Wz*FjLj@8$;P1m;-$&=QX{kX1dY+Pjt`V@RzaF9HZ7z8#F#m@+*p0s9#l2@mq zQCVmdwr!t^S}@_nrYa;j5h7#tdQlOF6a$mJhcS`F*0@J+2WBwE!0~5k}-43gJ;f;L-9mxf-#D#H+$6e+%MKel+9pje>Y6K7BsyV5dKZ`X03| zJtZ1tvsAtz(lqoPo-^GptF`G#;F(L@0D7W|+I9`k22_y*o+9_1L-@>md%ahW-^Umd z;N>_J;6xx>Uk;}|D7Y#0y(jDOz?bNaJ=bRs;W?-*R;J;lY{$=!o$WN#hMkb>NOqCiV?*Eed@iJu~p?{17V@vFb#gq398+f3r|@EYjd7 z`JvsOXTg_rdj_iZ9GTFb_W@7g);+W*`*FK5^>K}H)+aIyENd~U6P9(+1p`FS!hWdL z&8;Vtwh3`e5Y_ z7hI(3b4h(i#p)xIVSR#7LZRxUqa#pdf_x=BoA*#B2XS7kDm|$rrY(L4q%({I8(Fp9 zO7X#r7M}cVNBm^O^H?hAUfriW*3Pp!9w_pfR2~f0KMW4L*|TKWG85yT|Pe4mr=w*LCvx7-p2`Hg8>u7Z)xA3*UG)LbPlb z#Ae~I0T4jg_paj#2-pc8<vp)P@&WfxLVU1)2dLrGy zY(Y(S_1yWjm(v8R4NPam(qk=*$t)Pj5Q6 zUilHfgM6XfW&G_vM1etaN;B*%>PFsY@QF$_yKK*8?->P`F;Fx%zNk&JGeW7XJ%0zSL%YA?JO6W3?~SMHamW53THNa!N>)|(2sJs#=b2G;@ke*8me9Do2Lb3A)0 ziey4TO$&pGl!rbk2k_a8u=iB}E&90oE?5L%c6?bhy5f*!9SesP8sDw+zq8V4PF2Dm{1xyb_GcJ@*X%pl}?Ob$Y{GC=*EB_3q25tC(>_?na8UjRDvHv6Q zk^YQjN#wmaH>9H|^x>Mn^CWo0=Si)vAOgTCaDfvvPA%N_+K|HLSKNi6=L@&}b5LRP z%jv}jexmLy#d7&hoV6An97bPScfm6zoO(!U)l=EeuD&;Y9iW=xzUINMd4TMdklcXm zF9ota6d4gO%;xu}F8_HOj!6JiGGLE_x27D&$-1I1A|e%MmBJq|Joyl;n4r-Y0Ue_m zr~VH|RDt`SKrT6q$Kf>Fxv3oY!r;^jS7#Z<9HDeq=gBGrJic!jI@`%JMqkJOtgq02 z_W1_ika1`k$5EAuAsj0Ipu@VCLToS98^rUEq$yxUTN`;PgMlfNw# z{`L_HIrdrt3$2%VY$}R`o;e{wd%Xs52XkI+U3e2JRer5E zaGvnYQ0m)s%PE@}+$=sfo51omNb@ES#5%|3(DU3daX7)${NVs~%tx7f>RYk%wj=9@SP(X_P)my7$<57PYKp6Q%SzAlC(S<;E5cM0n2!@qIW0JO^$+!W=ux0 z7{ue^`35g*X#s{Pdy&kyo{%CT#4%4{{_uztWR+?9dO_ce9UG)rWqN`6pNG7Oy$Klm z4-!b&TaT2OW_4gAphI8gvXQgC#CP(l(aKg+AgxHnlDtepp~Qk@xw>-%G_CFEE{J)j z_3QaiXc09UD>*~=%@ph3>1N@f8eHojvt8I{88b=%I@{Bzb7&VJI<(67eaTaW5*N z2W;3o#(a``;ReT&L9g3|UN_^VDD>VoYY0>XSSH+1JkkpfggI?hTe$eiqIIvsGXQNI z$x_0jGSGxF7^1O(WoOr+F$#gd_Nwi!fWM=7CyNI^h5}kN5<9Ff7>RutsU!JSc10F) zVe(RGHc0qQsHD*hHyVo$Y=OQJdVLfWqiBKaT}%&dhHt}W5QhiO5N%=HTKjS_Tqmvu zPQ`mWXm~pZf%J#A#_{vScMMAw=NBJY8|MNfu(e?^;s^vOPhRKz;v?r`#1(K4q<;;n z$E7u~z9-R#*X-GZs^R+x5jr1km;ZulZ22k#?tq>59SB^U8OZbMTtT2%+BKIOoOqC< zoAI%{7o15}5gv8hZGtBjK4L$LeDnyNk697-S#X*9Wvmnq zX@ahmj80dOv;ux8=9u{JaiU7x8v}J?3HNp3Hq3!S>D*(xfRDlfY?xAJK}8(I@oU zhB(Cz<6;V6ahV4J)`zswC-7y+S{*e+qU0dJz>%?Kk&}_|o)%ON`yWb0{7AOx@4v!1 zwT@)}3!1+NqlaX?s{+YJy8?&DikXUd8t=OznD0b_lOctzYrcb~01PLVhkvdN^#%8` z3(%|3V^9_7AIb6lu&{_%Q17{@7ahEb-^nmAZ0W)oh)?Xh_j{7|19U%hF)eY0;qv^# z(B+(|!=qql^UBGtz;|K|YeaH1%m51o?B1-t;K&%=sykJyW+SO!?JTJRQ&BXaG%U5m z3Y>^Y9V5$ArQsilK``uHj)J34#EShBQesCW6ajBFx+O*54jNG!irpj>AaoJ-UW)~N z`!jMqO`wxII6v-CkTxBHq~3}zNNu4G0+mcQL$~)H?#mFFJ@-=h;J40}HJ8}39epuy zf(q7`33vE4TLC1YFW06T_si{FsiZ8ra9pew-&;oJ1?x-;UQ;bl77^0|8a&v7Um`UQ z)+C*{Tkb(`!&6fW_Jg%1kXtZ-Kjj5jmaS7*X09Mq7=jp>{4LAWB zaM0QUCan{ITR0Q=rXj&Rz*Ud-4)j3=2Uz>BOQ?)shq8&h1Ce3^xfpf3tbb+OrJfaE z>Xr#=??MSa3%78$OhC|jwjAipn+VMk=&L9(`*A3yA*l;e8t12ug2Y54NT{I7SG<`L3XVguQ?+?nA7$Y9sb2r%ixb(%cr)UY=QN1|ac5BTX3>VxO!_zndWoxUD%rQxqb7|jIrfCy8OmGc)xMqscd9S@*on1pOA z5A805nl9K$(0WS4C&5Iu9Wq1ckfo%d6x94PG^6WYOh0#G@EumW&Sy%YoW_km`-k}v z&IkC&+KO12*%mAT{-B)w(NZ+3fjtPlDQyDhxOb$6{Yk%IM^x?h#~k^Ha~Yo^6O1>T zEJOt{{BtUiX1+*!vGQjs3_U~7@sF(IrB!eVxnrboNX$x(0;|s<6qTcqH4I6}J=S3p zrD$w0G;kX%y^#0;dfxBA0^k<|i+v$n4#8kxQdv0ozHb2B%6d;e^PF|#@|{v81GtxkTKC)Du%#Lc*gB-cow}9 zZgjf=<`lH=|NWG}goDi=5p8>X?KB==1L62qyi2=jT}2Q%H#@M;dS?K#1|RPFeT;vZ z^XXvygq!t~xbwFJ?B*2H2;m;?mKPCgI0%m*M_b@umH#N|bZSg&a95eNtXPQ+z7XV_ z05I9MhVj(;`NFjScZ?aKA;ouC+mHplYr~-CtK7vqIjDCyg~xB~EEFEH2^uBONAW}E zx3MA&Y&nce#;fFsz&=lpzV0r>h61_J$&`9*q!_-mKV9x&wzNJ&glsHeUBxOG--30F9et>MUv zGaCtb(Alc<{>uFAx0hc z3)_A$rx-@I(CHr-52Jxm?9L;kb~NKL063a)`xA;UC~uNC>aXlS?q0SrRg#*b3ENquGdyX$J5jN2OBrVeH34!l_V~$5iUpl}^W8 zPF4EUYJsI$o9cXbY9fCJKW*M~wiv)So#ia)fAuyXJKwO1-R`-@j7e} z(v5SsY$w|YXN*>j-)s#*8pLbH>uz~O#c%$JfD7Drv|bl9SiIhP{$vyZd`~AufrXz= z2AtWhHW&@(N9c|V$z)Ea7w73Dk=V{6Nq`Isi#IY(@`I3=K<%y?!V)AOis5J2`Bts7 z=CIc0hgLZ7UXyQeyZAagdeJ%wglu9rGIl*0>~4kWH`)m=518*0^trh4?kY?+-v7E$ z#=G5m9?_2R&ILGML>yY(j`4<>&$*fG*GSCq9?|tJ$9SvYW;ARgB}cz^noVUB;t?WF ze?H#yz;Ip<#ygt93v4wv#=P`EsAcK+j#I9~-r49uG~;e0K+KVbWk=H9-N-Ci)V;4m zq|v<}n4;{lT3^2#uQ94baV{zD94Rh%xG4_jX`nckHOEobGGw;x&+s3Hu&YZf?>&?! z`oAOJw~;6&y^TMjH5Q*`!6L2c0=AuVutHRO&p|F)OrGXP*~kF9aOVdnvF;Yc=>FLI zTh{E^fNy1?@=ZlBXBLM3P)PqKXjf6|cgTe039*t*d;y1+r!e79#aspt>Lbf0ZWRye zbZF3va9RNqTF*aBp#`P%dF!oh;tV>5S<_IhgQ&!AAN({^A?VXyY&@( z<@}m6_Ceh{S+3igtdkE9b9VB_NU1wHtjA7XX=mv}C(EzzwUZem&ZAUTGwdPgXy?)B zix%EPL~VxwY17G()DxQ9sr_P`5dPzi3P8hp^F+J3bqI3!I3^KBI)`QV5vG%9v1}YE zhw3xt31qmQS`r553^hUsi2?*$wYJ^yh>N2DZ1BU*>x3UV$4hUoU5z_f!0NxQ$w)b>M`;@a)CB z0Qy)IhLJH;q6TXR3LS+)qZzL)m#hnUku~$2-fNye|B!jMs61zzJk`DC`IY3k7)PW}5CR4)l@IXVORx2#MIA{Akj_kV(hu%xjE#v1OrI7khAsui;qcIF} zWoWf5VKoOp1JAa!2XQis7@g(o68+VEHTHVGYpq9iB9Qh5H03M&S*gm_dXg-Mm2kgD z@CdnhY)E!{^Z8s1YX?aw4ixrAWQY$yEk-FDi&A0=k!_Dt_RzyWMHORE1uSm=+r(jv znM$vc*#!Kx5#7yRx@o-AUd8!n#T<2<(c{F70 zVWF>kos2-TL9n!g4lb0^H=uMBYKrQ-2kD*dOSI1=`VVOPv9(Uu6G{6TG;pV3^#1RW z?5MQvxtjesjx~l0evZ$|>Ny{Df!O_tec@3DAX;p~gRen~vTzEb{tktdDz0q?H8xNz zikyV_C$3;TeK@U>SE-f8t|xglFTOu&{7B@xttSyjCK*XP2kNx5%?H_S&X+bf%6q{r zzzN2!&JkMQVox03_)4e zrJd4tj0KDbf-RY7VT=I8o(KAZEzcTexBXV=gU+_kLiGyX7hFYn-zo0}%ZZd>?`HIe zT!oGa+9d&9xe{saaf6{TihduD!{IF(M-uGdy5isu8<=+@vadvTK>BV9JKk7I#PP`D z#hP4aQ z`VPKa{b*zja{UiJCPTSw72LK6hmn* z42yGoa3;nOv&@2D3o3ZW2$qzgO%CsQm@Q?CPLbu#iFr}7_x{6NR{dSPXN*IInQ;!8_wPc)bBMt2 zBYz%%*-Z0#DDjAem(vgl(|AjapB!#;p({xL5dQzc`tVyW7huZ`pn-$7vXj;i@rev> zJQg%cB=%3intdvl# ztZ%m7%u;H$==?wyvCQBs9I@hqDRd1NbmIfcJ~dK&G=W{#`Dh{_KLdv+u&R`hyj}1|6YPs1oqYw7whbt-JLQB=0;74<|Op+ixhJy=W>B&>AbhJWg24 zmrF7H(TwL8V}lGNG0sRs0{Ef9(I{$dcqoDYp<*XLx9zFmBBMiar%gKrj9)D z&VNYXboa$C;ThV6T_ZD~B9+6BdOAJSOPfE&F`%@&bre5@Cs>@aFr$TX^LE%-vtv%-+;dV3E35|rSCTC# z;{v)paj!rVn!4p&HWi{I?QRL-Gy@!*HW6)tnpOq}-EF&5%Tg>je*X{D-LlB!l+raF zqYuYI^$<3b$J2bGPCPtV^1NWZkO}I+P0QYmA8-*px-}I@8u|;49e!!NTK_- zS*hDz98gmA7`|J)ND|F?5W@-4oXO_!I_IZ2za{4#Gb80!OOs{+u)(&h^X!W-}!+#?NH zaS&R_rTDldPP$k+=t=2oQR^iPHnID`=#3vmn?Foj?t$nhFyQOIp(JHn^hGrGh09Sd z{5T`9Bi6%VVIV*j3;;u}d=D$g&zdXkb{-Cw035qjaGOfMiRrP)sNhERzLD?a@P4^^ z-@tcl)-1S4y|3r{A$V_4@9Xd$%{Zuz6eD#8E=4QO!&i($G~*3S&bN?Bl0P1feuQ?R z%UVs~SrF5}PL|>STKvBj|FQWrdMEzJSd3neQ~LRzPY_UGeG2`H1_q<9r`NFs>rj#C zPw+>$6^Xj#7kR1n?^{=?QevE`@=}&jgfbGg!G}WVh}x(l0v3<*-IgEu!5`H@9J|am zcq}5!hmWYY9G%BDcv$SufWG3~2LJa(Nw>k@1QjP?8~hMrSJ-=rwCk71*7G*_GbPPB zq_MZbKSA(g|Bl4e+qpRovJL)r6@OEh$wrhTfw*A}MS6}J^&_ip4Dc)2cKF2gQ8|Ao z3Rd%Q4U0nwI8-tlxq-64li8}SrKk%m;YFk&Nr&Lao)*9hoeM&KEKL?X&)RXnIfm2T z;KQV0?_{=9c02LDSyCq9f{1Ti%t6QHwM_LjI~6Qj_{2`!bUgV$+6lU4^cnBA7bp{H zV%TEazd0YDS7Fs6R&`{ps`KY$CgD-Tq$7Ga<}E_=P*va(GWZ5R+XlRckI7tBeFT(o$@2UH1sFg zlJRzF=woYtv`j&`n(%@jw9s5eeFJH7bG5+8-SR%lE5TN^Mg_n-U!|)-Iw+18 zGoe-&y)y)E)E#;BCcVu>fN)I>RTbix&ZYR~3VhReFQB;bYmMfahY(ui_5?Ih1HWY$k}(((dUmgG1Mtuihzp32`Pka8M7m2F}JlknT0ExcNG%QTiDQwn0bP$VTrBJqR2f4LkivEX$+ffhbqR2_{si z`$E($h)LE zBC#ilEeSWu5H{xzw7N#BIq;DEM7%n!ADX^#_{|xeZAj*Pf82ggY~RliquY1un|i!4 zlviL5(BJk&(7x}O_D#)l51H!0|8(raDCw9w1zjXq)zMHbd{g=;AazFPad!I%xidP4 z<9)rdr=3y(U;J~Rgot`k+I)X47@{jU7AI>5&V^Cp{9{P#Yx$L$5CJ_D9f2mKvGS3@ zJpU{KwzmG|grJNc<$?IqsW~^K%2Q`?yn!0UJJ)=BfNMWj@Gw;J%o}zkoh=wZSPx{i z@)O+ffkWUg@C4m3C8k`2MPKhzNZaL;lVs+tIe&PH2W8AGX@f%;u0Kb+L#E`pZ zT!HB&ZD-??UwzKUXW8-A{C?^M<3kTLKbjKS*3lAS@+u^`+f|5?3u4VV04OgjJZk@Ls)jmH`X-Bh}!xeBJ>1g>a;mB2F1q%h$ z1;YSVcgyuS8x*Avm(thE%W@CEi}Q2k<)V@B>2bF#!wcb^@_uAaO30LX2+Hi7jVSCr zyPxgAkOFn?5a37V3@8*t*$O+oORn8ac?83Huf!Imw1+O0hK1TYS_IjU3P@eB4NhRt za^By|7W)a;t^g#d$-o>obu!>v2(3L^y^U0Fwd$=#z0rACSQ4=9_V329t>sEwC}C~=8td>LK#2H1 za{9lh`OW)?r!o|2Rv>s53RVI8>gL|iiD=$8(QJGi#vgYPK4wQV!l-BKXv(Mk3Z}D8 z_%i1ll$szvls%dD!nLZ(<}Hf>FPA!QucP=SgaN%R(u}b8?$xYy{!4d1 zkI&JJqfklns+U}DUUG!<8s3AK0<_b=zZIsZ$3JN0=p9 z*Dw;Y`aP=(ortyeFtj$B5j>5E_O5j!Qi+7oXE15`8Cr#N2^kf7(7^6sQUJ-oLGTKOD)Rm0QzH!A@bJ?X%t18#un704Huc6`8~N_qg^)@3M}T`Z25< zIqeCziMYb(?Kn!|0cv?0!7`%+*z!sAY52!s03RN%(uTK?nxG0lw31XiDu|kF=W|B! zPXo#R&K~klP(}Nk*Q3A~x+r}?^sx`2R#P9#a2zHDlE0CKbR7xNngZt2bpQefApkw6 z-8y^!?n;``haw|xMuBSoFRrEEL;)TcXcQg@^8G>D_mlNnHwvJdnFM3wZb?gpmfXA! zufpvj-u;jiOu)K8CEUz}VJQ;i_I?+Ns8lg+aWVg3Oo@tVkBfPcG2>Ls_PCfQ7&BDG z?2L=)V9W;?uaZ#nuDFc zFu+(A155D60l?dtd<%yK=n$qYvs5fWjo2ybjo`&wj(Q_V@kX|batKDe9j@L8I=l^3 zZv+?KJ^*qcB|(I@J?f2M!Q1odjiA6A**sFR`*?dmy|K%9yF-sSD*s<_97!Ax3A`V@LC6vuki8=mzLe$km@TZcy&U}{KHK_Uvjudv+Y+-~-D|cAooz*8whg^zJ5gsV zOw4v&ui1{(*$zs~wh`GnAICL5pzeRXLKFBqMz8;83RWrZQc<0-O)yFuL!LmC1|+SA zL!wvhV)Y#|fB?A7GH|MWO8`Y!#~dN?n~;ouooC@=^eQ50nro+AW4(M_$p*;dbqmSA zhi>aSE+P8s5?yDakH9f4fBgpvjd+)#anz48{-EANy0LnGa$H|%e!jC_RhPH`) z2Nof9*&?p#ZI3T6X75?EXCSE}bPX>nlA}e^el(Zu#y8$fIQFMdW#Hw`D%p#SQmoE~ zr->RlyezzNJxIFiaKI}Q@X^z^&ZnWPz^0B`^+j)yhzFp7$bs|AHEk@a>Uw?=&qF%s z!7p?d8i0%Oco`b5RN|#i>ZA(@*|AWbpm&*OsM65e5cUE&i@U!BSU}nT(NO-j@@gPf zaT#05i#YG2VsAGK)$Bxy&I<{Fu-s(^bWly!bwL%rXC!z*8SeRxUb7i34~rsR5{`fm z;8KOW9k{xR^-K+=zU#>J4P?TFcQTQ1W}F%-dNcN>4(iF^I2`QM(M^g7BKMdypHK=p7lB)WDBXBT*>qDoDYkKQOg` zbANa1aMc(_HLn<$5tV*Zu0FPoiDtz|T<;%DdL2 zLy5hDgVs2PvFBh$;hM=1#QTAATPcZy%eHPrC!;&%0xs4bJP-Kn5~+Xj;6 zEqIskryWr!z}*Vn8rPPQ>NcQemM~Bfip1`uJp~RZH~?lrLhqL=L2$OPKFA3Qf+r!l z(EF?Yt_8tE>iws9H;isHSeH8fCwoWNek}TNc7RTv4;=VFVYq0d2Lt)-f&uA3#bE_0 z_z9k%+IL?z?vS`2k1n_4!&ZC<$z`2e*}vvTQ$z2u#9^+$F#sEt1{bU|9VJ_CM@n=D zZ05nLa_a>n2Q`0~5 z6AB6ppM|P0+b3%m?Jf(@0Ba9NNL9@%^IQQBAVz%&r#_UlU5`>jQnC~*SYap5NAqA% z+L2;6Z7q_bY1+WliZ>KSy#~t?HgsOV7~uRMb<+p^WH?Tr?E3gu4mT5nkjit-ug>&NVCiRw%VJYco9f%*K z#rfTe@ZGH&_y*J&m{JnCUQ$IA({&f^Dhr?3`F+O6^MK{wQuL3KMO*r2V*GIuKgq;@ z4ODU~m;wQ=hvv;(%yRY6>IPv$v$M9KALXScO22@yUXw60i z(7>;|hCm|7$L2PE#8EnsP4Xd;VPjib_72sfwP&k1m;;zn z+m;?xZ%Yxk1wmKmUt!$=Oa`L!ofa}$H87LL`OAns30h0$xBEPHu{496|ydbnm%!Gd!g(gubZtI1O(hz&h2mZl%SLduCR zLovQZrVKK^Xa6QcdZ1x^zf7 z|M%&r|7R~#w91H6Z5>LZ+b0L1Ux1C#icx0AGD7DC)vV}7PKjy%Q2KUwtHL7OBX8Zw zydBMgK^S8AhAEPL2M&9YwACy|btJm}bqpqwGM;}(s(6%2I^UV}J(ZO4l2om<#H>4} z|6<=c8aefP+Xf;`{Ce9pZ&Ptl{u@q`mV~5MT{8Gl{VN(V#lu*|A7K zE7RdBI-k+uEs`qY9gaxrqk&A(JS8q>1Y`cDVoKs-hB0QlikTA^lg^l1Rm{S;n1dN} zwTd}AE@pqmoTp-H8PmLlO>_ma5n{yM9}d#$fhX^eRP zusd$@eC?am%2a1LKYj?QtQ1z(A#g%|SLbai>+Tm+Ry~#dF0yuBji}gqDaUujElosf zQzU5MHwVNOr>B%={MPK*j5?qhez%DE0Ow-MvGO(p?KNuCUsA|EKMBtmzTb>t`_1r} z3FU!h;nkanJyfOkn}K@<(~d(U%EIe7V&$07R+qFLi&_SX1xxPPRoB%*KD)vvr-$US z+>X{c5H66-_%t-sild&R9kPEPMB@rYPRDzA+VBD@mVx8NwXJ}PWpF~97YVwKZoY6h zG|q$2NWl3G0ITy@gxm5E*&&+pxYR zeMGbinh0|+2v<=C%it>!eGFoVAR}K}0eIbtczi11C-5Z!w2^2q9x!g9iqrB(JMKV(9_HOZgAG@<8Zdz=ZFdtT5rk zVk>xv%nyhnvZ!lSV9H?g6MMY_yxQGzrSvhln@bv;&0n&Oy!`ey=_Zcozy+VXi%z_K zGv0%Pi^8j3Dmrn?9e4>$EWv`p7!+Jqg?r4aR=os;vDAIrJMg~*>Aiv{j0T{8mQ)my z0*XSC6|lN@sh~T7c~1)L2SuSbibL;3*OMLr+{2A{X(>cHNRxTHvDnTvBlsWYSCGd*XTonll#7IU~A}j3TK#pp(s3HS$p!DAPV_z_QAEVPG&Lp%?rE z{VK3ghNTk#9nFNB#3^Yb^sD@-xCa0w{RSmb&@5342|Sr9cuqO&FQGrl@yl$Ao@#RMttrfl)c~%#-JMdFIP=k~}BN^V{;ABF~fMStQSC z@+^_(40)ExbCx{k$aAhd=gIRFc`lUaY4SW>o@dJQYc{zab8$@6)6?w04@OI z5N$EF*E7UZ%xizk&}fGK%Fx#s8UXF1b0|aP=bZ;Jgq2TMr;8!_lyqW_7OkDb5LiXD zwt=C)F%)8mrj*({82Tea5M-`SYL2!01A?9RFqFyAW`<5-=w}QC7`l$3YZy5jbn&MLw1g2 z=>IWv6hkgpR65fcI*OtF87gAvBN$q17culELp6kz#n38-o@Xe+(31@PgrP?nYGbIK zp~o1ylcC)V{gR=7GV~LMIGOC+z|i1>5xR__qZw*p=y-OBtHVPz^(8GITma zD;b*0&^m@n7}~(lw;4JKW`oW=hRPTk!%!_l9)_A3I-H>!7#hUTy$lUt=oyCI`v{>o z8TuzfZkR|qUt;J4hW^6PM22=URLamJ3@u>jUWOJi^c#kjF|>)HR)%h1=xTFvN`~HGXdy!>@R91A#ZWp!MGXC%Fqp(p2SZs5SqvS= z(1GmHaE3-QbSOi^IUWNU%3RwmN^v&@P77GxQNdYZ*EUDrn~g3{7CDk)e4E)iSi4 zp)(n}ilKQ7-OkVqhW^CR6o&r6(0GOpgf~iOCPPygI+meohK4cJ%+MhW{fMDdh8|$( z1DK&|UuEcZh7KVQdzqoxgwS&cmDVrwEv~EfR5jEG{3`;Usz$#rP}flJDV$U4$yzZg zD}SNOPP4eqUk{sV_n6sB{q@t!Jj?uzP0Ty0ZrrFkJDZMN+SpK2x7cqAovJI;pPM|s zM!%<_e(_3AwZEpW-e2vhX=wB$6r4LQ$K$K7_V_9rmib-N8XA}T8mq@vH7r?*MpxD? zt_!U6)HU^?m@G#zrhB@s;))*nVL;T_P#J6r)cc#7JWCp??GBk@>}3AMeqWQ{Q|Yhu zEvrLcG&JpM#!fBwxEya~jyI2M(crIhnFq$M+Zz&x;?j`Z4>T&YVHLJk}P)$P+qfu9%I8LgV-coj} z(>2%sy`aA-fPqgKbit-f&!UEaU9Up0ZaEx<_LxcFsvueCnqGER;oOtYs`gg~7oF7* z3@i->%(pnCG9P0@&o9Lb=baV*WoF6Tv-J3%RkJwQR4Z?d4T~{=Q-KbRuBpEIdURxo z?_9s9D%jXaf?8e|sP*{pQ(xV%+!Ltv1w6IBCQp5XfkccD&_i9mDXD3>Z>gs;SW^Sq z^EA|a`f~gMkCX+p0>%NO*et*VC7Oonf$6O|7(*Z@IElYrSV8{^DYo;~`<4Je3RsnX zP^-tkWGSdyV^%C-FBq#~t()Yan*KFvUaj9Vy=>Y7&*HkuMjv_yQsWrb)z<~;z&y|M zSG$k~>`NkSXqkaBjKSBqD7b{fB7knU%h( zb0<~iXI3u-Mb%HL%^H`7@M3>WfMI@btXotoFFAM#F6HO!OeSao&M&U^H%_X|Q|~Mq zWoF46cJPdA9dDN~K}Dm892G(txtUD?Ut?fW z<;2VtlPYsFS5B(T$~2=isoYoPnO)&onCUXWsmjl(7T^FX@+Y7HaPm*C3lueYrcKSw z^2}*$AZP#;mZm_1?tCWLsO}5cQF3k^Y$TU0Qor1!KHi&?l+^#zVEU2}eXch{fm}$&@uYT1Plcw$U5*t0nKM)=Q&2kY2a{>Il`g{eC45It4Z1WaHqQxnVqGX zW(;?TIyUZ9h!#n4ImcHWr)?*yl!-Lo2hz~`ZohT9oFpR&g|~v7z8A^<#kDZcKsA99 z?G^%<4xt^>Xl(^O2AafHcjKipg(277JA>}aY$97LO$p*bn*K#|*e}~`A}f2m28)Bk z8qE8Afb%I7v44{s@_t%f;JG;N^&X<)X=9AnU-M@T?P=MMk z{nMILFUa}%&!_f|Hr<+T?5ebmeaV}in^i>xHD>~!_ycwLL75Ow zFbES*fZ~dhVQ|%xv6#^|adu`)z&=`JeWq>34)G;w8*o)k`?K;C)*5zNSTVoCsWpGD zJT%UXK0&6-wmqy5c9D21dVaiR(2QU5$+HYu&R*@r{u)KZ#;6WV5@wZIxT3B}Yw3bU zxu28qJPslW*3o{iD`@k90V!;yhOy$PxB_KnKGVvq%3eX#kUKW z_|C%ue;F2>JX5iPkEPAUN#yQ$GZE?Q%8OQc6)>FC=#;arkYMR6wpe02koAM`cxnb{UG(p42hMAf8^$})hR6m8D2AW=)>H%tfpt!yPtzV=! zzHczA8lNNhmF+Xii^j8)iwZsEv!@q&7S8dGUFeyEwe;@tlS_B~THiAO(*$U*^u@1c zDW+uOMjv=o!h%i0@-Tj=RVn5sT4&4TKH5fo}Sy_DV&*=UrDC@*)S-6X4e~CeM#T~%a?GSeEbn4cq(;r z>dH!gBh>8bMR2v^q;P5wo=r)$sD8>d!pN3a3Pka0Q37{K6i`XsEiN=lV;}V&%zVV= zmy=VYY=7{(VE;4G?}o-jo>Ruj3~gC4n}>*dRwBB!@Wg|Aw3itHLAmWdx(ne1~@pkb-!r z%pISVoGz4@y3f1i@id0 z`Vm8>g_R8}JS03C)vFWW7KdK{$H`ConNFzIrVp=1F=GOm-UxU8CQtF=x+Qh>z5v{1 zNrw<=agLTTv6f7MF~YhZDvO=PHp2ID=&`u3dJv-(rH|;2XfD!2>$RlmzlB;6h23f` zLt^|_vq(EZf4kMqFL;7s0gZltePL6b&r@1oH7>b_u(9NQE}YWtLLa8T37S{$*1FgL z_iC)ms?Mq*IU84C%?qu{=L#3) zRZqb50WNu87+m@xFb!Nj7YUgJUj%6~OJ>h4O-4m|FeT;wyRpR>+Tu;${SX_bfCP)T zgYkS0Bo;%Zy@M=oAIJctJnh#Y@WMl3*>wLB&W%0$(28)G7}Hc89BNL(x!C0Bnb#0( z7%Ia00G53}7o);nl(hsq%4gMK49^)KBOu*V@SHh?MV>E6CK)F2rRFl@wMQ8+ zBMFfH{Q@dEkoqC6OaTe3_;ZzB4j_?)6kj1GO`B8UnNx;k{{LG3`?txpcFp+Rzs( zx~yIHY9vk4dPT@~>$&AMXRHstDW3eXmBBy&{umBRU_wul3ADY;#WcM8*x(6%?LDIx zT@|u`^I%)=y!`z1vQbz(+0R?Sqdn<3#wtvZ|J5_Q5A9eB>h@nKpc;!J*$s zEzjtp(t4b{@;R88{(C7c-{wRDEC-~phkYNUva)QNo2Vh>)$Ro`oPr1DSD9JY^oT+L zObmq<#)vIW$NFk4>)B`&BRDlXu+d2QsL%|T!^NZjG)7&RI3vZG zm}Mq|9$!k6UJPLQeFWH7+`MN1mY=7MGR6iPk6{(usOXtj?5Q|mAC~b%3?a+>JQ!8f zUox^x0NPg^(~M)HeQuI5BETPfS%YW#ys=okqD<7rgV-@;#)IBAT8J`kpPr`ddiGgp ziJE$X+0UyS_~cZ!J~_j(yd-ul`YhTmi}AY^FxQq!?YZ}a-kcW=T=Mb~95%~+D{B_} znrcPCO5)M0UCxZhrnn}uv9P?blhOo)>Aff(i^@o38r7HOg+%8=ZG%MDwW{FU0oF$a zz}S)|7|Jnw;_U90`xfE6z*!Zxegq@17?S#bv|LXP6Y<+}5=KvZsm5%68VpA8CG0FQ zTf!0$!q}E&XUX0TBL)kqa}*Z9*W0iZjRj7yd}ZxxW&=)kmQQWb&Fu|LU%XT1m&DAL z<5fEa{P~Wprw~+`Hjyo;tMg0+cWDBt#cvddGxOVSY>JO)_QJ&%!(RIA5N#MwKR{$> z*}Hqv-q$}2g+alIcZ`pN$$VMyk3poHi+sLjM!5t+zxD{m3nnaP$pg%iHWIT#>bC>L<3MHy3 zwuS}eYwt44>sQ8U`?LhJo?Bj5)!5L~P!sS}V8_-1oIVZTQ0%l_f~dn^Cxbwi79MOT~&{AKX+2+B<`fPcTr>OYtmiRpLT0-PWLk&9jr3(OyEBF zM)$73C3XLZ?V|4E)?l;YJSTA%^}h{F-Q1(&B+8c*OyhH*o8WJPS1;}x^?z3J?CHg` zJ@k_C(5)yYf^D`4vio!k%1*Yn_tox+IqEFayvjV~7?!KIS<<;9XYA63M%+{pI~FQV zU+Vu9MYj$6$$AmNU`0x2$@Z%~TxNDK3pWKM^EydBLHIO#Et2yaoBfVA>V!=H_P#)F zxNLT|R^aXN=j{NvrodByGxV`eKD7bI-j60@IX>yep|7lNp9n$VhTufztON+oX;|)W zEZhe?=dt#-Pm#j~nCz%K@Oa!)&&Sa8TQlp)5)tpIlQ0YD`$i69n@H4s_C9giJ3s6O zGou)FL%4k~Gt+Iao`7fPDZeiWJx!#ilopj1I#A2AEGv7QGJM9VmDv;eJHIq2rWB%> z`6>>@5;RO@`f^S)lQ@eh5uhfjebF#&AGtninD!P@eNY_4t)N)uoT53NQ*irCuqn1p z=5ukzH=s)HH|G#;dy#&hd21ng5B@Ue)HV9*Yki&-fkyulKQ*4@68zK6G2#`&1SZqt z1S*C>3Hoy)lhMXtU{P#Ox@~6Yqh63#r3j?jr_PQ6P&5u;z6c#jZVpRsuu6bb{2W+y z-5$}tch=5gV{<=yk~<;Wn7Cs-sn9(+r7qyJ_1bRJ{WxQr)0S@=+ma)0U+6e)lx!F1 zJ{s?h?lHc)3a32EpYEH|HMm=*cty`0>nr;9PM=2DB_Q$_AuacA6ahSxs%{3~sOobn za-7qKK45JR{p>pqn*w?!SZyGHVbGrN_7ly=>qBTXI)If`IkiWgn`hPrWj|i#zzSFK6ePL;7?9+B9Mle6QCg$eC(b zU*kE4y;@BTLvz4Klgd8$5LXO*z(>p}PX<1DiTFcr@@`D>-^ok*vN+niw^UN2QoJbH zJ1;RXs>-vCB|>JPv3)So{51)T_Tf>&Wo|Z%s>~HPM!DLDM~1QtjQryh70?Rrmy;jq z!&MpWBz|;-t{HX zm23ccm2W1%69*t)-8n%|c>}KU7V}CRTk8L+jh>qPSFTjrkTOTzC7_az7pG<9} zq$>462@tRXOWm_9XV>J!R>y%haj54t%MFQ3YkgQ&vX_D7P#BRUz23NDZp+Te*0*Kb z;~*E};(Qyi-Pk%e8frGcBwO8#M}!1pkli+{dc>}R?ZwwDOP%?eRTBqC$YT+1BJ1YB z1O9XWIX32*RTmf;`?=e}EZ!xOlh$kO-Frl6dot2*cNDXfXP1y{Iuozx z^?ljJu{6~Kr0l)w;t$%;_|=A6b+*}AGcn%o39pB0obMK|S;leSug+ZAY?{dT>r>=3 zo6W2U_dDBUCq&T8iwTf@RyTgn*w#uPb)ul?3~#PisyRfOm#}eFJ6~VMj-uL zeosyyX1d!)Kg_%uwO*R-tu$_iN>a|NZ45RAmiU@*XT3gZvK|N1F7o7#6Qy2=#3=Rs z-o((0KB0Z`Y+~p>=kMlNZZ2-oQ-K6Gg+9P3n_hUm8axb~vi!z|r?+w`IF&0n`74(D zmU`yk0Ht^h^@~TZFNrD723uBd=rs-3IpK1(#w7~TWV?~ghz*X}`s(Mo2nGd@sQ4+6 z&CZfkdoff9WQLU5J9<@CtDS<`UK_nM88$5O`_;ZY9;zIVR$^TPZt1;@$%tw%intaj zee~2#(n`fw=k=qNTCDcpw)2_SEznlI_fcSLKQiYnudDBN2~!UThW8cw;s?X*uvHui z=Pkrxol>2gL)Fc!33W%A<8%p$uEsz#iAN!t8_GhJQ5pJpF1fvbMsHNbW+RzDWu8)3 z1%zKAo7ZJQ-&4Vcd{JxqHnAB_Z>ykswrD4??R|Zee|C>2=t;D`A@o1pW8-p{fGMAQ z|0hh$Rvbs)goyp5AjGEksQ=`lrQgte3<&QTZz+a!#;UtG{58f>$$LdutuE2V*pF zTyn~(73WYnW(t*PJ4lp2noq>{T@$fbutDcgRVF4~!05Rj**IrT^&|0A8nH8umqXUO z_X({rof5OHnHt*5HTKn|-TI}xOEebeB%F(-ot@%)so0xM*a>IS;20Z8U=w?<&sO70&J8X3aV)FJ6P&2dIP{ z1cuqsadRZ*&ztcd%TA@Q{h#eead;axt?}5QA8&+`|*FIP|r#m*Re4iGtzFKM( z_O>ee>o-otuBz;-<=I%-5>IdXZ{Y6P6Vwr~d3m^e3x7Gr9J#R0*HB)kj(hEeTYY+2 z*dJ*1r%(u9%+Ed4??mSBxs{Nj<6{E897rIPLRj{!MJ1(42bA8M4 z9&GaCDO-PV>1%yMz|$05$^%aQ)gEjD4bX85-cwq{x&|L)XAIQgfN>PGbg?ghO(aWP zK3An{g=?jYtEnzAxx0jux}0i^E6z%-qPP&Ize|uNf0uR}#4k-Q_+crMUR$tL4)Y>5 z6Nz4_B37uMm99*e(dz7`FY+x};`3mrg3<#sHtKVuZ^=?mQ{8!ps&g%_t6Uabe6Fv4 zT=ux?m3VWVBCnG?Weq+arOkn=X$aO=yOy0h-5)5eCp@eC*u7O%SY6$in7q0Hev{1O zUm=IrCeO6&+~WG+5}ZpA@S6gQSKvt2CTs^r$xHo>0r+3qWl!^ACv~+a(BNsrKD|0W ztbd=ngzp9YjVpn_svBsguGUk9P6j4HP{>?*AH0A}?84@s-kT;(R zW9-fG_!=8=dirv-B+$^{XIj-8=$T|2 ztGiu=_W7C`>YH5i&{lXP)m6dE8NgjyyApR$Agr6jW>)(B^+?kc02M7=T35fw!^%x- zbra(H)9A+_flpO?uz3m;qPf{p0EI9{J#j5wOgiG=#q!0FE|C+)C9Cmsmz3XBV6#i< zR;;vTIJJ^MN4pj6cFW+YTq$T#-3Y^ZBU^}i8+b6t@;Y$kx_TlIKv=oh@0y3fUgE<} z7S(m6tC75cl}r5?SCF1>F~Exrb^^I7gcWYa8boI46J$%yc0MQELG z84$+YQba#&lSmemfAc61nsK|EMA%Eft>JE0gGU30OkU9 zAb>awrc#b6%0`_OXZZa8*?aT&xT^Ah{7jNAw56m_pdcR^%2u^NfFd;(m@HjFlXjYP zLxp6TnIuCeGt-$#o3iMzs0FvE70afhpp-oy1uV!iV8MP6Fl-+nIX>Xo+Kj(d(v#xHRvkr%HJmiYL(=E~{sAEpQULjS666=rlhk8+2Lz@!=8LNQt>Y*}z-F;*9tuKyZA{pwAW-#q3 zOkgDZ5Iuv2N?kPLN=15*b$w)259w`aFKvZ z;YbYcWM(2NFnd|YLK-M$pZwv#S#h;;G#3qrG9lHps1ehZSfrWT<1(}~N9O?x2P54B8Qs+=s!x7Oq-2U}Scit_KQ^G~ zLXQ?tM&+IMp~f*I+02(a^jK}bkZ^0 zOeoGF8f@^(A>w{w59WH2O^MWcwSHwwhs>-tOKvTVY;M)vO*7>h+?x`~%}oQT6e0*|toiz7Q&3fXn zDvgdYh|7%?Eo#lj*(X2t#Cd5_8tD)a$M8URMy-mkkJDs(HJ$#SYH3#DfNym6Gy1P( z1O4kFse;A2Q?R@_Wl&o!^Ie%^-H15etFBHh>)kB<#if0c^-&<9@A4a2uxZc zdfcH(ndYie$^(^k2t%^XrI{IKSCO!804>X#VgYOYC7-Ly}cK467nyqlS%StsEDz%-4GSlAS;V+vz_!D^^`d52iVVrU#zi`987;nY>qHooSEOjhnlqKyERD*gadFra z&p%wmw$S>Bbfe^tUO{QpJ+F=_!4{f`U|B%UD`0|m}eI;Q9 z3=8JM9s-Jl=bL1$$JzgrJtn;arQNv~p*3Q`Z^CSl(H_@8934iYH%^lue_;)Um=yqT zl+sog26*fem~FHIBNoL55v*~!QIo{}STD9PF*$R(*f_1}^|mW^$SK~1uFKS0#{`Og zJQnn@fF7ErNz`$|+W>F=={*8$Y13@oS%u494d!|{(x(@zY1*mL8wZ#W(t3TapSwk| zh+F{f#~W$9=Rs?Bv*DpP2_((ZlZ_|F(!43MG_}N(T5L#vv@aV{ADzUaG-%G^&P~-I zS&t17+8)Dn5BryxnPC=4PYr>N4M`M*DIs0HhAipwFT>(@V+7MmB%hWn1-et9SXm?6 zv05{Qihi0NJ>@*ZMhe^D{`P;<2A78}MOxLFwRk^Xsl+I!yL#GDrF`Jgl7{3|#I&F^ zdLHjC4OKYaqQSR%|1$hKhUsL|@JM^Q7&Wz9q5bw_WH3R{4HBwNCHst6B!mhm)lK45 zAkrK}lzyE8+Nl*XrYqDutvb1>58JM^y{ETaxjLq40OqZO6X#2R!?4sq%r2f`av?^_ z5^5fz)8ZuKXp@Yr%y*BFtkDBJMh+e*#V?f2kz}UNR=NjB_U`VnD~yqb?DY7i=X6FA zn(i@6;sDE~CRkESJUgzA4>2z@urxYF$G*cUR0{79Qi9;DqV(7*-BTqVrft|Ve@4%GSAX96l*o6LI%dz*6K6Dvdy^1VwR~(`(AR-mx6rt=BprQ7pM40|S?|94 zsZXhQKeZUjv$T`^@u_O%>%!$=rN0xVYqE7UsugODTBzF9IclXkSv9B*)vOk&C2Fzy zm|ClXzJRa6*XV2VHTxF&7Wrz#?gWu!&;6k=s&Q4}nuv?|({K@QKV06=vVa$lA#J(9 zHCJDKrlY4cx-VbNgvt9&+n=s!`%garTzu}8JQ&k5^5l~ZGxX=n8fPy*v4M8ZmPBG0 zbM+<~?OjP{)@=3_mvxlZF4s4Bv^VZU9Uo*=x6pWIHLX^cb*#jgtM{Rr^j@&b6L!pE zdNbT?TDi8Xns|f1UWF6OaKi(GV!awjVw(`Va@Z#2jY5TcAAM+4X0NS2(LNEyDHKH;Sa{Gl^s??xn>z>gjsDU58*P+eMU$j!rbzpbW85x2nY( zADj~u&lH)gchu>6D%FliCWCsKuE*;Xn}Xy8hxkWg-b7e=)X;n6?8_TMGj`f|3)-F0n{Y3U?gC(%px3jWFzUn6aC@Ye zW@0Jboalu}G&|gh<~t2(${60&U71*qD0m7HzG)0vnb^0Da$$EzFg@cJG2P*M!s+0r zPSPFN{7->Q#|qGfK?iOkTNMbM2eOOOLhED9j6CtByjZBW8Y>z>vYN3130Dq^j8TUd zjSoatVL!Ej`V`y(Z_jx=qfuABB5m&|g zN>EE^iQI@f&>zvoT4cSf8+kzUy04_ajqG&aw!l+%{ zeaj-7aL@{tyUsY4Nvzb{qPkZ#Lu#7pWVoR)NudGUOgrio9$Ta5W>Sk{q29DwA3^)0 zWiv?eu)Z^jki%hJ58Dz5JVBjmqI-Rb^W(oB&=H>*ow`Lr1jAw1q7>>DTH44~brzSK4Oui7W4y2ua;h;oV~o0Pk|Jk)V}roZ~`uB)1$ z#-pMjxrHdTNnOzet_E~x&=8AxJ)vZHdzbPsit*VblFZ4t%VEpRunjbN><9Z*&IFKd zA0wY|Qxs3Dw8V8X>s2Pv+Z&6}&0}tzh#^*Pc!*BvYSg&dJYy#Xz>SiN&Z%nrERK7U z#?OL9!Wi;a(*uM`??J(495pM`j(W8+(TFD?VYOauLu%@Gtw zA%h(~cQ7blmj&)!y*lm=?T(Jk$jV}6igTv{y-`}1ny0Nx8#m1vInOsX#Mf{)#m~md4P|;v6@}D+LWwLwo5F)V zsB<*<)2OM{rcZE3xnAMP2doI30-++u)RqED%PNS5`xbNwy778Fqt!NHvIF0!`q(Si zZHAsHp%&DQjda?XM2Abs@Zxi5F@ectH=apDjdn59Doj}fkJR&0L>xu1a7UIpf9X(> zsd^EF{4^2gMj<^{1D2AwzwGI{da!=rTeR(TlZmFd926!Qy_r5IJ9sw<_xQr5H!}^} zVB7%Y38lV;f;=}4`jJW{8)JIZke*E8jzr_;45Eu?h+1`c^~mF}e8t0|=xfm4Ok#9L zfC(S1VWDrQet|j|6ibE{%5cJ?Xx;kJNO24&ni6;@I38}??2M39AKF5x^{9K~iARk{ zn0*wR7>M_SOjLN}CAX$xDNQ!`JIb(NQaL;5dXUg#0m=rWJ08|H0ikMQl`PRjuYqZ# zdDJNlvddaeG?msp5S1?ma`=p-*rUftw{g>@OaamzDO6TtSBj3hHa*rX@4*hYey$mF zh{Ql|-{RQjBy9K zIgNwPD2aMejzN7Be!nfvQ#QW4&zl$g9Tf?W+B*|Emw`5V+MZ@J5Y5=QFkiW&5wr?h z6#8Lx&1RYl8*V{G9`sYAE)OnjJQP&qLC0a?APyry_r-vE214{4f-`rNA%&`jJpE1C zsQVt8hjH|JXj;ZyF#JPJA#g9UrVrkw2VVHLy1Hs z(Ss-_81=Fr>qV`W4x1fdPt%s8RH7(WgR%7151(p{_`pn}LywRk8C7V|QStcM633hY zlPcXkJG=({oMJome<(EffQe0|0t{my^0;20Cn|-x7>zIbVd+)qnb4{c4$bTowL0vW zMOu2}3F;)xYzt!q?FD1VZNNsBGo`ENIY@~NNoO|4B0K>@Dmw~@%y`?9&Kli7^|vLV zG}fn>+j9b4oVk<7X2sdzo%d_i-+vB@%j)-3Qs&qe_-+y%_dDV?;cIUn29sW z)jAp#ow2tuit|R3w1f=Cuql?V*LO3qt%MZw*Co;3zWR01Ogb1zbs&CNPNcOU1#b4C zkH83}Gq)c5rmzx9VcCTnJstFj0B!Y>cZ7l#Nh=E-0r+i428mrZqnJjKapK2~3+oH- z6rwQqZ=t8W>-!R!j%0!cBs>$csY!R^s-+R>mG7ASq_I+srUdIJD$q`7t3*_op`dZM z;+>&(Bst^Ju1ZpODXQKG_N_xP*F-5C!Cq}D!t+hu)~1d`W+^?16mK|D3DQ~u^B~MD zcxHvBV+L_1t<#U%QgsPp6J55tdBdD+O6Q1gvOrR_xN`DKx+UGW6`Hb4Tv3N{`xPe9 zYhWns4&lkZaAYNI!1tgRO!Uj(4C76hETXqW-_jVtL*r4}Sch77m9&GD#(N98Xi3Y{ zYKkiEX~HMZi)sAn#n_JwCYAOt(WCKMW8U6M>)}sN$aPKSr6Iag%&=+Rr>QGL>+qmP zuWpOnb)aQ(ACCT0uLBFSoI?GON~d=zbm*9tQJi(RkgiABID0T!zlKJjMg)!E<%hLs zi+XWu2fq-&o^|}GM?{sNJG^39a=@#@OtfTR`e7Kk@44}md4an6`GJ!^thx(dkH$me z&?=}|vQs@+fm2T*6}|>enWqBt>Iw)>s#|=BF&Hv-$@A)s;=DrSc^7sr>-ZS%KAdr} z*JEHd?HkdJ4LrcEpJwMeO^>rv%vKa4yOCo=aYc-}J!r)|lRUT~e)vgr#AiO403VT5 zq-SK3W(;xC7zNHk+BSMLP?$*I28e5`fFf+-ROCW8OB(2r=-IBgmSjnKi6&7jqPY_b z$AS-&>>?lT;OTo|BWSiabBcWGyn>c?I1qQ8XGJ7_?SP(+gSpZa3RUm%Qxv+aNok#nK&Jo-3T; zK^I5$=e&*43yHEZ8pcc`at3QJ7HU85wHny1M@;ca%#Y9SKKJ9N&ihFBx#4h>!|LX# zh#2B9&N|Qf=b_RArDp^J7kiX=UgnJRHu68O3qO6N-^hZIHN1$4@HVX;^z6v&R>SLVshjfchHSmbh)4rw7MkQ=^J401^ypnSC{#3O}xWMF#$wg=$85%CyA zoHxVvX5b6peu1jVU4ZmumCt_(Y+ef6SE%az6>37==adS3PF0P44Ysx+jH{u)Mpe~b zud0WyN4{RKs?@EjdgNB*$F1Ps4ty8FxC?y9+&yZ-@DEhAx)vBzQSCy3XR&_4;=kohN(j;9cZrw}*Dz)w}x@Cd?sT2%#htLp4-RWrIc~@GsbT zN2#HA;PxNoQ}5#YyQ+HhU6dVQo$^(qNPNf&HHz;6w2+|BS2aArSM8tZtMO0r`LdII zYG{(LdUTR+LU6Lrmz#|5`$Iq7SEXk8sz+w|e07Jx-(fyq?fZPyxg&hOkt2N7wMY7D z#*XxWx6HK1*aKT^5@KZzcg-#*K*mU&rkfqgfG^7$>F1Vs;*x!|3~J5Ib*lY z%cpqUh)cb~{B87|K8D|PSG z3!C$Q%lvslcj6(Kcq_pR3a_aG?;`L9h4(R=C;6+>58klw&^_|U#8Y_tD#sD=f0ONB zFon~MYwhniedq@HW5SVqCSD9zQh0|8tyDg2gyP2N@@pFMEBOcJt;Kf_&y|jOaNGVm^Ds1cc>*ciPk@&b9=dw|m~aIW z?{e^V3GaB(JLz!oZUb*bcvC9yo&#@(@VafDE4}Z4r{3Unn0jD`YxL#X`KW~RB|99! zl)h$MOC+4Q&0AC`C#oMq!mE_8R6n)|?<`|)k@PQuDO{=_IpN_!U;dQH|5xF%YaHQH z{m74lNA+We@a9zrm+Hre@D8lN)Ad7mwH0_&KZb?3vI39l#~$G=w)2uZVyTIEa zJg0t`c)NHngEu0)3oF>GLEkd}T@Lp#d)#sL3v0?$8%)A9WZyc@yWA-qcVo&YZ}mF*RcSFUj125@LlPC13do>=6#_IkHVjcmru3`kMdrBO!$j0oA`NW*3RpJX7DG^ zV!M_4#TaW^6d?fSB z{)S0}tVHcv3+-#g&V7v5<$ z&t>lz)PbPz%Jqk2uNAyL;oW50bJf=jcw@pV>aQhSs)yHsH+eSa%NtZD=u@E{(!6Td z(air8vkQFJ{E+5V{$rSTK^fk@`h_m>zmdw0J{96c{lf5Z9Nv+d?BWZi{G)zhyYT!b zy(@~>Q`9ev9nbbo5dTj2g2~=aTziGrZ}VK`LH$Bt4%;i5e_Q>+HsKA}_N?)S%8&Ym zJ;Hy?=3Dd4a`{c^I09Gl1025xO}?1?c9m;0c#}WGyh`iV7{z5Ayse<^{ouas-4EW_ zIC!suw`UwYTHlV2gGcMz-Q(ct^{wzIFZIXdpFqlIy}lKmS!UYxipo{5Z-sZQUH?nW zdtOF7{U>lfz9iu}c3u5U4Q%ZeUeP+n#nbEC6WQK}?C@RbSqZoKCo`{TzUAUw1m3Xl z>MF$VM(}nBkMc`@O621c;N^vPYz5xi;O!a*?+El)Bf_gRJ~V^3M|dYz2sZ}a*f{KM z1#j{xlFt?F-49-^@QV6<@kjafDtOz3*H^*bv>McZ;Z;iSJn;4kui`iiUfrpjj!O0} z2XBe+D&^m8;01+Ow2pA4_c`zeg;%K_yaQf#9K2(&PTVq%__cyJB)p=14OctLfVXQL z;a&&c$T-5?3Eu8;*n0!KQQz$V-h>%lj`_n*o9O83QPqV2C0-aci@wyn z?Fn*Q#k}L}{Bh;u+n`Ne&AjDyxYl}r!aoMK=B#CY(S2jrzELZ9IpGzpiz#mS>?^;G z{~u$|NPo)YpULmQI*!*T?R1nVAIk5cF!S#c^G-fmd`kCixcm|3>%1jDCO)ooKL_B76yJAn4GXWRoiFw76B2(e@^e)9cvONvCj1h7T3_UPIKIEI`BwVK{^!9D z_A>u=eAgdizXYG!-$)}`d^oH)n3Xnim7ru@DiS5kQU+4h!s z%b&u316MG?b}RME)PD~O50A|7$HdcBPpSV7Cd=4!jYrgf4+`(Ec05}O_osFJNwK|8 z*x|bNHSU6qEy9~;^IYT0%i!gNS82SY_2~}b{nNJRil1Jera68^_w8IfTA%I~9_73K znEVq+dRm{33U8|Do%-qG(fV}PIC!)^9Ucdd)~DNq*Jy|9%0F74=7slg1s<(W`!bv_ zmC`}$)1dGc+4fxZh1REo!aLCB38ws`^=VRgO*YTfPW1Xzcz?2aR=-DfXVxG+1Du`~ zo9~L}0`P`}S1F!h@U{rAT)K7t3Er^qB6heX<|FrmKemtX$?mJ*?GfI(aoDB%uX8qX z`g?4?s~yt)*QD^GWq1@m-GAL7yf4}9zeN6T1%K8chhJ{LkL=zLUajzcZijE#B|fcB z^TMBK$D_pfbOZ+9+-8mk^>zAV+OajSA^WZ1=PzXb4MKO?v&BCK?sWe(a1ryVFV`Pq z-_@VcJ;2?p2ZtpPKlsx9d}h^0^NDT$a;~qT)}9cTKb*6j$3f{2r z4z}~t>Mtq2Z-AfM!r>S77gqig{|IcB2d`lM1)RFVe7!_HZ3RCk{Bq@`>pyr~gty3! zw>57g{*B;ozmnteNjn}T`nl)8-z)r&*!_T2E@Zz3m1go6*#48YeJh>Bp9lVS;jg#( zCGtHC{vP4qYV%9Pe=GQXU*!0F)Xtw0<+Kz0!7nlYiGA4D?H~MEL(EUweE0lk8tSX? zS}X9H!P_FdO7%JhUQT%Bp0AsWaJGWCLwK)Y%+j9()oGZz9`ctcZQF-nJf3NUY*?f2U!K>TG zc8l7xYhE*RI?7XcOKf{C-U9H3h1X*9T zQ@TD6{;2RTvHLA~-kj{-1>TbD+3s4~u2nyX|0?){!tdHg{iAry#6!T_zrprr+4cpK z-38#~gm?Zp?8d+!{U+Oe&9>{x->u;7$}z7}e{w(B6JE0&zRVwW`oWw0ZMOG}9d3#K zbS5@2b_oAfn{VYW$_Agkc6W{X^4u)9%Sn=2Cgv)l}nQ)zUC*F*HU-4Nee8<15 zKWm2Du!KY5>W_(!Yn>W{!w%t57o$IhCy@Ma#g!WekJc(CzbeJ=Rq#ywipC{Z{HCGq z?ixq9^T0Fq%B5pp`I?n*Rv>QrWAeeuSCe1m`eABUl&>bgK3>D-oN}_}S(Lxm;TpM_ z>uE&j4&N32PPomwg?az6d9Hrq4Y-X7uhRWs+RvMFE88nKUQqmKjaw_cv+Zytew1$7 z&zmp2u+1ycKWqhmu$vSGcqfyJsJ~eYM-Y;{Qt6(jQX}R{3{5!1+}tG$;RE z@uBkX6W&Md@kQ=CQu?U;vk$Somu-8lc1Zo<{5-2+P_b}&Ex%wiZ{$Go= zZ<&JqzcaP+(}*-a=ZWkSnG$)C$j^uz5_yft8%5qBa)-!AL_Q(%XCg;M{z2s1BL5?D z@@F_c2Z}sG$ekje z61iLCZ$!Q!@^2!QybwG^yBI6=M&!#Pe3+}zsSc#j);6o7lact(<@5;#Vu~<-(sO z?&ZQiT-=@cjurk<`w0Jo`>;P(+-nL+*WXO~P8Roa<=ZUoQw@i@S55%kn>?jmy7W`&cLL*c$VEO!z5r zFIT^A6ZdlU=YDZ7SN|Rr_j397Q*kes{|(DHea=3BmHyksy`2B&#JyblUlsRq?f)2g z(5+nkJ6+t(a@AzA$={{oUatQOi@S6G+e+UB`*5!da{ioT0=E2rPTb4Yk0aaJze#`c z_l)x*_lTUohxNlE=l_xMHj#TpQt$y>)E?)^1>t-qcd|c6v5zm5Z{*`j@%OJm_TROe zJ>FsI$3#!*p*m^TOB4Q_C&m{K3ZL5c>@Ma{-0b!DA<@sU^e2n{FiZbo(H~{$7mI$b zrSBGfy`{fW^h+)MS47`o>AzJ*|2@&$>3U4`=UH}M61|?#LL9P zl)EWsQ?8~QO}QEQdC3P;4#tkjXM;_?n0zzXg#RtEW271HO*=-C^@sB31YFA`UEjCL z;e63QXz8<}f5OsVRfd0i8UBw&Z}N|0rPLqF=qIh?`eKKBTp9ftqJPPXXG-*TxHpLY zj~4$q(Z6HqUlaYL3%vcrq;AG`zAY@HzpRY@cG27Md_nYfxPL8U=ZJ9W_%w>%&d;Ri z54O_v9nl|e>3>xk`ZWj3skvl~iyKf0TgdW1h$4C>e1){%5?J_5NyItmg#dhrW=O1PL z|5xL1xp|<;kDTN~x%}||jPt2nzMgI6E62Y4U&>cn3kBD+-D9Ob1rFj84U69NcUjSI z620kna-!d2>FeYHxvyLL;X~N|?Ur60%KArb{VdkMXz7E8v;Iv>KPGxV(ngFqvTm3b z<8-c-7j0-CiRR>{Tu8baCo-BqJP7(vs(0KK48Ft`cGT>=}8WE$kHD!`fZlp?ytOZRu_*^5DStnJ%Wl7Q@8giyN_{u!tviDCU7|PX z#ksKBMvt>%wSKv!9~FJX(vOLLqv%bzN*=(wRP?6b2#S74^roNjzn{as!Q$76 z{tio@75)8|J}3I9q}PNyCi+J$KAnk6pXV(-&dJsKJ(j*p^nbJT!=j(Kfy>W?>pzO^ z9A@bQqCei!4~u@DrT5QfJB^|@`8*{0km#pg!r}XmVg5l@eF%tty>0(k=4UK@-EpkH z)Y50?u>J~5U-tplUnP38ej5}0O`$!1Wx2|?QvoFB-Z;;>u8Ls+sF7dU)&#%{5(y{ z-HdMmaerLg7hCRT{G;&PAJZT0kbcPYN85f`x?d{SuYJnu*W6*0`cC~Ch48$@*Yrnu z$(KErenj*p9riw(34iEUrQ>bK;a-VvUgS?iz9Mo`7uz{PUoO(@170Ec9+A65 zJ}>eWk#CCJEAqHLw)bI?9~YSvd8tUV4>=^*?0bDr@KYjxDe_H`?}#+}g=U}b;3$WC zoX7Qe313(|m&nINz9jP3A}989J{>CZNRg+CY!cZavR~vUMSfZ2u*iEvj);6s^@E8;UZ5E*(@?B@)IIsB0nYaYa-1)`gXzh ziF``ruSNb|xqs%|H`~MI zS1!JWZ|=95an(q(UZ(MSJfG2@aCl38Upd^aCn~#}u+~1$ylwli*Y`8#)$Sv`YWMiU z9Tt0C`?B||@!3o6W1VNxyF~15*+;m$tZ->IX)dyLEd8hlK8;^y+4&Wg7k!oG$F{OO z`fDuDzKZ3Bud_U18_T6vvy5KD^0U{nJoP%3&x;(op7HJ9VEODfS^hJ}@~CgKTyz7= z--vwVM#dL^hvoe5vV2Zt@+QWg-Olown^`_}3(Kn8Se|e@%e8l~{N$Z1zcI}6!T)CY zv+uEd>iaDJMGu?e^VZ!g-~R)a^*dOuznA6p_p$8xAERTDP<&sa|0@^Hr8@zh(K=-?8lZJ63gY2Stj;l`K2i=Z=1?;)ijnf_h;EOon__# zmfxsldFTw5e-`=80~s$kh~=2bnFljI^AMIB4`q4nESC2i#`2cKS?1oy@~R_PKKx%S ze<(lnbN7*qNBt}(&t`en(JXt9VY&aYET0hh$Kx1}9xrkZ%hx}^^7|hY{fAh-JD260 z6Ire}iRI=xmOD;nx#tv?Gv=|ZKaFMghgp94be0dzXZiX^SRVROmS-(snK*;x^=Gnt z>@1eLbHJa5PA}eWjbDRLdEK`O?h*r|mbF+wAVQo_fBAcx1dS63Fb9+N_R>@!+3)-$)UsU+ne|=0>k&@tgf4V4cVH>2!nz|zTn@i6;x&i1v-~? zG)HIyyR!0k0vI3T;-|y{*Mg&7n+0 zW&I@_qTQKjA|6V?y`g9~E@k^`hu-igsXVaplL_D1d#WNk5 zR5ae(6bq%(?U9~HDiZHTe1;wrzAs-#=~>^js38_hbcZqtV^n2FUNa<%v1}j~Q>>G$ zk%;IVVuzKRlM$UQO`%w_cgwzt~ameppeCEMIp%S|&Q1s(bG;G4|%CVT=@N{f?mrhISCWGqLXc?#@VmGPAj} zJJj8W%-Y4j(~UkSzn|ZtY}9#$dSG$1mHu>ZMwnx&5fmC-S-5gCJyA!F+!rbL%BARS{ zO*GTj5=IR{7l{f0iz5~f!*D2=h*BLwTVEFHM=!26?6z2o2I9KcEoP2d%(hT8F4Y}& z_ONSVSS!liF`I$7JLR&soMTH*FcnEtABsS-Rk~mcfpoY`Y+*-OrO~LRnLG@!j#~xC zh}7HMYIihp?9h&}CzRItvt2Yi{{fehO*V!-4wwYA#ChyTv9puRI}-iLP)gg%d-S^Y zQL!~igM`stWf*-S^p+^N^s)q1BMN`SO+~z1R(4xXt&wi)Nqdfkr z4O^Hl_8QSz!@AWCdGxy3#bUyuBGRO7MI;x4G9c$6P;5!N-J@L`>hBM&q|Ur4glSPU zqf2Jk!)Zx3q+=0GF5r8I$A#j8oLdr!_V(%OoiF9wvV2i2)T`sXtCTyYw8-whcA8`( zh>=p9HPJAa|L!7JS5+S^a*WAv0=s)G$Bhv#kd+DDQ&7-j9tzI^sAiGdUawmuW94?X zMi;$kSH+{5LeN`0ZmZFqqx<4<4wi@5RnN0JbdTw3=S6PlFj_Ikk7;_kV<1U&HH`^n z3-yZ|LzvX74LSCPvXS^;t`bjU<erqj6KKTcc@Rl*8;yorT!o4rvGL zdERC6Ae3IeGU1`+nI?rJP9<8*F6JRs!YL8c5$3E3rLcTMgDP%FyK4>%bha!P6P$f5 z@g79US)U=rqs&^;(%c-`810Tw!)gm))<8!?qI@KN;O&JG4i7QGsYxOF3+Em)3skFk2=s`O03}BmD`~Vz-Z7 zwvP@>y21mo2#r0mcqPjtMLg6hPdwVN5fDvcdJFb$hpkHw1w}0g$#x2Jlo?o@VEu>| zi?tnj+{0>~BD#8?G1hYqV1g9Sq&9OFHZ5}3pS{fMKx;)7AzYJ7qS19QJ5g5?Q5gmW zzhxq(_{%zUOK6F=(?k~9A=dJmGm%=9O7s^7fNJec`B{=j|pGj&;WpJYyMUj25Ts*dB)I%~&F$k0#U;OJLawv{$44M3_K!5;d7Qy{g&Crq4eBR6ub~yxDDWJoTq)wr@ zjo41u62W!~IqjxsCKH=_2#jiw(d(kl-bf~$jC9j31i9^TyRDC)boHE$oW^XYFp|e3 z^j^19KXP`k6LXSGDxoJ2*~t{RgvYK?jD}=$OR|*E;wi7}cOhp^km?l;f{tiM?WeMjsPIrgmI;VDNm`Qc_>(U!Bkf*D=4NNC>wHy^3 zlUgb;F22Vc%-;737T?+ZC@Ps0{_C6(m`M!i_A*3xz?pV!Be*dg=hg-f^6_={#(Fm4 z9r@a}kh;aUa4-{z(_Db21;~*|SUu-M>sBxMI@GtSThz@pD;xvjQS{S)+HX}d3>M~xkz^>`7D^^DNTO$&x_ThCKI97E<^9*FYo{-X zhS3}AO^weTxG2#*kQVgi1A_^5_d%*^J%(HKuY(zk-q^s*sHc3GxnpuA#DC1FQNwuN zw?>UTgQrvvXi~3K1=TOASF0Cm7OKl9w8Yi$MA~z^WKvr~-7?9E>X)V;3haq=XsezU&`>wrZmBy8P452i$Vg13FfvW~(|)7F{GJK7@Yka}XK zsvbzGORHniB=70zomlns)I@h8r2c|*QCiFn)wR{AhnV22$0pUNF?u+;dQ&K=?yE)- zY@5)R*d*bcG?L>1t=<_ChtX0FN@)s4P9mT$NIvsp;FCrpW^jW3rIcy@M37 z`s4npD$(5#4%0MH-B1(l$Kt##ffk1zauaZwY#E z^=u8o#$(OMetNjM3M)0*qz!aMe_QMo-nUk7Kwf8b$+o`0@Nr4Z6rCM<4M z*WgFuMoBkqAt{|P{FaG&e^i_K*~BLNCKU?OasBLmDA2q2!*n|lD~$WU-LDyQE{F8` zeoleEGDR2luczw8i~5l%)mNrlrRsRT`5?rVp3$ztF0GEm$VA#$?~Y(xcJgiyCGcxi z$b#Xk@H}Z%XpxRA!QnlWN*fyyHeF&DG5%rBp>P8fP9*(ef z1O3h3NY*fKZ5+sCkf-@cTsT*taK_+TA7u9>ZT( zRyd4j_v0+Ngd%x|X6nDgck1u@@9;4BHG3&nOle6==cKNh3d`g=v0)Hv<431(MyJ(J zrYs2|T~ANZrS!s-#j7w+{>7A4ShLISkh&axNB^5b8Tvl`9l4ACX7ACOA5e&H_J5{0 zQN9u$b32GOs{an(OW()z-_b|NBXykWj;Z~j_7Db?5wuesjfbY9h|vE&3Io}lI-E!8 zZ~hr=K>y7>Tjfis--D5Vj!f~C^xsn#rO>O}wl>H+qhu@;VV{cXY zbPoLt4x@h|)#%&W;otN(_aFK@^sfG!#T(;Q9RsNzx`T7sbae%4=g=k9APjGzzawAJ z-@imO9*zEcdMKLVwX%8v-L>xQc1`c-!$2Eu(lgFqkdZG}n~v=Tz|pJ74z})bUP_1B zdBDnO26_0a16t65s^1}S-UsGM^TXsV|d=06`uBonS#fXgt_30T-Tz(1n z+_jY7G%3qq6DOKb-=3lG45;hjIC33%&R?%Be}n#x>c6>f()SVlHnxAP}&SUT~{Ac2h>A(5Ez(-Y6Lj8JXa|Ba& zo|~wD&!ohs1pR%cp1!He4yNX)1IkW>iJ?oKzv00kFI0T=PEmpN}y}=?w^; zEjTFnBZ7wocK}m*)CKH6BzX98#%bYaKg;;Dg8f%AzD97D;QPdX_EvU(Uff3n?-4wD zJG=i=aP|(y2mKeve@O6gf=2}}5bVE``5l6@f}?^1-)HwrfGK@Lg13tMsNfq6zK{8L z3GRA;@#BKCf`4b+A7=M|3-00&IiDz4$$5ei!2!YF6`T|NYr*E6!T0&uo;hFeY+y=n za+KrKC)odM#uozX`0QbPy}0KE-z~WA5A6P&;DF#i0F(dRo9zA%!DDYT-tQ<5KlgXW z#{lc{-plw@anJvQ@iM`+?=X%Fe^~IR#C=TgR^xx7PkXpoa9}^iI|ZvLjDI0`MDX7Q zj|x6$w$zWQ%%3l~ZW`lr1lR7*ctCKT5{1u@;L%#fw*r%sIrs2+!REZf{|Gkc93Fc# z^Ue8&X9H9DQFRJL*`mFa8$_Hs`p71)KBRJ}uZ!nSjr&g3Wnt z|06gn?tc)R6Fl)a2~Y5`1|P}xmIyZIu*C(N^Vhy4*qpoeJ;CO@wcW=5QEcxYhA;TA z<2ihDu3EidbDmnvxF5s*uMlj`Pa8Jw$Flnqg6ocB{H9=YPTHh79G*EJ?RdfFT(qTv z&3R}U!R8#auL%y!W&3vt&Ix{Aa9;2sI3$qjOVpcI4n3Xc)MV8p4qd4N5y^m z2icxEzwAuG=G?L#!REZK&k8o@blnV0MLl{F$LD^*b#;ti5F9w2@tEMO;3*#x|ALPb ztUkj0vy8joPYCX+XZJzDNx@$goc}1h-zhk-fbmZRXU}B(rr_XNjBDp|eDZ=%7Mu*Q zd%NJ_2F4o&XB!!RMevy5I|T=t*nOAb3w~2@UhuRNq(rdj|fhS|JqNo z`xgX{3C;;tpJMmB3}5h5g8hPD6&w)!PvG}Y&nokKVJFW+{HJ3riS1MRv;e<Gl5n{zWB z6>QGO__N{5xfmyXn8P#YV1xymbGE-G*qkTzBf;i8?!O8)=WqK@XM5&csj~%}bD`3L z&AHJz!RFlPp9(hTO}#DHoV)RX`E1{uyRlC2ZaHV;tHxc}uX z%(0id45c=IbZ5R!REZooM3aV)C0ipKeTYJ_N#);Ii-{9+1;E=dWv9k4(Z1T z&%*Di|DMC&B-osvf-CbI#hRU~@j1@1tzbobPp*8xvI4E0y=ZR8F-CioGJv&#Hl$u9((^Y14tAb!?4_xS^a4_C_kK4=~A^!MR+ z)n-@g@D>T)eH>$o#Q|u_bz8MF_I?=WzQ!2C9lP&j91uK|XMB#};U6>JAUH4fE*CuV z7`uO6a4^dFPQl5i8RreYnelGH>LBiK-V~fam$46m;-6g4{8@rWzry%~#(gus;B$uH zI>9t-lmEQnZoyp{_P@cnKgIY8!Rp(LuNOQd_?iUz$$&b$n4t$y2>GmjvmlJ%8;E}u8 z{V~C{_b{ezfcQyq|C{08#qRr|T9JEJ_{RvY75)Ojb;55GoRs*51P5jO91uJt;|JXj zBKx(M;153EG5jp!hm3n(JFC|OXC*vrQELBPF?PrHxyF7ekJAO`r2aJv4&KUq`WhrUL zhx^$5b-`J&kGl^#e%Tk;{eX!QUuyXH94)w3>Sw@UiSH)_2gP1O@bFda|8l`&g0B}G zkn+9TU~%7R{8LAT(wR~i3Va8lf-O_KOZdXEx3BISR&U?u5WBY5lwY%e0X>psSt z1lN6z@fCuHr9FRJuwU?lf|C;eX9VZ(VgG*+927iZvcy;7f0W=c!Se+NZejlm1qY@7 z>oo4qvU^5wUh313ahLRd-{7Ay|EGe7q<;QJa8}&uM?$E+<^>-qI4Je~G{GZM-JdC9<$H<24>JEM!fWc!PyMYvHXHzR|+> zSomQJKWpLNTX?U958B_Gp3^P7)WYXk_!0|WZ{dd+qnF~(sD&qEt%dS-+z+$x=@wpL z;VuhbY~djbZ@2Kn7XGD$|7zi>2YBOql!ec*aJz-qTR3asuUq&w3%_jPe^_`%tv7zN zE!=3~ZVP8Ed@W_cG|Irpc)50AVKHtJw3twa5J1m^H@EaCB z^gwU?=3BVa!WUThN(*0W;rlK8l7-)7j9CYN-nQ@o2kH1Z{o%2UF-q}g9%ILUtA*1R z{|d|fM;3n0!efk`@F&jH@o~aGp0N}DBFp_;%RO!3D;YcXziHw7EdGdve`n!;S$O8b z-uN!CaHoYgGRCONpD!?W(s!$cpS18E3%|?Q$*)5W@y6!_#*Y2789VuLo`o;8_(K-H ziLn#^M=bZBTljB`F)QQG#6xxbFw5r;?RB7kcJPUeo%jVU_j4@VYvGL+-eTcv89VX6 z!@`eP{KqZ)w1r=?@NX>qnuW(K{5K1~!`Mmxj9EH=9DKBe>n*&(!buB%nX!}K-?8w$ z7Jk^mk6ZW|#!h~|Zs7^o+d=s{?nheq1PeD8t~+rJeux zT)S}n53a{?{RGz&xSquI6t17*8o`CvIn*<_p2bB+w?B`I_Of2UwHw!qxL(5bb6hXu z`US3E;`$Y?QCz>q^&4ET;CdC;Z*lz&*Y9!d!Sx!hH*t;OIuNs$nYa$YMaP8C!gUxf zIs%-I|E4`LKdz&2&Bk>!u48b02-jR(C*V2}*GahQaM2Onr{JQ!Gdh<0!?@@;?)kVr zf~y`E9m7pWaMSVIboBOFxB|Eua5ds;!qtpxA+ANZ7UNoii}v5n#PCi{4=}Zsuhv{X&ebG_S|ldi{Egt<-PO z*h)_VOjz!>AB+cjVbAs5;}34mYg2|Jh3R>T!E*E15Ps18(u&1*7q8Gu#Z;V}_h&3C zg({+73X@m449WfSpwaOwg!=3)d4k?{;pgeSTKDt!#>J$r{7ZliGv#^xub?ix^EYcM6nwzn_xng*%ELla^sqi|C z*NYUfQz4mcUg7a_-L-~!`u!R&si+>gUW3(4dS9sU!X>NdO-$#TejQ08(~1hOwRzO$ zy*I6F3l+UhD|*i>wOSX%OO^8elVHy~CtBBD=2b^_q#`eV6-V6Cu9tSSssp_(-e7cI zjd3eIZv{FIr8;-A;u^0U=zaCjG2!jU9X1NFC?1}-N{s>U>#9a;_2NaQ`2ADE)=0m| zW;9lpjcA!dE;3~tifR-*x!;vFrll$u*(uk-!HlclD)MH%duu`|bO7+rt)Rj6nwO!8 z3%~Q_Rq8kFih^Sg?iO5z;(b}pYg)gHSFCcsDCc$6M@6|`{j!|p6)~^Y(>pl1;Peh| zO_?;(O=l)vTQ@JLI|}DLb*(8J zB%opG;{vpkePV!Ct|`2hX<_r;8>{tOoP}PJYYt)eaKc(oR+czC&m5@7(_wRJp3%}Q zQ6HD*Qs{BboReqtt^@L*+ULo59uAHRD{&;ALqQx$o`vTolsE*>?Of*cJ2%C3>>bpF zBa({prQn2!$r$hUV6=r3?mYI;HXKi&%9(bc@X=Rt@`QtpH3f}1RfoQM&#fzH3J2Cf z$F+eDccYW)3JQIkiTjAUQcm{SbPfkmGKbQ+b#fY=TUF*5I#9}$j(unvI~Jeo2EF${Hz+Ee9z>(QyVmp&03-b*9SUzA$zcl9C&hcgs;!r^y|TixfH z+l)djE%M9*Rc`Ew8+rTzs7(#RCs{reB3 zrq0j$^#`LatPEsxf`1&M*jWz_v}6@Ri31t=kj9MXBu2?yMN*%=NMF)8MXl^|%~!_aHfD(W8^|75QLA=Y+#v*Kvf7a(&?_MUPI-P;_+O!xJsFJ~h$O z=@Stxot%^CXpv9O0f}-lqH`o-XG))iXzHu#OsDnfhm%h4F@NH7C>mw0KJDN zH+OLAnVg*{(Wf8%Km!neno4`0Zp=GtZjIiD!yPT0vgk6yyPbMpiL*xkpoktk^`57j zOIw(3Y&H)|=^6&3CWmzV4A z9gQ~FK<957gJKQ$4kDI{e-DC_-V&GnK>c$Xol&kDGBL-|?v_{CTjgWpI3FnhXN$j( zE>W4mp%6bWmwfA0tnTtmp6P@XtGRZrF5JScd=QYw-aYQYCWFU+- zsZZx;`9j>Nw!%Hq0;XG{amkCaQkacBA7>MyGhj>&^KI zAfB29@oNbEI88T|9eD z7)dSb5Z55imF~fB@U-YVT$uCF*|ctD=Qr1W@5&JlpK`Qh%sD;?rVVKbWd>5?39C7R>BYF&jSnMYE+A6Yq8 zl=$Ab`1KTu_l|XCEBvEo%e%W{1NzWuI@Z+5P^nO~So2pXM>j3Z=XRSe+U*og<3=2Y zf>Lgnz&d$B!Ik2Ky1Q|(VR}&%2W}(r_z4*FT&0Mc@N;`Y_QZDPF-f73%Gc6b3bSj%n|!lI1;9%`WXVML*}FBUUze7o|cR z3al~_!Ppx~RSwBTsSr|uRVE~z9SaAem>rbQ5HD`{hWWOLav=%HWL;Wk)0P4HYMH`4m7?KORoNUUV+5cS?( z`c)L{>88qL2qs)K+BbuWtt|fOf|ADiLg}_pYJDV3TcD*f3MZDswVi$;v6Qo!)m0$i zCp1g|^&WbCDw2%huweRa7wx}f3uo`NNZGHY~r^L(pZZWLMs*DP+@;{U>%m3 z$Vd30x`GKUC$k>Eg*6b0m5))kxhL5|ztKkC>37dcM!tvpwC)U8wEEOPv&EM86-qRY zExQb*dwls6#&37w_oCwA#?5Av+ldknh<L$`P6|H$;zI6pUkGQ7nOzy75DK-VmG; zcOHB4(e>Q7ClL3OL1i4AM}$1?XkPBqw2M+^Z?Tygid5~>iSO}y zfr3fZ=^sIIyHI}6^X6jP+0=09q<-->IqUyd zW7qf6Kn#P~zcThLI$`)Gw|U~hu{-XD;8PJ58B7or^v^d zBq_rr|Mr=FUci}tB!S~W^r{fa-!biipHCs#EA6bfAN++hEo=C=A|{QZv;mJ4T|sf$ z6BGv>nSOIWP$21|NU}xIH00b1K;*#5$U-W(u_mR*nt)*_Vv;ONt-%`E1D488uoP}8 zG1vy$m#^a|1dq)1+PtkdX0hClc%8ny+AMA_{m+{dc*hlk=rkPZPhbuEHap1is=lqZ zb!+;eJ9N9QH7mG4<;(3XK#8XosQD{XOr{L9;&O%T=vR11T2Oepeg7 zK6H1Z0-^_`vo%cpN~(&xx$-thuw8#h%!2sdw9S~&kv)mIIXw0CsMkTbp}x2Jf@S9k zo>w?xR47EYWfP9hNreK6OAF|Xe~Tr6jI+5NF9m2cE(%D6G@Tats$gb3&VnDSp{cel z_}_BY;SpUOR2l(cGLo2Pr9w2WGxIYj7!8?B0e!dx@hdi@VsQnP86IV%w6%hb46Ps( zcH|DGpCKkeQ9G=}m9GJoZZb(nU;JXo+a=Eguz==Sn4cg9Rj!TVG}fa^%1*c@i@dHx z;f+QsxjNsHD$YYm8)ay!AaVjR3QU-(Vje+_xZ+{ute8$3_G<<{hH?(hvwLsRZM?j$ lDqF5lsYar$S>V!HiSJ0#VaEn$C@0M2Js?y0i4^_s$Uj)0t6Ts8 literal 0 HcmV?d00001 diff --git a/src_v2/libs/glfw_osx/lib-x86_64/libglfw3.a b/src_v2/libs/glfw_osx/lib-x86_64/libglfw3.a new file mode 100644 index 0000000000000000000000000000000000000000..0c113d7b3e7b2667ae103a0f80ea0461d95366eb GIT binary patch literal 281576 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 >= tree->nodes_cap) @@ -188,6 +197,7 @@ bsp_push(BSP* tree, BSP_Node_Id parent_id, BSP_Area area, u32 user_data) if (bsp_node_id_is_valid(result)) { + zero_struct(*node); node->split.kind = BSPSplit_None; node->parent = parent_id; node->area = area; @@ -245,8 +255,8 @@ bsp_split(BSP* tree, BSP_Node_Id node_id, r32 split, BSP_Split_Kind kind, u32 us split = clamp(node->area.min.Elements[kind], split, node->area.max.Elements[kind]); node->split.value = split; node->split.kind = kind; - node->children[0] = bsp_push(tree, node_id, {}, user_data_0); - node->children[1] = bsp_push(tree, node_id, {}, user_data_1); + node->children[0] = bsp_push(tree, node_id, (BSP_Area){}, user_data_0); + node->children[1] = bsp_push(tree, node_id, (BSP_Area){}, user_data_1); bsp_node_update_child_areas(tree, node_id, node, 0); BSP_Split_Result result = {}; @@ -260,8 +270,8 @@ bsp_join_recursive(BSP* tree, BSP_Node_Id parent_id, BSP_Child_Selector keep) { BSP_Node* parent = bsp_get(tree, parent_id); BSP_Node keep_node = *bsp_get(tree, parent->children[keep]); - bsp_walk_preorder(tree, parent->children[0], bsp_free_cb, 0); - bsp_walk_preorder(tree, parent->children[1], bsp_free_cb, 0); + bsp_walk_preorder(tree, parent->children[0], (BSP_Walk_Cb*)bsp_free_cb, 0); + bsp_walk_preorder(tree, parent->children[1], (BSP_Walk_Cb*)bsp_free_cb, 0); parent->user_data = keep_node.user_data; zero_struct(parent->children[0]); zero_struct(parent->children[1]); @@ -315,6 +325,7 @@ bsp_walk_inorder(BSP* tree, BSP_Node_Id first, BSP_Walk_Cb* visit, u8* user_data at = n->children[1]; } } + scratch_release(scratch); } // parent, left right @@ -345,6 +356,7 @@ bsp_walk_preorder(BSP* tree, BSP_Node_Id first, BSP_Walk_Cb* visit, u8* user_dat BSP_Node* n = bsp_get(tree, at); at = n->children[1]; } + scratch_release(scratch); } // parent, right, parent @@ -388,6 +400,7 @@ bsp_walk_postorder(BSP* tree, BSP_Node_Id first, BSP_Walk_Cb* visit, u8* user_da } } } + scratch_release(scratch); } internal void @@ -462,16 +475,16 @@ bsp_tests() { scratch_get(scratch); BSP tree = bsp_create(scratch.a, 256); - tree.root = bsp_push(&tree, {0}, {{0,0},{512,512}}, 0); + tree.root = bsp_push(&tree, (BSP_Node_Id){0}, (BSP_Area){ (v2){0,0},(v2){512,512}}, 0); BSP_Split_Result r0 = bsp_split(&tree, tree.root, 256, BSPSplit_YAxis, 0, 0); BSP_Node* root = bsp_get(&tree, tree.root); BSP_Node* n0 = bsp_get(&tree, r0.children[0]); BSP_Node* n1 = bsp_get(&tree, r0.children[1]); assert(root != 0 && n0 != 0 && n1 != 0); - assert(n0->area.min == root->area.min); + assert(HMM_EqualsVec2(n0->area.min, root->area.min)); assert(n0->area.max.x == 256 && n0->area.max.y == root->area.max.y); - assert(n1->area.max == root->area.max); + assert(HMM_EqualsVec2(n1->area.max, root->area.max)); assert(n1->area.min.x == 256 && n0->area.min.y == root->area.min.y); assert(n0->split.kind == BSPSplit_None); assert(n1->split.kind == BSPSplit_None); @@ -481,6 +494,7 @@ bsp_tests() BSP_Split_Result r2 = bsp_split(&tree, r1.children[1], 64, BSPSplit_XAxis, 0, 0); bsp_walk_postorder(&tree, root->children[0], bsp_free_cb, 0); + scratch_release(scratch); } #else diff --git a/src_v2/lumenarium_first.cpp b/src_v2/lumenarium_first.c similarity index 62% rename from src_v2/lumenarium_first.cpp rename to src_v2/lumenarium_first.c index fa40abd..8f97144 100644 --- a/src_v2/lumenarium_first.cpp +++ b/src_v2/lumenarium_first.c @@ -7,8 +7,7 @@ lumenarium_init() App_State* state = 0; permanent = bump_allocator_create_reserve(GB(2)); - global_scratch_ = bump_allocator_create_reserve(GB(8)); - platform_file_jobs_init(); + global_scratch_ = bump_allocator_create_reserve(GB(4)); run_tests(); scratch_get(scratch); @@ -18,22 +17,22 @@ lumenarium_init() state = allocator_alloc_struct(permanent, App_State); add_flag(state->flags, AppState_IsRunning); add_flag(state->flags, AppState_RunEditor); + add_flag(state->flags, AppState_RunUserSpace); + state->file_async_job_system = os_file_jobs_init(); state->input_state = input_state_create(permanent); - String exe_file_path = platform_get_exe_path(scratch.a); + String exe_file_path = os_get_exe_path(scratch.a); u64 run_tree_start = string_find_substring(exe_file_path, lit_str("run_tree"), 0, StringMatch_FindLast); u64 run_tree_end = run_tree_start + lit_str("run_tree").len; String run_tree_path = string_get_prefix(exe_file_path, run_tree_end); String run_tree_path_nullterm = string_copy(run_tree_path, scratch.a); - platform_pwd_set(run_tree_path_nullterm); - + os_pwd_set(run_tree_path_nullterm); + en_init(state, desc); - if (has_flag(state->flags, AppState_RunEditor)) - { - ed_init(state); - } - incenter_init(state); + if (has_flag(state->flags, AppState_RunEditor)) ed_init(state); + if (has_flag(state->flags, AppState_RunUserSpace)) incenter_init(state); + scratch_release(scratch); return state; } @@ -43,30 +42,24 @@ lumenarium_frame_prepare(App_State* state) allocator_clear(global_scratch_); input_state_swap_frames(state->input_state); - + en_frame_prepare(state); - if (has_flag(state->flags, AppState_RunEditor)) - { - ed_frame_prepare(state); - } - incenter_frame_prepare(state); + if (has_flag(state->flags, AppState_RunEditor)) ed_frame_prepare(state); + if (has_flag(state->flags, AppState_RunUserSpace)) incenter_frame_prepare(state); - platform_file_async_jobs_do_work(4, (u8*)state); + file_async_jobs_do_work(&state->file_async_job_system, 4, (u8*)state); } internal void lumenarium_frame(App_State* state) { en_frame(state); - if (has_flag(state->flags, AppState_RunEditor)) - { - ed_frame(state); - } - incenter_frame(state); + if (has_flag(state->flags, AppState_RunEditor)) ed_frame(state); + if (has_flag(state->flags, AppState_RunUserSpace)) incenter_frame(state); } internal void -lumenarium_event(Platform_Window_Event evt, App_State* state) +lumenarium_event(Window_Event evt, App_State* state) { Input_Frame* frame = state->input_state->frame_hot; switch (evt.kind) @@ -79,8 +72,8 @@ lumenarium_event(Platform_Window_Event evt, App_State* state) case WindowEvent_MouseMoved: { v2 mouse_pos_old = frame->mouse_pos; - frame->mouse_pos = v2{ (r32)evt.mouse_x, (r32)evt.mouse_y }; - state->input_state->mouse_pos_delta = frame->mouse_pos - mouse_pos_old; + frame->mouse_pos = (v2){ (r32)evt.mouse_x, (r32)evt.mouse_y }; + state->input_state->mouse_pos_delta = HMM_SubtractVec2(frame->mouse_pos, mouse_pos_old); } break; case WindowEvent_ButtonDown: @@ -89,7 +82,7 @@ lumenarium_event(Platform_Window_Event evt, App_State* state) frame->key_flags[evt.key_code] = evt.key_flags; if (evt.key_code == KeyCode_MouseLeftButton) { - state->input_state->mouse_pos_down = v2{ + state->input_state->mouse_pos_down = (v2){ (r32)evt.mouse_x, (r32)evt.mouse_y }; } @@ -112,10 +105,7 @@ lumenarium_event(Platform_Window_Event evt, App_State* state) internal void lumenarium_cleanup(App_State* state) { - incenter_cleanup(state); + if (has_flag(state->flags, AppState_RunUserSpace)) incenter_cleanup(state); en_cleanup(state); - if (has_flag(state->flags, AppState_RunEditor)) - { - ed_cleanup(state); - } + if (has_flag(state->flags, AppState_RunEditor)) ed_cleanup(state); } diff --git a/src_v2/lumenarium_first.h b/src_v2/lumenarium_first.h index 2dbf1b8..92d2067 100644 --- a/src_v2/lumenarium_first.h +++ b/src_v2/lumenarium_first.h @@ -6,16 +6,13 @@ typedef struct App_State App_State; // Environment -#include "lumenarium_memory.cpp" -#include "lumenarium_string.cpp" -#include "lumenarium_random.h" -#include "lumenarium_input.cpp" -#include "lumenarium_texture_atlas.cpp" -#include "lumenarium_hash.cpp" +#include "lumenarium_texture_atlas.c" #include "lumenarium_geometry.h" global Allocator* global_scratch_; // gets reset at frame boundaries -#define scratch_get(ident) Allocator_Scratch ident = Allocator_Scratch(global_scratch_) +// TODO make sure all scratch_get's have a release +#define scratch_get(ident) Allocator_Scratch ident = allocator_scratch_begin(global_scratch_) +#define scratch_release(ident) allocator_scratch_end(&ident) #include "lumenarium_bsp.h" // Engine @@ -26,6 +23,8 @@ typedef struct Assembly_Strip Assembly_Strip; #include "engine/output/lumenarium_output_sacn.h" // Editor +#include "editor/graphics/lumenarium_editor_opengl.h" +#include "editor/graphics/lumenarium_editor_graphics.h" #include "editor/lumenarium_editor_ui.h" #include "editor/lumenarium_editor_renderer.h" #include "editor/lumenarium_editor.h" @@ -37,10 +36,22 @@ global Allocator* permanent; #if defined(DEBUG) # include "lumenarium_tests.cpp" +#define lumenarium_env_validate() lumenarium_env_validate_() #else # define run_tests() +#define lumenarium_env_validate() #endif +internal void +lumenarium_env_validate_() +{ + bump_allocator_validate(permanent); + bump_allocator_validate(global_scratch_); + bump_allocator_validate(file_jobs_arena); +} + + + ////////////////////////////////////////////// // Lumenarium State @@ -50,16 +61,20 @@ enum AppState_None = 0, AppState_IsRunning = 1, AppState_RunEditor = 2, + AppState_RunUserSpace = 4, }; +typedef struct App_Init_Desc App_Init_Desc; struct App_Init_Desc { u32 assembly_cap; }; +typedef struct App_State App_State; struct App_State { App_State_Flags flags; + File_Async_Job_System file_async_job_system; Input_State* input_state; @@ -69,16 +84,16 @@ struct App_State Editor* editor; }; -#include "engine/lumenarium_engine_assembly.cpp" -#include "engine/lumenarium_engine.cpp" -#include "engine/lumenarium_engine_output.cpp" -#include "engine/output/lumenarium_output_uart.cpp" -#include "engine/output/lumenarium_output_sacn.cpp" -#include "editor/lumenarium_editor_ui.cpp" -#include "editor/lumenarium_editor_renderer.cpp" -#include "editor/lumenarium_editor_sculpture_visualizer.cpp" -#include "editor/lumenarium_editor.cpp" +#include "engine/lumenarium_engine_assembly.c" +#include "engine/lumenarium_engine.c" +#include "engine/lumenarium_engine_output.c" +#include "engine/output/lumenarium_output_uart.c" +#include "engine/output/lumenarium_output_sacn.c" +#include "editor/lumenarium_editor_ui.c" +#include "editor/lumenarium_editor_renderer.c" +#include "editor/lumenarium_editor_sculpture_visualizer.c" +#include "editor/lumenarium_editor.c" #endif //LUMENARIUM_FIRST_H diff --git a/src_v2/lumenarium_geometry.h b/src_v2/lumenarium_geometry.h index abfe1ce..a2d6428 100644 --- a/src_v2/lumenarium_geometry.h +++ b/src_v2/lumenarium_geometry.h @@ -23,6 +23,7 @@ enum GeoVertexBufferStorage_Color = 4 }; +typedef struct Geo_Vertex_Buffer Geo_Vertex_Buffer; struct Geo_Vertex_Buffer { r32* values; @@ -31,6 +32,7 @@ struct Geo_Vertex_Buffer u32 stride; }; +typedef struct Geo_Vertex_Buffer_Builder Geo_Vertex_Buffer_Builder; struct Geo_Vertex_Buffer_Builder { union @@ -49,12 +51,14 @@ struct Geo_Vertex_Buffer_Builder u32 cap; }; +typedef struct Geo_Index_Buffer Geo_Index_Buffer; struct Geo_Index_Buffer { u32* values; u32 len; }; +typedef struct Geo_Index_Buffer_Builder Geo_Index_Buffer_Builder; struct Geo_Index_Buffer_Builder { union @@ -71,36 +75,38 @@ struct Geo_Index_Buffer_Builder u32 cap; }; +typedef struct Geo_Quad_Buffer Geo_Quad_Buffer; struct Geo_Quad_Buffer { Geo_Vertex_Buffer buffer_vertex; Geo_Index_Buffer buffer_index; }; +typedef struct Geo_Quad_Buffer_Builder Geo_Quad_Buffer_Builder; struct Geo_Quad_Buffer_Builder { Geo_Vertex_Buffer_Builder buffer_vertex; Geo_Index_Buffer_Builder buffer_index; }; -internal Geo_Vertex_Buffer_Builder geo_vertex_buffer_builder_create(Allocator* a, u32 cap); +internal Geo_Vertex_Buffer_Builder geo_vertex_buffer_builder_create(Allocator* a, u32 cap, Geo_Vertex_Buffer_Storage storage); internal Geo_Index_Buffer_Builder geo_index_buffer_builder_create(Allocator* a, u32 cap); -internal Geo_Quad_Buffer_Builder geo_quad_buffer_builder_create(Allocator* a, u32 vertex_cap, u32 index_cap); +internal Geo_Quad_Buffer_Builder ggeo_quad_buffer_builder_create(Allocator* a, u32 vertex_cap, Geo_Vertex_Buffer_Storage storage, u32 index_cap); // Vertex Buffer -internal u32 geo_vertex_buffer_builder_push(Geo_Vertex_Buffer_Builder* b, v3 v, v2 t, v4 c); -internal u32 geo_vertex_buffer_builder_push(Geo_Vertex_Buffer_Builder* b, v3 v, v2 t); -internal u32 geo_vertex_buffer_builder_push(Geo_Vertex_Buffer_Builder* b, v3 v); +internal u32 geo_vertex_buffer_builder_push_vtc(Geo_Vertex_Buffer_Builder* b, v3 v, v2 t, v4 c); +internal u32 geo_vertex_buffer_builder_push_vt(Geo_Vertex_Buffer_Builder* b, v3 v, v2 t); +internal u32 geo_vertex_buffer_builder_push_v(Geo_Vertex_Buffer_Builder* b, v3 v); // Index Buffer -internal u32 geo_index_buffer_builder_push(Geo_Vertex_Buffer_Builder* b, u32 i); -internal void geo_index_buffer_builder_push_tri(Geo_Vertex_Buffer_Builder* b, u32 i0, u32 i1, u32 i2); -internal void geo_index_buffer_builder_push_quad(Geo_Vertex_Buffer_Builder* b, u32 i0, u32 i1, u32 i2, u32 i3); +internal u32 geo_index_buffer_builder_push(Geo_Index_Buffer_Builder* b, u32 i); +internal void geo_index_buffer_builder_push_tri(Geo_Index_Buffer_Builder* b, u32 i0, u32 i1, u32 i2); +internal void geo_index_buffer_builder_push_quad(Geo_Index_Buffer_Builder* b, u32 i0, u32 i1, u32 i2, u32 i3); // Quad Buffer -internal void geo_quad_buffer_builder_push(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3, v2 t0, v2 t1, v2 t2, v2 t3, v4 c); -internal void geo_quad_buffer_builder_push(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3, v2 t0, v2 t1, v2 t2, v2 t3); -internal void geo_quad_buffer_builder_push(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3); +internal void geo_quad_buffer_builder_push_vtc(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3, v2 t0, v2 t1, v2 t2, v2 t3, v4 c); +internal void geo_quad_buffer_builder_push_vt(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3, v2 t0, v2 t1, v2 t2, v2 t3); +internal void geo_quad_buffer_builder_push_v(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3); internal Geo_Quad_Buffer geo_quad_buffer_builder_get_static_buffer(Geo_Quad_Buffer_Builder* b); ///////////////////////////////////////////// @@ -116,26 +122,61 @@ geo_vertex_buffer_builder_stride(Geo_Vertex_Buffer_Storage storage) return result; } +#ifdef DEBUG +# define geo_vertex_buffers_validate(g) geo_vertex_buffers_validate_(g) +#else +# define geo_vertex_buffers_validate(g) +#endif + +void +geo_vertex_buffers_validate_(Geo_Vertex_Buffer_Builder* b) +{ + // before start + u32* sentinel = (u32*)(b->values - 2); + assert(sentinel[0] == 0xF0F0F0F0); + assert(sentinel[1] == 0x0F0F0F0F); + + // after end + sentinel = (u32*)(b->values + (b->cap * b->stride)); + assert(sentinel[0] == 0xFFFF000F); + assert(sentinel[1] == 0xF000FFFF); +} + internal Geo_Vertex_Buffer_Builder geo_vertex_buffer_builder_create(Allocator* a, u32 cap, Geo_Vertex_Buffer_Storage storage) { u32 stride = geo_vertex_buffer_builder_stride(storage); u32 size = cap * stride; + u32 alloc_size = size; +#ifdef DEBUG + alloc_size += 4; +#endif Geo_Vertex_Buffer_Builder result = {}; zero_struct(result); result.cap = cap; result.storage = storage; result.stride = stride; - result.values = allocator_alloc_array(a, r32, size); + result.values = allocator_alloc_array(a, r32, alloc_size); + +#ifdef DEBUG + u32* sentinel = (u32*)result.values; + sentinel[0] = 0xF0F0F0F0; + sentinel[1] = 0x0F0F0F0F; + sentinel = (u32*)(result.values + alloc_size - 2); + result.values += 2; + sentinel[0] = 0xFFFF000F; + sentinel[1] = 0xF000FFFF; +#endif + + geo_vertex_buffers_validate(&result); return result; } internal Geo_Index_Buffer_Builder geo_index_buffer_builder_create(Allocator* a, u32 cap) { - Geo_Index_Buffer_Builder result = {}; zero_struct(result); result.cap = cap; @@ -155,42 +196,46 @@ geo_quad_buffer_builder_create(Allocator* a, u32 vertex_cap, Geo_Vertex_Buffer_S // Vertex Buffer internal u32 -geo_vertex_buffer_builder_push(Geo_Vertex_Buffer_Builder* b, v3 v, v2 t, v4 c) +geo_vertex_buffer_builder_push_vtc(Geo_Vertex_Buffer_Builder* b, v3 v, v2 t, v4 c) { + geo_vertex_buffers_validate(b); assert(b->len < b->cap); u32 result = b->len++; u32 offset = result * b->stride; + assert((offset + b->stride) <= (b->cap * b->stride)); + r32* at = b->values + offset; if (has_flag(b->storage, GeoVertexBufferStorage_Position)) { - b->values[offset++] = v.x; - b->values[offset++] = v.y; - b->values[offset++] = v.z; + *at++ = v.x; + *at++ = v.y; + *at++ = v.z; } if (has_flag(b->storage, GeoVertexBufferStorage_TexCoord)) { - b->values[offset++] = t.x; - b->values[offset++] = t.y; + *at++ = t.x; + *at++ = t.y; } if (has_flag(b->storage, GeoVertexBufferStorage_Color)) { - b->values[offset++] = c.x; - b->values[offset++] = c.y; - b->values[offset++] = c.z; - b->values[offset++] = c.w; + *at++ = c.x; + *at++ = c.y; + *at++ = c.z; + *at++ = c.w; } + geo_vertex_buffers_validate(b); return result; } internal u32 -geo_vertex_buffer_builder_push(Geo_Vertex_Buffer_Builder* b, v3 v, v2 t) +geo_vertex_buffer_builder_push_vt(Geo_Vertex_Buffer_Builder* b, v3 v, v2 t) { - return geo_vertex_buffer_builder_push(b, v, t, v4{0}); + return geo_vertex_buffer_builder_push_vtc(b, v, t, (v4){0}); } internal u32 -geo_vertex_buffer_builder_push(Geo_Vertex_Buffer_Builder* b, v3 v) +geo_vertex_buffer_builder_push_v(Geo_Vertex_Buffer_Builder* b, v3 v) { - return geo_vertex_buffer_builder_push(b, v, v2{0}, v4{0}); + return geo_vertex_buffer_builder_push_vtc(b, v, (v2){0}, (v4){0}); } @@ -224,34 +269,34 @@ geo_index_buffer_builder_push_quad(Geo_Index_Buffer_Builder* b, u32 i0, u32 i1, // Quad Buffer internal void -geo_quad_buffer_builder_push(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3, v2 t0, v2 t1, v2 t2, v2 t3, v4 c) +geo_quad_buffer_builder_push_vtc(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3, v2 t0, v2 t1, v2 t2, v2 t3, v4 c) { - u32 i0 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p0, t0, c); - u32 i1 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p1, t1, c); - u32 i2 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p2, t2, c); - u32 i3 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p3, t3, c); + u32 i0 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p0, t0, c); + u32 i1 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p1, t1, c); + u32 i2 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p2, t2, c); + u32 i3 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p3, t3, c); geo_index_buffer_builder_push_quad(&b->buffer_index, i0, i1, i2, i3); } internal void -geo_quad_buffer_builder_push(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3, v2 t0, v2 t1, v2 t2, v2 t3) +geo_quad_buffer_builder_push_vt(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3, v2 t0, v2 t1, v2 t2, v2 t3) { - u32 i0 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p0, t0, v4{}); - u32 i1 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p1, t1, v4{}); - u32 i2 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p2, t2, v4{}); - u32 i3 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p3, t3, v4{}); + u32 i0 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p0, t0, (v4){}); + u32 i1 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p1, t1, (v4){}); + u32 i2 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p2, t2, (v4){}); + u32 i3 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p3, t3, (v4){}); geo_index_buffer_builder_push_quad(&b->buffer_index, i0, i1, i2, i3); } internal void -geo_quad_buffer_builder_push(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3) +geo_quad_buffer_builder_push_v(Geo_Quad_Buffer_Builder* b, v3 p0, v3 p1, v3 p2, v3 p3) { - u32 i0 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p0, v2{}, v4{}); - u32 i1 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p1, v2{}, v4{}); - u32 i2 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p2, v2{}, v4{}); - u32 i3 = geo_vertex_buffer_builder_push(&b->buffer_vertex, p3, v2{}, v4{}); + u32 i0 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p0, (v2){}, (v4){}); + u32 i1 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p1, (v2){}, (v4){}); + u32 i2 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p2, (v2){}, (v4){}); + u32 i3 = geo_vertex_buffer_builder_push_vtc(&b->buffer_vertex, p3, (v2){}, (v4){}); geo_index_buffer_builder_push_quad(&b->buffer_index, i0, i1, i2, i3); } diff --git a/src_v2/lumenarium_input.cpp b/src_v2/lumenarium_input.cpp index 9b6344b..d983076 100644 --- a/src_v2/lumenarium_input.cpp +++ b/src_v2/lumenarium_input.cpp @@ -1,4 +1,7 @@ + +// TODO(PS) @DEPRECATE - new os layer + #define INPUT_FRAME_STRING_LENGTH 32 struct Input_Frame { diff --git a/src_v2/lumenarium_memory.cpp b/src_v2/lumenarium_memory.cpp index ea32b7b..71e4f94 100644 --- a/src_v2/lumenarium_memory.cpp +++ b/src_v2/lumenarium_memory.cpp @@ -1,3 +1,4 @@ +// TODO(PS) @DEPRECATE - new os layer ///////////////////////////////////////// // Memory Functions @@ -467,6 +468,7 @@ paged_allocator_free(Allocator* allocator, u8* base, u64 size) else { // free list is empty + region->next = 0; paged->free_first = region; } } diff --git a/src_v2/lumenarium_memory.h b/src_v2/lumenarium_memory.h index 8b6a79f..b18a813 100644 --- a/src_v2/lumenarium_memory.h +++ b/src_v2/lumenarium_memory.h @@ -1,3 +1,5 @@ +// TODO(PS) @DEPRECATE - new os layer + /* date = April 6th 2022 7:55 pm */ #ifndef LUMENARIUM_MEMORY_H diff --git a/src_v2/lumenarium_tests.cpp b/src_v2/lumenarium_tests.cpp index 6379b7b..1c08d84 100644 --- a/src_v2/lumenarium_tests.cpp +++ b/src_v2/lumenarium_tests.cpp @@ -1,9 +1,9 @@ -Platform_Thread_Result -thread_proc(Platform_Thread_Data* td) +Thread_Result +thread_proc(Thread_Data* td) { //Sleep(100); - return {}; + return (Thread_Result){}; } void @@ -75,15 +75,15 @@ memory_tests() size = KB(4); #endif - u8* base = platform_mem_reserve(size); - platform_mem_commit(base, KB(4)); + u8* base = os_mem_reserve(size); + os_mem_commit(base, KB(4)); base[4095] = 200; assert(base[4095] == 200); - platform_mem_commit(base + KB(4), KB(4)); + os_mem_commit(base + KB(4), KB(4)); base[5000] = 200; assert(base[5000] == 200); - platform_mem_decommit(base, KB(8)); - platform_mem_release(base, GB(32)); + os_mem_decommit(base, KB(8)); + os_mem_release(base, GB(32)); } Allocator* bump = bump_allocator_create_reserve(KB(32)); @@ -155,11 +155,11 @@ run_tests() } - assert(round_up_to_pow2(1) == 1); - assert(round_up_to_pow2(3) == 4); - assert(round_up_to_pow2(29) == 32); - assert(round_up_to_pow2(32) == 32); - assert(round_up_to_pow2(120) == 128); + assert(round_up_to_pow2_u32(1) == 1); + assert(round_up_to_pow2_u32(3) == 4); + assert(round_up_to_pow2_u32(29) == 32); + assert(round_up_to_pow2_u32(32) == 32); + assert(round_up_to_pow2_u32(120) == 128); memory_tests(); bsp_tests(); @@ -172,7 +172,7 @@ run_tests() // testing strings and exe path - String exe_file_path = platform_get_exe_path(scratch.a); + String exe_file_path = os_get_exe_path(scratch.a); assert(exe_file_path.str != 0); u64 run_tree_start = string_find_substring(exe_file_path, lit_str("run_tree"), 0, StringMatch_FindLast); u64 run_tree_end = run_tree_start + lit_str("run_tree").len; @@ -180,18 +180,18 @@ run_tests() String run_tree_path = string_get_prefix(exe_file_path, run_tree_end); String run_tree_path_nullterm = string_copy(run_tree_path, scratch.a); assert(run_tree_path_nullterm.len > 0); - assert(platform_pwd_set(run_tree_path_nullterm)); + assert(os_pwd_set(run_tree_path_nullterm)); // testing file io - Platform_File_Handle f = platform_file_open(lit_str("text.txt"), FileAccess_Read | FileAccess_Write, FileCreate_OpenExisting); - Platform_File_Info i = platform_file_get_info(f, scratch.a); + File_Handle f = os_file_open(lit_str("text.txt"), FileAccess_Read | FileAccess_Write, FileCreate_OpenExisting); + File_Info i = os_file_get_info(f, scratch.a); - Data d0 = platform_file_read_all(f, scratch.a); + Data d0 = os_file_read_all(f, scratch.a); assert(d0.size > 0); String s = lit_str("foooooooooobbbbbbaaaarrrrrr"); Data d1 = { s.str, s.len }; - bool r = platform_file_write_all(f, d1); + bool r = os_file_write_all(f, d1); assert(r); #if 0 @@ -211,5 +211,5 @@ run_tests() platform_thread_end(threads[j]); } #endif - + scratch_release(scratch); } \ No newline at end of file diff --git a/src_v2/lumenarium_texture_atlas.cpp b/src_v2/lumenarium_texture_atlas.c similarity index 96% rename from src_v2/lumenarium_texture_atlas.cpp rename to src_v2/lumenarium_texture_atlas.c index c60b7fe..92cc764 100644 --- a/src_v2/lumenarium_texture_atlas.cpp +++ b/src_v2/lumenarium_texture_atlas.c @@ -3,6 +3,7 @@ #ifndef LUMENARIUM_TEXTURE_ATLAS_CPP #define LUMENARIUM_TEXTURE_ATLAS_CPP +typedef struct Texture_Atlas_Sprite Texture_Atlas_Sprite; struct Texture_Atlas_Sprite { u16 min_x; @@ -13,6 +14,7 @@ struct Texture_Atlas_Sprite v2 draw_offset; }; +typedef struct Texture_Atlas Texture_Atlas; struct Texture_Atlas { u8* pixels; @@ -38,7 +40,7 @@ texture_atlas_create(u32 width, u32 height, u32 cap, Allocator* allocator) result.height = (u16)height; for (u32 i = 0; i < width * height; i++) { u8* base = result.pixels + (i * 4); - *(u32*)base = 0x00FFFFFF; + *(u32*)base = 0xFF00FFFF; } result.ids = allocator_alloc_array(allocator, u32, cap); @@ -180,7 +182,7 @@ texture_atlas_sprite_get_uvs(Texture_Atlas* ta, Texture_Atlas_Sprite sprite) } internal v4 -texture_atlas_sprite_get_uvs(Texture_Atlas* ta, u32 id) +texture_atlas_sprite_id_get_uvs(Texture_Atlas* ta, u32 id) { Texture_Atlas_Sprite sprite = texture_atlas_sprite_get(ta, id); return texture_atlas_sprite_get_uvs(ta, sprite); diff --git a/src_v2/lumenarium_types.h b/src_v2/lumenarium_types.h index 988b636..85e32dc 100644 --- a/src_v2/lumenarium_types.h +++ b/src_v2/lumenarium_types.h @@ -1,3 +1,5 @@ +// TODO(PS) @DEPRECATE - new os layer + /* date = March 22nd 2022 2:08 am */ #ifndef LUMENARIUM_TYPES_H diff --git a/src_v2/platform/lumenarium_os.h b/src_v2/platform/lumenarium_os.h new file mode 100644 index 0000000..b83cf91 --- /dev/null +++ b/src_v2/platform/lumenarium_os.h @@ -0,0 +1,58 @@ +#if !defined(LUMENARIUM_OS) +#define LUMENARIUM_OS + +/////////////////////////////////////// +// Memory + +u8* os_mem_reserve(u64 size); +u8* os_mem_commit(u8* base, u64 size); +bool os_mem_decommit(u8* base, u64 size); +bool os_mem_release(u8* base, u64 size); + +/////////////////////////////////////// +// File I/O + +File_Async_Job_System os_file_jobs_init(); +File_Handle os_file_open(String path, File_Access_Flags flags_access, File_Create_Flags flags_create); +void os_file_close(File_Handle file_handle); +File_Info os_file_get_info(File_Handle file_handle, Allocator* allocator); +Data os_file_read_all(File_Handle file_handle, Allocator* allocator); +bool os_file_write_all(File_Handle file_handle, Data file_data); + +String os_get_exe_path(Allocator* allocator); +bool os_pwd_set(String path); + +File_Info_List os_dir_enum(String path, Platform_Enum_Dir_Flags flags, Allocator* allocator); + +// Asnyc Jobs +void os_file_async_work_on_job(File_Async_Job* job); + +/////////////////////////////////////// +// Time + +Ticks os_get_ticks(); +r64 os_get_ticks_per_second(); + +/////////////////////////////////////// +// Threads + +Thread_Handle os_thread_begin(Thread_Proc* proc, u8* user_data); +void os_thread_end(Thread_Handle thread_handle); + +u32 os_interlocked_increment(volatile u32* value); +u32 os_interlocked_cmp_exchg(volatile u32* dest, u32 new_value, u32 old_value); + +/////////////////////////////////////// +// Network Access + +Socket_Handle os_socket_create(); +bool os_socket_bind(); +bool os_socket_connect(); +bool os_socket_close(); +Data os_socket_recv(); +s32 os_Socket_set_listening(); +s32 os_Socket_send(); +s32 os_Socket_send_to(); +s32 os_Socket_set_opt(); + +#endif // LUMENARIUM_OS \ No newline at end of file diff --git a/src_v2/platform/osx/lumenarium_first_osx.c b/src_v2/platform/osx/lumenarium_first_osx.c new file mode 100644 index 0000000..ccbc76b --- /dev/null +++ b/src_v2/platform/osx/lumenarium_first_osx.c @@ -0,0 +1,239 @@ +#include +#include +#include +#include +#include +#include + +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#include + +#include "lumenarium_osx_memory.h" +#include "../../core/lumenarium_core.h" +#include "../lumenarium_os.h" +#include "../../lumenarium_first.c" + +#undef internal +#undef external + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../../libs/glfw_osx/include/GLFW/glfw3.h" + +#define osx_err_print(sub_proc) osx_err_print_((char*)__FUNCTION__, (char*)(sub_proc), errno) +void +osx_err_print_(char* proc, char* sub_proc, s32 errsv) +{ + printf("Error: %s:%s - %d\n\t%s\n\n", proc, sub_proc, errsv, strerror(errsv)); +} + +#define OS_FILE_HANDLE_TYPE s32 +#define OS_FILE_MAX_PATH PATH_MAX +#define OS_FILE_INVALID_HANDLE -1 +#include "../shared/lumenarium_shared_file_tracker.h" +#include "../shared/lumenarium_shared_file_async_work_on_job.h" +#include "lumenarium_osx_file.h" +#include "lumenarium_osx_time.h" +#include "lumenarium_osx_graphics.h" + +void osx_tests() +{ + Ticks t0 = os_get_ticks(); + + // File Tests + File_Handle file = os_file_open(lit_str("text.txt"), FileAccess_Read | FileAccess_Write, FileCreate_OpenAlways); + File_Info info = os_file_get_info(file, global_scratch_); + Data d = os_file_read_all(file, global_scratch_); + os_file_write_all(file, d); + os_file_close(file); + + // Path tests + String path_exe = os_get_exe_path(global_scratch_); + printf("%.*s\n", str_varg(path_exe)); + String path = string_chop_last_slash(path_exe); + String path0 = string_copy(path, global_scratch_); + os_pwd_set(path0); + + Ticks t1 = os_get_ticks(); + Ticks td = get_ticks_elapsed(t0, t1); + r64 sd = ticks_to_seconds(td, os_get_ticks_per_second()); +} + +void +glfw_error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +global u8* app_state_data = 0; + +global Key_Code glfw_key_translation_table[] = { + +}; + +Key_Code +osx_translate_key(int glfw_key) +{ + // TODO: turn this into an actual key_code + return (Key_Code)glfw_key; +} + +Key_Code +osx_translate_mouse_button(int glfw_button) +{ + switch (glfw_button) + { + case GLFW_MOUSE_BUTTON_LEFT: return KeyCode_MouseLeftButton; break; + case GLFW_MOUSE_BUTTON_RIGHT: return KeyCode_MouseRightButton; break; + case GLFW_MOUSE_BUTTON_MIDDLE: return KeyCode_MouseMiddleButton; break; + invalid_default_case; + } + return 0; +} + +void +button_event(Key_Code key, int action, int mods) +{ + Window_Event evt = { + .kind = WindowEvent_ButtonDown, + .key_code = key, + }; + + if (has_flag(mods, GLFW_MOD_SHIFT)) add_flag(evt.key_flags, KeyFlag_Mod_Shift); + if (has_flag(mods, GLFW_MOD_CONTROL)) add_flag(evt.key_flags, KeyFlag_Mod_Shift); + if (has_flag(mods, GLFW_MOD_ALT)) add_flag(evt.key_flags, KeyFlag_Mod_Shift); + + switch (action) + { + case GLFW_PRESS: { evt.key_flags = KeyFlag_State_IsDown; } break; + case GLFW_REPEAT: { + evt.key_flags = KeyFlag_State_IsDown | KeyFlag_State_WasDown; + } break; + case GLFW_RELEASE: { + evt.key_flags = KeyFlag_State_WasDown; + } break; + invalid_default_case; + } + lumenarium_event(evt, (App_State*)app_state_data); +} + +void +key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + Key_Code kc = osx_translate_key(key); + button_event(kc, action, mods); +} + +void +cursor_position_callback(GLFWwindow* window, double xpos, double ypos) +{ + Window_Event evt = { + .kind = WindowEvent_MouseMoved, + .mouse_x = (u32)xpos, + .mouse_y = (u32)ypos, + }; + lumenarium_event(evt, (App_State*)app_state_data); +} + +void +mouse_button_callback(GLFWwindow* window, int button, int action, int mods) +{ + Key_Code kc = osx_translate_mouse_button(button); + button_event(kc, action, mods); +} + +void +scroll_callback(GLFWwindow* window, double xoffset, double yoffset) +{ + Window_Event evt = {}; + evt.kind = WindowEvent_MouseScroll; + evt.scroll_amt = xoffset; + lumenarium_event(evt, (App_State*)app_state_data); +} + +int main (int arg_count, char** args) +{ + // osx_tests(); + + if (!glfwInit()) + { + printf("Error: Could not initialize glfw.\n"); + return 1; + } + glfwSetErrorCallback(glfw_error_callback); + + glfwWindowHint(GLFW_DOUBLEBUFFER, true); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, 1); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + GLFWwindow* window = glfwCreateWindow(1400, 700, "Lumenarium", NULL, NULL); + if (!window) + { + printf("Error: Unable to create a glfw window\n"); + return 1; + } + glfwMakeContextCurrent(window); + glfwSwapInterval(1); + gl = osx_load_opengl_ext(); + + // Input Callbacks + glfwSetKeyCallback(window, key_callback); + glfwSetMouseButtonCallback(window, mouse_button_callback); + glfwSetCursorPosCallback(window, cursor_position_callback); + glfwSetScrollCallback(window, scroll_callback); + + App_State* state = lumenarium_init(); + app_state_data = (u8*)state; + + if (has_flag(state->flags, AppState_RunEditor)) + { + float xscale, yscale; + glfwGetWindowContentScale(window, &xscale, &yscale); + state->editor->content_scale = (v2){ xscale, yscale }; + } + + bool running = true; + r64 target_seconds_per_frame = 1.0 / 30.0f; + Ticks ticks_start = os_get_ticks(); + while(!glfwWindowShouldClose(window) && running && has_flag(state->flags, AppState_IsRunning)) { + + if (has_flag(state->flags, AppState_RunEditor)) + { + s32 w, h; + glfwGetWindowSize(window, &w, &h); + state->editor->window_dim = (v2){ (r32)w, (r32)h }; + } + + lumenarium_frame_prepare(state); + lumenarium_frame(state); + lumenarium_env_validate(); + + glfwSwapBuffers(window); + glfwPollEvents(); + + Ticks ticks_end = os_get_ticks(); + r64 seconds_elapsed = get_seconds_elapsed(ticks_start, ticks_end, os_get_ticks_per_second()); + while (seconds_elapsed < target_seconds_per_frame) + { + u32 sleep_time = (u32)(1000.0f * (target_seconds_per_frame - seconds_elapsed)); + usleep(sleep_time); + + ticks_end = os_get_ticks(); + seconds_elapsed = get_seconds_elapsed(ticks_start, ticks_end, os_get_ticks_per_second()); + } + ticks_start = ticks_end; + } + + lumenarium_cleanup(state); + glfwDestroyWindow(window); + glfwTerminate(); + return 0; +} \ No newline at end of file diff --git a/src_v2/platform/osx/lumenarium_first_osx.cpp b/src_v2/platform/osx/lumenarium_first_osx.cpp deleted file mode 100644 index 49d4820..0000000 --- a/src_v2/platform/osx/lumenarium_first_osx.cpp +++ /dev/null @@ -1,28 +0,0 @@ - -#include "../lumenarium_compiler_flags.h" -#include "../lumenarium_platform_common_includes.h" - -#include "../../lumenarium_types.h" -#include "../lumenarium_platform.h" -#include "../../lumenarium_first.cpp" - -#include -#include - -#include "lumenarium_osx_memory.cpp" - -int main (int arg_count, char** args) -{ - App_State* state = lumenarium_init(); - - while (has_flag(state->flags, AppState_IsRunning)) - { - // TODO(PS): event processing - - lumenarium_update(state); - } - - lumenarium_cleanup(state); - - return 0; -} \ No newline at end of file diff --git a/src_v2/platform/osx/lumenarium_osx_file.h b/src_v2/platform/osx/lumenarium_osx_file.h new file mode 100644 index 0000000..d33d261 --- /dev/null +++ b/src_v2/platform/osx/lumenarium_osx_file.h @@ -0,0 +1,213 @@ +File_Async_Job_System +os_file_jobs_init() +{ + open_files_init(); + File_Async_Job_System result = file_async_jobs_init(os_file_async_work_on_job); + return result; +} + +File_Handle +os_file_open(String path, File_Access_Flags flags_access, File_Create_Flags flags_create) +{ + File_Handle result = {}; + + s32 flags = 0; + if (has_flag_exact(flags_access, (FileAccess_Read | FileAccess_Write))) + { + add_flag(flags, O_RDWR); + } + else + { + if (has_flag(flags_access, FileAccess_Read)) + { + add_flag(flags, O_RDONLY); + } + else if (has_flag(flags_access, FileAccess_Write)) + { + add_flag(flags, O_WRONLY); + } + else + { + return result; + } + } + + switch (flags_create) + { + case FileCreate_New: { add_flag(flags, O_CREAT | O_EXCL ); } break; + case FileCreate_CreateAlways: { add_flag(flags, O_CREAT); } break; + case FileCreate_OpenExisting: { /* add_flag(flags, O_); */ } break; + case FileCreate_OpenAlways: { /* add_flag(flags, O_); */ } break; + invalid_default_case; + } + + s32 file_handle = open((char*)path.str, flags); + if (file_handle >= 0) + { + result = open_files_put_handle(file_handle, path); + } + else + { + s32 errsv = errno; + printf("Error: os_file_open - %d\n", errsv); + printf("\tAttempting to open: %.*s\n", str_varg(path)); + printf("\tFlags: %u %u\n", flags_access, flags_create); + } + return result; +} + +void +os_file_close(File_Handle file_handle) +{ + s32 os_handle = open_files_get_handle(file_handle); + if (close(os_handle) != -1) + { + open_files_rem_file(file_handle); + } + else + { + s32 errsv = errno; + printf("Error: os_file_close - %d\n", errsv); + } +} + +File_Info +os_file_get_info(File_Handle file_handle, Allocator* allocator) +{ + File_Info info = {}; + s32 os_handle = open_files_get_handle(file_handle); + if (os_handle != -1) + { + String path = open_files_get_path(file_handle); + + struct stat os_info = {}; + if (fstat(os_handle, &os_info) != -1) + { + info.path = string_copy(path, allocator); + info.path_abs = allocator_alloc_string(allocator, PATH_MAX); + if (realpath((char*)path.str, (char*)info.path_abs.str) != 0) + { + info.path_abs.len = c_str_len((char*)info.path_abs.str); + } + else + { + s32 errsv = errno; + printf("Error - os_file_get_info - %d - realpath\n", errsv); + } + info.size = (u64)os_info.st_size; + if (S_ISDIR(os_info.st_mode)) + { + add_flag(info.flags, FileFlag_IsDir); + } + else if (!S_ISREG(os_info.st_mode)) + { + printf("Error - os_file_get_info - stat-ing a handle that is not a directory or a file\n"); + } + } + else + { + s32 errsv = errno; + printf("Error: os_file_get_info - %d\n", errsv); + } + } + return info; +} + +Data +os_file_read_all(File_Handle file_handle, Allocator* allocator) +{ + Data result = {}; + s32 os_handle = open_files_get_handle(file_handle); + if (os_handle == -1) return result; + + // get file size + s32 offset = lseek(os_handle, 0, SEEK_END); + if (offset == -1) + { + s32 errsv = errno; + printf("Error: os_file_read_all:lseek - %d\n", errsv); + return result; + } + lseek(os_handle, 0, SEEK_SET); + + result.base = allocator_alloc(allocator, offset + 1); + result.size = offset + 1; + + s32 bytes_read = read(os_handle, result.base, result.size); + if (bytes_read == (result.size - 1)) + { + result.base[bytes_read] = 0; // null term + } + else if (bytes_read >= 0) + { + printf("Error: os_file_read:read - whole file not read.\n"); + } + else if (bytes_read == -1) + { + s32 errsv = errno; + printf("Error: os_file_read_all:read - %d\n", errsv); + } + + return result; +} + +bool +os_file_write_all(File_Handle file_handle, Data file_data) +{ + s32 os_handle = open_files_get_handle(file_handle); + if (os_handle == -1) return false; + + lseek(os_handle, 0, SEEK_SET); + s32 size_written = write(os_handle, file_data.base, file_data.size); + if (size_written > 0 && size_written != file_data.size) + { + printf("Error: os_file_write_all:write - whole file not written\n"); + return true; + } + else if (size_written < 0) + { + osx_err_print("write"); + return false; + } + + return true; +} + +String +os_get_exe_path(Allocator* allocator) +{ + u32 needed = 0; + _NSGetExecutablePath(0, &needed); + + String result = allocator_alloc_string(allocator, needed + 1); + + u32 cap = (u64)result.cap; + s32 r = _NSGetExecutablePath((char*)result.str, &cap); + if (r == 0) + { + result.len = cap; + result.str[result.len] = 0; + } + + return result; +} + +bool +os_pwd_set(String path) +{ + s32 result = chdir((char*)path.str); + if (result == -1) + { + osx_err_print("chdir"); + return false; + } + return true; +} + +#if 0 +File_Info_List +os_dir_enum(String path, Platform_Enum_Dir_Flags flags, Allocator* allocator) +{ + +} +#endif diff --git a/src_v2/platform/osx/lumenarium_osx_graphics.h b/src_v2/platform/osx/lumenarium_osx_graphics.h new file mode 100644 index 0000000..289051f --- /dev/null +++ b/src_v2/platform/osx/lumenarium_osx_graphics.h @@ -0,0 +1,58 @@ +#define OSX_GL_ERROR_CASE(e) case e: { result = #e; } break +char* +osx_gl_error_to_string(u32 error) +{ + char* result = 0; + switch (error) + { + OSX_GL_ERROR_CASE(GL_INVALID_VALUE); + OSX_GL_ERROR_CASE(GL_INVALID_ENUM ); + OSX_GL_ERROR_CASE(GL_INVALID_OPERATION); + default: { result = "unknown"; } + } + return result; +} + +void +os_gl_no_error_(char* file, u32 line) { + u32 error = glGetError(); + char* str = 0; + if (error) { + str = osx_gl_error_to_string(error); + } + if (error != 0) + { + fprintf(stderr, "OpenGL error: %s:%d\n\t%s :: %d\n", file, line, str, error); + invalid_code_path; + } +} + +#define load_ext(r,n) r.n = (proc_##n*)glfwGetProcAddress(#n); assert((r.n) != 0) +OpenGL_Extensions +osx_load_opengl_ext() +{ + OpenGL_Extensions result = {}; + load_ext(result, glGenVertexArrays); + load_ext(result, glBindVertexArray); + load_ext(result, glGenBuffers); + load_ext(result, glBindBuffer); + load_ext(result, glBufferData); + load_ext(result, glBufferSubData); + load_ext(result, glCreateShader); + load_ext(result, glShaderSource); + load_ext(result, glCompileShader); + load_ext(result, glCreateProgram); + load_ext(result, glAttachShader); + load_ext(result, glLinkProgram); + load_ext(result, glUseProgram); + load_ext(result, glGetAttribLocation); + load_ext(result, glVertexAttribPointer); + load_ext(result, glEnableVertexAttribArray); + load_ext(result, glGetShaderiv); + load_ext(result, glGetShaderInfoLog); + load_ext(result, glGetProgramiv); + load_ext(result, glGetProgramInfoLog); + load_ext(result, glGetUniformLocation); + load_ext(result, glUniformMatrix4fv); + return result; +} \ No newline at end of file diff --git a/src_v2/platform/osx/lumenarium_osx_memory.cpp b/src_v2/platform/osx/lumenarium_osx_memory.cpp deleted file mode 100644 index 0ae2d54..0000000 --- a/src_v2/platform/osx/lumenarium_osx_memory.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#define OSX_PAGE_SIZE KB(4) // TODO(PS): look this up - -u64 platform_page_size() { return OSX_PAGE_SIZE; } - -u8* -platform_mem_reserve(u64 size) -{ - size_t size_cvt = (size_t)size_to_pages(size); - u8* result = (u8*)malloc(size); - return result; -} - -u8* -platform_mem_commit(u8* base, u64 size) -{ - return base; -} - -bool -platform_mem_decommit(u8* base, u64 size) -{ - return true; -} - -bool -platform_mem_release(u8* base, u64 size) -{ - free(base); - return true; -} diff --git a/src_v2/platform/osx/lumenarium_osx_memory.h b/src_v2/platform/osx/lumenarium_osx_memory.h new file mode 100644 index 0000000..388b9f9 --- /dev/null +++ b/src_v2/platform/osx/lumenarium_osx_memory.h @@ -0,0 +1,41 @@ +// TODO(PS): come back and do this properly +#define OS_MEM_PAGE_SIZE 4096 + +size_t +osx_round_to_page_size(uint64_t size) +{ + uint64_t rem = size % OS_MEM_PAGE_SIZE; + if (rem != 0 || size < OS_MEM_PAGE_SIZE) + { + uint64_t grow = OS_MEM_PAGE_SIZE - rem; + size += grow; + } + return (size_t)size; +} + +uint8_t* +os_mem_reserve(uint64_t size) +{ + size_t size_cvt = osx_round_to_page_size(size); + uint8_t* result = (uint8_t*)malloc(size_cvt); + return result; +} + +uint8_t* +os_mem_commit(uint8_t* base, uint64_t size) +{ + return base; +} + +bool +os_mem_decommit(uint8_t* base, uint64_t size) +{ + return 1; // true +} + +bool +os_mem_release(uint8_t* base, uint64_t size) +{ + free(base); + return 1; // true +} \ No newline at end of file diff --git a/src_v2/platform/osx/lumenarium_osx_time.cpp b/src_v2/platform/osx/lumenarium_osx_time.cpp deleted file mode 100644 index 39c1331..0000000 --- a/src_v2/platform/osx/lumenarium_osx_time.cpp +++ /dev/null @@ -1,4 +0,0 @@ - -// I think this SO post might be helpful -// https://stackoverflow.com/questions/30575995/multi-platform-equivalent-to-queryperformancecounter - diff --git a/src_v2/platform/osx/lumenarium_osx_time.h b/src_v2/platform/osx/lumenarium_osx_time.h new file mode 100644 index 0000000..eedc719 --- /dev/null +++ b/src_v2/platform/osx/lumenarium_osx_time.h @@ -0,0 +1,22 @@ + +// I think this SO post might be helpful +// https://stackoverflow.com/questions/30575995/multi-platform-equivalent-to-queryperformancecounter + +Ticks +os_get_ticks() +{ + Ticks result = { + .value = mach_absolute_time() + }; + return result; +} + +r64 +os_get_ticks_per_second() +{ + mach_timebase_info_data_t info; + mach_timebase_info(&info); + r64 to_nanos = (r64)info.numer / (r64)info.denom; + r64 to_secs = to_nanos / 10e9; + return to_secs; +} \ No newline at end of file diff --git a/src_v2/platform/shared/lumenarium_shared_file_async_work_on_job.h b/src_v2/platform/shared/lumenarium_shared_file_async_work_on_job.h new file mode 100644 index 0000000..cfe29f6 --- /dev/null +++ b/src_v2/platform/shared/lumenarium_shared_file_async_work_on_job.h @@ -0,0 +1,36 @@ +#if defined(PLATFORM_win32) || defined(PLATFORM_osx) + +void +os_file_async_work_on_job(File_Async_Job* job) +{ + File_Handle file = {}; + if (has_flag(job->args.flags, FileAsyncJob_Read)) + { + file = os_file_open(job->args.path, FileAccess_Read, FileCreate_OpenExisting); + Data result = os_file_read_all(file, file_jobs_arena); + if (result.base != 0) + { + job->args.data = result; + add_flag(job->args.flags, FileAsyncJob_Success); + } + else + { + add_flag(job->args.flags, FileAsyncJob_Failed); + } + } + else if (has_flag(job->args.flags, FileAsyncJob_Write)) + { + file = os_file_open(job->args.path, FileAccess_Write, FileCreate_OpenAlways); + if (os_file_write_all(file, job->args.data)) + { + add_flag(job->args.flags, FileAsyncJob_Success); + } + else + { + add_flag(job->args.flags, FileAsyncJob_Failed); + } + } + os_file_close(file); +} + +#endif // defined(win32) || defined(osx) \ No newline at end of file diff --git a/src_v2/platform/shared/lumenarium_shared_file_tracker.h b/src_v2/platform/shared/lumenarium_shared_file_tracker.h new file mode 100644 index 0000000..779e445 --- /dev/null +++ b/src_v2/platform/shared/lumenarium_shared_file_tracker.h @@ -0,0 +1,106 @@ +#if !defined(LUMENARIUM_SHARED_FILE_TRACKER_H) +#define LUMENARIUM_SHARED_FILE_TRACKER_H + +#if !defined(OS_FILE_HANDLE_TYPE) +# error "You must define an OS_FILE_HANDLE_TYPE" +#endif + +#if !defined(OS_FILE_MAX_PATH) +# error "You must define an OS_FILE_MAX_PATH" +#endif + +#if !defined(OS_FILE_INVALID_HANDLE) +# error "You must define an OS_FILE_INVALID_HANDLE" +#endif + +#define open_files_cap 32 +global u64 open_files_len = 1; // zero is invalid +global char open_file_paths[open_files_cap][OS_FILE_MAX_PATH]; +global u64 open_file_paths_len[open_files_cap]; +global OS_FILE_HANDLE_TYPE open_files[open_files_cap]; + +void open_files_init(); +bool open_files_has_room(); +OS_FILE_HANDLE_TYPE open_files_get_handle(File_Handle handle); +String open_files_get_path(File_Handle handle); +File_Handle open_files_put_handle(OS_FILE_HANDLE_TYPE os_handle, String path); +void open_files_rem_file(File_Handle handle); + +//////////////////////////////////////////////// +// IMPLEMENTATION + +void +open_files_init() +{ + for (u32 i = 0; i < open_files_cap; i++) + { + open_files[i] = OS_FILE_INVALID_HANDLE; + } +} + +bool open_files_has_room() { return open_files_len < open_files_cap; } + +OS_FILE_HANDLE_TYPE +open_files_get_handle(File_Handle handle) +{ + assert(handle.value < open_files_len); + return open_files[handle.value]; +} + +String +open_files_get_path(File_Handle handle) +{ + assert(handle.value < open_files_len); + String result = { + .str = (u8*)open_file_paths[handle.value], + .len = open_file_paths_len[handle.value], + .cap = open_file_paths_len[handle.value], + }; + return result; +} + +File_Handle +open_files_put_handle(OS_FILE_HANDLE_TYPE os_handle, String path) +{ + assert(path.len < OS_FILE_MAX_PATH); + + File_Handle result = {}; + if (os_handle != OS_FILE_INVALID_HANDLE) + { + if (open_files_has_room()) + { + result.value = open_files_len++; + } + else + { + // search for emtpy index + for (u32 i = 1; i < open_files_cap; i++) + { + if (open_files[i] == OS_FILE_INVALID_HANDLE) + { + result.value = i; + } + } + } + + if (result.value != 0) + { + open_files[result.value] = os_handle; + memory_copy(path.str, (u8*)open_file_paths[result.value], path.len); + open_file_paths[result.value][path.len] = 0; // null term + open_file_paths_len[result.value] = path.len; + } + } + return result; +} + +void +open_files_rem_file(File_Handle handle) +{ + assert(handle.value < open_files_len); + open_files[handle.value] = OS_FILE_INVALID_HANDLE;; +} + + + +#endif // LUMENARIUM_SHARED_FILE_TRACKER_H \ No newline at end of file diff --git a/src_v2/platform/win32/lumenarium_first_win32.cpp b/src_v2/platform/win32/lumenarium_first_win32.cpp index df682e2..e90418e 100644 --- a/src_v2/platform/win32/lumenarium_first_win32.cpp +++ b/src_v2/platform/win32/lumenarium_first_win32.cpp @@ -268,7 +268,7 @@ WinMain( // Update window size if (has_flag(state->flags, AppState_RunEditor)) { - state->editor->window_dim = v2{ + state->editor->window_dim = (v2){ (r32)win32_main_window.info.width, (r32)win32_main_window.info.height }; diff --git a/src_v2/platform/win32/lumenarium_win32_file.cpp b/src_v2/platform/win32/lumenarium_win32_file.cpp index 6db4fc4..5ca09e3 100644 --- a/src_v2/platform/win32/lumenarium_win32_file.cpp +++ b/src_v2/platform/win32/lumenarium_win32_file.cpp @@ -255,37 +255,4 @@ platform_pwd_set(String path) bool result = SetCurrentDirectory((char*)path.str); if (!result) win32_get_last_error(); return result; -} - -void -platform_file_async_work_on_job(Platform_File_Async_Job* job) -{ - Platform_File_Handle file = {}; - if (has_flag(job->args.flags, PlatformFileAsyncJob_Read)) - { - file = platform_file_open(job->args.path, FileAccess_Read, FileCreate_OpenExisting); - Data result = platform_file_read_all(file, platform_file_jobs_arena); - if (result.base != 0) - { - job->args.data = result; - add_flag(job->args.flags, PlatformFileAsyncJob_Success); - } - else - { - add_flag(job->args.flags, PlatformFileAsyncJob_Failed); - } - } - else if (has_flag(job->args.flags, PlatformFileAsyncJob_Write)) - { - file = platform_file_open(job->args.path, FileAccess_Write, FileCreate_OpenAlways); - if (platform_file_write_all(file, job->args.data)) - { - add_flag(job->args.flags, PlatformFileAsyncJob_Success); - } - else - { - add_flag(job->args.flags, PlatformFileAsyncJob_Failed); - } - } - platform_file_close(file); } \ No newline at end of file diff --git a/src_v2/scratch/lumenarium b/src_v2/scratch/lumenarium new file mode 100755 index 0000000000000000000000000000000000000000..3c26db2ad3deebc549e2809fdc2194faa4051ce0 GIT binary patch literal 34023 zcmeI5e{2**6vyA)wRojq4~kYrLnVly(5--4{Kb}1`BkAgsy3RixnB3$v-gAUT`9Fy zSE~s^qSk2O50w~W6jK5cNN8dMm?$wu1^>`QA{I^bsxc7_#;d{e`*!!r_CWnZ<6rN= zyLoSB-rJea4E#4UpN#$Z#}pzDLA=lz&_FTKQ&b6y=t}4+sHQd6uB?BcKDeH1CyEt3 zvFZYk^K3;&O>3%eZkpI^#j6wR$nh~0Vl8r-H7%`gNjnaT!hDDBv?nv@42pf8*SHjs zIc~$yv{bsQB{g1En6Gu2osSu?u|9Fe%%IpHB@I4ptPi*^r4cK zu?C=;)|PZF1N@8Ut3h8&R6E}BXc7$8yqw=>4Xf9!tzWS^zemi1alvQ#&e;$=9%reo z`XxjrkB?XRIEuxNe;j@_d}eb6)c-iqG?a}`;0FnKJsP1ben+|QWauT(zmh8uKlLJw zm!hr`%KJj;N*PKl+M=}f#9HCA%!Kkd_W!=%?%4}&Dj%-eGxMPthu>L*x=JX91mS;~ zQ!Ja=6CLy3fM08VmQOSf^W!|c&)ve`ZH96i&%@5>A!S2PDy_$rhG>fsGJ2G|jZj?g zP8uC4W&I{Sv9h5mlCM$j(~VR#nMf(MP8+gZn76{p{Wp2*lHp|N;%TiW9-Ng|ML9lR zZ#lejhg~upidh6fal?v+MGF^IRpSqMMqAJg!sDuej>pq1{I`Mm=Gk+kHTA0H?zp*# zv3Ndiulsz*=l#KQ4V2p(`-yhgi^A0+LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF# z2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF# z2nYcoAOwVf5V(LquFiYnT(5ukIiGg`=T-OlFH^IAkD7h6f7WlgWi&K$I}M$lNm(i~ zgAt+^(5G`7QPVs!gBi51vyXZ|NBiy?_&WD`@U+kSmT#{aeDZ!X_#XOfK+H%5Wiu6O zb}P}re4L6nziED&DW~j6xteX}er1%+m7;GckD=(yat}4JJzAz_zehRWGkNzuN$1hWdF#aJo^WFX0Z+=h753l0eBcb$kTCV&E0U;m+gn$qb0zyCt z2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z0U;m+gn$qb0zyCt z2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@{~3WwWNL)Qp#0Xk`2F~?UUVh z%?dph>aoq$iD=rk8k4bD{boG@SJP7IP`E=2w|8ifP&78NrmZVvw2~GN#bU`Y2BA?g zd9`@Erf<>1U1?ow*F&wkLD$AZ(F9$`7aaKLP_HxWyzv9VEY&79GA~^bD)E4K)6_kAGhD?v~fERtIUJjAs}3RIkXH$K0n{_0N1{j z0d`e^k2^9ZwAU5*LE9f+PM$0Bjr-jNKEHck3gvgz`F(qS&z?tjvHCKn4Fy$VaV}(! z)dBneVfmGNQ+Tvq*@VAF@*zE(PATVa%}`QCSlhfvNrjD2I^3>MT2G~`!lY~t8A>D> z!!AiFx2Bc$$Sob|O&y8F)h*TCk($n%J3Hb=TimFIv?Y`#h2s|9y7;E0HF{N&w;m?v z$k?eVM?iK5T;R222I{c9o__KIx7S)~Y*fP4DVCHF^*2^}E!0lc-xX@U(Gxp=AIMl{ z)7fdqk8S;V(g#b{zWCtJyJ*MMH5-3vJbh2i+`~Pel<#?LaDQ|1{n5ygqR&s9=G!XS8W2KaBQHx&GkMf6D)F+iT~3^zoe)zuvaJ d=-Y2LRzKYL=assemblies, ah, 123); assembly_strip_create_leds( - &state->assemblies, - ah, - vertical_strip, - start_p, - v3{0, INCENTER_FEET(-6.5f), 0}, - 123 - ); + &state->assemblies, + ah, + vertical_strip, + start_p, + (v3){0, INCENTER_FEET(-6.5f), 0}, + 123 + ); r32 radius = INCENTER_FEET(10); - Random_Series rand = random_series_create(hash_djb2_to_u32("slkdjfalksdjf")); + Random_Series rand = random_series_create(hash_djb2_cstr_to_u32("slfalksdjf")); for (u32 i = 0; i < 40; i++) { Assembly_Strip* strip = assembly_add_strip(&state->assemblies, ah, 123); @@ -53,7 +53,9 @@ incenter_init(App_State* state) assembly_strip_create_leds(&state->assemblies, ah, strip, start_p, end_p, 123); } - ed_sculpture_updated(state, 5, 0.025f); + r32 rad = 0.05f; + ed_sculpture_updated(state, 10, rad); + scratch_release(scratch); } internal void