From 967840db164f011258d4c2bf2eea1779a4b8f9b0 Mon Sep 17 00:00:00 2001 From: Martin Felis Date: Sun, 30 Oct 2016 19:08:36 +0100 Subject: [PATCH] =?UTF-8?q?Updated=20L=C3=96VE=20codebase=20to=206d245a253?= =?UTF-8?q?bab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jni/love/CMakeLists.txt | 324 +- jni/love/bitbucket-pipelines.yml | 7 + jni/love/changes.txt | 54 + jni/love/extra/appveyor/appveyor.yml | 42 + jni/love/extra/cmake/FindLuaJIT.cmake | 25 + jni/love/extra/cmake/FindMPG123.cmake | 25 + jni/love/extra/cmake/FindModPlug.cmake | 25 + jni/love/extra/cmake/FindSDL2.cmake | 25 + jni/love/extra/cmake/FindTheora.cmake | 31 + jni/love/extra/cmake/FindVorbis.cmake | 30 + jni/love/extra/nsis/game.ico | Bin 33093 -> 370070 bytes jni/love/extra/nsis/left.bmp | Bin 154544 -> 154544 bytes jni/love/extra/nsis/love.ico | Bin 35492 -> 370070 bytes jni/love/extra/nsis/top.bmp | Bin 25364 -> 25364 bytes jni/love/extra/windows/love.ico | Bin 35492 -> 370070 bytes jni/love/extra/windows/love.rc | Bin 3468 -> 3636 bytes jni/love/platform/unix/Makefile.am | 2 +- .../platform/unix/application-x-love-game.svg | 1817 +++---- jni/love/platform/unix/configure.ac | 43 +- jni/love/platform/unix/cpp11.m4 | 69 + jni/love/platform/unix/debian/changelog.in | 2 +- jni/love/platform/unix/debian/control.in | 57 +- jni/love/platform/unix/debian/copyright | 43 +- .../unix/debian/liblove-unstable0.docs | 1 + .../unix/debian/liblove-unstable0.install | 1 + jni/love/platform/unix/debian/liblove0.docs | 1 + .../platform/unix/debian/liblove0.install | 1 + .../unix/debian/love-unstable.manpages | 1 + jni/love/platform/unix/debian/love.install | 11 +- jni/love/platform/unix/debian/love.manpages | 2 +- jni/love/platform/unix/debian/rules.in | 29 +- jni/love/platform/unix/genmodules | 11 +- jni/love/platform/unix/love.6 | 33 + jni/love/platform/unix/love.svg | 1972 ++++---- .../xcode/Images.xcassets/Contents.json | 6 + .../GameIcon.iconset/icon_128x128.png | Bin 0 -> 8353 bytes .../GameIcon.iconset/icon_128x128@2x.png | Bin 0 -> 19751 bytes .../GameIcon.iconset/icon_16x16.png | Bin 0 -> 713 bytes .../GameIcon.iconset/icon_16x16@2x.png | Bin 0 -> 1535 bytes .../GameIcon.iconset/icon_256x256.png | Bin 0 -> 19751 bytes .../GameIcon.iconset/icon_256x256@2x.png | Bin 0 -> 46694 bytes .../GameIcon.iconset/icon_32x32.png | Bin 0 -> 1535 bytes .../GameIcon.iconset/icon_32x32@2x.png | Bin 0 -> 3538 bytes .../GameIcon.iconset/icon_512x512.png | Bin 0 -> 46694 bytes .../GameIcon.iconset/icon_512x512@2x.png | Bin 0 -> 112048 bytes .../OS X AppIcon.appiconset/1024.png | Bin 0 -> 135112 bytes .../OS X AppIcon.appiconset/128.png | Bin 0 -> 10502 bytes .../OS X AppIcon.appiconset/16.png | Bin 0 -> 723 bytes .../OS X AppIcon.appiconset/256.png | Bin 0 -> 24080 bytes .../OS X AppIcon.appiconset/32.png | Bin 0 -> 1674 bytes .../OS X AppIcon.appiconset/512.png | Bin 0 -> 56801 bytes .../OS X AppIcon.appiconset/64.png | Bin 0 -> 4470 bytes .../OS X AppIcon.appiconset/Contents.json | 68 + .../iOS AppIcon.appiconset/Contents.json | 128 + .../iOS AppIcon.appiconset/icon-29pt@1x.png | Bin 0 -> 2061 bytes .../iOS AppIcon.appiconset/icon-29pt@2x.png | Bin 0 -> 4822 bytes .../iOS AppIcon.appiconset/icon-29pt@3x.png | Bin 0 -> 8727 bytes .../iOS AppIcon.appiconset/icon-40pt@1x.png | Bin 0 -> 3028 bytes .../iOS AppIcon.appiconset/icon-40pt@2x.png | Bin 0 -> 7701 bytes .../iOS AppIcon.appiconset/icon-40pt@3x.png | Bin 0 -> 14027 bytes .../iOS AppIcon.appiconset/icon-50pt@1x.png | Bin 0 -> 4016 bytes .../iOS AppIcon.appiconset/icon-50pt@2x.png | Bin 0 -> 10796 bytes .../iOS AppIcon.appiconset/icon-57pt@1x.png | Bin 0 -> 4794 bytes .../iOS AppIcon.appiconset/icon-57pt@2x.png | Bin 0 -> 13075 bytes .../iOS AppIcon.appiconset/icon-60pt@2x.png | Bin 0 -> 14027 bytes .../iOS AppIcon.appiconset/icon-60pt@3x.png | Bin 0 -> 25860 bytes .../iOS AppIcon.appiconset/icon-72pt@1x.png | Bin 0 -> 6528 bytes .../iOS AppIcon.appiconset/icon-72pt@2x.png | Bin 0 -> 18523 bytes .../iOS AppIcon.appiconset/icon-76pt@1x.png | Bin 0 -> 7110 bytes .../iOS AppIcon.appiconset/icon-76pt@2x.png | Bin 0 -> 20052 bytes .../iOS AppIcon.appiconset/icon-83.5pt@2x.png | Bin 0 -> 22893 bytes .../iOS LaunchImage.launchimage/Contents.json | 142 + jni/love/platform/xcode/ios/Launch Screen.xib | 19 + jni/love/platform/xcode/ios/love-ios.plist | 102 + jni/love/platform/xcode/ios/lovedocument.icns | Bin 0 -> 133318 bytes jni/love/platform/xcode/ios/luajit-iOS.sh | 52 + .../xcode/liblove.xcodeproj/project.pbxproj | 4325 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcode/love.xcodeproj/TemplateIcon.icns | Bin 0 -> 52318 bytes .../xcode/love.xcodeproj/default.pbxuser | 1052 ++++ .../xcode/love.xcodeproj/project.pbxproj | 850 ++++ .../contents.xcworkspacedata | 7 + .../xcode/macosx/liblove-macosx.plist | 26 + .../platform/xcode/macosx/love-macosx.plist | 106 + jni/love/src/common/Matrix.cpp | 17 + jni/love/src/common/Matrix.h | 20 + jni/love/src/common/Memoizer.cpp | 5 +- jni/love/src/common/Memoizer.h | 7 - jni/love/src/common/Object.h | 37 +- jni/love/src/common/Variant.cpp | 201 +- jni/love/src/common/Variant.h | 100 +- jni/love/src/common/b64.cpp | 10 +- jni/love/src/common/config.h | 17 +- jni/love/src/common/delay.cpp | 2 +- jni/love/src/common/delay.h | 2 +- jni/love/src/common/macosx.mm | 6 +- jni/love/src/common/math.h | 14 +- jni/love/src/common/runtime.h | 4 +- jni/love/src/common/version.h | 6 +- jni/love/src/libraries/enet/libenet/ChangeLog | 14 + jni/love/src/libraries/enet/libenet/LICENSE | 2 +- jni/love/src/libraries/enet/libenet/host.c | 2 + .../enet/libenet/include/enet/enet.h | 19 +- .../enet/libenet/include/enet/protocol.h | 1 - .../enet/libenet/include/enet/win32.h | 1 - jni/love/src/libraries/enet/libenet/packet.c | 2 +- jni/love/src/libraries/enet/libenet/peer.c | 41 +- .../src/libraries/enet/libenet/protocol.c | 59 +- jni/love/src/libraries/enet/libenet/unix.c | 99 +- jni/love/src/libraries/enet/libenet/win32.c | 22 +- jni/love/src/libraries/stb/stb_image.h | 788 ++- jni/love/src/love.cpp | 65 +- jni/love/src/modules/audio/openal/Audio.cpp | 2 +- jni/love/src/modules/audio/openal/Audio.h | 2 +- jni/love/src/modules/audio/openal/Source.cpp | 22 +- jni/love/src/modules/event/Event.cpp | 19 +- jni/love/src/modules/event/Event.h | 4 +- jni/love/src/modules/event/sdl/Event.cpp | 127 +- jni/love/src/modules/event/wrap_Event.cpp | 20 +- jni/love/src/modules/filesystem/FileData.cpp | 2 +- jni/love/src/modules/filesystem/FileData.h | 2 +- .../modules/filesystem/physfs/Filesystem.cpp | 4 +- .../modules/filesystem/physfs/Filesystem.h | 2 +- jni/love/src/modules/filesystem/wrap_File.cpp | 5 +- .../modules/filesystem/wrap_Filesystem.cpp | 23 +- .../src/modules/filesystem/wrap_Filesystem.h | 1 + .../src/modules/font/BMFontRasterizer.cpp | 9 +- jni/love/src/modules/font/Font.cpp | 4 +- jni/love/src/modules/font/GlyphData.cpp | 57 +- jni/love/src/modules/font/GlyphData.h | 12 +- .../font/freetype/TrueTypeRasterizer.cpp | 6 +- jni/love/src/modules/graphics/Graphics.cpp | 40 +- jni/love/src/modules/graphics/Graphics.h | 36 +- .../src/modules/graphics/ParticleSystem.cpp | 14 +- .../src/modules/graphics/ParticleSystem.h | 3 +- jni/love/src/modules/graphics/Quad.cpp | 10 + jni/love/src/modules/graphics/Quad.h | 3 + .../src/modules/graphics/opengl/Canvas.cpp | 36 +- jni/love/src/modules/graphics/opengl/Font.cpp | 82 +- jni/love/src/modules/graphics/opengl/Font.h | 3 +- .../src/modules/graphics/opengl/GLBuffer.cpp | 13 +- .../src/modules/graphics/opengl/Graphics.cpp | 42 +- .../src/modules/graphics/opengl/Graphics.h | 2 +- .../src/modules/graphics/opengl/Image.cpp | 14 +- .../src/modules/graphics/opengl/OpenGL.cpp | 15 + jni/love/src/modules/graphics/opengl/OpenGL.h | 13 + .../src/modules/graphics/opengl/Shader.cpp | 157 +- jni/love/src/modules/graphics/opengl/Shader.h | 84 +- .../modules/graphics/opengl/SpriteBatch.cpp | 12 +- jni/love/src/modules/graphics/opengl/Text.cpp | 1 + .../modules/graphics/opengl/wrap_Graphics.cpp | 82 +- .../modules/graphics/opengl/wrap_Graphics.lua | 86 +- .../modules/graphics/opengl/wrap_Shader.cpp | 356 +- jni/love/src/modules/graphics/wrap_Quad.cpp | 11 + .../src/modules/image/magpie/ImageData.cpp | 5 +- .../src/modules/image/magpie/KTXHandler.cpp | 61 +- .../src/modules/image/magpie/STBHandler.cpp | 7 +- jni/love/src/modules/image/wrap_Image.cpp | 27 +- jni/love/src/modules/image/wrap_ImageData.cpp | 2 +- jni/love/src/modules/image/wrap_ImageData.lua | 12 + .../src/modules/joystick/wrap_Joystick.cpp | 67 +- .../src/modules/keyboard/wrap_Keyboard.cpp | 48 +- jni/love/src/modules/love/love.cpp | 4 +- jni/love/src/modules/math/MathModule.cpp | 35 +- jni/love/src/modules/math/MathModule.h | 12 +- jni/love/src/modules/math/wrap_Math.cpp | 12 +- jni/love/src/modules/math/wrap_Math.lua | 2 +- jni/love/src/modules/mouse/wrap_Mouse.cpp | 20 +- .../src/modules/physics/box2d/ChainShape.cpp | 44 +- .../src/modules/physics/box2d/ChainShape.h | 12 + .../src/modules/physics/box2d/EdgeShape.cpp | 58 + .../src/modules/physics/box2d/EdgeShape.h | 8 + .../src/modules/physics/box2d/Fixture.cpp | 21 +- jni/love/src/modules/physics/box2d/Joint.h | 4 +- .../src/modules/physics/box2d/MouseJoint.cpp | 13 + .../src/modules/physics/box2d/MouseJoint.h | 3 + .../src/modules/physics/box2d/Physics.cpp | 19 +- jni/love/src/modules/physics/box2d/Physics.h | 17 +- .../modules/physics/box2d/PrismaticJoint.cpp | 37 +- .../modules/physics/box2d/PrismaticJoint.h | 16 + .../modules/physics/box2d/RevoluteJoint.cpp | 27 +- .../src/modules/physics/box2d/RevoluteJoint.h | 11 +- .../src/modules/physics/box2d/WeldJoint.cpp | 26 +- .../src/modules/physics/box2d/WeldJoint.h | 9 + .../src/modules/physics/box2d/WheelJoint.cpp | 8 + .../src/modules/physics/box2d/WheelJoint.h | 7 + .../modules/physics/box2d/wrap_ChainShape.cpp | 50 +- .../modules/physics/box2d/wrap_EdgeShape.cpp | 58 + .../modules/physics/box2d/wrap_Fixture.cpp | 5 +- .../modules/physics/box2d/wrap_Physics.cpp | 31 +- .../physics/box2d/wrap_PrismaticJoint.cpp | 16 + .../physics/box2d/wrap_RevoluteJoint.cpp | 8 + .../modules/physics/box2d/wrap_WeldJoint.cpp | 8 + .../modules/physics/box2d/wrap_WheelJoint.cpp | 8 + .../modules/sound/lullaby/Mpg123Decoder.cpp | 4 + .../src/modules/sound/lullaby/Mpg123Decoder.h | 4 + jni/love/src/modules/sound/wrap_SoundData.lua | 5 + jni/love/src/modules/system/System.cpp | 63 +- jni/love/src/modules/thread/Channel.cpp | 103 +- jni/love/src/modules/thread/Channel.h | 21 +- jni/love/src/modules/thread/LuaThread.cpp | 45 +- jni/love/src/modules/thread/LuaThread.h | 10 +- jni/love/src/modules/thread/ThreadModule.cpp | 3 +- jni/love/src/modules/thread/sdl/Thread.cpp | 31 +- jni/love/src/modules/thread/threads.cpp | 27 +- jni/love/src/modules/thread/threads.h | 16 +- jni/love/src/modules/thread/wrap_Channel.cpp | 48 +- .../src/modules/thread/wrap_LuaThread.cpp | 21 +- jni/love/src/modules/timer/Timer.cpp | 14 +- jni/love/src/modules/timer/Timer.h | 5 +- jni/love/src/modules/timer/sdl/Timer.cpp | 17 +- jni/love/src/modules/timer/sdl/Timer.h | 3 - jni/love/src/modules/video/theora/Video.cpp | 46 +- jni/love/src/modules/video/theora/Video.h | 13 +- .../src/modules/video/theora/VideoStream.cpp | 11 +- jni/love/src/modules/window/Window.h | 5 +- jni/love/src/modules/window/sdl/Window.cpp | 52 +- jni/love/src/modules/window/sdl/Window.h | 7 +- jni/love/src/modules/window/wrap_Window.cpp | 7 + jni/love/src/scripts/auto.lua | 10 +- jni/love/src/scripts/boot.lua | 5 +- jni/love/src/scripts/boot.lua.h | 13 +- 222 files changed, 12081 insertions(+), 3941 deletions(-) mode change 100644 => 100755 jni/love/CMakeLists.txt create mode 100644 jni/love/bitbucket-pipelines.yml create mode 100644 jni/love/extra/appveyor/appveyor.yml create mode 100644 jni/love/extra/cmake/FindLuaJIT.cmake create mode 100644 jni/love/extra/cmake/FindMPG123.cmake create mode 100644 jni/love/extra/cmake/FindModPlug.cmake create mode 100644 jni/love/extra/cmake/FindSDL2.cmake create mode 100644 jni/love/extra/cmake/FindTheora.cmake create mode 100644 jni/love/extra/cmake/FindVorbis.cmake create mode 100644 jni/love/platform/unix/cpp11.m4 create mode 100644 jni/love/platform/unix/debian/liblove-unstable0.docs create mode 100644 jni/love/platform/unix/debian/liblove-unstable0.install create mode 100644 jni/love/platform/unix/debian/liblove0.docs create mode 100644 jni/love/platform/unix/debian/liblove0.install create mode 100644 jni/love/platform/unix/debian/love-unstable.manpages create mode 100644 jni/love/platform/unix/love.6 create mode 100644 jni/love/platform/xcode/Images.xcassets/Contents.json create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_128x128.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_128x128@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_16x16.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_16x16@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_256x256.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_256x256@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_32x32.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_32x32@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_512x512.png create mode 100644 jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_512x512@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/1024.png create mode 100644 jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/128.png create mode 100644 jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/16.png create mode 100644 jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/256.png create mode 100644 jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/32.png create mode 100644 jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/512.png create mode 100644 jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/64.png create mode 100644 jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/Contents.json create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/Contents.json create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-29pt@1x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-29pt@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-29pt@3x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@1x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@3x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-50pt@1x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-50pt@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-57pt@1x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-57pt@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-60pt@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-60pt@3x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-72pt@1x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-72pt@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-76pt@1x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-76pt@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-83.5pt@2x.png create mode 100644 jni/love/platform/xcode/Images.xcassets/iOS LaunchImage.launchimage/Contents.json create mode 100644 jni/love/platform/xcode/ios/Launch Screen.xib create mode 100644 jni/love/platform/xcode/ios/love-ios.plist create mode 100644 jni/love/platform/xcode/ios/lovedocument.icns create mode 100755 jni/love/platform/xcode/ios/luajit-iOS.sh create mode 100644 jni/love/platform/xcode/liblove.xcodeproj/project.pbxproj create mode 100644 jni/love/platform/xcode/liblove.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 jni/love/platform/xcode/love.xcodeproj/TemplateIcon.icns create mode 100644 jni/love/platform/xcode/love.xcodeproj/default.pbxuser create mode 100644 jni/love/platform/xcode/love.xcodeproj/project.pbxproj create mode 100644 jni/love/platform/xcode/love.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 jni/love/platform/xcode/macosx/liblove-macosx.plist create mode 100644 jni/love/platform/xcode/macosx/love-macosx.plist diff --git a/jni/love/CMakeLists.txt b/jni/love/CMakeLists.txt old mode 100644 new mode 100755 index ea8ea07f..38d2e718 --- a/jni/love/CMakeLists.txt +++ b/jni/love/CMakeLists.txt @@ -23,20 +23,23 @@ if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR}) message(FATAL_ERROR "Prevented in-tree build.") endif() -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.1) project(love) -if(NOT MEGA) - message(FATAL_ERROR " -It is currently only possible to build with megasource on Windows. -Please see http://bitbucket.org/rude/megasource -") -endif() - set(LOVE_EXE_NAME love) set(LOVE_LIB_NAME liblove) +set(CMAKE_MODULE_PATH "${love_SOURCE_DIR}/extra/cmake" ${CMAKE_MODULE_PATH}) +# Needed for shared libs on Linux. (-fPIC). +set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) + +set (CMAKE_CXX_STANDARD 11) + +if(MSVC) + set(LOVE_CONSOLE_EXE_NAME lovec) +endif() + if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(LOVE_X64 TRUE) set(LOVE_TARGET_PLATFORM x64) @@ -49,6 +52,9 @@ option(LOVE_JIT "Use LuaJIT" TRUE) option(LOVE_MPG123 "Use mpg123" TRUE) if(LOVE_JIT) + if(APPLE) + message(FATAL_ERROR "JIT not supported yet on Mac. Please use -DLOVE_JIT=0.") + endif() message(STATUS "LuaJIT: Enabled") else() message(STATUS "LuaJIT: Disabled") @@ -62,17 +68,186 @@ message(STATUS "Target platform: ${LOVE_TARGET_PLATFORM}") find_package(OpenGL) -if(${LOVE_JIT}) - set(MEGA_LUA ${MEGA_LUAJIT_LIB}) - set(MEGA_EXTRA_INCLUDE ${MEGA_LUAJIT_INCLUDE}) - set(MEGA_EXTRA_DLLS ${MEGA_LUAJIT_DLL}) - set(MEGA_EXTRA_DEPENDECIES luajit) +if(MEGA) + # LOVE_MSVC_DLLS contains runtime DLLs that should be bundled with the love + # binary (in e.g. the installer). Example: msvcp140.dll. + set(LOVE_MSVC_DLLS ${MEGA_MSVC_DLLS}) + + # LOVE_INCLUDE_DIRS contains the search directories for #include. It's mostly + # not needed for MEGA builds, since almost all the libraries (except LuaJIT) + # are CMake targets, causing include paths to be added automatically. + set(LOVE_INCLUDE_DIRS) + + if(APPLE) + # Some files do #include , but building with megasource + # requires #include . + add_definitions(-DLOVE_MACOSX_SDL_DIRECT_INCLUDE) + endif () + + # SDL2 links with some DirectX libraries, and we apparently also + # pull those libraries in for linkage because we link with SDL2. + set(LOVE_LINK_DIRS ${SDL_LINK_DIR}) + + set(LOVE_LINK_LIBRARIES + ${OPENGL_gl_LIBRARY} + ${MEGA_FREETYPE} + ${MEGA_LIBOGG} + ${MEGA_LIBVORBISFILE} + ${MEGA_LIBVORBIS} + ${MEGA_LIBTHEORA} + ${MEGA_MODPLUG} + ${MEGA_OPENAL} + ${MEGA_PHYSFS} + ${MEGA_SDL2MAIN} + ${MEGA_SDL2} + ${MEGA_ZLIB} + ) + + # These DLLs are moved next to the love binary in a post-build step to + # love runnable from inside Visual Studio. + # + # LOVE_MOVE_DLLS can contain CMake targets, in which case the target's + # output is assumed to be a DLL, or it can contain paths to actual files. + # We detect whether or not each item is a target, and take the appropriate + # action. + set(LOVE_MOVE_DLLS + ${MEGA_SDL2} + ${MEGA_OPENAL} + ) + + if(LOVE_MPG123) + set(LOVE_LINK_LIBRARIES + ${LOVE_LINK_LIBRARIES} + ${MEGA_MPEG123} + ) + set(LOVE_MOVE_DLLS + ${LOVE_MOVE_DLLS} + ${MEGA_MPEG123} + ) + endif() + + if(LOVE_JIT) + set(LOVE_LUA_LIBRARY ${MEGA_LUAJIT_LIB}) + # LOVE_EXTRA_DLLS are non-runtime DLLs which should be bundled with the + # love binary in installers, etc. It's only needed for external + # (non-CMake) targets, i.e. LuaJIT. + set(LOVE_EXTRA_DLLS ${MEGA_LUAJIT_DLL}) + set(LOVE_EXTRA_DEPENDECIES luajit) + + set(LOVE_INCLUDE_DIRS + ${LOVE_INCLUDE_DIRS} + ${MEGA_LUAJIT_INCLUDE} + ) + set(LOVE_LINK_LIBRARIES + ${LOVE_LINK_LIBRARIES} + ${LOVE_LUA_LIBRARY} + ) + set(LOVE_MOVE_DLLS + ${LOVE_MOVE_DLLS} + ${MEGA_LUAJIT_DLL} + ) + else() + set(LOVE_LUA_LIBRARY ${MEGA_LUA51}) + + set(LOVE_LINK_LIBRARIES + ${LOVE_LINK_LIBRARIES} + ${LOVE_LUA_LIBRARY} + ) + set(LOVE_MOVE_DLLS + ${LOVE_MOVE_DLLS} + ${LOVE_LUA_LIBRARY} + ) + # MEGA_LUA51 is a CMake target, so includes are handled + # automatically. + endif() else() - set(MEGA_LUA ${MEGA_LUA51}) - # MEGA_LUA51 is a CMake target, so includes are handled - # automatically. + if(MSVC) + message(FATAL_ERROR " +It is currently only possible to build with megasource on Windows. +Please see http://bitbucket.org/rude/megasource +") + endif() + + find_package(Freetype REQUIRED) + find_package(ModPlug REQUIRED) + find_package(OpenAL REQUIRED) + find_package(OpenGL REQUIRED) + find_package(PhysFS REQUIRED) + find_package(SDL2 REQUIRED) + find_package(Theora REQUIRED) + find_package(Vorbis REQUIRED) + + # required for enet + add_definitions(-D HAS_SOCKLEN_T) + + set(LOVE_INCLUDE_DIRS + ${SDL2_INCLUDE_DIR} + ${PHYSFS_INCLUDE_DIR} + ${FREETYPE_INCLUDE_DIRS} + ${VORBIS_INCLUDE_DIR} + ) + + set(LOVE_LINK_LIBRARIES + ${OPENGL_gl_LIBRARY} + ${SDL2_LIBRARY} + ${FREETYPE_LIBRARY} + ${OPENAL_LIBRARY} + ${MODPLUG_LIBRARY} + ${PHYSFS_LIBRARY} + ${THEORA_LIBRARY} + ${THEORADEC_LIBRARY} + ${VORBISFILE_LIBRARY} + ${LOVE_LUA_LIBRARY} + ) + + if(LOVE_MPG123) + find_package(MPG123 REQUIRED) + set(LOVE_LINK_LIBRARIES + ${LOVE_LINK_LIBRARIES} + ${MPG123_LIBRARY} + ) + endif() + + if(LOVE_JIT) + find_package(LuaJIT REQUIRED) + set(LOVE_LUA_LIBRARY ${LUAJIT_LIBRARY}) + set(LOVE_LUA_INCLUDE_DIR ${LUAJIT_INCLUDE_DIR}) + else() + find_package(Lua51 REQUIRED) + set(LOVE_LUA_LIBRARY ${LUA_LIBRARY}) + set(LOVE_LUA_INCLUDE_DIR ${LUA_INCLUDE_DIR}) + endif() + + set(LOVE_INCLUDE_DIRS + ${LOVE_INCLUDE_DIRS} + ${LOVE_LUA_INCLUDE_DIR} + ) + set(LOVE_LINK_LIBRARIES + ${LOVE_LINK_LIBRARIES} + ${LOVE_LUA_LIBRARY} + ) + endif() +### +### No Megasource-specific stuff beyond this point! +### + +if(MSVC) + set(DISABLE_WARNING_FLAG -W0) +else() + set(DISABLE_WARNING_FLAG -w) +endif() + +function(love_disable_warnings ARG_TARGET) + get_target_property(OLD_FLAGS ${ARG_TARGET} COMPILE_FLAGS) + set(NEW_FLAGS ${DISABLE_WARNING_FLAG}) + if(OLD_FLAGS) + set(NEW_FLAGS "${OLD_FLAGS} ${NEW_FLAGS}") + endif() + set_target_properties(${ARG_TARGET} PROPERTIES COMPILE_FLAGS ${NEW_FLAGS}) +endfunction() + # # common # @@ -115,6 +290,12 @@ set(LOVE_SRC_COMMON src/common/wrap_Data.h ) +if (APPLE) + set(LOVE_SRC_COMMON ${LOVE_SRC_COMMON} + src/common/macosx.mm + ) +endif() + source_group("common" FILES ${LOVE_SRC_COMMON}) # @@ -1024,7 +1205,7 @@ set(LOVE_SRC_3P_ENET ) add_library(love_3p_enet ${LOVE_SRC_3P_ENET}) -target_link_libraries(love_3p_enet ${MEGA_LUA}) +target_link_libraries(love_3p_enet ${LOVE_LUA_LIBRARY}) target_include_directories(love_3p_enet PUBLIC src/libraries/enet/libenet/include) # @@ -1102,6 +1283,12 @@ if(MSVC) src/libraries/luasocket/libluasocket/wsocket.c src/libraries/luasocket/libluasocket/wsocket.h ) +else() + set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET + ${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET} + src/libraries/luasocket/libluasocket/usocket.c + src/libraries/luasocket/libluasocket/usocket.h + ) endif() set(LOVE_SRC_3P_LUASOCKET @@ -1110,7 +1297,7 @@ set(LOVE_SRC_3P_LUASOCKET ) add_library(love_3p_luasocket ${LOVE_SRC_3P_LUASOCKET}) -target_link_libraries(love_3p_luasocket ${MEGA_LUA}) +target_link_libraries(love_3p_luasocket ${LOVE_LUA_LIBRARY}) # # Lua 5.3's UTF-8 library @@ -1123,7 +1310,7 @@ set(LOVE_SRC_3P_LUAUTF8 ) add_library(love_3p_luautf8 ${LOVE_SRC_3P_LUAUTF8}) -target_link_libraries(love_3p_luautf8 ${MEGA_LUA}) +target_link_libraries(love_3p_luautf8 ${LOVE_LUA_LIBRARY}) # # lz4 @@ -1211,7 +1398,7 @@ set(LOVE_3P love_3p_wuff ) -disable_warnings(love_3p_box2d love_3p_enet love_3p_luasocket) +love_disable_warnings(love_3p_box2d love_3p_enet love_3p_luasocket) # # liblove @@ -1244,40 +1431,10 @@ include_directories( src src/libraries src/modules - ${MEGA_EXTRA_INCLUDE} + ${LOVE_INCLUDE_DIRS} ) -# SDL2 links with some DirectX libraries, and we apparently also -# pull those libraries in for linkage because we link with SDL2. -link_directories(${SDL_LINK_DIR}) - -set(LOVE_MEGA_3P - ${MEGA_FREETYPE} - ${MEGA_LIBOGG} - ${MEGA_LIBVORBISFILE} - ${MEGA_LIBVORBIS} - ${MEGA_LIBTHEORA} - ${MEGA_LUA} - ${MEGA_MODPLUG} - ${MEGA_OPENAL} - ${MEGA_PHYSFS} - ${MEGA_SDL2MAIN} - ${MEGA_SDL2} - ${MEGA_ZLIB} -) - -if(LOVE_MPG123) - set(LOVE_MEGA_3P - ${LOVE_MEGA_3P} - ${MEGA_MPEG123} - ) -endif() - - -set(LOVE_LINK_LIBRARIES - ${OPENGL_gl_LIBRARY} - ${LOVE_MEGA_3P} -) +link_directories(${LOVE_LINK_DIRS}) set(LOVE_RC) @@ -1294,10 +1451,10 @@ if(MSVC) endif() add_library(${LOVE_LIB_NAME} SHARED ${LOVE_LIB_SRC} ${LOVE_RC}) -target_link_libraries(liblove ${LOVE_LINK_LIBRARIES} ${LOVE_3P}) +target_link_libraries(${LOVE_LIB_NAME} ${LOVE_LINK_LIBRARIES} ${LOVE_3P}) -if(MEGA_EXTRA_DEPENDECIES) - add_dependencies(${LOVE_LIB_NAME} ${MEGA_EXTRA_DEPENDECIES}) +if(LOVE_EXTRA_DEPENDECIES) + add_dependencies(${LOVE_LIB_NAME} ${LOVE_EXTRA_DEPENDECIES}) endif() if(MSVC) @@ -1309,21 +1466,38 @@ endif() # love (executable) # add_executable(${LOVE_EXE_NAME} WIN32 src/love.cpp ${LOVE_RC}) -target_link_libraries(love liblove) +target_link_libraries(${LOVE_EXE_NAME} ${LOVE_LIB_NAME}) + +if(MSVC) + add_executable(${LOVE_CONSOLE_EXE_NAME} src/love.cpp ${LOVE_RC}) + target_link_libraries(${LOVE_CONSOLE_EXE_NAME} ${LOVE_LIB_NAME}) +endif() + +function(post_step_move_dll ARG_POST_TARGET ARG_TARGET_OR_FILE) + if(TARGET ${ARG_TARGET_OR_FILE}) + add_custom_command(TARGET ${ARG_POST_TARGET} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + $ + ${CMAKE_CURRENT_BINARY_DIR}/$/$) + else() + get_filename_component(TEMP_FILENAME ${ARG_TARGET_OR_FILE} NAME) + add_custom_command(TARGET ${ARG_POST_TARGET} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${ARG_TARGET_OR_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/$/${TEMP_FILENAME}) + endif() +endfunction() # Add post build steps to move the DLLs next to the binary. Otherwise # running/debugging the binary will not work from inside VS. -if(LOVE_MPG123) - add_move_dll(love ${MEGA_MPEG123}) +if(LOVE_MOVE_DLLS) + foreach(DLL ${LOVE_MOVE_DLLS}) + post_step_move_dll(love ${DLL}) + endforeach() endif() -add_move_dll(love ${MEGA_SDL2}) -add_move_dll(love ${MEGA_OPENAL}) - -if(LOVE_JIT) - add_move_file(love ${MEGA_LUAJIT_DLL}) -else() - add_move_dll(love ${MEGA_LUA51}) +if (NOT MSVC) + return() endif() ################################### @@ -1351,24 +1525,24 @@ message(STATUS "Version: ${LOVE_VERSION_STR}") ################################### # CPack ################################### -install(TARGETS love ${LOVE_LIB_NAME} RUNTIME DESTINATION .) +install(TARGETS ${LOVE_EXE_NAME} ${LOVE_CONSOLE_EXE_NAME} ${LOVE_LIB_NAME} RUNTIME DESTINATION .) # Extra DLLs. -if(MEGA_EXTRA_DLLS) - foreach(DLL ${MEGA_EXTRA_DLLS}) +if(LOVE_EXTRA_DLLS) + foreach(DLL ${LOVE_EXTRA_DLLS}) get_filename_component(DLL_NAME ${DLL} NAME) message(STATUS "Extra DLL: ${DLL_NAME}") endforeach() - install(FILES ${MEGA_EXTRA_DLLS} DESTINATION .) + install(FILES ${LOVE_EXTRA_DLLS} DESTINATION .) endif() # Dynamic runtime libs. -if(MEGA_MSVC_DLLS) - foreach(DLL ${MEGA_MSVC_DLLS}) +if(LOVE_MSVC_DLLS) + foreach(DLL ${LOVE_MSVC_DLLS}) get_filename_component(DLL_NAME ${DLL} NAME) message(STATUS "Runtime DLL: ${DLL_NAME}") endforeach() - install(FILES ${MEGA_MSVC_DLLS} DESTINATION .) + install(FILES ${LOVE_MSVC_DLLS} DESTINATION .) endif() # Copy a text file from CMAKE_CURRENT_SOURCE_DIR to CMAKE_CURRENT_BINARY_DIR. @@ -1404,12 +1578,12 @@ set(CPACK_PACKAGE_VERSION_MAJOR "${LOVE_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${LOVE_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${LOVE_VERSION_REV}") set(CPACK_PACKAGE_INSTALL_DIRECTORY "LOVE") -set(CPACK_PACKAGE_EXECUTABLES "love;LOVE") +set(CPACK_PACKAGE_EXECUTABLES "${LOVE_EXE_NAME};LOVE") set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/readme.md") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt") set(CPACK_NSIS_EXECUTABLES_DIRECTORY .) -set(CPACK_NSIS_PACKAGE_NAME "LOVE") +set(CPACK_NSIS_PACKAGE_NAME "LÖVE") set(CPACK_NSIS_DISPLAY_NAME "LOVE ${LOVE_VERSION_STR}") set(CPACK_NSIS_MODIFY_PATH OFF) @@ -1430,7 +1604,7 @@ set(NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico") set(NSIS_MUI_UNICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico") set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE " - !define MUI_WELCOMEPAGE_TITLE \\\"LOVE ${LOVE_VERSION_STR} Setup\\\" + !define MUI_WELCOMEPAGE_TITLE \\\"LÖVE ${LOVE_VERSION_STR} Setup\\\" !define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${NSIS_LEFT_BMP}\\\" !define MUI_HEADERIMAGE_BITMAP \\\"${NSIS_TOP_BMP}\\\" !define MUI_ICON \\\"${NSIS_MUI_ICON}\\\" diff --git a/jni/love/bitbucket-pipelines.yml b/jni/love/bitbucket-pipelines.yml new file mode 100644 index 00000000..bb506983 --- /dev/null +++ b/jni/love/bitbucket-pipelines.yml @@ -0,0 +1,7 @@ +image: mfcula/love-cmake:v1 +pipelines: + default: + - step: + script: + - cmake -G"Ninja" -H. -Bout + - ninja -C out \ No newline at end of file diff --git a/jni/love/changes.txt b/jni/love/changes.txt index d686553d..66a501d4 100644 --- a/jni/love/changes.txt +++ b/jni/love/changes.txt @@ -1,3 +1,57 @@ +LOVE 0.10.2 [Super Toast] +------------------------- + +Released: N/A + + * Added lovec.exe in Windows. It is the same as love.exe but built with the Console subsystem, so it always uses or provides a console. + * Added the ability to restart the game via love.event.quit("restart"). + * Added support for passing a table to love.mouse.isDown, love.keyboard.isDown, love.keyboard.isScancodeDown, Joystick:isDown, and Joystick:isGamepadDown. + * Added love.window.isMaximized. + * Added 'shaderswitches' field to the table returned by love.graphics.getStats. + * Added Quad:getTextureDimensions. + * Added 'ellipse' area distribution to ParticleSystems. + * Added support for BC4-7 compressed texture formats in KTX files. + * Added PrismaticJoint:getAxis and WheelJoint:getAxis. + * Added 2-point version of love.physics.newRevoluteJoint. + * Added table variants of Fixture:setCategory and Fixture:setMask. + * Added getNextVertex and getPreviousVertex to ChainShape and EdgeShape. + * Added optional reference angle arguments to RevoluteJoint, PrismaticJoint, and WeldJoint constructors. + * Added RevoluteJoint:getReferenceAngle, PrismaticJoint:getReferenceAngle, and WeldJoint:getReferenceAngle. + + * Deprecated undocumented Shader:sendTexture, Shader:sendMatrix, Shader:sendInt, and Shader:sendFloat functions. + + * Fixed love on iOS 6. + * Fixed os.execute always returning -1 on Linux. + * Fixed the love.lowmemory callback to call collectgarbage() after the callback has fired, instead of before. + * Fixed love.math.noise(nil) to error instead of returning nil. + * Fixed an occasional crash when a Thread ends. + * Fixed a hang at the end of video playback with some video files. + * Fixed the video decoding thread to not do any work when there are no videos to decode. + * Fixed love.graphics.newVideo(file) to no longer error if love.audio is disabled. + * Fixed a rare bug in Source:play for streaming Sources if the associated OpenAL source object was previously used for a static Source. + * Fixed corrupted Font glyphs in rare cases. + * Fixed stencils inside Canvases on some OpenGL ES 2 devices. + * Fixed an OpenGL error in OpenGL ES 3 when multiple render targets are used. + * Fixed love.window.setMode crashing when called with a Canvas active. + * Fixed love.window.maximize to update the reported window dimensions immediately. + * Fixed gamma correction of ImageFonts and BMFonts with colored images. + * Fixed the default shader improperly applying gamma correction to per-vertex colors when gamma correction is requested but not supported on OpenGL ES. + * Fixed text coloring breaking because of an empty string. + * Fixed large burst of particles when dramatically increasing the emission rate of a ParticleSystem. + * Fixed SpriteBatch:setBufferSize to keep old sprite data if it can fit. + * Fixed MouseJoint:getBodies unconditionally erroring. + * Fixed memory leak in Text:set. + * Fixed incorrect kerning caused by using kerning information for the wrong character in some fonts. + * Fixed ImageData:setPixel/getPixel/mapPixel and SoundData:setSample/getSample to properly handle non-integer coordinates. + + * Improved performance of Channel methods by roughly 2x in many cases. + * Improved performance of Shader:send when small numbers of arguments are given. + + * Updated love.filesystem.mount to accept a DroppedFile as the first parameter. + * Updated Shader:send to do type and argument checking based on the specified uniform variable's information instead of the arguments to the function. + * Updated Shader:send to accept a flat table for matrix uniforms. + + LOVE 0.10.1 [Super Toast] ------------------------- diff --git a/jni/love/extra/appveyor/appveyor.yml b/jni/love/extra/appveyor/appveyor.yml new file mode 100644 index 00000000..e827408f --- /dev/null +++ b/jni/love/extra/appveyor/appveyor.yml @@ -0,0 +1,42 @@ +version: 0.10.2.{build} + +image: Visual Studio 2013 + +shallow_clone: true + +init: +# Make VS 2013 command line tools available +- call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %platform% + +install: +# We need to install NSIS to create the packaged installer executable. +- choco install nsis-unicode -y + +# Move all woking directory items except `appveyor.yml` to `love` subdirectory. +- md love +- for /D %%i in (*) do @if "%%i" NEQ "love" @move %%i love\%%i +- for %%i in (*) do @if "%%i" NEQ "appveyor.yml" @move %%i love\%%i +# clone megasource and move into top directory. +- hg clone https://bitbucket.org/rude/megasource megasource +- cd megasource +- for /D %%i in (*) do @move %%i ..\%%i +- for %%i in (*) do @move %%i ..\%%i +- cd .. +# move love source to megasource's libs\love. +- move love libs\love + +before_build: +- cmake -G "Visual Studio 12" -H. -Bbuild + +build_script: +- cmake --build build --target PACKAGE --config Release + +after_build: + +before_test: + +test_script: + +artifacts: +- path: build\*.zip +- path: build\*.exe diff --git a/jni/love/extra/cmake/FindLuaJIT.cmake b/jni/love/extra/cmake/FindLuaJIT.cmake new file mode 100644 index 00000000..a4841019 --- /dev/null +++ b/jni/love/extra/cmake/FindLuaJIT.cmake @@ -0,0 +1,25 @@ +# Sets the following variables: +# +# LUAJIT_FOUND +# LUAJIT_INCLUDE_DIR +# LUAJIT_LIBRARY + +set(LUAJIT_SEARCH_PATHS + /usr/local + /usr + ) + +find_path(LUAJIT_INCLUDE_DIR + NAMES luajit.h + PATH_SUFFIXES include include/luajit-2.0 + PATHS ${LUAJIT_SEARCH_PATHS}) + +find_library(LUAJIT_LIBRARY + NAMES luajit-5.1 + PATH_SUFFIXES lib + PATHS ${LUAJIT_SEARCH_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LuaJIT DEFAULT_MSG LUAJIT_LIBRARY LUAJIT_INCLUDE_DIR) + +mark_as_advanced(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARY) diff --git a/jni/love/extra/cmake/FindMPG123.cmake b/jni/love/extra/cmake/FindMPG123.cmake new file mode 100644 index 00000000..6cda993b --- /dev/null +++ b/jni/love/extra/cmake/FindMPG123.cmake @@ -0,0 +1,25 @@ +# Sets the following variables: +# +# MPG123_FOUND +# MPG123_INCLUDE_DIR +# MPG123_LIBRARY + +set(MPG123_SEARCH_PATHS + /usr/local + /usr + ) + +find_path(MPG123_INCLUDE_DIR + NAMES mpg123.h + PATH_SUFFIXES include + PATHS ${MPG123_SEARCH_PATHS}) + +find_library(MPG123_LIBRARY + NAMES mpg123 + PATH_SUFFIXES lib + PATHS ${MPG123_SEARCH_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(MPG123 DEFAULT_MSG MPG123_LIBRARY MPG123_INCLUDE_DIR) + +mark_as_advanced(MPG123_INCLUDE_DIR MPG123_LIBRARY) diff --git a/jni/love/extra/cmake/FindModPlug.cmake b/jni/love/extra/cmake/FindModPlug.cmake new file mode 100644 index 00000000..16641d3b --- /dev/null +++ b/jni/love/extra/cmake/FindModPlug.cmake @@ -0,0 +1,25 @@ +# Sets the following variables: +# +# MODPLUG_FOUND +# MODPLUG_INCLUDE_DIR +# MODPLUG_LIBRARY + +set(MODPLUG_SEARCH_PATHS + /usr/local + /usr + ) + +find_path(MODPLUG_INCLUDE_DIR + NAMES libmodplug/modplug.h + PATH_SUFFIXES include + PATHS ${MODPLUG_SEARCH_PATHS}) + +find_library(MODPLUG_LIBRARY + NAMES modplug + PATH_SUFFIXES lib + PATHS ${MODPLUG_SEARCH_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ModPlug DEFAULT_MSG MODPLUG_LIBRARY MODPLUG_INCLUDE_DIR) + +mark_as_advanced(MODPLUG_INCLUDE_DIR MODPLUG_LIBRARY) diff --git a/jni/love/extra/cmake/FindSDL2.cmake b/jni/love/extra/cmake/FindSDL2.cmake new file mode 100644 index 00000000..81de07ff --- /dev/null +++ b/jni/love/extra/cmake/FindSDL2.cmake @@ -0,0 +1,25 @@ +# Sets the following variables: +# +# SDL2_FOUND +# SDL2_INCLUDE_DIR +# SDL2_LIBRARY + +set(SDL2_SEARCH_PATHS + /usr/local + /usr + ) + +find_path(SDL2_INCLUDE_DIR + NAMES SDL.h + PATH_SUFFIXES include include/SDL2 + PATHS ${SDL2_SEARCH_PATHS}) + +find_library(SDL2_LIBRARY + NAMES SDL2 + PATH_SUFFIXES lib + PATHS ${SDL2_SEARCH_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(SDL2 DEFAULT_MSG SDL2_LIBRARY SDL2_INCLUDE_DIR) + +mark_as_advanced(SDL2_INCLUDE_DIR SDL2_LIBRARY) diff --git a/jni/love/extra/cmake/FindTheora.cmake b/jni/love/extra/cmake/FindTheora.cmake new file mode 100644 index 00000000..4a3804a5 --- /dev/null +++ b/jni/love/extra/cmake/FindTheora.cmake @@ -0,0 +1,31 @@ +# Sets the following variables: +# +# THEORA_FOUND +# THEORA_INCLUDE_DIR +# THEORA_LIBRARY +# THEORADEC_LIBRARY + +set(THEORA_SEARCH_PATHS + /usr/local + /usr + ) + +find_path(THEORA_INCLUDE_DIR + NAMES theora/codec.h + PATH_SUFFIXES include + PATHS ${THEORA_SEARCH_PATHS}) + +find_library(THEORA_LIBRARY + NAMES theora + PATH_SUFFIXES lib + PATHS ${THEORA_SEARCH_PATHS}) + +find_library(THEORADEC_LIBRARY + NAMES theoradec + PATH_SUFFIXES lib + PATHS ${THEORA_SEARCH_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Theora DEFAULT_MSG THEORA_LIBRARY THEORA_INCLUDE_DIR) + +mark_as_advanced(THEORA_INCLUDE_DIR THEORA_LIBRARY) diff --git a/jni/love/extra/cmake/FindVorbis.cmake b/jni/love/extra/cmake/FindVorbis.cmake new file mode 100644 index 00000000..6a263a4c --- /dev/null +++ b/jni/love/extra/cmake/FindVorbis.cmake @@ -0,0 +1,30 @@ +# Sets the following variables: +# +# VORBIS_FOUND +# VORBIS_INCLUDE_DIR +# VORBIS_LIBRARY +# VORBISFILE_LIBRARY + +set(VORBIS_SEARCH_PATHS + /usr/local + /usr + ) + +find_path(VORBIS_INCLUDE_DIR vorbis/vorbisfile.h + PATH_SUFFIXES include + PATHS ${VORBIS_SEARCH_PATHS}) + +find_library(VORBIS_LIBRARY + NAMES vorbis + PATH_SUFFIXES lib + PATHS ${VORBIS_SEARCH_PATHS}) + +find_library(VORBISFILE_LIBRARY + NAMES vorbisfile + PATH_SUFFIXES lib + PATHS ${VORBIS_SEARCH_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Vorbis DEFAULT_MSG VORBIS_LIBRARY VORBISFILE_LIBRARY VORBIS_INCLUDE_DIR) + +mark_as_advanced(VORBIS_INCLUDE_DIR VORBIS_LIBRARY VORBISFILE_LIBRARY) diff --git a/jni/love/extra/nsis/game.ico b/jni/love/extra/nsis/game.ico index 3a01034389ec9455d80de832e137438bcd1ed79e..ecc5c0d3d613bfe5455358ab1ecaaaede3c336a4 100644 GIT binary patch literal 370070 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 literal 33093 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 literal 154544 zcmeI5_m^8ocIV~&b${ER_7B)y`|R0W@9~+nJsyueo@je=utr%T6{tAMIgccYQA}bc zo9vt;JLen#G#WW{H-JV1XaJqaZjutIH2VdLEEehoJUl$00SQ>bY zK!5+|P51t%J7WL-7XSYW|4Z@zAO7NwJO1L1{|f1jJKn(g|MH*ji2sjg;3H~kLaO%b ziUZR$J!Clf`>Dg)CaRnW+A3F~?GfV{)`m~LBT8!BHf0K|ZyS_JJ5pes)J3;VfdcE> z24&KY6j (QQ+p!1}g9nY1GX)=6D-+Y~6UzHLw@?FeOEyD-IGdv2RPm9%b31@4+U z!sJ%`}D_H{b&4B^irnk=}&(u_78&~I6?+-w&azst|1e+U$s_3Mk1_Vw$-ruKXA3NwX!1@ zSQFMRTL;TR>RvG+2%6+yZIGXexdJrC_s;dQ`k%K{W`{4^N`W4yWu3J zam>}+>`lFjKptFipa2c|2lOYf8DsTl;@Ju{KuRdErmWjNqb!cyv)xioOEn)W0;^eS z(nwWps^tr;DQmN%n?Bfe#_v??V zb1bQKkM7e$o*`}s-K{&4j!xBew@;sDEji{JRjn!?E5`4oG)GN0lFiY@dIRzSPk%aS zcFpn%-*aBrDo0_H!1nIM!uVEMvL)?utO323mJZ|vdeGs?Sz2og@+=N9!+dwb=Y z(xUyN(yfw%GV-yoRn0A z0p#A4)XgjThUnSY9Byu=35Y#yf7BoNAqD_q++%BRNqqjL95E^RsdpGpJ!o@VE?|9O zyYQByNz^2OyLlVnwQ)?G64A6*HLz>*r1g#yo-%UOeW&xzj~WZertOR?Z? z{^LQ9@-9$(5a<&kVRbakmP~c_U=@n8Cg_11(Y-WTg2Sk}Mepuw@+E9+Sf>f)quyM+ zQ^8$!;W0Wk8>~Z!%*Hig0jyjxOs(WeA7z11<;ut$3hN3N3wF{Vtw@bJnTF^o8Pu{Qv@LFahR@-7gcVjyAqAX8rl=m7Om2RL641m33{7A&#!@D&lQ#im6w03h zYoL^&iD`VU=}l3%TxPzo#-nqVHLeq-TqK-AIsencly+rob3&$6Co5o>r8H@FxJT((?53XGm!nk*$U`81vUoul$;Hb+YKB;J9^**TnBvT;K|<_@qh^jHK$1~2N* zR0YwsfNMe%&@c?FU3D)~e3qj702jm|5a>9I99lp|$QRb=HO3(u+OODZWf;jsHz=r> zy1BN18!I)(mmXqPPd}nbi?Q`O9?|3zl*#QB?Dgxi_p5SIh#Y{ppqkU7@ih;a4~9HBq~oeg}NFBI~K zHSX%OtRX9TvIDY!PLhTQSRz!vR6RhL{FFmcwc%NCIo7(GMQZhXd< zY>_f-#r$Fo5O^hXJ=f@HXb;{fkYWwc2xsiTBhz*Mflu+tVilG1jx}C!WLe|l zOY?8BX$UJ#Ram4%S)Wcyh#)d)~2z_qbOV4tfUCbZKr@$NRt-)nE;>h+L9z z+eClxhnTeE_fL{c+LSU8@{u)n@dbx$$rn;GIzsSjD0xEztO;DQG$WQBRZlNXl`UIa zQ%xR6!kbGud*6(6EM9kHXY!K^6Ee5axVm|9_@<+QbTBrDTiY~Ap2YW!^My6uo?=-; z-ZPi-Q;eL2zGJ3{z7+=6E7rDDQ*i9;;^0w|Ad~9e{A3MG!grgc9)9I4Q&Gb(LE+mR zbR;Wh9W~ZtWyj8(UWl;*^3C0Qs9Fg564&t3J-VZ;PhdP^A*WuQ5=EIb6B86mLqg18~9jJ7TPD z?NZ5E^~?>*M}LOZS*jSx_c{~4=9zb_ft!1K94B6hFI$}2aIXyc7MpCRj9Uqa1hM)vA%7hZ% zOUcJ?#&KWJrtZR>b9|pScYsP+^0p)4Hw}pWqw~XrpeXAlT?JXA-Ssak1dU=5d&0Le zix%}#Cgp6tXj~JI;qBrlW{Pvxa(v(FBX@%TiP=M*5lS%5x?{zbkW8ok13`^XEZ(A$Z` zZ`{x&nfU4=e(FcG`j%v3Cnox>*zwrZoe;u8)?`bDPp+hr!(Q*LyEO0&%wW5ZcX;S4 zb9mW?Jp~zO@v0svApag0eG?A?rv!)eEQkxw%IDz09~&K$bHnwCKix^rp7rZ+Q6sM^ z3up0i1@}v0)Of?}ppaLbb?1uhRw65PaO@nLsZiF>B|JyK_qEwBv#f!YjXTKf_bh}X zfz?B4VqkEuak8)Ys(6(b7u3{U5PXiFpuL-$tY`r|G})@34#1+sjzHnLV4rSpNI98rru9zqY#9b*oZY6+VmSM9BBFP zMFKjedO8EJxLMFBkm~DsxQ=Fxhtp`^M-qR)lP!j+Ae&oseEaNWYYq2C4Yj9nVan_3 zrDk&i$9kdn0NIss#pof(28NE)LkP$*9Q+Yk;_+FMxMT}&M6mG-A|T6xqXU2qWTDKx zvkfJzT6O>k>q_Nt-v{aRO|ac`yZh>;zm1MN&zat(!;^R-gGa8EEGJ+m#u_Y?Io9s_ zSHKIO!jdG16qs*$hb;iy&gwsq$-mi>aEbSlwVLxS7sWKpAt(e*6k>12)@5aGV&@Ey zI^@2FubUfY`v|$#RE3{WcR~H)^eW{-n-?5fUV=9_-}?_#{Oi!k1Z*bac32e9-cOpLak_XNi#8Eu>HeN zN8-9(sGrRlj)n6rJ7r{rtmzaD0oUC!3jNN6-XM z(G;Q*0UI9fOW9noOjyKkq2T9$xUDtWT_K-RIOJZ->Z@gwnx%jZBy~%pQD*i)B@=F62 z-!tycHvG&;;;*LDCXxyj&aTFxqg}PnjvW3m5R>F6e~cQYLJ+d{cJ2aeTtMMx6I3W9 zRaP9`TxjDDe2D%Ejl9z`eHL#SaW|8@nV=5Xlg!>y<~^i4in_!V9(TWKZfMLiimg=B z!W0tyof$$LVOwo(sF|*68aUX|@N!@AgQJIjNcpltnv-pubk zpB7LkaG{NU<=R6cj6HnOgA1_`F12pDLgDN!B;IPSqe_IrY{RQ8L4~rTe1}j~N;w>B zXZ5oLH2Dk+pG-*`TNv|0jWOZxxnL%L(v)!JBJ@%=bA(U!hdg7n3w@Rbb;i79I75{P zg|MMUAzZE)DhjowloMm^?4gMT4H+|eXtIQ!RW6_w>JARg zh->Pbt_V0fF%PR#Zn9mVdW3@Y`~w_BC5N$~zG<6k0jyb?-mYDyQ+HzaUg$qWE~tSl zFmf^_{ZN8h7%JH231@O_dbj-LOiVBI+Yod#&dm<7M`vZ z7DEmu2WQQ5CaTXOYN zn_pD>lPQ?JgN|;hM<|$2$L@NinlR@JRjJNV&YCs>pz{~rr*REg1~IJ#!Q~vT_9gtG zF5-4Pcfe0QYZbhl9=uG8J7ai5j73c3<^_NrpcWo5mT+~IA5K_Xs2-uWl|m$ zh1yi-#8|ufvXho32c6R+4PtJG^YMdnn*8ZE3JB8$Zcs}-AH|R3S`u(IF)JEtIoc#esIOw58Lp$YVQx42RmJo&)@L^2EHCnd8rdX8GA69 zr;VfDan@J;s&0A{+c533s)Vxb{DbO(dTFXus4bnGIBS5&REkUw21bUFqNYL8N^o>I ztRI@5OL(-zO|Y2Nv5yk{Wp5e!c+!Ng*5a9(%)11$Y`ugRQ``_5^iC{efo2AF(AlFJG)7&UrJmKs$@sYmb+b2W zp)RK_{lge*cfaN-FglC`xT~&y2+Nj%h;fkQM9qUsQ$q-IoI<;vxuLei_gFYUnjH4| zCd0D>TsMQR9@QIffIcu&$|>Xy&1ZhEE~tIodpK2^9L8D02^y#1#K@9CeA)I1azjpYcNbIxPWmhftyCWxV=b75+6Hr6_qg09|lK%*`+a5~vT{5d3bpfN&N zJsQejz3v`JC#|^#mQ6!TQ^QD6;}B5=IjqM!w}YXvk>KbE4oN<8q}no98O!!~iaYF@ zP{y15gT4vh+>LgHjUJp)e;WtWzQxfY)Jb!~x^i`(Q7byrK=o)Vq{$kfLlZHYAPb-n zBGWP4_(VPgf*ZtT%tpL-zBhaRuB994{?Pf|p5l6E@r*fD?j=)}KAUcKUamP23$fptj9!+ z_#K4+^biPBphpf4*BrRo8k7f()mbi_QwNQalhhSyf_~9(I^^n;X$7#+_P6 zc8Zjtr*F4Qra5{lP0-knh1`8qn^0J_cT69;_0DHX(LHng7ea-a=fqhLtbGQp!obt@xpo_|n3d3SzT&B7#gDvaG?EpaeU@7cGK2VG4O^Y7~i> zfilQnb;!YG4K@^;HJr3T8QRR%Gi(#0a>(7ECg|A4+ukCooMyUfU!d$#6+G=9P(2wH zz#5TD5JMm+317l-%{>IBh*_9{VvuPfnMut9k($T-+J-X}`i3WyHVx2NWTm22VSbyf zQNE#to_(qErR6aj$Sc?IELaD}$CvbD>vOo1ISP5rHL^B~Th`-|nNegS;VdbDQ^*e+ z##S77J8OiTmHC|Q*0;Xy(Uvl_b-q6rwcfBzruES5K>DETto1TY;1qsMLiK(O6;~Zy z^7=JA3)T_i7zjcq@IhFPyAg0h6EWOKgfD3nppl={fDBOv=-2`sAA$0p7FXAkY5!W$ zK~tH0D^XLEYS0Mn;CPX|er?Z^xCTvxDl~^C$AKOKiE$h*=`ewhA<{{^7zwe$Hp!qi z*O(fg_h}x>P>6XOLr6*YCmre^Q__h&DQJY`%<*5+**H}Jf5TKsUoy zXm04^8TBu9v#gawbef>CX;;{<3>AyB#*CeiLi#Bj}T1x;|rK__@X*l3!drw{)aU(6Az&1Mc|4Ze;GGw^of^9vk;EF8AJ?p+wsEAM!z zrIwA#bmTf)W72lh1dWY%#88v8l}r}^>#je}XJ-`_9W!VeW9*`5OktXz9e7FYm!pM4 zqTSw-wB3ciwAN^>>4D)BNn6Q60k9TDkcCVv5EG{y7d_+36Jk)4{WhRO&w#T%Y10dR z2U6XDapj>QX)D<&uqCVs%PW8}o_U@#uWVt{VSY!94f-;C4G^_mG5~+zD^MexiI;);al`L0& z=J>DhtsEt7WwT61S>y7}QfIy7ok%s++nY3;w1FPl2A%Cm%>bbEL7U>BleU%p0vTf6 zzh`c~*L2A{nQGFxyPr()7vrU(nC4>@u+H`;wFKXs0wyj(Q$37>9!T2OmK4yIHKyz7 zQu~TSr=l;Q{I>Bt1*Da5$Xv1H8B1zU#8`KGgN6q*VU2y4>Oh7K_*yQAXa$$*!Mxq> zXiZ8P1pr#F>PL#$sD}p33`&~YsxoP^?)sz0QfIs5n^KoN^TUVCm6VQ#LTuii8&F~u ze$k6XrcT!H|8B%sucWyxETe)oqL?6Faq3lDo;k`GFsH0FOWtuMwmGYwRtJ}@WjgUI z{C!d-&24QN<*cz5_wSu^wpr3NSm*A^P%MKo=56R#V&R&55SPF#GIcUQLzR*ix4euz zYZAiKWe)%N%q5>L%{1uhe0xUw-4~ttKQ@)c!#TN~5n}^pU3GBTT5-@rX}TqA)rG9f zw*|XC@PO~)_{_$FF8vhtjn_MxHNTRgh~wdWY{=cI&{SX7E|!;S8KCi{426y6LNTxg z+}1aIlV{wnHfwmsxUrzuD%s`-4_PX=>5j2nG?x+1Vc&!jo7ZQD?WGT^hRarrgC17W zXzr8&Yt4;;=R2J3FHN7-94n^~bA@iUPoe$Mna1hEKVf;PmYvnlC~P#RifPMw$lZk~ ztLYwhd z=PYOM;drS&#E&g2Y&Qps#aR0d>e3Cw`phoJ6fp!$+Gtd{wTlBs^!xuwHCeVI^gx^P zrgN}ls;s@)^JF{6b&U$*o zFPFl;DMZt0TU|!4ngM_}PkwAJ$An3}y;VYN z1C|P9IC;MHJq^PdprJ6A*`;b5Si`Hi0GAFb*rS^p*zg;br?9RPGi^F6GFKO4COB54 z+bA3`7E-hdfs`lhv`K+;i$yn6s?uz&gDqIB0u9|0AI$Ft?w?pISRG5^HRWi-` zNyDkrwt97e41Z>hGDZt#i9d&Mro%ErtmAWa&Cp!mX27g2;V%hhD3(Dvz70F3&anKg zr7i395yO*VLrvx=12ndF7)bex41f4oo$;Eme#&s_jJ?6&8M+)a3)989!SK|1VZJbD zY2th)_SkfBM>q$DjtSe%qntHYukHMQ;8TUos#zn1cbO|1T+1FHQwVj#g>PRJT?W5Mfe8J-{T`Sq7WR^@5c(Lv#ILS(uUdhjPfT{X{T zI*`f8!C1mywo-0OgN7PuK)MjCUsIki1 z{uUCTuQ|KI`ciU;PhsI)$k|++X3YR=YtgTe0Qb_uRCK1++wm@B1uQ4ZhGJv{qrximlb#{FMz76=*B$=_s|pt9!v&*aYk zfnF?46$yKxFlT*kKnNN+LY=ttvp956q1wz9n`?UBUV8WXY(HrNtQQC6tXj3V64v;1 z*Y4m918Zfj{??Wh!;&$5`1_MP|9fH=oL9mk33u&8^J(U0&@9S2Y$&H?h=6E8-YgHM`61n?!oCGWVucb6z@WUkoS*ot_ZMEwlhP#c-9^7rk+111P;Nh0Ht z2dn4C!W21#g`!5X6wK9v`T4iOvh8K22ThBqxt1dcU4W;*d>+E7li#&rFcLdt9o zx-i%L;?mSP+F25bz(I3}uxxIO8fyUB*Y$xEXp&EHW1r*e`Xlu-D}XhpABO~VSXYe4 z%H%9S!&=Ou)X!`!WTHh3S~gQC;|hy5jdq2@SXf2K8fKs&N7;Q4a)-6y;13ph_V{{s zvP_l8)^ooOjh})y?4|c0#dawX7fp+U2j*K|_O!i$he1ixioG4r7#Cft|Cgtws0DHNQ>~vx4dP52&N$ z1zYj&5wk)+AP4!l_Hpo`^Gkuj10)llYmN>)Gz3%gseeb} zb(Y+PJI~a}6-(2qt##Q{PjiSswK>Y~m$%&Cw}%$SLXYZLI9!$6`F7)zm1rh9LN!3Z zSB>Nw&3;^4i|+Gv?hK8e=Dfrn;;iA5Z^`>=YS&*0qmT26`NU5!^%2$!-5=uC1aS`5 zdW-?2z|di|3vfttjn5IvH(6s399tAg5I{7HThJ=D9 zxUqI4x{>_7yRGMb>!^4TP7aNoqD>>NXX~H3!MgZPf!pu472hduJSGRc8U*JDM~=$a zk5eqE7%VJa%(#-5F$2)*7w3oB^+Kl6jIy5E^KBq@lyCR6zK&@VafC_6aPaT&z#Y~u zO%_onbHYM*k{uceii>kYpeb|m5m)`5D*@4R|u658vj3bJL znr-KPi&I>A;UQTLWZaHZ*zHqZL_l|D6)e-}GF~D@6-?SmXAjnfOt3Z{`8P+!4rkR4 z+^uEPe9KFq4A#?!{vJl+cC=KIUw2^tvZ?NBbQTG3SlP?&L9&(HX*v4~)5)LA9Q&T} z=szQ7*`|dukYVg0(xq%LpZ<5tnV;Ft{|?G=huPnE<0VN)#r=4$Bvp&#&o{rwI$2cK z@B6>enQGDte6BgW(Zu4w{@CSSyhl=>VSNe8;}S3Fq|LRf6>B`xbW}VZ96f`-A4e<^ zx)(Xvbj=+90VYXj#X~agO1fA>74;JFiTTvO0WnP&RH6p3nQ*L(4X_Znk+8?x^c!e% zm@{Q+;S`1k=VYnF=|kTJUks#JILG;}SXlXW{L`UwG1V3S2j3$%yja{)GhKt zs;u>&{FCw1ADK@6%zFM#m~?e{j!hr}+X5p;y`AqOfiLD#AV4_7`LK$$95W;d9DHKK z7B-ZTbv9A?KHa_>xS^b!TCrUqI$;bhez6C@dm4l|HrvDu;U}JJ zY=$fmV`s=Y0CrFPS?FiEN~Y{qVIw&^+S|CPtu)ULnO@BbV40bPStqO9Rb zB+`B2VPE$L)Fdiw24i6^L!4u+-~W$>gV@{r#C-af)^op$NACR9<%Hzx{tzuXDjvWm z{ERZ8iPK2L3|q|F9q;5O8TUx#}^h$G@sWD-4C z2Z?@sVoM*}pTw=g%5{0kM%$tS9vpZ(-;+vytkgHB5h($|0(+=J2rx#fFwKwckZ-yR z8ejkyVwjq6cNBL9;=8^Zs}JcK982obxQ2UikDX+qo6(s%a>`ZpFl~hsusCup(nGMu zulxl^PuWWDrp{yqj40fzXBFZQZ2>Mdi7gKq`D}T}%jO2`olGbHl`RRY@InOz%~e6y zR;(BBYBUUxX$Yq<47j>DL`5mk$e*o$W=VIR0umL3I@zFxi~+f7Z|CX?YZ;Fu+~SDc z|GBxr5DM@rG{C($1@xlB82-o9he3`{4h`xGM;BOQ&yRet{%m<3$=mj(1JNpx@TWeo z7bPX}8PS*GaNX6buso^+h7MvRv*m5)eq%ZP?|3h0)32kNsc^|Nf-bY=MP-yhNm`2v zq0!^M&i6zUF7{p3k1P)Cix|q5O|`4mmUVaEilq^UG~tk{A_4*yaeB!U`-!Bh5f?p+ zOj-+lq4`vR4K%V$$A2jAXY>(XMWI2pQOi#f}sfmb4e&X*vBfEK*b(CtUK5x~d+b1_%Y5MH#LZISh>@ zuqIbYxGe_HdoH{R+*sP!idUn!Pu>)nE++}EJ+Nox~%yL4->%JT4R#!!2vPz<|Y$JB91kIPQwrf+gK+(NnlW!EF}NQ@FVY=f{Kk zmM7r~(ieFT6NPXl?KmqSU)Um^$r9GsKeK1S8qTC+jMW1f_OOLHIi(ST@Dz3mO|#>H z(@zgMtH_~fH)$2H#_eT#s9Yep@ydttDzv0bEe&+q2kbLLfP4G*xZ+ zTRvhaC%u;XoNag-8xqn%yqqTNsVHj{BkbT?VHK$yid$xcNY$0e$H+l1fS4@wBP;6*`W04R^gIO~PaRy9kpD^u;X z6;#0kxRfAEsu1_$z$eOG6l1-%P)ND#fmLS*W@%hMLb$XrffPeuejgGtm0Mn5t=w0+ zQ_B2DaAE z1=i~P?`ThsSV$kxF*Y_sYQ~j1JK0)s));Svq|^ic$zanLEJIcmqH{h>Ox$i zr~V8DbA6U(Z7~rM8mxPFEmdrn9Kbk*0_OUquoY(fxune{IiIj}G?z2yXRuao zEhZU5+0vTl_9u>RDtC*vC9!a1D5g?kO*=Jo2*ktJF6Cm{TnaDh5|Rp2=|l(5XL;3z zlT{e3goQfR1Ud%)wT*Btq&08Y+z^&ujDQRVhi%CXc6Nm6s3zq%!{Pa%u;%y8Xe*o$ zTeUOb*mPLK!seG1c`p-|6P=6taH??!WEdF0CuJ4J3~@esN6TP1aYQnAh*^cUtD%r4 zYxEa}ArP)@M6#UXl-2tmW`nq>%@iVAU^5)S@7~e5opikY9ZV(}iTAKgdw-_Sns^4k zQgD4El70&4!^4Ne2q@}s2#7?u6eH?#IMxI{Cr+!U%xXqM>)r&jVE`?_ogz)c49+|l zj7&=dW|&)bsSmg8x~~smgG2(ghJ=1t)N>R_9Dw3pzbRw=4%Tatiq} zT_9tUDuF<{k8ucXpr5oaY+a#@u`ScOx>FjmhQY9qf@ps?jGv;6*dy0BlcdX$2%IDA zZ#HwBond09q5Os=uwTk@Vle3-$`h=h&y`2tW5NEeny$&T&b6ZaP+QibbT9xeN21p^ z#S>07zpTa^qHU#<>FmUqjKW%?Bo5;ep**EvkIgF53e}y; z0&BPhG^KFo2x!6%P`EGzagbg2C2*v%k6QAS2^7*t;Dd4`h10t_pfa_<+FAPaLmzPZdLL;0-$(Y!?!3W1~TE%8aF_9-k$5zjE7FGuWAl!X5H80I_0 z^$~|EEI}2ao-}j7+FSn+O|z9x=#T8~eYd*t>2Y-y%G3hc>z9{lT3?9D6yB;+1fqQF zy}QHs*`yeEraLn7<>+$25JeS?7R0r%338U3Qe+gWI~8Nyuw69G*Y21;zH{Ki(&lG} zOYZf{cVEd_^pQ1k_;79owURDyWo`v~GUyoC1SN382^@Xu7CO=H-mloN_6#$%i_s9d~3&kaRGCJcrn%aVC`@HLne}^ z@#UFQ2M0c^YkGFF`0g!upC@O>SjW4O*vjr)`Qpkdn}(0vSktjFWAn9=W31br%XIQx zc+p(6e|T4Q%L`+r_bucsg)AFZ`*aw5y(7z4mRAwTv~`RGt@yHfzYB!l|Q6@OHVy>dkBbS(h*#wTv=ZG;)?bu#=7(6EljTJos&n3JKpH8dbqHqkKKzK zK7ydu9yD}+^}g3tv%`LSL~E+Ohz0e^+80+dl47iT-pIk^ZT;iS z+0z3bwKhESXSAiCu2}x!>N-sq{c8c^DpJ(BN;6dpU>)pzJIB*v=lho8lf%1PT3*nX z+!IVSSn{QO^D7a+wKOgF?v7&HCTceJ@E8xEuY!1tb>DmWm2BlFM)xD2EQ#le_=kc;v^{v%hm!ZTGf37wCN_H1I*bq}hfe z6Nei*-WaQVcs{9rZp#9bXP2+6VA{W!G=cTR&Tnx^x9_{AV?VVQ-#uHiW1;osrNNK# zB6%(xHk_*JerKd+hwHY)D%B~(xOa5*%c~dVlPGHrJq`^Azi&D9YiId`^9|1|cD=PU zv@6Gxuj9~6QDy(mzPhLWT(V)`H#s)ZXvJru~xp<{F+|?0G*tekeM1EJxBp z@41=cmcEb1YoD0S)A@Yag_(SVOk9b>N4)pC@)}73S6dXEd zsc0VFH-bNRoJZU{-ivKazhW%jlH}=Z(48LW zdUvMs;T(GLX2pH!wqY%#KYjSewsV;FpIPX9FFgL~s;Mmd$v;p(Q`*=2p|R%iEq?K4 zvS{TtX3f!`-1T=eM}O)l+dkj)a-e_rvc71|T$#-j8f~yu_YUvZ*FU`lmvVJaN4~mt znWTK5!#T1_4t4wfDK_m_KIUzGGcx0O|iFI3D7Sf8TVYanr;`mhC8;;WZ zGPtG3-*7Wl#Zrdi+H&@uC0zx6lkHEk|GxZubJ=`hzV$u*C;yTKrplX`Irei*`<|B9 z0t5S&jV0@j#!M$qcaQGOWaqo~ifx(N(reBd0gJyEFH2bDB%ot#C})x7lDNfZI{6!C z<>S7N_m;+vty$|XI$JWA7KeL`r4v0L*s31Ya!aovYs4maiGWm`g#gboMAgk1Fzpv% z+JD~PvokVv_L93TLn*B5vDJ8_`p##%9Jk(&>%BfM3rYQb862&m`?o4RrTaT*9YOrQ|pfA zjrnd3)0(4qwqtzagt_(gx#D{ieO)en)`)0s4+eIc?6ojdgt5;CwWy5g1!FIB5LIi| zANYZ#=82n+qeVlexxRd{4qpeWt@2 zb1X|lt55>ElKp(K?w%ur_Hmm=%r<{r>M+$Zo%H@A6F5hIjC? ze@uCDwj}(BSvsuYNeTttP-wq=F)(F$LB?b*Uxhu3>fFSR0l*eeE<=^*B_#AK*>fsy zD5a9qNB#}F{dr9LBga;(4VMFx@~MCC9DTn+HES-Ywdy`QegInCE{kmJ$vA`(6}F)Y zH)iOlh5(&P=9!crsw=G9|Ie=KXV#tVSAu%c6x7`cZPl#VF`xcaNqWl7-l``|F1k}S z51>Jlg)5XX64cSjM6Ibk--+l-u7;*XQ}vDj32oJ^S#PKa9MLYbL5XZ{TtJpJgWGVjIyITeF(zRfMiJTmkx#f3?P6L>X$ix8e%U|qS;WGn3$NXH zn4*p~ETIljJ=1b%poi*Ab=KunkwbPsDx7k;$Q5=C1CqUQ#Ek?|Gek3?2Z&i!wC|jN z5e4)Lp)d6A{VZzdQq^NO?yjg~%?|$b1CV%w4H?`x6?IXnnXEID)$&?rUvaW&ZT8l$(5Pcg7i(%mQcor=!0vmK7FJk* z9Y6BdZWyt&Q*by2vrH50P*=V>5QW^-Aq7{MkLqM%CzPQ_*tFr`4?ka>Ws|GZo8~na zwM5=0GVT(d%7jjKt&wNVjx-El%&|fXX$~9ODUEh^?2-PWT_EFZ!@xrhjK}OvMj*(- zBvi*I@_`!xj!bG25vC9S>$SCcHjR9G>&*uhan1G=?Q+ejJ46>KYpKaog=YAKsue~7 zRmctrlvlDi0x{JrI-OGGRNz2E1BaNF6ctdIj0zwoAqKO#1=M=}fotntHZ?qd>k(Lv zu+GHzfyb1nWy=7c!qLm_B$Zr=u;tMTs>n|rLfpU#%FqMiB*2AnJ>UH1^^1O*E(a5S z_5Jo{&BisnBy=Dg&PJ&6C5fGgz>bSAt|6RdHv_6CE{sErOeD-a=#H>Q!LifVHv%+y z1{0od<_K$egHDM`!i00C)FC@L!$rbk2o2gUaL6O$s(N6@;c_hedRtAn6a zNwiD520>_sR7Dl}pRdh-aT$M5;6}RedXBPY=hAdWKIlSr3jR-Gso0yL z71k1Aqv~=HS!@WvOX~EHTI^;I)^cIX-Z@E%K;8`bX&hsW`YLIV!bnUGtP^NmCG%%= zrv9tXFVcixE~R(ORL3>?PVIpp?~0VpqDQoMGP@lmI@$SQxp zVR(W#Mg=>Bh)>WXZp3o7T@ISQx`wam#nKm7HcB5z*q8ygy0~UNDQ^I0kNhE2(NTmB za*X8bvS-;b13fHF$ZQkb+|DXdD6`YJaD1|kQmBv?gKey-=m_*nc^l8K@e_7mUB67y zlJyc7)T&vtp&`{ewK*k$UA5KWW^IE8ZuVo>M1V-iHmSmF46@@2<d?k6H|UO( z&8CyT`}&KkG?^RLwPFpv@FD!BdRHUmH{`Q>Dl(WAuHCSTMM>(i4bh7loWehalPar0 zRAwh?ZlXw&HEE7>2-gHD<8FB6>n}f}sb|-%zZ65EtDD0`yR2a**E?{5(`3dK#y`fM z{EUZ@zy=@yX=O0G+2-PoWu49h$c|xjQ>ZF1a`KxmuaWfi^=p-ni2T%iZn6diA#M;y zH{m^Cr3uKmSuPf_VoMvUkW=^sbfLS_LC+2|Rx{hE!r4jG4CrK=5N_$$Tz%hsb)BSD z&s7@BtdO&;(PacO+d)bysUVD5b_a#(GE;=8tCME3Ba>CmZa=_1sUDdEtSW>#SMu|9 z|2JQMNs^;ulSNGBTxN~#U_8S`%84WDMZ<@kONEZ&{HEd%eCY@Tcd7x43(Xhq(rGaz z0$d@b3cv0D%{O1sGOG0N&*FEu`D7?&}()t zB#I2RPz;4tj}}q2Tqe8yQ(C42H46*5x!C4*i6ly}I@lB`Xy2 zF|KLXSV5udQpJ~2d3H$^UgLuiYcOO)D^N-`fzgYx%}xlU3Rm7y`4m;_8~;p*nC9dx zYnk<$>ptmeF0cj#>UJ^(aa@GBQ66E7fq_%#0ulxc>WWTl?3Fv!ywH1qHadB3gOU{r zIm;S-!MaSRFLr0ePL-sam=bB(<;^ckF4jPw z%dDlS!Hw*&N0?`HgDqu->U`13S%x(_D>Kz!2|I2K_{(2&FB5X1osX=ElMx^o>X`AQ zB1koh>{Nu=m;~s=C1j28#|$Pz8Fu0og|EN7M(PHP*EqP`Vg9nt4v{Rh0_b#^#^@yr zw>)BMmFeVf=^&Y|6o2GFi5FN?zvZLA?)=-{UZq$?g#zn*L`-cC44)uzjc3;-_ldlp zz(OyurhdyuVa?e~STEVGvsgvt0_%K4Ol|&bb%C%p)m;|l%Vri>Q@`b%fS)z{=9{kx z>+X-%SgfLQfpy*?rUqMz?kAuDy!3%2i#6yMSX0;Koj~unuFQWS8pvE`fpy*?rUoxf zm65o%w_f3}iXIkNQ`hC4aLGGKSoiG}f0>XYUSOSfh^fKXHX~zRGJs zf8hHB^!lRY%Y+5id5xGFZ!dd{uy%DzzD!tPP2H8(g0E{2VLg0A@@2vT>%2xxjgQVW z5Z1L%^S_nBAtr})&qND*GwQwk5;lVtu)Z9Xdzp|zuh<@0Tlk{DI=>K8YrndF6|Con z=$GLA3rVfTNyN*A+)@@a(VeHQnb?9D76*@k-RB!$vmq=hlOaJq3vr!al!>(~whrL)>pmCdOEa-j z7g*;bU)JWU%X5G@RV?@BKZtk!akapj^;_P_le@qD%~xLl;)T~me(Z<_b%Ax>krf(j zK7AKJU%&c|{G0z^JyVadwa}S4o-^0{7FY*ON#6ViYrp>U!W^FCH08|;jh_QS zV|9`@|G}EQ;6jx`T+2H)2hU!d8v(fXcayyNkGm)+#{Mg?&Ow^;CSBVI_xfB(K)KZ`^`LnyG8_ie77 z-SAJZdgb2y$31Z2N==9tSmzo|d3(P6Y{Stm_vSx$uPh<1e{_eu^1|8N@c{nX8rTgS zkbLu>d)UE(hJ45N0_$((4o!JWoK?>NS=D3WZ~kNU=5Ca6tPkzlC$GP7Hg`PW?>}@Y lB>v_)b(^)RGlzo9NF7D*+AYV136O{~zCrhkF13 diff --git a/jni/love/extra/nsis/love.ico b/jni/love/extra/nsis/love.ico index 73403aedbeb599dc19f7df618793c7363da488eb..b703c98b8451cdbe08b3ecd31b42bb1f3e887684 100644 GIT binary patch literal 370070 zcmeEv2V4}__CLlXzPy%Kl2`uk_nygnsTNSM0rm!n*n7dmlBO{x(L`ebdsk4Ji1aS@ zh8?@uP2725A7>jIZ*Tei zZyMS3o{JgaALaMSd#~F}UEIj#6THW)@Eh6pc(Jj;eE;%0Sz_*0{A=-P^Vg2}+ICIb z)O_)k(B`ptjX4|Ce15c7OXv5R{_hPHuPDAcw%XmfAg1}{^2AR;RZ0(QmKr&?1?8i7 zhyCF1Uh;Y9pu88kn|i8zm(8yvzS)yq%bS13%_FF9MXwEguD`?tF{92wadcZIkDTaM zkQdXkUVfzspFT}o*aCaf#%4pGsyFey5_*?SNt1TNl`Ui8&W!@NS#}9BH+w*tQk!xj zn`O25^iz6wB>Ns+gZfm$?$w3x^2IA)|DHd62-$n5)XQW4>Xv=*oha`6I~JEfO-&8^ zs^a?c#dFBpJ+4k$E{8T>i|?Lg-w*0n4iE1#Z!S5SFmvf^FhhwR9f{qdbYW4g!9BX;~v*f;++Y#MkS!iV30 zd@dI8TD4yl;r2M-Zcpb^Uqw0#k{}s~|Oj|G!ZBsGDVH%GK(O>uP z?%OstrA=&XQW~R7X;k+&Rd@7^H$Iz!@6fv>XWqlq6%)xH<_`srHaR1EQ1ySpHl{z0 z=+ow-bw9T56*8;U(4e1N5B8eWs#_bo79Zemf5r5g>bLd(7G>XWw=8Kj_)K8S&ACx6 z%F7d*)v$7hy_P04f0iEBB0G6iiwLiYcJA`J=wB$lY1_QT8;5;cP0WdEQOK6V^ICH; zq{aD_-`b9){?exsb6t0Scx990NuK2?@T2s6&9U_@clGPmyam>ScQsbJU+5Xwr{ebZ zueU>4LUVO_^Zq_NvU$mmV_LZK;f-}3Ic_McpCBd}xqooxdfw$IwY|=JIQ~`79M_^R z)Z|ZJ{`xKaI`>w>*h`@Mq;ZY;dny$}Lm*bJ(B)$PMicr3ua8 z>_&Syvtt1~dT<-6EA!!4^mxdKu&XzYs_ToWdA8HJ{D@=y|HJYWG*>R0y^k1q1`Y)d zgz~)8b%wB-SFa%RR1}=v*q*7Mx^mg?5zl2UKmGI{Y#(6$i`X*MUDvx6L&&sLxcBR$ zI%RWjZj@)hiBLCQ^oa4Y`;yAX@@R}IQ&%p1zuv6`V!bcn82*x5oXXD+?p%jckwdiB z;Y?tQLr8qb;k}!1HqsqsN3Bl7_C0$oifex7!~cEs zH!ORC`tqwFVC-dh{6M|##3{DU$6FPda5=)E4rbW0+3U)wZ5*-eW$McJ!+y^^UR5Vw zU2bwyR%qnM?Mv-OW7+EUld(Ba^Qyki$+r&oe=UQY==yp#+x~-V?MNR9RoDLA%ggx| zrS`d;MD_CqoX=4CKI+Opv|hX3tF~bI4~0AWspWwq>spP)vcFeX{??h-v}LdH_g62T zL1BV=9^Agnp%a$fOP$NNTbLfJtHZXRuOs$V z^WZBDy!rg$btv1`S#95=3_i<_0a$jDy7KA!U2|{3<9l^wAJr*&$xTSxevfUg;#yt& z3nqwCXkldsIQ3=Se7uvsYOM?E6PJ$9acSK8*usRF&J1?{<8%1C zZ?LS!m}u^-kr#CRo%FXW{v!~J%@jPRp$>${-MW^c<@uV>K?U{Zwi@a{dci78HCpoJ z(@$gr7@@8#P2b~toiSa~vkp}E1Wfyk6Saba`rH^Y&dEn_3zY>njQ~oU0NE*8VfqY{!cOr)!|W88 zmBv3DcV5HvJ4}DW^lwb>%TrUl{u9&Nm|n-EF(09RqqwVJ1h zdOc~0!>F97mc_c%kMFb8jperNNKOX8>uzV*@fx#GCy z_rvG3T8XqEd^8vvbKJJK@N+ND3r0I~>dI-XzG3w1aeupg?OJ_GYd5%xq~G7Ne#adH z-LKxjv4a`UL;9CPdf+gl*PW%^rA@XMdOJ7kp-&rD4>)fh^b}iHb=U3R;2boec5O+y{$x)iTV`RL`e&5i(R9CSMXLy`|Nqn0fFO^G z1?uXo{QbdM{`L5X)*bU>Tf(uxHn7ug0PI@Z2`+`TuCtD(sh;Y7Lz~(2`Cr(5gKcV&!54a>T)<3{R15GYX`YV z59M`Lb@f&CeO5%vf;P6FkXl#o59>&4yZhAERSC!Ja~u0zg|zja*yk+f=MScb$ReXo|XN`%HCT>qdX*COJKy!HV2~p@c+WOw#tqj(VIf?5%k9pTo+k?edlHp8n8;xrM z$}~CTW1EEar@FtdtRtPL4P4y22(qJWdCR1(Mb)Pteey4?^Ehqwmi=A@tK8Dy*0qNQ ztaaV2a!&>GmPaM=Eg!gbY5gJA?OQ(e5A1UdqNZooEzrPs4}PtHG}M)pd0o{#`tv*+ z;o7np*8Mv^^{4g9l*lpz*SLOmX|Zm+>W}^tFUGjH_!R5@CBOQYLt3(-aa+IsIlIR5 z(($nWpN#C&`hQsW!TjovwB2{Jet`!5CSS?tP8ILacW86E-Lqqxzhm9o@Tot^&XkP} zUw72hT+&l>6T0x?pR7pR0+gR`Vcq|P=^39kM1E03Mf2tzhRZs@OJr8{`Q&EfvpyD^q+Nn>QB!^d{zOE@5+26HB?3C zpY9azhY}6*X(b%gY+Kf@8>jxg_|_liIk06$6+C^YexAZszVPgQcyvd5TOU@Phmxdr zy!f8lQ5f5z(sMv(#T*Rl-UL&HE^UbarV4JAK4q&~?^<~JAp{S&1_@Iu;o+~U+dx># z*n1x?1x(;wcdCDScq@P8eYX3VE7pA>|N6`43jHeK$hu#lGW!WUd-MvPJ$?mMxleJe z`Bw;XuT;z@!bVm?+SYq;@5T!tzubqnUqar|hmbVw2Kql&LD=AY^x<;h)dsS`9$eSS zwoc{o2J8M0OltiFG_{TD5R7dJ?qA8&N8Pg|gEtPub}?#4zBKz;?6eCx=h=OqcYos{dU?jGw-^7NP~+puY1F=U7IB|6lg?UV6|R99bB-(%g$ zul}Mb+YmJ}t)?Kd(_CzWUh7C$_jfRzGEp1ImiaR#z3R@=1m7neH4>8^wo(2zG0dMk z9^AqE!E7BGdd0j5(=^Yo#>6eh7@rSg8R+R?_&>~-<~xCyc+D5^IbGUUjL(n3q_E2x zz6G)zv5cmeXso`DNtZe*KTG2b?YS9;N$t9d5!*r7ARnRtOj(%t(B&>Zmx5_FrWTkQ zgik}Yjp~7k^bhhiqA{H88f2THy;`4RqIQ0aiP~(aVr>{_A+W(K<2+;o=&aO~?#Wq+ zt|{njL|1PtlCD&;myHej8llILjSW7IFWA_i{}FS=*U-}m_e#;ViH%Ju_llgILig+y zd)}Mwm9O-jG5(axVei@cuvg`Jv+ZH8Y%$A3oa1v5Nbf7jjF zVGusw36m`*@^yPlEbZY_53Db>`Q4r!?K=eh>@fG}x>h@~BJJ|gF8Q41*gR5AL2N7B zY}x8W;=A@wt#Qj{&HuMyW}6wQ!L5#y9hOI1`Sb_m zMA?<>TwxzR%+<~l%V~${9ZW(tPi=T1~`0u*ZZWi*SEf z-fOF;b#Nj7RpYf$yR4u+#Cuk?jz+%;+CThHA$p)?GrQj|azC;xeZxS5;k%)INWR2V zMzsDK`=BM!##sF@w)-!C_vxE?5cNce9G(RQk^I&~8rnWS@0TPrf3k6w!!m5Y6DEWE z9RK7I{y)FIMLE=VHYJQd0j2T$)|W^*iS4KH(qJ;dd%%v50{WJgvF+ww zcTP>hF-$+7Cj+!s<@kBn*I_IA33tUlXz<)|@sNH04(MA}%5Agq=Oc61s;q~x+Q%o~ zgFX&P*#3@~8tW?$7LVBT$H2a2SCrdZ@8117q^|m2bbXMtq|F9wKaGz%cfmBz`Hcel zm2RuoRu2BTzmdOVde8`+`ha|C8{)UAjSpx|XysJi}%~C|%mB?%4ygf*2lPX?`002osk%!|@%f;MtSB9)qdoh3eoV{jZS7jPU>~4$O7$PM}Xqqjgz6XTd&0S*IO^fHg(k2 zEWiR*ydbzg~a9o7UPMOgk0{yVrJLWJ$yOpjpkh{`MoW4-|3`+eC2$Zfa_q zw%>^7iS9mM9)t&Xo@i^5&cA1;Zi78Oj*KsNL*>EdMXiId{fd|l*tYiC+NbGv@G{psk3t1_}mlkZ(p6wv!=#*?7{6yX3ne+ z1}<#0qrHygi`SJ;dzGK@am|NI2O1V{%@Dnk8s(vv-30e~k`6%hcUEp2pL-hfujbx0 zL=zg6N9OKtwZ@L*;-39{F1XccIsR#Hy3TW6YX6Ng!|C|?c0%s{pK%Yr?&}YygX|Au z`$_&&OiP{H@9S0o*Yb_G=Y?;7ofU-nSMb;h=kPo&N=fcCwej&7KZN1t}nJ1?GK zY|F%sdg(p|v3A!H`wANvw*5nW+E4EU_Ai5*C5E?mXzQ2qW3%*Wpw~yMA*XYCrnrJ^gt?&w6VB*bdsWuColNeWwaSM^-@5S?xLz z?ORNoMtkZiA+YaN$Vk@S2aoT+gydy6;n>3YdSRZWJ+8qK?<fydXQjCUhkB#q4U>x1<`j{d5z82VT>-kCOT!dSVsq znU8B9i*7;U6wIe@-M*swZ5mjDd$2ro?gNzj*&W)nQ5$y-^QL{@23Z3#R6nZACu(Fm z6h`Yd{-uR?7^9B%?Dtrnhq^Mw_I={Sqv(Ie&;C&qXP5TVSHl~#?NoQgHWCh!#nx7J z_1XP>JmNr`4X{}a#<139pC!f5(0NXzu8zk3KE->5Mp;1nd)3if-S=4MuZ>-AL*-8~ zJkPJ0qOuRrXS^UQy2~HbwNu^qSU18!qM_<&?0hH&Xy%3?%6;${X>YHtjoQA)I{zNi zWnc_|n#X`W@>=v7|~2RYzmz6aU$1_8fy5eA>t78Labv zF_jv-?uN>L>({&I@oASX&tTpDgNgQnHeilm^ml3B?Dx8~OP6OcZ(1+fE7Cr=gZ1*z zr9JvQi)E0GJPXrvOk&}M(^!}P>eC*5-@)?iFr77VAKb_CzsICiuhqAmn%={5i5JFV zGMLXK=EaAni1)}}OOQQJn)-l#!+Oy9Bh(KUF!8CszRwW7*JFBLTb)exJJ!t}(;7@A znDlKY_dSX|K=ZNBF!Avt^k2V$xZ6 zXX_xgE4GE!+GxFz;zQ87b5~5{e?YMrXwE74{${kZ-+h}gwle_)=oaHF&=)BbpaK7= z7xBUbBIp7j3&_AcMiB_0lzzttQ|O9k#CX${3Hv}-FXlD8GVvTRvV;8El*z`%rYRH8 zL3V}>J>R4h|KVSgQv8R1O-k_}{xwcvE{ba-Z`r-JtL&+U|JPPdqZC;g%JpngD*Imf zN@wfP-`i|I$ggbw(3v~*$M&C$42u3``D`|3>{gzvUG-0 zA~T)mgHJHAG8AzlFk*zM<3v!Eq(7+#gz5oW55)8qCW=M!4^02T^j}OAcj6;XqBD)& z$Mk=g{*H;xo@#eSH2xScK@G>{1efhafPAN%?+XQ=mybSsC9mlagE%bHg-${}n-kr>XwRzlkzWq)PO+OXW40(Kbc<}_x%Plx!TxYlo6FTDO zzZt5}EFmB457OgXjvLr%T#CQrP8`#pnwoZoET3Xzp4#A;JYh)Z@f<#I#LreeE@1n~ zHq+FjhvVSG>z%inN|!Svtu^I^eDLCAkkj7beVkc&K=THQ2ixFyX67abu+4vHZEM?Q z+ltP?s7pW4)Nhvd8=ejEBzbMe7^k)lgRviIT%hS#Lwd5g(8<{KJRj2G_#hX@ zF>*d2S?~{iuqEbquuXrP?6G8Oc63Kk&fkqqV{Q2t<6L3G?5>OCJV5fGIi@;$*~Cm= zb#=ow*kEksj}{HskG>*RFSmcU>lL2uBw=4o%={C9&ifqO*t2>8#X>jR@c`@onn%|$ zoqYOd(3vj^-={~c~>8gSca-!{vz8vaA=Od6D=!xl%>hLAj@3GErjPEsnSU|rL zmFMG~S>-L!UIp#haRSGK`##gV%#rheD_-9bE3K95g>`N6Q@_w}gFGr8a&gc7ys`f^ zxDqs8;sFgjKzHmnG8Blw-) z&Emouuls$w#J~UE2Q(Ity-2in0<2q;#Y2*pqn=0mRTSgBrq3~+m!UXLxBb4>$OFd% zI`01X!%zCjc|dEtYc3{*_>A>>WBJe{t2EJC-EUhbAI7-i{PsIrBkkEXp9*qL=J0@M zYy?RA#>51a_>xc7tqenevd`4*V;oGg+nSO=SBLl6C^ zi_BNY4=0u_lX!p!4;)(GISKonc!1^wCiOR4GBkNOA6-u!&AHzPdteM0|H%>$@Zf=M zE4l^Cd4PPJP2y*U=LogeG{@u8mhb1#!KIKL)?eZQEj&PH00qqIHeb#Iv~DDXnx`mZ z(fHVZ2KFnx%9pOXJQp=O3kqYpN<5&22Qc3IqiJKDzmfC62MXdC`2(Jz)!4s(;Za>^ zs_V0xzdVUC-5iX<19Z*;oykN=c2<|RI78actYq~wp|5!{_T^oj+73k?Alty7j7)ka zd%q#s4bt`b^1_~!tY|yPh-`)DmDxc-TubJAp=oER@=`ZC9hJ*~ z?s#o%OdeP_{0i=CuF~sV0lswSK9{n{#~?gFI4_86!O;91o=s@K(f9N zhA@sW? z@pcc#_ILgad4R?NMGRm=@m*6ND~whxF4s zFox|b3Zek7UcG`Vr?x@pqCO}OoM78ZN0brm7+FE*)5&Ckc=bPJUJCQ-yh6?cO$~*8 zq+8=4_iNhE3+B1zqc0!Ck3WZJLbTV&1B6+^{AE0U_C!!S*n_e?24#Kl+)i*fX$3rf zs5&O|qx*N@P{I-j@#@IPh-8!%r-Iu;I_ik|n4h`Gg2K4gx4Jko^8xZBR2vgm7v2c; zxH?5&ni=}No!{?5`qz&W&W`h>&&x310cE-)graPZTRRr66=yPd*Y>ZX=nBNG84VFA zE4JZzrKB&A-e698!2w_A1i1|OSQk30dKT&THrjV@8Jdm_$?ve2>pc|$J?JYsMzoa3wGRnJnF8$fna~T>GqpnV8rLej^oxjcKbAA({`dXnjxNH3V zW<>#PUjI2npkA^xDKuRo;SJE-%i_2DuKZF%Yt z8~azl#lX+-?ATV!S!tx($KhNq#H$OO*&hmYj-Da@NOqjw7mVXbXFTUyHb)?PK{k#v zq#KG6|5PW8kNxti5nX97I;|1vr3WDG^*%eqn7k3>Rtf%n${}FLWjO5H7j~_2WOVnK zRl}jG%s6NFRhDEz?5d#gCW^hw%a2Q_ z=jdz|I-7Q_Yc?!#IRlFaM?=Wm9&jLTAw1RLEOvcl!;?o3V1JAkGmqRR9}g~v%jO4S zv>TEhFvQJyEYhFWh;%uYaa1Dcl_Q?Bch_r*}hQ}QuD>)rvR$)7Pj)lM7Z>xC@s zm%Cg5uigjXr(Ow=9CNuLdTti~#hhnf5QT!SA?v5jo2NY+c zsv8TC?&C~Pdl~N6xfQ~4*NZT(*8!O6l8E#0JfqRi5E*Bl*#S|DIx#$OcB5=85Q`j$ z@^NOzj^n^gAG9B;i_F|1_9`$I6RPZC@{Sz>g$8M1)F^c09* z+?BBt(OOh4+NVuDFQAxe@_0j^YM_5#Q(~WNJL_?Nzsfb8(er1zBq8pL4M`fo^2)n( z5Z9eMF>6N`as80&1E#hSt@*Jh?I%}zUMAAs$5iyEv!?yr${5?u!rsT==Uz#0dat<0 zdu_~=d1gEMnK?85C*)fuTRSwJU)dqwHc3c-+DER^M-*wFX&U;=^u4vNxr|-!mtH$y zU!*wod~GyW{{7tkV8#z21^rFQ-`JFEMp;o#xpEz#-o8PkJDmYY=QL@w!x`iE037p4 z*I(vx4(9aQ4UvmaD0ib--ye#b!}yYrKN0znm`Wd{d0^Yttp_3xysxYSAYFSJgSOi8 zl*xVBnD5>D5UiTC7uRug^VbkNb3DU!sqOxwVK1&5Uf3kl1x)2%ykN4+bfmwX3i{L8 zmnOjeRiL%JMZHhJT#xN=yhV8g+dJRse%1rlVLxu7m|N6%?EU`;~V1H^hoE+NPqGP zQLF_a-Rbh~+_*>ge}x@uyE8t7d8h{nJr@`^xYszOzaoYh(q2%z zZ(yGa@Nvxpvh(fQkgnW4R&jqZ*#{2ezBIB43B5Kj=PTFmkpAznIv~>DQz-n?e4k|h zD%UIE<(dq)Dj!${y_Fkz_hvb+6FUK|4G66V`p)P%59zOP2u0d|Cmj9db3WAjHvV)< zxm&F2{%G`M*%%N@V}Njbih^f%U5fPoh=c!`LeW1E^?vf_TI6yP&Lx*v6}^=kTX1m) z(7FJ{A`x;P5HZhrtrGpcgrYzBcC2;Hfd#Hd;O?zQ%3Wer_YZDgXJQVJJy1wLp|}O@ z{Y^!GcHZYZ@uXGJT3ut0ZW;<{;r2KW6wVf8YWkDzm$>wbx-PM*@6Yd;&FozjQU{dN zpR51P5k~&YY`!a9FT?S8^YrU6G;`*k4q^6=Pz*9d*mwEl5$)~di}Ig4{}X7hm(0h9 zeETjQs4#R_nq_`vmv_QB+)ped{X^z-p%^j$kE8!j5CZ?Qxqlh@c3y^z<5gx!FGE+l zBI_XH-(FDq`~BR5&K%_0e+LLbe=37~{8r-lpK;>4p}W#7^ShRPm>K^m-WVU*ZHQ+U zPH`n45bpYqqfqph>HisU`LKk4V%Um|y^Q`(F$xVqTRwSA9^*=9i*eU~n+ipLcK&~6 z%QdsatD!4hb|D;up8t1q?$D1N`{|0bZ;VOnc}<4k5!&D3>skQ2Ru>q$E6p;$oC98h z+W!jU?C&D>>+JzR+7=mtzS{C&*M393;TMn1EQzW^rPJa^;NB47?El%(PI*ZGR$Tnc zWq@G&{umvgPX;`=^HhhPvb;y1+`onK#2lFT#C*nWLp*aX#OW~7Ut#-U`2cZ?=e7ys z|4U<7?ITN>1$hF^fKlSiJ`YUvQ4*fqAivCm%GY@dfg^Jw!+PcXif4^ISHW2jvDaIJ( zhLG!g^B6O*XJ3})+$++Ae1NNk;sJKAZ_+<nEV8Gnv^FEF|{P_qPhMul9Thr2ST* z=uhR43?N^S!V8wU=SQ93`nC9kJT8Q=dx29oIvzs$t35XqX(E^(n2gV8J@6`od{zKY z9~mZItGYfH%lFTp+=r}0cftL>X?%#D@3aQ#uX67(N&*}z0j(2zGj`^xSBTWR4`$#^46!+uY7R#OwR$hu=Y&}BG_gLEJ zM7J+S?7ydq=G^a){;P$S0aPBv09fx{1X)LJ8x?=t%&+F&5cl?i z@AF`3PgkFxJw|eIuI@9^gXV#Pp7B=8169Dpcy=#=)Xm0=>w7ipAp{I8#u)Nt5HPq9 zZ4eKQ#&1=Z!jSf+jRBVz+x9AAU*Yegj`r;LNDo2I_pGIRU3o*c0n!QgEU$zo4__LT zHsu))A!tYmGxsDrB+WqshZe)tY{UAZKYs86b}y-dLyMLP>f6u7Jp1|3I>%6?zs9(a zEbZxvbol_2Nn!!9JV87_vl zxLK;-KH+;epTn+2vVDg%->lyj8h1$Ml);{*RdByrzxYEpN}j+DFFKo~jG5QcK6ff> z)8I154jo_;9=IItcn-1u79W~(pTTIIxU)pQVSodeeA7`bW^9ayYi38g7+qU!Q*Yyao!-K0vzTSb}HL1iD>Q z!C%)QYE-sK&a~gQ(q$5tu6#dZAJG{Q`Re-0G~W|_t}$|T!_acrKCcqaMBIjq1NR{J z#C^y)b|2Dq-i5>Ksv+vDtIR%Q89ih;-w zQvSVeG*?}JDx+>W^~=z$oZT~$1f&1)z%H|tX{yUT_Q{)=%2oG`sm22HFZbxebw=j_ zJon}L2e(&=G}_QidE9?!JzU@#s)o&V$@_g;-O(Nmw_uy2}UdTxq7vh*@{OxuI>Z}|Q% zitl|oWPq(c^yTvo(qW;c)528kJLDDIU>T4T6=0BOs12uSt!+4=+%eNe)>pY3Jy3v+ze}xVyh3v3? zEDucQOB11=!}bUkLxOMLS;}*fqcdIpWUp&G7jeu2ei%)$&N<)bG`Un zLeRYdANY?=t2Keq8*OoE>^E@Ga0g?01A^n0OcVaoEb zy>6JS-LL#S_Cb47(!rEvW7}ze(F{ztF`1*x*0;{2+tZmVy!Ygrl1|1h8~fqUn3iI? zk4fJ?HHY_TF8m9o-x|A5%`t!Mm%m{0#$;(WgGy`@`OI0>7_To6Vn4lwX%ePOn9Kp! z>gt$^^&f{xYuqh;`^wVa!@g^a$sd!s$b_3%*L9feEuA((wh#N0_My6B+JLDFlRC_q z;(Mx3FeVpFZwT2h)>szyG5H_2!bIzgyD{CtBqZHQPu+)!&P}(+B)I>rHPT&Oo3Z~X zR?VlF#$Z~7X%D7iObtELitMqanD%2@gXuF&%`vHsp{%Zs()Ysm0MQ9kQ%oH&k)P^# zOy6Oejme9XXioM$Ci;CKCMQg^ZY9Zb;mIbIC}0n$38H3WQ|E_L8=J=ZR9Wq+4v zn8M!6GxS#6dr=08?BxY0vbT{Hpvc}vR%52IvMiV;mnyQ8^-)UgeIv@>yY`-`0QcSt zf9L#6eafj0Qz1@umHcly`#R0V4pF*qqI_RkxBgAE+&5PGy>W_7 zoxg_OH}bBNosG5KH&$wYL;F+t{U#}O`?pD{ZuiRkr0u?`62B?)ukyVz|0~~nDd9sI zUvKdOvixO66i$VjQhuBYbfJ4r1-$5(-Rb(j7PSK@`@lamlF6{HNE|J%UzGS+9X}s(a=7lb@&&+@Cy5lvqk@G9} z<0sUcG<(IBs75yL(H;K1Zu1w69z}`$!*?hPDM@`G@qokw5)Vi`An}020}>BNJRtFa z!~+r!m;n#qIUtQO{Q=Y8F#QM9hnQMoa=_$>sWYbTn0jM!#pIzO(eIRcVd{#>8B;q< z_L!Ps`X8o$Vfrhk-(jK&ti&f$A4oi4WFA1Q{RR_ZoG{oL6Je7utqIS@{;e;T-vd(z zOeAyO$3(K>4M{FYa#7*|{dfTJ(*)B$FnxlF#&8;wjg4hP=TACBdrTi=BDwXZ#1H!M zgVb-9-EW8u!aM2JtuWDe${UM4x^x`;!=zyoSI-(dBVvi?k{v#y0}l9)h&Z}o*yd9q z19zu}_B(Phyw6!mm%?4or$_e8VAJJ@-f8S_=R!S>Vx0NpV;hES!S^FEpTM{kV^{jk z9sA4dDI>pf@7-;vF7;CLEX_lxjsM2<8;P$io3ADMs-`dU{%e?MOl*#c=GhwYPS{&D zbL@{vtH=5t2^yAwSUr{*)iobuh2H0$3v2Ap#qqXJvZFheqZ~;+9z1x*F5l5X!Sg-6 zrhGo+b8T%<^E=4{J4~eOye{#JYJQRW#r*pP`TGq_G{(2V)CZGF%#R-IK5F9vPw&Hl z!{TUc&Wm-tj<~KdHntm@e^H#>qx8rgnW%H@*}7(o-@+e8Pql5)vcI}^s`%a=zau-s ze=)r!@x1x-ytUI1`Is36@1wr(6z3Y5 zDI11v30>s5U{K%Q!&UWxn(sQ|_hjpoWPy=w%hrxlL$)9JwGpOwG0~b?JXD5Y6TL2PY&pQ@Pxb_w1G^ zJ;_t@Yasb5`5s8Jz@)N(cn}lW@o1f^4(8`i8$AW*@Uhv^ol9AMm#&|(=Uu40W=3_( zBRM&B{Lt~r{i))f)=6l7AgwD(azIcyfIRm)CbCnJ{aS(h2_yTD-LrnwCd7QPgmukW z*VaEI3wEs=9Zd5jZXc`oOgaIrDgM!r^EfFl$^NL!1IS}g!zN<_(>0ZKeLwEprihOUI zV^XZ!P5x}~=d>1&Yw&j^OzVbeefz5*uFW0la~}Q%wC91=S|uBSG&j(DZh-tlxVObb zIwmvj_|6$S^L$v}lhRl(4CYnI3hH~*3C;v~dCvLpe;@T@X`|vwzE%Hdi0qf%wLaYe zd4|^QKf%P{zS$?u`k^oE3Ta+%I?St*1N0rzq$Gaj*wyx}T4|aabdltM_2F1o*^NB% z8YZ&qxnS}jp4z;6j1T(dRH)-W>3ea=guK}H)o6PS(Xvm$8R_~bUHL+K-tuJ!^2Ptd z#O%FsYS(t)cHBpUJat3Dw>a?4mkzWig4SSYUlhr3HHmx(ekfZ1!$fvt z57P5Vmqfoj3HPX5^TnJPpF>;W?LF&9Z`2?MXl_S)lPPAW-ZmoXUGwZaqB|zV9H0DA zv!c5ciIJD3I_WQq@?+aoZ(cQaEy;GIw<>*rbUw*OXhkv*=}rEljIO`%`_bRxKKRQL z#`MRSIrJUb34`W)&Q&7=NG`O)B*i4KU^#&FCBHq|Z|*U`t>^F)8wc-{*6}PG_sX&< zEyDFY?Z+Sq5Ta3arp$L-u+IT|x-TGt$#a^MfOKRi*#cPuG7@C=UK$`szlRJ(1w3kf6we{gz z7n-Brz&-NuR3if@ro%hRPnET0*1Km{V z0(92FhnS>2MIzM&kT!2)>hbxoZ$97f*~N_PD34!tp}q91BrAvq&}ZOR@&`d)Qe_t) zUomMuATk+%H2FVF?h7VFE)DEk{$N9&>k#=_4iv_Ac`D&r!nHm;KrznA7hHuLp!oou z?JfBYnz#>;4rJeN-l2`tKp)Rjy9oE(lsNSqlq9s0;&Pa|Kd(OcHN-n~&H|mUqCy5x zEQo(eGQe~)5c{9}dD@R3Hf6m3klcJO?zx|L&rUXLUv@+Av6P4YIuM?1@GunP52=s= zG(R98a>*tjupWSY{uZV#vp@IyCBUQX9vAPbJ|A5kF3A8%2WSuvP~37gXPVF&p|p=k zAQ^yt{YOl_R*v7ZG0460l`6c~`_8=z&iOBC5dEbwRR1y5Qu>bkht-^8La_xTyP%O} z0QT`aj%}Sie8;BluZMA^xxe!7A%m_$X6Uz)43PAI2Jt{{j8nzTZ$^BDyr{fB&<($n z{DzGr1F&!ZF{sb5;eNxj(v`8z_da55J`_X`X%PJ_Wh|50p}#&uHUWx1s6qzx#_yz9 zm1@teutq#+=e!pYp;RexO8awqLJ1wp6lKn@7tB?V-m-sKz`e4J>2MPPL zKKGp&*!SuqT`{ih`Gbq&B^e;;00!X!j3u#KMJ#gi5s>x`=&1(~_Pr*A%n$5a@k|?* z_4*yx1kS8mV-WgV+L$J_M|b_^Txh?eD%J-{21t5_77-gf9tlzxGluY-?Ey zVDsGAzXGm=%#dV&qz4#;2WbD03ZG$`3;bD{3-Fr@U|;=f@r3wQxVB%z;?$Veuu(;j z7d6@-^q0m>-N#K!>oYtHGF6QXkZgil^Z>;E-WVqqx&e zBpFaw29R7_Fd^K_*z*}t_^S4R(mvjJw@c_maOHpAHr1Obimt=rU24G*jIcI#p zG^5%1dD;S5nQ(GVfWhc5jhniUo0isRXEqHusA6r9;)q!NzCrAR*M9zd)n~?7-)Hfx z>owTp8eH5kSCRpe9$+vYpm^iR>&p8DT3EXdFm0@NpMZX)2J`FF73=Dr-!!xoa>6GV zjQ*B3rb+G5U9Z{UGdfU(3}|YtGGO9}@9g~t6_l&PpsBx)8lMeCvF?%#kn{k9@Bp4Q zRTHtqbBU4+ptzz|=OZ|*-XNA?drbP@2%jAoQ2UOx?#!OY5`Zc-yB- zrjPkfNe0lmpw*l`h;99?@0fG@gu-w`%h@w`uY`X|2QU~9l%tlq2Etg5oR#@TiTc=wMTcohR&qv2W>G((Az6rczcImio zXH=Qcw-U|=ERtk^qz4#`2hMKle^3ekv_9}pOO*lh#s@oKtj@be#iG_6zv(ZWQy{oGVAIJTUL+pRgwX&cyDpGfN7rd|L8wBFV9@D&(=G_GY<-4 z2AP!%AiS3(G=rk}<|d%jSZSI&?uK&(iheVBk!ZM3{!g*FyD@c!Q4VS}PL0XtR;pa^Jo@4>Z26~?K1dhp2w$*A#=Y!yd*|+IN|F0xiK=_Ux~1Ti=nOI z?8Y{5azk4<9@Gv_;PrHHTR6ALfsqF!8V2uw=sK#(qO{E}A>e z)z%;5hn-!&N)$4Hi+dW&3Co203yAwOi2GxK?cm`0_OREd1MFEVOZ$Bt;fQ~GIDzsY zHAE%{NFN}%LGuOD2c$WHa5A7M-tN(N6NXMu(gXf$uJeF(qc1L1iyb4{>4hwFigkg5Pm*Ktx>{`NbcA@sedI!C2=#V?ka^Cq$;%1C@pJSdN7%gF z33jY@g#EtlAtj(a&J!FM`H_zL19wg!=>o#YfL-fG2XpXGJ^_yAqyr!hU&nntS*F6H zDawug@(RWe>n@lKP>lI_CaCrk9!23OdUUTypjwso3qCKhG#A^ z1qMxB=C&Efj2=IX9rH;qXYG45=AXm)JI&({$;W)ca?B#!4(FsTnke)zuf_-QkIEuQ!>EJeu4S{S4k}e<&{>kooIimMPCH(iod(odU zjP|~dQ15?gYAl+n`~wSysUy?09>99ATSW*C#B~*iPep(A?f| za#skvc>a`yzT*1y@gq34JrJMi2|;sY^Mc5QPRyKu^aq*~kPU(61hj6L871=>VC{pF zUBGxUAz|g%HA*tz6C|9Cm=m7Qcgj@Q6HB=#*ZLb&25@zKRrWp7^=bZ2w!J8v8FqxshF`B&DDbZCLv>{tY~An^_@lg_c|!Pnnf{Qp+)?eEK=K(d9`;EGD2!`; zf8;>7Q5+dSJ^`Y&1>&54tXME;%6bI%y9SqnXB$KYu-LC%)3aCD_h`)D=i|iK_hJ{z z=J>&LotZH|V%aFjzj9I?+|_=cbKxk2FBzhk6Ohf28 zE?_)4a4KZrZVvv*7T6YvCpsMf@%9Jw^SNnC+=;2|(BUPJ6ER+I8Nkl-$>v5FBdpOp zpVsM*1=ia4$aWuv`Z|sIG>;FO+Y3(Y3|6V@s|CH%4>Tu8*}5L{>c;2-WIK#q?99j+ znq#o`L0V_H5@9dd1&p{S5@QCvnm=vy6eSrTy7R>R2Nd~=34da!OZ0>+D2j8{Sq89U zKH2!Vemv|vpIy_VF`x8w8uLkSPx7Az)z?au(5(OM_3}bUT>lNDPtclS_i2tz>u+`E z`L%0${=amD-Ckc5Ln419Nf*#>tXC%&3gX(_?$M>= zV2%thsSben>L)6UiF{8{$lx-_3jdms0SbK|$4A!2NA`5C44&f-|X`n6~@6o ztp}RK4uH6CglBe%K7PO0B`BS z5Q1w2wYEXoJ_1^^VCMsA@_oguZBWt!^pge2{v#rkbbz;olmUpdM(E>z#T@V^mO2Kx zRRUq(zfU>%xs^iv^c{>39c$mGHGQs)kJk0JZTJyxS6>$?;_FxI*Xvhdi~m%a|1dKj zaANi&)cOj@_7ISbla&Ev`_wk(Nx#>X6KDsxqhtqg5E%a+V!@R;)Pt}e;8ww4f4y4? z__*c6D%T8%{bfC~c1FInWIrQ)pM39w=5~kF12OdhW+va9-Wv)V=5=NK6Ua75a*gC0 ztz*)BppNgbe0@N|cwLNZ>kp;106IfZu$bZK>vPN;a3_X3(wI-!r!jw>YZ3Uk=E6#s zE3m}nEG%?MflaffqrUIN#O0tpJCVyrLq$=RnIK(#HA{2TAadDo#y63Cm6$yQw4V^? z0~CKy<~uCgQ!Lp8bi+Q$2J#26ZPBtnXCCk|Qp4zW0K`-qG2qG^>JWt359}kuzOP#W ztZ~bN6|QNp*yS{M_dX1>d+ml5hA@UJ$d~a|H+g6d%CoX9ghdV$A`2rmQ1_d(K?n7xn$su9>jh z^&*b@g#Ckv{ax^L&&}{d_h^_kC^3uW^RMptL-7#o)lKdz;3Ss;vb}_CTmi`@ zpt~%{i0YBU!9T498ujcj#MHkry)-4Z%%SW6x2p;}AC3DA_FXQ(qTVMF`-fn5&s{L1 zMtBMKIbOM;^8O8#In(Amt`V{}0kVN|Z35&cAlU`^$pfXcgNzy{ z5V5z)9PnqVI?C*PGVHT+eX{c{bvXwMd#Av>-pMel=XS(?JcIp!Uy|Ye-N$B%Xx*z# zeuLYBen6XmEao7^CY1RM%Hj=@44^oMO+WF@9J_>Vs?SYv+x4`rsaqvUW2-qHysyl!zgS3a}M35}zC>v9NWPr4nShEbkSfNjq{DD3|HZiyz5b-x!>=-mv{p#5G z-3noiYc@02Cp+JKmm`dwkLLP6_K1O>`$fa~lmZJuvi{A;O5G2e=DR3t0u-a1d>`3Z zgS2;m{Gz4ULYnbU_CSmmzJa3ybTtzG51R^KVlJ0m+h^DJ2>UBsFTvv8r*Pbt+4yC4 zz9^XQxf#lfZt4#j3w!fgaW-QUpg0E67*l{`0G&_7T^nFz0O|qk-T|)tTly@M4cXD1 zi#YfvJD@@R0TF-y6*C4+Rku3W$8n!@e%booDVd#5ZsY&Hdlamhwj1ud&!7K&QKH;e3o!E-w@e$eDENP7s$XPEX8Qyet%5nyEi*##vz zP%8)WW82+QIycZDXNM!cdYA%ZVl7iy=O>@Oy z+@FWz{_I{m8J+*d3R@GpK$jMk*}b#43KnyS{ZOUWZ+&7 z{<|QB8e{`Ne7%OLQfQosu{`qWRqW&8tnrag-@IP?6@ERl2E;vJ8!%A{4$~c4T zgS{1c06Q08{Ds-ILHW9XBm-nJ0OtU=mF55qIx7fqD8=@~m}2#GerAm?4QSk_`ToqF zTN%HeIYZ;2Fw63Nd4&=|w1+Tkk$XLR0BaLu{R5Yn#afhiX%YwfPLg6r0@^0WA+P3dxm5>KyHjv1qc7G_*t(#!H7kB zvEfnZ`jEYku+PNoQN-;)pI*kVkM{5-fcK~*xK?`0h}?FT|E9uyNEg{%u< zpN-qY#_C(@dQP^N2lwv()H4xg4@`i9Ov%tk_(B&(25iCo0{d~#5XBe1 z6jpm4xwZQVUkGzQ$-#d+>^PllfQU8P>-$7V%!#EecFxcE_PJ8*jtp3a`}Y^%{{1<< zcQfPuOpiFoxpY-%)|bkY_ds#xSqNLu9is890opr!aD4|nCs7txG>i5OTDd*2D9-La zXC2T*5ByuL&mXJzuVZcfIlOF1<5)3~qL(}Q#V1-)f4`zUtL(n&ku;e)4w@Uv8i z?ma+pMH5z!f*6b;MCYX+^6S9t8K%8LRA{MFb&om=)ko;`8q!{=kFBQ?KlrOjPn3?O_0tMpfy2jvIV9^xLn|j{~v0@KjQ6eOf|;F zofz`x?(3s7IhnYf?4G_}TVdH3JK@>W7bf9hsZjlUfX+`$TsxYX2QYC&@tnbPn;aDD z0oJrXATPE(*9K_M1OHB9z@`v&P>lWP=R@anG4_5YR{t)T)i)8!3U2DpgwmTP?SZQW z=@7lR8xv2Q&K03E$0>dwtp`|}4lu;SWrSP@(7FbIxcf{9?3ucZI&1yR*nbJn;+EuBd+ml=7cL0I~%#zQJ-^pf%_K$AX7!<>3DhTJWE3N^A;IHjVv+eOm8ZPPxL!$AkLGr5lasoOIoS01+uXM*!4hb&;c%n_c_hM|KHT%AF=m3CX4p_ zB|l%**N67^$j1H@X6#=uYCAlBDEat_1-FK(2l)oZuk=vp0J1a1>=f~WEL{i4itfTa z8}L6G@c+IL?ZKWq1+xE^Hlr?KA~$NpKpw!x+2C5B`- zDK8QBK<>F@=3LQzY`ie}T7Wh91I(K`>Ki%!)%pM-Hh(lFK8;;AyXHr}el+iAWBRQ6 zN?Pv|AzY18r5%3bfb|C;9f14+tYL4U|2)rM@L`fdxKb?K-wS7?hCMFJ7C<3u`A^G@2mm;7Q63{)%|^4 zN%v1@&hDAlD;buLm&Se(!qjM0qF5o@eTM+;3!t+DSbrc(p9Ab#H+q8{|J^j;f48Z| zXJeMjwfnKUKkM&vC?U&eye4HV&K|gQFtpBEpf$_^js^|gEXRLO4fsE4OdOgjZ&kWK z#q^uke|TFo5bY-qp3a{Rk%z<;GNacHW% z+4w$mj?YThG-jV4`TA#^Ef+P9N|iHS4-{TL%FF@C7l2}fS-L+k`T(DiRFU5>)S;d`N`#(4ZCz&{vs z95zMX+_^u+^k3|98s_#+h6_iEjm}?E0pjj~ywp8RoM74$$c+tTi8?@bbmwAg#Xq~> zhtBg^Ph^-^p<^FXKZ zYk79tQs%56+6$0w!8Sn7_^{%i98wK)7!tS{M_p0xIN4(7WZhL_K!Gd%==mRS_>_`zMdA8=d74>&hQ zc0Pcm;XgB~Tdv&x-yI2~ZvXECcHFdtE3N%;@lWUatsHaQEcjBYq;NfOz~7ZQAH)BazJ^8aP`{nU>CsSq&rjBt!4m1Gt@kP>iB=a ze?){F|4orB>c)S6OTj(c4(|Ft?fs2gdc{n*QmUprb4|~>El((e+3xz9lDd$|`kIZ=>tp9Iug5~-DgfH=2EXTjv z^FI;uUs?+8*>&NU^({cTIZ zKDC3!f36LH)&SB^Tr&gCl&UC150s@PGq!)$_GgKEe>0+bWXtjYktXcZZ-^O-@&P0n zpuoR82GD`<0wGvSD#HwVAp4M?#mE0X7wU0Tj{koW#x*6xOFUu5k`n0v%p5>|?svqj zbTi;gsft4Mz{P~GE&dF^!-2!%<@o=-ChXI1i2He#gneoYyAP1!08t!}RRb=-vnNsv z03q-t<}#i=z7MB2Izu|f{j-Hh1-&!0Vp)UaN7?vFjA`&**jpYWd><5VG^`~OE9_SxSN`{ykU|I{8v z2f)1mzHSAKFJSty>&9d;DQ^+?KzZ8UTD!l6#{4DxbK-vdk;S*RD`F+c67kRK08Bg( zJPR;(ZjOjKRH~XWd*I5JDHgrom#|MM*?&Yhj{kiyX|?^aasjbF$rABTZQ|MiSGlD_ zMgCo5vYC{(2z%gG@g-)>kJ;~oc0Wti{R#g8UY@fN`%Wyj`CJhv7Pk+8m1kTXfc69@ zEy))lhe}m4W)EcV`dKmWx5QZg?AVXjntrZ5h9Ukx=7W3o8N>?N03WiLv9v4e4@h=^ zHSQU3y;Rx{U`)J;Dev1?v*2Qw12B92EPU+GiRoC5*!RHnR~FlRuZa1BmWF$_J?vT_ ztp!kAfX#~~e_%0T)R=Y2+A*Cu=Px(L7A$=12aNf72(eFoKdx`-Fe_c^|!$F|ErzV&n%F zCzg7xHxKwS7al*9CIW^yYjP$`DT`i zdv3c(2cUC;DNZQu58SrA#B>ZRm2A)+$lEguGNNkF^{|GqAMsz~Im}}W;$Lm7f9zzf zdx7W~#7Q|9E0+41od>Wo;CP%ABg~*cG(l#iCpR$Tem;)-)-dO%ai3CVRJUBjKKcAM z=8JQ6&mrCeEfw?1?P6sB*#mvub0O=bv?gc**cznBs>}mu?{mQYZ?biMOZM?)anD}y ztgk4M+m!9x>8W87G!{&-wjZ@Q`hYeO|GC z)ZtzEd&IYgC1PA#n^+k@_JDw4g-~$ej&K8+kxIIC?J)$7$z#?zXz#;@&-38!jVDGb zO}K2U^G`rlOee*B-`d7~R`*~2)0poO|LU$>{C0)-+`5D zzUcE1JInlJK+UUHPgh>7#B^^70BnCCu+SZU7(FP8cY z*GGtag|{v$gGcwx!%vW~AN^x7gMGq0&1PQLezIS zcftB{vCp=b+a{V9#7r-S2Z${({}o=m3n8BuGjpR1(TRW;Pix@t#wzf0FOgv%_ij>~HVrL>?C>uXYhWxUtm(RK?HE7Ae}nyfl`+q~ zN8b56rst}7$lAW+j+=y;uy2Z>=#qHW(k||)2LFMD3Y?JK(nKSf43MpPl3ep2TnLvB zipT#kKlLtzPLkoC)nlm6Y?~s-p|4hKU#pY>#qqXJ2KDXT*BEv`F8=8=_ID!N=hlAZ zj+=y;b$tq9=gO<_E3UDb>hE6lbJ)7DoEh_}PBdRpH|{Ibk7NW_u92N%=ZdQ)oe$hB zdkj04%3?J5_bF4fN0mHFoO&MT0d1^K2AtV6;2>iEJ!PyK;~sgYyE5Nc`#p;p)}HRy zuNV#lT?4|RP=6G=D0SOS2pV2HMpC_0;Y1s~l-mr;ty=|@Hr z17vr&a^P18`?5@}jZYuCaCHGzu0>2Pg^a_$8dVNl%YO)aR^xf?{m@=1*I)SHp4-Nw z%Ok8t2B6(953&C#AM6_H8SLvXxcx1CzOI;uQeVjAK5VihtVex>Jf#Q$#$g>63hV4uH*saj>$M+3$oywmpir^eJU9n}TwP z>~r^j<=2+G*PlV|$-7KjV!y|8*)bn#i%f>e>=pXVTe$7tIPfZDhJI_&G9W*;U3JF} z?OXG~tf8O5zV_z!xAa-P+^f~4uQK*4;&ak%Y2ASMK5%deM16Y|HqWkr?TfF$&SjOb zZP7K@>Rkab)2_mX5i)$xv&uLz^mwn0j_TUN)-8CHOeSo>x>Fl=E|;~1+7>kh{f-97 z+RV0t#XKv+4B4LWF$GW%J;Y*VK(gP+P#pW;GBmdNwy6!_HTf`7Q42G$@JhXmK)t z*8IL4JJ6XAR*m%x_O*|4e@pju@vcjM$nYe?6g$r9^1hg!<+jC;W4bzffq-RHw%o9`9zzgCnoU&5s5F)1|PgpDeKyr{8eD+7)P501mJUl3nE9q|7S(($g) zw3Ny-GaXzc@;K&;3@DE4X?8N8D9-Nw%x^}t;EPKkpF=FpmhdRy(Oh_7>yIa)EU~3o z$$&$F!`I>1Z}8Y&hL96T_upcwG8g(w^^{~)^8D>)gMW(c_szJ$294`!2;6h?KunF3 za3$f&oOs~Gnn1IV0m=R&W^l14#?MH1+8cProaisr)w<#S~!~U1z1xh-AS;izdv?SK3G9Wv;;|g=Ya6{^d_kLTZeO3FWen2s_n0!pKu@U-l3dZ12lg-6qL&VUI{!tS^9y=ruc5JPsQj?c z-@|lW*S?pYm+&eE9yqzyUnd!W@%zgV`+qYOek>s$q@x3-M`EC-R0m0}=)wcR{jR~K z;Mu%nKuLUavh{y#379o>8?evaF}>2I@1sz<6=Hv=C1KTAZNYw@p=;ku&r5g}0}mukI|C&N z_BDugWjQd>Sa`9-e36z5#XwJ~4w78al?V3D+pUcKDVB&)W48(WUD_)o`3IS$f6&p@ z>+Z>QfSJa|iKXU`_$U9M^}5Pm>3M0)HaQPq{IIj@S1qzsYzo;fq~$V`(^DFU&2k(z zA>Ygr5+jygmLvnDG2Mh%)>ZaNIzPtyF|_g=ks?x$XL)pT8eAKs)f>c;5Unm~7Yx6rr1&^FcnRMS~}U;^J;%6D^) z9h-~lANn5w^fyE_UT2BdA?uum-(9sRKiA`g*B7wE<-iNTC16M!YhS9T?E^dTF@2VQ zg!_Aaa~$k)Kk%F80L_6T`M`PfdrMzG)%M|Yd0%Z{ANo!}-!Gu&ZTr04cl$&5)n;G+ z)b``WexohyMDG}R70~Me%>#Yo{xA5^iN?3|@A&aMl*X{zy}&O(Umwu+>#5<_@SPim z@<;7w@wo%`+XCLx9H2RH4j=djbzcMyY0NG@X2;MRwtN`S=Y`huJU-9*?Hl-se#dtJ zzu)hh7hu<;z!_j3f6%(?q1WH=i{}76=dWPw^V|U&-v|5zXl$zn)`#%BA1M8{51=#+fkdNs8)y@HAU)cXR@Q&tywaS6?o|zmttTDd&F+Pip z;S2Qsq0a$b3#_gN^t%yn0@u#s6Iy5easzyWo*AI;fHe=SmIfcgrZ;L#uU|~hYjgMs z{qFEKpm|{VbHF*+@s4?YKx?mU$NXw6aM}Q5V_PS5k@CV5U;HSrclfY+y=7Rb20BJ_gSQt=sX&0T|NIVgAc&34*_&9@g;zM zr|>^uUGo9mOQrWWyaL<3WHO4i@ z)d$oE)CbfD)CbfD)CbfD)CbfDmdgil3A(6Hkt9hTK3EAlxh%;4OLUUZd)U06Nku2* zf4)!MJlH{5HxG@Vp_3%@b-&Z`^pvXeX}d=~hs2Jqx%U9==&7DZf{VQU7488hoc9>P zpxqf7hxZJ?IDC>g11Qb@9R&)D&&(NIvgjl=d24t{Vwu1io-@GG?%x_<;qbXJ0EadQ z=nUUdkoiv2lcAt9d@D@KrWO0k$5*iZO_5Ka*~kB;T?d}w8xwHUr+%0PJkv8Q;F+E= z!IF=wEqCLawEK9Wn_$6rx8b*7*@B@jBnEI zGD>+}p)mG#8xo(@?YkCcDV_2Gd0K%2^0Wd4D1YtYr8Q}`S)J-7e!?2q zMbby&3%e29&e2}tS#_tFMa@&4$0O#e3>Yzw%wru8Z4W+TzRJK7A2Dy$KFY&EN=G!d zqc0B!ny~Ji;tYJ@G~zqr?m-JVsXgz_E$7CvZx4Lbz2Jaj^HKN1@dZBZ%SYW80o0S< z6xxe?G(3=@N9H$#{zblYeUk6lP@c=-lvN)`5@UzzW60rb^wnpxbh(U0+cg{Y(V+Ow9 z_3bj&r+xW}-6!A11(?K_yuMw=`o1q84WM*)w-=A=qi6s~d@fwyNc^sFeJ1d5pQwXL ze064UkRS2Mv%<`Jlj4dN;&Ripm;3AW+`$0Rb91AW%E~K#FLm9}u9Oen5bB`T+sbc6@#TvX1u( zkaxUSfR6Tt7@NLV05(1E1ljbw6HM9heG|+%@0kFnJrgj7@3D|Ee9r`o;d{=KnQ{DG z#{wqp4A2^$GeB#2j)JMxzpY?y^X59wIlMIh=kV45oWonE3Fq(_4$GY^bh>e}G;4`J vt-~btbv!|1Td;0su{606=|H{@?p<5CBkq2>`E*4Rt6;Z;{?~MWLsw`QX3W z|86MJ&BNNK!UX`dru8({%z}RJhLa%KEP~gz3-<~`Wu!k--RHfZ$!~Wz%wGKQ+K2%4 zGg@6JWOcMrPoMUg9Chs*Ds^4(D+9S57kTRW6vzNbYye5of683no9R51Nj3E8-H&jO zz0&>grRu7jt*xrPkQ3X7om-VuzZXk4HzQ8Au9q(H_-mc0ukkdFGdwh>z>}L4#}jb8 z!dUxR4-t0CfHNFR(E9tBaplamAx-t=@hrjd3pipi8Q+1$F7i>Xe{A zD46-ic({```U?>hta%466SXnmagUO~fl5sK`Bw;vS--Cam*~O!JIsu0h*PCD<+~OOPtE@4tVIRz+j2^ zAuix6gp20DaG#YZUYp47jS=H2j{rb|it5gBQ&NesT^+H3T8wx(jN5ENEN2TUuNI>i zEs73~hbj|_itc7OkC$H11_ui<&AiX~VZ<3|%F`;k6Db3J0>(hYTb9&0IR!!Nlm2CC z`t`E`<&`Od<%GC|i_u8i%gJRv)K_=bW= zy3fxM(g(pUarGJ#+^g&3deXgizh~%A|IL0)eZ@0LdrH2}!o9=sU3!!oSkRI=;!@Q@ zYw82y#nl(oSECVOxVN9^+w%8Tv&KCH*0jRV%gq%td zMI+;#FG;Ut?_2$n-Z}q8eon)oB&Wxrba$vQ91eT+3MKFaTo1Q6+2^ArL>xUaK-XC= z^gX*|o@RD-lKd8rvQuTb8Q-8G8FlLpXd~tM%9k>HPZj0i-oNJ!6TW{pG*eT1TF#Pw z%o65shBN(;iHfYRGhrAB0Z(*dTj=y6mG-Uv82<4$WNq`at=I8=ldxO(92w^S<%7D0_w4 zA>)RVou7rT9N*FI|0)a4r?rOV8Is+4TKP*|BKMWelJ7lF;)nZ)*T2v9?S75f4ub_? zsk$;a1Ib>lNFPgaZut5BBFwN$O%_bj`t*|<0Y&F&1?J08VEdr!)t2J(RU`3y-syf< zrErb$j?naBAAf>u0=w`R@mD*o-aZdtKbj&VF)jlLnN_KDhwZw(d(yp23KmxiUUGZK zwg8XN{X_O0g*1M|#R8Y2_!=kD3ysxQ6?SWttqeWqzAAhcUU5EKG^_VV=V62iAMaX^ zDWUTUcO=PPm~*;n%xF}5ybGg@^#WX@#z^GK_{{4Vd&auqiQha~bTX+vYnpfJn7mIM zkK#iyu@#BE?GEvb-%(CuVA0mN3uS#$vn7HL|5{o~)sEBIsKw`rc5-g3VOEfKczZWO zeo!-7>2hFb*7g=7i}sfsNU9)UlEL{2_dM$~3vYk18!+-FTDf{@ny@FLyBr+*05&!tGiUrCCrPFP<)kqPhJBt>yC1>xR1@E3V z*)O>jhPllDdMOBUp6#f>AP%IUh$y|4Z2_`?N}I~_DqXuq7*+chdZm;K~b$^Y^|+DauQ3i^zd}gNJa^`Zt?1~eZ=lRn$!U2?|js; z0d|@nv9)FGIL_Mbs$hprC&%@DExn2oD79MGs&(SdC-&&o_r3YE$;2ej$lJHPvmrp- z5~Bp7y@Xc_7v?DOG;nZB!`rATk^@UTX4K2@;1oU z(o(m)ACkpkWS}@-F@e}TY;%fu9j=NnCEz@gU3*wbWk6SdM#9D{nlf%oOWk9B515Vh ze;!#UtnzVRwGNRy(lyLx<>ff(HC51kr%vSVgbe7?u`iC&D8;K&PUP^Q*qNH>bM5g~ zr#CkE@VwjClJ#Q3{W9cw?!=U$^+^5?gBELWoN|I3`jBAZ-O)l79{O^7dk_7lr^HXLvgS3h z4wGJdUI?+{AMmmMJFTHYMqS4XsKJ4~caZu!gWFK2&R4&$h5k8Pj15!cv}tm++me0( zgI(+-SMz`Fm_L66M4qx?!bfi!&7F8HPCZt^JUVxbAy=YBl6W6|bRBxSuM-Wo$050( zK(A_EC+@mje3N^9ys~yH?I{x49Zv-#`k~A9_(LMIrt6d5Fwi-HIS~yfdixgr?!r-j z?Cn*o?DUTamdrW2=Lam0ek|?&J ztDNdm4^Xedw`a9X>OB6|Evu#c)xv4jCWp^*I;Tqb+#D`+mc%%yn}i6|Zaw)chkIEW zZAJ%Q87;Bq=c5%eHbB|)L=saPPQ)1(ftHeq!czrIrV*aLbfQ~NiOg{11Ai?DrL+_4 z*QaexJlO6oH>ZMU#}fB_NSgx)z7BRPWank@0j8*mv>r$Sa$LptrG7$=({(yfd*IRW zlmDLC3Gqbp*$J7I2vN?{gu(&4{vf8N1d?u0O3%;`mJit{VjB=43I~rD9OMf#SuzU} zyyU@LYtXF{Kd}PPkFNn36j;BW4Y>~8!9lTiqDc^%@9fqje|+)&V%=9G zZd7yl;4E>;W>K%!S~6`XI*P+2;UG)#=j+f(eIaKD1q+_`vAdyV&InFj*ZE2@VL2=) za@0Vl!rQPLV^=tmAV3D{qG!l304`q*Y^lN}7O!tsp7gbJ$8}ZQ1y;*o(TrMRGoyu- zH7L^^ufVYjMLX;G;;yqLOx@D!=~A2kcRO zhwnHqcbTs9$GtZAJ4bU{iYjptw;h#MFV^dOr_}*f|=wku6wV zVEh(@x*<=o?@DK z>t1!sIA$i%tVh7;0-eS>n)R!#iDA34zX7F%V=Bp7a~vpLhLD%YUKoFZceVN&oA{p^|%l5%sEvrd3m5g5-WFEGZQvZEh zDay*#8;YC%V{$m9C;U$617SQhvVNB;?5a=E>1pWqnFIO9v7B(q9&OGmAbv#2BdtAI zY`B_9_Wt;%g@E6n})gLjf#9IzgsS5WWEhDI|zUBzA;=Qdz-8QRD@U~XBk#%VP8R}FrqVncRRR> zbApp@MTUJ`Ku<%3qSOO=qx`|QsbRZ|%wuqQLiiS_YL8CvqZo@ee??<0E_fUo>>z1j z0)qpE&A{G8O7kTFr}d(m+^7eCz_39ED}&sOf4OBstx%y-o-adMa{P$A2`%;R$NFpi zqTxc2u&4dCnJo+&F3yb$rGBtFP5mV*VzksR!O1P6A@8QLl< z4aoo`lxjvlBCQ*>V-aNGpH2I}bw7W~8ob{4-G#FOJxfITj^}=Tp|Lt9*(kH(O%Br^ zo5cP6`TVBm!!O6<(EFuU{VcJa*CKz*2R^Pgl+x*w2`Tt-uJr)?$czre*ZV+W=%wXB z16inU(fer&eP9o`4S-+$W%re`veShA^{yRBh+xaAh{!8#R0GybNzUoE6&V~A2%2g4 zV3KNv2CHR{Q^=y)i{m|VO8cmKm$+B@9-C&w!di)FzXWPl0H*IEBS-@~?;5`RNN7Mt z9SHSdqW;GX22SK#NCguFsFN(9@r1f74DP>HX1Jq_>Bp-VmPmOZwX z9Z@&iQTLWY-a_n#(3t=*rEfH-q4Ly{ghLzez3~}UgxX)fPntN#ZgVmEB)9_P1rv45 zzxVI+C}%G~o=|(TR20r}@%FRH9b9tFw%^%56C{`k#H}ML0af5Q;xD85A}pIODlMfT z`|#%wH|25aE5t$#12l35;Vv~C25fv4o6~l_XFWwDQTSYu;ttd5( zCw$IgzD)(e6#k>Rfn12+fVsm9gc}pbirpHM#83+-K(k}27gy!?(GOn;;sk~oNS?Ro zXreduYRdoi%?S9oE%a(&CNPVoXF`i#Ain0%nPz8Sqvv=mZK+zzh^BY};a-?Gj>Y5rrw|Ps>O<_H6KA`FHHlM$Tt4Bcc*V{L?lIv?fOC z{l~)^zBmaC@EgW*D&fORnBuGuDz~LyU)ZcSNx_gmp-;cq+>hnx<7{T{<{+xPb@?HR zP<^3qzukc!=#eB~G_i~%^!Dqcdqrsi-l#lzX$A3C3jb_!{C8vv27n*!XiVN0hU)DZ zW4BMpa`lppIxoyXGLgIGzLOkY(=<~)b1&q^KMUqKWP^5vM-SS+gho&2vd4PRAk(Mp zK4Phmz|}^GXktnX=X8YlK`~oP6%vF0>y*j%pw&5O;y!3|o{FPZjLuVzKyK{0fCTx! z!Pb_k?c6rdr&*Eh^YJPi@942bmasO!O`3z{Z(b9|c8upq*Sp+*AqY-+f`2@Xa07QYn$gg4X-cz-;FU5zLEN`XHCt$U z<;{gY$}RUlA|EEuNjg^)LfN5{lk|n@ESW_>Y?T5x-Sr4Gbnt2wDlE6<#IL+S-RN-* z_|Yv`Aqv!yCVnL;i>!ZbgB)FIh1*toiE=GGGLHVmLl>eP^xV@=a8H+iE?j;8<)1Zy z(~q1zb8xWhw?11H4Z^_fS9))tHE`pJoJzLocXUp4vIK>kBR`5%M$;U9Qs_X?dHkHg zT66A$h!b@>2U_@CA3`lK*IL!67PEdYw}41S5MtXS7wf{iU09OQYR88f^r-+RM5_i%xhkn<^62Z?6Bf80Pb|E+yDbYEo}seW z0a~a@-oO}J^6o|CY>jk=zrx=_ibPRa>&9wmht^qCqW6t;F*T1q$V+FaL8v$i`39WK z^t>6>23ge5qSCmCUCRA9+7SN^IewoEcrj)UNy%M-V6mST2^JB=TB$ z4eq1*`}oK5;!f`g{<4e2$Rs-9cI@X09pEJ=x=O1?pEv06D}Byi2^N<;4(mG>jciE6 zQ zp(DJ_VIS@#T}^-d*M8>y5!3vWVsr4EKA!?mu!8^$#FskiwZ4C?6uRnZ&uo7Cjf1Yx zmPI^epp!UEh?tGV({`#)hDV}j@BFpt-d{9>4W<9V+z+wp_h^VYpOc8rSW%h-?&Fsg z!o$Oq@|7MD9aIKDedXIe`0dd+zGk%>_5M|db3-85_~8Zx*W$&4g z5oYgSO`+b+E-GM2BBdnM#b&)se2neiHZ#4en#v!}{xp+0W~~~gqPqF7x{58*988@A zXl_WTBi~T9kcu&W3GMvdpAcBn3&y`u^_rbQgeC0a-jK$y@~-^2Ul9ExEGH}w@IMm4 z+x%QUIeI6b#^up2{XwpWZb0Qmpp`(p<1RQqK!6j($H8wXjB98}*;@Bv z(scv}w~6(}XwcI40HgK=$APj(KjMBN?d<-nRdRf-?PYt-2q|ggSOEO#5kak8L-M(z z#=DW+`st%su;H4v`+OlL#D z#|LL?xVzeQOGnd$HVk-;jjsN!Ctcpc8nAm!e9^H`V(j34$F5ti86MOWjJ&{(BiDz$ zI+V@0Bq*ktR;~3s*aJrYnx9I)?JV@!WRor4;fY=vPBKG9WGv z^fK>N68s*(Fx;aLdIRsVd+L`RTt}{K)N_2`UHh`F{4|!gc{NMB!16yf>^kmF9BI z=|GFJ>#@asMJ3pR9*_Vhc&lSNK=5+ueBHoTS}a56J3Mn~d+q2K4tfy&D|T{#tc35} z#h#-Moj>5UPqwDnGp@KOZEfF7v-m{Jj&FVZ>67WwhVcA+u~b(>-y*Jue1th9a0Q~C zFo>HDu!e}jcqQJ8rY5#F3ak~UG&+Sg+wF%v?7F`7uvZ?Sa3?DlAfzSC!Nzi}9S@~h ziqo=|L+Z5!fkZC_I|0~AGW0kZNF+ibbATNIx(Fn`QQy!I&U~X;^X%J>F`b;P@TS!! zg)Q)GMR^g)MOQPn*-=Rr?}hp6e->s~%~$mvWRGMSJGO4nG!Nh_ztln1ZYNXv=BYC@ z01rrdbiq=Fz?Ol4)VGo?;-G<_Gr2lB=Jsd!b&LLY;Rs$57;+JhJ-XZ4gpA|Wuc#n+ zR44ZNguW&UppEe-56O22(!y+V*l+%p)H@g0DE~~eO&0od)%unHVboU&52ZH7?PR{& zGum`v(zVtT`n9VSg)tATsC1#^q>hGmY$6JUP73TrMs!FHEs}rh!tUDM=4JtW0JqKe ze8OzM;HFuv9Q~#zhRjGTo`dp)(|v0;Aej{5#Y+YQ5a0J}HqqF;c{?^5>{$KU@efDK z`GR&^YPN^UEFiuOJT>|8!Y?+(J`01k5<8R(Sdtjjc4KX=?5#;S>umXJk=fj6h4760 zu9_U2c$Pdf5>F5eRwgu~xs|A1sSFJ@)Tub|d_(Yp_4;!n4KiRV=@HW6rSHP-m(d@{ zVme@FBZEeoKs6+SIO~iv)uX&a)(;xqK=g*J!ZLo(#1rJRyUsUTzkbYLg`?V79_et{ zAGUJ+EFTG+Y8C)ox?Zc~#1wR7R(X#w$&XP#hZpm85DpR(lA!MIoOTnN*z4>iug}?b z8EeNcK3|3o{&Q_biRwMT(y*$6QjzmUM_L(Jbzn^!#nyG_Wwiql24|uR7ZNbiDit(z zvC#?DawNJU?u#B@ktFEq82&|t`kha?wiSx^aB%cW*t^QDaPNg{?TPeuQ6m+}vn?`B zlzrIa4A=!G7SDN-O3DI%EN;FdJF#nyy(J+2kMCFLsX>Z{T$1F!HJRdR1!a*GNWkU- zeKieKh8zTculB%z9=QRVlJz49!tV!FcAeR^#om%)Y~mZrJX$Csx&iYOrcGru+7#at zsHeKxB4SyD-LZB1dZ{I^0K*Dx;2bXT5YaVo258--XxIeRBx(SQW(3PEH zKv~g5!PC5NYNZQ259zxpmolh<4e$Wv_@F3@jY4q zn6J}Wo*_j1W~KKIK$F!d2WmwQupF@ zvxKs%bc-bi&lF3!Gxz~bh35|xG^mF}yw(&Num1XeX+VcU5>0GCFq8XfENlpQ?ilD1x1TwL6A~LcuZr^`TjFP!oDSXVzNo))ljuMFWkZ}(IC{5*(c z8gFOTc%PTZ=@stB-7}C{_I7mGor5Uv?!mx&bJrkqSgCbB&IS6cA;#N{5ZV(Dq2~uy z)Y}=32~p?ekHJB>XGwpUjdt^%Y@A;aoe7HLpB%QFlXZQg=+)^BOtyZnXOVK?;12bo3LytVQhYxfCoEb!F3lzi;Y!{*Xj~Ek< zS>?U_#*?WdQY$22s1Eewv2j>m<%=N!>(q-V`@SOypFJ<4Cp_i>GN}h)4k7k0sqCvs zApnXeg$e8(a#>YNA2=EW>(u~mpa;ejgDuK?WZfEQa{bz_6e!%Ui!zaENR8xdiJ6#f z1)9n+%p?*K8dd_27%RW1&;U;UyqsGfUX%Uk%HSAyzOe!RhCJe2Gzxt(z zHn_{bH=t|s7U+Pjnf=pB9707%;#|Diej%thw216R(xu&B%kPBmx6cRIc@9K6wFy`4 zyOO=%JY#ss3zSMA=|DjRPSo%^FlDci_0+!*wGv47tdu>E8~rk|=i&yA9)O^oyPU^o z8(x*Hue~>Pyu;%pc&PQZe7@^IRU0r(2hL?U2gcx! z;PZ<{9Sts^Iku>qWc4{41T$WjQug1Of-Y!3LW>-swpy$|w2*Q7JOM$cl(E>$x zaevKvp5LK_^=JTtS6GW8jmQkfh~y|Q;FU!8zz>;Y)(JqJ4{*9{Q#n~?|FWia8^V63 zZEy!TC(kB`mkN7RDpa9JTJJ8_SOU7{0kXkNCUVahDP)i1?Uc%={XwQX+W00NTR|>@ zdt@rCsC=3dt7Bq|Hlt45>jGYAFLBsEN!$Q z1cnD@`5Y)n{m&Q5C5w?7eQI z*OT_(-e)XY^em#>ISacZo9`Za5<(xsP7Fqlm7l^sgO}-h$lZWswt`hXnW}hD#jUKw zM*uaD?;nBPUNZ?5O0)$FJv!`CJ#*i*+rK3cZF!*J{XVvk!Wail4c`28#-qHC@VeJY z>C-il{w@Xn(Ll0d=ddq7rBFfl(ek8MDQ1Ra3&D;-3xZwZ1T zJT|!iYPA$N=NEiL*CqY*%@I;yfy(&#@|n@}<s6=(hLrwiG^H#*4F+eRUsR zbU0R)5vpBFoF%19~JtAEJE_`GR)hsUiu6Y>qq1Q}k3m>#Q|G z0y_&Ev8<;te!THYLaB>I;S6{DZO;fW4m}VA<+oR&QktCqHUvx!iLV*OTF0Lk3G0DV75_bAladOde8`MtVRrC3m_!W>_ z*HKh@`nQvS&Z*sg<2KdA6dglRjZ61VPH)3mLXvkg)3MJ{OCQngvNrlU*K$DYBf-SExF%#D)i?fwseTL66R=Yv2)a3k zZxpahy#8);nmVpM3<8a2%eUzSIFD*AMo}OSIQ287D2f9T5o3@pYWmn@>I-35=MLL zbw}F2W1aaN2q~dr(?x|$Y>`DUuSA!gP|bec??jqE4(wh->}m~O+1i{(XJ<8k#!@Bz zdp&s#fNE~ln-g={`LKUBO@%n!z!DgN;&-T1Kf2AacVRFR-A6knL2t&Np1~eq_HEby z&_KiXa*7kUGJp}caj4FYD`tNEuo8d9na>AP8k=R$Vruoj)Q+Z$K#Nr29O+`wk9mPR zg*R5sD-1Q$!9zvh&3HAET!*WQVAN~$yy~qW+dCmBZEJ)9aa;BmD&!RUdAZL)?LOG9 zb*d9fb+t%_`;C8z8Lrw{A+j;XpTwKa;nQMs?)3ykE^>|<7p>|Ne0mAwsn*g;u|)z` zKm`4%LF=5V8u)%VUu3ngl3hz*XV$G=9=rJ(&txR#o9&l>e(U(2w!L)*ofn9Md<1(W zI$S40Ev1jjdLb{THimF{oRtQNeI9j<|7)M5V*NyrANeMryT0@2W&jL9lPQDt%ugTQ za~Hodx@WZ46Y42BgQgth=ZCcpK73q8&5tX1&WTh%)uw&e^VuIzW2vtpKL7l;l~CU! z|A_eZ70@?oLdYEG%9kZLL&HqjleWiNY^DX=^5y}i2)6A6!+{ts?if#m07}D@g@Wl zt#-_;h8g>d0~u}s?EJ`@fNpOdytFuWciw%0aE2EulPEFks| zffSG+c;i1+Sb``CE)kA%f_AYm_mO`8;CVUP4thcr)E5<5UcpGM-CiHF*)8%{S>zlM z23p#~qnCxT)cYMyg$(abI9Mc7sO2JvJ_xVkSm7kzr8E_4^IQV&INA+h0EymHbaXRGr- zJ^l0V*{t*j%8d7Xf3ToV-1}Hv8JD(4Z3ImTVnr zNhQ3bY9@~CWGNpo6Zv?AFKVj;TmK-gpRqPmGgk&mz@d57gnZ;T1k!JRCp)yxR39u# zn`+!$NUTeVyA^?c!s3KB~KSaBZlDbZWl?h zW~`l4Qxu_9X1S-hyktC_d}$FjCPi!0cW_=ebEU7L9Z79(EBZEiYV*LAP~C{>6JPZu zWhZRza29D~xZLeB#fwzsSyrI#qoOrt@iskndFw=JNTTc}JZP_R zEoZx+MFME{L|2fi0>ya9barMibQ*Vc%02Ef$+dXkJms2Bk+PgY<}$)naX}|=vXpJX zhJOw#`1e%aGY{vXwRowm2Xunv;;s2&$lhq=(VOCTf#>$B4~Kr{6BD+k7L~VK<;C3- z>fl5D7CTH__w`HafWmS=Tnzw-ISIC~@{O^fVmV?`DBe1agmhUVUF0L>9X~cQo}J(h zbnaIXE2LsC1xWV}LCE8uA3TiBkd1bpm%y!{vqSU4?e!)f#H?nqewX^g$C@ZbHQC}b zsj}Pa&1tg|XkRR7?xefkw>83v5AcWW z>muA$h*yd;k&KC~{Zl3UC>5RVAbbHZl35vLT?@LWLqxK0v8C|q#V4u0`?9@fQXD}o zUXNxs+w6yz_HOZqDnym{A396v$9AJOYQ1_sU*?VDM!!qFMMS*tN!am)5&L)IiL4im zSX=-kiYuKw`4${FvdXodR?NRoLcoXqMh{G^>Z}3VSNNl)`b0BWHF;YPVh(Xj5DR8qNsV~zc zEwiA;Ba!8G1q_dl&swdI)p}oJN~?A$w(lyZaqE{z?BA-a#;(l9uddW5YY@jQv89p< za=t};kdD3oTPb&480YZ#YLdj01b)w$y8c~fPUVb=wo*J&)m>P++t-sdSV@QVj_4^l z(;z-1I6a5RL2XsMlNgus?+Qmv(7N|HkUVWtR{89MjQLjxCz5U|>gY6(!<7~% z6T}d4+;G`b6|mg+3~_V?yKBdAqv+2|QV(K4O_bYDsc-j?uQK$kJpUAYfR)aQPXmDB*8QFsFHN-8c@DbH zjo0ff*LlyZ|8m{nq=bEoM4b6M4aRyk)OLfSA|*`(U2s}R9iB7}&4x` z6b3rvC_+yY9NhtwzZBXeU!JuU9CYPR1u)VgT-0x~2w9WCw);J0Z7efwE|b>5hKqH1 z0TFX&D`wYPKMlYBi@3$QX>Do1yMz0%S^iI3a(zj+PG~1{xKuDsECg90 z8CYyYHyl!h;Qgv7=($o$^({Ta5ptFD`_)$2@_Kf!4V`H z(&c982Oqq<%GBrY9(jSUJJ`iloVEO{+_SqK z#C@{`a!XOeYmjXe8)QJf0OMF6%zA!k+HT^;y=u-t4NCXfo15V@eJDZkKD6$C{%;_=4C4@I|N zxDjX3lD1^CtMW)_3+esmvtxWJK!s9S?07**=MzShUt(lMTZvJk{-8!3G!ENa6Dhq- zF_D}2z^?yy4@2@l(d6qySA{F;Gd%Cv)9%7R#L=0L+Ds}J^~nZYI!Mqr-0S5+3$>4Lo0spL zgnm?91%@-wtE)BXvL$*wL(r6L!!yae48_3nmn;pP#uWHaG5!{f@gzQA7TWTi3ZA{+ z6~Ynvl1l?cVf`eb>Z9pdcUUl$sOnZmPzN}I#FuI)#&*tE*^d2~VD)4X&z)4l86%Au zAf*APJdmO9Y1;^!(d4sIDjxa4gFwG*W}iIu;03wkx{Z6QTO4P>QxPfeEaM&2!`&V> zvk*o_zO+vP>8>EUi?c>|DU1qFG~pe{FZ*xEq$YbE`hOM*rRxrb^%dilK3;Dky1uMm zF#WzZu-m6-1V_`7)VLd)u|-Avpl<^Cu|`E#n~Z>Wrtqzy>GL!41R}~1=Awht0V5+s zrW!yUpi!~Z@GiE)Ca^x@yxg_S2#oPUgqT>^m-V8(iuEZzE#W&F$?sM^{qpmB>@ zeZD3|7!@_wE7Q{#E+I>C1?8b7Oj?Nu^K0z8BS;4eSqGn9jd2!yI1f|;_l)6*J(O5L z-2FWrlX(V2G>8~F^l-@KgO$N?+I=t64LT%-cZI4QrZdu=zPNOkaXjTcA&~u5aa4H5 zR$0G->-?ePJ-5>vFLY}4Y)XwAg>fl5zO`BhFt^uNcwS$1(SPY&M8xbts1tGYxN83u z%|TZEm4OKrHaO<(dheatBt4@$_>+Ed$UQ)a>61pkD|avv`P~-T4pY!{%+k{v@yi94 z`32lL*MoXDI%LJ7SAH3>{!R#i0HZ5k%~IbxciYHk8S8(&#l`oSKyoRwd2uu0H&y?> z!0QTwjStvT?#<}9*8ac3YfGcDP&M-;006sr-XpSA;1h}3hfo6{9DTO7b0wW}as8h` z5Vjys$$@}?uhTFcLe-JB#$aF(u;X%E+<_2lo(U`lMBR8>z3O z!pR5jPD8^UFI!m)CA~ZB1mJ#Q9l_Jslt znOhLyY@JN)G))Gea9`MvjA)B~6zS`Bcl`wNd#MhR@NDiW!xw-#xPE?9YX#U@BgmV2 zJTW!tr|#Gx<%%`H8{(ale186VmikPk=U-fFG%4Poaorpnp7~Int>rp_X)Uh*4kp@sSNsE-3q0T1H->O#!96RrS9kPD*p zrsaRe(pV(3FL6;7e&`ADjVuwWz?ePkZ+|9&d3xcjS9d_wjQ=%hU4>W_@3vhYRw?HL zq|w?eMT8VUJ1mLtg>uDIEGZXbSVZ!^t{YX`oqPQ_-`|(=+gr*mF2_HUQ zXh6U2)dw3A!Z7W#63<-vl4m`4Bjk@F-+E@{ZgXuRoMNzq)bg!Uhj+#a{{z`W=Q@1a8HZH4Qj(*jP@>cfO4BLvAL2FO+9@DiwfNi%39Ay_o%#6$I;FySf zSF;4$)Zd3cyzU$U$vfqNZ8rICydwodUmls!=~|>B-Crv)hROCSF=3AFv|b4;nuRaK zK{)xabKzw#{v`8u?;rS|9oU?l-DO%x2^Imwyo^${o(s?1e&24X#A5vX#XwY@xH3t% z?c_L?r2?IH`!44{wewW;(Qc=8K{#lSh*NDePSBXPHCA;|Z2L%jW31jyE*!O~tTXrO{>LrHh2M1d5JmpV)^BWH3*gQ z+tH#&ScBgS=6fm=%M)`Gazm2ZX8#8loKrPEVHM!fcI}+EbaOVp^1R#>3-tz0aoRs< z?bOEThX^XWr`dR?kj^ zrSCryDY};c+qm^aX~AgH>i1Q%%=6#+QjB5#+;=&v+aG+eh+bT`jP1VrMWXjl^c$#6 zxB_=gpV5Tx8i|w#F>wF4>1vRdgpRHnvQQ^cEz~0sRi1{1Du2GNp**ALCpQ%54D9zLS+EWIG~PJ(M5#|c+?B$@DY@1NsaY_Z|F{Dc@+7#pw2F(vTD^atk%uz6?^^*uEd|liJ&)u8f44Y4)usLN9-q9M^&juKqlNbK(PQj_ zkgBa&GoRvq%9+YlZj#xL8|8k)>Th*{K4M_-SlF<{)q`qmf_hH#8Zk)^+oKuP6*{;B z4LysBlnIYcr5wQVKOz*8&0SQG%Gh+*RaqJ3=o>N}RWOE?CLvyRt&F69Itr!6t2?zndj$Yh&iK*HBpHOz;Ea zX3XCWA_h}bICljkx=+XwrEE+;cX~A+je5n|0@IvNH5VSydRI@pXx7?tpr9*80BNX69buMs@Nu@Fk&Xj=l})yD>V4c` zvxJLDuDsHY=qf-v8n|gG508AoLl|%>VV2=U>5LKEC!)kKUEpDi@$bs^;Id!Pbl6oW zD?j)dv(TR)`wv1H(DcF$7Je zu-#JQ6OeoVmF|+NJ_}a}8lI7}>HjDU3_@|iYkrx}l)hyQdugK>!Zm4f z{I{4$P-Q(Y+d`CEooTqEBuhOAtUT3n*a@b2qXzZe0gR(KdQs=M_ism&f zJ8tW&l2M@(A8(=%Q%P!nF1iRYtgaBHT2+Ur(Zo>PA7%&aVLYjBu?E%Ue4lAe-s%dv z(rO#;97x*m4OHa1sj4PUIbq4WA)HF8_viho!%#g5{+Z7ZUKCe91H#QRzNhJQ7VNXe z=VS8L`K2c4;^E-%Mp&qc2VJ#fdc&q7@DcUC@|7alXt#=XGpH$)_JB_2)|J9|An*Ba zaogIx@Ar2ukC#D_OWF@{>*FEj7a4jx2T_AG09r={L@+@lH&UZ7Du>LHB(d7yeM-U> zDd6qaF$gV2yXx`8a);h|ICq{YQ6cn=P)$7JQG;Ro!K2us>0QU9E^zSb2A@&2xF}Kl zP0W(s&AgiMEf3r&25GRmc{V1K4d|(TRD)z%D$71BN#+SHq;TR=awxAWeU(3(@#)Qc z3#sZY-`0jBkmIZlIglSV9=voC8Bs!lsJOT)iI)KZ5sJhhG3|WXWB;-;jrf{a-jQ38 z|13ruptdanj z()xH7-%62?%>|dA8K34;n>gW&6VL~8>`vtQ-yiUx1p0>JJ%}0^DGY7xXEiYMrj+v? zn>usn)YvF3%$qYa*8qXJB_x1ay9t{8s$~#=tH%>zN?#Ce=mrG?e%(NRblx?VQU=w5 z5_~R2Ru#)0OsFd(r9`{?AW7%Qxr_m|((vJTtQy>}7e41OzrrHY^=8Dpb1J6mYru<^ zC@LM4ravb$7fs9A?t~=79v<-Pg=qa`-L7GptPRVPA!!HQ?DUwCrXm#9_XA!gTU43{ z&a1~j(z~r5SwB9+SJ6}Mk{=vU;^-ko_fnF&GJeZSwIJMX<)&bj5>bI&<16otI#+SbEbxa*!qP_KJN z+Ykan@$A&(_|rG_c+U3d>c*wdFW7Xx)AJv$es@J?a!q`Ne(3av33s@icUxkU zejVPR{(@0YqF3gb{!;6)(vt3{`7v?6GZ*ST1%i%FK=Y)*! z*V;X6$+O+V#+2V$4;J2B|Kr;Iw!YV<^MXdT z&2^eji2Fr z&HLiM7Y0uL`ipKEw*6%Yy0 zvBQ017S_&~GHvjjQ=6tO>$4~4-7#m|4M^M>b?%nUlf*ICn6Gx{guc0Z=BP2VyM;c? znhzvCHSw7qD7bf@X{!z@T zDc`-86uIERbw|1-7Th=ToW1moV-MD7wLE z{m>B6u*IV88=rrpPPbpj-#?>y@r<>5U#sJu--}2buM!ko|FP?F* z!(A;p%zbiUoxN9rLGY&hHX@NHlB`RY>R6$yt<uf z%MaFjqfN-2C*o=phjt1riFT}LG3@-B(Y2%FUcA(5)`EL3{=3zsf+FSDy=)zj$fZ;H^uq950ygh^=m{<);@+ z_h!{A-Ld$tMO_+nIcI*<{PSz=zgasfbXmf!y)cysU(fK+Z`*}7XgzB5h+(r9zOl%0 zdGpDcvwNN>niTf2E&goFX^*a&F>~=bn|RY49X;~4g|TJfr!Opy95pqm$-aN}t@}tw zqPb_MS`BJt;1jEUwewGY-+%5+Z$B`8XPwx(^E-^KdHa;9B`+?nG54mJZWT@T&W@bW z^LR%5>rb!x@%CC`dC~hXy>jB&5xb*i%{PrPx0>3fPxGm})*c+WsQZsC?paamz8U|M z{bZ{wTZ`s(n};7bai^uly5-KcXDe=Q@x~H|<^8kuZn=L(`vbk_KfUVZ^Vx5md^+>x zyRurXOWuLM>d>~qvWVC=b3Uyz^WG!>D(EzJ`iXh{2fq36)DB%v9q#hTO=pLFHFDxB zH6~Awn|*w1?6B=CoA(XbF=^n}`5BWN*6VS{h#JX#hW=9fkufQ48+I+~)~ux|;zVkl z@J4SnyScdT8_jBGrM}a!NoHLdBtA0Y*ob|#!kQmwt>2VS88SS3LDgvH zhG#*$>}R%LiQd$xb|P&xKDj0+^4?=W(yZmmrQ31=kck+x^I+7 z-_p-mkKzM=7wN`dpqYK-X)k5fgR+n9NB$4=ScD5S=bZWy0Nux@02bkn|5V2`k#lmE z$V>Q_$UXN@k#lyQaG#k2d?WeIiWx3aR<~AlC!rnljp6`xagN6rY0udDq_7?OKse(j z3m4!#{Jya7epy(zKP|Gi_NxL<2-~i~!f{}%$OZkm=f2ZV5Mk-wJ* zop#PiNqcJ4qr!IJEn!FB*>=4M8v6Pn7`?%s`|`o@$T|0|KBuOMwDo_H?V|nb<^g56 zP7SoT7q)$G2y65UB6~|8Ke~;41f#X8=Ncc@?E~bR;hf^yaGm@dJaoQp9zZwedpw}` zdwa~8SA=!jQyT50U!l?%C|;_fH`qIk57&{88gAGG{W2nWVG7qW`-))8kBDXSh*<6y38J%Dbr zqMd2l+KwV?vl;#UxDG?#-yl9HQ|-I|Cg%=Q#e?hcha&gvw~$L;3ETd$ivA?f6?A{V zJI}n4@_l1B1MP|jrh)mOJjqM=PLw)MimPRLLS4KsNM0k@&&DxP_v9hx^p}<1yW>6) zIa~{nt?8TlC>{dNBhVhsK37Oz`)Cl_EAwI9iKxcp)r#CI)3V%)9y&Q^9Q#L0+PUBH zw~;^YC)^K7KlgT>Hp-PsV}NJgzF&F2$leT{z%y@*H2eOx#S9Uo$#|8z6GS2UTcJ2> zFUF(5m<4lVj@<7^Gsl7S8);X+ZLz~J23X6GM;TlDD;|8t0JL+TQtw3ix=vNojx}qG zeqJ~aj27kjS3Go;*pGvjkA!3IYknAk`w=4lx1W6Y$p7s}!8vE$@k~J46%Vds6QQ5X z6n5b;m$qCw=?=E{f83cxW%qJ|Le_b_B-``(mmID4Be>-^-Fb?38kjydC}iB$Bh&Vxty#(k3hOr)-P7&51K!2Y*E&vG0X zBjJks*h70+&UxWDi01}44~`YVkaKdTr)-J!pf?}JlWR%!yD@bhhQ0;*sfX*d%6%EX zx!0;^A_IFK=~s|z0R3U#`#R`*#{qekSO znXTBDdNtRL5v13j2kN>Gz(6ni-lFbPAa@kaDrLXBj^ZOWKd|3;aSiysn}GWuI5t7J z4NwdeW$e_SPekek=e?#UYWuaEyT?8eDVXCr&1R&LivCobA+jJh746pOze2zNBp_7V zdFOu&_?~?g4DRETAulJ3vb-c&O>yQfd9OX^*+&EWC3{L4$1f$9S29#JU6vvXh= z$H0y=RNA`7)cp79|J2nF$^NGd&VhWW3fybeCC}tO`6J|>&wW1_iZWwWagm38*f$@} zVmy!OaKm1q&P~=mBmL=*^2~opzggHZ=W@@^#rb+(P~>CYtE$lr)y^y7hI^3-o!^apj(z08 zZ{K5#D}gi5rrx1eRv>0rLMCWk7!Ytwnd`Yc38mK>!F)JxPKe#@%~&1Nj$!7FFUB-s>nx`c;${W&6++7!KdX?JiXy8hahwnZ zSE7*r*Xss#0osKPbcP$~_tD|(hu)LtRm$ZX0@8eC?H@uG^k##Nl=H>s42k#`i*voU37Q9A0Z65H|K3)ef>u~W)*%J%92ov%ojX<2R(=Dp45Sw)GfT6J+P5rxpt4QH-^eXn=`{hoD@ z0efK~=%?+VYV5;%4dn$HURuFRiR~CGrm*Lu9;eo$hI@K4KUL0IkPKz{Zr5% z2FQ8Db53DKj3`DwQub9JCz1D$-~`${D(zN=zOS@q{b^VCD8oHj?rGewHM&p9eU*Fb zwQ&x4em}^2K4f>wns%!1<3W#)yi~LXON~5OVV@}h-6f>S{TpP;`5S}_sK*P|%{B@k zw^RQB?TRNK9$@F=IFv$fDa*Z#eKz?9;fhud>SWyokk>bYc0V5EdZ6Eq>!B<^O@gwV zd(!U))->x-_0jK=8uf^pGn6COHD?sf{weDLJaUP)NRB}{WII6_PrbOJ*ilW`J!M(G zC~Lp;b)yZ^&UH7=pN1Q8k9y6391Hr<>7%A>tSHU>T`0u9NL>qcD#YM-(;Go+Rdt{Z z>Kc>@vR%q(`q;Tw$UT_*Z~)NWQ;@m^{_al^OVCr%%#?JSt7`K<@eXZL&PD)9fRP^f zq6doXn3pBeH<^9j>3La(Wt;vdXuIAzNe3_pumF)jj34-n@0jO?(JVxAs1O$`#8s0? zro|>x6W%AAOrcC;O{SVm!B7ZNWJAV_73EB)T&zHLM1Wqba5HV9r}ZyZB=bJho5u3K z=EVw?TJ(FFhFq*rDIc3~FH_SEP7Uo?^mbGl%XSL2;`{)@0nQiydBkUY$7XNXh59Jt zS+7T~$XKL}-DTVn<%NbG0(lfjTlgO(LT@*T^-|~I`HyiNF4$jX91&z2ZE!kx_$a9oz7qKafvtmq*lkq7B-(s z=k$$c?R-)7M?`gL(A$=MO?$5W;5gJhTKX0J{T`L?pMXtx0Q^4hdFZeo9_zMps_%^TtCQz*o-aUQ~Ia_!~;}=4*H(+FD~`?&0R;~`@tNwA9`QS z2eXj|w9EPCV*6>((<=MNy>z(XXQSP~7>7Wc9oti}9<*us$0g8b!a13-^(oR2@7KQM z{mROgB5PBR0PVv!kG{-@{ZCzGc~_t#B}gc{7HQ)8pg)VT55~9w&LcPUDhF)HTPn| zwRz{~qqIf8=<(kwpD^u~&cp9jf(!I1DF15?eA0YIUon0AYK=Pfj}r8C>Fp0f8pGep zzfK>c6@Fsp(SLYAdj~HU`c-?5*hu&Qjc^@0hFL+-G7+cGDTwE)8h{f^1;A^2@ zf#+CW<%Jor_3eQ@7=9F>*m_7@EzOhfXqWZ+XW)}L?+dn{zWH(0emL6a8kG0;{bMkH z;J@&P?$hAfD$Bbp+wuR0{tw!PjlK=v-@oA9FT#pg8H1m=DP=I)m-5#JS;u&>YoRb@ zgXCGs|KjYuuxqcW78nn%^Xu7za38^E8HoGVZ2PdYrvye(+IA_6$v@>1Z9lv?_JygN zs|4*&y4)cR;pCkcem7Qq$J3ZEc`xDjUk)2Hu0}fM}cJ;7Z@zR}^I*#C)br6*|UsArbk#C~=+<`B&B{n<@DV z^KxAI7v8rc4fF{X+v7zk)-&zn+=H$QD8sS^sauuZ@S1HaYS2FWA)bD{0;~hd8_gD& zCH@<`iZhCCDLcE3o}S0&%7ZDWcuoRcma&LG9s!?1<9b>tuo1nqr(@>(_5 zTqqxKt{K~@>Nn|Dbnr~VvjqFJ2=m;CT*gcyHdy}-CP^=I-8^4|7PDS&4AMYgf3>Ts z4*z%3OaluH%?B_g^mN18l58^72SQ_EYOrVsK^kJJ=Eb}^YQ~~`GU_5wcYT^Gq^W{t zq2y3OJH?#M^3I{mP{QD&W&jz9T>%LHq^|HK+ws(GqVnrOP?clr8zRI}Q z?A_sV-(Vhq{U27HhLCR%%cQRDAgp^{*UtAiTS>hhdWaJ-nS={AQGVCsI{Ae<&nKZA zyDR90_v{P7@1J;nw;?`G>ED4;>(1w(Bjb$7b1LGgVY?tN0ozb@r{S9~EA$u@f24HV zK=rFSQ9O~x$ z5E-D|c+MgZJZmxTrX2E1UDP+J?^18(c~Zr4Q%`k6_oXiv^;tL&NJ+b3tfx9-MAB;%5~hT>U2>t^gG&vCA}NfM-wF-q#5 zG1Nv-r=i~IKK?O)xKp&lI;1YWTgF|*ux{$~Ji{?&nemAVte^d$&QtzrQRW`hpN#k3 zvlZi_WPIc9*VsRv`m@pJ{^uU*LyZ0LKkuk>kLHWyT;e$hHba1I$@#45qpUxPJlJtI zV%(ra0#blJakjzOAKq&*aEycd4)ZCR>|qWe&P~R~Y0vqa^GW}x=%ELg-U64u`QgM&K;OGXeEh>Z0_a$yhV253Ug-3Q$h} z_Qi#|rOZYe$ru@)sbq`^<4g?T8s=3|?8JCzaoW^@8E5T_Xpx6A6zU_Sd@#re7i~}) zjR!%e7d$`l94CF4SX2DXXC*k_89}+B#~UUo+F3s@+=ny1fjUZw6R`m(?~60I4~`PY zDUo|&siNI1EA{&aZH(htsTgyGGE(}z>HEG0G<|f7(nrJns`a@gAJC;-j8maZroPEo zHR;n;zFnDGHC+^WX!m9rlr{TQ7UTx`IHw|MU(dU^OzO*5%Zo6!UXbRTgay*qz`Q`U z_IG2GdOKVnQ9wNXhn&a!tv}u1emS~ z3-S>x%Q{#W>%3~3(u;Z+31|vjj~)iP*@qD+tJ}m-C!mguZ)sxqjPFogzzgrfn1^;S zese8-8~mOK-xavAKk}QF?3kC>M-l!N=w;*Chc?6w``b9V_wbtl%2=*7tOuVnAIeAZ zn|0dyr2gWgTWER(_k7y1xlh?)YgBX~HK(lPKI8osh&D}S_oRH_cX=+9qs~BDXmizd z1v%gNJq7g-E51u&S;|4$R%jn~0+b1~GuwB+qV03AS2=VV(0)=nbjED@SzwE$Os1T6 z9{I=v*OBqC3plaoW^=5c9M~*$bO;E~1Voe%H-CM#ZafZ=g?taqqOh zOWP3bL)N3}+aS+8M)@$vsd%2POJ$rAWGK)1KEVHmhIh=vyewl}2eOWJouYE3-4XFE z7;nuU#1ufEx^ZquTi=B|`;_&o$Be(}5Q%eb66GfW-8m_3eb-2oGaK{rx4Zriy<$Uu V=w+!1g!}-RQ#F`}h(&&u{eL{pkDLGi diff --git a/jni/love/extra/nsis/top.bmp b/jni/love/extra/nsis/top.bmp index 99d179aed82e67584991cbdd9fe55ad0ff653586..bec3e05fda10fdd44a21dd98ac9b60b829e9fc41 100644 GIT binary patch literal 25364 zcmeI3d303O9mmtZUD{gPTD4WXSlilq)Yh$w7OT}->(N?vq^yE~lr@BX2?Pi`gfL-E z2w{h?uSwYV_okq-2?z>IW-@7ex>&pX(a+qQJTLFPx$`p2&`HkAxq0Wl`+n~(-{0^4 zw)>{p%eQyR5`T|zeSrU2{6ES6XR_|#nw52-V^-E}H_3m|z~yT2zkcx%@DcD4@DcD4 zXrc)G=W6iZ^~JY$sYL*6CA|N-8nlW;o7;beg8!gUsek%ODEPNf@Gs)}_fYV!qW-5) zuqG4?hl17B!K>B5E23PkHb1I1FIJo9MLE|*h0_Z=Ko~GT5k-P*$uqaq)lMYlDz>$u zASEh54%NXM!}gMZ_d>OKHf){_o2Mw%=KGYec`|IC2%BcuJVuF_2P5YGhtgJD&*O=Qx*-~R}sxddz80Ar8l_+bY#u`ys9yOLkjnZppsLnPM>NWwE*h;}> zde&297)g$mP*B4AXCb}FFajJA(t9N)w86_UkUvHET(x;7{AmH(<6$!>ilHD3$cG~4 zzKFR8glo*5HRcX+l{f=32(Obxz`HVP0PoVMQ6@lM95qU0sWpmgjfJ(wg8DLFsZgiP ztu>0oRaU6SE!W38iJnbdxkZ>Qo$#?h6-k!F9}9R<5x^@E<|?HZkVD{%uBb;?>IWni z0j8W0P=oM0qMV4BM&h;d~-&Rb&wY?Rj+YsD2Y2HRy(V}&TdTOuGW zj>dqM*aB~?)IVAz+PO;D=hYfkNsO=t{Of!qc&DlekViity|PI43%pWApoC)x*D2vT z0sc^E35hUb49M>ae7eyfvMurhx5SAdLA3(SwQin4F zOxY}y17Zxws9(zJo%6e&-Zok22lQ~+-qPN~+kYu?1n5u>QZ0ZjMb#A+u)y1t5l+a0 z>mWc@K{ci>gwl`#EUyw?fTcolSG+Yx=L~3m)9NX|u?V)$ZAZ(wo#U()zml;C4142? zi$*~VYfp>csce7gjO2#5Ev)>Q$dw$EB z-pMT^;N7l8ovjwXlCcOB4tiAO-T8_9I;YLL>94Jw_UiJ9FP7#$yKv-BXJ|WlrmuL|t397qz2XTfu7YU-H(`m37%_?HV;3$J@?|S z{LA~MA`em$u3rGgcKup9U_pix@($TfdTXa+&NsNvfh}$s_vXE5yo5lx5+DF+nlQS^ zbwssscS+YYjoyg5WzVXZc&~p@H8D-g+*8su;WUB831^J14lnPGQ_6~>#{wTz zO~CiYC%0xk?#+8vPI{?gL5He^oz_f!Wm2#Etw)*)J!_uc$VbGdUYKR0N#DMko&AVy zEcN!vf$3i2O5&IIHVum$DTG;NdCwIMd3@fmr&i{_L{vDc<5z%pNZZ@U@W4=_>0_(< z9bMU%7@vWRHT^ZQPg&mc#98>*1oHaOa!lvDkQ@Yq{J^4-KO5QMjt22GuiJg>DOJo| zUnj$$g5$BCKHd?iy3PScko4dH*L4+YqEk zCSxAkY0 zumOT(TcG~d7IGpa>_q)5>Qm01SjE&od{=E$>%-dJ&aPqasEul!tSmhQa?~w(GrRbY z<=HA3YE}eF*Ra@F-S6!7F&eQ^dvMmt20K%NX3QhyhilZ z#)9VYp3;uyme4Z;q#9{!}H#LnWo+Iq$v#rC0caX$(N#no4Y zCv0tH)%J5DwwSGFZq?Im&AU9}oX+`rI$E$Jwwa*B&{1B-0?c?CM!wF0KAr3RH;!HK zXQ0PvgiOCEIQ}s&@A5op$SDu{i?mmI=KZKnf~_hir%Gi>S^{HA%SG#WE z75VlMn{g>B2uxV*O4jjS(kTfsh!_(f<-j<=*|$Uyo{Cp#}5{S2X>%z>O(p9AX&5}o6s z$q5Pbd$B`G8Pecyi^PuoY7U-(byYi{Z4H$*9@>av?_>=O5?pQ6N9oJ8SL;bHrMJo=?bxx zW*Vr?q(A{|CgRXUEG z6*^M}6qq?&eYxW_6N~qV*V*stQz9?ip~{6F@mGsSJq>~S)U}SH=3Iae-YhoFAO2&Y zU}9`-*H`#L(qc!0DmIhn+Iez~`r}s&L2}*N-YTh2XiVUF96dCq~13|KR1S41kjwd)zCzU}alRPJdyb8vGZ{#o>)B1c5J3>}XS{5?@2#oXV z7cy)&C$3GPP literal 25364 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 x$>!+nCfuzunkc+ diff --git a/jni/love/extra/windows/love.ico b/jni/love/extra/windows/love.ico index 73403aedbeb599dc19f7df618793c7363da488eb..b703c98b8451cdbe08b3ecd31b42bb1f3e887684 100644 GIT binary patch literal 370070 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 V=w+!1g!}-RQ#F`}h(&&u{eL{pkDLGi diff --git a/jni/love/extra/windows/love.rc b/jni/love/extra/windows/love.rc index 8493de94e195a46395e7a71aadc92b4936f8b98a..72ed26617d73e883d8879ecb7b3d2bb3e319a2d2 100644 GIT binary patch delta 161 zcmeB?-XgO>iG|&e!GJ-J!DzA|tN7#%%v_WIuyIWeV$ov;icfB2adcN;NMT52NMp!k z$OF}Eb1WhWqlYt m8JvLfhCs~Az{Q{pG$RkFHWO%v!sg8^N7)$7Hdk^BGXVgUh#)=y delta 53 zcmdlY(<8k>iG|&gL65 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/jni/love/platform/unix/configure.ac b/jni/love/platform/unix/configure.ac index 1253119a..ddfa8345 100644 --- a/jni/love/platform/unix/configure.ac +++ b/jni/love/platform/unix/configure.ac @@ -7,34 +7,26 @@ AM_INIT_AUTOMAKE([foreign -Wall foreign tar-ustar silent-rules]) AM_SILENT_RULES AC_PREFIX_DEFAULT([/usr]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) -AC_PROG_LIBTOOL +LT_INIT([disable-static]) AC_PROG_CC AC_PROG_CXX AC_PROG_SED AC_PROG_MKDIR_P AC_PROG_OBJCXX +PKG_PROG_PKG_CONFIG AC_C_BIGENDIAN AC_LANG([C++]) -includes= +dnl Workaround for old aclocal versions +m4_include([platform/unix/cpp11.m4]) -AC_DEFUN([ACLOVE_CXX_FLAG_TEST], # WARNING: NOT REENTRANT - [aclove_cxx_flag_test_save_cflags="$CXXFLAGS" - CXXFLAGS="$1" - AC_MSG_CHECKING([whether $CXX supports flag $1]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], - [AC_MSG_RESULT([yes])]; $2, - [AC_MSG_RESULT([no]); $3]) - CXXFLAGS="$aclove_cxx_flag_test_save_cflags"]) +includes= AC_DEFUN([LOVE_MSG_ERROR], [AC_MSG_ERROR([LÖVE needs "$1"[,] please install "$1" with development files and try again])]) -# C++11 support -cxx11name="no" -ACLOVE_CXX_FLAG_TEST([-std=c++0x], cxx11name="c++0x", []) -ACLOVE_CXX_FLAG_TEST([-std=c++11], cxx11name="c++11", []) -AS_VAR_IF([cxx11name], [no], AC_MSG_ERROR([LÖVE needs a C++ compiler with C++11 support]), CXXFLAGS="$CXXFLAGS -std=$cxx11name") +# C++11 support in cpp11.m4 +ACLOVE_CPP11_TEST # Allow people on OSX to use autotools, they need their platform files AC_ARG_ENABLE([osx], @@ -44,6 +36,12 @@ AS_VAR_IF([enable_osx], [no], [], #else AC_SUBST([LDFLAGS], ["${LDFLAGS} -framework CoreFoundation -framework Cocoa"]) AC_SUBST([CPPFLAGS], ["${CPPFLAGS} -I../platform/macosx"])) +# stb_image sse2 override (https://github.com/nothings/stb/issues/280) +AC_ARG_ENABLE([stbi-sse2-override], + AC_HELP_STRING([--enable-stbi-sse2-override], [Force stb_image SSE2 support]), [], [enable_stbi_sse2_override=no]) +AS_VAR_IF([enable_stbi_sse2_override], [no], [], #else + AC_SUBST([CPPFLAGS], ["${CPPFLAGS} -DLOVE_STBI_SSE2_OVERRIDE"])) + # --with-lua and --with-luaversion AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [Select the lua implementation])], [], [with_lua=luajit]) @@ -52,31 +50,32 @@ AC_ARG_WITH([luaversion], [AS_HELP_STRING([--with-luaversion], [Select the lua v # pkg-config libraries AM_PATH_SDL2([], [], [LOVE_MSG_ERROR([SDL 2])]) +with_clean_luaversion=`printf ${with_luaversion} | sed 's/\.//g'` PKG_CHECK_MODULES([lua], [${with_lua}${with_luaversion}], [lua_found=yes], - [PKG_CHECK_MODULES([lua], [${with_lua}], [lua_found=yes], [lua_found=no])]) + [PKG_CHECK_MODULES([lua], [${with_lua}${with_clean_luaversion}], [lua_found=yes], + [PKG_CHECK_MODULES([lua], [${with_lua}], [lua_found=yes], [lua_found=no])])]) PKG_CHECK_MODULES([freetype2], [freetype2], [], [LOVE_MSG_ERROR([FreeType2])]) PKG_CHECK_MODULES([openal], [openal], [], [LOVE_MSG_ERROR([OpenAL])]) -PKG_CHECK_MODULES([devil], [IL], [], [LOVE_MSG_ERROR([DevIL])]) PKG_CHECK_MODULES([libmodplug], [libmodplug], [], [LOVE_MSG_ERROR([libmodplug])]) PKG_CHECK_MODULES([vorbisfile], [vorbisfile], [], [LOVE_MSG_ERROR([libvorbis and libvorbisfile])]) +PKG_CHECK_MODULES([zlib], [zlib], [], [LOVE_MSG_ERROR([zlib])]) +PKG_CHECK_MODULES([theora], [theoradec], [], [LOVE_MSG_ERROR([libtheora])]) # Other libraries AC_SEARCH_LIBS([sqrt], [m], [], [LOVE_MSG_ERROR([the C math library])]) AC_SEARCH_LIBS([PHYSFS_init], [physfs], [], [LOVE_MSG_ERROR([PhysicsFS])]) -AC_SEARCH_LIBS([glViewport], [GLESv2], [], [LOVE_MSG_ERROR([OpenGL])]) # Lua, treated seperately because of --with-lua -AS_VAR_IF([with_luaversion], [5.2], [luatest=lua_version], [luatest=lua_pcall]) # use lua_version for 5.2 AS_VAR_IF([lua_found], [yes], #if [ luaheaders_found=yes - AC_MSG_CHECKING([for library containing ${luatest}]) + AC_MSG_CHECKING([for library containing lua_call]) AC_MSG_RESULT([${lua_LIBS}])], #else [ - AC_MSG_WARN([Could not find pkg-config definition for ${with_lua}${with_luaversion} or ${with_lua}, falling back to manual detection]) - AC_SEARCH_LIBS([$luatest], ["${with_lua}${with_luaversion}" "${with_lua}"], [], + AC_MSG_WARN([Could not find pkg-config definition for ${with_lua}${with_luaversion} or ${with_lua}${with_clean_luaversion}${with_lua}, falling back to manual detection]) + AC_SEARCH_LIBS([lua_call], ["${with_lua}${with_luaversion}" "${with_lua}"], [], [LOVE_MSG_ERROR([$with_lua])]) luaheaders_found=no AC_CHECK_HEADER(["${with_lua}${with_luaversion}/lua.h"], [luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}${with_luaversion}"], []) diff --git a/jni/love/platform/unix/cpp11.m4 b/jni/love/platform/unix/cpp11.m4 new file mode 100644 index 00000000..924c9689 --- /dev/null +++ b/jni/love/platform/unix/cpp11.m4 @@ -0,0 +1,69 @@ +AC_DEFUN([ACLOVE_CXX_FLAG_TEST], [ dnl WARNING: NOT REENTRANT + aclove_cxx_flag_test_save_cflags="$CXXFLAGS" + CXXFLAGS="$1" + AC_MSG_CHECKING([whether $CXX supports flag $1]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], + [AC_MSG_RESULT([yes])]; $2, + [AC_MSG_RESULT([no]); $3]) + CXXFLAGS="$aclove_cxx_flag_test_save_cflags" +]) + +AC_DEFUN([ACLOVE_GET_GCC_VERSION], [ + aclove_gcc_version_found="yes" + AC_COMPUTE_INT(aclove_gcc_version_major, __GNUC__,, aclove_gcc_version_found="no") + AC_COMPUTE_INT(aclove_gcc_version_minor, __GNUC_MINOR__,, aclove_gcc_version_found="no") + AC_COMPUTE_INT(aclove_gcc_version_patch, __GNUC_PATCHLEVEL__,, aclove_gcc_version_found="no") +]) + +AC_DEFUN([ACLOVE_GET_CLANG_VERSION], [ + aclove_clang_version_found="yes" + AC_COMPUTE_INT(aclove_clang_version_major, __clang_major__,, aclove_clang_version_found="no") + AC_COMPUTE_INT(aclove_clang_version_minor, __clang_minor__,, aclove_clang_version_found="no") + AC_COMPUTE_INT(aclove_clang_version_patch, __clang_patchlevel__,, aclove_clang_version_found="no") +]) + +AC_DEFUN([ACLOVE_CPP11_TEST_FLAG], [ + aclove_cpp11_test_cxx11name="no" + ACLOVE_CXX_FLAG_TEST([-std=c++0x], aclove_cpp11_test_cxx11name="c++0x", []) + ACLOVE_CXX_FLAG_TEST([-std=c++11], aclove_cpp11_test_cxx11name="c++11", []) + AS_VAR_IF([aclove_cpp11_test_cxx11name], [no], + [AC_MSG_ERROR([LÖVE needs a C++ compiler with C++11 support])], + [CXXFLAGS="$CXXFLAGS -std=$aclove_cpp11_test_cxx11name"]) +]) + +AC_DEFUN([ACLOVE_CPP11_CHECK_VERSION], [ dnl compiler, targetmajor, targetminor, on-failure + aclove_cpp11_check_version_status="no" + AC_MSG_CHECKING([whether $1 version is at least $2.$3]) + AS_IF([test "$aclove_[]$1[]_version_major" -gt $2], aclove_cpp11_check_version_status="yes") + AS_IF([test "$aclove_[]$1[]_version_major" -eq $2 && test "$aclove_[]$1[]_version_minor" -ge $3], aclove_cpp11_check_version_status="yes") + AC_MSG_RESULT([$aclove_cpp11_check_version_status]) + AS_VAR_IF([aclove_cpp11_check_version_status], [no], + [$4]) +]) + +AC_DEFUN([ACLOVE_CPP11_TEST_VERSION_GCC], [ + ACLOVE_CPP11_CHECK_VERSION([gcc], 4, 7, + [AC_MSG_ERROR([LÖVE needs a GCC version of at least 4.7])]) +]) + +AC_DEFUN([ACLOVE_CPP11_TEST_VERSION_CLANG], [ + ACLOVE_CPP11_CHECK_VERSION([clang], 3, 1, + [AC_MSG_ERROR([LÖVE needs a clang version of at least 3.1])]) +]) + +AC_DEFUN([ACLOVE_CPP11_TEST], [ + ACLOVE_CPP11_TEST_FLAG + + ACLOVE_GET_GCC_VERSION + ACLOVE_GET_CLANG_VERSION + + # Since clang also sets gcc headers, check clang after + aclove_cpp11_test_compiler="unknown" + AS_VAR_IF([aclove_gcc_version_found], [yes], aclove_cpp11_test_compiler="gcc") + AS_VAR_IF([aclove_clang_version_found], [yes], aclove_cpp11_test_compiler="clang") + + AS_CASE([$aclove_cpp11_test_compiler], + [gcc], [ACLOVE_CPP11_TEST_VERSION_GCC], + [clang], [ACLOVE_CPP11_TEST_VERSION_CLANG], + [AC_MSG_WARN([Could not determine compiler version])]) +]) diff --git a/jni/love/platform/unix/debian/changelog.in b/jni/love/platform/unix/debian/changelog.in index 4901a576..420417a2 100644 --- a/jni/love/platform/unix/debian/changelog.in +++ b/jni/love/platform/unix/debian/changelog.in @@ -1,4 +1,4 @@ -love@LOVE_SUFFIX@ (0.9.0~ppatest5) precise; urgency=medium +love@LOVE_SUFFIX@ (0.10.0~pre2657ppa2) trusty; urgency=medium * Upstream testing release diff --git a/jni/love/platform/unix/debian/control.in b/jni/love/platform/unix/debian/control.in index 52a48b5e..5ac5178c 100644 --- a/jni/love/platform/unix/debian/control.in +++ b/jni/love/platform/unix/debian/control.in @@ -3,57 +3,48 @@ Section: games Priority: extra Maintainer: Bart van Strien Build-Depends: debhelper (>= 9), - autotools-dev, + dh-autoreconf, pkg-config, - libdevil-dev, + libtool, + g++ (>= 4.7.0), libfreetype6-dev, + luajit, libluajit-5.1-dev, - libphysfs-dev, - libsdl2-dev (>= 2.0.0), - libopenal-dev, - libogg-dev, - libvorbis-dev, - libflac-dev, - libflac++-dev, libmodplug-dev, libmpg123-dev, - libmng-dev -Standards-Version: 3.9.3 + libopenal-dev, + libphysfs-dev, + libsdl2-dev (>= 2.0.1), + libogg-dev, + libvorbis-dev, + libtheora-dev, + zlib1g-dev +Standards-Version: 3.9.5 Homepage: http://love2d.org -Package: liblove@LOVE_SUFFIX@ +Package: liblove@LOVE_SUFFIX@0 +Section: libs Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${misc:Depends}, - ${shlibs:Depends}, - libdevil1c2, - libmng1, - libfreetype6, - libgl1-mesa-glx, - libluajit-5.1-2, - libphysfs-1.0-0, - libsdl2-2.0-0 (>= 2.0.0), - libopenal1, - libogg0, - libvorbis0a, - libvorbisfile3, - libmodplug1, - libmpg123-0 -Description: LOVE is a free 2D game engine which enables easy game creation in Lua. + ${shlibs:Depends} +Description: 2D game engine - runtime + LOVE is a free 2D game engine which enables easy game creation in Lua. Package: love@LOVE_SUFFIX@ Architecture: any -Multi-Arch: same Depends: ${misc:Depends}, - liblove@LOVE_SUFFIX@ (= ${binary:Version}) -Description: LOVE is a free 2D game engine which enables easy game creation in Lua. + ${shlibs:Depends} +Description: 2D game engine + LOVE is a free 2D game engine which enables easy game creation in Lua. -Package: love@LOVE_SUFFIX@-dbg +Package: liblove@LOVE_SUFFIX@-dbg Priority: extra Section: debug Architecture: any Multi-Arch: same Depends: ${misc:Depends}, - love@LOVE_SUFFIX@ (= ${binary:Version}), -Description: LOVE is a free 2D game engine which enables easy game creation in Lua. + liblove@LOVE_SUFFIX@0 (= ${binary:Version}) +Description: 2D game engine - debug symbols + LOVE is a free 2D game engine which enables easy game creation in Lua. diff --git a/jni/love/platform/unix/debian/copyright b/jni/love/platform/unix/debian/copyright index 96a64fe6..6683e79c 100644 --- a/jni/love/platform/unix/debian/copyright +++ b/jni/love/platform/unix/debian/copyright @@ -1,20 +1,27 @@ -Copyright (c) 2006-2013 LOVE Development Team +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: LÖVE +Upstream-Contact: Bart van Strien +Source: http://www.love2d.org/ -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. +Files: * +Copyright: 2006-2015 LOVE Development Team +License: zlib + 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. -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. diff --git a/jni/love/platform/unix/debian/liblove-unstable0.docs b/jni/love/platform/unix/debian/liblove-unstable0.docs new file mode 100644 index 00000000..cdb5f04f --- /dev/null +++ b/jni/love/platform/unix/debian/liblove-unstable0.docs @@ -0,0 +1 @@ +readme.md diff --git a/jni/love/platform/unix/debian/liblove-unstable0.install b/jni/love/platform/unix/debian/liblove-unstable0.install new file mode 100644 index 00000000..10a01ed0 --- /dev/null +++ b/jni/love/platform/unix/debian/liblove-unstable0.install @@ -0,0 +1 @@ +usr/lib/*/liblove-unstable.so.* diff --git a/jni/love/platform/unix/debian/liblove0.docs b/jni/love/platform/unix/debian/liblove0.docs new file mode 100644 index 00000000..cdb5f04f --- /dev/null +++ b/jni/love/platform/unix/debian/liblove0.docs @@ -0,0 +1 @@ +readme.md diff --git a/jni/love/platform/unix/debian/liblove0.install b/jni/love/platform/unix/debian/liblove0.install new file mode 100644 index 00000000..93beb289 --- /dev/null +++ b/jni/love/platform/unix/debian/liblove0.install @@ -0,0 +1 @@ +usr/lib/*/liblove.so.* diff --git a/jni/love/platform/unix/debian/love-unstable.manpages b/jni/love/platform/unix/debian/love-unstable.manpages new file mode 100644 index 00000000..31aab155 --- /dev/null +++ b/jni/love/platform/unix/debian/love-unstable.manpages @@ -0,0 +1 @@ +platform/unix/love-unstable.6 diff --git a/jni/love/platform/unix/debian/love.install b/jni/love/platform/unix/debian/love.install index ac4c7a44..97b36762 100644 --- a/jni/love/platform/unix/debian/love.install +++ b/jni/love/platform/unix/debian/love.install @@ -1,6 +1,5 @@ -usr/bin/love -usr/share/man/man1/love.1 -usr/share/pixmaps/love.svg -usr/share/mime/packages/love.xml -usr/share/icons/hicolor/scalable/mimetypes/application-x-love-game.svg -usr/share/applications/love.desktop +usr/bin +usr/share/applications +usr/share/mime +usr/share/pixmaps +usr/share/icons diff --git a/jni/love/platform/unix/debian/love.manpages b/jni/love/platform/unix/debian/love.manpages index a510eb2e..09688d49 100644 --- a/jni/love/platform/unix/debian/love.manpages +++ b/jni/love/platform/unix/debian/love.manpages @@ -1 +1 @@ -platform/unix/love.1 +platform/unix/love.6 diff --git a/jni/love/platform/unix/debian/rules.in b/jni/love/platform/unix/debian/rules.in index 9ed42c92..f55809f6 100755 --- a/jni/love/platform/unix/debian/rules.in +++ b/jni/love/platform/unix/debian/rules.in @@ -1,16 +1,31 @@ #!/usr/bin/make -f -DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU) -DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +commonflags = -Wall -Wno-maybe-uninitialized -Wno-strict-aliasing +CFLAGS += $(commonflags) +CXXFLAGS += $(commonflags) + + +%: + dh $@ --parallel --with autoreconf + +override_dh_auto_clean: + dh_auto_clean + rm -f platform/unix/love-unstable.6 override_dh_auto_configure: dh_auto_configure -- --with-lua=luajit -override_dh_link: - dh_link -plove@LOVE_SUFFIX@-dev usr/lib/$(DEB_HOST_MULTIARCH)/liblove@LOVE_SUFFIX@.so.0.0.0 usr/lib/$(DEB_HOST_MULTIARCH)/liblove@LOVE_SUFFIX@.so +override_dh_installdocs: + dh_installdocs --link-doc=liblove@LOVE_SUFFIX@0 + +override_dh_installchangelogs: + dh_installchangelogs changes.txt + +override_dh_installman: + cp -f platform/unix/love.6 platform/unix/love-unstable.6 + dh_installman override_dh_strip: - dh_strip --dbg-package=love@LOVE_SUFFIX@-dbg + dh_strip -pliblove@LOVE_SUFFIX@0 --dbg-package=liblove@LOVE_SUFFIX@-dbg + dh_strip --remaining-packages -%: - dh $@ --parallel diff --git a/jni/love/platform/unix/genmodules b/jni/love/platform/unix/genmodules index c825cd70..ccfb69b3 100644 --- a/jni/love/platform/unix/genmodules +++ b/jni/love/platform/unix/genmodules @@ -113,8 +113,8 @@ inc_libraries="$inc_current/libraries" cat > src/Makefile.am << EOF AM_CPPFLAGS = -I$inc_current -I$inc_modules -I$inc_libraries -I$inc_libraries/enet/libenet/include \$(LOVE_INCLUDES) \$(FILE_OFFSET)\ \$(SDL_CFLAGS) \$(lua_CFLAGS) \$(freetype2_CFLAGS)\ - \$(openal_CFLAGS) \$(devil_CFLAGS) \$(libmodplug_CFLAGS)\ - \$(vorbisfile_CFLAGS) + \$(openal_CFLAGS) \$(zlib_CFLAGS) \$(libmodplug_CFLAGS)\ + \$(vorbisfile_CFLAGS) \$(theora_CFLAGS) AUTOMAKE_OPTIONS = subdir-objects SUBDIRS = SUFFIXES = .lua .lua.h @@ -129,8 +129,7 @@ love${love_amsuffix}_SOURCES = love.cpp if LOVE_TARGET_OSX love${love_amsuffix}_LIBTOOLFLAGS = --tag=OBJCXX love${love_amsuffix}_SOURCES += \\ - ../platform/macosx/OSX.h \\ - ../platform/macosx/OSX.mm + ./common/macosx.mm else love${love_amsuffix}_LIBTOOLFLAGS = --tag=CXX endif @@ -146,8 +145,8 @@ lib_LTLIBRARIES = liblove${love_suffix}.la liblove${love_amsuffix}_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS) liblove${love_amsuffix}_la_LIBADD = \ \$(SDL_LIBS) \$(freetype2_LIBS) \$(lua_LIBS)\ - \$(openal_LIBS) \$(devil_LIBS) \$(libmodplug_LIBS)\ - \$(vorbisfile_LIBS) + \$(openal_LIBS) \$(zlib_LIBS) \$(libmodplug_LIBS)\ + \$(vorbisfile_LIBS) \$(theora_LIBS) EOF genmodules >> src/Makefile.am diff --git a/jni/love/platform/unix/love.6 b/jni/love/platform/unix/love.6 new file mode 100644 index 00000000..3cbfd4e1 --- /dev/null +++ b/jni/love/platform/unix/love.6 @@ -0,0 +1,33 @@ +.\" (c) 2008-2011 Miriam Ruiz +.\" (c) 2013 Bart van Strien +.\" +.\" This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damagesarising 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. +.Dd December 23, 2015 +.Dt LOVE 6 +.Os LÖVE 0.10.0 +.Sh NAME +.Nm love +.Nd 2D game development framework +.Sh SYNOPSIS +.Nm love +.Op Fl Fl fused +.Ar game Ns .love +.Pp +.Nm love +.Fl Fl version +.Sh DESCRIPTION +LÖVE was created to be a user-friendly engine in which simple (or complicated) games could be made without having extensive knowledge of system or graphics functions and without having to dedicate time towards developing the same engine features time and time again. +.Pp +Developed with cross-platform implementation in mind, it utilizes the latest open source libraries to deliver a similar game experience, independent of operating system. +By relying on the Lua scripting language for game-specific programming, it allows even the novice game creator to quickly and efficiently develop an idea into a fully working game. +.Sh SEE ALSO +You can find more information at +.Lk http://love2d.org/ diff --git a/jni/love/platform/unix/love.svg b/jni/love/platform/unix/love.svg index 03267f0b..552ad178 100644 --- a/jni/love/platform/unix/love.svg +++ b/jni/love/platform/unix/love.svg @@ -1,1030 +1,962 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + width="141.73px" height="141.73px" viewBox="0 0 141.73 141.73" enable-background="new 0 0 141.73 141.73" xml:space="preserve"> - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + diff --git a/jni/love/platform/xcode/Images.xcassets/Contents.json b/jni/love/platform/xcode/Images.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/jni/love/platform/xcode/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_128x128.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..6aaf64d0a241cb504ae0258a55b8669314e09a86 GIT binary patch literal 8353 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 b%m{#hjG6yCjrfZ}J_Gc1jINbmwGIC-2L#k~ literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_16x16.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..81b7da9fb0b6b1042a221608be6b6f43988cde6e GIT binary patch literal 713 zcmV;)0yh1LP)Q5eVnGqcy3F(j-d zvbQkwp+KP`d?+lU7AnYx3c38%+BoW?p#jijJn{Zdgyx?&dm4yf9JamM+m|Hn2S9)j$7tP?F)07UApS$Jr`$8 z?M{tL4h06=mfgm&43+{?`@@1p%DuAJcLejUS)8?=F@83P=aT9?fOGlzjdm z=jH)n&PPlFMb}1hy3(?3@Uprhz!AI60a=z>Akyk6fD`z6fDITHW)(Fyp{u+0yy?g< z0MVrLvr%g_Nilv8G!&uEmtyB>+TM#pA z-nj*mEPyq3OqA=|Pxd@^03z=_?{wQ~8287Svz4(y*xa4>j86Zk4L@u1Akb6X>Ld^sU1}RNXKJ1L%Y^7rBpFh)r vJ>7f#sNY|GI<6(V!|~^RtmdULzXccoLy9TsMR~3B00000NkvXXu0mjf5sXLf literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_16x16@2x.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_16x16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e28e79f8323e27cac555fbe8d64ce56f6a4c61da GIT binary patch literal 1535 zcmV~Wf*_n_paCLHjuFm z0}){e3jz}n;s+X3%s@s|L_&xlMvU^GBAN&oV~iMth$b38(v2`gg_tp92n@tAbb~nu zb8K`Q3FB*Y>$aA5z4oqm?VZovb%So*pp%6+dGfyN^4#zDe*J#WOEgV`JJ~4Q;l_3k z2q6h2x)#`z!_dkzyRkM1DF^jXp}^+6+lcKT+<1J z@t$Cx$EScK26k@DU%oOS0=VZdQ;yk5c*X?Rm)^pFYGZ&IGXkinfEJXaTaVuu!2@OS z|E+!?as;;^0tX2P6$}Rg{(Eef*SO>I3HYfD%A9eKx$qIN zB=N?6cl~<-Tt{l)uIFaJs41C7ZpbS@S4kZlt93)A%0K`YLnk0;1Sb33o3?CQv0*?0 z#yz)?GRm=5Vt`W+D9-k!X^{EM%s$(sh#|1ptbKkjF0O;JN+$%unnA#iA>&d__jIn_ zvSVdlHv!sP;Y^XCR^zH+Xt>v%_gLeC>n$F*-g0xNKx!%* zdT4dubE*M1%r+>e8$OJK9<#sUj9=jS;i06|Phtq5tL4UMdvvUy4e^>VC<2|=L=!iT z#K?rqiXqS{dq0e$6i9$V+uscdgGW$^>Koi~!L1rfbw|BDhQLFAy#IBZ?A_fXsZoO= zsBC;o09vXOBXP9U0fHc#)9+Pu&1!A_rK0&@QJ;#)5p=%lRf1JUf@)?VSs0s=4vrs6 z!Pn}(CGf_ED^PL5Y0Sk0zdoty-uCLUiY=?oU%D9SLtt6?m-1=$y%q zMG+Zq8wG!UQ3#%v_JP42m!Wu11Ns7q8kE*!)e{8Y`Kt1*^ASAQZ%w%D_*TzZe@l+2 zgq*sosVF2Wnu=9pAd^jlvd{NG^XaCz;3tpO!jVD;=HT^JO;DLSP=B%4MGkszym&A__qZEfZ7G&&$EP*DU6Ve~fgvXc81uF_sm&XrB3r~W( zRmIYbKv0)o1P@{akN_u3uFExrbBoJ&ITCWik_8_&L`FcHBG0yx%tDogIhQ$No=aAMDyLDd6=&wem#M#hB0)Mgv0 zgUbjmqsmF>&=RIdgc>1&39R?J0qFs<)X`kGKX=#h9o7BS12=saEGhZ4x~8Lfz8sW1 z=q9?OfEL0NDu<1N19a;(#u2j?P|RY44~gyP>-z^!=wYIhsC8d_QW7N>gu(`>NyY>< zLNSXFeQXH^uR6{YFWg-=F!+FnFkag}Z{4J+X_Jl+&Ne=TbxH{RLPEzBF;~L51oSPD z0_VyaeqFS;vgoGDHK=z%Ue3DFS*a5aGhA|ZNC(HWpofHt=a;-yKc2F`c%tzi=a9aP z);_T+>8XqvKP4xPTqIIs1ypC(m7QPJeET+vjBm)FW_r7C+<5ZZn0YxVEI+44X#T6* lQ(ubU%AntdcdGp-zyNy@7MM({7OnsQ002ovPDHLkV1h%0#2)|v literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_256x256.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..bfbccd33083ca3ebdd7e439412d1eec6c5d65c7a GIT binary patch literal 19751 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 b%m{#hjG6yCjrfZ}J_Gc1jINbmwGIC-2L#k~ literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_256x256@2x.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_256x256@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..28054d712801f6d3c18ce34d55056eb49dd35342 GIT binary patch literal 46694 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 W=MBqyyJrCScS}Q0y;RNS$^QXTt&s8n literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_32x32.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..e28e79f8323e27cac555fbe8d64ce56f6a4c61da GIT binary patch literal 1535 zcmV~Wf*_n_paCLHjuFm z0}){e3jz}n;s+X3%s@s|L_&xlMvU^GBAN&oV~iMth$b38(v2`gg_tp92n@tAbb~nu zb8K`Q3FB*Y>$aA5z4oqm?VZovb%So*pp%6+dGfyN^4#zDe*J#WOEgV`JJ~4Q;l_3k z2q6h2x)#`z!_dkzyRkM1DF^jXp}^+6+lcKT+<1J z@t$Cx$EScK26k@DU%oOS0=VZdQ;yk5c*X?Rm)^pFYGZ&IGXkinfEJXaTaVuu!2@OS z|E+!?as;;^0tX2P6$}Rg{(Eef*SO>I3HYfD%A9eKx$qIN zB=N?6cl~<-Tt{l)uIFaJs41C7ZpbS@S4kZlt93)A%0K`YLnk0;1Sb33o3?CQv0*?0 z#yz)?GRm=5Vt`W+D9-k!X^{EM%s$(sh#|1ptbKkjF0O;JN+$%unnA#iA>&d__jIn_ zvSVdlHv!sP;Y^XCR^zH+Xt>v%_gLeC>n$F*-g0xNKx!%* zdT4dubE*M1%r+>e8$OJK9<#sUj9=jS;i06|Phtq5tL4UMdvvUy4e^>VC<2|=L=!iT z#K?rqiXqS{dq0e$6i9$V+uscdgGW$^>Koi~!L1rfbw|BDhQLFAy#IBZ?A_fXsZoO= zsBC;o09vXOBXP9U0fHc#)9+Pu&1!A_rK0&@QJ;#)5p=%lRf1JUf@)?VSs0s=4vrs6 z!Pn}(CGf_ED^PL5Y0Sk0zdoty-uCLUiY=?oU%D9SLtt6?m-1=$y%q zMG+Zq8wG!UQ3#%v_JP42m!Wu11Ns7q8kE*!)e{8Y`Kt1*^ASAQZ%w%D_*TzZe@l+2 zgq*sosVF2Wnu=9pAd^jlvd{NG^XaCz;3tpO!jVD;=HT^JO;DLSP=B%4MGkszym&A__qZEfZ7G&&$EP*DU6Ve~fgvXc81uF_sm&XrB3r~W( zRmIYbKv0)o1P@{akN_u3uFExrbBoJ&ITCWik_8_&L`FcHBG0yx%tDogIhQ$No=aAMDyLDd6=&wem#M#hB0)Mgv0 zgUbjmqsmF>&=RIdgc>1&39R?J0qFs<)X`kGKX=#h9o7BS12=saEGhZ4x~8Lfz8sW1 z=q9?OfEL0NDu<1N19a;(#u2j?P|RY44~gyP>-z^!=wYIhsC8d_QW7N>gu(`>NyY>< zLNSXFeQXH^uR6{YFWg-=F!+FnFkag}Z{4J+X_Jl+&Ne=TbxH{RLPEzBF;~L51oSPD z0_VyaeqFS;vgoGDHK=z%Ue3DFS*a5aGhA|ZNC(HWpofHt=a;-yKc2F`c%tzi=a9aP z);_T+>8XqvKP4xPTqIIs1ypC(m7QPJeET+vjBm)FW_r7C+<5ZZn0YxVEI+44X#T6* lQ(ubU%AntdcdGp-zyNy@7MM({7OnsQ002ovPDHLkV1h%0#2)|v literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_32x32@2x.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..75847d1ee8ff87189570caa3de82326b8ef0a45e GIT binary patch literal 3538 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 M07*qoM6N<$f`X&ABme*a literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_512x512.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..28054d712801f6d3c18ce34d55056eb49dd35342 GIT binary patch literal 46694 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 W=MBqyyJrCScS}Q0y;RNS$^QXTt&s8n literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_512x512@2x.png b/jni/love/platform/xcode/Images.xcassets/GameIcon.iconset/icon_512x512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..08683780fb5958937587ff1671fe3c5240d99664 GIT binary patch literal 112048 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 z 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

l?mXZtnLl0bdxO0P+JcKbFd0>H;@ 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 bV}D`by6(W2#Ww`JJgLL~)#B!p#`%wjynGWU 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 T_HpSm%XDC``5y9arwjiDwhZ|* literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/1024.png b/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/1024.png new file mode 100644 index 0000000000000000000000000000000000000000..6c52a9deb5cb2b729a14bef2d0e2514fc79856a6 GIT binary patch literal 135112 zcmeFZXFOc%_dYzM3qte~K}7FFbVJmL=pu;Tq7%K&B%+HF1W`kjC=movN0jI-dM}9* zebm8}XFKP6&dKln|K&4p_L$G?eeb>QwXSuoYpoHjqoqc6jqw@?1R{H&uB-) zKtu$<0m{r51{@f?Ri1e3yW4yFSv|J{DcZVQ+p#`ywQ{i2v$L`d@a(md1>ul8Jy2FO z@SokuCQhg6YQVtvY6h-}4fOTg#$lvMQ=a!&ak`t?z$qdk!g(I_bMX1#qfevT6UxarA6ms(Tt;WFgLoW{&sTT|nDOF#20sZid)b0-Iu zs<6;Bo4Fx#OkK9?UQ@+;bYb1a+iy9bu9%!&NguOe)}3% zzQ^Uym>{9SwCgxmH%1z zzRVWY3j{A}Tz%qj>MH8_oyB6U?yWsd&v|2dogGy@3VW9I1oyLZ;W*n&+DEF*1zjg zC=<&V*lKKS9F$wdp}#`et2_D2N2H0+0Y~c`s_{3a-VvjI&Kz0AIlk+zvS8`2D{$O@ z6#%*!CswthQP<*ZJo%iKNnmj8dH-a&an073F|Gc#E6};Jk|l5i5t(nY48Fq9pWc*= zcjfv#c;ljbWYHJ_K8UT^`gV<$ucg1vZ@Nx4tzW>b#(q$P{>rERy^pN$R;4o}D*4eE ziuDq4=QNNqNG`{fc$}IDq=piz;dd4ZG8-^o(kj%8JslJS*#PHSg4(W(3IgSUs+Pvb z@1{qitIA#d>h!Z-pK7%e!nP!-$OU&6X+P+F3_m$Jc`b|&eD~_HukM;6pbGB0J6qk? z*QftzOg6c8&EfN|_vtpf&O=sZ7ptntOqWdHk(pdwU5^r^w@T#x@7X5bAXe>oKO46{ z$=suj%^sTF6=NP94wZ{=^&F>+qA;!#@EHKnhP5R1uPrw3*3B)poUdoP(qFmoKaV`3 zwIkzwwwKG0&^>H7%vkJ)C2iLW0v)SnCbPBeB{j^roSxLx)k!3B04H6UxD7ah?C`PQ zUo#O_=MG!B9ySy?#yh~JQ-vR}fXqEO8M54sCpBq{TZXJtjXNU9=7^PmGyXNx3nI+- z@87rHyrEP($nD0%HtZO2)d)nG;J{?0>IAC!w|!{qTP9~_q{`mEx01Pvu76#Y=mu(g zvVyO&yj(V+wt-Ig8`kQyj4F$hz7`MWowdBn++U6Pw)*wAjNcw=<6x!3?;8cM@;{yd z(S>JtX31jqsI!{ag zQbsaR$M0-%FB5I*<8vaK4w&&@JJ`R3ZjFCj@1nEV`EUx2aLu)cGe$GwfQ~yD`>S*8 z=EQ~}Skw;Rr?2fV+5WITH}?gdfJut%VGp~IrR%Evs6`}jlK+Pp5!@$P$bpNK?c&_v z!(PWf*HVDxLx2A$R8fi`ZAh#Q%XP@d>hBn(mH^jvnC0&ejPHumc3EsbPZhEG{=t&q z4>zGy#x@5WQL3?o9CtUWV7n;LAW*M;+Yx^#YP&C$&q8|l%b2JzU}#~`F$3Q%e}*#&gx1j`(>Q#A*?a@C8+5;SvU&rfm` z#Rq_sb*OAXtiaXsN;dtTIXOu;eEo`i$iLhghnBo4jtA07A$w~lH#sqJ;t>*p&JVK| zxO&P|YXOVgZi>Gmxy|s{eX%*fHXxv3Yz!)O=}8JKoX7A`pg+*|Y;PgqI)kV!+0{x{ zfq#YX{-6^IOy)h;QcH-%cV#TiPPeDlSOj3vXYo|FLsk6Fys`DSn54a*$;4fq1+)Bi z6F5>NZstn+lm;NW=%DG*n9Ay1%F{B+aS9NtvgGc9ae0VLS$@9t^Pr&1G2n)gsH0(Q zSZz4%)xt!1R;mObQQ+O7GQ6YcQD(d?{8F2i8cS&P6ar!mlsv*mMR!?}lQK(tqZK_F zfOBA*Uk9c(MDTz>0D+GAP#Xgo`hoMF-Da!Dr#1JsgHQRW0OLeS(#9$|NE(Ct(}bXb z^Itugg#m>52P>ZOTrf8}Ah4Bt#Asd}B@k$YZ+EEkg_)Tdw2c?|-al^n>HFAz^OHC_$#EhM!3$ZdSOrz806z^(i*YG8W#OYf_y5Su@K{BZY8 z*sW9~1A|~fby8mV-rnBxb0Z_45A%>@S7Av2BNQf}0fA(Rupz5g?jH?++C$&H`E$L1 zfb%9zlm#Jz90Yn=;yG(j?CLZ7WO6ce($S0DEfUyg>g%GQMBvD+b9{yh7vhuW{J#;0D%;)WeW5+*4NgaEEdE|m;TO6zitfN$bD<+f7}DMNdztU`0@9L)z#Iq zCax1cRp3q)SiOC;8U57&kFw_CjJ)x8tSOM-w(Y9`PCNExCrHey{na#?#JtB1D)f@w z?qH;@I80{8*kxafs%mgCb@sAVOvzVTZG5HKK3Y$zx~X~}E02Z#ZrRVq+Q65zhpZ2| zgO-iFZLje?9AGWrUi|5hT#}ByDbcI`J&MxBrc(9H8PjrP@{YA*MuSqBL(cr+j6>{< zbHE!{6=fBXEcdqa(<-c$@#HQQmsXbV(V)aeAcoF~5L8PPcKY&vOoELXef{BEeg?^4 zc=Iy^kw7hb`NpW5J;65c#m_QONn3__&!^i$uAS|5 zK`xsEP+jUib37d}2SARIDlRG6B$#~r)O!T` z;-C+wn$a(*?MQm9!I(VlqU)V}Q*qvF+wc2j>SG%gYs-z00xpF0;hO1DGlOVwI4jBMaz-|St)nx8YVd9< z<;_uh41gWZmGT6b1o|&d@>OE@SO6~11pw=R4iyp(7jYQMdh;^@g4teZhZ2>l31!u8 zGrw@JT;MwO`=x)up4M8aU+jg)kt{Z2>Ecb3QBc-LkyEGU3bvk=3wAGL6*T*i| zb`YZj63y~*MP|7E2vzln&RMO zb>#DhnLUB-rsl_{nSS?|!!{Z5wBEwR650rzxP4s&GF-ekZ{hWg{-Os1^$@bdu{e7Y z4B+v94xq3Cah?70YsMjWmk7(mhN2m>H1!ktwxl^(ZQlnV)*?8G-17R(JyGv+Y!}siK^?KI<$YpJ#Ra+iz!T9G1LBRp<(>0RHti%mX}Gof_je@2R#E!}kfP!B2b1 za~U96ss=Xe!V7ileO&$auI^qoXSJXA{Y_kYT=||#NsnOWuJ7Z?QbqA`U=>O2Z#8Ub z{b+9h_Q}mcP9~)Ok0o%zu^eentu-@5*C;tr(4kQI>l0LY=CjG1vBc>4)e23d#99!F z?HC*f_MG}6R%N;Ki$D}Itx!ciPRXH}mAm{Tr++OpcrDdPe(>}Ex$T2gkMHr!GJ>}4 z*tDG-2+af)=xuiHdq{m0F-GO}IWbB-+<~Z5J}RF_hq_>zIE=@aa!!6)K^50JT0szh zE+-ebuJE&wJfolnQOiH=@s$QMI5_A)O-Cowjtw?Q__bWu68qfU)ryG<6kLy1Z}su`9-51>`syhyvV!zp!x(_H3n?ip%Ov@8+uB;1#Tc2G)Y4K@7y9-P!+B1> zqUoI<@vYH{j>0{>Fd>%j`8wrcJj<_NB{S=2SLsLUxa?4fmVR!8DYGwU$OWASR{~_6 z#_GvGX&-;Q=(f?_kVnUQw1sW@ZvR-#2$1Nfy6uY;wV+iyFQa$ zH2-oi;9G7`QxbP-`0~^#1AW^GE^$Ex+p;Y#z)GsbBK2J~nUkWKbXi@2a%Nr1YaMm{ zAtBCx{?!h@Y!R!$qR*C~j-naO(P&x533heoFFw1wYq>QqfT&n2liVcb=xh?5V*jPR z903#g{H&5e*iEuatDGyw$`Gtru2DP&xwx2uV~on_|AQ3*P*nMWAI8zmO}++59uhn9 z^0*W13feB)J+T;mD)eNKz;mU+s2EdRRl)%rGBR)h|AQ+1_`GT3jx(*>Q5*#LPrFa& zKYjXyttcxCDo7I}W&a~Bt-IeBmFci+C2x`^t^ z%KqVX@^9o-B!nfK`1wfp7p;5Y z4rKCI+I~Sf{wRxY6^jZNd#C-&$B~?$%g@FH z0^sA{r7yrsh_q1Jx$-TWyZkI~esdzf0knMa3Bg=kx=MN2hi1J+Yy?;vzq& zENM3%2kWlIWm3!7(02*ld{p&w`*RE|D9Z{AH~I2xwBl!X!v0I*|LhD?2!|gH*SXHg zXK8X~n_~-f`^y%ZrjKzNAmw#>^q8$p5^jd(VCu@$OuD!P?J|I+c=CUiUv~Gur&&Wu#b6wPq z4pE#76Y6M+{Gc=j=L|>K8I!vLu6dEfu2$Ffr+-l+_B9XBx*-@uS+w%%<5MyFKwjaf zp@dy%0LL1w%aG6p9mh&#`P+z|NGX^#z5|}{zxHSd?h70kenlg|dv$m` zI6Cfv?fNQNJuvDT!Ki1VTYa9)w4C?tYin!G!~yEP){@2W=e`{XVv4o08R5v)*vf?N zpAc(^&4E4SNv5CPX%|fjdc!2&;NEe*1y2a`y{gKe)mx8y+@6J7bF8)BTU@iMci%~2 zqsAgdsAU|5BM6VRc{2wwhvyr)@Dm^h_q5~v5r0A}`>3(;ac{i`4|;KT%r7ZQHx7~l z+`iHFVM0{o7c7u7FNP+ycQU^|x^KhCO#$JdX(#56tx2&A^>2f}zQY@{a!ab2HK44f z=ExZk$YKMf*a71Dua!KW1Y|(7@41>B?$ivoj@}()nn@rw&}R8iof6_IU{}EYkWYW6uw$dL-2S&ICoOWPlh zpioKaWl@Qp-ZRHi>Bxo1g0f~%*w&ZTmF2gCw53zpSzfYS!5t~sFb<^Ad6CaoTi2pQyC-$;(SoTP>7cd%@9e@xUh_%N0;&B%MA@WUe)in|n zYy2V(>@kg|_}|FiliRSqDwXxNS2&XeM{6^yt$WsftqbA;!(FE#-O=RO|}?=o~%?9D`*pU@88?%=Ry4b$sM|=o-e5va-CAZ-Otz8 zT-U+^{w3`lP)u8blsiER{X`1Ko$w>4rvYoJRm?KJPXT~D=j?=%i#DJ>gk~E-w0}3P zAJSk|g;$qG(=O{qf-`3Ni}F7U*~Z#Be{fvrY2CXssggG_ROR|5(^vmuF<|^0GOT|Z zeirpZN_Ofr*XCzfVPT=W^l&H_fn>>g(mk+(!7R>SVv@2davus0JlSG*c6P@0>}4P6 z$}M=?@pQa`o}RDS*84<%M1$@=mTXm4e34M~eJju8rcL<9*N#M*M2q_et2R6cgiTb8 zNagP3#$?Xuj~|D%x&^8g`-R_=$Uv`N{2L%rt57Vkz_t-(bm#6)2!3g?DZrD?<*@TSMWEyRTuxx$1}`5o1dUQ@xMl(DCtc6z)|%rEtRq3ETp$ zP+|x*k0l&`eCPz2wwv`TcC9BCTdp!gXQZ=%l~v1#q(e|)-*BB$$?K+-2qnr{S&UHi zG2pvBs~RsYVEx3DbQZDvljzs!s<)Y>SIdX}?HvAt3B&VLi`zptR8&-iq(s7~WR7X| zSqE@f?<83KwXv@_Q{pgKdz+Fn-?3<kEj{80mkX)RUcY*c7AKID}= z(GU8OL5h(D(q)8P`CwFT$Q=$rndrES!_7t7x|U`jAsk*@TyO}3|IG%ltA=9B>M8vtf>3sJu~NMpZHF@)WC({wXmx_OO`0cyOJrq9RDYOjZ) z>egBHvgzS|s49NC*=H*{_1MsGL5-gBA5-Ik)YI@T^)cEI^l=bC9Q5vlV{`7><3KhFH#k~7ZeNid>ezKMpnBkR~W>}lsModEk7=Yjm*u?fOX2;hZOer3#DIO@ztIgdR>7vk?CLQS| z5{@MO&`DFQv!g^d+KlfSn*0(q>PSm`SHRtS4C;N*QdfGD7}v!!cGDk^rbJ5<91tP9A|ic`Z*4T;0plXY=J(L(ll;+%0!tF zd1Xa~kNr7>U9TN3rZmH~I3qIzaX?fUzhHdW%lz)z+kTzp>-vxKB2Vof-(CDHjxk^K zDSh@BcAWt{^b0mr{Q^Ov7JezecY>PsGBq&~WD$27CumOuQGj>D+5RFkAl)CfSZ96x zv2Klr4~whMCPt&VqpHQG^w!_k_qy%BJOC1&(GJrl(by3GXK|D~%^-}35e&ov_j#>; zuWS*gli%)Xe0)5%q_Pq#W2FvYRNh^n)dn+Z$AS>hy@riZdab-c&671L+8Rv{>$IFIQeah(lbm%D7)A=pi$g+|(Lke|Fw6VL z1M*Jms$tba$}Df}z|V)=m#f!kRc3;n4HH#$og9kpuZi4Q5*Nke8Tr7LL_f7DY|K1- zp~KIofc$tW!=HCYF{`J){!pvLRR(g|UP5kI^4w+cCv$S6Dkas2NhZ{%Sg zw$W!>704%Y-#+b973dMqOik&o54$HV6oodz_1Z0HMpvFDoiY1nj#r?Fm%9@Qjv(@K%E7v{zgzqj-_6?+MCD->#xW;~l&- ze@O?8cYj>%J3j>t(@e}HUBXYpXa2B0RhX`>W-nj2-cI?7ZbP!yjEir3o?@8Wwi2N9 z0+lMRf@nG(1qiJ&e6|*wRY`hJ-GQcE{FldN`Zi5eE=;{?K-pcIKw{n{b!co&^PeN#iE_EGE@-e zWjLHt=2~_A5=Af}w@?1drb$@Ich$+W>8-Sx>j%@+47V)H-UTGZ>8>7e>8&m$yzad7 zLes0c#c`}?m>G&fYy+Tio8+IIMd658nx6I#1R5*)JLqL#Ew@EZjU`C#4s$jICO;gm zk#E8Eto%qJ+=n%g2oeDrNjMn5H|8uq+qijQw3g#x2^ate5Y$~Du}&QR(! zdIO%*&*G9=h6Av?8XN-&9MsO#U2cFr@_7EH&sW}5!}0a?@d+uYt2@5oBNi~3p!=l#;T<#hTJ;Y6E z-no;X@8N(8B=1NTVB_3H8ylTTGeB&F4F9X>h?<`fJuyFfHMD3o4$Owo!VZ;(m~tTK5`ImkLpF62AHe=kf}WK(prD381kH zJ0Z7I)D}_;k8_vuclgR!Q5~$PFj{m(3?2AYi0x~f8;B%kkA@vsJgzDz_h`AC+M_qU zg%7{;zD$B&QCZoxDNwdjK=1^(!2f3rBAjoy)hJ33PA{2 zO5GFWQw~^&o+_-E7cA>?mJ+VKJZK`NA1<7<c3P@vMc z`^=HXpbFcNmgswvf~p+j@m>F%c#rBd^QsRr@Ub{&mh=w~q+EqAH2M^jmX?}ZPOWZ^ z$oXe152HNg?HoSoYj`UnNsz%K`4$G(Af0lWIEI?wTiv(kNMScv&km2P;7I%e?(>PN z_fG{Af2U4VR8-LYl>#;YBYf52Snw(oaQkAT$B(7uus&8Ymd-wWg`qMsxfhjhKqShj zehN$@fPmZ=cE8<-P@4>RbuZWIIH2{KVhTk!DDquE4%ThI#2u0YZ0+bD!QKMepEfy* zJnB*VHSphkd%zoCQeaK%TpALy;at;~haPfvJdg&Ri}&@>&uMc_!VZicA_+Mz0`{ymw zB+))mTuZ#3hGyA4v3tHm9N0@zQG!>znx5)_1`t{cR6CWg>~O69QObKLumS=CSly>j zQG^@kj74F!k6nw$f6ds|@93(QtM8u}nIX4-%nd8)#8S2@#)jOXDRH2WiV5F=^%p&S z42w}!P_G8ZDRLMbFVytN%6k`3dwn$6dI!9MEOGtAkBjosBUD zW_2C`P@H~~;!1xVS`h>#(O?1Eh~%NdCbv_s&M`A+ESyRgV!!AxAoic#>qtaejVU>A zt_P8_`20Gpx$Ik;Og}JD6BHeY`xI<|U)*I@DUPu=t^b*5 zY?M#>B5wec2+i#8bR<(7y_g8!tKm5#F1A=Xos>I45|pG1?}uL z?YAC&XL8r1iooS2iTIzxC^#aZ`z>d*&=nF3|F~$ZcEkp;qdwsJ+?VY^eMC%3Mcgz} zLlBpC$g@!)jRU5bT|zveb(Qe@vex`F_6i2CLD5IJC8CO!J8@Pis7VG}APd^!G#?;; zCRm&fx`)<~{0+ocp$0Nqz3Q3sH!Z&;$+29;vcHc`oonP451=*fH%+0C>pQ!MrN!i@ zA;LB{3^?y5Cfz0Y8vBJP9bEnPhCwfp4hK`)HZM4gP-paHoKG^;)lf@OF?|G39M_lS;@d_%xL@o)23T zckCg#4B4ytRgrM!gN=a6)V_zPZ$w0UZxPk-d`X&+OHH8Z!+-Y$^O%H~MdSvJGluz{f`NAivx(~b)-(HOsYBh@@;2cPekYIRc?s!l#ptA0~^O*xG_)JWpwj5-- z?5TETxMmO+SgJHf5`VTF%96@OPIt>s{=p|$G35T)A~vdn(^WRi2<&?u+2hj> zJm^fIOHplTu_B~|DtoghWPA~mG@mdTRZ$HQ5*v%T8j5B zpn^}q`^_M=#}Qq4{?6ZC;^#_YQAhRP{>%JP*k;?{-P$Q9EvYqXH562sl<=9WQ}K9( zSg+e`MI|!wfLsf?&3U0hVl{dn64Q&5uS7mt^_qD^q^z-%B@VQ=!GGWa%crLa*#`DU zT$Z1+ZH|Oa5Y-v5kzHTWZTyP(-(H+9H5QnDEtUEGA-Sk(d-Ip@O-r|L_8Lnfkvl`0 zcRS&qexg*aL9>vs;Lt6i}|(i>S`@2(snsv2y$DvGB|iv1B;9d2539^Xg!3&7L% z4c;#t&OatDeW;IWSPh5{tbh;H^mB{<_R0TLj(Kz~_9QEPf5OP3V#||&j72;2D#r4X zue{M@4cI~pqHv@i=jG+kU=7IE5!196@hzC!FNL&UR4J?o@oF6N%A%q;C6;AbKKCrfI&}hr)V(Cc1lIgw|G_$nmRbThY+0!HbrWJ%d!b{74 z2_8CEkTu^T#F1D4(CcH7VYl>4Z7XM6jY{JJrzKOk?&Z*;zTr3s=Cu>`@?qp=_L zi{FN) zn-?bC1`YGazzFeb4bX+1k|F83lT`+8L>F)K$|5zCF6S8w9>78w<0Rr7X?kz#N5-MI+W|M;4?y29ru zm?E2u^(bI~O}=MvPT33+lDd=4Q}L6R>z=o@GS}lfwm2{%Aedj7qo5lyOAkKp-k5BI zYHqXFM2jW}6dkiHl6n_G*Yq$XGxghThEyv;fz6*X509wPKtBkaueb3Yt(ZZm!Gs&p z88lqRz`DIil6gZ%hnWy1t3QC(L#~Ee;j@+4om{{}rc?20r3E38O#J&GZt@|dCQ!fO*(T$rSf+K}sNnXIc6xFxs;JVK8$^zi}XwW-V^luj@b{i zia_?7?^5`l#dkehUVgIa?(S4-Y!ObT6FKg!4S^C4?EIpT=$=i|5gy(|Q4AyP@@XrL zE;cl0PIfiQAYKpt?m@%McI|auo2qF;{s@%uS%&CElsI_ANRsVJx3Qwe0+TRJjlf9Y zlu0ahmpP@;k-#|9Z;K1FfOlW^jOo`0ZN)QWtol(}()l+59r2e)ZVM3>n)2n?WxnGT z8i`(dUP~|ju(axuoEsE}F0eLH@RQ7UsI4b4&{g`1%u)khpO8n726ut5{ltn3r~sh( zE+`;@(rBWze@M&Q=fk%Ng(8hm+vD5AUKY0lQ7xw<3^%vOT#fyY4}*3J$v!w(bmSa= zo{Fs8hE3ty5;;NU=ljj~y7K0#S!dlPphBWd3g5l5)SiC(q8r$U(L2^@b`t z{Y@e8F%46J0|jRe14~Mg1*o zUeG1kIbG40oRCz!=AN*}Jm!fhDwcEL@nivHkiP@|X5tN)3rOq8<||emRiLJS=v=(T zpXL>Gy3^otu>5WKhA8+eAdUV#ujWC8&6IGLhc36h7_K>c;F>G?@Ey0fBd4wr?P~5B zDVDeRa+?!HLxXO|hm*c%StuRs9hq0nkQa7?BEkwR4CW3UN=iWuNlr#M&9xT# z?ac=u64{jO+pheF;4lB7?}S$Yzwi)CM?&?Sfzs2fbz`X(x$)(CqbLtH{KE@^nQfMF zTLamt->1o^rkft5#L1P!57+2Y--dn--%rhUOsr{OyFlWT^LUs&g?AfmqJOQ)_}5e2 zjv&Aj=Z9?^sf>U4s%WPY@NB83W>Vkj$M!kLYjKX>o#|TT0Xk%sl2@}Q3KXkXWB6)D zMn;gq#kB1}%k#*et~F85-_|qgnxT$ni%Ssinp=%%R)$49l6f!Au?-U6xHXnvE^p~1 z@+>z#6CDKQEi*k`Bb`61e`n@_?dZe0lhWtgTGmU;AA@ z`}G5cgeQFU8)=etXCHjT!KzYK#Z+OZo<40?!vvsZ%7SmtO6Ir#LrM8PZT$PWWn|k%rZNMPFP#WlfJoD`r3WlF)=F zAg6Pg6l)0jd=17)&<0+y1Uka|RMDLhwKQ05fx>};*bW{{!0y=cQz6+g)qos6^L{+W ztl^K#cHoA>qlZnz$fZ~q)l>U>XJ4rvt{Rb;o(`|q!}H#r^LaxR`5EXtdBN|>DJ-v- z<>j-4qyrP1ayAW`>x+QKvG2_iF#Ou6pIYPdHH8BJMxJq9iL?1~7Q{X$XuWDU@B0N+F}j2oweaCQNLTQ-3OtS4rP5lf zFeSvWv*{D(%O$VhYxI(&bRMn*QNlPcopSx_szhf)ZrIoEIDEq4ge`o@Yz&n)Go@;a zevmz#BFw`IL>CB(fCKGr^0c%xtl|`b_?Ok(DS012RWL@<-F_pe+0uMOYP#nj$ zuBEyL{F0H9RoZvi5@!cF1L1CZ^pJ}6cV`Ko(I?re%ksaS_JAEztetBv;eW6UuRf!p zz@mJbJrKj&^oCm}bX9t=n05gg8_cWWO(0NY_hqv>Ui*v4 za$U1qA6q}^!SnJ)2C(dD7atQV5mno-C%Mg!V4VTn*LlR4Lksw3CGG{9LYbUsNKTPfJ@H9th01rrr)++S+(?Z9_9ApUJo#W>&BOnP z!fh3Z_P2ebCo$Arx~^!I2@-dG*pw%MEx~b<@4ZLdwOj>eeBIVFP1)&hg<1Z}m`khBmG*F@tASJN{f9m>dGk9b zDHt>p1y&JXPFmnb4}06%S7}(~VyK}q5FX!^{0VsWE={Gif6;z;z&b{~>@%M~03wfU zFBDm}!aH!{viq_vS_8f&(jk5ie5>M99s>>VBT96BxgsQ8HbL}vmfL$Po><3RUu)C9 zvKb5sIi6_V$O-CGea(21Vnts&8;z}Jr?vd3`?74?rTsmI|xbWr`jbSJ&)! z>URXkc46gbCMDZ+Vo~#wW4y7@TbFM#wn|JY;guK5b|oG;)5FwHA^C!VaK~TGU83A^ ztX%6ym&S0r4RPX}u7>G(&hsOw7rEsOK!K7lK#XIjb)DP8x-HzU>$soYsaN#6%d;Bv zO{d|dkYLL!x37ENqM9wUgDPYewwXcipUe(>R1QnoEC5`c()5KRkVGBYzPC-hL2 z?git6SOZg3({GNE2Ph`WvlRzO%rWwkacODkj7F5S^T4wz==bZpvURG>eT?4PE#Ewo z&3%VXHu=!GUx#YGtzFLB;vew(QZRrOYiFu+6-9H>+;WZtE0^wLy&vhm30=?`Q$hv( z?8-K7+&(*cAdy8s747pI%@5-q#=!+D->7JeQhOCJ(`NoePw(*I!u9Wqjj_P61Z$Jn z&sGB47-){b3yq)X06duNOIF>VMp7iusr;p1I&e{CIGxpojL*}TJw^|{@EOu-`3U`N zT(KiSIu`qrlP^2sAunXP*viHdLE#(toBP`JT{hlhi6&dW#+|WKZ|^>8*%#P-X~{L| zV{P8vcQw!*l?Sx)xPvZt>(z`53}ibOyT4Fk=VT5YvA#iRcM<#2@hJkB0DR%lM+6zk z_>A)5Q1>OOF9&Dr_O=6!f~E(t=A44p_;7n9?HBuH4>6>b)#nWmLopoG5P6&P8wG}8 z8sjoNJQtkf(~Tg_C|+%Ps!oHwFVAXUo!0TW}FX5QA`L|DYZ95f>RBAjq;obRJ#J{# zz$}ytU`Z^B+LW7q&mpOtgkL(J=F(ms%@G=n4S<7;eCl4eGU-YrgJuasWWR@sAv!vq z?F6VfO(@&f%oKOWGY6dmvt;~%P-}&)HF59%`E{Zz!LRxTuZ_i$Y@~yB%{VjmITyyR z8*N2}73DNO9NQLh&Vp3lf=&conw{jmIqRK46-6Fx4Nh5ogiIv7?ruQnao(6JgI{djtS z)!gSsk`s>t{~_S43i#0?%a*V3Zyplvvvp2)@w^!1M(r)(%DXC%mQ~Sp63M4hwsA*B zkC22s7ii74b*_`SDZQ6$)Th<2adN)HxRu%t{F!6#;(ANq_>+<>BeIV4)ADm)G(Q5F z_qT|emvR?#5t5~FI?9kHyZJkDh*vDUH$2+tZ0G01NLuMB0Icqn4r(8oay4$&129gW z4>KR28O3k)P76~nVxjQM=W{GOHi16$P zHlN{@Og`=pzJ-q-@S);5uBpVgp)GZ6|p_OLV?(pjPdc5A~P0-f`ta8x!Pm8B1WA#z_YMjY|)h^KBFufYAz=2B*p z*~~nwt-0>`THB_B6lQ%QuP`?c53w(+6$ebgECJJQ?%UqN4JxlwE+!x|OmiV*3aBIW zbp|SQG$lrUdnxsRj@j~%s0STfPnX2CW{=l*`}uRZ$|V~wluUj1hQq34tdb!zn_K7C zofnGQ6x=q?+wN~KJ@?Dcr1HGLe3o_+Thcy|^9E^Ap|izP6ErJ5^g1)2|8?9iFFCqTAvE$ke5T=EICD@0p? zt8-~&bBsjS@hK9CKW7r}THMrq=vtLtLeWc8={IvcwnZV=e@Xfw1A`20D&~hT@Ae4~pbn zbQUrpV4V#K)&!46z%0aI-I`cwMsR2Ze$=x$Lw`3OdmLK;)h2Y5GLt#D;AtpUw+YTySLAjTLhI$^punJX>frqtn$4&lC9sW%3Kxu@>#+lheGy~s0S zMS%^)ccExeuKs@BPl*X9qF-!Dm+dx;d~m?T=&E}c&p#6^`>JW~Cy>exOun<$fKl>c z_bqWG&y(O~mHBHND%I^AMlwkBmf79QE<;9fB~^KQUu%cW;kxNcu zVrt3)=wTK=*46oenV`Y^`Q}G^3FcggVLREDwq=fzMY>TNG&ws8O5) zdxKc#{Yl(y>2Q|Y-_Ph8Eiya&4*B6dQaHh{_sKonKocAPA5rh&Pxbr%kDp_NGLDfw zjy*HW$T)-$vNI~OLb4*8bFA#hNHUI1Sw*rP8Ciuy$llvAj(OJi+3WrJ-G2YU^?Y8B zeZN2M7dhmna3``-d^1~vlopr3-CCbaNLaO}1r_&6Vc(G!Yyh$t0UIuNf60{Jbp1W+ zB%7@RcxlaU&B^Fb3WO3U5`Z+-wG?xZ7%yNcW?}RmPHv2@o#v44aN#Vx{q*uIeIH%f z!2D|k{nE~JEMu-jJJE(-{Xrt@*ZCunKgkvLqMminuQs2x&Cj%*t~vCAM%JjsIG}MG zX-O{rg_GYkHcopJj_}J1JA3F>ya+<_G2;5pCbOKfH@(AI$})Z<@7Rw3R08xd z#yd7z1=v?s`cPH%yy!kfTA1^7XX2@+UoR@>Wm(qLY>2(_>R61F(EJUj@9c)Cq*%+$2oD}3N zc(b(3G_`KS=$iOB&6!luaGt1#gDJD7QSe4yfST_AqRZ_#;y=@&;ZX|}3$ZI2idcOs zZ+00$zMrCEu)Kiwp2M-aGbn7Bu3&r?q%nLA zdQ`7A>}bY!pYe4?>FNF&;W^4;(}fn%K_E(_e4E-j;yUnqW({t%fIdt&KpiCN@xG@6 z`GUyk0JVZzX(iZQw|`M);vO#GsmMuXHiTHz15XuwW7`WKZ6|o9On3mh3clKe5UjQY zX@9HW@$X_zrsh=M4we0i_bNNw{ zb7k_=v{`V4ld5UWze8>b*K!( z<=g*voc2)a9*%+@$0-lNSd|rw{iEfy#D}B09+dQ3hHbS&hc+7LqdqFr{|A{>*@JD7 z9JYU_p@!aiBWE{5V4pkQe-&CTq;wFzF@JYx-Sbabo3pcXfP~ejMbhZPem7O}fug zMH%`=n+{_d{#H?UI_%W_V}NbFcdrozR<@cRnY|+g?j(?jh_yXVIrNzMif{Y3tNxf) zK-pcj6n)OpgW4_7>^&re2jlUS@cFf+7vW@An)5y5Kzw?(>Ej=c5g3AX<}xX__TdW^ z*-FHaA{@5!)AysYl;fc`P*WcJegtgA`#u6@VKI8``dZER=`(`zO6meeo&t1I?}hRO z?YblL7Pwsg`km3Z7#9f?YVW?kR~l|+W+oSL6Z!v{3<3#JfHAx6{cYHgJA~&+k~jX@ zE5NAw@)BM$5N$(pEcQ+ULXuQmP6Dv-@a=`4YJm;+JVRatm8U1(56Dtl>A0s)c2wam z<(!_))hQ?5IkXW}!@lUx^YJNZTm_td#7koY&vNDMMlTFyHQ@bnDDi2t^Jq27PQ9hm zVb9(AM;O>%?cbV?E)y;`T607V``i%VbugXUCR*F)4iHS!ZH4b`Knd+vvNYo0)*A2o zKNB>PkLgU$hit`dOBOe7U|v4lHkw$$_}b#wNo2PTEcw+(aiH0aE2(ah6doi@?4*8j zjaAWQ4=kHdJejGdF~`gMoT|59#>?LjOKc`?_RRm!dQwFQbd(X_Q+VKw_N-A2idS96 zPz%FCtU4VVk3`vSKAQ2os5FHV&Ic&eWY}ezWO=iSk26V8O z0DBHkR#ntf{ruaAerLi>HS>9=ccewh{HRw5-Si%`>c=#Cs2E45yLH<;&_`8R7_FwO zL66(=;x}5LqdCB_8o=wJNe0v^i?mW*G5aYi(?#@p{sG}S(p?^bqh5B8E z{x@G=dE@owwe5H!fneo)DD@)Gp%F;~U0d+o*>=fA4gO;)OW7O@>Do_*IfK~xn0kH? zKW2kl*ukEEwQHwAVl-676I$q)JehRQ54B~F%S1mELU_`z-{YvPMH>ah%09Nf@!py_ z%IJlI50I(<{e|({JP@(RfH*=tUFagI8FjbF6a`ORIs=-$hIoY853R?(7tg9&KjObRJJX*gVeo z?W@vD@OOB8>sIf|Go2C=SnI6(W@Es%jA%jq%>u?mWf`Ua*(D`}ND(bf2g4l@dmTQ@ zeNjxPktl`BC8|!>?Z3Y5dWa6-X#x6F@Z?etDpq$4m^W7V5uq_C5nk4kO@=p5CHc7? zWg5O!f(|i3fH`T4khwI87VWizqw~Xb8t6*4!1l%FvU1+ZYPh9x+yiF8wfGm>hKO?i z_08VCtaMt%&x(lyUeF&D|KI`*L(lLKAR*qDym2G1K>wQ=JTSfLr}7CSv23LNdh|KV zME8>5=u!F+TJWvvqgvF4@2b7EdhPNY^r8!89AQz>lqRE8pj*gOGWFKu9+?MqT<-43 z(23X#<-zZ}P0v!usILJ?YC#JXR3!1qGYj&c;y2>&-h2pR%=$Vu7?W(n$&fgJLieou zZ30&Wm`VQoe$uXd_uBTaPC$;N`*fzqMazdByEpig8CF?oI)o<|C1{70FY!V4+~I1b z1l2sL=`Daj5KP|%)1@!%I)YnWSAV41|A^L@LQdVhEM-!@V)XWnFB0K(V8CQ$^UY+b zqixS;I$vC3J7t%OY=m2;G{T6}6JIJD%wm^?@}_coH+up1Ef}5o^VI`S*QGQ1$$he> za|rgN6J!A_TJ${+k9-4c{pIN2yGO8$b?>ri$O9OgVkUnWET1Dsu`~~hiioUIV)-&120`d&a3w9;o+~_Ye#Ij>E`tF z0xy$RkC&Hyy)xd8dbv})g!d@!dIpDhakS%5bCxof^YE|8?#+{sOYw&z3v4mr-xU`F zHkjCMZhe;v+oHDi^Y_1BQ(5UN>*qVy+em9B7{PF5ue3EBkRI9`Ap>@^0v5soI2nlx z6MT1P^U45ZzN;4&U;;V>W{pycYp7AWmMu}gV{0i@PuUP0&2pn(K^C_qmn9juo8r+C5*-bojh6c#Sg?S>hIofu_w9Mb?p2uc>>t8a&NyaYVCF=sCv zwV~Hz1y?|xq_>Ehou`kWSMr|jSsrNa0^AfxGgATYqHU@(S)kj)wjXqhC(Ub)o*+*l z5ZdM4>PCR0tOly4vZ!j~xDx0g|=Fy{7IYyVHwBHpnH_IX+_s z5*8&c`5Mm<$@=ZsXNu(1%Xcd4#s}NLa^w&@bHQLLXr{Y4-COOiqY%EL|?0e5P0*elDGON#T8D94C%s+5t z3R_T=X=QBvjnxG61%3zSz>9k4%C(k{Ut0VcE!0FiqgOuiAm*|Q$Guz_*KWSY7=1aX zlkWG%E7{87Lmo))Y)dxkkwrq=|Wwx`qwoIMU@;(~9} z4>mS(ad9<{Pfilsu(Y3a3k(0TG*keBHAUlK5aSa7`W2QtB*JeqsVRru>VfsZzrjat ztt~(a%L^WK+4oclwlF(aYwZ%JW2Q@TjQ38Oj8uIBZB81OxnMl&i!PuB8fjl&KaXiN z;YJpF0u2WBe`n4@hIl>!$o6RQJJe4pwtI4Rt->+0?0gc)*N0}P7k%bff{F3+B(tI4^=CHLf`r|5)oZu#43?B4 z2fjqH8-;yhSFTho(R{;Z^$B&CJVb}-#}*0Y7J}{@7_nXj(hefZ6BpI3d>lc+-86jj zC!H9aj4g4jk(elw$#@A`VSo6ZbJ&Wh7d6weC`iCd$ZW3rKAK#3D}ZYc{gbRwn6P;U zJtbv4uFL048?s210TLn5gvE8RII)4-{_-j8Jt;gf1L&IBEb3#v=W{?kyc`)9e-A1*18&<+C;|vfSK;~Xcs}iXiO;o>@3JmR=)J3I4F9og=dHmSY+%_} z2T_sz3>2nRI_8fIL~v~H^yn==#JgpmW2|^H7_sYzdzqP33Ln zUw?d9{6SyTa&z14o5^a=>HVbtU5u73jwkK%A38eKzY0LYw&r>ZmfDjc9N#)Q?^`Sa15pF;@q3ZRH5 z@(%=JEZE>b&34KEzy-+CO1%^bz3d2bYV=R2hFS>Wqt3I$ff{}@oK(!V-K{Pf7Iglc zH&Xl6=Ek9gN^eJk>QSA+HFAT9f*RG4vzXnGzazfV{m(&-nk07|NC17i{R(ca9Y(4E zWsBUYZm)@)jyWm8_HC>5My!ul}ugzF{F?^E!P2Lhl1$_Gk`6?7F*)D7Zw8 zQpAnx5ph4xYm3hVlzn07Y{J~@vyJPRk7GMLUk-$Mum}8VbVT<<2iV6Q!ax;E%7)%E zfA!HJP{K_TC!qTadO~qaO5IMJtm!i3Yy>G9CFZK<^QN(rw?_!kuQ~KNk9cr#Yy7i# zb)c`i`DZJ*LrNu$Ca{8qpo}L*+5NPrd=RFXZ4hp9Li*|9sqxdnJ1=`s3qHg;fcsU~ zbe-rq2z97~DQHy8TrSf$-8DQvX0mDvzQD(YvGFY!2d3N8o_`QWXT8aAzg2fv{aaTa z2^T}B^9%J!xZSz$W;S>YW8>!5`NE3VS@N(_{&Txg2ijvT29$Ur$Bz zy+wMozd$6QiEqdM{F$%88G136qJyJ$hm-hjxyH5DQ){eUeG#wT7*VAU-gm2m{SqbG z26qIq-HzF}j6T?SGrX&*+x#cdR$IcWuojq)i}6Gug9EHzN7j)BKJJdmu>ML9U1k#% z<4_+3kwcGPZ#mtGt&vX%83p?%n+x2Q*<^kEtd>j-q9%dzr*V6*yJ)R?5H?A9Z3i+J0zUV%ja1Hek8wUHLl3PXaS&egC9>&WHBWh4W zw>ZK1^pa!M;-@vdFOFSmW7N?f(U>^ar^+wO z-#Mf@e4O3q=wOk5Owyz(@g|-0^r$?C!KbBtTm5ikFGy0Bk4ALHD(pUPg>P+WtA}7f z%Bd6k6#PU)T??RJsmej62psI}1}=|{PdjwC7#_-(hQne-@~+w9j+=_1gta*0ypZ3K z>^#zP5S4?vMGX&VWC7Q<9I)KD3@Xj={nZ0b@X8$83CQvsk&%*9cjiZ&siN1cn!e=Z zzD6~U#J%H8{q6fw2PiS0E~AP^cdScwZ}zk`^%cR}nru!Sm}O|ZV~fct|8pDTs{~uk zasbY;Wd?+HP4FPuksHG9YyR5L%oa=FeBAHaV8!X@XN(33wCXhRld+Re=FuCWT>1;` z_!_bz;fe1T$|~{epI~Wd8!AA-)9sm zIiC2(%0P9AhE1>W$Mn7GpCK8N#l>LG8{Y4(u(>b*plLdlH$YXTsj8}K(>sa$H@pXw z3kvBtKdcbi-#-5H0&c=c>?zEB^z>3-AVBMleM*C zk~-388hYckdFD)-#WGcY$L}p+-^HGjtWGV=nLO6xVDNd_+gzxtMB+f9tkbCS$?D?8 zZJW+tWDp{d@Xn)&-VD8uT z>+FIU)vpjY1%eMRGM`-|FC*tPRHvXNl`isq3j{Ln1fr%8Aq0OinF92l_^;a(sXFVuy#cwfNu`etYy5fXwM+3 zc8HYQfv#~omXR|7m-l7X=62Ax=IpL7!BbP0-!G%JOM;kjxjnUC zgb_<&*Zx8e+WCihmRzrJ)`_D|Bz>z;BK)039D}~LAZJ3zztV5+8adjcxBdPnp;gyzG8T3h@Uu*hRlst*Lt{UEbsYobLiCgm)N zn2<;eUs<~I^in}F^H+fMcKzf+^=E!}Pf%7@^uq+$M!vOVq+P}+-Mt12+3cyocy* z&VFt*TEXfi|6MJL9WhGco#-scuMxNB&33<5bPPDa&t+dHhP1chphj|?+7Hwhfo+Aa z{X@r=(rd5npP!RWIsl zI)1=ve#97a+dBx&8ZI39LM{SX5tpiSzT)5f?bDLb_#%DQ6bbB!?`_(dwLbi~z8$hb zDg66Tz=4>r7u+3tUX?Xsl{@U5LVWS|0;_Fty&-!Y?4h~u-Rp?@l&ncy*k6(JkC>QP zaM{JvWX%nsY2g*q;e-W$ADc7ycW=~4{@M+UGPb6;9b4BDa4`**x%~CATzt*|Jzc+1 z_AQEHVK(d*dS*9VGF|tX)ZB@jEa;BYI;Q~P%o}qFPPgCbkHzjn`Eh~72yjp4EqhgP*l!5;m-D;$QM&p433?9rw}#2Uts{+Tnh|xqHd}& zW8v}6VO#Wpg$*+<9up)gZY)l(2e#J)QB#SONN5<)T6LbitV3n1RHXfNC~LixGjE#i zCT4mDJ+pkhJ~Ch7$HrB?=z68g7%@sp3Y~qWu6AuPNp84lKst#b^IA@bBmWw+C%q+` zeJ*C?AkZQXmqfda3`p%)Ub8C!uL_<_MjZrrcw#;T2F8bLL@uO^vi!Z|z%@dDfTd1u z^gs?STs&)b?tJ-V$B(d_f%bWQjmoka;ZMR{+0WHukVzv=qLnqv zsL_!l24YbNUOVZSg%>x_r-q9QukEsVHEO9{MPc&#&UQvDZ|4j(lxMPqnqU1p1A?y( zjQjG9JsWi2;V>hD)Gf$Fwj{#PZ@ORdHB6=A^drbX?or+I={lciiGK)%K4WK9Wo06l zPY*q#1mcY7~8(NJB%z z$VH>^4g!$XMvIzvlrE5m>p5Pw+$nv1A0Gv}ugMQ~)S0^CK9rtk@v`y~E)w9j-x47;Ij1M=kyUU=fQ%)DE_hwr#I@_pJnIlV?9g#Ex782#ijo2f?3Wd&mOw zsEDY{Oy0T^Mn$$49pA-=pV6YucdnKSzj6G##8k%HF>YptDN+EMm;zn*CYX8Ce#_1v z1r0mKtW-a*UKAf26!TM5tnLF9wgld@BnKge0*&1gX;Bu*swl2KF87X_-6l^w1Q)Jd zE%IyFmkO4xPc~SgL;ng?>u%Pm+69c7W^6AW)5n~pf|3mp0SO7NVknEkjNfZE??I7) zL$aIGeOcm<@9JnO+C&1f@c?Sm(yR)dZ6;jqpd8)HSm6lXa&Vs7o48u-z#5Q5mQsML}BT_@U-D6;`>jZo{i1*l7skIpG1E`u;a9Gv?B zT(P8al8ux2L)K%d9_q#CWK8dA7E8GpvuU7?x`<7e7#+sWEt2N+c;a`fM=P%5#>IOV z#NBp^FM^gqLYL^d#eA-LqoQ(Cz1sxIxX$TjU`jz0?lIeag0W zpRa1nXM@pce(GCXVsrdN-K`?$1kpf{lTfX3Dp&Y6aqYL4pH|*3|9Iab@AiiIltn}3 zHa6H|A;f65!F_TbizNu`Se^&2^mUx5-1t#BX6uk=wmI7+NYZ%?L;`}wQ;xRDD0uwE z$n2H3RSrbnJBDM2Fq1_Ue~4cOLUZRypv1#;B9voGu`h-)fG7|Le^g>uf^8D1%RRHu zUk&QJK^X@jb-GScw@j02Mz1~+hHES?##lAHkHWUF;-qToL*L6?cCqlJU5pR0H=duZ zKBfn)@{oX1yEs>&L_ms_`1)BxaMX`vB$3E1_;T_W=BW++Dr~O_{zi{z6&+4`LDvzK zBJSw_gyrOBJgQT`%|s7A8x5mRLsFpN8g}#+kT^~1ICgGm4g})TWop6;W`lqUK~C?& zZEH7T!7jFBx{Y{b@R0~tsv>W}@D1+3#fU^IXD}}aWctIL_KcV*Zb@kVp}@PKup@P7 z_r8W`9fwUx$0fSDJQzSN?EbQ^(ae?nOh1QD7bYydjL_1BZ%+CC!YPt7NIG(4101<% zR)}+GIg~8!osMZ9F_Q9nc>QUg1j+1Uo&qmw>PTUiW|~N!Tu}@XCe^?Ka^qZCFaw@@ z>4%Ylpi6EepBn%l)v-1CU|y5jeCUfLW}e#d=fAcuvJ=@NVJX*dihKT3qeJS(5n9=# zKtPhHXM_JOK+w>&&Mkq-)bXUDAWRHZYo z#GG~Ot-3zV#%=P6U$ax5FQC|;6ZAl546W%S1DE4183sx20RJMVkh5=m+}v#-O%N{R zTg*Y%&gs4k<6VVS))0M!@QJ#FR{x;)tFY~|`(zh%b#Gov?2>r{vrj-t!OLEv>BmOH z_4}uqX;_2m`{6S@Q6kWz6Aj%k)>=eK3?kf%il2-un^C)UGZ6yD)o9RbAvOk`FEN`| zas*g*n9*x(1gEKC*dtsYJm^)^V5!H-j~_pfUQ?e64b0CSzCu8V@iOJ16Jj|GzXiMs z6I9t&&t85pqL+Fum9lE5m17-kA|if~vbvq^-G++$S)bBzb$1_m<&e&CkL7)#YS&JP z>=UFwvxsIZy|A z<+@?}-V*7}HyGK&*lPI>}sL$mZ3XOWL*hB$BQY3w*^aZFWt=47oIgbPWjVaX z&?LjKPCf(quKWTX3S~Z$G7yX#xVLP8~92_x_e zg`SlB`!SQ(nn~-J&vbwZTg?~*D);cU7Yln@?gqf6l4q~YuD*zHl%D^#x# zfgE&^4U(%bw~;I}k&wM2?^&jSD9B`Kk&W^<6a8JI^Q+8pD415J9bAf8rWUaw7z0<7 zHj+|#sr&adIVFXN2A*WXLSH^0N3ehZpA?em{P^txN%##9t}GG}clM}i*%7%Bx)Sd< znV~5ETl?OnZ~{)8KHlTes-06dN~D%igMe)}Y-)vTEu$4ApdTAxv|Un>=ieJ{m%QJz z`=kh2!)a5Jys_<$Y{u#^laO=>>vP0XUU5B{>-%Kh8L{0XG~s z{=IVI(@fA;w&DAZ*O?mE79yHd-7)EhvqmoIsK@cE6pRQxcsF79WyeQhna9bI`_*VH zAKpGDid#!w)D(#s%+P8r!j#vhg29e)RGh!V?KsxwnWQPAPp{}c%V&DSX`D)VfDg{= zP?cuQ|8a#LY(*_ekTB>5y*VFtyN_zy&~}?C_enk5d=#DfFSVq`u@>0Lt>Mvd;zKq^ zxjOj=Vdu`za7U%CiI3j5sYuljshn_9)E8%1)go;Y9><%h6R-hAqGBA}T=vgiOyTz6 zH7M4;zn*%4h|6zv^?@27u}8EJ=^CI)O&g?3%}`KhdcmWktFA@ANVu0t@bOl>oY#q_ zgov`lJMpQ5w^oTKdmHh-N<$>iIGrv@dCog$3~iTN?m>w_IEgdMI3@a}U7BX^cmI+R_iet=>Ra@7~UsfI(dPL5D2bmn%ZJa6Rt_ zX~cNfMoN3=M<^tg6~2-b5g4&>4Ci|d9<&LZu5<6i6v2|1e{ch3H$>&7z@MMtDf4~>=3(*^7&6bM1432 z<}Fr>r}1a-A=;zlUcZ1tiS2eQV{3r)zh*PGTnne2DnVaj7mW>)s!c5t08t0en`lK8 z;6?9HQ;IVS2$7Km8d?396HJ-Gr=o(FQr*Qjd31t)i0qg>=ToN*m|<9k5rbiQYD!XD z8N*NgQk*z0&Xy(rIYW>6sxuy*^5q87(v85gpW%c2gFX7fa={{iTf%lNU#60@W?W;ghl9=yU68YrvbSpZ72UaN?&gRsF#pMu(5#s5{bgGI-6^zqSs#x@Kx{i z@{e2ZCXRGS>&M#WXV!V#7XH;Vz%_2o0QpzFKwexO%s4^vAd6#Kxs#mJe&+7LP0|Uy zdW3FI?sPt)38UqS66(B~0EQtyZ&I)2O4NRV>R29vkTPvt6$>Fn8SjYOrqii z91Qa0(pvz8JBWpawib!#J9%KbEV=o@`Fa%vvmX)bKk>5|5;9X4mO|AGcB%^!Ip{UTL7DNaBxb29+)F_7Xz3XQAEW$-hwAxw*L+ z;_RUa3rt%_9cn2?Ugxh(d0Dd2djgA3B3cU&i>eLv1TL@njc9wHrKF!@oozLS)-D8b z1}aMwMb}8*EU@+{LtTS3QBjJXyih+Y^_~+QzsSx{$B(C!R7xlh=4|phEUQh~wY zMmCOO%R#WKAvGJ9_&55BAhCU(;mf19u0u$Jo`v!_hNMoDCx57h!f!`{64{SO99Z@1 zu7UYB$WT1IvI6SkJ7jSn)JOBJnoCH9VG$W;9uAgLiNSPZ*90=ybuQ{**!l(GKroQy z?idBpp6oV;?=(IuE-r>kxOZRVJAOH6FCSYukrgB)`X1`nwHZy7z)c465x6s9VmOsX zDvdcL0G=HWx2p6|e~_(LhYU_2I^7q4AOr0`zxR;xp#JG6P+|%q6`>LjGRhppG=H;S zUMweP;vLi0t4LkaSnPj7-Lj6 zCPYY_dC#-qsif8FAbPf;K->Cc73SRrFGvnk_bEe8z?hfOf2GKHpMt+c|6l;xi4#2& z4(YoZ1$Gr6ZB}2dl|L@|Ad@@lC7(bV^Pu+k@9pWI)S4C<(InrLBc?Aj-!68Nvna}o zW>LR8*U+J?gXxs=AJP-MRdbXDzsPE2Xahk(ponty*k|%GGA3iRZjQtW7h02*{Egpp zhwYCLK3G@nca{((%b94Vrm>#X&a7wZG%9K77 z#;3!e^JoL&7;vSTg*4HqsEwqE5{#c`6q7&{{fuvK1K;`a#w`&PEOcr_ojfLCb{VP@ zry7IycY3EOqmeRH7i&PzL;Nl`_SJAj0{yG`+P8oC4C4CC&x-g@F55C|Xf3%;KA4br z)>mg+`u1F^Y6lf}g+*}7F25g^IQn+#F+tM`k8cxl9rz67GuE+%jTV7H6MUMZNr}qq z39;v`rVLl^1YL=yCmmxT(TXP5%GOMyrHZpj7F-N26@G#pUzFanWI`_Rrv9iif9F%C z_SN-#k~}7y(7jRmJZISY=Kc};e->V#eE05Ms}zsSy1+w+plYJgZu$3GQ$Njw?n@qF z4VI6dB~$G_PjPgPqI&7L*!HjX11PT|=+rikP-`H2kDdG&I(B#P&h~G}HQ+?iabQ_W zutta77X<`hTm5|Mv&YTNlfPb%&{F@ZFMZLrnl&IqBA{aA9uSlg z3+im~<^hqY+b_A{QRoh=WTm;7G7yk(SwL_!&5}Pv8aQa!0DS~-lzP1(=?fMHG&;bN zdtzHEA(sr`;#k?}vJkDBommsZb8~D=bkdg9N7W2%s5fsBx{~Zrchna{q@BG$NIrFm zATU`Xh-l7JLNRC|g9R}!<4hfYQiXsK3|G3Ofcf94hmt1PZ@ziGmC#MZ=_qAM^U*QRj_~d1#zKi5r;`zn38a))?W=)u6R!z@ zBiSQ)uCQ>xsh>?7rHz)03iXIy?Fr29PHS6-8I+(p9&t57`eUs}!(Z7r%XX4zr9eO-=X?9P4H142#gl7R zIZ>0@@Y&Z+SLW32Z4cb7iBQgVCbg~Hm4S7npOF-+RnJ{r07e@ni8azj*OAe@zyMTW z3s6GUPTw`Cei}I@PBqVL?9rrRjOnD4q&9M1Va=CQS z>e@m2z0lNqm~M3c7I}d$Yu=FY%r(#$9T}*zEL3Th@N+@IYd*BRO5xs0VU}Ll`5G?C zmH99T@cCa35$cBgezT~!7jSDJQpw_D=Vo6SjtLF|1ejqvrbD_XdntKTuLN;*5Zp~) z8m&E2Ag3&@Uvl#UxCrC|%y4`qPFMgsYRFkkdEnG+Kx|jbkfci9CKtKpgdyptr@_~r z?Y=!7bbqw2YRlQzMsh%c02%u!RuKc{UQT|Dh=_pmyE|^6a5+{&ljBuHKB}->rTb^m z&tW`M;s~lH3LGUkf-Ew+4P2A}GWin~$Jc3Fs)b}@EsSZ3QF@aJc3>g5`shW`vZCjIv^hGgXxC3jF?oQXvcjAC!3iV&Xh@qTUGD#}v1 z%j!xL;JBl(F#YM>EFd^ zTU``G2r5~G#N*tk(`FttXgUT_aRKfMCe<>$!){-ruSxdqH{pD>Q<}@1iOP!;viIC8 zVOjh4wZ)JTy=ng2<-eL~ULKODvx3MFe8UV}L7;g&@JMdFjJ%Lz)P(S<*~+(e)5Bmp zex;v1aK3){pGU;sl4rtH7iY7|!fa@?CFj9Q!!QF!d;K&)JskE8p@|ayE3N~mt*JEB z3s|9#C^th;(bU%{=QO@wn6E8f4uQ_5w{PqeS8 z);*HC2c^^?XnRDqs!ff2WVtCG0Ift7D8hMa867IFYhTvuo<_YrNH0B7p9*IZyh1tt z?(%i7^x1tFuX?nCIw}=Wa!k@ALK6BxO_wfHEDa5{ZpsoABvbVhqW@SoqP@lCuWb9 zZ(SnSO5jBU@OL94S1-`otPYKr*Z8E=;!wsy%oJNjX}iLP%g&56MbWP3_~#LW>0Z3* zR^gxofB0Drzg9F^zW@pAxqs<>*oSdb-CSYEAXT;?)}}(c&?D@NtDxJBzm#ZSu7mzH zzzAG%;>p5oW+_`71z<^pO1g3doy4z%^0iBzlX~Y74#=%7WPeh>Jq$Lq3j3iH_w`ao zfba;bQ}yy3KiNnV-pFclqfZZlgRUwL^Vj&s@lnPxkcI}6AApFMLrx$-O>jV|BZdLXW#ny~w=Bh}_& zSwmA#PJrV4eEK;4D42IuUOb+tl}4=U!6!sD!8!iLg3sRq+EusC|6EsC=*B)#&S@ZQsqZWSn?h?7zDi`3%X2 zYi>|%2BZtoGoBt93YU?_}#`Fnn52%5Ki1|5QwHZ_6$~pe# zS#XU9M9{IcWqN(V3Sx z2Vgw@tzmz&-cHyFi%Gh7Z0tPV7!JaE6Zf#tKeww;$x#8};S}F6d=a!p(Q!Gm(oV3~ zAqJQ?(Tb2Pk;SE#V~q`Q$zH8`kUx1J=;rvta(svw7{UGOOcD zHVzfyNnafMqYiSY#}1t7j#SalARoNc)eDverPp@|VJTAO6UchW{XuSlL5mnstuYOV$3wg?es=-d|g!?6su8weYHY%pRumx%Gb-L|EsabFoX&O*953j0|LH5Xv z{Vs);F5vjUsMEGUgN~Z9rq{zk{XnL@1Nd0zw{HA`&6|MTDHAp>uJ*^@{g0=WY|c;9 zKkxF#FnH0Uon_kPsXjxcR$+rmu|DKKfxPDaVW*qo2gQxZ-+d=j9@kGolf{QoL4lAW z&z@@SPQ$K0LaY9D8|U1$p&(oCt3QOSjIk;b{;tRm&Glg&R4CoFybm;=JC6@|Dc?DE z`^?>@tUum7-}StcA?{S-`@DsW|IF$H!uNOO^YQ#<=2YE^?am7?|G+Pp9G9YXDLpYM zV9-)f*uGxRegQWTU3+~{DoFw|wby7(MPdh6Ourg#sN6m)lvDx%U?CXl<^7P5gM#n- zB10O0=Cm|dz2k)J*B1E&^POLRh&Klb7kmvear|y?;BUGNS<~_qjusq`d7e3XwM_{S z9zQ0uOKke5O=S8VGpFp|NigT|c>x!$w6y6{-zlgY)7yU3lh{Hp^_1WJar>3Ok?J}` zF(G<6V5$%eqZ6?Eq6qO8Y_J>pOsy5MQ{;>*C& z7Xx?uKh#Qh{zRAT$CKoB*|4NAOVyHhKP=qnS+o?v0QH;;X ztUrHGA_dy=o+SLf8M68%w8v}(`0m4HEmpmO!X(K!;N2mKAw2x))Abvs@}ah+F|~=7 zbfsSi!rGfFiYNe95m3Nu47`{kq*N}e+pNN#X2CtN3)rBi@WPe)St`PA&7U8qL1oqT z+8JWz`Rqc@p{W_4!D7j@sYN_d77l+4iRRQKy@PWTYT>~V=XavU(~ozg5}2Tgk}At3KrjY+bOb{WkEaoGO&= zNRou+tpAq1Z?Uix-}9?#v-seB)|vG+ixU&O8zycqtdw8btoW78<33PN=>F0p6r9$V zy&)vr#ptVk-xBo*l{Ysv`awTQi!Tp;#8Ix3k|e(kkN5 z!Iu|nk8Qo=?3O1aX%;?? zZ@QE|Lo)8w*Ld4U&0W~vfj#_D-H(5LE#ZR^qF=E_1k>BfU93F+qQ=kTcT)=Ym4jQ` zMZdOZw*dJ^RtN-ChiW*y-EovzTU9&p%yM9AF@{G?6W9M?)5+i_)3*}U`vC+I52xk7 z>6J}z`mQ@<5zq%mJT7ghoQE&#Y`yl^>jfM{=nd%7> z*drKZKWwk+D_@3jBfUnu2##MqZHU}DE~m z4Ba|Zx$Nr`O3r%;uV3o@7|`<=cw{e-=gDTfGNCCUU1Q>2u|3c6F-m&J&dlbf!J6~R zPahlWs$?@fD;LC2_95BhxfTpMARQHhaS3#RPa(iq3)!KZR=$q;5Xa!u#Z&X34a zjW_VP`o68R4R-UIwmRr7J(XBM04<){1YQ&4S;R1~xXMpdVB9)#^85BN#nu=9&6I2f_w?nRs}aeMl>45|u#Z>?PcFZ>-kgqAb-K!qe-)+}^~V8A;vLKUUjm;0LQ6R|%m;lbgr56>5Dn=>Tax2d<*Yah4zxBISq zPqveO<=4F_IpHdw@|#qB#g#tm`}1QLN9w6Q7_eShg^cHv*4%-Z}aB^ z+22>JBUO~%_uO~jA83B*-x~;y9}G#q*Zs067POduD~uBKN|)6NwvSQ8|z4Fa^LL|Q-y2;yA>Rqaaa0)Bs5 zHjTJ0klXu%7^!uYcOPf+x1TT9G8ce!?_aXmb2=sC0{-CSSwzeAr2?AI^DmihK@FDNE#7qVLW8EosNL=ExM1M*yp&ld-8{4Kj=S&W^^SB_)d~uZ$oJ>1 zv-AM_$4Qq>p5%d`xHFKqHPMg`kruQ&*Lt=R6%{p>NnFt}`aKX3)?iIyyt+!YgG!OV zYlw46Ig?1(fwLYhpj$&uic40J0eTyA@Bdm;90t5KaonqObdGuEB2^y28rz{dY`w?E~zvsEg({o(kS2}-6)Ne(x5a*v#a!nZfQhH zx*Hc2X{13KX{0-M&wKd(-oMXv&77xZ=9%Z7djONqDfcB0`fN5=2D8~t7E8w$3LgKO zWqa&E9VFls(Ux*1&Hue{*+ak!z5ybu1f|dDRO@k>t`oAN9@GR?G3g|av{z!mQOx3rUdFTUtnpdIS2Zj#T!Ug>|Vj7gi z5SijGOHS0#h1t~J7xpO&&;*!i?8Mog%#1V4N!(zgTCA_;%D8T~3qG_>H+MDSQkr?@9tVKv&- zgH%hGdvvj0L^zKERAb9hqwt~Z_{%LO64L}B&^osg+%MziCPbFrd;DtV3At+i?mBx9 zx3TQ@2iY;#L9<&vaK94c(Qf1~Upfy~*6kWn=kH0dAFuX^_VC)xuVlNGW~OZ*5m_UV{)yV^V_V{~9Ac^3}!Ki(HA zB!7+BZTm%`{p@k{7Og|YqDl4ON$bFp(^G=lA6h!*IQQsUEu}~t%w$XTzM~?-I=>sH zwXG{Z_1>%L(4;@rkLkVlJ_U4~2S^_EUz1Y0cJff|N}b(>ryH(}`-2#ICdQrw7gnq`^u zOH>e)W`zX-Guiy9XzFL_2PX5)&5nC&B6z;$B)u5 z!^_irSG69grOs48&3_v|Xo@@`hqdy%zGG>(P)WrW2r5M}8t%|z1b1q7^Z0olgaFJn z0C{DMD+^G%%!TPwak~+zuL) z&{*x36nsAMz>tdh#H~Yr!5p8?ySzSq_uT(g&8a_-mU5oWQ7HY%9oRIxkm`bIav1Fu zOvOb#S-vjgx|^vCKs6`H&)eAa1n6e#(-g}81PvvMS0wUP8aKs-@EK`x1RO97%wvi~ zt!<3{@=P1(kT?JPgN+=<3?<^Y5Ka zGf)u-{ngO4PR=vWPh(xD`H~+BgnKydU-AFp7+ZSk?eqRP?yZ=%UGAT$>jVY=Wv$}urXcG*{{mXNoUAOTc$T^Rw3+|#r~3$+ z`M)GFF-I3aY$JbDGX8R6keArNdgwjk)5^jzZc(|Bnni_VXm7$#8YN}k>{Utqo&#MS$oWDB*drN;vSvn zk`Er`r|50?5_LoRk8Ztp#EJI^H9GxeXA{r0P`%3Z_C_rh4eCF zfnk`vqv_f^;A-27+1*2?-cf1di@ns@m?z;0O?>rd1H6>FGqsTlrf#IVR9}SC-ic$j z1D;++5foMJHC8#MhQoV$HGY>8d|V+Q^g_$O681_7ZBnguma1^&-buFSUbkt!+A_o_ zmj6*I)%qbFXBSgBlr!aX3H9O01usqmL)NVWu^smoqv)Ev|;s!IIm0J}`g88UC z@=X~ydQB9?$JEn;jIwcixC$`qKSNbM0lJfM+8+=nc$Pjraco&Q>QN&FVh;U&d&+gg z+9k`gqq2LmaN0YV)buxhBO0ZfFV-O1H2*n>Q3$P>*#rb};K-2z(ySLybF2GZ#kwT{ znw{^(0`}c+++J*W+;yn^3k6g9A2Li&56n2VviJ}A^LStOpwrK1!oT%3FVtUpiZ6=t z7Oh&{5%&4%tz(1;yk)30rl&c4JX2Ayj0iB6$YL&-mdmj2#(&bCSO=+@)aXy9lKhtL zrYLX`9rZF{gG zSTX^y9^H7aCG@suIACqpfBIIE{V7uxaQVfIYchRh!Hp~WttO-5GnDwVLR(YV{zt-K zKKH%W*I&J+f3>H)v&z6w!|XOY+Ta~L({b*DAorRwuDbZ?hE^` z*D-^s1|F#jMWQ3Q67S;$rAjIOTGxkA35c4PH9c`OD9K>`3Q7daQw5Owy5XlIQLU6A(JECPb}{{)KFRklK7iRn`1k zjF_s(rIoU=2qD$#uc9ojGe^mT!NK3CKNSP$g{!sEkvi37m5T8v3Ewr_#P2cN6F$Uc z_8~--9A|H0%>-j^`XrP=WLp<#tF4AkS^m*Y1Xw<#Ec|{8`2vQzb4<{Wz%(yFjr{}tlzIvI4 znHud}8fN4-QN^F;G4-E(Mlr)SpLyMqfN>#<`;oP?z|ivaFB95@TQ`|mjjiO9uMgAx zi+}!Of855Zr)#3^Vx~In*FTxh*QsR&_MFZRCf&wpd$%X4{;>Gu6WOJZtr8euvX^<} zw(faB3fnkMeKs@PK%Ao};YJH@Z#=s=-Ij$+Tl86FmOrZnAqso-J6;9cd6=Ri)&N1s z*Zt{5-<{K2d`b_!hyU8Sp?jrn;{mV_kQd1|$^ojx2DP?v89m^)Bg=`ztQ7=Dao6(^ zD^QLVtJ-^FHg=yQ?fR;jeTfpAT2W=xmu4AWXO0<=b19CqR0msJ*ND~8dp>mjCr!+t zp{cOS?I`1#RQ3hGM^$mJM(L#yVQzg|y-ynA?2MKKe_5-aR40VF3%tKi1=F5RA9yb* z)NuH+Nc3<)Qf#MiSLK;U*F9#CR?%ZeSRK9ol+$Sr_8|`{QeAN060%=RYQdBj@oCq0s!dDc@5Q`MBx$xNrfx zLguc6Req$mL%!A&yOHe0!4v!I>);h?oZ*$&TlNUmgI2j@OoXZdx%?0L@Y^g2*q7~l zx8pOuXP)(j9o5?$tgoWuI+Y7A5hMxIw*XV%I-L&VKJFG zclQ}ea+}#u2+`h8U?yKz#$EKexa>dD&Q*Q&2koNlJP%MFza!=*!c&9~!Ha@bGs@ho z&=)}R8w%j=i+;cI`{2IE#Sg&!cb*%E3?T%EOC9F8$gZ~Nik|Efx25+)$kyic{@O_r zM@V+8cUxk}Mv-q+R&Rwzq(ojvyd#2&LY4Ge7EyE`ygGLl*FJ+s*x*4RW1x`htD;tW-Zh7on_8vRv@X_k}*UU$0JD*QfZCmzqpx8{< z_=`riJ(?y<9A2MgwvLc3(WM2dP@klyN4@R*k=J)FB2LyFG+~(a_F$W#f_yb+QZXK)bScBsxqpn*UT4mlqBGn&EDt|5PL2 z{1zCwu1#O*2wP9UKR3HlsJF>K98m2n z<$|386b*ey#Y5f+6>`ocTatzMBRpakPDFQS<2GXM26vkJ^F^5<`HZm?+5E2*+!YLj9NyPjZdojtc>KXmi zb3}aXeF`B2iH^lFnFY%hCM(Q9AKIDBrWNFKn|1~x(Bk2#w>u^#{s6&qQMkLZz+$rC}fMkHLPckhs7Mp)cE}N1nlk z;b*z+FPCD9WbalIk*po5|5ZV1wy7nceFaDyOrnSkU+4@P$c-XhO-AWaLMeq|CXcJv z>nhbFKm*1c8^cI9Gh;b%{s}jBZ41_oEr!uSCJ~yp>mM&Sr>&feNFB$617YNVR;r4G zFJ#8;7Gn=Hgjx)91BT&DC5yKU((s6 zUS!W!DBOps6U6BM{*?FCx)mhnqkH|i{*8b-8uTePa}J67Q)_ZR=cK`YARVF4b&R8z zuVKd=QkT1N0sENc%lTYN@r1xl^4YGBi{7)3#V(wgsxM=-P&YUl=AZ71`*4FQ^IyDz zqF#Rq23Zl`^D`OvicidrLs)Pxtd!Xf!vl+KL?N<;V1e-1^y~DGs8tOIw?Kz@c8epU zCvE}**FD@{1J)?}i%}f-4W&5;MxNvqoFQR(lvCa4IjaTJS0gOD&w>E%QS`xsS$S+v zR?Wu}s?^b#f1PZ#8=m|R@WQ!Z6$937GI!9v6j5!@>3{0}O1tV##yz3X%dOzjU3OZh zag0&OBB5Y@YYM;-EcKY%t$_JYA(ij|OifB2zF-AOQ;^k0S2KEij)|At>ZHTROjxQYV}B}k-FC5JD9Zh(E)l+Y zGC?aM3u}yv)b#L%lY1u`)`Su@O5uD`Ohy{b!y?i|%(~K+Ukz&J*j#q8Gwnwl_7kdu z2X(?;Q_X9iq;jJ2(H0(QHRc+P7RT%?a1{G(HVo9*Hz-1gMtE-j#Dd8Ea^<5jtM0NE zU14*YPa<6I2JjfKkyKtceY<&IwrUqlRl-uANY!DTjfQP)yFHp+8xt4oL9$nMmTw1 z?fGRHjdN|Aqp<#8^qmTZ`^1($0^d^tt7VqOoW2Z;naY4K=yR9L55LZ;;x4wy0pGV= zjZJ~7cT5H{9C!XMKOisombnwUtoGT-U-g?M3i|c9=1}1E>*s)y388H>=mb^oh>DA! zt4z^Nd2LuNU0K&GjJgbbti(p_m2hT1;=X8bfV!?As|{;Pk&&bObw;-TqPdl6i_A}P zWxfb&IfdXPvg6-RJs&uj(8t~2RNRa{bCSxPZo@0$6^(2&CyFv|Wu%6O1;v%w47Ffw zIR@0ymJRC2?3QZS^)?+wMCa6KORTpg~E?i~`jXmK1TFZkbI{V}*4xwC*ZLq=a~u{=@@!C0vYpW<=La;vz;Qrx={8>7o#y%`dP9+sY?~QaAX8tR17hJ*!Rr`_vl~6C$t$Ci%d-?;IMPTJF2tf z3{tG##H+oCcoF@QPPq0rnBvq;4Tb95!L11}^A2f1$>Eg~X*X0XnM^=HV8%N~;=dOm zS4egHy)JIcao>nFn_RlDzawPnS>hcL{#1oq$cVcy2`-$l!pho0?9DqN4ij~b8*Ern zzJg6pGu2i3pPzU?c*&tY)2YwBr>%BFzfhtPfk1>b>6V+DNh)-k%WJ zaAp>r^_x@h>DqgjuOcrHhPDrG6b}YuaTgsaP}F%u={4dmqqRlBTY%a ztF|+U^l!tZ%{P{?P8jS3)EQ7q{$+vX+p`}r*{T6AdsPk*!@6+X@oKAFs*$`tESue& zrub%d`n3`K!}H4N=Rny&vBoFJujbIUb(pn%ymdEBA9tu5JcjHZeX)q*7dz%v>kGuP z0Cx>~$2P{enhWMUqbZePbsm2r?9+qqE=(@L_Z0aA)8c8WV)3Q!Jt1nKrFWNPD2^Hx zH_IYDSf|k8+1nM-K2|-hj5cTU`76-m3fq`fSvN49Eg@3GVFo%})0<5|$c0sy@@8Hk z5YH5&%=R=QXE>e-bjIbIxn}|FVF%nFrx`*b3tv*cfUAD6sYV=mTKl$l?>iZ))~$Cs zO)1ssxZmAPi%gaN+b96;8$~cP29fqwy%aIt((O z9ha+aZVMGoGXfd!md7>^2XP8vglX5D!6Zr=wj_NA4XagCW;6aW&AY=-l7H7pUp@d> z{|nd!k>D8;ZSpcPzq-z-_6qqX0Ssoprmez8>=s70U|V|77?-}NX}#$|*L=p}kz=OT zkN?v1(r=@nfY&dc-Lxf1XF>z_kJ@sVm&8;y?Zx0L#lGQy+HaMYLz{AgC8Ru>HTLH^XZIy7wZ^#PcAl+qy zr;{u}P#J`hMQ<+OE=Vutm^g?5+iz(x`8U1R=L{J^R${xjIXmLRUO<&#KC`ts^(?^j zgqD?S7}bLJeO-MG^8#G0uJ%+_yX~|Ag^#^@KZM6=D%L0q)^EQcAp?$@^aNEE@_XK- zVa2E^xZk7$c@goV_zT#OGWVb3Tj30ExKEu?xbgr6E7Lo%RV@DHU$cP2cy|ZEMyelB z-9h(5d}0!kHkEpOzS$$c!#B=?&0yDoKlD=%Im28rWZ{kiU~XM}((9Yp z?HtUaZl-#0VRlzQ`UPk`a5;z@U=~>po_5&sa-#=+jzxZ+V4SS6GqCJo)>su{w_7u* z$Qf}aNnm5X&t5*SHZGz)5TE$;yHiowPlm3t1ta8E#oy_2>4xhRMS>x3lzZc8wTQYC zV4ZmVHUfAbH{tiYjc=b(Mq2uC{zNm*!&#_nLqOUs$mU)!qqj64zj@}{&5Vfuoru4w z1EUxu#PUAbGhy%z#Qmzt(5@TtP*d8p40K7vL~ONv#v^e$bV4E;bYoq|G#XMgEO-xf zOc1gWB8OzEkC^uux^4e;I_P9E)GMJ43#xZ0a_%>i=eVZ%jbG>(iGB#c$@^tRU7CZq zY$N)5FLOzQREhKm9e8N87067%ys3VRXKhG`vU3u7{?Xl`dH)BInKB^`6iEfrJQfgm z0QnzHZO*?BMlguY6(rBvFpIfK48+uR=FI_xA}kE4ScjE`{#?h1XZe@OtHMX8C1JWM zpD18W)R(VP3!Iw5iu5)KVYb0lwUoHgrmfK-gQnr6IC)*CZpp)$Xmlpmy?lq02K`3o zRlFQ=88`$|oyc&zuJAt$hDAn2nUIZ;!I$0iv8XuQ|G+ zYc%vy+S(aw7_o_QntGm8JyPCb-ss#U50s3sMcA)WlZ&R*QUe$BC^Ji>q09w+XHNYzD;wWL=XVLQMM1->D)(0 zM<;tHls0EUd5!;+*}#aJV>77qa@L=#`I!@4ICz;;vAUpi+2zoa?|xX(g4s$&YE^y% zraC(E>Fr))%pWB zjsONg92bQt%zvBkz3r(uZ8;S#O1uYsat8He>BYgpne3hz>Krs9Zzi`K;Y`#^0+LY? z0MSKS<1~%U6#DT;d8RFdO)CV(WxZPI<|%7YPG4b4Mlx?1`2Bp(rA{o;G@Sc(@XMtZ zgnz2$hqqouQNQ?V*>^fPrwlV;K{=d~eOt77e3$t|-5|sh#0xPcSv&|mRUT*0^mUkT zZCYBhYJ5cw1m&m_hv$o8<`yt>`Tylc_KjHwoZtPbxvlBt+OKqoh|8w6*+f7W(!Hqq z!A*6n`W717nDlpno$yoYNC`c4;5E*L;rZ6RSFX#Xbko%zI~&U7LxHAty!4czOeeu& zoPE7yqH14wqZ|B%4n_Om2mwF9d^Nc;6CVtD=dICf>~a3sPaMD-vW#JkQf;JG18E}A zJOA73CHV(E4mEBblq%R1%T07nguGrU_>~p=Ho@D*96@%dY1wpHB6?`{%p%@;w~=y% zsrw#&viitjI-iUp&~yhjj}1BE{oxc26g0jK2Raw}dEvNI(okI$C;qpZw|dQ@Wu|SH zugDH#dZALnpa=lEat{r~x*vd1zGiouCswTel_jTga@c>-)-z9EX3I^XrB@)(WQ7)T zt#fFaj&22AYZ*j^#@Hub;s8K5A>T~%$AG;8UIiKHgntc0P1Dq{`IJ3Hr8N%AnK&zc zz`3$@QLI$%>izwMVs(6iBQAol4+Jn~Nl9ZxhQRGR+21)@g@M`Py$rru#5 zR8UUL^panF3mNSAoTHY`G2RxJr+u%O4_e6a2AO1zhd9+*@|TF$Ddau}1V#^aoDi zu$Asp&3nNGdyVm2qhCIq001BuDG_jGJl$+pAT{b{1Vw{HIfnT4PFASxEgXQH3gJLL zz?crrG#zydT^7Hpy<u3m51Lt}#onN)2>|(KQT6N0H<|)}86NdK=PvQGZ?$C6b)ugQ- zG!6Ri8q2@T2|v#!|_cNi~6~M}*wR zlQ_=~G8IX?Mc&cUV^%m2O=Z+JKXn5k8ZzQPP#0v~YLUu=zLcQffWMJIexck?b0%TTEs}O_2fsvyFkUs5CfppZaB4uCP2%Bh1{?ha>1# zR$1{J0&rB~A_z-u@AQ~>5IR|mpP3i03@C5mr8c^dt9y}O zH$5l=9eynQJ|1jR#?l^8eo1XGehwwwt)(F4@WqKO(cua8h%%MO$sDLh_uS@B;TwzB zk_(wQ{6G#_K;wGQJ9RGf^8LNW#8?6VE}dcCez@9~?*=-}o@t3H=os&Ub}i$IcCxSX z!RmLIJ?+!MQSXG7AYezzXB%AMo%#A6Ul0pfv%A*Xg}k&robB=Qfo1o;bK$p3=#g_j zV!p!(?_R?L6i9K~D-6R)nZzIIrr$7>u_+;NQ9~Qr*a~kbw(Zfy?j6HL7=4~xj0+KQ zw-yCQvW;oFu!DUGCkyJkJG7ulj8R^89fWdPLH=XBLjmheDqT8uc4ShYAt@p(MtZ>bT5QB+dDsNfw+G?aXqy%za^|dX!9HGl`8MY3 zKq7cs9mHxt9vf0C{@%1QzI^)I4`$FlVn5vqK9>c|Ho;e)G65TuLpX@1U#DGdy9Lah zS`Ru^Z?0WoEZAst3Xh@d*LNfiv-~eF5O(FJ{kve~YKxiBYs`A)^VDd6+J>a78e{MT zN*k?gdA_i+$E{(21}W`1>&M8ONh>%(HogOO9H*DQyVny>Egg54D1>h#6lZ#E=kJwS z^1ovUQ|4zUh7GyGflKQjbAmRy01X{oeDMqM1u<2>GXY~s+Mtg)42Ekf$j@l~SZDIe zGSV%CnD+J59cfxrC5Sl`y7tr_HXOm+t&;`X`f!V3BSUwR zKZwGs7rW4Zcy)b+qpf}HJWl{=MhMT`Rv4`-kzq&W(WzsTpSMEG4}0A(OP2968ML z6#iO3l7NtbW^<{qWtEGd$fdSs{9m(1= z3%Wtt;9KbQYqy!~HHCp*;`Ucav1RN%g;A$(8Hx6^LiCW%p%3~d-;(Pc(*(@Zn@&bw z>9%s=tVHkq+IaqnZ6xwB>RV&OciY{uk7_n%%}}o$zME?odD8g|QXe`uTuE2xPJ5+s zZUET4g~t=pq5;h+Tns)e2+nk)AKiAYX2Tr|uqZ193pm<0oE$z+_sY|p-K?g5>lTTT zopa7R-p9N9;BSIbj{lmBNNZERpZDI;;Ede8nl!obI`%1Eu}DJ53bqb&V9}c@g2KYA zx^U@}&A<+ub@SDqU;Q4dR=Wtq+OVt6%EKeP8`fETADq`ICZ{s@=#TVXR8vjXVC^ju7uDV@^YARBB|- zd!l)M@J(B*PI1|OecrW?SGG<3emNa3fH0RnIy-CI^Pi!$(841tA!9QR2wdIBiW|ou z9#c^Nd6wKRE|6vMMxNL_T2ie!9nqkIp(SwAhYx{KCP>opWX;zKHv{)uzTe=O|M&BM zRey>)FJ*RG0qZPaf&=k-zRAI~mFiHA=#FH{Rh|0IcGVMa4U=ViQIG^&|D;D~Lt$a`>K=jPL)_uZOvh50|X@hTaxsi_P@%Op*zu-H{g6!W_Bb4}QJO*WcUHytW9tqaV6Y!jRr zaR2d;s$-XZghBG>&!5!2W7a3(7`eheqi5 zfhKxX)`ORtdYwqeMsN!(n0FQsz&nE64nWSJ?_eZvG{Gy_3r{18ZW^gY?issT=-^bZ z;k^JTjop7O+Qi&XES93PnNjdJ2IC;lgQDK_yp|FdFB-EKX<7oWn!pIg2}51q<=#87 zI-acKdv@cOB$k+lB^bo7Oe&}O!7P3q{-udSkQ)^z_nSmbnjjjMiKNi>Gu0MGnh zKf%z!3yKoBW#+c*C&FOgv%Vw(>E(Aug#`sFZH+f8jWWGiX-(wi=+<3%+LW&!{{7?x zITng~!mp4F6G#OAfme0O78;Y^+IC=Xh}AWh6-jHhqwi$B8RM-!8-93a*q@l*CmV3+u@=2HJ#R~l$tp+>s9q+ee(Wobulskdx|tbIZ#qD2hPsaQwP_VbR2uxtdEJ|hs=GIa+g z7zvr>IYRWh0OWZ;s739hW0(#=*Er_~6)DDQVO%nerWPDvh7fmoHoXLQNq_d~H}(sg z;+HV#e0edaE-ze2W03hwGMoEuh@C2Kr3&mH($nO-ng}z#CaTq8pmMxl7<;m4_jTIB zS!`mRQih!xlI{zdIgrcc0YS8og^9w}k%uB*EkR}0inXvd`8PPIEHeUT>BS}D) zuGyJneDKo`9{ii3b?sD0bQxqdB_Rtgs2gy8yj%vNa2fdl}DnB0fm>Am-S7ks~+*08E`dvLEWKZyjX)rXcT?;dVr`QL0J<}NkM zNs_HFVn`ca3Y4yju*Y)n&Da2!#mIb%KMwb|1qZn}c;o3+O%Su!G$CF{GARwDn-zsK}H%ZjPwkgs{CIul?n% z7g!8wQO@J*rN1~@bv9GgRz|lRA@(Vs*;A8cSp`MKRTUuY9JHi{HG+!RtfC2IdV*E@ zd3rghu!a;h{?fDc`}@0_Ez2RrERyazr@GoB$I5J`DDW~SwX{R7GG z)ofSHzUn?^hg6{cKzENVJNF`UUEE5lhtM5D%zun>AO2dojUv6$y<9s47d2X}vm+pG zT(N>If&=ce1>0YkFdIuy#kxU3h)6Xvz^Xj|r2~vGxH{ax@<0E@(hWjoVXZx6N|JRi) zAEs$K7^kV7Kj4uri*)l^+S}i3i7?!xErB`r6&!bl=1PAwKHXk167Z1A7|3$J&G|klQPH6LowBPLU7uM@t>k5FyU)NSW zq@Ob?lj+cs1emu6~yRMePKVhGP)K5*2E|kuTvc!!7?#UUwLaIKeV7zk(T5yl9 zo0f6RcJ+s!Y}zS}vBm*2HkhCo@X~>MEnLkv6zOpBCKV+4v>qi8Sgdvg-xsh;1S4Eu z#=C+sEio-59!sJr$lc2G8C9MrGjFOY!DCfO6SI^ta+9uDUlpPP-Fa=zn4!_jA9IHM zg!i;h9d}g~x3IPf+z&it<(X{C=-gy)Igo-FRenmXh*WqFObLo;%y~qf_jnuU_eb+J zg1%Bc4iXP`mD2l57aE~d%_Gtx^#-siGYkXW*@2N?uiIoM&8kDD1MDq>D-BJ7SsOke z2nIZ9$BF4(t$OGDlobd97VjTv{>DWaNdf!%e){d^mBRJA4`Dq3&I2LlekYCg)U6fmOX!6SX|{c5b6qvx4Zm(HsRq|_B! z)IuF<@&#p@pmfitESkK&-)8g2FKX7y?7GTa6jSMKe$msK!`ri9AK>j(cweW#xHR*Q z&0NNC0eDnU7lk&{6ji`$jl5h->#gbZDkx(!7_%jT_wRORLgvbXU*wZ|InoC?b{KuT z^I2UTL*b8AM35?_z)2JTf+lCf3GlsEd%$Nv;ANcTFx?8Qo0!pw9j*hN*zcRohFBt^ zM3}n<(ROLg?_xc!d)^}vV!}(1%XHz0!bRPRslKb^n>bmxf?X)UK$&j6HKazeSo`^J zbsFuP@#q*dn12*4rE3rb-TL|m+furPTLBuH$K;5$T9?yv*+W+NnD`ui=8U(?Ga1@; zb8X=(>GM$pX7nVos+uQC+w7@KqNOrP2iSGiWEcD1P!t9gu%3n2t74`~!BUKYm3>f% zDBsUWyqgh)>YFxC?4PdRf48uSHxznUD5LD!9+=~#6lkWJNcdvi{b|FOk6qW)Ccs8I z;5^stp_Na)w}p+l#b5X9dD|h*lvA& zk7PpC^4E3x>f0vYsN~-U8}Mk&aHtq zS=O^p9~cLe;O*bOpn4|RDTtm%Y|@3cVYB!f*f0-$DWx@vvB>b@KWy}s#ZVFq(8|^0 z9ZsSycV(>_*B9=DxMJQVW`7yXo3nw%?Jv4CQNlDdG#pu2;XF`rlJfO{g_oBB9~sJq z>`k8Kdv`V(K62`~m`#b93Gh_&w@DTFilZpx1i1mNJ!83r+RZi_$%R0!K0r}D9LT%} zqd8F`j_qWGm^}Xql#L~S@jv2j7y0dfAM-Eqm@Cy1J ztm0a6rvZP~RX#xV7dF|kU4c`bJF$e7i*Uf31XWV;&8Jf9YiWE4xc8)dPX1Q&@X8Zd zPUHcoY)nldfE8#08~Uzjku$T{lgY20d%YV#Ja{vl)OKjLSX+?vVuG_?Nia1v+-{-o z1e+<8F)FNp?W|+|?*qbc-~kXDO5c5xMXD1#3BUXix4)uMf9usH9%~__A&mIhvj*Q& zGMoENNm|Ss_2O z>fq!%)9iRn2ABR$h`u@?p%+zJwJCk(DUQ?jU$C4PI?n{l-?-}Ls*V| z5)LcfTs`UXEl5K*F1sSZ#`cLegs5*AM{ARM@_ok6!r*(4D|K-wJ1s&rl*hA9wkETu zVhE@91?u9Wy)o zPxyM87Hl_XL@+SZNI$*}Kj$9)5G?vJz?=#MYnnKZXHo{a5GkavwBDtxA?J~LrPDjV{_MtD*h8^AtKwVk^l-e7wN|p7@sY6pY zJ>anlP;J@+V3Ke;c5lVfHc$3hknN-tNa1%`NRbi(@^^9Y@$nO(2Y^?}Az%3!Pl{7Q zQV~QfLC}t}Ln7SB*5BhP&E^uQTElDNnc}6FM$Hk{jf%lp~ zMK5r`I}60}FnTLw8C%nJ8GUh+`baJP1`im-C1<+mR!kP?#LuGuvLq5eWJNB_Jv)Lw zPhJLPWBtUu6nh^299Uq*tnh%7$H0)NYVqlxp(*Z4pPRFu+HuOO>LB3YaD|?`)BX+R zbB+s07aVjjdUL^S87d0gr2b_=7f|WvO6cVSBL3DFTxJ&7k(d1pC_mP0IluD0OQ)GV zgU`UUwcX0LZeuhgQkq>rNhSI)W9bOr1r<+piG~IbKAEJNFo*w zwsn@Tnxeu66jc*KssC6>4xs<-H3BlM_jkeiZOFVT&2XdclqA~PjtZ7$-H5iXa_Af3 zv%-2c1m9sW{dXtSo)UMk|EpGA*P_pThRU!>{3if$WMrgLlB01Rz$~BDmPqKkl&L*- zj?CUW;lbE26hDI7g7|~RGAj9z<98sL-8}V9rfZR4!(ErPz#W2@IMQmci~V^2ijaP4k^6avE!$ruE5n*@(nz)l_k|KH zr-bIkSDn0D;(8}}w8bm;fLP%1{9s=#2h5EX+*-#v-GbL!qGWA;U~Y1o-RJc(Mq~}8 z>8|7fjtS_8J54zx0BvK4rj(mpT0M<%#n3AF9}nQJ13ZRc^=i>dfI+MTXV(EZH$7i} zJ~Io}E$B`J7}J(&`A^|?Qb7`9y))Vz(|Arb>x%&>f7;DJK;La#+3Jg{vnc%KWz~9_#hWWlv{kr(XBii*E$?06~88%Ii~)Pv^** z#ke+jb<>GmCrCdJsFbOl+|#CsxtSZs%3u9BudDpmE@zaF;%EUSn`LgstGmG(nV(YD zN<%|K^^cbzcJM>QQW+7HcWE?Eo5(a}4p_OnM$z9gd^PU*>jPo-`a>*Qekb)nYyLeb zR`bBkaaFFk!dOo2`|F$IeHbV-Xkb}}%yeyR%5dFk*e_w8(3E~Ad6uV>59oW52e86; z$T8J?K6S5>3gD>e!At(Px7u6DXp#?FIDVaj$ux^Emp|1pJ(dF8Z#*3&G020PJ>!;h zllo&DOEY4L$=;89XyAiyYb`Enef1Guk;}JxIxk9)FY$m1FR~ik9AWt`2vCcQo3Uc4 zbobLtqrVIFZ%UYf#1&elY#Yp|<6$|uM}8w2<@d(Cw*0;b_vwNuX{F^iG&vyXcjaNc zal@qipMYLMewFcSJiv|vo!2AAz4(OV0UfR+o8rfZMud4uVVKWk;cp#{zTCI@2g(jeEq8>tA1WcD;@F`s?4S1O0v2?9FpdrVg0_a)@qSz?tX z5&V;XL>kRLtHP+P8s^Goad=Id-BZ;_Rz zzD;eP+M5!PB;@P~vQ9V?{1S6xoN@&WR?wIRZ0^4?LOtc1pG`4%Dy3F0KP-Pfvt{M@ zej0eanD}F3ADY~Zn3x#;9T_Z9Aj{>ce>rW?wwODlHLP68p0D!d^Qg%p@t`(%*1l zTZN*81(tR>uXM;zG7v9kK(<6k)y_Xng>Hn?!pGJ+?<#$S%rye~%~(&Kx9sqhUA$V% zCpAOhvj6};7&*YB#RGETdH`n{#C|dICxnE)H(yIRZQ9}*B@P3YoFg$bg`q)t)I#s> z%sSP`!PWzHLjISY=zc;KMM5`^(c@+KLK%HvV0!9EtPW)Skt$RfrHZ;z-(ZNn{R)<& z1V`!T5;UJo7!_JIZ(J`b_mfLU2L-){ODA04nQF!Hl3>k|eAVS~W7S=w4&t7kMDDC- zdc*wK;J9z`S-Ti@i!-RUNu0cXs_{n?!k7`q-I*I7GW}1dgakzrnKWJiVM0BopS#5p zw%p>$N#MeDLQ!$tI_>*}oH3;4|6lCz-?XSr&mq5=%iiW7oPFT!(?62TaX`BYlvF!f z8yIa9XMt!7|AW8t@$rd+UX8XHf$CrPDr+OwdX=`VE}uCXlREa1Nb5B{lzNnNfjxXI zd9&`Q3?e{Qgp0es8~IbB|4PpT#k1Q3La`NuV#p^~eAm84tG_G(U;Ri%I04e}g z06I-}d(PiDt=^WwxtSgT)huZ*Ibo$9KW5g1w+Bohlb5;gP(R@H^OBLVXi&uitR*{5 z=ouV!fyEFp6d%BRiy4v{i;N_r-^xrSjFnJ@Q+}odVl}sYz4iVlH243}^wnWecF*5u zm!-QDkZwU~q}in;B$ZTBVnwA9BzNhQkVd3LT0oJOQ~?EP1(g&Kq`TRDZ=Ub(z4(*s z+&gE^%$%9e%$fQBA8k2;Z0nX9p%xIdB2npbaroT&c-<0AUS(x6feDlRcNdUh=R$Ne z1Cd^p=`ZK-Tg1SV3$P|dtwO|o6}5qgleEjf`{pYTU{y}5rtNg^(fZh?5v)Iy@JFAt zsDjsAEPqK?cAbN22yCd&klM`Qy7eE=MfE$Uo%cS`A`V#WG`+;)ky5ZX!Vt;m)(5TFB@S5j%`oz-wp(-_5)+ zh6ALKJ^&dy4-szzgY`dcdR;P-esczSCG2#zyaZ#IbfR)5gNsjX7~RfHdFXyGf_1}+ z5nNH`q?Q#EFsPG!0SvVmRDkUi?uQ7jR0`f94vB*EB-@`Q<&DXYOh2C~wIw!uh85e= zUu8V=GZ~GS}_+7}H`NHFwe0BFK^I4vP4(#sNrYug#21bVM$btzu zTZ1Y{=g@^6v5dk(zdm!M7Mnot*R{;L5*_iZbo>k2-jbWO&Tr8QPE-XDS&)~IsMEBd zz4h9PbS^&%M;p#V_auD)HeO|Q@9K()F_}-?-SUC`aT}!2op~s`_0%)MSJmJCC;Py% z)?trTHNo};nid-|>P0^N8}Y+h4Hgae`(*Tm!eiXZcS`VyKR|)rU6)4ZQGP!JP!g6$ zfF&~X_nQf|O3o31V(o4{Iu|i50|7aCxy3(Qf}IjP0hZ)J!`D*^LiCRL;7z~@YzG5*n7j6v4{OoLmA&A*n%c=ND>r z)1(&eVyZt?GvC%JeIEz**7)1nUmQCFfq?$EJ2GKBoB1cK+A!Xq2jIT@QM4l0AiHIa z7&pqO0@V1oiWrb|tOerynFP1)_gM;oLk7yV0G7I2w|SvYfZofEUNO8a)DoMPoB@Fl zlAsS{g%W|Sd#5TNzONR{GWHF7*gdMtR^$T){dQ6e>DO+BknBBc4b~@`i=qC z$>824Tms&1g4i>`B1V?lzVhKxq((E91|4K0>rE>t`@Cd03FMRJU%cVr?YN2C-@3Ve zd~A{0d2v1LB-*oE=gpp@jNCn~(~7VE-=1H#Wf4KT;*lU`G2z=)LUX2f(v61w?`Eb& zfR@>pjDHig5Gb02T-RR7%6pbINv~R>xqx1(4xcju$VVJ4>5A$Lu3m-@SW*Aauy>IH zr5_qlakqYd9}j43gnE>Cs*_q|%#>M*P;0A2@HR68&V!Z_`@XP?atwf)F39Lo3icd0 zJb{{weOwDwRL$rnjI#2zk=cOsha*)@!9$}=XH+$W3qVbXlP0WqHwZ54cU+t)=#@#> zuRP%u3Z_1%=#8V_g_KsQ(RO3AurLxVn*bsQXNJ5-4h;f#j$PCH1BT3Ea%9G>WqkJ# zP|_Z9!^UMj*LZvVbAJ*JUG6dQdk!92*652+Zx^DjuDIM4$sm61Jj@F9Sjp6Ssxxbi z5#Jmg%X_IH5%-7+TD`z>O7&8Z9fOb~dYqXSy))6(NiL%k#|@r-_RxY{HUoZhLe58@ z=*TszHg#Mr|BOZ@yt?ouF0Q`XgjVxa;zw@2HA^thwi#2CvgcN&L0cLS2Uz~b7DAgV zgz>MW_JlQ2^966RSQS?_fNyZkViQWGTAm=`Pk^AK}+gQghUtePN?%d+ zw7*9o_6EP9H)KR|K_6;hYb=iV884>4&Pjsj2#R&pg&<{y3YX^vs`8+P-lNjKQt|iN z>wS@vHMjpH7pZ1A7{Yhi{Xk&V zI~3fMT+QXP*}?h(#^E$*V?ta0?Iua{MO@lT$sXWiqcENq_Na#aUys!n*xN8d;I2gi z-da0AX!x}A^*@_|`PbpHeZ=g3{?sQIjDZ#fIdS-PpZoIS&AoF{OL#^1p=#WJM)Q)A1 z(U_NLEa*@aIk`#^)DfVH;!tNqm^ZZQMrmTd(RUo34$X@e&_f%;TF%NCtocN={EPrM z*GrPhA$;Z%&_9}s|L*_-$zcv@c>7QCiiC}6^!d`XS=F+*KgxGykMXsK>>bZp$LnUl zRmu=hh;?)XU^xZvG7n*N3e|&RpDVw{^970DIP#Ubp?c-lv-7ui&!>`@7_R!eX<(_O zIAL8BibVEeOpP!xCW>zR4~Nqq{N{6IrkbowoLx=Le4)Q5=qFQ>g5K>nzFXYb&G~RR zN%|`U0S`g-D&5#nOkmhdI=c7T(?gy$4e-*C@B$i=aNVI0G2#%k!qDUP8!!iR2HO)Q zL4uqquhazE5ELhkXQEz90>LZ|#)2wIo2#Q7a2h9SF#-|h|8PTwo**xMTzpFnOaSMevWT~q zQn`C)*GVU%1rSvDm{`oXC6)vx?(~RP(V>`D62G)Zn<|e~^_DYmrWAGzbp~g$^5^M8 zT;N=|?DklRu3%ehyWZ(=dllM%nx%Uz0>DEImqb)rI7tf!a5^N0bBQXg$h4JS&K>4` zCEBwq6E}^Z%|cvk0yN^_Juab_05||GP8u!1Ni#yM!Qp+Iu7)CEjG|ov#7hzyV-DSZ zX|^On>?3LVG>qF#bEGkRiF~m|9^HQ=SuxH_<4?=}a+()-GjD_kSx#u8xeKEBunuzZ z#SFKPCfc2m>x%zTODBATbx0SPbEHX#&(!e?)1v;;!35|?TBG77C16Di*unychw`IL ziEwc^Lnrfl_pc>CZ6lq|O-OkMwuEWU-l$_^ym;I2$AYo;p(7Av8^~VQ+>C8x z0`P(cv1f87MDB&9Jq0yzRGBf0N3pnMF>RKBgbl+!3YQnL#QiauKsQ6xw3?D#mXxPt zVAPd|h6JJNy7lYI>5~WTD>E$m+xPZ8=1Y-ZVBu$p4QTlVH>0`GkGz0k?R^!iH@ZtX zQ&Z-N>Rvpf($izEB@9>~1SV-_{?6R54P_K@zGJoWNuRq zmBG{SFD*5l|0hqxKOV~=cwW)>(hvs#^SfB>VEV$?b$YjAaSzcys!{QSR|)g687m75 zMGAHtS8oE6W>Q+#<;iP2C^1Rq_^ccZAC`T=c?kFPE>s=OKkYIxEG`f2-#4R50_8K_h8aQ#Mj8h1+~QY~9#d zhmmiOsMt^655)I)sM7&Y-L2IRmlfq14?MU?K^FV*hch4Q8Gmm%6ytht$Jcmc4|q8% z=b@Y4JJx*sQ}0D8`JVs%f~o5y^{e?5yS$Riu8YSnVr9SI2V&eO;nUrGqc3$~GUt= zKaIBFr$0@zBOsH32u*qF_kDw`fM#O9ekIwW0B63Okc9b)7uXXNdAX4Q#BSWUF(Q)3 z3;EKa*zT>Z8io2lRYf56Uw7&~x{aq_VJW-k%^Tvjk|<`J=voMkeYy!}{7dHWlzWGx za%va9u(WmdZoL?-)}L!`@aj>fB{7BY@J9|bWCn@-OXVg~i$;t(zpCJJE*h{35I<*bV>X%AA z!Mi{PCsffb*h(i|1MY8HJEVt%^lGoXLoaTXPG-echYGH}QiQD`43xlTf617RUHLfB z)VNgia<#W6Dv3%YOKvKwUQ0x9NEME%p8pg>zhvo5-qHxzL2F0ps7|sV>SxDYBcR*f zQ7NGXWx5z)9Z%RCX#@3i)8>ZWT^|ek?}td^4Rkx>`h2sLuh)-I#-$Q{;=-%%kbds$ zza_#cq6J6!c-PXJ{Azwup>P#QiVFVyDL{7eyGiy2ckTH#L>z;1Y^1gXGcC<@ZeuWe zTkve!Gw;Cv#1N5QIZgSIhrYh?Sq|RBOi*gk%%J8J83Pp(&W`j=%_%DQtT8=~P}hAy%&a{$L8F8G6zvFquHWgpuJ%(Ohqkg^*33GV3M%XY4D>N(ag95O%v_Q8V9|F$ zYK@a!7_H_6!s^GvPQerblh}1!qDF`;)SuX=O2eo_x?DBodN_$ldtjubi$$~dzhmy_ zcP;Zqe36h}#mYBn3mlTdxvO7^q-9wBy)#M0C2xst}ybGSHcJS3sMuSrKj$ySZ zD!ohl4;bH2KwP3#(7&nWP>^RZ-DX7S~Gnx9UME%l!nBPvZJvJHfFjT=<{ zCg356kapv{P!593mZvGw^KKe-;+IC*G}Ya?Yo(@zXhcL??znyEf(;5R#_@u^ZpSj4 z7ungKnqav|xR{4)PU#8#CFd9h!ewAY$gAXV|DF2tQhkEi6(zA@c;P#@!`2VE{&y}E z+nW$7-0AA8@W~>PmilNTd6ri&f-z-Bk5TY#NUTtal;3p|0;TPGawv@4(bt=qEO|xtkkdc{U6DB97X`+2 zzt(3&k9!v2v`d(7_i9Zhk5j=}=iY@iI z@xcb)eAK6s!X9fC$Kx^wUOVIq0pm-22=`<2;{Zf(Tb_k3M2a$nL*dVuE0Z;opmW1-m|*i zS^Yih*h|6GC9vqsecPStZk^#QObSbWKlr#wnI})IIlfVpl6GNV*sferJU$~*JAg{D zZ@}K8&mZl_+F>%kekfhuQ?n|2i124q zRt92*j`6@}8M!=I&xqTUf5d;F7d^X^HJanxH#9VaQc8d9!?XU@QcdWPN*= z()aFJDAfz*KNAE3kwp5YCZLAc@Zmw;t5R$&al*$Kz0*?kg-EOZed^xH64#+-SoK2| zM%nLj()dkhzNsW=k~1EI&-T zXcyT&|H;aGORSsviTP_v(=WVOEh+5XaMn9N|6)sgSR?N!P>()Qy^!<%t=Y5h`L~BD znwGMMY9Ek+{6Co6FxxIe%-;`ilzT8mh5%&1@EZ)Nq!@%){;JG9_lagy!!O|r2~WXP7a+X^rjBL*o0WC!9XAcJ4@x1+ULG~ z4Xu+K=ePU!W$aEDH(R1L11KbZ`&UIN@Mz1J&;g;}?4=nM+b6rB(#4!|;${~B zbAO2@O@5BG3?Mk#ba~klKR|q8r;1{wUr=|XTlI7U8O75T@ma`aAQXQTqy*hbGNIFVn5*A-lrGSUFKcUB52ps`@=VYjL~~NL1F@|3XE5 zAU#K38a0tGC87!AFS-hJeWN^eHU#c2B=CX-O9V-7VnRZ*J>u!2hN~2BAM=J{IDa%; zXMFv!7yV7FHj$hTiCCgj&F4BAnn;`bwJ68lK>tHp*=ARn{rU@Q_Mqj_+5UXr^|wDo zj?pQB3y40%=3 z8Gh(h@ga}4X#EVMw)^pQIl}esUkpOk8iBp_QXC+@oU2oauKE43;f0~b{H$`60uI6@ z;V2$zY?s1@0;5j{X3WiQzCVii8ilDO}h zNJ174YQKC^5WImIAS5?z1Gpup^Zjh71hB4cX&JYw1^-wbluhIO|>KgkF)N% z`4*vcTvzfgX3q$zX$^2Q_wxKHbyDt(tzH`SztCZHO<}yL?Jh3+GnyzK=A(OC>(Qq%g}HSa;;{I1zoEnm zvufqPx{pfyI^?r>)Z|9qyvpga_;(jQDbCYzG;VI&UROVW>iuqMujOE+?p0%(BYAKWEsrM)3%u1}4^&m70CRnOXfqoait4EBC>UN%w7 zdnk%6UxmdGObQ+McryUArVN^GveGkQJ>4#TA@ctmk8oM9Nfp}jguU) zWVXFWgFZNeFXwrvUM^Sf2fBCX0_khfgX~zi84!#GL(z%R+uI)KLU2@f`S7px2EQC5 z;pE@L^~Zr*2D?f&2mEWDxvnT=@vT z-*Iu+rEzIj4m!*Ah{1g)d>t|1KkqLp7Qb|S&(~HipSg&6DEJ$V%r|#USgCv4tGXj7 zENNBSdvxw%_uxS<7i{)^^PM6thJ`XZlqd`A$M1d?Wnik^p~ZluS~s)qyCy=3C0qpG z(Qiq_YE}i;Y}(SQI4-p7QufcBO*l14!fbQj`91G?2FE?Dtd`d7qb->R|Xn`7kb5L)R})w9x6U-z3_o)X7^SotfZ}HRZQ4<_tAXc%!!V=mlJ@)Nxz>7~YX`K+VTmS1!_5a2MLbpLum<&{6Fh7DV5WwR1pCyWhyxryTp1Kgf5RaLh#UYHp zIaSn?b!CPF8w&*4af2ef9F4blKU3S>%KH!`2Oi2~WClq#F2a3Fog!A*s(J|Rtp#BD zJ+Aa7#DU)4do{w(p76u5LrjYdgI{&K34Ts~l%FG@kw%Qwiv2)}ap5~E$_b7J!(yRP zyI3#Lr!Jlj@afER?w9S*kr*1T{ld`Y`rCy;9bR=#{W|TJ&)hNyC}&U0QTV3 z38*j<;$(^@Mcu^6&g5l9c)d6h<^b$%-Gs|4Aj)(T`*GFBX!F10P%ATz#I!F()U-V3 zvxmvyUqpOXlyJBd%}qeFigqqJLI1EBZ5ooS>^7S8Isg105qD`p1YC52@AfV>PyWdY zR+!RJ#&RS`!Y1`aQGQaBehz)%=Ug4iLiPUDMi$gExorR}JT!#s>_|aJ-TZWxTue@0 zpMV51LV`3^G|$C{90zYJ(b;l>@#wZCI4yLmqCkWMKGOb4!B zL)ZI5-PLXT^=ZTvlOe_AI@_P7PKO2=ZTQ{c9Wg(BFfAna zXt3Pr?9~9CB8ZBc4^*@u$HGXtkHhbWnRUCn1)ZjCSe`~vb42g7-*^f+ta9}5Kc2`> ztJUqn9c2VwK`LFloD4O*wnlfL@D>}e(X{lm$&%gc_1m>{3-2XP zZbDcsaUgFfLmq+_3QLWHrlc$O`_Wtf3$X?pt7R%lb?8tQ5_l& z!NHuW*eCe{{QRFLCNdRnVr7<4fRm@=@%YmHQjAa-DfCu@@BS+=7T?YYqnR9A^Mo17Kx(43>&;mA3RE`tb$udqXWU54ePMwyzRG!YYuP(wONr_<-6fLe%HfdoMU1FK zG_#LCZQoJD-x9CF*+wfKz>~V)4wHZs3L1hR&)&R(adql_*l&*eU!2{>Qq-Q524cCv zn8MJBx~%WUWUv`azdRdkh_nRdIp>z*-QpX#T2=qd6MJbcv5mi@5S@49!Kq*TkNm3UxjzD2*a-Kol5z0HzqVp`D97Dl(~NhBJIW46~dmX z3~JLhuqyaGu9k#jZAfQV_8y}D#-bbSw=y(&I;zOY3&{oaclINja9!m!4uOF4+F{f# zF4?{oKPhmM8;>9f2P7JxN*yLP^FkI$CXA_#_IH8wdYSg|R1gEZMdMxiz~B4r@3vN! zH82YtZ{)-^xsGl>N)L`m@*Wf;x;?!R^G) zC;O|1@=x5S7ot5)MJ7yCl);;ZH`BMikx*=jvi8}M>&_k9e}rI3V2HrDs`wOX%^tYb86+}16{!sL*X<ZqJBjW$ndyV~}$X zHOSg6(#SX$Dul?u8lBz*HD~XBhAJ#0Ob)7ZSPjXgBW0@0YGsN%865GuFtu{sgXng6 zkHJfsxii}(eAHv>Gy>yVeEumF4;cx=`e42g@AWukfKhR=rVK71?K!6-MRu!?FU zP+W?zSaTx7F*y*4{XYwQo=$cbnKgpWSPU33*;HF?qB}Vxgme_)zBVmeDB)db1 z3PALx0;+D#q(`HuArr(``a3miOXR53*h{zziEa&fUE$NUTkRrA6l`mWUl+tO9b)$7 zoT6|t*G@C|B?s?e3^+MItj3b(INyr+&9*CN&GyGemZzgI02s#rNT(n`(OaIdgO3Nb z1Jhb+Eb453u}`A4D?_hNB-Z_ymXl?q>xDh=-N z1YCz3v)i|IJhY{Gjq1d{|6E${;cZipN z^m)|?)KWJME-bhF5O-Q6NJ^W>bj^$2r#u^RMyhcPM`9@!_jss*#@btwe5kX?GLH;9 z%zjDJ_NVBjq5g}&K{nwD1n9gXA6M@>^*h%{#>|?0hjk@Hnnd7g)eG?9mhtB#W%DoX zf}GGb!RIGdC_X@b6^scJK6pujJpX5KNXAv1BZq3RQjw9=bUQ0M0*#hbL!DAs_tMXF zZN>fI+chf9MBOXkgaF0MkiP=g;gzj-L_W5xiLc^<2yka88KnAn7<^pGyL@AtdJ5m9 zPi#1-LWj9y5cyLnF6}T+ZRh7Ld-bpQLCWCM+rD4%$2kK_K87>EkYT-2C=_tA&|p?K zp?MB^2?+`E_J|2XpoQ1@H=_4};3n3hPO>7Q@%JJaRh+z93_GeeIfgx8###geq30>D zo?|)IH+`Q4pMHo^_3vb^9JL0 zM2!;y+n$5OOtbNHToEN~A=s2jWPnB zN8NmHdyGKk!vhXdqH8&9bZM}^kC1uPuh3D;A1LDWk_$F$^B&>ilS6m@#@%{g>(B{On)q^hjxF1ZC$fQFT)S&p>5|m`9n1N*cz8c=*N6?kVCXvfM zk2Iz^sOM9_vEuTuAMj zi;lf z)(8PD50Y`(Ejn;{Z?I^$y?w9j9X73J*3WT!S3^$&&|j}PZ<4OTeD_)T2jMaWx0v!W z!>e%*l;h*|{|R1?+&TM5hqW9$dc=k0NxaO8OZ-5X~^LvOerQk5En6Ov!bVdvmL{_9uqUrj^x?*8P@Mk-jXC@Q2A4Sis? zP2=oXGbv+cBkIroHzzpAK_5s>dp`RlI-O9e4A!@4fj}qb6z;ybU>Q~ca}H-!4D8O{ zrvB27CWn2UU?hjhTVXAXV3Avp%6wPSTRjgbISJ3l^Tcd zRO^4MH9&{ti8vqrJqPyM`DH%*wQj4(eTlc1K0n|l5^<&Md5=$(dl2D z<|hz$c6tkgX}`1Gde-1cLpWPVjZJaU$=fT&{dP7b==J=)u=$x8PV^Up-Iedu0wWAV z3&Eaj%-A5<7+O{$xyunwY>*T28u?;#JnOY}9>g?xEag4wu4;Ba#?0Ae+#A(1=IlAm zLE7zxkEeRm$eM@a7*hjEEzg;fEsSc2ScPR|gRC(uziZLwlgEd`=eR<0Q1=Nu`q>(A zXj(!w_Pc83TkDLF-6ro_gO9}65%9e2=TU&31`K7w04~9d8L;BS3#C%|dbqbFG!)ks zn-d=YB6m~VCfh%QqR=Gqgu}crH=MWK1X~SBCpAfXl+%%)t};ey!KOI&?TT_~>}edu zGrZs#a*9#}OIjCq)T-?Mm7}(6u^wdMk|E@6Z~ibZ_{13+Dtl8I_({S0U(gI+d#97J zY|Mfx@w_4#3n%IJfiL014q%1^Dr|(H@+JbCvmGUtXB>dYrwdiSfvhDvsG1&{>NB3cjwj5KJmr3~S$i7bsyjyf~xtN-vdY=yrfQ z%UfH$@NI=aOJStZm>*z&kT7OMJP?v4Yg^~o?R zlbnM3E2vTorA2#)JeIG#+depOIKF`k{_?{e_Sa$&Co3}u%fd5@18zyY$yWyV5`Adi-d~lGvO^v)V@Rva1K#d<$uFjbNk`f_1IJ8>ubhh(B z#F;2=IK?nKv(PIQ;^OU&Th(r1J-OCaN-qZ0b_QjugDJ@gB~($bNq|1_(1OiG4pOwp zzEhBN3lsrRN{NFFYkZf>Ni1bco9F8>X|j!&-eUr+!|cI0oJVs31@jY#Y}0A56)<->EQM35VO5zUx4DJ> zrUL9%a1)kD5fZ~8{`xgVII?-^^TUrwz2&!;v0Uf2Y4|(G=eFEk-nqzH^LDnA!DgLl z^}jam`NI}w+WBYrgt_y}0s3|5-}Nr{p1ZdevWu3(ZSyEhgL|iZXIk}0=5)IiFzDtw zY4S}1&gL5WUFbS^6O{X$*_O5NI47Reo~+m11nYhyx)1is@u#iWf> zx4tF+q5L-dCgOrRZv8z-XV0F(Qgs}yo)A`M1t%zir=JK=B3=DElFq-rI#^^j+T!nG zq`x!McCJllUP~<0PMjrZu>3PnW<2NWJN0DTsdR4lre=F195qR5_?qGkG&}mKgM&k& z@H3}c5k&CE*K!jr%n@59RyV{p*);S=K(hs%mx10&-!^EOjVpWj}k;uXj=5gJm5VXfGQWO71>c(4VrK=&p^>62?M zn{u-69Ffl`F0yu9#X62hzo?fw=j=0R*?mbq~ zOLhDsUV|)eP#7tSV(Btjl$bn75Ps>LxZt{oP^_*IEQFE>BrwM(e^}+cd&{nVh;#-E z1Va&$<(iP-CBSL48>Ht2p?Pr83%-8@FPwbqS-}RIrQ5S%em$3;Xz>+;(!|9y) zqn_XXL&_P!&U|BQWx^`0(`Yy_?ugod!D8;0f@C zYS}9OsHOkWOL0z8Eqd=dyrCQu3k1nP`8mj}BC+*6llv+v-5ug2R{oWYNX@L%*7Gqu zw`JZ#i25QoL%G!fIgnps+59hYczZM6u=(tFel7i|ViKdU$?=4{Up*uQf(Kl)@G-9E zVlh;5U8mKpy=4d2pogzsl9tucXhg|qeVd^B(o5fsyzFciZwQ@Qi3|ID-kPn-+^GNe zu%r>ES_E_O6M6q`17Qv7&Olcu_a#_Y=d0ZPaYvl)aeEslVMoOoo5)wrn#31bWwXPW z>YYF+eWr-%nZJM*eJ`?y(Vbq^k3%8L!blh3`r1MUR8%paDz|L(9|W}k19pP-LnR?foW7U zB=EG52YI}wxx9F5PIg2D0fEQtT0yY+SxS?kNZLPt=)4i(CaVV>R)_83o+pm#jN$4w zaj<4GECVbR^d*~ferXdYP#>ScG^&H-(|1)SF|HWqNImWdgx0GHK%RWJLo9}M-=FF_=-JQSRUW^kk1E`#M2_Imu$Tw_flzW9}>rVlcIyOp865(%jU{i@m?(v~LEmzx@$a7=CY;8Q6{Mo9S8aO}%Rd2&l^cfCo zYwhiip-yrR?(Xg{?htSIR;}-ud{@(KiE{>v42J5l6bvl;Qr!*`B`F+IYgKzwH7$@F(6HEn>B2?$xgWVb0j-~|cX7`e^ z-kQzfvGHd`Kl8ZGp-{}bnkcf6u(AfDws+^->86xR@9#Ba1pe@>-qJ|qV~cD1k1V~z zreEF9u0*Z6H>*Amq5}`<@&2kP_dhv`emj&GsxnYFFbT2+>X@fy-+8}qQ$f&LB)MPi z2PsvduWP25Z^ANv4VloZ=ik<>69wwpA4sK5YR`oZIbN7;N6Ucm8M{s@|8<$ct~P0f zQUOR9BRZES5P^%tUbC}rVGd(GPzLkr=8{GiK1+nSRJajgK`=QvTE~R_7ZmydQ%Ly5 zM?IZ3;?sgx6tzAYDxfFhHH(YHYaT<-UwB~HaO{yF_RYP9swXQQ$8c2aWh*E8Gw1N8 zJ1nTfhNiNilN-d;g)tnD_{cb+m#>f=5(IfUl8^qf8?qyX$RAv{^An;@BcSL*eBB9A zfd-^e!e7f89yeuR#5ock|1|KmgD&gc%p9T4af~d7&${3^hgT@j(L=37|J$K&)QUp^eHclrH8^;wK1H;xx# z5{AwIyJHZ%lk!BB1ij+>mU$H0el8>*Hp;+nsYUR>6nG3%)TEjCN|5CboIE4pT!b;R zbi9hh*nR?w`fscc9W2U~`GDA9Dv?96cm56~_BnP5BSoygA*VCW2LZTqu4Wy+&=k@e zE(#82`ol%m&x0a!ceRd@F7W6P7($2G&>BehoqtZksGrQu9aQ0<7?eAyTJn2i zEr4jVZY*I#9cCW(S?eF_&Iq+PltzBa*w2Lb$YICE!yUu1F`TnMIO`SV2nVOPWpk7# z4S2{P{-!j}Z=mhIH@EU*Y@!Y-YJ$c1F@`~TpZ>u*;*~1+PdhPP_s{AcwY`_SxxBE} zE?hb7Cn`7`*7I@7$Hq+Lqg(5|4*EuG*RaoZi+2l(QdNM{f8jw2Na|XA{y@&-Pxw7$ zu-V4-{fdg_D9AQVkQ~@F*mZiL!Gann1nQwK4@Jp1Ra&wqeE18wv3H}m&hJv7_+TnA zFhMvLHeP^x`qyR=cbcW3_=k8Fsh<$v*|n(*Mhw$qYL0Y@}52R>d19^&S;{p(Eq-Q4uX12q9FH~G>Jg1+G(c{JqiDwP1I@JUp2h*0n$P(dW@d?sP~?zZ@CgRt!G+D5Frf56$h~ypmbVM*}Y< zLv?OmiutGkwUBL+gfQ&@t6wCWN;0xuYNf~uJ!kN3y_$dg=NBpL2X)x{KYldN$ZWrd zX-Z=$1zzh8wBxOG&j@Z0enZ{ZBNl4|lRKoSx@zH74tAz+!kJu39(2?LOHByOjS;w9 z6)KQt&F7Z)u%3PCu(sFUa=D#WThD zOHxAOo$qj=20H(k0Z71jKgGfpmv`v}^ea7A0B-t88QJf`2N|jrg{sNlz#ZJ1{zCAa zjKFB5dZ}y(bsH;v;Ty_TP2loWYnFQd=vEVj>MD4IM_X}D#<7mEl zGOwhMKXwl|;g;b8*#HNSi`)3f3x}L#%Vaz;yA8i~GnxcRt=-Oj7I`-B ziM2jrW~BwuXJOFjgc?q|gS_xFdfMXkA{RGu4!@Z?C{Tm?NC=*;Q zG8*d^w0iGR-{MZut!D?*zONLX{Y#Sq$=gfx>(w_f4Jmvuo>h81T>66w!CTFau+>;# zQe9SKOoDzL`l4Js|BsL=IE8O*xfxK!p1-IOK)-7=5fZb+XMH^XAE~w*h0?HNVzy@L z?w>a4M+C+~j5Nbhrw`;CcgpW`Zw!8|Q?65mM?sU%JC7b8HYL4#wvc{zy$irp-G zYDHbJryTcUdy%zzXW+HoRhZO$+-0+aL4N$)H%0l=yx#4+=<40ydKBM+0-r`+R=?UD z+S%E89qOjb6q;G;l3xyZfs`6?fzO84)=7a{)Z`AV(fLx%BlJje|Lrd{%=HC1b3RY5 zlA+W!?L}_Fq$YD$s56a$WJe_(tSFgdG#K=r+t39Ym=YO=Vwa*maL;v+ko?EQz$Cnl z^44wl-xM1Wp(a<(3*3WkZz9D0V*7E5`B}ljgL!-cc&XEw0vDbYYlgF)2J64Z0SW9% z&CTrS3bms$GSJD5Gn`)-E*}|reao!z$5EsaDBHX~%w6zJkTU;Hp=xBy8=iGu(4(zt?(!@Z| zraGDX{rpWJyo0EKtmuU6G{+?6|8aDcVNJbl{A`Sr?k*_->8_0uq#HpH6a@@Ar8W=& zMG0w9Iwcj55}2SOjils2y1N(e`M(#}#TUM8oaa3EegEo4#taa=%itz7h!wmy6A<|U zZ`U@ZHxZGWI!@aa(4tvKh$dOD;4DhS_uMpTc)Ze^)|Y><4F?9WDZp?Pt#h+M#7TwI zoPxZ3fP^g+D2CKaiq>P*WBY;8>0SH18~nKwx5usiw(FnHeWirxK8!0jupqxlRyHM> zU|{VdCXl`X^3^2hlm3oUhq?wY)J^se%Dxn`~JmmhF zCP^_V;B+l-GhmQ^k#PSZsy!Ea2qj~*)y8KD5h_13C*2mfV{%7o0M8(U4i)uxpJ3Xx z0z}dbw4JV|Clxf`)_eTdtOy9=eCPmc;W3bv-xw>mG%1Dz?=`Xi{W-cJ5_q@AJ*_op zgi>nA9H5$%oW|tD#GnrNfi8aF8fjHzHvI1fpwgcfn@?zo0u=XR%OT*TiYS3b?|sw= zqgV~U;-d!@{#qPlqD&O&0q7B#xgKR%mgN^vSy&1K_C>jNT5I<9 zxmvqN0Q)K_-j-Cc1$Rc2`(#kwAFsyii27uTJRMY1FJKP?QmGfRZHa`=3}E}6he+Sm zj>OnU5bNiNqi6?Yg`UiO9L(N(kf z5{vkkSsvSBU>x&BKs2MKoF1k2PQh6m$XtQs?X^)d5EzYm92ls+JRFs~GIfXWT(4KaMNYpxW(=6#%4B^Zs+1 z1O>WjHBf|It;iTA69_32Pya-n*9I|r4`>%dagWZAY5T8EpDBeG~@pZ#ACqDKXp!l zNZf!C0gdFH`GP8tzn^aa8%82#c}iqZ0(dhIin8Br^bpELn(L%Z3dGCle7t(k8^H$R zK0b&$22a$zVPXP;&g+}Rvlo4C3(Xk{{D(DKgu( z)OC(`Ha@7pnYm&S)Ylma`bw>O{lhw?;rj#@2piDglan2~!6xZ$g1r{0ea z^byanZr7mVlmxvMoY7-zSHVj~0fOUJzvbb-+b)7!131#jh&M@m)uI`T;XL2Imn+<+ zwnO9mHc{=3zLBR)>$R@QBuT|=&dky6S>ETB zg}@hPG98YN+~d5j$rR|#SAf=Q06Hulk-7J&ixBV{&@PFzfF%_ZDQ7Z*OC|Reg}R0A z&j;~DYTrE_{rCY?puc_f>c;u%M?dF__m0xbxsQ2(N9(2cESH^%Nl=0$Wim+4RL)N$ zDYwXpnadLZFGZE;M8^>pBZH_^~u`*`J!}&_M_k=m14+H0VZhA=P)K{}RBE}})J5{+~%vCgwI{x<+-X#Aa zKR*oOc@dC(y2bW9=J4bu147WLU<8R*@9&V79;7>1Q@Ef3bFW>Mv9epc(`^yoP6oUE zZ|?XzKhMDlKU5*vkC#vp#G$h&=q2kRRiL6eA z_4_d**gYPrQ1D(cG~IiSb{7CFiy?yf88z;72x|&5F2YsiC%_?%;^BF-lP-dSMCJ)1 zmH6BK(ev7X9+H*{2D0c9pVL{XFgyp%_tUv<|LP8j$!;w@q~nNb`h}$l!TgL+w$K+M{#4jR4Rygf_33dCw zwAMt^K?6aoPXU25Y&V;xEAo2j^5U5kn!@hS{ls%21VY-FQ|r3P`Q8)_RpLcB7gv0fDfHoPtm~= zGxkXY7+xf_81eEST}snZ@Z$l>G&-G=x-3SBjYc!<9`ac5|IZ>uDfpZ*Y>^`oeUP$d zjHB0`R*ug+@A-iA5L zZ_?1c=D@TYAQ6L&SHZpoFL^^P#Lb|d1s||t)qwfi?eHeSagM|*oH5wOq+nyj1R*nQ zUiDvg?9zyz1#lV1168j%2I2uxwDkoks5@#>L0G|tZ=qJbXkG#MB(+L*UebSQxpVuo zPwrs1UV?Dyf5gMTT8}ll^RSoLTxG>)zu}4LNAX~0!->)%Pk6QG>uE~_;^C^3k_q0A z_0se>w*C#XG{~{SvA_RoyD;tHeNU1I_V)l7_^R^bhTHrQ5c8N8=Cy%2Tk`|j{3y6{_XhAi z@2=F}gK5`0=Y_(~PaeG9Jp`M?&fbRBg{K%K^j5b}zq&!z)y96f4xUZ69eAT>fCHOY zvkdH7Jm+gGm6C6M%>NwPqT$U=G$qDoAD)a_nyQ}|aGBV6@qwduqQ0lT1s?(nE+74? zs-m)KbFgzwZGRqloonn{2CPT~b(&zyQV4v4L993JtFK)-#6E~DXXV`@`VkLk4tB^< z!X7cZ>j2zr{#yZ7c&^zdmesIOg*Vg*BW>V66c)U=Lbd-Qx1YuU&lYKsc3Po{AFu4t z#k$PmKl?a|U&N{`!;7bo$@Pgn67sxh0cKP15gC;?9W6M~(&;6?o4I}sTG$%|aAL9X zgna(NgS!cel>XggN5^7PHwUVg!V|B#q8^7!N}2;6uPLaWds8qGO)J8lfhL1f3rH#% zFXM(=KQqKzsZx9+_BupKly1F8GdS~%1~haRW+9nVN$RN@m5%pRNle3*B9xGuoO5&J z(NRmEOVhtgB9EY{#F_LFDC4VOR&p~z5?)PI-TP(CIWWdgFv4*7>Ea)s=Cb-FcF_{^kYhK)Vr>bf)vhFUc% z<#cvvyB&TQjz7x9sA*`-?~VO3s_>uWX=!#IG0wigeUu>oYk*w$2HV;d)Nqb{kn zyLF4`k~aS(VOoml&!5T9Pr3XSift7O%lM3@A2q{;dOG+|IVA(j;WmY1Ja<4QTB_C% zXPrV|oQe=lz-CpDB$RWg%d!?Z4h!K=;SOt7pPM@qdzYsW-RV>n8F2`_G_^2Aovc;>aLN16d2lvOF6E+-0W zBaR{-g05c?z;##t6BLy|UFLFL+IwluhA-#%fSTw*R^$^NGk7JBgjj6EAF8#OJbv&p ziM(1YZ4rlDpMVt%eGaQ8J`n@P{(1d(n&_eb9E49^HGx?E&q1z*MklK6>8#z^zpZH? z5&RByGpvN=8}MEuXCOjRo-S`Zus%>r+W8O516^Q;2AyXBiyK_tnye?|bt8OFC0YJ6 zC zcg}9Lfc%%NiHGjW<<8a8UDaQEsu7mkU)h``bs=Lakj9vml*GX(7gSm39R-hsoz5Zvyv>}vt8+oFJkT^ai zd8vmPJ1^qmJNmb1e#51<>S*sC)^K0gvf)lT@iT1$t6`P7uX5jdyM@|wGyIXCF~;uj z%q@dQ#dF0^T;CP1_W&RVs`5df&U2HTbw<%=D_2<7xo@TKF&5yuq4?dc^zQzfdTB38Pc^E%1(zK?L-N?U0AiC=pl&L zfNHweOJz(b>{o1e*>y0G24-y^M zi~g72c+ac8?RQ+B=GpX9i^7eFZI3t;>xBQe2seipqh3YT=u7h$441dV5hS zg{O)hVikgNR#}7dUUClMWx);PsZg|;vL+V<5TZvr?fu~*UHnrsN8@Jt0RqCPUTTNS zPxnWiB%(&Fz^*Q7OxCj9bY8Vm2FYs)HPfMMbih+x*jgL?>w&lY92Y;Cd;%YNvX0F7 zMbu`ZJ@USZ*Pn^7a>+K>@ECL;NNT=4ewxPy_P8oKms__WVXLyacIxu-^6S$vNo>vr z94SS;hmfE8T<$(7aALh z4))a0;M3gD5OPtNRL28EZZ-XI>HL`*jy(e!MQFs7_%R*s#RGal+$Hx=pf^xRxO5>F z9?G6$Upw-?fyNKtrJKe&o=>2>nIo#X*>l$P3brs?1OqBWPuzyEvO0KTe*DfVOHdrv zO+IGhr8v%OA<<*sN z0+;I7v4)+42m&+eF<154)Q%iV+yENrmn%3GWEaP2cYZDI_$-T-%U!#dA60ajOnoO> z0}K!1rG+fJv59VUr*7mPLeVRPCOTLY#e9oEUPyHqtVx1{H3H7LZTjZTcT4cFeeGz^ zQUNDcJtepj)Co7ZR2#N3s2>5Joab9Lmw0!+MUSLx^J0Vc9z%A>oegj=b#gTW{vuPc zjWcI~N!V61J}DZwRvjUMhw$(mko-Q-=(swzdtg}+?n!JMgP&aR{jb+)QQIm8)){mm2sS?6#e`$!Lh&{9-&moL!-7#T;f=KPcelp~I*4DLaP`#U9 z2>Ck=<9m4a$@el%s*DT!ISzlr;oA7Q&BjmY?!?aE!0y z3-Ibf>TmrXy;EAjk5IQnr-EiCn4YC_8vvOW0qikbl#VUSsgpQaM+a1z34w=J>=>B`A>->60FeX z!c@E_FGu=5yL1bIAm!z2KPbAj8WK1s__KwfWakj$sh3+Sf)YB5)j#H7D}g?IF4JJi zmiG$cJjQ}n7|_}PB3bj|;QIe0i6Mja<+;p|`Ww8X%b06%KwTf1?~*WRwoXHaPHdyP z+YfjtKeB-eq6OwvP;=LQ)m7^3?>|Cup(u;JSA=zWj`0m1c3Um zNp~x5Gs&8^)9Ir@56xnl-K$am@wTtJbFPIz%i=GwFMszL1D`d&-1Bb|citp=I|g0| zN<7o$l*9XHI%%{?4lw7hWW3u`;STg>dPKj=B8QJ@t^g@Jp(Nb`NN4rGLO{(Ckk5Nm*6jq_*X)+=~>onKy6c!$UEhwt}yBmn<}RDgKWJOf}e^bJ2jMieo> zwV6VIo&EJpAym3?qJ!D=I(V#F$joA>)u;A^8eKi9=y+2+16lSs=C-Uu!e|!S> zh>l~-am6qpY1nUuak!)Uxj+q1D69-ABZw{{i9S=p-5UtC4({MT%yoI4srA+ANr!eF zA!{++mwcXZzcH*cjC#fIMj2OtqZkzm9Jn@r@W5;CQiIBYTL1N7zO#NnvXvGL<;x@# zCjY{Hy+YNN)DW`~Oy7M2&)vl+B9TrnYn||ccCQIn=Df?bd5kTO!3VqL! z?IS!o35hPrbGU_*T7sZB@iz}^y0BS~5TE>TC&stQX>{K9a=v%k7DJS^qKc0|UTmnP$vB*+?dEv4g9HeI2VR(l zn*B-OHuJpSHm3l4cBYvBQv{W+av}8NwUrJa7sh;$1N@#ph>mF~a4yTn0_{3nU|H>;p=7a}lp)ffj~AqXq&wn>GKCOolL zzRe!7`p!_|`%8~z2eszoo=5K;O8NxPuamWOQFK#(+aql!*h|Ja>EwG1^3L} z=+4)?UriurXgk`z>9F$0iK{R_s?=2dr!u=9#QSyUyp`V-bHDHz-4%O<3K{?T&HEwB zku&_AXOA|}`{Cxw+|V`~YHq_7-<3m2Yi2reLG$NrhxR>$=rHj#+*#kD?25PJcZ;a< zFJ#kv%U7F0u8yI~*a5;BdDB0YGXpX@GIiPY8V9dLjRSkrh?oPZ$>I`9i@vV~a_Bd^$?)!6? z6BXULfL~QLjMs(ao^aF;pWZqmecPT=&n4)-7_|SjZu*M7@y3Bl{-u&2-=|GnIXe-r zxf>^4;BJA*%$;Xj6_JpIDRGvp(Z(?WZ#j8m~`XaAO9~hwwg5Y!N5TaPQ4~ z;1m*a{{Ct8MQiWq?PjCjx;S;gjCT%|^(X--;^j<3IDAl61e&M(y~_L?Y5nT;Tx$?~ zZQk5%`0O*r;JNe2YODwaZ>tEZNNg*b&$+djF!CDaenXIN=@3Qb+6N+v-emp5s2Nsd zBnZv7s36YE46YVMA^As0*3-S0?F%hhs86JWcLJUx)Wz;xfcu}_7V~T7X+jmZOLC$R zzk%z8OZ#oAtLSepD>{GkG9A)z7GHV$hgazEF5$g8@rCVt>t2Fn(TYsN`S>_&_LbT3 zd>VSEBQ2s}E+A0!9WPB7Z&&!D=K|3HezFT0y4Nu1QMhdKxp*Q!g8l!jR1){}ZKB}) z@1!iv;G2lNWG;Ji9$InTFuvdQhIswq+;2A-v1@;Y?1F44tFj7nJ2mw$cdF*+Ac8qKAMqp|V$}y`ln3n3Hv45eK2^&O;0xw4m^`Rk z5`@%w78RNUug;v9V^I9@?>qVD&g!0Bi(B4WN0H@q@_eU2_G9o!=ndr zIggf0uLq)qu0FUF!k=MdM_^`SC_Vz^XI#iKT+kw2_%N6BzUFf6KzTeA6qM8CHsSdf za_+7onf_DBnluD64Zi`uO+peL6rbMx`pid$!g)HkqoFS7z1*v?cM8nv6ucV>uDA0X z=^&fQhb6Z|I94E*^bqlLe$=P#x9_0-uOzHMC=wuZ4q3%~Vi>IGgS{^UJkyxu9+R9m z><0zf>i4~HYNj#a;Q&?T!v>8DYgdvlRU_0`e*F?!(H$7rhPx$iWn4dtSUIk-2nI#v z>+fy(@b7nB_yFGaey8zTRbpuJX>j5Ca>vR60%GT_xtN_9ez-I^fPb-U#E3VAqBz`z zsTTg@eU4UqpN}-ZAPiPSV${S;uNMr~bc1AsTrad_@tcFo$6wz{w9ghwbWw7NxBvSd zw2;g=S#PU$aG|PRFKp8;;wFiX0py=dFRTbO@x(xnYhM9E-vlLd6Gl5oQRM1 zJ$iqiHEa!&8+~!j#-@61_?6SOKy=m9o0LbklONrBak_DEou5#tH0@(`?JNpWO}ey; zy5AiEOFfW_q4?V2oxs&B4JPMPxJOu#DZ0VSH=f9Kz4lTg|VsVZ_W?8^Li%4;C+!|r7d)y^AtZgWjJT)F4vA{%Ief^kqAJpd3uM&c( z#lwBckF`J(3g1&srC@rEv*N4!qb0cS#7`Y7@c;4;Bht2H!r)=t_lCmndv;(cyH)_} z9(WcMc(YXo)y98MppFwH+@K@Ggd1LielslIIs^;y<52Qf`#m)G)*P}$9X8~1Wg#yK zpel-C#7UBh_x$R=g{;#*-yY!CZJcFGR@Qz^@4g8WdnmIr^g6W>e$yxa?GEEd17Z}T zPE?={;QmFON*5*2Y0>r;^`0MP0z>T12mg}Hyh%y)QoF|c5tbzm$YG{Xv%9V)a51YU zbDbSl)Oob6550X48&Km=%b9bIFO*V|Gf*dsG$S(1@Q9Q|1}Ge#(Zu|4r1y_U_jSmB zb^}R}?IGy|F(TGI;JeWVT#O50!%`cE6u;Pm`52bhnAWLEwB+-?g7#dla4y_3k4eOC zR1G#5`U*lC-0(NBAUru(_)!jJ8op^M2AbDD7{;CSbe#S1_d`)|5f2Z#)xCkz-Y|-P zDDQ%yqT_A&+H@UyhY8ACqJ;{C0AlQb{}X_wH+nG@ctpK^n~zrjzb=b5mj|{<(c;%N z2?q=5IB!D6?n{@@L<=`9US1>Pv<2HU4H`IMg+KFy`0Zrs%6A|0Znp{?r~k=yqr?qU zc04+DD~9gJje@gW-&NeDtmJY>N3TME|*nxx&5KS6$F6>cwP~7t!{yA@?o{ z8Nb=ae4)+56A$4gdmoAPob~dD?bf(`;?%gr+{`dsyyAu1p60&HJ>mi+HRdxF1GDN$py@HyGQT~{wflEu^E=@!mqerWIwFlMAROjihSE9F1 z(#qLiB>(bYX_)!-1Sj+~g6CD!0mVJ19lzGuevOAdS4o1?xo^9L_*QWzRr?8NO^<-! z)9tCZikPq?g57hK8yT;DFEQF<9ql_GAjB34OcIl);c7#9WGMfK9rh=p6;>4uPbVe3 z4|Rek<>AQR>6C}9>YNTfWdK7j{vxR_}DMP%3!>FjcUprXZqQ4hLzjWi)A z>Z-$+=b2;s%Mf}kKJQ(SF}-R{?D}>gw%kA_qlif&pw&_gwQ5#z<^l-ogbpEs(reV? zSfu()jW2=NDjA6?dW3J0KgwNxI#9G(Jlm*EI;rOxJvX&CcNICdAK8nZmOtDp?0maA zxnx2MzcK|euZkaVQRrADYylo|IhuRVK{PGKaW=2LBP0~R=kxps>Yh<1e9>%D1eG&f zuCsdog&AVc7G1&z6?l>j8ego*ob91fS^!Fr%=uluVT|+;E9Bq1$QCPJ8bjh<3dni0 zwTzS~yA@vIt!d|I#~om3u9eKdQgG9bOg+8|^h$PwFKYa4*>U#95qshd?$mK&4_tz8 zZm1z0An2u2w-rC33eqy)4@SjI3tR2QGRQdr!j03rJ0>QyTSC^nrRSLW&;~z`L*+ki z@T;keO&{SnnhRk*kRKT=xFwIel>=xt^$vbi)uZNCJO7pfMf1#4JezpwDgU|vc+Xx` z)LS?67OLMz16X7Rcs=N@x8kmSM28Syfjr@Q@fTBVDP(pFy3R%rxgb?@k@O=(K8}hc zZ{t7VK6>VZpikUyE;S_ay+P)DUGs#4BmEhQwA~l}LD?rpg-y%L{B3W8n%nNy{>MEy z_1aLPJCZ8?{5l_sPiCmN$0^w3#7@8oz9z&Em<0d>E9PlQO8+oT{Z1T9+X>0Y704wIh`fF;gDtkHZ(Yn_~u zIstvwPJpSMjBSCy%$xJtb0I%mz^3t!-!!EQQVG@NU|O$@V>prH#b*t-+At9aa>CuuHYd;%Sf+Rxz_6$Z5-^=aEh9lt#JBe)g^F9Vv{2ng4|ju?0G zy;#rJWrIw}5PiG)(kF4{xaQf|#UOQwS%bVW9iLhp;Lc^#7^~!SF2p=EuFszv67p~< zrGhMJWInv>GVS=Fe>VAgE{k*ws^RU+2bBB!XN4ut#pj15cf%10lL1snR++BX?L$vE zPG8y2a7+pH!KA8pq`P^i_7Dxp`C)WOJsqQzXaTbPkQ-Fc6RCoYl*cn#3oK18|=pCV@?X>%|-;8x=7VjQhyu=*wV2F^H9TAk@G!jFe zXi0nq^=;=A0#CyX9fx%GIljm0K0uB= zo!BuW+xiuW$*^^SGAJ=WO|r4(BVp(0792?Zk{i!zz#{$8x+I2! zwdiX?C|ObAsdt1kb?=Q8Pu+|E^rxf7igQ*&SW`A2efU8d^qD*qWdx8{QIIxNFX{XN zDr~BJWhhXNYFw8Z>7H?Bi-o|uuhP2OXp>TCT!}_*zM>YptmH{A(W)|i-mj~E_K{ot zkmAR8^1KV|y1h%@bzc$({}!QL!-k@bf1nZovH>WY33-y$W1QI5VtdUjX=x&jS*-SN zrl=$WNc=W-TxIeR{!E2=rXZ`UNj-K;`vLXk^P#s8UOjV2UhkEUxZM3~3Pss5BJAeG_dp_NgaJbY{FFtNsYarW7FrMGz)TL~Iqz_+P?rzo8i zVNAD>OSs5oF*PyC@$-36f*V)m6`9=`p_1FX2XHCCjK1-xS~KxBSfQBppT93bHG{ex zH7%n!O$2kaF>8Txm!>^nS-oN)vM_yt>3Tk(!iD};N>0fe38*a-qqOt8oc7@U^t-qb zFXyF^w_~HUzLBzSF$>w45ZLN~BXxm55t@m-Z!%4~zk$99zXV3s+C2sg+`G()f+2#l zyGqHA#9Dq9Y`Je^}U%OTB;qBzZ8OK(7I+P0a&r$uhjI&h7EpX^w1Xbq#bTGWzM z;3ZJ010ag)&q>}7jKAWLZ=fZm=472|4ce2H@MLM-7PWUol!hu= zfMN+wMOeR_?hO^Yxk${D5Tw!#sDOJb?Fmx&Whx4#5?7||%-Y_s^8=tw4yYC-_Lddf zkhYvKwT7;bCf;YO(~$I+KJ%VJFSHtEuu>Khsl}heI?OK`JuYmT&J54c2e|I?3_hio zV905I4vv2Ic{e93H@mDrPPQB?)7KgYf_n9!-^wW__5<`S0?-!-n&0aFvY={jT6pSb(=-J+TzC!9STeE}-CN|(m7@s<*;;c}B|G0a8uMP9? zMx|Ihcu(3!Vf4porB?m4-UFM}s!wuQ$s*<45YsHcCS(;M zw?9D8sV!U6il`~-$M+Va#m(GD5s&d}1TbZUm6!x$zV+_bi)jZlh1a2!8i#NkdDuQY zJSoImYtjdM&IaC*%;-p*aOX90-JfKPIYSMvc&_zfeXPGE+Wi4OxPaSX@R7{tr?^{ z?sz~&HtSzlXK_u)UaxG1SALx={l1Y2y#BGX{f*pt?4P6{1Ntw1SQGpmKGs6MKx)Uf zd-ab;DG0;K%6cb!tEv%CQ|5s!?I)D*3ca>JZ2U?lo(0fPYemVST3k`!R=V)sagXd% zCrsM*;N0zcdSYIg`55s6z&DkGS7n7X=^^r~j96}n0Al1wykzHOdZJnqQD_m#KQBU= zK?M4o7LBgEA4!7_O&_*8-kSh_2};~vBB|#XC~-49Ia4yBD*NzN5E9SxoQ)d?j?tW~ zm2_lt-`@#xEE+m}qoLk~m(N|W^=>rwIv31FsMjTG)G(tm*&;X(hno2C=qJlpckP`U zRQ`^%DZFi$`RSuQclFF(mcVxE$UB1Ru)|lcYt0;zkY*Fkcv=Q~92-D+LusD!5uAb` z3_)M?b%4PZsg=mfQe;R#SlBmAPs)K%z~Qou^rVYfw<-A1_0aI#l_=Rm=kz2=T=R>Ay%~0qPtE z!xKlsv(LWQXb_(Mt-DWiq86R-AUK#Z;&SP^_n!LD_h=^>+q5m0^Ol9_v3EY61KYA- zEhv;A9Qr|PX!MB4YPkscDwy161ALu;J^#|LqUqSccx}>9EXW5x z%@}%)Kj0x8jEBsUZQ4RWr_%!Gg{dfXJq5QtRc8sdUD;ckw^k%T*HvJkYDb6NzxP7f zdsfycxu4nTt`{kkyj;wX{k10zjskHaWiv6sFAyH0CAxsN4Ag@E*?p9rLAuXFtJTrx zi8Hb}!RceZx7-}EsYv*v=!wjF>i&E;58fW^Uc4a9i5;r`u8)AHf+)FtnK;RCOsPks^z!d@PYTzOMW_vUC1bDYyT$yyafsQ$YzxKG zeN>mweF#u5@9Al-L*gobZR1AVN3$)8lA9 zTz$XMA$d1^1f*Chd!ep3Smkby$ktE{dx|1dXJ!q`kbM#p32{JH5lp0oR$A4p{MYw0 z+6{AlfPZCHl!@&9@8H+_z$XgY0JV%7wij|K{Ir>s&Yc1b^kI+(JMms7@sOt99@knsHjCcP+MjJzr??Z%AgbIrB-mYf1JS7l6!gb zHIFAA5R%{NBbMQ|(G9Agv!dR|r5T3ADSG+sYuIz2Dbv(TZ<#KF3YVr3Lu0k8n)ILX zEV;@cLl$4{Iac3swX;p`Ga8i4_{!J*f!6z?cE`hywsd*rxVg?Cu*lV`p`P9UbTcIt z6-P#U<_CSr{ZyvYoa?Z*pGWUxFdzga3A+;&X={C2+0p{U>%j8tCe2=;@Lf3Xp^ONk z3a2~9>U4b8ACw|U+7HG_7dI}%R#pUu;P)ImYc9REub~Q|ccQoTczn{RO9pVqC$B!@ zuL}ZH2YbN9-q>Gs8ehln!@h!wnPHiW(kbNHK8@E$VlarPFc{3FjF?(eOA^QCS^)Zh zH;>1ANILiPWyBEG!q)J0M9%D=aZ$daOYgN$JM{GT3* zg9SYMC%+&utM-^y2}RjH^5nU$1HhKy!$!9tt-afvKM+|~{D{;U8(X8O zL_5IU$f%Ke1}b7Ta$W7vnM1{P?8A}}k%E==I}gK>YOQh*k2d@t^V_ITxZn9FVQ-)G z^Nk&Aykp{ANv4dZb*{^VLbqpj1I?WmUv2kvLV0vMx)8N0OJCf}fBX)S>XkR4toV?O z)wj#!x6}GUYmKL|VuKUR)5$4wu3561tqY1D*+MVaIt22t-#Uz5y}Lmy;&hZt`uY>r z(=5R(`Xv#LfOTUT`~cwrBPLNn5$J(P+V39!O-^kc5zG@cGuPF{mwR|pj)p3~g~Mgg zqZe3C)eA6L$${hQU?C@Oo<%0=*1&n}630>p-?A~(dZSXpm^8p(_7(e?P;wq6Z-_-* zv>n$+*~gESx2`^~OzIQ_Oh^#jaUzOTnfYU6rxvHo{JEQAN6Ea@=z2t3gAA(R*8$B? z>#fUL=kYbuXP9vdHnjcTS{|kIz~|WToARORI%k@Nxbpd{<0_W#7y@ojImlE!{PMU( zv2DYc(5N>1Y1^r71X)}rl2ihKPm28U^(QvTN?Z#o8BP)X<8Ke~3(O0O_ulU&^oBBm ziKH{++GvR)Xq-Uq)5qx@Z+n5NOnd_edD7+Wbh%U~Ii$u{S}Ix`Wr9Ant2puBcHsB# z#1|hHGi1;2=X6Nx9A$V*`3D8_mPUqINyU;8Y;0}9V^XjA1cBR0|Ev^LbyH& z4y!yWX7kO6028kpWCak)!uH}DKYpL-dn-6^e*Y(N#**8 z%it`XswD^nacf-zF(St6Kv4nXTfoeaXDk6q#_iUhDIHG0;}Y-r|It-!Y07P7CLUgY z(Z)_pdv+m!+4E*ZGunJ}(YPD*wfzZmj&8&Y`2--YQZ?*tKBi_~aU$eF0gFz5dj%JS z)+4l#47KS|!SpH*&N6q8xsHbaN@ExIH;W|ZB=`JCq?+aH^!?`y6sm!y(KYLKAtW*u zh~NK+T?0GB-OgTIgwx%Emc;=lIb`<~>0m3qwqilrz;`hr16$nQp##kgf!3E5UWK z?SLg;SJ`9t5+3WhVHWQAY&!WL@W9i$!R<#?p|`AID1E8WDMZ~fQE1-0kzYC;K-J`R z1VXoiLCaSKmv>z0A-wE5{CD=glr*yFkqL}bhA2W2>nA}n&;{hI91;GC;M3}NHUVZ{ zTyLBY*%H>%(>tg{R!tGgl{9&Gz*H!J_hF>#A)$fYrdg_FqQ;5PRKdZd1DW-;Yf%;T zBgHVMZhNK@8~N$^_t8q-zWaV~ie<+mNX%9DW(L`_Q?n9Ia#~vosh%t2L5felNQE2U z_hiLrddGBaS5cH{l(5vLp~^K{d9sJen-H)wxgbV)D3wKQ%$ED@qZN6gekQgXtw6~? z|E;?s3tPF?QJzGgx{RJ6K38h=yYxxu2$1l-Nu9|V;Ta}Mdy&{|@yrE&5>)kfTeMiB z%WlRb(J%DDY6sip*2vdp{U`2+isY`ZWw4UD!L2DCN6l}CeDd)9NOhk7ybYd(k!;Rg zuK~iLB;oKF+zOVxYn}G}cfBdzGiZ18B+ghl9%Gp6T{=SDZ2{3?pZQ?Wg5ZET6)`@+ z=)>ImK6hkE;h7DI6&_Kb&o^qS`Nz zpCF1_ncAY6J^;5w3hw(dj$f9Btj=e@jIO;FJy2UCeV;tE0P@JvOsX=fAW8#Q$QvKG z9giYm$x$Ptu_OLb8WqRS8`qS_x9yBdijF1&^Ga#I^dDcC4jo&}Srfc*QLm#5~eIw@|&gg%N0?EPS8RgUm3gu2tCM``jH$8a6Q+~W(Z zo~aPxc`|Fmxf?9OJIe4Edb^i*TfeqGe$hA(xU)F_k6>mH!tmAt&m%_;<`KuyF}dz5 zZlDTefD<4Jx$coQFtb7>c*%{|{>lG{op(NPpc zk*x0SAtD25`a@?fp-&=7CkR7K;L@h~3GZ@EdILK5HQN~lwevoB*9prk%&YC|?{8Hk zGkwkSEPEF_@P$r4&*%$~XaFI=r$eH9dJcc!TBWda?uZPsT77|Ko-%#LPd|8!W6Xm! zDDYE)cqur3)t=>{)J$cAba<6Eo8;1W61?%~UlEI$gg;|fd(Ld6qktaFpYmL>&VlKJ zEI(>bbi*==HP4p5Ht}+b=fVyNW@ry$oL^9#{s{=b8~BR{ozte2EJE9nNUtzrPAlbk z#SeoJf9>O^_9zs%#8y4du z<1$B=%w1$GRe2FygLI%=J_wzfhk2H_q|U3=C3h0k7s<&(9+CfH;@JL>foQ8CNlDCv zsTy;8iAQM;&j*J~WB0~8Uf4uJ2T}-3eZlz)Uv@D<8UxeqiVI!M(&M%oh z=6n=&2noxj$G#J~NiM9wrs zZ^A_;Cbj$_I#u>LIM@hOUrv~<3wcxs0kr5KKZqULyXSE=B%aL(Js$LzS<_N+=Q&BL zJ9}ghtpUll34CZ3bLzdP8Eo~~ktoeeMBnC}DHH}1%rhI@Gqkv)h>-?mqTy_ftN)13 zOk$4)zj5F5j70u>qDw0#{*NW~_-NH|F4xkZt;4>GS(LDLjo2cDQS+H$5PPKX{u=os z5`0vX1CoEoF*}0OItTg3QTnQ-_{oQdcjLaCT60gKig!Kj!>+LF_wAzyWa)G_aBddB zYm~1Lbiwfv?lmX`*Q6yzWWcr)vG;PpH7sNQaq>~sOYPWiaLuEsNrqR@gU}oIuTPl+ zK1f^ZP07chKSAQOt1k}bUNbB3Yi73%Qt;@2tZQje`mm^#p`O~t;-Xz?PeG;{a~3D8 z%Wj7Iw;5`GA!OsPz1y^gqkgc{66xUGOPCDZ@wry$AtECv?an?E*I2c2n!0HB(&sV4 zZwvhOIaG4tIyUqBhMzQTCA}B6IF3qq5_X|8jOe0wiCbL2A%S}~!zArQn&Qzify4^xQ zvC#p)?_^84v7s5UqBo&H%A{||Yzsdi<-&$`0ROfpo%l*;J!HjfFS_$OkaRyAal#MW zYM6I93xBG|s!-t65peca5ibqu?o#Gv3^TBW$g^I&{B>BQ#a>7JpTo}_LQu3^&T}Ys z9!WUEU{@6tx5CWB^>&jY#ye?JE8oJ-ZfeoiLaiabj>w#L=k)MHD^kSm8M1z^ALpKH z)?23b0Wv4H{+`;EWW0i83tlW_Fp|4;qJ%6&)3f)&Uzn}P_pPS#mz;_XiCU7O%&_8# zFfJg^klH@N^Xp_rTAyvFx+0#=vuSy4fAFqhe|81wbnb38WbNZcox*wI>#GJg9o3** zolmA?SWaZ#7{2Szb(=C3aPJ{1`8kL8bFhAl?2NmG;{7TiT0?#&H66cINd#G`tq%^} z+H^dxpz<5uFHOd^BUU6m>R+cXU>-}vykb(1T^0dG85J2Ic^Xi3XuMt_usO^{O#2qL zo~`ILFJE};?ewk5&rT5+PI(tK7vze>W313Dl}B zk(sAPy0l5V5rR+2Xxqt9`W@J%qTs2>#y#|4o!eWYcf9?I121UR1J9MVw}@AzT@ID6 zD^4@_sJcF;lKM4FeUYTEw3gO14S32_?y$Ejz#_PY>M;1hll?0dNHqyURSSK#-8v1) zQ9yBFx#oTYs`QSib|KVE;zSUUHmP&&bq$Iop#=GKE#jHG*D#S=HEpD>8gR+HA_p(^ z5Z<{0bW2^6odB?JBloalHRSSzDAR(+=&6wXZp#8U%eSN8HR>Ee8tnBh+1JT#5|`eO zj&x)Td{{$+R{CWpEw(jGGlEk6pW~LU=69ytoH!b|9`s7HO{;EJC9rp-qe7~~!QYXvuYs#z zgsm(yKy%sg-+?IvR^!O1yoZ{90O)vPKF?5yNmLGNh&&Qf>K~JQ>Ts}%OYp8r;6?SS z^cxFGk=^9x_kScV#XbI3ExCv+a4eTpd5ahLjuUde@J*D^Ulb zo-oJBRJ8Qf2IxSc^S0_Mj)4|5utJceWxFTE#Yr>fds5b%dm%{t&j&HWFhO=w~b`=l$PMAq!WjU%@pAaj=xLxw9RRX>WKLzL15K4TNHmJRfWAMVlv zO}mjTgVj-@uxj`i`Dtwxt!FadIVXMFLaLDrxZl5m{jee06s5WJFT zxJHyOK#)7*(80bXxii+Wy%5;t`EJ5G=B^EzYl`-c7?(y5g482s<8?Y+Pw_&4 z@_`vpP-AArjq1T)S0q{uG6&{Z;nVBY5%aSax%d=4C71VG8TN3`^|U>VTR5uPg}e+2 zon*=&-SGbD#B3Spw*AMs&rqYr%^kxeGvM6TD-z zs-)zkZw+36# z4&2KV23X9`$T=v}y+G7ap0o?+7jWvv&807s0%cJ`>DauDRlV6S!ciX#CbU=gB|cp9 z32QcM%l znzA+oC5p-GHlx&y2lnvHXUUm8n3Z2wZ(aiE@G-JIsUK;XYTsJEB1+PuCVLa^(4)BQ zVwqM|mPgrjxfny}(iX*!0wB7;_QfQ^{s(66ry17gMaep!DT8ZsF8;YG$^-aM8B#c9SoGDQ?fEUszzG-+v*fv?_1G zRRJBthcc!iLqZgaRf{L+&j;aT{tQC&4`1O&{H){iHvm~-Nm3^3&;M0gaG`gfui%SN zIGN;@qP&(k1M_Yhj~*3t?*yZ+HI}O<-d46LB|d&D=bo*v@ehtg7;yJepst;eLQiHu z#Z^b+Ur9h5GNrg}2o-Da39F!81`IQ^3KM7D{N77|J5p3X--mXXR|byrtnGeU!Ml*X z6{~z&b{b;Q#Pcl!0Toi-2~p@CC7T+M4Fkq98hbTA7BX}U9Zzu7So4s+H~rfuHnkv%Z>pj`|=LSEy z1sqGnmwt-Mv)O5HeTZ;*luxk$QW<)0e|XSXz{<0r!(wS#59lj(z>~Gi7<|8fpIi2} z{PtL67Jo>!Fn#Fr;wA0;EvcsTcXM@%xIhBW4aKdH>>U)cjE#?{3%j=cde0CO%D7vS zgSS5{qKvzIn`v+*Pz`Rmh{S&+UcB8>l^5=&sBI&rs#H^IO+;S7u6&rDeM`f@uRCva zpk!e#@}hHli!J$T+8s-F3SUudTYJN@A8q;Ut^hGNB1pG%IS)Q@u?c$A32*KevBk+WwB~s(47Csw za^KT5z}$)(5z2z76_;bA<{xDoaYfxSL|(E= zjeavXg4#AMd|i))9JPdL*J73|e)QeT%*y9)h$Q9h<1EKCYra_U2| zNs5?)W0tUkJeVTJ_C`K_BRsAj|Lss|J5wWO!ajW^mA%agL~H|yH$_j^$}Amo4UZRQ z=nlm2UWHzmD~bOc*eNIFJ1|T@RO8K2;9m!F8{*eREjs({@sC%Hb#1+uB8f#k`XM#_ zohLQ?W-A6|7P_b|P0;PDpxQU2egp8Z7^u}xhyj&w$s~9b{EP*(FARv#=>}WIiwx1UZr6{F_R5SUjBqO}ia{gi_gn)N#juYP={ zf7oR*OeAbyxr3b{(c&LraF4ua4qG z(N5GcW<-L5!N02kl-dZ`sexdf^XBv`Wt>bW9D6C3^WwevRf+ty&uspY&4M}#96a#S4m0Mb~AuM_mzgOJLQze+^NPTG-bFFT$ZYfT?EVHMm_@o(U6b7c?6csKMW_{;fZ+m^H$LQM%KXl`^GlsM46_i z(<*yK20pQk9PQr|Pxd;H*)T!1c{rhW{sbk&*vX{K1#h9uaK$8-5pa+g=7uS1K zr#bHSJN|>gUX?&K#bQPzNx8cMMEYcwe_VeRqn9_QK0{PFnRIMyo=0Ad0DPXV13mbnh#IDu4e)D%^+=*k-bQO_nx)C_BO^!Fe79mo8~XL@45A`H#xyR2TK)Y z;)rQ&t1@tLPNPK`80NWk@wM%hPB|d`le0+wRJc7R+?^ftM*o&UTjSOT;ZF_HGYuLn zNFK=*((p~kpY<&-K#L|4pBlD`xmgQ{&uyjRl|mY!Oii%xUJ4748-G z&Jk`z9O!*||9Uyl1i!3@-_xrMO}cHZU=`>Xj*|WACQ3Dd^7gB-J~|TTAs1 zODrlZYl3=s0+s#A%vG#L>jCmRVJa~dqRMPkhr^hHq$?9+I+6k1F^F#=@Ma+UrpDGa zz~lF(QQqldy0*EHT1VMOFf6g$$Qek}Mb&wI4GAgM1n)(Z2#TQ2&5HSC3PGc*OwX)C z-MXCJm_cdl8`b;{qL}Hzt~ws6N(!~Opn)oo&r4(=?rAhg>3B}5e!-*OT1l~k6MA$a z_3MToNP*@HP;;^7#FC(Y`Ua*Gvvn2HZ zt-X3~Y5FI!>|vPgPRRVs^&{^pRQ+ti8jEXr0lg^i*QAEV_5ZBVT1oxgJRpZw z@}gcR{B&p{H?|7Y&#d;NkM>H5?*}KQ0+$&OF(-Pqu4g-fNyZ>k*=RE+ir=9mdg|eN z_$oW>ZYve{7&zz%bb(IzNa?>=c8wV!xH5i`C&?c8ij7}wsu3ZXdg?GgMh%M$OMw1` z%sT#!E0Hz~erFSYy3pplS6+^!nh3|52W{1Btx{x--=b(wTuIr;epA?f&Qmy%>$YZpzt^L*MnmQOZu`T3S+G^TF6~d;;QW#->NmUyYpagc z4+?&&zFhJ-QppvH(9OKGAxjQHn5Cv=O2svReT{A1=1U(?sIV>5@r~vlz&-O+2Lh!^ zyULWUC7jyxI!_k4(CqXyiBQB+5B%H^q?@^_)bmw-q4*mQtxf$ndLsIVs3(z~e% z_u5GCr4(F=Dk5x^)TI$fth8+ytlO3I8T9boP>}B+5iSg?9|uFi>ch#KRcAy~x4krR ze#lxE-C4DacnvncZhRy4s+Zu$tJIlQIv?pZ*ZAY#XS)%vKe(5A_usqpc^Boadn=vj zPh6V*m1|Su9hLftJzRB*)nYatN}dcH!5bg5-lzwRAP#{h?w@iE5_@2Y&5Pl&>*6Fi?)YyAeegU^LO^651I5;)a&B;F0f*??;NU^`XC zhcgGd^tRNBFj7-HzV)8xpJx|AKUSVRKC(;AnElOl4|=W)+ZQ&~l?MdUU-K;!@P3?b zJV49$_QHD`l#^a_fFUG*BVuBZRB{_UyOdwW4D9T9V(&05(jPEX20D69`7Pwx0B{WqZEyFAwMw;pKsm`s``17 z75#+PZy;qm!v?~Cp4(YEm@G_>y5+^gmRBWn3n04S7&~|I>sIGO`$TNRjCbt72Zciw zhc&|387b+GdcGtUJpxEqdJf(!10i%k)$VQ$aE2v0@)Y`gU3+sg1)(Q-$%gQfw^?xa zuG(jyc^%|*htuFz$>j&nj=sj}qFP_;YM$kld~oo@h!{LENVxS&_m2>)n6fxXBS&#d zcTx;Qta_B?+3Ro5tG1htf_qn}-JdMWYc03tW!e~MwPVc~wC7C@v>V0rm^%(u zJNVsOCe&>9uyx$BPi9BKBuOls7F}JPyid%UybDEqV+PujXu=-+w?mUr^!Z`Y+@OCA zWCzwSm4^hYh<%OWuzzrBdFie2tm+3+W)w_QvA7S^Ywp(O>p6FI!Mu%KSf5V^$XTM~ zZM^Fr(Ad_{-a%?~MDYPlbhtO}pA|3h%hQFVOY4ePCBXb=?Ik&}>;Vovvv_Yqip2x~ z6%9*;Qg|1izpR;Mj47gNE@KUuCk~=Lhy3CebRef@kP8?H7QFwyVMmAJlo{BSlY1@* z414!L{gVyNXsW&5E1J9T`3`}+**f>qzB{0W;FNq*jx%b`L6Q+3)U!{Q!uOUPr5e^! zEWC$sb&b^A6E;2pahLP^30mKAm4oG9caEw4X;a*hOktmjJvhOy2`#opu$W#(B-ZLl zrua|xi!Kwi+p&-H(xNeE$|JoGmlTI|r-Qk89quYI>MXO%j9WS>JAj~;Q(2N!~A%36`UVUhNbk~|3n)mfb+F(sh{1Z z<&d-_Q*nvMA#+vrq{F3|5#X~Az<%!sq|Ad2rJLsz2R<;TTvvaSS`G%0j(uq$oB6b< zHvCLuK2~pnug*cD9~rz7g)4qSc567!#|kiTd2$ZyTxE7XL#(uEm$n}2CV$hSri^JD zP|I%SBU``0V^fK!SXqpHEnCDH9R1Rba}G?)+4}boOJ?R^i5L}{wH&!hdSaVQ=%aAT zz~9q-#ApR#wE1SEpdB*g^4>00Gz`*@?kS$xO8GPUsvj3v^dLK6`Jm$0%jwtIOCG<{ z^jj0-x3?@d&MZU*MQsokPAxJs{DdyZJc#~l$_I7}QVbAnvK zdd$ELd^an_Fx8?i%80F_to)1OUKg#@>>YBFA$>r*j)YG*jXCjrD*Ao)@w~xgZ(kGg z?=hg6+`0E;CO1~@pO&aFu`P*wl4;0#FMV)qh3^TP(#VC4hF@_C?y(BkaV!Lp$HKqA z5wKR@jw_TeptgX+kr{+0X|gx|8bXNrtm>)4kUBFkg4I0_f0Sq=@7=YFXBnZa z77~u<11%8NLN_{(SCx2)$z*Tr$+0t{oj(e@UvdQTtR{Gc(SzOX{Tq*mX3nk3t*X}| zTRLA_pmS^}rGx%55!^rTX z(v#aRA*h;A2`9-Iu8ETMcQ2k=Q-m!s^MO*^2mNe)W);%fP6FqUT}`Cko|nbifV97; z@fzI*(Q#I(Xb%R&g_hv#pdFi)dcHXM9=GxfwExDag&bK6HPm)EsMIeokH_RkxUUfc zZ(6F}@6!ab-$aEum<=XrLvIO???1=D7qY!XD9Hlnv4cO7LyTX_C2|;zjPj0Fn1P&d zRwcb4_7%`!uISgRs8<)Ey=#k{BNV+)A<|>Qk}`Z;EtOilIY43;P1oS}tDP9P6f_mI zjU-7|2nI_%tF#r!U;X>ahvZ!kAH;0ckE3n!LMrFye|}cNoYl1p1q9-)@uC9e)l%`| z6M=&s@?JsfgXr&!hIy2-c_04DV!z=qc)+{u1h@B{);p5adTxGt&Mk5wSuXpWtVtc< zo;k66{u1f zCd>}``-DMvwhgSc`10T+6Q?~NpP1KBeUh|eKE`pOG|+j4;RNM`MY1-l5DP?Sf=K;d zNlt6W_jp-_J-Qo|b>F z0o-f7M%?^lQ#P;IMB5fFA9H75bjQ|Zisx7GQHE&O;QG`b;Bgi}Q;hI&sEs8&kPz+%FGpUx6A2OzrRRtxb#>lfYKt&h=)sI>r1 zeF>n=HIm^UZ3d}eX8`Mo6}yi+LI|{qvE;%JH z5EZX1H(AT$gHUhrKJF~ zuck1?Ls9$_=$)OCynEP|FKg+mX`}V(+02006+W7>Q&Ck5J-pC&1ASDQ4WF`s+_AC< zPUsQ{Mg4#&?U?T79PN8`t8mU0))2pzJvxCcd% zyZ25!y?joa&5egewdAA+r&aCCUPm9bi;WL> zOLqO|?Ov@S`)+&qqsOO{w=}#i&PP)uR=7>sDe|YwrHY1FBp|*4Q>&Bq+QPt-NvVFz zgyp@p6Ze8JFJO_j|C@bT10u$wxb=O3D=^Iz$hc$10@DH;1uwK;QVua&S0Yu7(2&ec zgXa$wUk}C_!8K;mZeZmrHJE@$C>PRg)=v>z?x%-yBv&0O)6Z>+xPa`C`J}x=kKO%F z`2P1jrN11lvq+XCShaGM>OMSI8?};xyv|lLGC~)Z_|Y#+m^rdD{}SXLOqjXwZ7Z>P z-KNBhMHg=!RQZ5eJVu1hI_93Sc(!Zc+x(3^oIa*@vbS=`iYjS@T(vv@?L@bz{JIy? zu046A1)vxfFt=DiMj=pCzxqlt*q10rM!xu}zOBCF8#%LEyo~Ln!n9I3ILj`^Jb4RA zm%AcKJ|2fdlOM6Z34E91Gi3U@M9}LkJE$~#?4WZhlLB?t5~!kQ4IWvd!aTiZ`L%V% zmax5Rb4^rr(>djGRB>3iZt{n?@=1r+ca$VlF?sA1%)2_ZH-O?G{M(hQ)YxM|S^2DF zj`g6Lt_Promb9V+Mmu8r`zlN_jGxC4DO=3AU`7io1S``6)_mk~Kjf%JDUGsWr;MXc zh*~k+I+SpG!K5b~{L`~7Z5;d0nNKpd1-b8Xx&=vT{K5nA2~)~KAG*^jA0mSHZ9gJe zf=(*G7^9;5j!Rw=9#+9wNJ>Yb_RHK0g!@m`1Xhr73CRUc(|QMoKC&v&leZty#si3k zp(`c|V+$cWO~&z8uu=u1#uVqXZ!b~}@C z=s%=d_%QozA@CuuarRmNt({-*>Mh*1K)QU0jJ5)8*%u`w89^$|r1?icQIWrp#zzg%*7&yk zg>%N_H7+7h^|sU{RJ0$l#p6%QUr-oh-~d&h|7pu%uw$oS(`up3!kPt<@{MGKMZd_F zeTp)KGmKox{o%6H!jwD*e5Gd^#bNeLB5Hzv*$dy%br%|gUOY%K4UA)jO&yV!|_wg!| zRX6mSK3lE5h)$yX$_uRBoR(<*cg5f5W9`1LsJK(#i0F>(k z8)et$KhiE7)$CBvAAR*gz%S*in74CcP8xSKfu{M;I*k!vXUT*a6I;%nmj1 z8kS23ozTD5z}mJQJr>2aq!+Wi z2GaPfn%G`K-Wv)jjmh)}>>ba_$R-T6um@}}u^<`-IJL@FR1y!HXh+@M4298lz|n`>Z}7&5Jd* z6?P9biDlaW$IbGmU9qJY0pi7Q*)k>Rt7h(+2s=hGT?m0e=eWV)r| z1%d`*K9x%_jZ^L2hLpykb^@np7?d|1t2Z}=XsjA@REdX+B@2y>a47cr8OnG?v?lkA z;SRQSydtg--n0RFvtkCSo<1Bo_{B9!Hl?Lp7anE;^f%zYSEFxh>8{sr&THW8<)DJd zjUn2CljJ-TNv*&JO5jsa6{{c+eXt&d{4ri+*v#9d%1oyI5JUK#=g3sMsjVwm)uTYU zp^!Mba2BUIPPQhW-al&8J0_VhU^O&u6y=aXBo71;xSAqAK8j?G6dhwIqV4wcM&xtZ zN&oltb@hK;2HpiskgfftVykg^Cl|EAq}$zgR`F^2jxJ>4ixdSnCq;+x6kW~J5^@r5 zK$5oO=UvX3z&{KKbDl2wOD`zh19A_pvy`3~va&+zU>s@#dFPxc1!3nHXZ_C+@{!5u zd-$yw!q~TqBQDD$OQTI3lZ8%?s*GgX`43l2&uUy|Y)1ye8qDni8EK3I-f{`Mr zz_mRd@%D);jMbl^-%J}fGdAn4|4V}I-dG`w85=_Qsu|5Svyd0ve|Dyh^#0bfYnl=r zTIHL&a-Thw`r<)X^T+9PwI5p^0u!#)_p4Ayv+x<1*J}>OBc|0{ z-aj!CXBsvX*fR!NSt8>iu(JzP(Um{FY4R>+RjXGO%U7)5=di`WaOQaFqy=L$XDX&a9jwh%|GtA5l;3wE7@tpM7V55 z6cBo_u>Rao$X-oUz$|FdH&ISa)P&%2VdI0;k4Yd!EU^xY+TklL$>;}J77%KVwCJN&9tPdM;O_pBO^CyX8_?a9rJ0ZIj)Of=>H{1GZz4fhQgqci7LqU=& z-nKT}yb=fA(=OL8%=^a0`A_@;{E*W)m|$-CAdf{4 zDs?w+di+^Aa9S9XA%|jIcl$`*&2X^+6w~mV0FmiP*q_g8)>!(7@vtyf_CYURz@?ZO zr1Ek~+L;GLjf?8(PZ5_g8dEU)L%2QhdYZxd;D$6SlZz^MXr2;Ma@r{hsL4b&CA9vx=JzMHk)etPv^J!;QC|${m5;VdwMp zDMPx#y?oFT<1Y9YFDlWKYTO+sm}$FkSSE2ROh*TpY!5`c$t$IS8$_9ON&ffMs3{vF zE-SdRPx|x;Pr6C98;xm^8G|j}?R>fKh+wlW*?;j=EMikSQK!D2;bdSXL6D;K8j$~t zsA8P|-MIYtPIlS`n!B}StDDWvI$raks zJD!Bz+H!pK=iT?Z`d?X+Rx*A?Npk1UibnD&h(WESd$22SfSYyj7Y8$m5R|)_rhbKcKh{5vd$>(L!<6JlqAmld3&j; zEudG3l+gkU;ROsgI_kn!Z{+~oHty zu`zsk;gHsY(HD~j_BCN5vxf=r?;lIASBz^J+mNCZ!ASdQ!)mApG*^~30ZZUXo{#?3HvWOtxz3es|;%^>b(4nMV`dlxwrd)_ z;EkB)2EchU;LxH7?g?o20$OgrrTYrbE# zRfATgMYrszS=OGa?DcI47&)KnHihvSWx`sG2;@`K_15dCJRIi6;acn=RT^0B7rZ~m zz`UBP4io0>1ZYo)b>+^Ow$uESd}6H$@S}0>>d`q}bK(g=NA_*D*8!kHEYreq#OqVP zlDU5J#iKg3@(9h5XeZ4KTp42b;9X53%c~vJU?|%y7+l3ezS3*|>~M_~Twd95ej{3i zRAHEogFh7`gElMjMIfUbjvKbKXFxuX< z@|2GeH5)Hr1d{6JD!i9m6>E*ki9 zpka<{w{>4N`*0LF>vbK;M{0if0Pfq555@$<0p*qFjCR)neKw|9SJ+XZfHE^85X}^f zxK`UKni&UgEDR<-h*SbEDkCL5BL{;@A8NbkO|Uj19Amb+|MgVv;S_L~kiVrH#~!Rc z->tXK0#l~Uw^Zfc53GYs#ZxOj%E{MwR#7{u$iTdlQ}U=Y zcMYwU26{M8dgUO+(De8ga94tfSBF=cR|R!~Nmf|R&XcljKB}jwR*>Gyv<1#9j^tzR zH1fM>n1ui`De>1-Bgn0KlP1nns)8E$x8|7h8h@u3IV7_(9d-VYRJ`@0wf{BeZteto z$5ZI;taqp8UiJV?h`v~2ZT8UJgiJW}vhn9u_C1`*Ar-Bh4_`;Gw&jgsmrwEEh`T+1 zA=MSW5v}CZws$R31$8jR`4GlpJTU(Z)av{|fz*jvcf?^!y zb_4wt5Y^XKkW$NJa~zHidQytH8}N=tG!-*eijd^rG5UbaT08E!@Ngc~kuzyr@h%-# zUy8U+(_R!%XkR=GUE!cKEy4<(ZX^wdqxjd;abz+?WHb+5q*(vKpxb6mbgVdPfG(fo9_xufA z^R5t*>7s850t$u+g5hjf?nf^PWYrQsNOA|5k*V2v5~Z;9gc}V#nitDH73CIPM_W#Z`)-+w#R zCyPb!7T(8hrwj=8%&Y~%nT1gu*(JN)eq5DhdcZEhAemB^>;(V@owOV0WM7kz0r<<; zvfg?O@`F$`9wll`ReucAXgHvYdmNdU`81(_t`(?c(fLw?_%3uvMJM%z^C1#UYel4S zigU3lWD+IeR&R*}pCw3T(YC}8%&+yTX__@cA9Oo8ni9vhC(6aW^c%(ZL(YQ!JQG0n zp8WQha-$#2iFDOY;~{5_NW`Hk?!b?Z2Xs1{-zSbvuRgDijABMf;mFd>d$LfJ8%>r} z;@Mt0Fn~pp@Nn(!m=lXx8A?1_5!5@Zx{(mF@firVvs6q4)G75NSoj0qBB0+!Xo63q z$WD5fQ^1Uxq=PN5$Cq_>p!yc4p!?Y+^{y5z7sKr89ZDab3S)}qm{Xx@P@Y{puz1m zY!?%G-v(A9aq31RpdL-;v$|1fE?p38(xq2rj1VLF_M!{+0afVjXHk?Fm-q6%CRGXD zRWQc3BB@yKOrlJ_k;J9n=d=tHp^KvjW1YfEB*iBjXY1r|aWaYB5Zt!ZdwTE|e%*!6X@}w`Inb z8p1U$1fFFy3fSH-3hJjti>j5jI{&@MyCuztsHZwtsm6lBadiPAk%bptBzJ7ew>L~8oNOJc0x6~Rl;qx!?;GudC6g#a7}7KU9sSp6D3 z6$#I8y{#>upC!Uh>lY@<9$)xDgZrAfyOLY~Ux%aEV+KNCb;lZL}|&-8H}r)uxN^(FOLyjeL=&w;J^+ zj%2zAtNT@}c)6MEUbQT^C+hN>@S!-MbQz%O5lG}|-eD-PM|gi^2$7iH@=didrZ3G+4fvk&tyB1KSMu9#`on; zu%M6}wkd)gjb9e*`<{x+>IP~$jjiK4%<6or$UMz?o3B{v@C^C}s@WrW$8W8gblA!fLPBs-%5qm>srALQ&aUVU|JLi-E}72z-|o$GC#^AA#EcXefkMcMM*(u8SrE3K9%-(-JWOM&p*xqyq(7H;>Gzk~2(SQ2i=yDkTOn}- z^6EmKMv!T9Ox(htvA?O&{yzOF-`$1WlJL-;dWV5yZP&S;H#-<#X;c&izwH_P5~!n( zBrl92ZwC@V@k!}`-X(zkTn$a`AWz`Oe@q%JR$ky!E>n?r#8G=ibu_;u`!IWuAY4)!`U^2jLLe)S z5*d|#un;i8&j@<$-)=ao$9W~!%oNU^NqMOmRVVlErm$6^*FzcTPvxO%UrzQHZ%^X# z2kNjc{U_*wPJnq2gYsV?T|50BG5u2}jJPBSGCl^9l@EF^XWg(pcNh5*lFtCaO!8Qp zy9Wy+-i81%P$oVZD>0DZzmS>^yV15^&K)ikhwqp`R>xq?&Ng(oHt>_5qBR}GBm%P3 z$0cR}itH#dc^yzaWnhNvAe9z!qScfih3mF-^H;(hY6|Jd^8N&~KE_FP9gWthf|)tvFn z@SPqKUw4z}{!L)JjsJnz5W`0&A7>Xu*b!}88bB2wAv$AGv#IG;fn zu{`@3H!$e;RUr-{;2`DjP^e4*{4DaURTBm67Jg0FLAUms`{QC3B=ICtfJIk*1W@x1 zR|X2v)Zl%1EH#z2sTN?*Km6(w)1McuNb(Frx9$b!uLU=d zkrR~wv$3!u?^{mn2Nc?Wn9;T{+c*+wp3dO>Fr#C-m`8orxtuwHhd~l~YL?RnGFd~0 zIdauZGwt|<_OFr(9Pt{pUsD^m^W0*{e7$0M4nwOB%@`~h3(i#y+?~ajKU)mXo2GG} zsi<5_Fo}j5?Z=ck2?O5?IZQVVZ}&N;1J?vZ@~?TJ>Xyoc!L_?mX>^FpMUsME*&*S`ER%ihmAWo0EN}=9E$+&G( zP)G5p8M%D#<+bd!JWb*F%>YTtE)3Y%Bt7}bMQ$AFn1^nf2*K~T`l|39w8fW)XWk-Tnw=d^kX{!2 z-|-*OsSlpmt}7R!#Kj?{>j{!9sDKK(m2;Ui;G-5K4#v95&TOIwT?XW3Y|C!;9H3bk zNJG-gwjH+!{CC4qcM4HW!YD(Szy6NZ5&H8H(0|+!8%?}Wj^KF8WXiQCL2*pIX_piBxJFD_&v#ZAD#vKEA#ud<;FMMUrbZ|yqnJQgrHMLWsHj!-@M)xs7I z@cFaSq_%X-CC~wJ?v$D^&}Pexr||qf#uqdJdr8Ao}twEQ{0Kf@-) z29_9qq`#~6(bOJ56!6rc3@mpqBsYQ|1h{F~_z}B`8e&57h`xO_`+PwQky?V2z}+dh z29W(p<&;X76Ow3h=861t_w6%Wp;kifm%f)1KdTszAr04lC;w`FWVHe^O9eDpg7cg2 zI&d5aCv4XF-a!{D@C#i>xCrL+`{uv&%cgM?<;v(4QY%z8;R8xH0Rcf&kd0NOC7;No zPS%kSvp@%8p~^(9V@v>0&yfdTKz#WGZp?b9%TL&g8iuvHqF)FjttN7|ro`PAoU^V< zQo9!JDg8zvy_j2;pKngyc8I!XG1i`UeTK;0^V1N(C&A4B|1JC=JK^t~wQp(*#@_cNp(!&&G_}$T#8%|d&n}{9 zk7k6m_R8G&IE9MuEw{T29%m)mzQvin%!2zr{4r)faTFu2_cD{7_+aU#G?P@#j(i~{ zRYZuv4t}b3<1+a%@X1L-9Tc~CbqyfWU%SYs9ybQ!QXTN`S;R#wk<5MkpyK#5@x6rK zNYahcl{E8yxovQdsOKnsaxuNqxV)?C8cP`p0E8Qna07=?;cKq(In9 zg`c+}Mnc=x!KSX^mX}cs{fuUGdxvK?d)ItImzDDNkW5Y|Ed|7j>c>wnAAmJ-<=6vTzPvSq+S8X=a7Ul4aMSDmIq&?qW%_kdU{yI z#NGJKMlr6jfd1`m>JWjeR}9{Fk&AsKbY71wckD-!UAfz}m@eMeBL8c%k5PHf2g1}~ zITSPTtLsSNib=`+Ha6zVX5UVyqv`Y8hd!;m2Hfri1b4`gGdSNu<67hk?Fg;-cqa8y z->y{wuqMi6TvgXa6$*>YzQ(%I4LFLF_-*Lj&7|)-SQyKLJ!jORhn|D$O7e1+_;^od z3y5dl8c$8so2B_LvD*B!PK#yIwN-W2N#NSEHzPAWeLNLttd`;3rF{=} z5ivN4;9p!U`6xmyYJg4{Rc9P2uKwIP9?C(JtKjbXi)>jZ&ihbLBlX3-B|%Ef8+nv- zcLhi=0aGsbIZ_E&!7c~V@@3~R~1>6dAD5pw1-WQ{|$8*`Q~qaaa00tqhsDFd#G#` z%DzrI|FVKkFg2%?7Dk<(85mOQt~W}4w+xt6#eP`XUoDxJ8oaqe0qSGLQA|eGMM#@_ zU$xYhWA1=rsf!W+R3AKx1YMX=C;h=|+PkJKTzpxp*YAMGxAoQ9QRh+$*z}^GYu@{d zkQLvgH21m2Rf+x^kL77rpyN|8iWH&RDgV;EDbo`Z>p72PJ^$~<7ZT01@E5v%{xE3q zD8&!Xj*g-O>O=2tA`SrC?93I@6nATf|~c&fRKbkvUc?ZCIJ zzH2o#H@`p6 zfIO46I*HpZ@X$H(^$lL74;c=ed~P)3&EqT=>Z}X!D4(}FK8U`|Y=r&ewFgS;Ccs1&{^bCitRPUuv`PRea+@Sr+}|$_$@cLTYQP z!ZTGN-!cWcr5_>5#}ZZ0Y*=8N?BnCn=$MXsMyrRghdskOv``v*JynG8)!?aK4s=$)?Oq%z4pHsT87uaXqoSme4NEN6n^*KOu(naj0hgiZZ+a@SUl_n^-NTN+DwV`9q1=veK}G` z!#sP0PZ*n&8s|bDl?YizGm3;~YA$vPHP~pddSZ~UFIsze@nK^=d5xYuv`b2Jn8j9I zekiZz?-G`9hUgdO=P#`wx(QlMd;aRr&(Z3vPP3*pE~DEMoj=ZW(_wOlMI>bmKC$%7@t0 z%W8~%I?*+CEOBvX7jo}89tdVR6O>>LS+JAwn$=&&8`ii4DkSkX-VQ(1UhorS+4D{` zkM55J9F>vW*&v{7N5AYRu{D2cClJ_zOrxST}vyrf74G$G_iEcdPtZmk#c`HI=D z9qk-}fQbf*4%~zp>HJ+84HFqD%b^My*9aPXN*=ejgp2^1l@3r23wW}p;dG;XGgvx* zY*iY>ER#3-3gNRXE|Bbq}J$sZH+Xd>iJC2#7I;+F-sbfadYg+(N5C9IDgd^G9Ek+~F5(s^l7q zxWU10JD5X8)$G}&DK9dI0u7kq7El>-B6=qw01NOR=Jy@GF^KR_!d|QNkNX031=d6!kfTok`Sv$06hryZHEBSu0wYQ! zkmX;ILhSW{_2`vM9Vb4gjC66c6)h4mPtG3k`EgO>0QWRhEW~}gYVFBzD;|ZI-{6T= zF3)&jzx(w;45E3Y>ZiZ6uay#n`6&uG7H?%5!<(gZs+A{X6-X$0z5jjhqcq~yvRD}7 zq(vmSRm&B0m@-80%~sAIkWtU6sA#lG7U+dGf`l8}-!Z0y5gJzcekowjqg|`B_PP6j z5mp43xYDuIGL7G`mmwvtEeq}uL8QZ);zdeY5nrmuOYPCMN+W`nB`49R351nb%Nm?D zKg8VOIi{Wa7k0V$O( zL(e(UF2hdAaPR7u6v9hd)QrVrqp>;&-yCa9$*;!D*r+9S8k-Xg+5Z5ZmHehusvgnKuHB& zlCq$RQI?{H&^H~As1-hBVHaPR7$(qeHsk# z#>tK@SNs;e{LDJ`CESjncd?fHE7P+VgSWL#sYf1$Q5dA!uO)b;ItD8DOil5(nb`@|vyR*P2BwRUoa@##2x?zDZpl>FjpATHLwEc>1dbU0yC;a-+1hr1u?=7%*>VJ?O ziq}XMFL|dEI2U&N;r_;@I&sN1;=vv5hvQk)3^M~Zi^zqk-k))v5jZ!H9cLNG^#Uz$ zXyFJdl7<;Rz6musI^V&OM;4}tN8$2DVGR8&?Oxt6(q1a>_jt>KVH~vi2?J)=Ad9<4 z9)u`9G{damxe$-3+M;n325jl4=drJh{1x(i_G|o}kk?T(Y1$^&*wtKgOg+yE`t$8I zwh_{}*p&v;O7;%)|LF{n>xI9?&==SmOox~}ydbmbDx_(*aVwG&PrgZ@{nHE;5xt#w zV$ijKG7^dkZRmRZ9wQclJS2b=i9rO~A8u095;WB)LJ(~^;4iMwjl9$RAozUX=3P7jck$@@!w}-14_m^bOTlXALR;s1e7{h-;^p1V znPt(eG6C|I*bm~gRf~&Bp8(S?zy>yzk)>z_IE?T#8FLasdIp8;VyH(IU<@LqbKPhK z##RGfDN7nDqV}j}NNq}8g>!KwllJqVN4WX?i)}-7e}Q1VHVclQ2>Yp#BYer@A-aOe zC66Tp>+u3u8KrjKP(`SrDo4Tg?xKJKkm=`bQfV|nxu{m|$^ zEQ5N4Xs7CzvFxhLu~5YO@K^6%yAMxv%C%G&raf7n97-|wok9g)&r9i^)$rqt`^+7b z237BqhgIf4;#0d;?+J`1_tj^4@e+OPpBsMng2qE+I7}H(;#2|pU(8BO1OB;?YD1h@ zlSlM!Wlog6t75Sbhs8%{9tjxGUmYGP_RsKB9`y?jHmo&<*;852#>~Q?Hsqulb9hJo zHz5AI*!Fwe-e>iY&lUf>5pCg^O8`j4yL-MlR>TLj#NzGSazp;}1@8kJ$W&03ImJgL zmSg31)4^FPlq6=zxCJWOz$A5cn{Yii_WLJ`Gq@SY9Qc(3sV{&Vero5=-#>(AkGU`# z5)Szvy?5hKAbGc=`-%3 zq4d{=k@^7aYkU`<)oMAB&|0OKFwRF^zEWVKx%UnT1eM*W?hWo=F(KP0tmWU%%!52# z16{>sN8nzI$k%xMt^%iaFyVoYDeuMIzbkLOi!tH(5lJ^pev|m+1U$75Jvm>*W&t-1rwH6>Oto%e^%Jaza?j6bjFQljIHG+q~h* zi__m6XKO-TcHqEU5drVngw^#slsgYMN|gWlsb+nSx+?HYc3@^0^ehM+#PBo&;MkiL(&=kI&@qiE=a; zIZ86u2SRQ5bDgD^e1Y+pFK(*17h`^A35%R7y?^iqD;V+lqp&Y-D!;>DRi2O0W!sbe z_cpF;B|bNDc$>?NgxrF<1nojk_vs$VEh!@vzqRc+jDjNgzuaC4))u4aW*t9W7k?Hg z2elEfAlZTzDq}9PP#gjmFd~Q#BlN{)QeW?Zkpdcyp?g`5nZ@)&t{^R;r)*znzK3b5 z6gd|@^_QY`Er5XglHI?h5>_rSJTY`7Z3M>}E8Ly!7X9j2Uf+Z=K-BNs%qA+xdLh8j zSQn-7d*bxW1HV}h#N}DrUC?s_^t`=Tm+aevU&sC?gX7F%Z=SMgp7WI#c1`F$W?O}={W=_@8-A{t&yE^-p@>j>EDDGob zGe+eL(eGb^;!;w;!A2c7^-TEjKH?}|@IFUasY^6w22yz2Z?E?5M!{7DcTL5iLw6Sk z+B3E&wtQ+&X>@Cqk<~sBZ5=$j^!QiNH`q*28}o|7;P*LwF~!>3G8V~hLr;T97GeS) zB!Mg&X=()k@oTNuO0wr^?SM4FiHFQcEP6h@7BT#|SWzC} za3!^X0Altl{J7e(x}9h6ATgCG1pQYp9ffYTNW0YPq|vxn_OgHMjr&tnB%%iz9Lm9& z9kPfplMb$Fts*9n<*c=-bzWlOnK_r}QjD%DO6Ya{pNCG@B|?4`vRaZoDY3lSti7iz z>i&o{9reLR)0`DOi@!pOa&@+yc$YDWKxFrh)T>r>chXCz0u!d#c*B*x>X7r`?$vg z#ays%{?5FJ5t&w1NUGj-5e6gt^cGc|WFGj@Ab6oD9%kzoS3~3$j5?0+Tl5fVwbihfmn_9Y`KV zD!@wlO?hqXaRXm`!z zM^XZFdKn5S>~4#Qn)hz$l;89Hr=-9i7)-KyJ!IQSh^&X}-abto@0eA?dz`N9Mm?0F zc{JwogKejTzeLVDa5T)uf9p+J9%Q^@d#hr#(*OCDZnSygngy9?2x=U@st}+2SuO@E zW{`#yZ7<|D)$5M2jG?TfEwY#3@{55A_O;d&RMD+5U}ameYgKZqv}VB9*^0m`Q{gR; zaP}_-bG;_$&Os-Lgw=yd+v>dUjLSkvDSP%2fy?9K1U&vP6(TBN&ul{;x*TmvfMGHy zM&{p#77kbUeMy^+;;Tu-uBBOv#ZcQ%uMokAe+nTR!!5QI9gkcbnttX~qh$#zu zG-0+}V?a5Gh$A<5rd9-}@{jHK?Ph8@8#w1)UG1cp2kz8*$w&kVtLzU7-Fu1j!>@oq z1n@u-U`@D4s(88Lc0d2+R(KrxWr~X5eOw;NjB1L>3`BC)Y$-zv2NdpEISNzKPmNx6 z$RmmN$^qp*?EXWHo3~gvk?|-kjw7TVzx;Cv^ao46eZj@jKIWtH=~E_WuZgLC;{-BF zUa@W8CD4WQbe8M&qcWg^rfC6K=nEkoCa|n&{p6P@H?we2V24 zZBQ<%59H?e{gdS5@t%d7aA7R_pZauU>1Mu$9z%l!jrdb3FK4EZ#7R>1ksW9nviH5HH0_l`6R*)!o_0B!056xB;csYg^Ube78dtZv=?Gx{=`U~BG|szXcz^{^wp1U=nI!lWuAx{G=7Y72 zMX(7gs09Ve_fSx78#?Y90!y)*H0JZ-Z~UC6lU)Lnt^dk;b|d09r4^lBM*oH2{8rk8 zW8g(D3<7+=MmVCk)cOu~t(o>CWOKe1@zx(P+%81qE zDp`@cbKw?zCwY3~&O+zWmF(ke+Ew@3`{!L=JVN;U`~%o=%zeeF;YUQTiBBK>=bfzt zU-SOAHPfh-v0^^wBvuHp{1%1Gga!WD9+_v|Ll0$EgxM@n%fALkpCLN!W}vFOSAH+e zG@teeU%9tc+C^rjCagGX0@oVNd8gF$+JHE)7w|mRgyljyA8?;D-7M z(r69rje*L%YsCMIzXS&plvu6|=JEYzBLT8TC(&tY$BOZz86dEVhi*xL1*43q5PZNX zKKqofM%|>~i_e2$xQ;dxwfu@fSc*<-f7sU}Vsg%C^RZbDtYhn*QT&8?)W)%8Vo{va zRYAkyR#CFiuYNb$;0bci5r5aD&Kj;5OlZU%@kfQdbf=_`gdg4~CJtXqm5!2@dOtE3 zXNox%d9C(eBrrhGC^6fym%uH$lxX@EkGzMg5dw_R#}TpWcFoQLaMJc(IV=*~@RA3c z7Gpl$(5u%0SAz1T_5!vm&0#|I)fTUHNYU=1*Y0K|Ctj;uxtUJ=@pGO?#tjtQ-+1~{ z^t<}}zsp)iRFQ5k1do3JX9^~;N9+~mYo-fr9D>P_w3{*#D-KZDgm$x^pvQl6RvVS(!U_HNVv#F;P%XIRMZ<&)X3GLpD3V6pRF z&w4gActTUCw#*>dks|oKoj0MCBV8}4{SA_d`L@_MinL6cQ z*^9Xuj8uhY?=*zCo7in%IgnCi`+dLtw7As{)l6htk|kU}`)so*oE~s(kobrj1~;O( zc4{m*77sxLR^T`7>HX40XnHx1C6@)1Ti1lVn3PsKSXjRKhj(zgK@a&q;i7R2Sy0@2 z+LUro9^lA%#`PG6>Aw17oVuc5tP`H(IMKKXB{A64@)ecNj5nK=N6P<=K|!vmek|CK z!3^RECx~ER#~P#?RA#l|A^$A5iPW^t#C+d}a--S{?KLYoDt~SZAb96ev8?$un&u}q zCl#(-F`6{WdC&cv^|};&oDDFdEZ8g!D+y6z&l36ZR9xAvo$^P-ER@TAH!tLo* zOC|ewojE#Mt0W;v9bI9Dvv@;n3ScBAn_2}@aML!MXyW2D^@e?l3M4%?h8=3PLa>MR zpe_1&Q+f5P@6M!`5 zlpG(3e1+a;dw@_@#%}$Ei6MmCN{ZyWISd z;g;Q@L_&vFtW40KtGF$l4!i*cF{V^tc#ZJVThXu>&& z`+V_BCdf1;1XOI`jxJ+CXLD!cX@bw^=ZNta?ZE2vA|d!4MWHaJ74`rY2+3;>133Wy z-XlAKA)Q@`zmj$jkX9*h4Ex}padeN_;<1Pz;w4O+gM1&IwI$G*`>Ai|yb>`M{aqtr zw>df_ED|BFkI~Wb2dEW5)zX*Plb+X&Nv(KYWIoQi(~787?g(+)T7mzr`M4f4QaM#W z5u@^K+NmOo+qiOZPx64kRR{}h;D#dh_ZvqAXg0esDFehNALdT!z#@<0t^`xAjH$u6 z4*qdKj^xqJXfeTrOj%Xy_VM$%zu81%Sl$U#K}u7v8yS%6{94t;)3-@XD!q+pPDLj? zw~PYRC0(DK?+ZH_T#C_9k5wr!3A@DOe#pCaqu&2_leTPSkp`4V5v+DgZIEd;eSY30 z{c3pWXVe||wwBOJzQtmnLaGNiP2+%X;z?;l^h}L#yWJw~$4(uD5DCTS^V$yFNSyAd zw>FBHsU&xsEs=+cXe76r+!x^Dal{wO?|iT_P&*V)K%zOy$?^qqdF`?aACYv^kp`Ewc0xO}Ny#JJeoGm>Vb`TD&|ly+vcN`_(1KZ*I8T;sj%RDVI*J>(e> z35!sKOwt#mPg}t64pZ8=#a0sa2F$9S{S*fYq3>vr!AGp2wJWB-St0V5-PAdJzm4P5 z+&D%34D9gAw+oRHo%WQBL8Ylo=E}iB@20s{Ep=9)w)*C=v(lgBDB=qP+8fAUq=&TM z;h~V31srPfJC;37YNd@X+nCIV-od=iLEu^i-o9VYx{ubsVu4r-T4Y1&Jg7i$^jY)c zX{RES`{k8h3)l03jgVWyX@Swcx|Yr2iGjY(fVYCd`JGmXzC;ZxYqm zW2|Fj9zoqqy11!c_AnDMClIoy8)RQna*BVYdFr0ogf&55<0+>)2G*W420r?MCoX%#3EQLY-lIVX>!QNCLH$R^JZDbi#=Q8s?lcFe? z3MZqHZR~8io&e>OZX>|SiP|m3=LiSK#V=p{z{2kTp0dlXQQV%9B2lF4|BW;D0sBQN z(N&Z}{iVO(Z^${m@O}kjPCj}>^vyUGaxb$H`}kynvxQrA-Ix-JP)`>WnnrgLwZn80aE z4kC_$b7{}Ngzh6M;=u+?zb$G_h4ZbShzYai8C4RU+)@wyGc0PM_N+G;%GedpB8xLX zwS$=JUB9-boabb}#{+Bj)~kjPv-PKY#qS|2jX(#dxz-0L}O(VW~I%`*| zRxWToi&pCZt7_Pmu)QYX3zW!5AzWVm`y6svxSDJ|{+xtm3{Ahv{V30E9dIu(<;aex z8k_v)f&8grJrQQzS}&(HS=t6}v;*-VH3H%?&Ay8+$6?Wb1@-81OQUfTL_Qa2B%5Z6 ze!PT_FMYlLs71)?{BwROYEGPm5P}Lno z=HdXOkx`iQGFVj!G3kX~hM?V{ZZMoxPC z$9&F@dNS1>_@t(AGA1XIkiHix#7gB$+iq_TiWQA1QN1jDS&$#|1|ATN>0h^!Z z+(~d6URYKNTWGiu!4*^itv3Rc=S1)IKdnO*#LDq zvG6wp+!W*zp!I$l1gJ9V$j78xO`dk9c@n{Wd5eqf0fOWCKH++UNFlo)V+|cK-3@sg zp&S6BQ3+RnJ)hvRkYZ4v&v8{$+VMrM{u9(Besh~>y|)&K0hA!$&_C{%98GXbL>b#S zO_!qcROFhtFcZpkRN{3M_D#juw(z~*Ni$sjkeEc&9tlcsSroE1n-0gBMtFL06Ya!30Sat^eg zv2ID#MA{!+;Ran5@clMUnfmht>&4ux+2-d3iPpqob)T%6LQ)qkL!YLkd;UwvghrVY z0E~_P?cO}pfPoBAJk0%%3Q=T|GfpT*GY&#HqKGV6E|@(BK_Mp(V1O5i23}$TIO@=7 zQI-e&7c2ct3Uhj3$vT&~lKEZFX6(R^*iso?)XNf8lER3(P1Jo$D{6D})XSecPq#i! zY^6DQI?HsidOOQ0`|_8CdH<0X`Y!>qOE)7zlH#^ALed{%f6;<9Umy0V;ft+j*O2j9 zT<>KDW{a5MhMOIFR0>B}UT*rks)Vo;`HTflt$f?B#6Pfu$eb9~DFw*~a>&iDQ>FyBay7?+;I%l{=_ zf*KIa_7N22NFaiD@>EYt@?;lucd(B7BDsX8iAHl*ijvf~7HF!J?*Lcc|+_pz@ zThn7r=l^x>9WBJ+%FW1FVLZ@Fw%*X5#v>NXk+BJ$%y=3k)Y09rSMx(f*E>^+j3q+* zu!ZNU-gq%y$4cDh*!}U<7fgQ8V-HTMMDO@52BT+gOoj~Y=s%l^9_P5M~!u&sEq zY}Hc!GatL=2F6J^C#5zipJ(P)6iV$o8TH5$t*9$4)M2W?_M?6dTgC*`Hp!$DHQNjE z!g-HCg6p$dDYm^shVyT4|F##OgimH+-&*=QOLw7#E$bqxx+wJ}t9P4o6 zcZ&T5K;~&XDA?X6Xxp18m_aVfhiAIb@#K5ELtvd68kwzuJvA=CLJZ0IRH}f1X2-); zn2w_jP1Uiu)1W}OwV7A`kkWrmKYY;`x$PEH4srUje|siXL#ZxiUz6F$+cho@R-%LM z&eB$&-+Io(aDZ3nA1LS`YT4z$3^zpkdgH$wr$k2ga=+tqtpyI>$r3OQa5WfQS=gL%6^awcT;5I9#BDqicXua<&m95mCbn zT||F`6y2Q=PF^$7Z9dw+%dy@P6{fQxPmJ!nPzrBxO#hb!3canEDjf#6tjP|2ncIWW zAH28(so{2~%b`*MzlAZislR5P+pqmJF7_jNkG3fJYJTWx`Hp@PcVAJeC39q4TvG*3 zs){NDKTPIQGEq{o@Ua`g%)Q;Ng6!GNyf0zKH*zJ%V?LsF z=6#*Hl6Tx)gel=9m6CS~1J3^eTcOb~Wg=AdQJ59aCazl+h*&=B0TDSw=M%S<6Ei+M zddhixl+SypL0MA;V$4Wh#$eUA$dKM^(x>Nry-gF*1lru4Z=hM6p)U+XPt57`5oHP? z>p3Uf-YVGeU%Wz5sg4SjRv+nK26ff`;j&yHyu5Uhw7q&P{Ly+wRQLhv(x~k1sOSGn zk%itX13DT=0?d7|`Pce&Q0gk9!Try-&w-vW%-~jzneXjiPhkRID)?tuQg%2SbIonm zn5n812qDI?U)93N%|S`p-)g%04RpttT!Sb>K8#E`Nkrb!g|QD6jiKv<0)90_VVu!r z0Xlu2Wn%Gs@9ONZF<E+Ofwi|qoc%9NPIq952bzljELNb^uIZopxgT`Q@SHTg$7=k(i0^z#|Q^%TzXHuq+!4W8DOX-NkT#zn}Up0 zz(~Y`RXuyO+ecNHgGuxDNX|~QPj)cNnn%0JU0eq>FzArRgha65}xgn%KZOq`%AnE@Pr6+$YOnM;Nz9d)=!TCr-~NgmgjW0Waoa$ z$mw!wGEFG`YV#4JJQ6Ee*2ff{+|dh5Eetq%O;wEb6ST#-kAWx7X}mLxDw+ za;r|=_13J5mi)oGD_86@va0r)I&I&jB%lM5)9(ycJMe`_4g$cB` zx%>yz{t{|Y0frO7PsZ;y-;D1IB7|O`c<{b`1zt`98vp*UxlecX9>Aj#Z6+2v%s;o4$~y+w2WBd;f~gky z=tMoES1>~M=YoX8a--?64c{NnriuyAfa#@2x%GDsBqA>M|1!S<10>9zmHU=UR2jJn z()b#lfy4n(1Q@pPPY>baXA98qjI)RICHO0JJ}S(>v-z39sp>q`h(ug&s6akWbjU=e5r24m1su_eI@Qn9Ei95g5zokA|ww3^= zhu(nj`q_~sm^Q2s_}=atzHyXyR{CEn=bpKg-Lf#_*4FY2+>FqCe6g0**7TV?^w&ff zL&^?%?T*wB=}jV+vHq`g*o;tpMOeh{2h?oqPU?iD{5V-OxJU0nb+onWEh+j?6&5WI z_Az;)qOOfL#PFI*Rq_2*g$NF>lr^-pwxc`Kj1kO5FRnlq&;?PK2g=J31RA(@46KIL zsco3y;8c@w>r4NdlV=w_;E2Dk6CXY^r6_>1kcJWT#$~3QLOX9bu}K%X=?Gy|S9mH9 z*F^HZ+@a)CFMy|WI_JmR58==`;%}A+NmZ};&ZCf&ujzP%d|GrQv&A{9951>4@;3L6 z+TEkpHPvhXosG{~w{4ijtk?D+7>RrTF8&pIu0#N_GBTVUbMZO@yiq5J+oP<{C&$?B zjQ3P#{^e2?xFMG?3mj&xHf3U4i_F0tWmLO{^m6T`P}5k|6{9uA;-?bQ8=-cSLpCF6 zm=YxsGVz54cI}NIJQIeemK1?j>>_2=LCUrb5T8!vJ=aK9q6<1MnDd?4NmtArCV}1k zBH4Ev`>!oiU=Rzd1Wo)lYNZ_o|9WK({En!M(=8IIwL9a%pHhOLjx#9W}&ONtxN2h8PUo8=8Q25wYk%j~|6crTG8>rHan$7q&rfFrP% znldC+`-jv0&(}ba<%Oz_-L|`1E;g;qmx5smS^gaeCe-Vh|NBN;JVfne%n;eEe^uT6 zK52zImx}F`4(1ZPV1|V>*p1TmP&5wv^iU5iuC~4@(zOWU-&%X*+u&Jy`VHQ7+I| z=n2y#qI+C>A;9H)Q3-+a(ureXU5yoj(IZMNuMEWhp^_Ji?3i2?;C#EN$^JOD;qvWR zEAv%LDEGvN4t~BGDzXCU&?JlZK25?l-q9r9Evi{wDp4+crm(cmoB;fJCB?BnPF-&J zx#JJ!Ygkokrmn4~zc`TJbJy;mt?`38Yj|ASbRd4cMgD=%7mCcF{RTvV;nx7Wi`6k(;K(ee4GZMDDKlu&}YUG~c{0e&Cuj{$@N5;a6rBVYp2U zDlIcARM7(z5Y1+qu7#PW+JL+Yx`K2m2N?|56J>;CQ+N8n00j)-XC7d+%Y_X^F0(|k zK-w`KxMcu{l@3tIDc#KJ+0mB>Se1UTg=ACVzyE96K6!yp!{BeqF!n`(A}LF)*@4G18mhoPuj_jZBu3iMMSC?s-}86K6+&OtnxmaY z25r~pj|v6|T0WCPtQ>!QuNfi_V+f-;>mN8un4# zsP+$Pf3tGzGwC4uILX(I{baH=rX+)PQ0H{UAYX(S^EAy_PEbelu;0y(TCNVB{jPM* zI1jb(9pZ$)nyV6;NZfemQ4Lnpj+Whv&3M))4C&HUB6FTs=iV51oA+ae{h*X6-EtUW z+!!(bi0Yd(KmY*zEO2cmh|P9&CdT@Ce42o5Zw;4W={cgf_;U2=cg`u^-qxoQE3+QL zqFB{S#P-%6k`A`f4x^(QX{n;^yp&cf$Z5haJ9yu#a181t)VE{lwt{TW4(uj8eb=fS z>;k*41e4=mQoo@{Sj+o)q?PYwhof?%XKH}*$LaIEkjh~Et0)BhQh>U*M)*EH00Y`t ztjB`#VEp2p+>Yt(_rqH|ENaQKf6uO-jM)Bd>`c;|U)op}%XJg6fKM_*`>pDf;A@{! zxm%$9-BHF^xE9J=<@8v(JW0%pM#kyNZ}cTTGf%M1ZX)LDbsL>J()7pJPToX?S0sUS zjkkf{CN%RbH!STMS9vF_)14&35V7OgXn-S-cXBXT?#(zxEsU_@Txk zNUq?#+kYcH`ynA=RQ#iGrQ0tH$D0Z*_VokWyJXULEp^%`@UKJZ-&#+J$eG@iy7N)A z^;663(%&{Z#mL7~?)^$1=fA8<^H?jLAT(z|HBrFzKf#5~NIE)KGD=%~00BD^(%dnB zIs?LOY_2ZKo(V642_5a+L28sfl@LnyFzX{N8oD2rc)w>admreH=xtEG&~n8E=3DiB z2HXtx%=A+CxYITD8!@u20x_I`RM9qtE8RbIbmlP$u7!~7qXu@VyOTjT3tS{&gJ$E? z0p-o#e9}DSFWzgd=z%C9G5Fo6N%rek@Fm_;CM&?prHUFsT=CF z?A(lN{0sm^hcP>l$EUx-=j!tuqD|t#KVdfcA*-r`71I6$@7I-I6WBb7b|nKiJz{$3 zGhB?#v%Vkl3HtEID6D^=Hr!w;!6l|<&fq(b^whCoCv`7xZP}hQ zwra3CIyrqc4?6kXW?o~bv2*Zih;sghd4gCF{>~y5CPhLkNYPQP$;@5&aTL<|T%W|LOXB0~o&S)B_4XJ{ybxv{z2uxM4_6zjD?_pc_}RH9(f~OGvg%;@ceTL4y4eH9j6J zw9uW6FLAVzH5_{>3G92TZ}X136KA*{UcTEIr$kZqGI@3xYw$}_q4uD(>M+0&XK=Yb z$a7u22i;ks(^!wTbE}1T`_XTC6D?{iWak06l8w@Gxj;cAMy+I@uJsht66JNp>*zNK z!3q7G@;i(>z}@{BF)*|eFFQP|r1%J3iO8Pslg(zZ_$pXs5AMu-rEA@(o7wefntQ$R z<&z+rVXW7(%Gl-c^RYVLtn1g$a4yxtj>1-+CVzZ7*pFS5p4-=tEg$X1A8=4M`QkM8 z=fqgJop@*4;Q*Y)f{sJXt)SD(gy`UJ@);8g16fxcxuMJBeImu=qPe!Ro%EmC9|oHk z-^fZ!w$Z&8N5D-#URYFo-R(f9yS@RZC)${OnWEJD+U)z=B0&#HhXZK`Z*2_P^dBH6 z9cX5Nluki3aWGRKS}X3|J9!aQRMgNB59_Pe$Lc&5v|PJ2>Y8h1dGiNV-k=boH|}0NOvZFl8axy)H(#Rb`$l z32|Oh+3{mlE~-G`WeB_H)Kvqm_fAasQ1(N%{JDwi)}SjxOYdQYI}z_euG8m2=S?<~CSdT43Z4sv zKbi_;7zgvsJbEJ_mD8QV-?>EWic=~?W5)6I7|6yKEABg&MN`& z16zvQ5HoPRwIWE$Qcuj){rO#{{{EYy#IpoFl^##38MTKE?o~y}A5_OJ*bhB>4n2)u zSd?}$bX5?yangqj{iz8CF7uSS^H;pZrvCJ8q%*$tfE=m9p|Vw-WBLMTyE=) z@Ls>Eu)UAl3;f@tOR}rAmKs$^ZVkc^z>jQnAOHZ~%Bde22ae*QFKQ5`c3iZbHuRR7 z)bx^r;wf6MUcI{Wo?Gu|1a*1rh-=GABI{R))KR(}iwsM@07@})LcdXv#yrZAFYy7x ztvb15n(;l8vgOF&c5zDol7OImG3@waPf164V%L^M@i^zX;u-W~^q2LOeg(He$>ShoiQVsFkR zf!2@AvTvu?>P`TD_uG`mq>Xl)09BBtg6XR_BErJEO`ysZ;tJeBMU%IVme4(pF#H=~ zv5$`xBK-{!68hkOL9B-p648i|~^q#avm z)`b8aLht1qC7Vpd1j$Y(0no5~JI#PX&$TudNOtwl=p88ByV(mB**j+xj*8@bMeB8f z`wkmPzvcDy0}RRKeQhE11<9N4gJo-%zh?8qz`($XuVFd4BE5ev(Get`!0?g~)%r>I?%gDbC2CR6R=AcOO(?n)6fHg#$e$e$n1<01Bh!f~gus?TS|y4i^Try(F9AxYU_x zV107*sx6EB+7|0p;ntksUxCtYp^X9nC~M+X*!>h~U50KipNx$Of8rZzA1l(!dIG9` zyStp zTi2FG@Yq4oGsJo(xo<10mF}wNkPA6}Ue6juJZ%|DQD^yrKPT;g${`$AL79K}s1Qz3(Um1EdeTnXn@xBQ-V8-tW!4Oij<6 zmv5DOPgHin8jhQB-okj3(ftY1I4B|zbNtrudCvo&bj3S$8`2)|tDBVM1c-R0w($u~ z-p0O3sqDk)MI^2ykaw2F*wV_};Oa1i0ykh;P;zTBSqB~F*$_kZCv@b%;}@sZHPIYN zHM^hz6)sT`*ep+eaj<07#Ybigt!=%FYq8%X{ocLNt30!}JUu-PuE5wRxH2p?_DF4Y zq8KJqA$xx|L8jCxgy6sm_`f(13L6?n9pb|1rp6oc;Ns!&dDCjO_MYP5GsS7Qn;}y3 zttRopjU+yf^@F#l@E-_k7C^|PqY-$_z{ib&>|SFBum9hfkwl&uG znx>$5C9e7csgIZ>Px>E$mx3+{{s9z)UT{#Q6=F4K+nJ z;=Ot2+;Nt0n~HEbk9pY&CL#Zqg%X)V?NI@c_F5gOiD{8i zyhT__KDt>Ebeu6{VgrPN1<9bBVT z@v=}PbEE`o4WLcgXIIb_We#osaX@(DpGP%wrwfHYzm(F0B2C7IGJwY(4#hvT0gSJK z6SjOl9NsJbq(Z0H5Da$>jVrJ(QMnJ!3>W9Dj|ZeZLzEgKT6phLSMmQ3QDAO{(T`*? z(1#Kp+Oo92Z3O-lLGOQcmXV=h<{R^Up85CaMF$OoJ!cv<8Nm9>?TC-S5Sr@~7{KNH z0bI>E=rPF*C?id2{P>U|9w?k7BtZk9Abg+*L-tx0?2-X88%Lb2&}^l3uY;V2 zEZ(>MPZR&h?`(ru%{53`PD6-E{mim&mgc*zF}>B<_=-=`PJPgV$gJJ}C> zM@;hE*vP_@Dt6#YOcIO$+=|7^gG&!+O00Uj8BNsyzFEK!2_{aus8nO8*RIr8ZlDy5 zhZJo8Uu$n34&@jAkDnQ1&#r_pSt2T1sDvSV$WCEU_6o^f%viE!EtD2pZ&{;kWgDc( z5|w?INOrP}ZT!x>Kkt^$b^X5oe6Q~_7cBmu9V_S2?vK7)DdJa+=bPsq|9Lb?R z7KUTr4gvUoAHW%IP4y13mQ8zirzYfJ4MJ2@^c5CnnQ(_O@@!Ge1uxPZa?W_qA$QMl zm-K=%%?_E*Y5^zW_XltRsXF)R6^O9p4R43Y`E-;562HG8Nstu;?}`ucCVruf3P}+u zfbEauV$MAdzO6?eMWiRzd;y8|{YO}JfodSN=0f!1{x{B3abbp|_oA2I`8|d<2;n9y z2&srQG3kC!Ge?TJ^~o4FFcx_eWy(r!fs51yqx7reFP_aBg18e3_iKf zg}o?s%g+eokTn|ocx4549{XiMz^^zow;$ZKxqcBWm4{m)@tZzTHBd3o)hYwQ3dmYj z@1p@BO(pgS8z({p3S14i1{d(1%}yRE))>C@$b2Spotw$<_$o9wqx_;sd#8(Np&2*n1qp9aAHxfH7nxgye|D#8nq z7`K2z8bDFxtPW5nwWqY$5uL63=}2rXP7QZLv~Hk@8lQW5OyLHp7tXpv4dBLqBL!D; z0H-8Oq^6nJML;wE--jUH)e2Atm@QqffQjnDn3Tf^xao!>3ZeQ zBvU|)+L1ZFg2ZfGR-!_prS6G9mYYTCOEno-GL&i;P=bj~gITsK2y}_n{gVga09U@# z1vyjY;qU`e>u;c;)~z61NQZyX`t&t2U4nf_{7jaQ#!`p-nWcc|8F_gw^JTr*?WL`? zS?*@@6r8EgUULK9zmW8Y|3S|S;!RQ0-INjnh|(Iw8SKx8j!z$YEWhK}b9??J5*c)e zrL!8gwYDoLfpH|d&3>+LhK7~ZP1SBnRfXb%(Hm6~B7sw0z zCt&;}e)tG5wx|d{410JZ+6#duwiSzlXQPAa2=~nQ_-g3&_Uv5!!m{H>+$AN;jrdM< z^jh9*-%cGX>YWj1BT0_%{er|mixzFcfr0x8!}WG0i*I-O8O%8uy>#i)mcks}NRmN( z>fXy}t`TDDj@R|~&k@F7g~0=kHg9_TiE+c1*1#!kVp<*Yf7_v~fGY0jg6v6i>&(`h ztX4qc#SPbmzTjg!*QF>&A-a_t(# zjp254D15pro-AqCIR1GAwdLlkZ6;*hGZ1kW=v>QsKnG;rmjKlr)AIOi69jX7QWz~i z*qVAh9bD4l+~!B2KXf5HEG%r89Nx=k4vl1N)WQlM++UG^K^}Bo(;!m+Qs{Unf&6v# z%m_{@HT=Ck1%#d^{_EGvy)fd#yB(s*6HHGoILUt6>w2ENRDcj899gVapFrZ-j$9Un zK;(?F1tsR&&HD%GK+nxXv`2vIY)%C7hA2Jg?v&L#h^YJVkxw4lYaJN}Y4GV>epq2> z<@5>MJMmyBPW`b-(BhHZV%DKj=P#`(SpOf=O|d*bZ#3Za`ImkMA6yZ<3xQdFQTyOYI{4aI2{e-fD<|l1jB`) znP#9Y@E(a@ON|v|1D{udUlt~vq5}pwb||gx#;e}>K>y;lXb%!oYBj$fR4eyK9s><~ z+$M=?M$b(RCm)OuPq21={_HVEPUBsw-Ch{f_P9gx{j&4JYa`|1SElhl6DEj8LS7Kl zMUSb#*j&8$aJvY%JKGJbK|bU>Qz2C>-{@P>tv?)9lxyE=t6MKlakD{enSIjjVxPZ@ezcN{e5LCw*!C zIlaxn07GF8e2vyPq>qH#fB4TgDUp_?ySuxwiDIk5gEMg__P{R)+NgNO4*h-bDu#pNNT=iJT?8*hWtL+jK8M2WdcuHF4qZDoXXyXg%-BpmGS1HJmmu4~Catl$N zep8Jn65it4&c(R7KHritVZXM<$p#YQc!uGQ(Ds_ZD)+=YY`7b2Z5`S?>L z#y)O54$}6M$qELPm|Xdgj|ye?-(TRz4_?7@u{G?76<+r6N;X18gdgA$xrwWor_yq9?StXg<#gDi~N7Y8M zc;S?gbWj{YqD9-pZX5v5_^Kz!lfkJN97f?O5q0s(kXvk!ZS=dJKcU*l&0#}EIpubvfA zV2gkdNnSAB2HG`cd#DS>DX8iVCCF*h>@0y5@Jc z3!s9zd4GWwJjM^eKJtwbO47 zj&f4bP=(YoaLZP^_uHrJ%6RI|#?gF(?rcY|&EDDd4!XVRmEQx3f$7+qoXn>M>*hRz z3Mv6-YOe{jJdAF1C~WLxK700!eU5dabg?k2GHEdP$GvmxOVly+z~Di27D$f}!(fN; z59q;%&Qu9#-O%mV@=KUTV&=~(7MKKGIEX;^r7W|<4V-MAHpA8Ti?U@t8vv8zLJ%-YirM*-xT^^Z}4B9huGI=qB1$D1Do(s4dNebOHh3?L!%1-g1l zc4qR60)?4roGd0UPVA_`y)So4f|V+FD1N!mJ9SwxVo2X}$U|oiTRUii61h4E5c+?@ zLSAWd(3}1aE=haPgfp ze@0V98}uWCpf}xwJN`@m?j%6G@Y7mwCexaSwm&`quMVk$&S)O?}!rHU#744)(f7Qu^6)`1PJ;Y*RF9#MsbK zimvM2nR#mN+y%a>T-#m5N=4}-sL96Fw9Z05hVgxoqw(%Y%+zV*G7@1^Zt-TQQYZ>A z@8{Opk6;dL>1;U0g;VEz;-QCYaX-C;a7}=cewsdTXLfQx{?lHzf|HZs}LfvF*N}A939gdIfEiIxAFJ8vZFd2T?+BGKli_0vY zatPRYmDmTZ%8g80ibxTlnsGtv3L-sksP}?D}r^F1$JGr0*ChQsX{B~yVG-C9V`OP*JeEK z&M4%KM1K{x6RV|WU^mo(AXEFeMliG@t84iYV;&+WE8TdXDCY7p93154YmsHCJi>Hs zqmo7!w zB4j7}O}~5+OCK+Bq4V9Hq6E%O6~eWU>y1lXfE3YS4pmQk+pB*nfj+}xJ__1kFW2nh z8eP_t&Mz0kW2Bw+ksI^k*nR((_uy?`3xwhIyn8>>_Nq15-uu-nX}-7EjnP|#eve$ISCoRN#JdBG)z-Mz?>V~Fcp)&_T?zMfka+HDb{f1V z2Uw9|`+Od-+siwzj;V0na;4nQG#$y*ZGKyi8aYqi$}FF3me5l(9$HF#-JAxYgVWk? z1rAj2>^0w_{=q?e|2Vsdf)R!&3sKf*NVa?|EGRguA#fBQLyRreA5IPET3SY|-2QSI z5>K?gT1P?XIE48RDM7wd_RC%!45S>Mw7x>7cg{aE2%&RYeHPfY{q6E?-}j7OaH-#` zgxW5p2s#F7maDe83zzuNfp>7%mo)N~@V~5N=ObhY-KK+(k{jj^8Xts_v8Q+5bGtn@ zgRu$ws)WmZH+p>784I=xQU_xF=U6~B=5Zrj*}#4pd?*`Go?2udUV3yNS=Y9D`%J6p z^v84~QF^Cup&m2xuh{t#C9})R*Yjbf+qEAsj=$Ww;dKH(PKuJG{}=46t2Rt2WUx_1 zMMR-oghE)K%DTgd*zZ_aZMgT_)Ks$VM&r|R1ux?YR|r~23}w8|<<=l{&s<9vfu@Ur zB4Seo^gp;i2nRLK7A`@_F|_M2BMhqrS)8}54|a% zMzRZ5dcXC1%>t*)W>;zus&A32bSS!TN_Gy8Dsmv@`6IfiCtD{yCNFcm3-8IJ%Cjb< z%_tRS_qe6bvjM{(ku?-%b!(+5Q%rk{4s^$2_94(hpvB+rb1_`0R@wrMS?TuBip1Ns z$z@l2YnQ&j5_M~kDB0Akts>}TC}DkYrGK^JnJUPa12+Wm*f{VI8N}Jh%i6j8l*|SA zPG^L_;8eU#q|Ep!Pf;Zj%TX|T(r7n~!gyoT)@8(KbXmyp5wJlmLD@9SFifC_JFtPS z>Fa`*D$*}sLF;)#Kh&UE=9STLeJ6~;0S5Uu5n;M>=PB*|i0;t>86E9)Ftc?8W}Q7s zyGRHOIM>)Dl;29g-oZV5NmAA$#_dF?|0Oi|Q!EYcZXinvbJD0T5{oEtXcygEE5a#M zWM*FG_cqv}J?WQA!ZCWU?sFOnyo)5I*B~+5hiJe}Bt{Ceatmvo(+lS{7S3yXhS}4n z^{5#{TmQ)rIPWwa>f!O-HZf@-9a0g)(3zj2v@vv(S_}7>;8aZzS*b3xL;On z<)6tI)vQ-aR<*fCgt;G=R>iRy@p|`TmAs?(E8Y&%p5Fet^;V% z1I?n$&G}57H|RSKE=^~}J@tZdzLxh=QhGV6a<^&AH*=l8*yatc=r-viIwUX5p@4XV z3MBU$VbIFgueZEu@Jr^TK!xFx?)rxrxU95m!Z%)dwo}Yyy?L`)M_z{7b~b-1-OZVU z<`5q&*R0h4HE??2xAF&?2WjizsK^|{I6T1XxZz_}f-;sCEh{~L-2Vv!MDt)YVw-&u z#y751e>eMW*XzPCF7KYij)~|R&`H8Nh$@o7W=nDa*MlDQx3TAwz?~YBq^iK$f%u+zxt(fo*!e(hbh;? zn+tWT1TJ>qM_a*tsT(Y=9`E*-rp3Uld$X@0! zGr(mC?Hij{!Ei+osO%}^Y8+Xcy{D1%HahpRj$2EM&%{jugtMEQn|YP@yfwKlY(-vv zeodp>yxGypch=r_mBjy-=*Ba%;ynfNDk~+F%?D^b-A6PyC2TP3S#gT~*tuM~F5Lalr7f-3j+?x5YxaJcFBv_}=z)%Cw7#bd<#0!+hw9rZAx{cnR;iKD` z6gba9WK$yc7FiQWNwC~F;SG$5GSyq^E#KijzS5MxP?UH(K?%D5e>tQuL#p^swg^V$ zB{}J1=@U29)YMGPQ96%LEqhc9GO)y>RMP#-cw_=i&c$SGXXjD5TwQu^4I+Z&P#6zd zkVNR1I0{}_aT@oCJ=$8IRh~Q-o!fC#=v#|Q3dyc+cCDw#qGDmv9d0j{=W+#wlOEm; zv8(Rp8~($60xbcg`SJCEgSMyf&pEs=dQ3oq zA=|2~tGeQ8>bi{QDl5$erGq5B^X3Q)DZ;h(^)7>-Br2CPovQ6J z$9djTCt|_$@$hSsXYQn++1WbA#UD*?LgLCpN;)T}Q&;GpH^!DDA=+ZM442bYTHNi& zQ0Hry4cB0VSGC8_cDbT6-g6H+FiYQcyB*8lDMgI^rFmp%F?KH$!Bur2P=k2QUpMb9 z4-;U|lD!LWIjj)EQSeFvxeQKKH zb?$4y@F@T9h6W;Y8(ij^{c8QEoDJbH@6E(O-uVY4c8AB-{6mfe!?$|s_qads z7iiM5*gR9jpVI)R=2#KqgEbo?^5k92Q{a)Nu1e=^<=<)gMdj&k437-ur96wANlodp zuJXi+chqEq6D@Eqv-j+W}rN-~wn`RA6^ zpC9QAu!xQuNF6-NOrrwK*+KupzLs_`1Mk>qj}@t04ch~2A|ErV6FZNyFZ@(d9v$}_ z!=ns{yMZ0a$1O$zps|Aew{DMa`8|JO&W9Er*M z>4uX8>`Jv|bm98sDI-Dt+a%6QG~O1~S4=JkOeV`8GFR zU}EqKTH2CQX|>AT*T+tT$7I>+goXxvwX}4I)VZLMB%ZB{$&mYuB>uDTw>Gb^@->50tGX)~ETfQQ}671FKz0^%3bs{6vcX zR!~rEjdHTb=V;(RsRW(n?0k96&(H58ES8CDfOYM&Q<9Qm4(kX&jOd+ZYG&r<4~tWe zR!+pq_sGe~ZOe?O_71p})}`r06TC$b!Q}J;@&kZJaBn}@D)5IY`dGQPzF!u)mMqBlt}I{?XVm zaie~|alZfXD!|A^gNL`W6p(sDP*kioMsa(m@4y)<&NzmW*X_lq#5HEA>uyfA~)4ly|^bV5c)%FBzF+?qYr3FRt-vj zIsw1HhB!uRqu~Z}F9$uTP!6H8ABDr^2rV*aZ7r=2n&i`>^Kx_hUwO|DY@ADr<69Ug z%Qs;zw~yX_=)Be|wh;b%h66OE8eYc=Jp4i7r;>iad50 z#~~c?E#G_c_T}1yz}@%qhZs55j{)?4TF5)^Zg05xLig|JUUyO8T4d7%3+43^lU@7D z4S_#$q-o27Y2+;t&ttQJwO7NaibLxnClAScUn4<_+^+}5sS~U%EpJQNo`FvIl`LL) z@3~n>XzyJ4l&QuCo#D@88u(=74AYZ1@rF%07FZZ$RW z_c6skQHeiFG2~j|(QD-sQ$3v-{gDT*eiu)q*JEjs<`AMNi_8@IkdwdBtfA-V-627gtBY#jj%S1S;p zq=?za#N2)WZ6TrW5P@k5Ffd5CS|3b#H7&x{ zD6((Kb@%jaokCp7{>Qq!I4xmeH}mL@ejn3s@s=*20O&K(1C8_Rsm01%W^_Kk35V%q2I+X$?6X_-`!-=o9>SxwCc6`Uq)q ziWA@>PaXGNVdn%ErFUB+Yk^#N2!Ao9tPF(Q>?74JcdQbn<8L&^2OEq z5b89REu8gS05FW6nwp}3*?A+cUApu3E>`<4r!+PFENQ5{wp8)CTj|xBwa}Z~ZB-*; z#v>*0YpG(s$%3&fG{YzHA~SPQJV@HQ`^Xeaj}KaqW#N)`>B^A|*jnYB@Oa}tCIZlJ zmZ0>*+ZZVI`#Ggcu5+5*3)AemmHUJf-G0b@emCkwPw4LnME%u44*Yl_3cF~k)Iv_Q zkw6_Ir~6k$OUDBGn`guJS4Pd(Ou4$SXn} zydkRqV`AmwIFhf#&++_Bw|T&Vb)H!o*p}ics~afzBY*U2O!m9@9UL zsH8;6^D!NiK+kdzi0_)0VURMdf})I)5<#Ve1Q+&nSy@@r`QfUK5~$v;`NJUlicsDP z7J_}+{?&HV6^JWMKBtvm=o+{X>PiBCR-;J3O6kNyo6a#NFiY7Sfk@aVaY-CAUO33< z_&7ny@#A9_$gyr>)zscK2L}fu9#{eV!Dj&`46-Lr&K2h64ZMQo>&2f!OJ3&J`^6l zB#2b{ftvYv7y%WnNrOQrYge`HWg3~4S^H!Xp9c#+ah5T9d)pVLQV&`eh| zF>$^oZOw+K-FVL_0K<3W3Z6Z)%lY!7?VSM9pTBYC+Mn@@Uy;HTnSq35EJEE5e-|ZTBwiQK4C7Q<=K4#v^`4wr z`vy}`8KE^He;N*-QWyi?lYi(5;pNL4)?Qv~y-*{-qKO+L+glJ#DM4GwBc!%u4fi^^F)lXd6jfwX~*Z`}oNdtGij$f@cZ~3!7Bt&O(Rg3$jPU68axLLM%lvWnQ_6c&Paz zK22vjg?7iZYK>aUG6ZDs{no7bePa=THPi(QI2br3KC?j_Upyp_URiF8WTOv+ID+x) zO`A$v?UGSRi zk#TRRnI3Uk3xxAM>-e5})hab*Yy02F%` z)6?txCX>vP)4T_qcc~b-x(HBh?ZP~6F_pm*rbbXKHXZ(gjS+@rnD8jx_T777RkeP7 z==F^~vL~lFBcooNW!=x#JljR7$b&q{#!@|%Znvg2AO!z~74S7uc#ej(JQBC_uAC^U z-~g+!XE}x0K1=@}|JXw=V@?TnW+3$GE?65Icgcy17sZj`z5!J!Dx`iLs?u|1Wo6VV z%DB-5s2(7*!9E7B+xEkAYAolx)lMKmn0+OGc6K&D zjz`{<3}|O~7Fs`9?RR<&4r>n;bD64Cq7byq5A)QOnlJls2LkMH~=(|Ex|gdk^~ zS`9_pI#nn4Q_S5aZ%u@BoHNXnS2$NO@-~cN)(DFYG`w-+hBM5!(IO^8`3fGPh}3<( zp8#(+8*ZI=Tb`9}Q-+#}cV{ZUsFp5#=WT|Cf^Z*qz%`*c4XW$d=>vDX1rXNR+Jrgd zfWOCD(}rwmN32@R6hXLLy)_BzQxJqMq;XG0{R(M65RTw5~HV zGw{UoXrqnNJ7Y7DH&~DbY4&z@B4nS(LD_5Of%f+HwlK@o*1*6(+1A#!qqCMSIv80o z_=LOmjpd7_;~hUd9scy>8Jn5)&i9u* zUx2;mVoCOHpqce4#}#{mlz6SS?ctnRjJ#X16s=0F@<;iBL=4sR9jwApbe=%ECTYla z=_Ly%#_qx*D0xf$>>u#mQMkFawH0Phs4mn6QQU;DfBLV@B$=6;Kj!yLopM0J?M0BdZ`R=*zJQ%M60aJMbO=1Ly{)Pyvw5pOtx0;0n}H;Cc=%dp%6yC4 zo2364(fCv(_$f#MFj1_2%Yl|u(`A`l4`Yjd9uQn-4}BGk$zB_c&84(g#Tm7;x`jyN!=W70kr=d>F-$QcCnrD0m>A~bNp4`RPK z@uAMay}@M{Bpi%SpimDK<{sJ4z3z1^nBel&=T+fWX1qAvmg;)kgq#4F zJDBhG%qGoPjG*;_0sv=vnD7RGX651uba^WJ4WZ&{HQ}M;u6OB5 zE7i4ZLE0pT z{Pk$K-Vm4r>ln=^kb1yhM0B7R}FR3qY(`?ci|Wz z9U3v!>lIkvB--uFbn!$~-nYf}W(sMfitG@#^RUJkHT*ugE73I4VniD$d~a{ z>Ntlf?79#CX=WxCo3cT|L;Y(_@jxEu@C~~veK7+Gzkz{2@X|+ZN>lJ{6XrurXZkFh zH!n2u zl){(4E(#xi(IGSdo|??W0KBdtX3;O|Lz6@HoU~C}$3h*SIIWHB&frm0+bX}rN~*)9 zRhIQ%9RVa6pQ@)_b+D{SYVzKB@~M+Ae@VPb+|CXU#nXYLSGK9ZvikeOTKrVL=V|l;MP82m2ym$_DLSl)rS*@k?%~-wnY8M z{t<1DL;hEb-0Y%D=1_Z)!8bfKRU~ax8RHRJHmdu~8TKNNfH}sImvqZCoA6CE`4gZS zVbozJXx*!QzBcjO;OE$dHJ8WhV&r$og8?wieJlP^cQyT@Fa^JoUrmk7}vuslHIL3I6{85RnZD literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/128.png b/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/128.png new file mode 100644 index 0000000000000000000000000000000000000000..82c74bcdba2d448ed62b0eadc507f78411d576e3 GIT binary patch literal 10502 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 IM6N<$g1#~ZIsgCw literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/16.png b/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/16.png new file mode 100644 index 0000000000000000000000000000000000000000..1b310d3f960632e965a975184b22a774a8fe8275 GIT binary patch literal 723 zcmV;^0xbQBP)VsCLTQ*Y*VdJ&C28&G%ysy_45KLB_JMjDc4>14BZAbUOwJOkj94zRCUGE0%I0>t% z4smZSCcVe-UT0+CGaHxKD*5sGe7)B5Sc$ecRqJj;-R(OaPxY z1sh=Iry07nrvlM5?KDefoSL~tQGGM)fTc;WBbON8=<5)><$z$`B1(mfTsNJ1Ey4g* zIZ|`Yt%7mp#M|Vc54d3%>!eyOO%RIg%)*fgCa2>dw1lkX{GgGt+3Ym!@H;oHFu`K# zD^?TB72pr?MZB6!hzd%igRu2-f=nheNUye=QfCOMkl#ga{0pKJ@1PfUF!ACo#>OHz z;cJJe!SSHAJ6h3+$z<|g+ncRndoBgT<3iS>AzR}@TIiG!tTv${BXVzuxDocov!QFJ zB({8sot>Q{t5@m=Xje1Cwgq0;1%xXF23izNRJ6fOhV!u2TXK5ak#9j-Bob+DT;ZeU zVxc>|xud1UsX4dGS+%mI+SbsW;p>C@;EK2Kul7fP0RV7tBp3)VgJA#w002ovPDHLk FV1j$XPZR(E literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/256.png b/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/256.png new file mode 100644 index 0000000000000000000000000000000000000000..cd021215281a334b796813cc8ec5723ee49e186a GIT binary patch literal 24080 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 m|B&bZf86t|1+hy5QP!x(U|GsPKo ztO6p{0Y?Fe0^wqia7jW!{{P>e{V%x?q+}e&ogDUO|K0t*J?HE>=O>eslkhAX_auui zU%qT(@+5nZ`D&o8txXgJVTaS{e8c5(ZOX~XS;BFg$lfW65|2b8eZgSx>e$%WSxJ)4 zdA;6v)&%T!d&Y!@h6anrpY;3v_1m{^kIvjP6?0Akmo8n}R$g9y+I(}w6aTdxl)iCXfj?rbCdtW^COXdJ z0P*eTA-2Zt@9OH>SzTTIch&^1U%&pz^2NnRq~lGZ+%}*AbNGiR>N9Y9pCG_&LA73{ zK=GOP7J~5c3sU#sgU>1}E052cKx=F3o)zw*qtQbb2pyV4U>p=U4V(!_9#4RYtc#=o z6xhI0Uq`zh^?zDXQE_Z00d5x0t}R=<^hoq81Rq9l1}Jixm^dJ29&Mf?IYRpX_@2!( z*8HOI@cz*oq#)1pE!%reCv0wRwys{ix|2WARwQ5T)xn8&dfbc{8>^L&t7_N5O?Wa3ul8UT zG_SV^n#_1+@7cV&HVd52b7+o=zbjD%u3jAUFpOCP5vs>hR8+J(e&&{DTLx^L+^mrR z8v;~#fNUuPvfPd8M{p|wm$`x4x(r~w2Ow93VXGNVEm#2Z3_tm^`AsL?Awk9z)6`X|gr&}QA zkL!+^ys|z@p#4U`#jtSX`!o&U4cNhgjLKLiKy(dEM(CrN!CfGa!mckT@W$Mf^62Wo0+ zLYPvgNv5M``2u3!0 zPZ)Yz@6H>%`QIM6<%`Ywt^^$uvHCNdaD05cjbD+U46BL6qCgI3g5jTUz{8$_{{`>% z4Z*43I?&E0{V+6{tgv~VCKW4#0Oo{q{ENlfd?T|-8VQP7%>fqZJoOLscK99(-f_DZ zPW;e{ODt(xgcM(Vb;BYRD}z8F5I7@wa)aEmyhJ)>z$~%Aw5;~FxClKz-Gr9ko6KfhD+ERfgcTe|zF`CpVIM)<5K0t7a0qW${pQ6`wvv2P zT3UKw)@(R3GIA(dZ1W4XWm++zYk;LzrUe>9O-xHbaEt^fTsYAL4JeU^xHzsCAS@*t z8c>qze<_ED%{7bsc>4OsmgRMIbyJ<4o$m@ey%JgG)_j0%iUd^fxU88YCLt*qIIKwt z3YBElT+|?-q?&+2F?#+NAFh+IK75a1%=uk_G2ue@1K)o0=UXT#b!jJ4{eWsDV!B@# zWQ=D?N&1eQyhTefpM1S%JslYC-H*j-_yU~Qa#dASCnnuDq*r!hqp zRWm9HnlxF8`Zu}FaCm>EG(6h3*Qf`x`Ytfaa`Ar1Gm2&TxNi)m1Rlbero$NPr%=L} zu)-YnSVDy{mQUgTZY*40sVjj}?-P{eMr&+rv|<6FewZkIA?IjQKRoIjfk&e;n7|V= zB5|__7N;5VJ$6{Rp%50XbdKRi$w}sLGi^R6foJ|{mTfaqs*zZp>c{ERYX1o^09N=d Upa#&Hf&c&j07*qoM6N<$f~%MpN&o-= literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/512.png b/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/512.png new file mode 100644 index 0000000000000000000000000000000000000000..17915d68a8cb79cb734e687651e884b1b00039f9 GIT binary patch literal 56801 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 literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/64.png b/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/64.png new file mode 100644 index 0000000000000000000000000000000000000000..be300b35ddf6dce9fcd39caea51a4f475667797c GIT binary patch literal 4470 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 IM6N<$g6ai{fB*mh literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/Contents.json b/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..79b9cdda --- /dev/null +++ b/jni/love/platform/xcode/Images.xcassets/OS X AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/Contents.json b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..f1a9e097 --- /dev/null +++ b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/Contents.json @@ -0,0 +1,128 @@ +{ + "images" : [ + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon-29pt@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon-29pt@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon-29pt@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "icon-40pt@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "icon-40pt@3x.png", + "scale" : "3x" + }, + { + "size" : "57x57", + "idiom" : "iphone", + "filename" : "icon-57pt@1x.png", + "scale" : "1x" + }, + { + "size" : "57x57", + "idiom" : "iphone", + "filename" : "icon-57pt@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon-60pt@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon-60pt@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "icon-29pt@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "icon-29pt@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "icon-40pt@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "icon-40pt@2x.png", + "scale" : "2x" + }, + { + "size" : "50x50", + "idiom" : "ipad", + "filename" : "icon-50pt@1x.png", + "scale" : "1x" + }, + { + "size" : "50x50", + "idiom" : "ipad", + "filename" : "icon-50pt@2x.png", + "scale" : "2x" + }, + { + "size" : "72x72", + "idiom" : "ipad", + "filename" : "icon-72pt@1x.png", + "scale" : "1x" + }, + { + "size" : "72x72", + "idiom" : "ipad", + "filename" : "icon-72pt@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon-76pt@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon-76pt@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "icon-83.5pt@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-29pt@1x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-29pt@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8b548ef9b5c48039f93d15b80c14c35f5d4c969b GIT binary patch literal 2061 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 literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-29pt@3x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-29pt@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d7a8b6000d0082c6f67e2febfcbdf7067aac98d5 GIT binary patch literal 8727 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 eeBJctJ(Jl7HJ&SJDwfMzNBl2FjG5N} literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@1x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..aa936450ece40307edb3cbaa2eaa7b117e045e5b GIT binary patch literal 3028 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 literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@2x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6705cbfa9e881e8cb238557401da7d1fda4ff8da GIT binary patch literal 7701 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 DIHstJ literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@3x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-40pt@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..54ca124f3a5706975eb6329893bfd561fbebcc39 GIT binary patch literal 14027 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 literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-50pt@1x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-50pt@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8b9b1118dc65af4533380b3acc5d60b88b94e59f GIT binary patch literal 4016 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 yZ& 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 literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-60pt@2x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-60pt@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..54ca124f3a5706975eb6329893bfd561fbebcc39 GIT binary patch literal 14027 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 literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-60pt@3x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-60pt@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c93997c0018df6b232b05dfe405ff718b3509a2a GIT binary patch literal 25860 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 T-pWdUzeO~j>8La)*+%{^uj4g% literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-72pt@2x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-72pt@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0850319f13d4ca853205b6be2fdd6d8aff80292b GIT binary patch literal 18523 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 FV1g<8W!L}! literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-76pt@1x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-76pt@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..f90a1360f6d333df81e63bc6a9a20f2a10d9b422 GIT binary patch literal 7110 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 literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-76pt@2x.png b/jni/love/platform/xcode/Images.xcassets/iOS AppIcon.appiconset/icon-76pt@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c2cba8cc343a59dc4d4a3b9d028f6e30ed4fd5ce GIT binary patch literal 20052 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 V_+>hk*rEUc002ovPDHLkV1m4@py&Vq literal 0 HcmV?d00001 diff --git a/jni/love/platform/xcode/Images.xcassets/iOS LaunchImage.launchimage/Contents.json b/jni/love/platform/xcode/Images.xcassets/iOS LaunchImage.launchimage/Contents.json new file mode 100644 index 00000000..3dd8aa5b --- /dev/null +++ b/jni/love/platform/xcode/Images.xcassets/iOS LaunchImage.launchimage/Contents.json @@ -0,0 +1,142 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "8.0", + "subtype" : "736h", + "scale" : "3x" + }, + { + "orientation" : "landscape", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "8.0", + "subtype" : "736h", + "scale" : "3x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "8.0", + "subtype" : "667h", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "subtype" : "retina4", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "subtype" : "retina4", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/jni/love/platform/xcode/ios/Launch Screen.xib b/jni/love/platform/xcode/ios/Launch Screen.xib new file mode 100644 index 00000000..45fffdbd --- /dev/null +++ b/jni/love/platform/xcode/ios/Launch Screen.xib @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/jni/love/platform/xcode/ios/love-ios.plist b/jni/love/platform/xcode/ios/love-ios.plist new file mode 100644 index 00000000..1fc317e5 --- /dev/null +++ b/jni/love/platform/xcode/ios/love-ios.plist @@ -0,0 +1,102 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleDocumentTypes + + + CFBundleTypeIconFiles + + LoveDocument.icns + + CFBundleTypeName + LÖVE Project + CFBundleTypeRole + Viewer + LSHandlerRank + Owner + LSItemContentTypes + + org.love2d.love-game + + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIcons + + CFBundleIcons~ipad + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.10.2 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIFileSharingEnabled + + UILaunchStoryboardName + Launch Screen + UIRequiredDeviceCapabilities + + opengles-2 + + UIStatusBarStyle + UIStatusBarStyleLightContent + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UTExportedTypeDeclarations + + + UTTypeConformsTo + + com.pkware.zip-archive + + UTTypeDescription + LÖVE Project + UTTypeIdentifier + org.love2d.love-game + UTTypeSize320IconFile + LoveDocument + UTTypeSize64IconFile + LoveDocument + UTTypeTagSpecification + + com.apple.ostype + LOVE + public.filename-extension + + love + + public.mime-type + application/x-love-game + + + + + diff --git a/jni/love/platform/xcode/ios/lovedocument.icns b/jni/love/platform/xcode/ios/lovedocument.icns new file mode 100644 index 0000000000000000000000000000000000000000..1dede26b898ad09359a7db1ea0a1ba5aa52c7eea GIT binary patch literal 133318 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

CiXZqQ+esXnjCC5~S(5HN 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 + + + + diff --git a/jni/love/platform/xcode/love.xcodeproj/TemplateIcon.icns b/jni/love/platform/xcode/love.xcodeproj/TemplateIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..62cb7015e09d6ea3e65d7f7949c4c07f9246a908 GIT binary patch literal 52318 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 WhsmLR^b3` + + + + diff --git a/jni/love/platform/xcode/macosx/liblove-macosx.plist b/jni/love/platform/xcode/macosx/liblove-macosx.plist new file mode 100644 index 00000000..b5aedb33 --- /dev/null +++ b/jni/love/platform/xcode/macosx/liblove-macosx.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + LÖVE + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.10.1 + CFBundleSignature + LoVe + NSPrincipalClass + + + diff --git a/jni/love/platform/xcode/macosx/love-macosx.plist b/jni/love/platform/xcode/macosx/love-macosx.plist new file mode 100644 index 00000000..8cf99c4a --- /dev/null +++ b/jni/love/platform/xcode/macosx/love-macosx.plist @@ -0,0 +1,106 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + love + + CFBundleTypeIconFile + GameIcon + CFBundleTypeName + LÖVE Project + CFBundleTypeRole + Viewer + LSHandlerRank + Owner + LSItemContentTypes + + org.love2d.love-game + + LSTypeIsPackage + 1 + + + CFBundleTypeName + Folder + CFBundleTypeOSTypes + + fold + + CFBundleTypeRole + Viewer + LSHandlerRank + None + + + CFBundleTypeIconFile + Document + CFBundleTypeName + Document + CFBundleTypeOSTypes + + **** + + CFBundleTypeRole + Editor + + + CFBundleExecutable + love + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + LÖVE + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.10.2 + CFBundleSignature + LoVe + LSApplicationCategoryType + public.app-category.games + NSHighResolutionCapable + + NSHumanReadableCopyright + © 2006-2016 LÖVE Development Team + NSPrincipalClass + NSApplication + UTExportedTypeDeclarations + + + UTTypeConformsTo + + com.pkware.zip-archive + com.apple.package + + UTTypeDescription + LÖVE Project + UTTypeIconFile + GameIcon + UTTypeIdentifier + org.love2d.love-game + UTTypeReferenceURL + http://love2d.org/wiki/Game_Distribution + UTTypeTagSpecification + + com.apple.ostype + LOVE + public.filename-extension + + love + + public.mime-type + application/x-love-game + + + + + diff --git a/jni/love/src/common/Matrix.cpp b/jni/love/src/common/Matrix.cpp index 14cacba6..67e71105 100644 --- a/jni/love/src/common/Matrix.cpp +++ b/jni/love/src/common/Matrix.cpp @@ -36,6 +36,11 @@ Matrix4::Matrix4() { setIdentity(); } + +Matrix4::Matrix4(float t00, float t10, float t01, float t11, float x, float y) +{ + setRawTransformation(t00, t10, t01, t11, x, y); +} Matrix4::Matrix4(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { @@ -129,6 +134,18 @@ void Matrix4::setShear(float kx, float ky) e[1] = ky; e[4] = kx; } + +void Matrix4::setRawTransformation(float t00, float t10, float t01, float t11, float x, float y) +{ + memset(e, 0, sizeof(float)*16); // zero out matrix + e[10] = e[15] = 1.0f; + e[0] = t00; + e[1] = t10; + e[4] = t01; + e[5] = t11; + e[12] = x; + e[13] = y; +} void Matrix4::setTransformation(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { diff --git a/jni/love/src/common/Matrix.h b/jni/love/src/common/Matrix.h index 406d4932..c1b62146 100644 --- a/jni/love/src/common/Matrix.h +++ b/jni/love/src/common/Matrix.h @@ -40,6 +40,11 @@ public: * Creates a new identity matrix. **/ Matrix4(); + + /** + * Creates a new matrix with the transform values set. + **/ + Matrix4(float t00, float t10, float t01, float t11, float x, float y); /** * Creates a new matrix set to a transformation. @@ -101,6 +106,21 @@ public: * @param ky Shear along y-axis. **/ void setShear(float kx, float ky); + + /** + * Sets a transformation's values directly. Useful if you want to modify them inplace, + * or if you want to create a transformation that's not buildable with setTransformation() + * i.e. the inverse of setTransformation() is not easily built with another call + * to setTransformation() with tweaked values. + * + * @param t00 The sx*cos(angle) component of the transformation. + * @param t10 The sx*sin(angle) component of the transformation. + * @param t01 The sy*(-sin(angle)) component of the transformation. + * @param t11 The sy*cos(angle) component of the transformation. + * @param x The x translation component of the transformation. + * @param y The y translation component of the transformation. + **/ + void setRawTransformation(float t00, float t10, float t01, float t11, float x, float y); /** * Creates a transformation with a certain position, orientation, scale diff --git a/jni/love/src/common/Memoizer.cpp b/jni/love/src/common/Memoizer.cpp index 88ad3a00..6dd2d4e7 100644 --- a/jni/love/src/common/Memoizer.cpp +++ b/jni/love/src/common/Memoizer.cpp @@ -19,12 +19,13 @@ **/ #include "Memoizer.h" -#include + +#include namespace love { -std::map Memoizer::objectMap; +static std::unordered_map objectMap; void Memoizer::add(void *key, void *val) { diff --git a/jni/love/src/common/Memoizer.h b/jni/love/src/common/Memoizer.h index e972ae62..db6fadb6 100644 --- a/jni/love/src/common/Memoizer.h +++ b/jni/love/src/common/Memoizer.h @@ -21,8 +21,6 @@ #ifndef LOVE_MEMOIZER_H #define LOVE_MEMOIZER_H -#include - namespace love { @@ -31,14 +29,9 @@ class Memoizer public: static void add(void *key, void *val); - static void remove(void *key); - static void *find(void *key); -private: - - static std::map objectMap; }; // Memoizer } // love diff --git a/jni/love/src/common/Object.h b/jni/love/src/common/Object.h index 78a84484..70562329 100644 --- a/jni/love/src/common/Object.h +++ b/jni/love/src/common/Object.h @@ -59,14 +59,14 @@ public: * Retains the Object, i.e. increases the * reference count by one. **/ - virtual void retain(); + void retain(); /** * Releases one reference to the Object, i.e. decrements the * reference count by one, and potentially deletes the Object * if there are no more references. **/ - virtual void release(); + void release(); private: @@ -75,32 +75,41 @@ private: }; // Object -/** - * Partial re-implementation + specialization of std::shared_ptr. We can't - * use C++11's stdlib yet... - **/ + +enum class Acquire +{ + RETAIN, + NORETAIN, +}; + template class StrongRef { public: StrongRef() - : object(nullptr) + : object(nullptr) { } - StrongRef(T *obj) - : object(obj) + StrongRef(T *obj, Acquire acquire = Acquire::RETAIN) + : object(obj) { - if (object) object->retain(); + if (object && acquire == Acquire::RETAIN) object->retain(); } StrongRef(const StrongRef &other) - : object(other.get()) + : object(other.get()) { if (object) object->retain(); } + StrongRef(StrongRef &&other) + : object(other.object) + { + other.object = nullptr; + } + ~StrongRef() { if (object) object->release(); @@ -117,7 +126,7 @@ public: return object; } - operator bool() const + explicit operator bool() const { return object != nullptr; } @@ -127,9 +136,9 @@ public: return object; } - void set(T *obj) + void set(T *obj, Acquire acquire = Acquire::RETAIN) { - if (obj) obj->retain(); + if (obj && acquire == Acquire::RETAIN) obj->retain(); if (object) object->release(); object = obj; } diff --git a/jni/love/src/common/Variant.cpp b/jni/love/src/common/Variant.cpp index 32e9ba5e..8fd893f3 100644 --- a/jni/love/src/common/Variant.cpp +++ b/jni/love/src/common/Variant.cpp @@ -26,35 +26,21 @@ namespace love static love::Type extractudatatype(lua_State *L, int idx) { - Type t = INVALID_ID; - if (!lua_isuserdata(L, idx)) - return t; - if (luaL_getmetafield(L, idx, "type") == 0) - return t; - lua_pushvalue(L, idx); - int result = lua_pcall(L, 1, 1, 0); - if (result == 0) - getTypeName(lua_tostring(L, -1), t); - if (result == 0 || result == LUA_ERRRUN) - lua_pop(L, 1); - return t; -} + Proxy *u = (Proxy *)lua_touserdata(L, idx); -static inline void delete_table(std::vector > *table) -{ - while (!table->empty()) - { - std::pair &kv = table->back(); - kv.first->release(); - kv.second->release(); - table->pop_back(); - } - delete table; + if (u == nullptr || u->type <= INVALID_ID || u->type >= TYPE_MAX_ENUM) + return INVALID_ID; + + // We could get rid of the dynamic_cast for more performance, but it would + // be less safe... + if (dynamic_cast(u->object) != nullptr) + return u->type; + + return INVALID_ID; } Variant::Variant() : type(NIL) - , data() { } @@ -71,19 +57,18 @@ Variant::Variant(double number) } Variant::Variant(const char *string, size_t len) - : type(STRING) { - char *buf = new char[len+1]; - memset(buf, 0, len+1); - memcpy(buf, string, len); - data.string.str = buf; - data.string.len = len; -} - -Variant::Variant(char c) - : type(CHARACTER) -{ - data.character = c; + if (len <= MAX_SMALL_STRING_LENGTH) + { + type = SMALLSTRING; + memcpy(data.smallstring.str, string, len); + data.smallstring.len = (uint8) len; + } + else + { + type = STRING; + data.string = new SharedString(string, len); + } } Variant::Variant(void *userdata) @@ -107,10 +92,31 @@ Variant::Variant(love::Type udatatype, void *userdata) } // Variant gets ownership of the vector. -Variant::Variant(std::vector > *table) +Variant::Variant(std::vector> *table) : type(TABLE) { - data.table = table; + data.table = new SharedTable(table); +} + +Variant::Variant(const Variant &v) + : type(v.type) + , udatatype(v.udatatype) + , data(v.data) +{ + if (type == STRING) + data.string->retain(); + else if (type == FUSERDATA) + ((love::Object *) data.userdata)->retain(); + else if (type == TABLE) + data.table->retain(); +} + +Variant::Variant(Variant &&v) + : type(std::move(v.type)) + , udatatype(std::move(v.udatatype)) + , data(std::move(v.data)) +{ + v.type = NIL; } Variant::~Variant() @@ -118,102 +124,118 @@ Variant::~Variant() switch (type) { case STRING: - delete[] data.string.str; + data.string->release(); break; case FUSERDATA: ((love::Object *) data.userdata)->release(); break; case TABLE: - delete_table(data.table); + data.table->release(); + break; default: break; } } -Variant *Variant::fromLua(lua_State *L, int n, bool allowTables) +Variant &Variant::operator = (const Variant &v) +{ + if (v.type == STRING) + v.data.string->retain(); + else if (v.type == FUSERDATA) + ((love::Object *) v.data.userdata)->retain(); + else if (v.type == TABLE) + v.data.table->retain(); + + if (type == STRING) + data.string->release(); + else if (type == FUSERDATA) + ((love::Object *) v.data.userdata)->release(); + else if (type == TABLE) + data.table->release(); + + type = v.type; + data = v.data; + udatatype = v.udatatype; + + return *this; +} + +Variant Variant::fromLua(lua_State *L, int n, bool allowTables) { - Variant *v = nullptr; size_t len; const char *str; + if (n < 0) // Fix the stack position, we might modify it later n += lua_gettop(L) + 1; switch (lua_type(L, n)) { case LUA_TBOOLEAN: - v = new Variant(luax_toboolean(L, n)); - break; + return Variant(luax_toboolean(L, n)); case LUA_TNUMBER: - v = new Variant(lua_tonumber(L, n)); - break; + return Variant(lua_tonumber(L, n)); case LUA_TSTRING: str = lua_tolstring(L, n, &len); - v = new Variant(str, len); - break; + return Variant(str, len); case LUA_TLIGHTUSERDATA: - v = new Variant(lua_touserdata(L, n)); - break; + return Variant(lua_touserdata(L, n)); case LUA_TUSERDATA: - v = new Variant(extractudatatype(L, n), lua_touserdata(L, n)); - break; + return Variant(extractudatatype(L, n), lua_touserdata(L, n)); case LUA_TNIL: - v = new Variant(); - break; + return Variant(); case LUA_TTABLE: if (allowTables) { bool success = true; - std::vector> *table = new std::vector>(); + std::vector> *table = new std::vector>(); + + size_t len = luax_objlen(L, -1); + if (len > 0) + table->reserve(len); + lua_pushnil(L); + while (lua_next(L, n)) { - Variant *key = fromLua(L, -2, false); - if (!key) - { - success = false; - lua_pop(L, 2); - break; - } - - Variant *value = fromLua(L, -1, false); - if (!value) - { - delete key; - success = false; - lua_pop(L, 2); - break; - } - - table->push_back(std::make_pair(key, value)); - + table->emplace_back(fromLua(L, -2), fromLua(L, -1)); lua_pop(L, 1); + + const auto &p = table->back(); + if (p.first.getType() == UNKNOWN || p.second.getType() == UNKNOWN) + { + success = false; + break; + } } if (success) - v = new Variant(table); + return Variant(table); else - delete_table(table); + delete table; } break; } + + Variant v; + v.type = UNKNOWN; return v; } -void Variant::toLua(lua_State *L) +void Variant::toLua(lua_State *L) const { switch (type) { case BOOLEAN: lua_pushboolean(L, data.boolean); break; - case CHARACTER: - lua_pushlstring(L, &data.character, 1); - break; case NUMBER: lua_pushnumber(L, data.number); break; case STRING: - lua_pushlstring(L, data.string.str, data.string.len); + lua_pushlstring(L, data.string->str, data.string->len); + break; + case SMALLSTRING: + lua_pushlstring(L, data.smallstring.str, data.smallstring.len); break; case LUSERDATA: lua_pushlightuserdata(L, data.userdata); @@ -228,15 +250,22 @@ void Variant::toLua(lua_State *L) // I can do (at the moment). break; case TABLE: - lua_createtable(L, 0, (int) data.table->size()); - for (size_t i = 0; i < data.table->size(); ++i) + { + std::vector> *table = data.table->table; + int tsize = (int) table->size(); + + lua_createtable(L, 0, tsize); + + for (int i = 0; i < tsize; ++i) { - std::pair &kv = data.table->at(i); - kv.first->toLua(L); - kv.second->toLua(L); + std::pair &kv = (*table)[i]; + kv.first.toLua(L); + kv.second.toLua(L); lua_settable(L, -3); } + break; + } case NIL: default: lua_pushnil(L); diff --git a/jni/love/src/common/Variant.h b/jni/love/src/common/Variant.h index ce7dad08..87e5d357 100644 --- a/jni/love/src/common/Variant.h +++ b/jni/love/src/common/Variant.h @@ -23,60 +23,100 @@ #include "common/runtime.h" #include "common/Object.h" +#include "common/int.h" #include #include -#include namespace love { -class Variant : public love::Object +class Variant { public: - Variant(); - Variant(bool boolean); - Variant(double number); - Variant(const char *string, size_t len); - Variant(char c); - Variant(void *userdata); - Variant(love::Type udatatype, void *userdata); - Variant(std::vector > *table); - virtual ~Variant(); - - static Variant *fromLua(lua_State *L, int n, bool allowTables = true); - void toLua(lua_State *L); - enum Type { UNKNOWN = 0, BOOLEAN, NUMBER, - CHARACTER, STRING, + SMALLSTRING, LUSERDATA, FUSERDATA, NIL, TABLE - } type; - union - { - bool boolean; - char character; - double number; - struct - { - const char *str; - size_t len; - } string; - void *userdata; - std::vector> *table; - } data; + }; + + Variant(); + Variant(bool boolean); + Variant(double number); + Variant(const char *string, size_t len); + Variant(void *userdata); + Variant(love::Type udatatype, void *userdata); + Variant(std::vector> *table); + Variant(const Variant &v); + Variant(Variant &&v); + ~Variant(); + + Variant &operator = (const Variant &v); + + Type getType() const { return type; } + + static Variant fromLua(lua_State *L, int n, bool allowTables = true); + void toLua(lua_State *L) const; private: + + class SharedString : public love::Object + { + public: + + SharedString(const char *string, size_t len) + : len(len) + { + str = new char[len+1]; + memcpy(str, string, len); + } + virtual ~SharedString() { delete[] str; } + + char *str; + size_t len; + }; + + class SharedTable : public love::Object + { + public: + + SharedTable(std::vector> *table) + : table(table) + { + } + + virtual ~SharedTable() { delete table; } + + std::vector> *table; + }; + + static const int MAX_SMALL_STRING_LENGTH = 15; + + Type type; love::Type udatatype; + union Data + { + bool boolean; + double number; + SharedString *string; + void *userdata; + SharedTable *table; + struct + { + char str[MAX_SMALL_STRING_LENGTH]; + uint8 len; + } smallstring; + } data; + }; // Variant } // love diff --git a/jni/love/src/common/b64.cpp b/jni/love/src/common/b64.cpp index aa2f6f5d..bc3bd6f6 100644 --- a/jni/love/src/common/b64.cpp +++ b/jni/love/src/common/b64.cpp @@ -34,9 +34,11 @@ static void b64_decode_block(char in[4], char out[3]) char *b64_decode(const char *src, int slen, int &size) { - size = (slen / 4) * 3; + // Actual output may be smaller due to padding and/or whitespace in the + // base64-encoded string. + int max_size = (slen / 4) * 3; - char *dst = new char[size]; + char *dst = new char[max_size]; char *d = dst; char in[4] = {0}, out[3], v; @@ -70,10 +72,12 @@ char *b64_decode(const char *src, int slen, int &size) { b64_decode_block(in, out); for (i = 0; i < len - 1; i++) - *(d++) = out[i]; + *(d++) = out[i]; } } + size = int(d - dst); + return dst; } diff --git a/jni/love/src/common/config.h b/jni/love/src/common/config.h index 61d08cf7..8bb43bab 100644 --- a/jni/love/src/common/config.h +++ b/jni/love/src/common/config.h @@ -24,12 +24,21 @@ // Platform stuff. #if defined(WIN32) || defined(_WIN32) # define LOVE_WINDOWS 1 + // If _USING_V110_SDK71_ is defined it means we are using the xp toolset. +# if defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_ +# include +# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +# define LOVE_WINDOWS_UWP 1 +# define LOVE_NO_MODPLUG 1 +# define LOVE_NOMPG123 1 +# endif +# endif #endif #if defined(linux) || defined(__linux) || defined(__linux__) -# define LOVE_LINUX 1 +# define LOVE_LINUX 1 #endif #if defined(__ANDROID__) -# define LOVE_ANDROID 1 +# define LOVE_ANDROID 1 #endif #if defined(__APPLE__) # include @@ -76,7 +85,9 @@ #endif #if defined(LOVE_WINDOWS) +#ifndef LOVE_WINDOWS_UWP # define LOVE_LEGENDARY_CONSOLE_IO_HACK +#endif // LOVE_WINDOWS_UWP # define NOMINMAX #endif @@ -148,7 +159,7 @@ #endif // Check we have a sane configuration -#if !defined(LOVE_WINDOWS) && !defined(LOVE_LINUX) && !defined(LOVE_IOS) && !defined(LOVE_MACOSX) +#if !defined(LOVE_WINDOWS) && !defined(LOVE_LINUX) && !defined(LOVE_IOS) && !defined(LOVE_MACOSX) && !defined(LOVE_ANDROID) # error Could not detect target platform #endif #if !defined(LOVE_LITTLE_ENDIAN) && !defined(LOVE_BIG_ENDIAN) diff --git a/jni/love/src/common/delay.cpp b/jni/love/src/common/delay.cpp index 7677d93e..9208f843 100644 --- a/jni/love/src/common/delay.cpp +++ b/jni/love/src/common/delay.cpp @@ -25,7 +25,7 @@ namespace love { -void delay(unsigned int ms) +void sleep(unsigned int ms) { SDL_Delay(ms); } diff --git a/jni/love/src/common/delay.h b/jni/love/src/common/delay.h index 619e14dc..566139ca 100644 --- a/jni/love/src/common/delay.h +++ b/jni/love/src/common/delay.h @@ -24,7 +24,7 @@ namespace love { -void delay(unsigned int ms); +void sleep(unsigned int ms); } // namespace love diff --git a/jni/love/src/common/macosx.mm b/jni/love/src/common/macosx.mm index b6e3cad5..b9055faf 100644 --- a/jni/love/src/common/macosx.mm +++ b/jni/love/src/common/macosx.mm @@ -25,7 +25,11 @@ #import #import -#include +#ifdef LOVE_MACOSX_SDL_DIRECT_INCLUDE +# include +#else +# include +#endif namespace love { diff --git a/jni/love/src/common/math.h b/jni/love/src/common/math.h index f5a794e7..0a77ee3b 100644 --- a/jni/love/src/common/math.h +++ b/jni/love/src/common/math.h @@ -68,15 +68,7 @@ struct Vertex unsigned char r, g, b, a; }; -struct Triangle -{ - Triangle(const Vertex &x, const Vertex &y, const Vertex &z) - : a(x), b(y), c(z) - {} - Vertex a, b, c; -}; - -inline int next_p2(int x) +inline int nextP2(int x) { x += (x == 0); x--; @@ -84,9 +76,9 @@ inline int next_p2(int x) return ++x; } -inline float next_p2(float x) +inline float nextP2(float x) { - return static_cast(next_p2(static_cast(x))); + return (float) nextP2((int) x); } } // love diff --git a/jni/love/src/common/runtime.h b/jni/love/src/common/runtime.h index 08020d7c..9072c99d 100644 --- a/jni/love/src/common/runtime.h +++ b/jni/love/src/common/runtime.h @@ -445,7 +445,7 @@ T *luax_checktype(lua_State *L, int idx, love::Type type) Proxy *u = (Proxy *)lua_touserdata(L, idx); - if (!typeFlags[u->type][type]) + if (u->type <= INVALID_ID || u->type >= TYPE_MAX_ENUM || !typeFlags[u->type][type]) { const char *name = "Invalid"; getTypeName(type, name); @@ -469,7 +469,7 @@ T *luax_getmodule(lua_State *L, love::Type type) Proxy *u = (Proxy *)lua_touserdata(L, -1); - if (!typeFlags[u->type][type]) + if (u->type <= INVALID_ID || u->type >= TYPE_MAX_ENUM || !typeFlags[u->type][type]) luaL_error(L, "Incorrect module %s", name); lua_pop(L, 2); diff --git a/jni/love/src/common/version.h b/jni/love/src/common/version.h index be23de43..783445e4 100644 --- a/jni/love/src/common/version.h +++ b/jni/love/src/common/version.h @@ -25,12 +25,12 @@ namespace love { // Version stuff. -#define LOVE_VERSION_STRING "0.10.1" +#define LOVE_VERSION_STRING "0.10.2" static const int VERSION_MAJOR = 0; static const int VERSION_MINOR = 10; -static const int VERSION_REV = 1; +static const int VERSION_REV = 2; static const char *VERSION = LOVE_VERSION_STRING; -static const char *VERSION_COMPATIBILITY[] = { VERSION, "0.10.0", 0 }; +static const char *VERSION_COMPATIBILITY[] = { VERSION, "0.10.1", "0.10.0", 0 }; static const char *VERSION_CODENAME = "Super Toast"; } // love diff --git a/jni/love/src/libraries/enet/libenet/ChangeLog b/jni/love/src/libraries/enet/libenet/ChangeLog index 5277b2c9..663c7b73 100644 --- a/jni/love/src/libraries/enet/libenet/ChangeLog +++ b/jni/love/src/libraries/enet/libenet/ChangeLog @@ -1,3 +1,17 @@ +* use getaddrinfo and getnameinfo where available + +ENet 1.3.13 (April 30, 2015): + +* miscellaneous bug fixes +* added premake and cmake support +* miscellaneous documentation cleanups + +ENet 1.3.12 (April 24, 2014): + +* added maximumPacketSize and maximumWaitingData fields to ENetHost to limit the amount of +data waiting to be delivered on a peer (beware that the default maximumPacketSize is +32MB and should be set higher if desired as should maximumWaitingData) + ENet 1.3.11 (December 26, 2013): * allow an ENetHost to connect to itself diff --git a/jni/love/src/libraries/enet/libenet/LICENSE b/jni/love/src/libraries/enet/libenet/LICENSE index 87961d3b..39af84a8 100644 --- a/jni/love/src/libraries/enet/libenet/LICENSE +++ b/jni/love/src/libraries/enet/libenet/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2002-2013 Lee Salzman +Copyright (c) 2002-2016 Lee Salzman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/jni/love/src/libraries/enet/libenet/host.c b/jni/love/src/libraries/enet/libenet/host.c index fc57f741..3be6c092 100644 --- a/jni/love/src/libraries/enet/libenet/host.c +++ b/jni/love/src/libraries/enet/libenet/host.c @@ -100,6 +100,8 @@ enet_host_create (const ENetAddress * address, size_t peerCount, size_t channelL host -> connectedPeers = 0; host -> bandwidthLimitedPeers = 0; host -> duplicatePeers = ENET_PROTOCOL_MAXIMUM_PEER_ID; + host -> maximumPacketSize = ENET_HOST_DEFAULT_MAXIMUM_PACKET_SIZE; + host -> maximumWaitingData = ENET_HOST_DEFAULT_MAXIMUM_WAITING_DATA; host -> compressor.context = NULL; host -> compressor.compress = NULL; diff --git a/jni/love/src/libraries/enet/libenet/include/enet/enet.h b/jni/love/src/libraries/enet/libenet/include/enet/enet.h index d5d5b8fe..9389400e 100644 --- a/jni/love/src/libraries/enet/libenet/include/enet/enet.h +++ b/jni/love/src/libraries/enet/libenet/include/enet/enet.h @@ -25,7 +25,7 @@ extern "C" #define ENET_VERSION_MAJOR 1 #define ENET_VERSION_MINOR 3 -#define ENET_VERSION_PATCH 11 +#define ENET_VERSION_PATCH 13 #define ENET_VERSION_CREATE(major, minor, patch) (((major)<<16) | ((minor)<<8) | (patch)) #define ENET_VERSION_GET_MAJOR(version) (((version)>>16)&0xFF) #define ENET_VERSION_GET_MINOR(version) (((version)>>8)&0xFF) @@ -138,7 +138,11 @@ typedef void (ENET_CALLBACK * ENetPacketFreeCallback) (struct _ENetPacket *); * (not supported for reliable packets) * * ENET_PACKET_FLAG_NO_ALLOCATE - packet will not allocate data, and user must supply it instead - + * + * ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT - packet will be fragmented using unreliable + * (instead of reliable) sends if it exceeds the MTU + * + * ENET_PACKET_FLAG_SENT - whether the packet has been sent from all queues it has been entered into @sa ENetPacketFlag */ typedef struct _ENetPacket @@ -209,6 +213,8 @@ enum ENET_HOST_SEND_BUFFER_SIZE = 256 * 1024, ENET_HOST_BANDWIDTH_THROTTLE_INTERVAL = 1000, ENET_HOST_DEFAULT_MTU = 1400, + ENET_HOST_DEFAULT_MAXIMUM_PACKET_SIZE = 32 * 1024 * 1024, + ENET_HOST_DEFAULT_MAXIMUM_WAITING_DATA = 32 * 1024 * 1024, ENET_PEER_DEFAULT_ROUND_TRIP_TIME = 500, ENET_PEER_DEFAULT_PACKET_THROTTLE = 32, @@ -310,6 +316,7 @@ typedef struct _ENetPeer enet_uint16 outgoingUnsequencedGroup; enet_uint32 unsequencedWindow [ENET_PEER_UNSEQUENCED_WINDOW_SIZE / 32]; enet_uint32 eventData; + size_t totalWaitingData; } ENetPeer; /** An ENet packet compressor for compressing UDP packets before socket sends or receives. @@ -384,6 +391,8 @@ typedef struct _ENetHost size_t connectedPeers; size_t bandwidthLimitedPeers; size_t duplicatePeers; /**< optional number of allowed peers from duplicate IPs, defaults to ENET_PROTOCOL_MAXIMUM_PEER_ID */ + size_t maximumPacketSize; /**< the maximum allowable packet size that may be sent or received on a peer */ + size_t maximumWaitingData; /**< the maximum aggregate amount of buffer space a peer may use waiting for packets to be delivered */ } ENetHost; /** @@ -446,7 +455,7 @@ ENET_API int enet_initialize (void); Initializes ENet globally and supplies user-overridden callbacks. Must be called prior to using any functions in ENet. Do not use enet_initialize() if you use this variant. Make sure the ENetCallbacks structure is zeroed out so that any additional callbacks added in future versions will be properly ignored. @param version the constant ENET_VERSION should be supplied so ENet knows which version of ENetCallbacks struct to use - @param inits user-overriden callbacks where any NULL callbacks will use ENet's defaults + @param inits user-overridden callbacks where any NULL callbacks will use ENet's defaults @returns 0 on success, < 0 on failure */ ENET_API int enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks * inits); @@ -510,7 +519,7 @@ ENET_API int enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSock */ ENET_API int enet_address_set_host (ENetAddress * address, const char * hostName); -/** Gives the printable form of the ip address specified in the address parameter. +/** Gives the printable form of the IP address specified in the address parameter. @param address address printed @param hostName destination for name, must not be NULL @param nameLength maximum length of hostName. @@ -565,7 +574,7 @@ extern int enet_peer_throttle (ENetPeer *, enet_uint32); extern void enet_peer_reset_queues (ENetPeer *); extern void enet_peer_setup_outgoing_command (ENetPeer *, ENetOutgoingCommand *); extern ENetOutgoingCommand * enet_peer_queue_outgoing_command (ENetPeer *, const ENetProtocol *, ENetPacket *, enet_uint32, enet_uint16); -extern ENetIncomingCommand * enet_peer_queue_incoming_command (ENetPeer *, const ENetProtocol *, ENetPacket *, enet_uint32); +extern ENetIncomingCommand * enet_peer_queue_incoming_command (ENetPeer *, const ENetProtocol *, const void *, size_t, enet_uint32, enet_uint32); extern ENetAcknowledgement * enet_peer_queue_acknowledgement (ENetPeer *, const ENetProtocol *, enet_uint16); extern void enet_peer_dispatch_incoming_unreliable_commands (ENetPeer *, ENetChannel *); extern void enet_peer_dispatch_incoming_reliable_commands (ENetPeer *, ENetChannel *); diff --git a/jni/love/src/libraries/enet/libenet/include/enet/protocol.h b/jni/love/src/libraries/enet/libenet/include/enet/protocol.h index a7c73c69..f8c73d8a 100644 --- a/jni/love/src/libraries/enet/libenet/include/enet/protocol.h +++ b/jni/love/src/libraries/enet/libenet/include/enet/protocol.h @@ -17,7 +17,6 @@ enum ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT = 1, ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT = 255, ENET_PROTOCOL_MAXIMUM_PEER_ID = 0xFFF, - ENET_PROTOCOL_MAXIMUM_PACKET_SIZE = 1024 * 1024 * 1024, ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT = 1024 * 1024 }; diff --git a/jni/love/src/libraries/enet/libenet/include/enet/win32.h b/jni/love/src/libraries/enet/libenet/include/enet/win32.h index d8968ee5..e73ca9d0 100644 --- a/jni/love/src/libraries/enet/libenet/include/enet/win32.h +++ b/jni/love/src/libraries/enet/libenet/include/enet/win32.h @@ -7,7 +7,6 @@ #ifdef _MSC_VER #ifdef ENET_BUILDING_LIB -#pragma warning (disable: 4996) // 'strncpy' was declared deprecated #pragma warning (disable: 4267) // size_t to int conversion #pragma warning (disable: 4244) // 64bit to 32bit int #pragma warning (disable: 4018) // signed/unsigned mismatch diff --git a/jni/love/src/libraries/enet/libenet/packet.c b/jni/love/src/libraries/enet/libenet/packet.c index 9a997be4..5fa78b28 100644 --- a/jni/love/src/libraries/enet/libenet/packet.c +++ b/jni/love/src/libraries/enet/libenet/packet.c @@ -11,7 +11,7 @@ */ /** Creates a packet that may be sent to a peer. - @param dataContents initial contents of the packet's data; the packet's data will remain uninitialized if dataContents is NULL. + @param data initial contents of the packet's data; the packet's data will remain uninitialized if data is NULL. @param dataLength size of the data allocated for this packet @param flags flags for this packet as described for the ENetPacket structure. @returns the packet on success, NULL on failure diff --git a/jni/love/src/libraries/enet/libenet/peer.c b/jni/love/src/libraries/enet/libenet/peer.c index 318f2c25..e2d0872b 100644 --- a/jni/love/src/libraries/enet/libenet/peer.c +++ b/jni/love/src/libraries/enet/libenet/peer.c @@ -105,7 +105,7 @@ enet_peer_send (ENetPeer * peer, enet_uint8 channelID, ENetPacket * packet) if (peer -> state != ENET_PEER_STATE_CONNECTED || channelID >= peer -> channelCount || - packet -> dataLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE) + packet -> dataLength > peer -> host -> maximumPacketSize) return -1; fragmentLength = peer -> mtu - sizeof (ENetProtocolHeader) - sizeof (ENetProtocolSendFragment); @@ -241,6 +241,8 @@ enet_peer_receive (ENetPeer * peer, enet_uint8 * channelID) enet_free (incomingCommand); + peer -> totalWaitingData -= packet -> dataLength; + return packet; } @@ -415,6 +417,7 @@ enet_peer_reset (ENetPeer * peer) peer -> incomingUnsequencedGroup = 0; peer -> outgoingUnsequencedGroup = 0; peer -> eventData = 0; + peer -> totalWaitingData = 0; memset (peer -> unsequencedWindow, 0, sizeof (peer -> unsequencedWindow)); @@ -424,7 +427,7 @@ enet_peer_reset (ENetPeer * peer) /** Sends a ping request to a peer. @param peer destination for the ping request @remarks ping requests factor into the mean round trip time as designated by the - roundTripTime field in the ENetPeer structure. Enet automatically pings all connected + roundTripTime field in the ENetPeer structure. ENet automatically pings all connected peers at regular intervals, however, this function may be called to ensure more frequent ping requests. */ @@ -486,7 +489,7 @@ enet_peer_timeout (ENetPeer * peer, enet_uint32 timeoutLimit, enet_uint32 timeou @param peer peer to disconnect @param data data describing the disconnection @remarks No ENET_EVENT_DISCONNECT event will be generated. The foreign peer is not - guarenteed to receive the disconnect notification, and is reset immediately upon + guaranteed to receive the disconnect notification, and is reset immediately upon return from this function. */ void @@ -818,7 +821,7 @@ enet_peer_dispatch_incoming_reliable_commands (ENetPeer * peer, ENetChannel * ch } ENetIncomingCommand * -enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, ENetPacket * packet, enet_uint32 fragmentCount) +enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, const void * data, size_t dataLength, enet_uint32 flags, enet_uint32 fragmentCount) { static ENetIncomingCommand dummyCommand; @@ -827,9 +830,10 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, enet_uint16 reliableWindow, currentWindow; ENetIncomingCommand * incomingCommand; ENetListIterator currentCommand; + ENetPacket * packet = NULL; if (peer -> state == ENET_PEER_STATE_DISCONNECT_LATER) - goto freePacket; + goto discardCommand; if ((command -> header.command & ENET_PROTOCOL_COMMAND_MASK) != ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED) { @@ -841,7 +845,7 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, reliableWindow += ENET_PEER_RELIABLE_WINDOWS; if (reliableWindow < currentWindow || reliableWindow >= currentWindow + ENET_PEER_FREE_RELIABLE_WINDOWS - 1) - goto freePacket; + goto discardCommand; } switch (command -> header.command & ENET_PROTOCOL_COMMAND_MASK) @@ -849,7 +853,7 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, case ENET_PROTOCOL_COMMAND_SEND_FRAGMENT: case ENET_PROTOCOL_COMMAND_SEND_RELIABLE: if (reliableSequenceNumber == channel -> incomingReliableSequenceNumber) - goto freePacket; + goto discardCommand; for (currentCommand = enet_list_previous (enet_list_end (& channel -> incomingReliableCommands)); currentCommand != enet_list_end (& channel -> incomingReliableCommands); @@ -871,7 +875,7 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, if (incomingCommand -> reliableSequenceNumber < reliableSequenceNumber) break; - goto freePacket; + goto discardCommand; } } break; @@ -882,7 +886,7 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, if (reliableSequenceNumber == channel -> incomingReliableSequenceNumber && unreliableSequenceNumber <= channel -> incomingUnreliableSequenceNumber) - goto freePacket; + goto discardCommand; for (currentCommand = enet_list_previous (enet_list_end (& channel -> incomingUnreliableCommands)); currentCommand != enet_list_end (& channel -> incomingUnreliableCommands); @@ -913,7 +917,7 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, if (incomingCommand -> unreliableSequenceNumber < unreliableSequenceNumber) break; - goto freePacket; + goto discardCommand; } } break; @@ -923,9 +927,16 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, break; default: - goto freePacket; + goto discardCommand; } + if (peer -> totalWaitingData >= peer -> host -> maximumWaitingData) + goto notifyError; + + packet = enet_packet_create (data, dataLength, flags); + if (packet == NULL) + goto notifyError; + incomingCommand = (ENetIncomingCommand *) enet_malloc (sizeof (ENetIncomingCommand)); if (incomingCommand == NULL) goto notifyError; @@ -952,7 +963,11 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, } if (packet != NULL) - ++ packet -> referenceCount; + { + ++ packet -> referenceCount; + + peer -> totalWaitingData += packet -> dataLength; + } enet_list_insert (enet_list_next (currentCommand), incomingCommand); @@ -970,7 +985,7 @@ enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, return incomingCommand; -freePacket: +discardCommand: if (fragmentCount > 0) goto notifyError; diff --git a/jni/love/src/libraries/enet/libenet/protocol.c b/jni/love/src/libraries/enet/libenet/protocol.c index b8d4863e..29d64873 100644 --- a/jni/love/src/libraries/enet/libenet/protocol.c +++ b/jni/love/src/libraries/enet/libenet/protocol.c @@ -424,7 +424,6 @@ enet_protocol_handle_connect (ENetHost * host, ENetProtocolHeader * header, ENet static int enet_protocol_handle_send_reliable (ENetHost * host, ENetPeer * peer, const ENetProtocol * command, enet_uint8 ** currentData) { - ENetPacket * packet; size_t dataLength; if (command -> header.channelID >= peer -> channelCount || @@ -433,16 +432,12 @@ enet_protocol_handle_send_reliable (ENetHost * host, ENetPeer * peer, const ENet dataLength = ENET_NET_TO_HOST_16 (command -> sendReliable.dataLength); * currentData += dataLength; - if (dataLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || + if (dataLength > host -> maximumPacketSize || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; - packet = enet_packet_create ((const enet_uint8 *) command + sizeof (ENetProtocolSendReliable), - dataLength, - ENET_PACKET_FLAG_RELIABLE); - if (packet == NULL || - enet_peer_queue_incoming_command (peer, command, packet, 0) == NULL) + if (enet_peer_queue_incoming_command (peer, command, (const enet_uint8 *) command + sizeof (ENetProtocolSendReliable), dataLength, ENET_PACKET_FLAG_RELIABLE, 0) == NULL) return -1; return 0; @@ -451,7 +446,6 @@ enet_protocol_handle_send_reliable (ENetHost * host, ENetPeer * peer, const ENet static int enet_protocol_handle_send_unsequenced (ENetHost * host, ENetPeer * peer, const ENetProtocol * command, enet_uint8 ** currentData) { - ENetPacket * packet; enet_uint32 unsequencedGroup, index; size_t dataLength; @@ -461,7 +455,7 @@ enet_protocol_handle_send_unsequenced (ENetHost * host, ENetPeer * peer, const E dataLength = ENET_NET_TO_HOST_16 (command -> sendUnsequenced.dataLength); * currentData += dataLength; - if (dataLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || + if (dataLength > host -> maximumPacketSize || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; @@ -487,11 +481,7 @@ enet_protocol_handle_send_unsequenced (ENetHost * host, ENetPeer * peer, const E if (peer -> unsequencedWindow [index / 32] & (1 << (index % 32))) return 0; - packet = enet_packet_create ((const enet_uint8 *) command + sizeof (ENetProtocolSendUnsequenced), - dataLength, - ENET_PACKET_FLAG_UNSEQUENCED); - if (packet == NULL || - enet_peer_queue_incoming_command (peer, command, packet, 0) == NULL) + if (enet_peer_queue_incoming_command (peer, command, (const enet_uint8 *) command + sizeof (ENetProtocolSendUnsequenced), dataLength, ENET_PACKET_FLAG_UNSEQUENCED, 0) == NULL) return -1; peer -> unsequencedWindow [index / 32] |= 1 << (index % 32); @@ -502,7 +492,6 @@ enet_protocol_handle_send_unsequenced (ENetHost * host, ENetPeer * peer, const E static int enet_protocol_handle_send_unreliable (ENetHost * host, ENetPeer * peer, const ENetProtocol * command, enet_uint8 ** currentData) { - ENetPacket * packet; size_t dataLength; if (command -> header.channelID >= peer -> channelCount || @@ -511,16 +500,12 @@ enet_protocol_handle_send_unreliable (ENetHost * host, ENetPeer * peer, const EN dataLength = ENET_NET_TO_HOST_16 (command -> sendUnreliable.dataLength); * currentData += dataLength; - if (dataLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || + if (dataLength > host -> maximumPacketSize || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; - packet = enet_packet_create ((const enet_uint8 *) command + sizeof (ENetProtocolSendUnreliable), - dataLength, - 0); - if (packet == NULL || - enet_peer_queue_incoming_command (peer, command, packet, 0) == NULL) + if (enet_peer_queue_incoming_command (peer, command, (const enet_uint8 *) command + sizeof (ENetProtocolSendUnreliable), dataLength, 0, 0) == NULL) return -1; return 0; @@ -546,7 +531,7 @@ enet_protocol_handle_send_fragment (ENetHost * host, ENetPeer * peer, const ENet fragmentLength = ENET_NET_TO_HOST_16 (command -> sendFragment.dataLength); * currentData += fragmentLength; - if (fragmentLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || + if (fragmentLength > host -> maximumPacketSize || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; @@ -569,7 +554,7 @@ enet_protocol_handle_send_fragment (ENetHost * host, ENetPeer * peer, const ENet if (fragmentCount > ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT || fragmentNumber >= fragmentCount || - totalLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || + totalLength > host -> maximumPacketSize || fragmentOffset >= totalLength || fragmentLength > totalLength - fragmentOffset) return -1; @@ -607,13 +592,10 @@ enet_protocol_handle_send_fragment (ENetHost * host, ENetPeer * peer, const ENet if (startCommand == NULL) { ENetProtocol hostCommand = * command; - ENetPacket * packet = enet_packet_create (NULL, totalLength, ENET_PACKET_FLAG_RELIABLE); - if (packet == NULL) - return -1; hostCommand.header.reliableSequenceNumber = startSequenceNumber; - startCommand = enet_peer_queue_incoming_command (peer, & hostCommand, packet, fragmentCount); + startCommand = enet_peer_queue_incoming_command (peer, & hostCommand, NULL, totalLength, ENET_PACKET_FLAG_RELIABLE, fragmentCount); if (startCommand == NULL) return -1; } @@ -659,7 +641,7 @@ enet_protocol_handle_send_unreliable_fragment (ENetHost * host, ENetPeer * peer, fragmentLength = ENET_NET_TO_HOST_16 (command -> sendFragment.dataLength); * currentData += fragmentLength; - if (fragmentLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || + if (fragmentLength > host -> maximumPacketSize || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; @@ -688,7 +670,7 @@ enet_protocol_handle_send_unreliable_fragment (ENetHost * host, ENetPeer * peer, if (fragmentCount > ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT || fragmentNumber >= fragmentCount || - totalLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || + totalLength > host -> maximumPacketSize || fragmentOffset >= totalLength || fragmentLength > totalLength - fragmentOffset) return -1; @@ -731,11 +713,7 @@ enet_protocol_handle_send_unreliable_fragment (ENetHost * host, ENetPeer * peer, if (startCommand == NULL) { - ENetPacket * packet = enet_packet_create (NULL, totalLength, ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT); - if (packet == NULL) - return -1; - - startCommand = enet_peer_queue_incoming_command (peer, command, packet, fragmentCount); + startCommand = enet_peer_queue_incoming_command (peer, command, NULL, totalLength, ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT, fragmentCount); if (startCommand == NULL) return -1; } @@ -786,6 +764,10 @@ enet_protocol_handle_bandwidth_limit (ENetHost * host, ENetPeer * peer, const EN if (peer -> incomingBandwidth == 0 && host -> outgoingBandwidth == 0) peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; + else + if (peer -> incomingBandwidth == 0 || host -> outgoingBandwidth == 0) + peer -> windowSize = (ENET_MAX (peer -> incomingBandwidth, host -> outgoingBandwidth) / + ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; else peer -> windowSize = (ENET_MIN (peer -> incomingBandwidth, host -> outgoingBandwidth) / ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; @@ -1213,7 +1195,9 @@ commandError: static int enet_protocol_receive_incoming_commands (ENetHost * host, ENetEvent * event) { - for (;;) + int packets; + + for (packets = 0; packets < 256; ++ packets) { int receivedLength; ENetBuffer buffer; @@ -1506,7 +1490,7 @@ enet_protocol_send_reliable_outgoing_commands (ENetHost * host, ENetPeer * peer) ! (outgoingCommand -> reliableSequenceNumber % ENET_PEER_RELIABLE_WINDOW_SIZE) && (channel -> reliableWindows [(reliableWindow + ENET_PEER_RELIABLE_WINDOWS - 1) % ENET_PEER_RELIABLE_WINDOWS] >= ENET_PEER_RELIABLE_WINDOW_SIZE || channel -> usedReliableWindows & ((((1 << ENET_PEER_FREE_RELIABLE_WINDOWS) - 1) << reliableWindow) | - (((1 << ENET_PEER_FREE_RELIABLE_WINDOWS) - 1) >> (ENET_PEER_RELIABLE_WINDOW_SIZE - reliableWindow))))) + (((1 << ENET_PEER_FREE_RELIABLE_WINDOWS) - 1) >> (ENET_PEER_RELIABLE_WINDOWS - reliableWindow))))) windowWrap = 1; if (windowWrap) { @@ -1904,6 +1888,9 @@ enet_host_service (ENetHost * host, ENetEvent * event, enet_uint32 timeout) } } + if (ENET_TIME_GREATER_EQUAL (host -> serviceTime, timeout)) + return 0; + do { host -> serviceTime = enet_time_get (); diff --git a/jni/love/src/libraries/enet/libenet/unix.c b/jni/love/src/libraries/enet/libenet/unix.c index 111d8e66..8cbeae5b 100644 --- a/jni/love/src/libraries/enet/libenet/unix.c +++ b/jni/love/src/libraries/enet/libenet/unix.c @@ -38,6 +38,12 @@ #ifndef HAS_SOCKLEN_T #define HAS_SOCKLEN_T 1 #endif +#ifndef HAS_GETADDRINFO +#define HAS_GETADDRINFO 1 +#endif +#ifndef HAS_GETNAMEINFO +#define HAS_GETNAMEINFO 1 +#endif #endif #ifdef HAS_FCNTL @@ -99,13 +105,39 @@ enet_time_set (enet_uint32 newTimeBase) int enet_address_set_host (ENetAddress * address, const char * name) { +#ifdef HAS_GETADDRINFO + struct addrinfo hints, * resultList = NULL, * result = NULL; + + memset (& hints, 0, sizeof (hints)); + hints.ai_family = AF_INET; + + if (getaddrinfo (name, NULL, NULL, & resultList) != 0) + return -1; + + for (result = resultList; result != NULL; result = result -> ai_next) + { + if (result -> ai_family == AF_INET && result -> ai_addr != NULL && result -> ai_addrlen >= sizeof (struct sockaddr_in)) + { + struct sockaddr_in * sin = (struct sockaddr_in *) result -> ai_addr; + + address -> host = sin -> sin_addr.s_addr; + + freeaddrinfo (resultList); + + return 0; + } + } + + if (resultList != NULL) + freeaddrinfo (resultList); +#else struct hostent * hostEntry = NULL; #ifdef HAS_GETHOSTBYNAME_R struct hostent hostData; char buffer [2048]; int errnum; -#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) gethostbyname_r (name, & hostData, buffer, sizeof (buffer), & hostEntry, & errnum); #else hostEntry = gethostbyname_r (name, & hostData, buffer, sizeof (buffer), & errnum); @@ -114,19 +146,20 @@ enet_address_set_host (ENetAddress * address, const char * name) hostEntry = gethostbyname (name); #endif - if (hostEntry == NULL || - hostEntry -> h_addrtype != AF_INET) + if (hostEntry != NULL && hostEntry -> h_addrtype == AF_INET) { -#ifdef HAS_INET_PTON - if (! inet_pton (AF_INET, name, & address -> host)) -#else - if (! inet_aton (name, (struct in_addr *) & address -> host)) -#endif - return -1; + address -> host = * (enet_uint32 *) hostEntry -> h_addr_list [0]; + return 0; } +#endif - address -> host = * (enet_uint32 *) hostEntry -> h_addr_list [0]; +#ifdef HAS_INET_PTON + if (! inet_pton (AF_INET, name, & address -> host)) +#else + if (! inet_aton (name, (struct in_addr *) & address -> host)) +#endif + return -1; return 0; } @@ -139,7 +172,12 @@ enet_address_get_host_ip (const ENetAddress * address, char * name, size_t nameL #else char * addr = inet_ntoa (* (struct in_addr *) & address -> host); if (addr != NULL) - strncpy (name, addr, nameLength); + { + size_t addrLen = strlen(addr); + if (addrLen >= nameLength) + return -1; + memcpy (name, addr, addrLen + 1); + } else #endif return -1; @@ -149,6 +187,26 @@ enet_address_get_host_ip (const ENetAddress * address, char * name, size_t nameL int enet_address_get_host (const ENetAddress * address, char * name, size_t nameLength) { +#ifdef HAS_GETNAMEINFO + struct sockaddr_in sin; + int err; + + memset (& sin, 0, sizeof (struct sockaddr_in)); + + sin.sin_family = AF_INET; + sin.sin_port = ENET_HOST_TO_NET_16 (address -> port); + sin.sin_addr.s_addr = address -> host; + + err = getnameinfo ((struct sockaddr *) & sin, sizeof (sin), name, nameLength, NULL, 0, NI_NAMEREQD); + if (! err) + { + if (name != NULL && nameLength > 0 && ! memchr (name, '\0', nameLength)) + return -1; + return 0; + } + if (err != EAI_NONAME) + return -1; +#else struct in_addr in; struct hostent * hostEntry = NULL; #ifdef HAS_GETHOSTBYADDR_R @@ -158,7 +216,7 @@ enet_address_get_host (const ENetAddress * address, char * name, size_t nameLeng in.s_addr = address -> host; -#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) gethostbyaddr_r ((char *) & in, sizeof (struct in_addr), AF_INET, & hostData, buffer, sizeof (buffer), & hostEntry, & errnum); #else hostEntry = gethostbyaddr_r ((char *) & in, sizeof (struct in_addr), AF_INET, & hostData, buffer, sizeof (buffer), & errnum); @@ -169,12 +227,17 @@ enet_address_get_host (const ENetAddress * address, char * name, size_t nameLeng hostEntry = gethostbyaddr ((char *) & in, sizeof (struct in_addr), AF_INET); #endif - if (hostEntry == NULL) - return enet_address_get_host_ip (address, name, nameLength); + if (hostEntry != NULL) + { + size_t hostLen = strlen (hostEntry -> h_name); + if (hostLen >= nameLength) + return -1; + memcpy (name, hostEntry -> h_name, hostLen + 1); + return 0; + } +#endif - strncpy (name, hostEntry -> h_name, nameLength); - - return 0; + return enet_address_get_host_ip (address, name, nameLength); } int @@ -237,7 +300,7 @@ enet_socket_set_option (ENetSocket socket, ENetSocketOption option, int value) { case ENET_SOCKOPT_NONBLOCK: #ifdef HAS_FCNTL - result = fcntl (socket, F_SETFL, O_NONBLOCK | fcntl (socket, F_GETFL)); + result = fcntl (socket, F_SETFL, (value ? O_NONBLOCK : 0) | (fcntl (socket, F_GETFL) & ~O_NONBLOCK)); #else result = ioctl (socket, FIONBIO, & value); #endif diff --git a/jni/love/src/libraries/enet/libenet/win32.c b/jni/love/src/libraries/enet/libenet/win32.c index c441841d..5cc16799 100644 --- a/jni/love/src/libraries/enet/libenet/win32.c +++ b/jni/love/src/libraries/enet/libenet/win32.c @@ -4,9 +4,10 @@ */ #ifdef _WIN32 -#include #define ENET_BUILDING_LIB 1 #include "enet/enet.h" +#include +#include static enet_uint32 timeBase = 0; @@ -85,7 +86,13 @@ enet_address_get_host_ip (const ENetAddress * address, char * name, size_t nameL char * addr = inet_ntoa (* (struct in_addr *) & address -> host); if (addr == NULL) return -1; - strncpy (name, addr, nameLength); + else + { + size_t addrLen = strlen(addr); + if (addrLen >= nameLength) + return -1; + memcpy (name, addr, addrLen + 1); + } return 0; } @@ -94,14 +101,19 @@ enet_address_get_host (const ENetAddress * address, char * name, size_t nameLeng { struct in_addr in; struct hostent * hostEntry; - + in.s_addr = address -> host; hostEntry = gethostbyaddr ((char *) & in, sizeof (struct in_addr), AF_INET); if (hostEntry == NULL) return enet_address_get_host_ip (address, name, nameLength); - - strncpy (name, hostEntry -> h_name, nameLength); + else + { + size_t hostLen = strlen (hostEntry -> h_name); + if (hostLen >= nameLength) + return -1; + memcpy (name, hostEntry -> h_name, hostLen + 1); + } return 0; } diff --git a/jni/love/src/libraries/stb/stb_image.h b/jni/love/src/libraries/stb/stb_image.h index a46521db..13ba6c75 100644 --- a/jni/love/src/libraries/stb/stb_image.h +++ b/jni/love/src/libraries/stb/stb_image.h @@ -1,4 +1,4 @@ -/* stb_image - v2.07 - public domain image loader - http://nothings.org/stb_image.h +/* stb_image - v2.12 - public domain image loader - http://nothings.org/stb_image.h no warranty implied; use at your own risk Do this: @@ -146,6 +146,14 @@ Latest revision history: + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA 2.07 (2015-09-13) partial animated GIF support limited 16-bit PSD support minor bugs, code cleanup, and compiler warnings @@ -164,59 +172,47 @@ STBI_MALLOC,STBI_REALLOC,STBI_FREE STBI_NO_*, STBI_ONLY_* GIF bugfix - 1.48 (2014-12-14) fix incorrectly-named assert() - 1.47 (2014-12-14) 1/2/4-bit PNG support (both grayscale and paletted) - optimize PNG - fix bug in interlaced PNG with user-specified channel count See end of file for full revision history. ============================ Contributors ========================= - Image formats Bug fixes & warning fixes - Sean Barrett (jpeg, png, bmp) Marc LeBlanc - Nicolas Schulz (hdr, psd) Christpher Lloyd - Jonathan Dummer (tga) Dave Moore - Jean-Marc Lienher (gif) Won Chun - Tom Seddon (pic) the Horde3D community - Thatcher Ulrich (psd) Janez Zemva - Ken Miller (pgm, ppm) Jonathan Blow - urraka@github (animated gif) Laurent Gomila - Aruelien Pocheville - Ryamond Barbiero - David Woo - Extensions, features Martin Golini - Jetro Lauha (stbi_info) Roy Eltham - Martin "SpartanJ" Golini (stbi_info) Luke Graham - James "moose2000" Brown (iPhone PNG) Thomas Ruf - Ben "Disch" Wenger (io callbacks) John Bartholomew - Omar Cornut (1/2/4-bit PNG) Ken Hamada - Nicolas Guillemot (vertical flip) Cort Stratton - Richard Mitton (16-bit PSD) Blazej Dariusz Roszkowski - Thibault Reuille - Paul Du Bois - Guillaume George - Jerry Jansson - Hayaki Saito - Johan Duparc - Ronny Chevalier - Optimizations & bugfixes Michal Cichon - Fabian "ryg" Giesen Tero Hanninen - Arseny Kapoulkine Sergio Gonzalez - Cass Everitt - Engin Manap - If your name should be here but Martins Mozeiko - isn't, let Sean know. Joseph Thomson - Phil Jordan - Nathan Reed - Michaelangel007@github + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + urraka@github (animated gif) Junggon Kim (PNM comments) + Daniel Gibson (16-bit TGA) + + Optimizations & bugfixes + Fabian "ryg" Giesen + Arseny Kapoulkine + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Martin Golini Jerry Jansson Joseph Thomson + Dave Moore Roy Eltham Hayaki Saito Phil Jordan + Won Chun Luke Graham Johan Duparc Nathan Reed + the Horde3D community Thomas Ruf Ronny Chevalier Nick Verigakis + Janez Zemva John Bartholomew Michal Cichon svdijk@github + Jonathan Blow Ken Hamada Tero Hanninen Baldur Karlsson + Laurent Gomila Cort Stratton Sergio Gonzalez romigrou@github + Aruelien Pocheville Thibault Reuille Cass Everitt Matthew Gregan + Ryamond Barbiero Paul Du Bois Engin Manap snagar@github + Michaelangel007@github Oriol Ferrer Mesia socks-the-fox + Blazej Dariusz Roszkowski + LICENSE -This software is in the public domain. Where that dedication is not -recognized, you are granted a perpetual, irrevocable license to copy, -distribute, and modify this file as you see fit. +This software is dual-licensed to the public domain and under the following +license: you are granted a perpetual, irrevocable license to copy, modify, +publish, and distribute this file as you see fit. */ @@ -459,12 +455,12 @@ STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, #ifndef STBI_NO_HDR STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); STBIDEF void stbi_hdr_to_ldr_scale(float scale); -#endif +#endif // STBI_NO_HDR #ifndef STBI_NO_LINEAR STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); STBIDEF void stbi_ldr_to_hdr_scale(float scale); -#endif // STBI_NO_HDR +#endif // STBI_NO_LINEAR // stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); @@ -628,18 +624,22 @@ typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (32 - (y)))) #endif -#if defined(STBI_MALLOC) && defined(STBI_FREE) && defined(STBI_REALLOC) +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) // ok -#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) // ok #else -#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC." +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." #endif #ifndef STBI_MALLOC -#define STBI_MALLOC(sz) malloc(sz) -#define STBI_REALLOC(p,sz) realloc(p,sz) -#define STBI_FREE(p) free(p) +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) #endif // x86/x64 detection @@ -673,7 +673,7 @@ typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; #define STBI_NO_SIMD #endif -#if !defined(STBI_NO_SIMD) && defined(STBI__X86_TARGET) +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) #define STBI_SSE2 #include @@ -712,12 +712,18 @@ static int stbi__sse2_available() static int stbi__sse2_available() { -#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 // GCC 4.8 or later - // GCC 4.8+ has a nice way to do this - return __builtin_cpu_supports("sse2"); +#if defined(STBI__X64_TARGET) + // on x64, SSE2 can be assumed to be available. + return 1; +#elif defined(LOVE_STBI_SSE2_OVERRIDE) + return 1; #else - // portable way to do this, preferably without using GCC inline ASM? - // just bail for now. +# warning "stb_image compiled without SSE2 support, define LOVE_STBI_SSE2_OVERRIDE to force SSE2 support" + // __builtin_cpu_supports is buggy on GCC 5 and above, causing problems if + // referenced in a shared object, giving missing __cpu_model hidden symbol errors. + // To get around that, just assume that SSE2 is not available on x86. + // + // See https://github.com/nothings/stb/issues/280 for more information. return 0; #endif } @@ -1184,14 +1190,15 @@ STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void #endif } -static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; +#ifndef STBI_NO_LINEAR static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; -#ifndef STBI_NO_LINEAR STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } #endif +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } @@ -1294,7 +1301,9 @@ static int stbi__get16be(stbi__context *s) return (z << 8) + stbi__get8(s); } -#if !defined(STBI_NO_PNG) || !defined(STBI_NO_PSD) +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else static stbi__uint32 stbi__get32be(stbi__context *s) { stbi__uint32 z = stbi__get16be(s); @@ -1302,7 +1311,9 @@ static stbi__uint32 stbi__get32be(stbi__context *s) } #endif -#if !defined(STBI_NO_BMP) || !defined(STBI_NO_TGA) || !defined(STBI_NO_GIF) +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else static int stbi__get16le(stbi__context *s) { int z = stbi__get8(s); @@ -1506,6 +1517,7 @@ typedef struct int succ_high; int succ_low; int eob_run; + int rgb; int scan_n, order[4]; int restart_interval, todo; @@ -2717,11 +2729,17 @@ static int stbi__process_frame_header(stbi__jpeg *z, int scan) if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + z->rgb = 0; for (i=0; i < s->img_n; ++i) { + static unsigned char rgb[3] = { 'R', 'G', 'B' }; z->img_comp[i].id = stbi__get8(s); if (z->img_comp[i].id != i+1) // JFIF requires - if (z->img_comp[i].id != i) // some version of jpegtran outputs non-JFIF-compliant files! - return stbi__err("bad component ID","Corrupt JPEG"); + if (z->img_comp[i].id != i) { // some version of jpegtran outputs non-JFIF-compliant files! + // somethings output this (see http://fileformats.archiveteam.org/wiki/JPEG#Color_format) + if (z->img_comp[i].id != rgb[i]) + return stbi__err("bad component ID","Corrupt JPEG"); + ++z->rgb; + } q = stbi__get8(s); z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); @@ -3383,7 +3401,17 @@ static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp if (n >= 3) { stbi_uc *y = coutput[0]; if (z->s->img_n == 3) { - z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + if (z->rgb == 3) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } } else for (i=0; i < z->s->img_x; ++i) { out[0] = out[1] = out[2] = y[i]; @@ -3408,10 +3436,13 @@ static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp static unsigned char *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { - stbi__jpeg j; - j.s = s; - stbi__setup_jpeg(&j); - return load_jpeg_image(&j, x,y,comp,req_comp); + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; } static int stbi__jpeg_test(stbi__context *s) @@ -3439,9 +3470,12 @@ static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) { - stbi__jpeg j; - j.s = s; - return stbi__jpeg_info_raw(&j, x, y, comp); + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; } #endif @@ -3614,14 +3648,15 @@ stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes { char *q; - int cur, limit; + int cur, limit, old_limit; z->zout = zout; if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); cur = (int) (z->zout - z->zout_start); - limit = (int) (z->zout_end - z->zout_start); + limit = old_limit = (int) (z->zout_end - z->zout_start); while (cur + n > limit) limit *= 2; - q = (char *) STBI_REALLOC(z->zout_start, limit); + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); if (q == NULL) return stbi__err("outofmem", "Out of memory"); z->zout_start = q; z->zout = q + cur; @@ -3731,7 +3766,7 @@ static int stbi__compute_huffman_codes(stbi__zbuf *a) return 1; } -static int stbi__parse_uncomperssed_block(stbi__zbuf *a) +static int stbi__parse_uncompressed_block(stbi__zbuf *a) { stbi_uc header[4]; int len,nlen,k; @@ -3797,7 +3832,7 @@ static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) final = stbi__zreceive(a,1); type = stbi__zreceive(a,2); if (type == 0) { - if (!stbi__parse_uncomperssed_block(a)) return 0; + if (!stbi__parse_uncompressed_block(a)) return 0; } else if (type == 3) { return 0; } else { @@ -3939,6 +3974,7 @@ typedef struct { stbi__context *s; stbi_uc *idata, *expanded, *out; + int depth; } stbi__png; @@ -3978,14 +4014,19 @@ static stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x0 // create the png data from post-deflated data static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) { + int bytes = (depth == 16? 2 : 1); stbi__context *s = a->s; - stbi__uint32 i,j,stride = x*out_n; + stbi__uint32 i,j,stride = x*out_n*bytes; stbi__uint32 img_len, img_width_bytes; int k; int img_n = s->img_n; // copy it into a local for later + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); - a->out = (stbi_uc *) stbi__malloc(x * y * out_n); // extra bytes to write off the end into + a->out = (stbi_uc *) stbi__malloc(x * y * output_bytes); // extra bytes to write off the end into if (!a->out) return stbi__err("outofmem", "Out of memory"); img_width_bytes = (((img_n * x * depth) + 7) >> 3); @@ -4000,8 +4041,7 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r stbi_uc *cur = a->out + stride*j; stbi_uc *prior = cur - stride; int filter = *raw++; - int filter_bytes = img_n; - int width = x; + if (filter > 4) return stbi__err("invalid filter","Corrupt PNG"); @@ -4034,6 +4074,14 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r raw += img_n; cur += out_n; prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; } else { raw += 1; cur += 1; @@ -4042,7 +4090,7 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r // this is a little gross, so that we don't switch per-pixel or per-component if (depth < 8 || img_n == out_n) { - int nk = (width - 1)*img_n; + int nk = (width - 1)*filter_bytes; #define CASE(f) \ case f: \ for (k=0; k < nk; ++k) @@ -4062,18 +4110,27 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r STBI_ASSERT(img_n+1 == out_n); #define CASE(f) \ case f: \ - for (i=x-1; i >= 1; --i, cur[img_n]=255,raw+=img_n,cur+=out_n,prior+=out_n) \ - for (k=0; k < img_n; ++k) + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) switch (filter) { CASE(STBI__F_none) cur[k] = raw[k]; break; - CASE(STBI__F_sub) cur[k] = STBI__BYTECAST(raw[k] + cur[k-out_n]); break; + CASE(STBI__F_sub) cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); break; CASE(STBI__F_up) cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; - CASE(STBI__F_avg) cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-out_n])>>1)); break; - CASE(STBI__F_paeth) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-out_n],prior[k],prior[k-out_n])); break; - CASE(STBI__F_avg_first) cur[k] = STBI__BYTECAST(raw[k] + (cur[k-out_n] >> 1)); break; - CASE(STBI__F_paeth_first) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-out_n],0,0)); break; + CASE(STBI__F_avg) cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); break; + CASE(STBI__F_paeth) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); break; + CASE(STBI__F_avg_first) cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); break; + CASE(STBI__F_paeth_first) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); break; } #undef CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } } } @@ -4149,6 +4206,17 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r } } } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } } return 1; @@ -4221,6 +4289,31 @@ static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) return 1; } +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) { stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; @@ -4258,6 +4351,26 @@ static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int return 1; } +static int stbi__reduce_png(stbi__png *p) +{ + int i; + int img_len = p->s->img_x * p->s->img_y * p->s->img_out_n; + stbi_uc *reduced; + stbi__uint16 *orig = (stbi__uint16*)p->out; + + if (p->depth != 16) return 1; // don't need to do anything if not 16-bit data + + reduced = (stbi_uc *)stbi__malloc(img_len); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is a decent approx of 16->8 bit scaling + + p->out = reduced; + STBI_FREE(orig); + + return 1; +} + static int stbi__unpremultiply_on_load = 0; static int stbi__de_iphone_flag = 0; @@ -4319,8 +4432,9 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) { stbi_uc palette[1024], pal_img_n=0; stbi_uc has_trans=0, tc[3]; + stbi__uint16 tc16[3]; stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; - int first=1,k,interlace=0, color=0, depth=0, is_iphone=0; + int first=1,k,interlace=0, color=0, is_iphone=0; stbi__context *s = z->s; z->expanded = NULL; @@ -4345,8 +4459,9 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); s->img_x = stbi__get32be(s); if (s->img_x > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); s->img_y = stbi__get32be(s); if (s->img_y > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); - depth = stbi__get8(s); if (depth != 1 && depth != 2 && depth != 4 && depth != 8) return stbi__err("1/2/4/8-bit only","PNG not supported: 1/2/4/8-bit only"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); @@ -4394,8 +4509,11 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); has_trans = 1; - for (k=0; k < s->img_n; ++k) - tc[k] = (stbi_uc) (stbi__get16be(s) & 255) * stbi__depth_scale_table[depth]; // non 8-bit images will be larger + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } } break; } @@ -4406,11 +4524,13 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; } if ((int)(ioff + c.length) < (int)ioff) return 0; if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; stbi_uc *p; if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; while (ioff + c.length > idata_limit) idata_limit *= 2; - p = (stbi_uc *) STBI_REALLOC(z->idata, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); z->idata = p; } if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); @@ -4424,7 +4544,7 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) if (scan != STBI__SCAN_load) return 1; if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); // initial guess for decoded data size to avoid unnecessary reallocs - bpl = (s->img_x * depth + 7) / 8; // bytes per line, per component + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); if (z->expanded == NULL) return 0; // zlib should set error @@ -4433,9 +4553,14 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) s->img_out_n = s->img_n+1; else s->img_out_n = s->img_n; - if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, depth, color, interlace)) return 0; - if (has_trans) - if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) stbi__de_iphone(z); if (pal_img_n) { @@ -4477,6 +4602,11 @@ static unsigned char *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req unsigned char *result=NULL; if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth == 16) { + if (!stbi__reduce_png(p)) { + return result; + } + } result = p->out; p->out = NULL; if (req_comp && req_comp != p->s->img_out_n) { @@ -4486,7 +4616,7 @@ static unsigned char *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req } *x = p->s->img_x; *y = p->s->img_y; - if (n) *n = p->s->img_out_n; + if (n) *n = p->s->img_n; } STBI_FREE(p->out); p->out = NULL; STBI_FREE(p->expanded); p->expanded = NULL; @@ -4596,19 +4726,23 @@ static int stbi__shiftsigned(int v, int shift, int bits) return result; } -static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) +typedef struct { - stbi_uc *out; - unsigned int mr=0,mg=0,mb=0,ma=0, all_a=255; - stbi_uc pal[256][4]; - int psize=0,i,j,compress=0,width; - int bpp, flip_vertically, pad, target, offset, hsz; + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; +} stbi__bmp_data; + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); stbi__get32le(s); // discard filesize stbi__get16le(s); // discard reserved stbi__get16le(s); // discard reserved - offset = stbi__get32le(s); - hsz = stbi__get32le(s); + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); if (hsz == 12) { s->img_x = stbi__get16le(s); @@ -4618,15 +4752,10 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int s->img_y = stbi__get32le(s); } if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); - bpp = stbi__get16le(s); - if (bpp == 1) return stbi__errpuc("monochrome", "BMP type not supported: 1-bit"); - flip_vertically = ((int) s->img_y) > 0; - s->img_y = abs((int) s->img_y); - if (hsz == 12) { - if (bpp < 24) - psize = (offset - 14 - 24) / 3; - } else { - compress = stbi__get32le(s); + info->bpp = stbi__get16le(s); + if (info->bpp == 1) return stbi__errpuc("monochrome", "BMP type not supported: 1-bit"); + if (hsz != 12) { + int compress = stbi__get32le(s); if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); stbi__get32le(s); // discard sizeof stbi__get32le(s); // discard hres @@ -4640,26 +4769,25 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int stbi__get32le(s); stbi__get32le(s); } - if (bpp == 16 || bpp == 32) { - mr = mg = mb = 0; + if (info->bpp == 16 || info->bpp == 32) { if (compress == 0) { - if (bpp == 32) { - mr = 0xffu << 16; - mg = 0xffu << 8; - mb = 0xffu << 0; - ma = 0xffu << 24; - all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 } else { - mr = 31u << 10; - mg = 31u << 5; - mb = 31u << 0; + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; } } else if (compress == 3) { - mr = stbi__get32le(s); - mg = stbi__get32le(s); - mb = stbi__get32le(s); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); // not documented, but generated by photoshop and handled by mspaint - if (mr == mg && mg == mb) { + if (info->mr == info->mg && info->mg == info->mb) { // ?!?!? return stbi__errpuc("bad BMP", "bad BMP"); } @@ -4667,11 +4795,13 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int return stbi__errpuc("bad BMP", "bad BMP"); } } else { - STBI_ASSERT(hsz == 108 || hsz == 124); - mr = stbi__get32le(s); - mg = stbi__get32le(s); - mb = stbi__get32le(s); - ma = stbi__get32le(s); + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); stbi__get32le(s); // discard color space for (i=0; i < 12; ++i) stbi__get32le(s); // discard color space parameters @@ -4682,35 +4812,68 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int stbi__get32le(s); // discard reserved } } - if (bpp < 16) - psize = (offset - 14 - hsz) >> 2; } + return (void *) 1; +} + + +static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - 14 - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - 14 - info.hsz) >> 2; + } + s->img_n = ma ? 4 : 3; if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 target = req_comp; else target = s->img_n; // if they want monochrome, we'll post-convert + out = (stbi_uc *) stbi__malloc(target * s->img_x * s->img_y); if (!out) return stbi__errpuc("outofmem", "Out of memory"); - if (bpp < 16) { + if (info.bpp < 16) { int z=0; if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } for (i=0; i < psize; ++i) { pal[i][2] = stbi__get8(s); pal[i][1] = stbi__get8(s); pal[i][0] = stbi__get8(s); - if (hsz != 12) stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); pal[i][3] = 255; } - stbi__skip(s, offset - 14 - hsz - psize * (hsz == 12 ? 3 : 4)); - if (bpp == 4) width = (s->img_x + 1) >> 1; - else if (bpp == 8) width = s->img_x; + stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } pad = (-width)&3; for (j=0; j < (int) s->img_y; ++j) { for (i=0; i < (int) s->img_x; i += 2) { int v=stbi__get8(s),v2=0; - if (bpp == 4) { + if (info.bpp == 4) { v2 = v & 15; v >>= 4; } @@ -4719,7 +4882,7 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int out[z++] = pal[v][2]; if (target == 4) out[z++] = 255; if (i+1 == (int) s->img_x) break; - v = (bpp == 8) ? stbi__get8(s) : v2; + v = (info.bpp == 8) ? stbi__get8(s) : v2; out[z++] = pal[v][0]; out[z++] = pal[v][1]; out[z++] = pal[v][2]; @@ -4731,14 +4894,14 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; int z = 0; int easy=0; - stbi__skip(s, offset - 14 - hsz); - if (bpp == 24) width = 3 * s->img_x; - else if (bpp == 16) width = 2*s->img_x; + stbi__skip(s, info.offset - 14 - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; else /* bpp = 32 and pad = 0 */ width=0; pad = (-width) & 3; - if (bpp == 24) { + if (info.bpp == 24) { easy = 1; - } else if (bpp == 32) { + } else if (info.bpp == 32) { if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) easy = 2; } @@ -4763,6 +4926,7 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int if (target == 4) out[z++] = a; } } else { + int bpp = info.bpp; for (i=0; i < (int) s->img_x; ++i) { stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); int a; @@ -4809,20 +4973,55 @@ static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int // Targa Truevision - TGA // by Jonathan Dummer #ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if(is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // else: fall-through + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fall-through + case 32: return bits_per_pixel/8; + default: return 0; + } +} + static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) { - int tga_w, tga_h, tga_comp; - int sz; + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; stbi__get8(s); // discard Offset - sz = stbi__get8(s); // color type - if( sz > 1 ) { + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { stbi__rewind(s); return 0; // only RGB or indexed allowed } - sz = stbi__get8(s); // image type - // only RGB or grey allowed, +/- RLE - if ((sz != 1) && (sz != 2) && (sz != 3) && (sz != 9) && (sz != 10) && (sz != 11)) return 0; - stbi__skip(s,9); + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } tga_w = stbi__get16le(s); if( tga_w < 1 ) { stbi__rewind(s); @@ -4833,44 +5032,80 @@ static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) stbi__rewind(s); return 0; // test height } - sz = stbi__get8(s); // bits per pixel - // only RGB or RGBA or grey allowed - if ((sz != 8) && (sz != 16) && (sz != 24) && (sz != 32)) { - stbi__rewind(s); - return 0; + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; } - tga_comp = sz; if (x) *x = tga_w; if (y) *y = tga_h; - if (comp) *comp = tga_comp / 8; + if (comp) *comp = tga_comp; return 1; // seems to have passed everything } static int stbi__tga_test(stbi__context *s) { - int res; - int sz; + int res = 0; + int sz, tga_color_type; stbi__get8(s); // discard Offset - sz = stbi__get8(s); // color type - if ( sz > 1 ) return 0; // only RGB or indexed allowed + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed sz = stbi__get8(s); // image type - if ( (sz != 1) && (sz != 2) && (sz != 3) && (sz != 9) && (sz != 10) && (sz != 11) ) return 0; // only RGB or grey allowed, +/- RLE - stbi__get16be(s); // discard palette start - stbi__get16be(s); // discard palette length - stbi__get8(s); // discard bits per palette color entry - stbi__get16be(s); // discard x origin - stbi__get16be(s); // discard y origin - if ( stbi__get16be(s) < 1 ) return 0; // test width - if ( stbi__get16be(s) < 1 ) return 0; // test height + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height sz = stbi__get8(s); // bits per pixel - if ( (sz != 8) && (sz != 16) && (sz != 24) && (sz != 32) ) - res = 0; - else - res = 1; + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: stbi__rewind(s); return res; } +// read 16bit value and convert to 24bit RGB +void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (r * 255)/31; + out[1] = (g * 255)/31; + out[2] = (b * 255)/31; + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { // read in the TGA header stuff @@ -4886,8 +5121,9 @@ static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int int tga_width = stbi__get16le(s); int tga_height = stbi__get16le(s); int tga_bits_per_pixel = stbi__get8(s); - int tga_comp = tga_bits_per_pixel / 8; + int tga_comp, tga_rgb16=0; int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) // image data unsigned char *tga_data; unsigned char *tga_palette = NULL; @@ -4903,25 +5139,14 @@ static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int tga_image_type -= 8; tga_is_RLE = 1; } - /* int tga_alpha_bits = tga_inverted & 15; */ tga_inverted = 1 - ((tga_inverted >> 5) & 1); - // error check - if ( //(tga_indexed) || - (tga_width < 1) || (tga_height < 1) || - (tga_image_type < 1) || (tga_image_type > 3) || - ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16) && - (tga_bits_per_pixel != 24) && (tga_bits_per_pixel != 32)) - ) - { - return NULL; // we don't report this as a bad TGA because we don't even know if it's TGA - } - // If I'm paletted, then I'll use the number of bits from the palette - if ( tga_indexed ) - { - tga_comp = tga_palette_bits / 8; - } + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); // tga info *x = tga_width; @@ -4934,7 +5159,7 @@ static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int // skip to the data's starting position (offset usually = 0) stbi__skip(s, tga_offset ); - if ( !tga_indexed && !tga_is_RLE) { + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { for (i=0; i < tga_height; ++i) { int row = tga_inverted ? tga_height -i - 1 : i; stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; @@ -4947,15 +5172,22 @@ static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int // any data to skip? (offset usually = 0) stbi__skip(s, tga_palette_start ); // load the palette - tga_palette = (unsigned char*)stbi__malloc( tga_palette_len * tga_palette_bits / 8 ); + tga_palette = (unsigned char*)stbi__malloc( tga_palette_len * tga_comp ); if (!tga_palette) { STBI_FREE(tga_data); return stbi__errpuc("outofmem", "Out of memory"); } - if (!stbi__getn(s, tga_palette, tga_palette_len * tga_palette_bits / 8 )) { - STBI_FREE(tga_data); - STBI_FREE(tga_palette); - return stbi__errpuc("bad palette", "Corrupt TGA"); + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); } } // load the data @@ -4985,23 +5217,22 @@ static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int // load however much data we did have if ( tga_indexed ) { - // read in 1 byte, then perform the lookup - int pal_idx = stbi__get8(s); - if ( pal_idx >= tga_palette_len ) - { - // invalid index + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index pal_idx = 0; } - pal_idx *= tga_bits_per_pixel / 8; - for (j = 0; j*8 < tga_bits_per_pixel; ++j) - { + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { raw_data[j] = tga_palette[pal_idx+j]; } - } else - { + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { // read in the data raw - for (j = 0; j*8 < tga_bits_per_pixel; ++j) - { + for (j = 0; j < tga_comp; ++j) { raw_data[j] = stbi__get8(s); } } @@ -5040,8 +5271,8 @@ static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int } } - // swap RGB - if (tga_comp >= 3) + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) { unsigned char* tga_pixel = tga_data; for (i=0; i < tga_width * tga_height; ++i) @@ -5215,15 +5446,16 @@ static stbi_uc *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int stbi_uc *p; p = out + channel; - if (channel > channelCount) { + if (channel >= channelCount) { // Fill this channel with default data. + stbi_uc val = channel == 3 ? 255 : 0; for (i = 0; i < pixelCount; i++, p += 4) - *p = channel == 3 ? 255 : 0; + *p = val; } else { // Read the data. if (bitdepth == 16) { for (i = 0; i < pixelCount; i++, p += 4) - *p = stbi__get16be(s) >> 8; + *p = (stbi_uc) (stbi__get16be(s) >> 8); } else { for (i = 0; i < pixelCount; i++, p += 4) *p = stbi__get8(s); @@ -5232,6 +5464,21 @@ static stbi_uc *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int } } + if (channelCount >= 4) { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + // remove weird white matte from PSD + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + if (req_comp && req_comp != 4) { out = stbi__convert_format(out, 4, req_comp, w, h); if (out == NULL) return out; // stbi__convert_format frees input on failure @@ -5544,13 +5791,15 @@ static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_in static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) { - stbi__gif g; - if (!stbi__gif_header(s, &g, comp, 1)) { + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); stbi__rewind( s ); return 0; } - if (x) *x = g.w; - if (y) *y = g.h; + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); return 1; } @@ -5765,7 +6014,7 @@ static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, i if (o == NULL) return NULL; if (prev_trans != -1) - g->pal[g->transparent][3] = prev_trans; + g->pal[g->transparent][3] = (stbi_uc) prev_trans; return o; } @@ -5796,25 +6045,27 @@ static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, i return stbi__errpuc("unknown code", "Corrupt GIF"); } } + + STBI_NOTUSED(req_comp); } static stbi_uc *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp) { stbi_uc *u = 0; - stbi__gif g; - memset(&g, 0, sizeof(g)); + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + memset(g, 0, sizeof(*g)); - u = stbi__gif_load_next(s, &g, comp, req_comp); + u = stbi__gif_load_next(s, g, comp, req_comp); if (u == (stbi_uc *) s) u = 0; // end of animated gif marker if (u) { - *x = g.w; - *y = g.h; + *x = g->w; + *y = g->h; if (req_comp && req_comp != 4) - u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + u = stbi__convert_format(u, 4, req_comp, g->w, g->h); } - else if (g.out) - STBI_FREE(g.out); - + else if (g->out) + STBI_FREE(g->out); + STBI_FREE(g); return u; } @@ -6012,7 +6263,7 @@ static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) char *token; int valid = 0; - if (strcmp(stbi__hdr_gettoken(s,buffer), "#?RADIANCE") != 0) { + if (stbi__hdr_test(s) == 0) { stbi__rewind( s ); return 0; } @@ -6049,29 +6300,17 @@ static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) #ifndef STBI_NO_BMP static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) { - int hsz; - if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') { - stbi__rewind( s ); - return 0; - } - stbi__skip(s,12); - hsz = stbi__get32le(s); - if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) { - stbi__rewind( s ); - return 0; - } - if (hsz == 12) { - *x = stbi__get16le(s); - *y = stbi__get16le(s); - } else { - *x = stbi__get32le(s); - *y = stbi__get32le(s); - } - if (stbi__get16le(s) != 1) { - stbi__rewind( s ); - return 0; - } - *comp = stbi__get16le(s) / 8; + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + stbi__rewind( s ); + if (p == NULL) + return 0; + *x = s->img_x; + *y = s->img_y; + *comp = info.ma ? 4 : 3; return 1; } #endif @@ -6217,8 +6456,16 @@ static int stbi__pnm_isspace(char c) static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) { - while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) - *c = (char) stbi__get8(s); + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } } static int stbi__pnm_isdigit(char c) @@ -6356,9 +6603,24 @@ STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int /* revision history: + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA 2.07 (2015-09-13) fix compiler warnings partial animated GIF support - limited 16-bit PSD support + limited 16-bpc PSD support #ifdef unused functions bug with < 92 byte PIC,PNM,HDR,TGA 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value diff --git a/jni/love/src/love.cpp b/jni/love/src/love.cpp index 1ee6f6c0..00e8f36c 100644 --- a/jni/love/src/love.cpp +++ b/jni/love/src/love.cpp @@ -172,23 +172,14 @@ static int l_print_sdl_log(lua_State *L) } #endif -int main(int argc, char **argv) +enum DoneAction { - int retval = 0; - -#ifdef LOVE_IOS - int orig_argc = argc; - char **orig_argv = argv; - - // on iOS we should never programmatically exit the app, so we'll just - // "restart" when that is attempted. Games which use threads might cause - // some issues if the threads aren't cleaned up properly... - while (true) - { - argc = orig_argc; - argv = orig_argv; -#endif + DONE_QUIT, + DONE_RESTART, +}; +static DoneAction runlove(int argc, char **argv, int &retval) +{ #ifdef LOVE_LEGENDARY_APP_ARGV_HACK int hack_argc = 0; char **hack_argv = 0; @@ -197,18 +188,12 @@ int main(int argc, char **argv) argv = hack_argv; #endif // LOVE_LEGENDARY_APP_ARGV_HACK - if (strcmp(LOVE_VERSION_STRING, love_version()) != 0) - { - printf("Version mismatch detected!\nLOVE binary is version %s\n" - "LOVE library is version %s\n", LOVE_VERSION_STRING, love_version()); - return 1; - } - // Oh, you just want the version? Okay! if (argc > 1 && strcmp(argv[1], "--version") == 0) { printf("LOVE %s (%s)\n", love_version(), love_codename()); - return 0; + retval = 0; + return DONE_QUIT; } // Create the virtual machine. @@ -269,12 +254,19 @@ int main(int argc, char **argv) // Call the returned boot function. lua_call(L, 0, 1); + retval = 0; + DoneAction done = DONE_QUIT; + + // if love.boot() returns "restart", we'll start up again after closing this + // Lua state. + if (lua_type(L, -1) == LUA_TSTRING && strcmp(lua_tostring(L, -1), "restart") == 0) + done = DONE_RESTART; if (lua_isnumber(L, -1)) retval = (int) lua_tonumber(L, -1); lua_close(L); -#if defined(LOVE_LEGENDARY_APP_ARGV_HACK) +#if defined(LOVE_LEGENDARY_APP_ARGV_HACK) && !defined(LOVE_IOS) if (hack_argv) { for (int i = 0; iupdate(); - delay(5); + sleep(5); } } diff --git a/jni/love/src/modules/audio/openal/Audio.h b/jni/love/src/modules/audio/openal/Audio.h index b33731e2..4ec6d4d6 100644 --- a/jni/love/src/modules/audio/openal/Audio.h +++ b/jni/love/src/modules/audio/openal/Audio.h @@ -131,7 +131,7 @@ private: public: PoolThread(Pool *pool); - ~PoolThread(); + virtual ~PoolThread(); void setFinish(); void threadFunction(); }; diff --git a/jni/love/src/modules/audio/openal/Source.cpp b/jni/love/src/modules/audio/openal/Source.cpp index b9fb49a3..99f3b792 100644 --- a/jni/love/src/modules/audio/openal/Source.cpp +++ b/jni/love/src/modules/audio/openal/Source.cpp @@ -104,10 +104,7 @@ Source::Source(Pool *pool, love::sound::SoundData *soundData) if (fmt == 0) throw InvalidFormatException(soundData->getChannels(), soundData->getBitDepth()); - staticBuffer.set(new StaticDataBuffer(fmt, soundData->getData(), (ALsizei) soundData->getSize(), soundData->getSampleRate())); - - // The buffer has a +2 retain count right now, but we want it to have +1. - staticBuffer->release(); + staticBuffer.set(new StaticDataBuffer(fmt, soundData->getData(), (ALsizei) soundData->getSize(), sampleRate), Acquire::NORETAIN); float z[3] = {0, 0, 0}; @@ -179,11 +176,7 @@ Source::Source(const Source &s) if (type == TYPE_STREAM) { if (s.decoder.get()) - { - love::sound::Decoder *dec = s.decoder->clone(); - decoder.set(dec); - dec->release(); - } + decoder.set(s.decoder->clone(), Acquire::NORETAIN); alGenBuffers(MAX_BUFFERS, streamBuffers); } @@ -602,6 +595,11 @@ bool Source::isLooping() const bool Source::playAtomic() { + // This Source may now be associated with an OpenAL source that still has + // the properties of another love Source. Let's reset it to the settings + // of the new one. + reset(); + if (type == TYPE_STATIC) { alSourcei(source, AL_BUFFER, staticBuffer->getBuffer()); @@ -625,11 +623,6 @@ bool Source::playAtomic() alSourceQueueBuffers(source, usedBuffers, streamBuffers); } - // This Source may now be associated with an OpenAL source that still has - // the properties of another love Source. Let's reset it to the settings - // of the new one. - reset(); - // Clear errors. alGetError(); @@ -721,6 +714,7 @@ void Source::rewindAtomic() void Source::reset() { + alSourcei(source, AL_BUFFER, 0); alSourcefv(source, AL_POSITION, position); alSourcefv(source, AL_VELOCITY, velocity); alSourcefv(source, AL_DIRECTION, direction); diff --git a/jni/love/src/modules/event/Event.cpp b/jni/love/src/modules/event/Event.cpp index d35f533d..960a39a0 100644 --- a/jni/love/src/modules/event/Event.cpp +++ b/jni/love/src/modules/event/Event.cpp @@ -28,7 +28,7 @@ namespace love namespace event { -Message::Message(const std::string &name, const std::vector> &vargs) +Message::Message(const std::string &name, const std::vector &vargs) : name(name) , args(vargs) { @@ -42,13 +42,8 @@ int Message::toLua(lua_State *L) { luax_pushstring(L, name); - for (const StrongRef &v : args) - { - if (v.get() != nullptr) - v->toLua(L); - else - lua_pushnil(L); - } + for (const Variant &v : args) + v.toLua(L); return (int) args.size() + 1; } @@ -56,11 +51,13 @@ int Message::toLua(lua_State *L) Message *Message::fromLua(lua_State *L, int n) { std::string name = luax_checkstring(L, n); - std::vector> vargs; + std::vector vargs; int count = lua_gettop(L) - n; n++; + Variant varg; + for (int i = 0; i < count; i++) { if (lua_isnoneornil(L, n+i)) @@ -68,14 +65,12 @@ Message *Message::fromLua(lua_State *L, int n) vargs.push_back(Variant::fromLua(L, n+i)); - if (!vargs.back().get()) + if (vargs.back().getType() == Variant::UNKNOWN) { vargs.clear(); luaL_error(L, "Argument %d can't be stored safely\nExpected boolean, number, string or userdata.", n+i); return nullptr; } - - vargs.back()->release(); // fromLua gave a +1 ref. } return new Message(name, vargs); diff --git a/jni/love/src/modules/event/Event.h b/jni/love/src/modules/event/Event.h index 1ca6e947..d597855e 100644 --- a/jni/love/src/modules/event/Event.h +++ b/jni/love/src/modules/event/Event.h @@ -43,7 +43,7 @@ class Message : public Object { public: - Message(const std::string &name, const std::vector> &vargs = {}); + Message(const std::string &name, const std::vector &vargs = {}); ~Message(); int toLua(lua_State *L); @@ -52,7 +52,7 @@ public: private: std::string name; - std::vector> args; + std::vector args; }; // Message diff --git a/jni/love/src/modules/event/sdl/Event.cpp b/jni/love/src/modules/event/sdl/Event.cpp index 364f1570..52caa11c 100644 --- a/jni/love/src/modules/event/sdl/Event.cpp +++ b/jni/love/src/modules/event/sdl/Event.cpp @@ -150,7 +150,7 @@ Message *Event::convert(const SDL_Event &e) const { Message *msg = nullptr; - std::vector> vargs; + std::vector vargs; vargs.reserve(4); love::filesystem::Filesystem *filesystem = nullptr; @@ -192,9 +192,9 @@ Message *Event::convert(const SDL_Event &e) const if (!love::keyboard::Keyboard::getConstant(scancode, txt2)) txt2 = "unknown"; - vargs.push_back(new Variant(txt, strlen(txt))); - vargs.push_back(new Variant(txt2, strlen(txt2))); - vargs.push_back(new Variant(e.key.repeat != 0)); + vargs.emplace_back(txt, strlen(txt)); + vargs.emplace_back(txt2, strlen(txt2)); + vargs.emplace_back(e.key.repeat != 0); msg = new Message("keypressed", vargs); break; case SDL_KEYUP: @@ -209,20 +209,20 @@ Message *Event::convert(const SDL_Event &e) const if (!love::keyboard::Keyboard::getConstant(scancode, txt2)) txt2 = "unknown"; - vargs.push_back(new Variant(txt, strlen(txt))); - vargs.push_back(new Variant(txt2, strlen(txt2))); + vargs.emplace_back(txt, strlen(txt)); + vargs.emplace_back(txt2, strlen(txt2)); msg = new Message("keyreleased", vargs); break; case SDL_TEXTINPUT: txt = e.text.text; - vargs.push_back(new Variant(txt, strlen(txt))); + vargs.emplace_back(txt, strlen(txt)); msg = new Message("textinput", vargs); break; case SDL_TEXTEDITING: txt = e.edit.text; - vargs.push_back(new Variant(txt, strlen(txt))); - vargs.push_back(new Variant((double) e.edit.start)); - vargs.push_back(new Variant((double) e.edit.length)); + vargs.emplace_back(txt, strlen(txt)); + vargs.emplace_back((double) e.edit.start); + vargs.emplace_back((double) e.edit.length); msg = new Message("textedited", vargs); break; case SDL_MOUSEMOTION: @@ -233,11 +233,11 @@ Message *Event::convert(const SDL_Event &e) const double yrel = (double) e.motion.yrel; windowToPixelCoords(&x, &y); windowToPixelCoords(&xrel, &yrel); - vargs.push_back(new Variant(x)); - vargs.push_back(new Variant(y)); - vargs.push_back(new Variant(xrel)); - vargs.push_back(new Variant(yrel)); - vargs.push_back(new Variant(e.motion.which == SDL_TOUCH_MOUSEID)); + vargs.emplace_back(x); + vargs.emplace_back(y); + vargs.emplace_back(xrel); + vargs.emplace_back(yrel); + vargs.emplace_back(e.motion.which == SDL_TOUCH_MOUSEID); msg = new Message("mousemoved", vargs); } break; @@ -260,18 +260,18 @@ Message *Event::convert(const SDL_Event &e) const double x = (double) e.button.x; double y = (double) e.button.y; windowToPixelCoords(&x, &y); - vargs.push_back(new Variant(x)); - vargs.push_back(new Variant(y)); - vargs.push_back(new Variant((double) button)); - vargs.push_back(new Variant(e.button.which == SDL_TOUCH_MOUSEID)); + vargs.emplace_back(x); + vargs.emplace_back(y); + vargs.emplace_back((double) button); + vargs.emplace_back(e.button.which == SDL_TOUCH_MOUSEID); msg = new Message((e.type == SDL_MOUSEBUTTONDOWN) ? "mousepressed" : "mousereleased", vargs); } break; case SDL_MOUSEWHEEL: - vargs.push_back(new Variant((double) e.wheel.x)); - vargs.push_back(new Variant((double) e.wheel.y)); + vargs.emplace_back((double) e.wheel.x); + vargs.emplace_back((double) e.wheel.y); msg = new Message("wheelmoved", vargs); break; case SDL_FINGERDOWN: @@ -316,12 +316,12 @@ Message *Event::convert(const SDL_Event &e) const // bits as can fit in a pointer (for now.) // We use lightuserdata instead of a lua_Number (double) because doubles // can't represent all possible id values on 64-bit systems. - vargs.push_back(new Variant((void *) (intptr_t) touchinfo.id)); - vargs.push_back(new Variant(touchinfo.x)); - vargs.push_back(new Variant(touchinfo.y)); - vargs.push_back(new Variant(touchinfo.dx)); - vargs.push_back(new Variant(touchinfo.dy)); - vargs.push_back(new Variant(touchinfo.pressure)); + vargs.emplace_back((void *) (intptr_t) touchinfo.id); + vargs.emplace_back(touchinfo.x); + vargs.emplace_back(touchinfo.y); + vargs.emplace_back(touchinfo.dx); + vargs.emplace_back(touchinfo.dy); + vargs.emplace_back(touchinfo.pressure); if (e.type == SDL_FINGERDOWN) txt = "touchpressed"; @@ -356,7 +356,7 @@ Message *Event::convert(const SDL_Event &e) const if (filesystem->isRealDirectory(e.drop.file)) { - vargs.push_back(new Variant(e.drop.file, strlen(e.drop.file))); + vargs.emplace_back(e.drop.file, strlen(e.drop.file)); msg = new Message("directorydropped", vargs); } else @@ -364,7 +364,7 @@ Message *Event::convert(const SDL_Event &e) const Proxy proxy; proxy.object = new love::filesystem::DroppedFile(e.drop.file); proxy.type = FILESYSTEM_DROPPED_FILE_ID; - vargs.push_back(new Variant(proxy.type, &proxy)); + vargs.emplace_back(proxy.type, &proxy); msg = new Message("filedropped", vargs); proxy.object->release(); } @@ -382,13 +382,6 @@ Message *Event::convert(const SDL_Event &e) const break; } - // We gave +1 refs to the StrongRef list, so we should release them. - for (const StrongRef &v : vargs) - { - if (v.get() != nullptr) - v->release(); - } - return msg; } @@ -400,7 +393,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const Message *msg = nullptr; - std::vector> vargs; + std::vector vargs; vargs.reserve(4); Proxy proxy; @@ -418,8 +411,8 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const if (!proxy.object) break; - vargs.push_back(new Variant(proxy.type, (void *) &proxy)); - vargs.push_back(new Variant((double)(e.jbutton.button+1))); + vargs.emplace_back(proxy.type, (void *) &proxy); + vargs.emplace_back((double)(e.jbutton.button+1)); msg = new Message((e.type == SDL_JOYBUTTONDOWN) ? "joystickpressed" : "joystickreleased", vargs); @@ -431,10 +424,10 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const if (!proxy.object) break; - vargs.push_back(new Variant(proxy.type, (void *) &proxy)); - vargs.push_back(new Variant((double)(e.jaxis.axis+1))); + vargs.emplace_back(proxy.type, (void *) &proxy); + vargs.emplace_back((double)(e.jaxis.axis+1)); float value = joystick::Joystick::clampval(e.jaxis.value / 32768.0f); - vargs.push_back(new Variant((double) value)); + vargs.emplace_back((double) value); msg = new Message("joystickaxis", vargs); } break; @@ -447,9 +440,9 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const if (!proxy.object) break; - vargs.push_back(new Variant(proxy.type, (void *) &proxy)); - vargs.push_back(new Variant((double)(e.jhat.hat+1))); - vargs.push_back(new Variant(txt, strlen(txt))); + vargs.emplace_back(proxy.type, (void *) &proxy); + vargs.emplace_back((double)(e.jhat.hat+1)); + vargs.emplace_back(txt, strlen(txt)); msg = new Message("joystickhat", vargs); break; case SDL_CONTROLLERBUTTONDOWN: @@ -465,8 +458,8 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const if (!proxy.object) break; - vargs.push_back(new Variant(proxy.type, (void *) &proxy)); - vargs.push_back(new Variant(txt, strlen(txt))); + vargs.emplace_back(proxy.type, (void *) &proxy); + vargs.emplace_back(txt, strlen(txt)); msg = new Message(e.type == SDL_CONTROLLERBUTTONDOWN ? "gamepadpressed" : "gamepadreleased", vargs); break; @@ -481,11 +474,11 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const if (!proxy.object) break; - vargs.push_back(new Variant(proxy.type, (void *) &proxy)); + vargs.emplace_back(proxy.type, (void *) &proxy); - vargs.push_back(new Variant(txt, strlen(txt))); + vargs.emplace_back(txt, strlen(txt)); float value = joystick::Joystick::clampval(e.caxis.value / 32768.0f); - vargs.push_back(new Variant((double) value)); + vargs.emplace_back((double) value); msg = new Message("gamepadaxis", vargs); } break; @@ -495,7 +488,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const proxy.type = JOYSTICK_JOYSTICK_ID; if (proxy.object) { - vargs.push_back(new Variant(proxy.type, (void *) &proxy)); + vargs.emplace_back(proxy.type, (void *) &proxy); msg = new Message("joystickadded", vargs); } break; @@ -506,7 +499,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const if (proxy.object) { joymodule->removeJoystick((joystick::Joystick *) proxy.object); - vargs.push_back(new Variant(proxy.type, (void *) &proxy)); + vargs.emplace_back(proxy.type, (void *) &proxy); msg = new Message("joystickremoved", vargs); } break; @@ -514,13 +507,6 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const break; } - // We gave +1 refs to the StrongRef list, so we should release them. - for (const StrongRef &v : vargs) - { - if (v.get() != nullptr) - v->release(); - } - return msg; } @@ -528,7 +514,7 @@ Message *Event::convertWindowEvent(const SDL_Event &e) const { Message *msg = nullptr; - std::vector> vargs; + std::vector vargs; vargs.reserve(4); window::Window *win = nullptr; @@ -540,17 +526,17 @@ Message *Event::convertWindowEvent(const SDL_Event &e) const { case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_FOCUS_LOST: - vargs.push_back(new Variant(e.window.event == SDL_WINDOWEVENT_FOCUS_GAINED)); + vargs.emplace_back(e.window.event == SDL_WINDOWEVENT_FOCUS_GAINED); msg = new Message("focus", vargs); break; case SDL_WINDOWEVENT_ENTER: case SDL_WINDOWEVENT_LEAVE: - vargs.push_back(new Variant(e.window.event == SDL_WINDOWEVENT_ENTER)); + vargs.emplace_back(e.window.event == SDL_WINDOWEVENT_ENTER); msg = new Message("mousefocus", vargs); break; case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_HIDDEN: - vargs.push_back(new Variant(e.window.event == SDL_WINDOWEVENT_SHOWN)); + vargs.emplace_back(e.window.event == SDL_WINDOWEVENT_SHOWN); msg = new Message("visible", vargs); break; case SDL_WINDOWEVENT_RESIZED: @@ -562,10 +548,10 @@ Message *Event::convertWindowEvent(const SDL_Event &e) const if (sdlwin) SDL_GL_GetDrawableSize(sdlwin, &px_w, &px_h); - vargs.push_back(new Variant((double) px_w)); - vargs.push_back(new Variant((double) px_h)); - vargs.push_back(new Variant((double) e.window.data1)); - vargs.push_back(new Variant((double) e.window.data2)); + vargs.emplace_back((double) px_w); + vargs.emplace_back((double) px_h); + vargs.emplace_back((double) e.window.data1); + vargs.emplace_back((double) e.window.data2); msg = new Message("resize", vargs); } break; @@ -591,13 +577,6 @@ Message *Event::convertWindowEvent(const SDL_Event &e) const break; } - // We gave +1 refs to the StrongRef list, so we should release them. - for (const StrongRef &v : vargs) - { - if (v.get() != nullptr) - v->release(); - } - return msg; } diff --git a/jni/love/src/modules/event/wrap_Event.cpp b/jni/love/src/modules/event/wrap_Event.cpp index 06aa53a3..06b9686f 100644 --- a/jni/love/src/modules/event/wrap_Event.cpp +++ b/jni/love/src/modules/event/wrap_Event.cpp @@ -74,16 +74,14 @@ int w_wait(lua_State *L) int w_push(lua_State *L) { - Message *m = Message::fromLua(L, 1); + StrongRef m(Message::fromLua(L, 1), Acquire::NORETAIN); - luax_pushboolean(L, m != nullptr); + luax_pushboolean(L, m.get() != nullptr); - if (m == nullptr) + if (m.get() == nullptr) return 1; instance()->push(m); - m->release(); - return 1; } @@ -95,18 +93,10 @@ int w_clear(lua_State *) int w_quit(lua_State *L) { - std::vector> args; + std::vector args = {Variant::fromLua(L, 1)}; - Variant *v = Variant::fromLua(L, 1); - if (v) - { - args.push_back(v); - v->release(); - } - - Message *m = new Message("quit", args); + StrongRef m(new Message("quit", args), Acquire::NORETAIN); instance()->push(m); - m->release(); luax_pushboolean(L, true); return 1; diff --git a/jni/love/src/modules/filesystem/FileData.cpp b/jni/love/src/modules/filesystem/FileData.cpp index 35ceefda..4e0f3972 100644 --- a/jni/love/src/modules/filesystem/FileData.cpp +++ b/jni/love/src/modules/filesystem/FileData.cpp @@ -78,7 +78,7 @@ bool FileData::getConstant(const char *in, Decoder &out) return decoders.find(in, out); } -bool FileData::getConstant(Decoder in, const char *&out) +bool FileData::getConstant(Decoder in, const char *&out) { return decoders.find(in, out); } diff --git a/jni/love/src/modules/filesystem/FileData.h b/jni/love/src/modules/filesystem/FileData.h index d2909dd4..7106cdb7 100644 --- a/jni/love/src/modules/filesystem/FileData.h +++ b/jni/love/src/modules/filesystem/FileData.h @@ -55,7 +55,7 @@ public: const std::string &getExtension() const; static bool getConstant(const char *in, Decoder &out); - static bool getConstant(Decoder in, const char *&out); + static bool getConstant(Decoder in, const char *&out); private: diff --git a/jni/love/src/modules/filesystem/physfs/Filesystem.cpp b/jni/love/src/modules/filesystem/physfs/Filesystem.cpp index 85dfc274..4d19d58f 100644 --- a/jni/love/src/modules/filesystem/physfs/Filesystem.cpp +++ b/jni/love/src/modules/filesystem/physfs/Filesystem.cpp @@ -519,7 +519,9 @@ std::string Filesystem::getAppdataDirectory() { if (appdata.empty()) { -#ifdef LOVE_WINDOWS +#ifdef LOVE_WINDOWS_UWP + appdata = getUserDirectory(); +#elif defined(LOVE_WINDOWS) wchar_t *w_appdata = _wgetenv(L"APPDATA"); appdata = to_utf8(w_appdata); replace_char(appdata, '\\', '/'); diff --git a/jni/love/src/modules/filesystem/physfs/Filesystem.h b/jni/love/src/modules/filesystem/physfs/Filesystem.h index 5d279da4..fcb207d1 100644 --- a/jni/love/src/modules/filesystem/physfs/Filesystem.h +++ b/jni/love/src/modules/filesystem/physfs/Filesystem.h @@ -62,7 +62,7 @@ public: bool mount(const char *archive, const char *mountpoint, bool appendToPath = false); bool unmount(const char *archive); - File *newFile(const char *filename) const; + love::filesystem::File *newFile(const char *filename) const; FileData *newFileData(void *data, unsigned int size, const char *filename) const; FileData *newFileData(const char *b64, const char *filename) const; diff --git a/jni/love/src/modules/filesystem/wrap_File.cpp b/jni/love/src/modules/filesystem/wrap_File.cpp index b0209dff..90e96c01 100644 --- a/jni/love/src/modules/filesystem/wrap_File.cpp +++ b/jni/love/src/modules/filesystem/wrap_File.cpp @@ -108,13 +108,13 @@ int w_File_isOpen(lua_State *L) int w_File_read(lua_State *L) { File *file = luax_checkfile(L, 1); - Data *d = 0; + StrongRef d = nullptr; int64 size = (int64) luaL_optnumber(L, 2, (lua_Number) File::ALL); try { - d = file->read(size); + d.set(file->read(size), Acquire::NORETAIN); } catch (love::Exception &e) { @@ -123,7 +123,6 @@ int w_File_read(lua_State *L) lua_pushlstring(L, (const char *) d->getData(), d->getSize()); lua_pushnumber(L, d->getSize()); - d->release(); return 2; } diff --git a/jni/love/src/modules/filesystem/wrap_Filesystem.cpp b/jni/love/src/modules/filesystem/wrap_Filesystem.cpp index e01b3840..a1e0b177 100644 --- a/jni/love/src/modules/filesystem/wrap_Filesystem.cpp +++ b/jni/love/src/modules/filesystem/wrap_Filesystem.cpp @@ -111,11 +111,20 @@ int w_getSource(lua_State *L) int w_mount(lua_State *L) { - const char *archive = luaL_checkstring(L, 1); + std::string archive; + + if (luax_istype(L, 1, FILESYSTEM_DROPPED_FILE_ID)) + { + DroppedFile *file = luax_totype(L, 1, FILESYSTEM_DROPPED_FILE_ID); + archive = file->getFilename(); + } + else + archive = luax_checkstring(L, 1); + const char *mountpoint = luaL_checkstring(L, 2); bool append = luax_optboolean(L, 3, false); - luax_pushboolean(L, instance()->mount(archive, mountpoint, append)); + luax_pushboolean(L, instance()->mount(archive.c_str(), mountpoint, append)); return 1; } @@ -209,6 +218,11 @@ FileData *luax_getfiledata(lua_State *L, int idx) return data; } +bool luax_cangetfiledata(lua_State *L, int idx) +{ + return lua_isstring(L, idx) || luax_istype(L, idx, FILESYSTEM_FILE_ID) || luax_istype(L, idx, FILESYSTEM_FILE_DATA_ID); +} + int w_newFileData(lua_State *L) { // Single argument: treat as filepath or File. @@ -223,17 +237,16 @@ int w_newFileData(lua_State *L) { File *file = luax_checkfile(L, 1); - FileData *data = 0; + StrongRef data; try { - data = file->read(); + data.set(file->read(), Acquire::NORETAIN); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } luax_pushtype(L, FILESYSTEM_FILE_DATA_ID, data); - data->release(); return 1; } else diff --git a/jni/love/src/modules/filesystem/wrap_Filesystem.h b/jni/love/src/modules/filesystem/wrap_Filesystem.h index 0b27b326..a010fd77 100644 --- a/jni/love/src/modules/filesystem/wrap_Filesystem.h +++ b/jni/love/src/modules/filesystem/wrap_Filesystem.h @@ -39,6 +39,7 @@ namespace filesystem * May trigger a Lua error. **/ FileData *luax_getfiledata(lua_State *L, int idx); +bool luax_cangetfiledata(lua_State *L, int idx); File *luax_getfile(lua_State *L, int idx); bool hack_setupWriteDirectory(); diff --git a/jni/love/src/modules/font/BMFontRasterizer.cpp b/jni/love/src/modules/font/BMFontRasterizer.cpp index bda538d3..dd02634d 100644 --- a/jni/love/src/modules/font/BMFontRasterizer.cpp +++ b/jni/love/src/modules/font/BMFontRasterizer.cpp @@ -198,12 +198,11 @@ void BMFontRasterizer::parseConfig(const std::string &configtext) if (!imagemodule) throw love::Exception("Image module not loaded!"); - // Release these variables right away since StrongRef retains. - StrongRef data = filesystem->read(filename.c_str()); - data->release(); + // read() returns a retained ref already. + StrongRef data(filesystem->read(filename.c_str()), Acquire::NORETAIN); - images[pageindex].set(imagemodule->newImageData(data.get())); - images[pageindex]->release(); + // Same with newImageData. + images[pageindex].set(imagemodule->newImageData(data.get()), Acquire::NORETAIN); } } else if (tag == "char") diff --git a/jni/love/src/modules/font/Font.cpp b/jni/love/src/modules/font/Font.cpp index c3a67dbc..1aeb0eb2 100644 --- a/jni/love/src/modules/font/Font.cpp +++ b/jni/love/src/modules/font/Font.cpp @@ -43,9 +43,7 @@ public: Rasterizer *Font::newTrueTypeRasterizer(int size, TrueTypeRasterizer::Hinting hinting) { - StrongRef data(new DefaultFontData); - data->release(); - + StrongRef data(new DefaultFontData, Acquire::NORETAIN); return newTrueTypeRasterizer(data.get(), size, hinting); } diff --git a/jni/love/src/modules/font/GlyphData.cpp b/jni/love/src/modules/font/GlyphData.cpp index 485806bd..7a766522 100644 --- a/jni/love/src/modules/font/GlyphData.cpp +++ b/jni/love/src/modules/font/GlyphData.cpp @@ -40,18 +40,7 @@ GlyphData::GlyphData(uint32 glyph, GlyphMetrics glyphMetrics, GlyphData::Format , format(f) { if (metrics.width > 0 && metrics.height > 0) - { - switch (f) - { - case GlyphData::FORMAT_LUMINANCE_ALPHA: - data = new unsigned char[metrics.width * metrics.height * 2]; - break; - case GlyphData::FORMAT_RGBA: - default: - data = new unsigned char[metrics.width * metrics.height * 4]; - break; - } - } + data = new uint8[metrics.width * metrics.height * getPixelSize()]; } GlyphData::~GlyphData() @@ -61,22 +50,30 @@ GlyphData::~GlyphData() void *GlyphData::getData() const { - return (void *) data; + return data; +} + +size_t GlyphData::getPixelSize() const +{ + switch (format) + { + case FORMAT_LUMINANCE_ALPHA: + return 2; + case FORMAT_RGBA: + default: + return 4; + } +} + +void *GlyphData::getData(int x, int y) const +{ + size_t offset = (y * getWidth() + x) * getPixelSize(); + return data + offset; } size_t GlyphData::getSize() const { - switch (format) - { - case GlyphData::FORMAT_LUMINANCE_ALPHA: - return size_t(getWidth() * getHeight() * 2); - break; - case GlyphData::FORMAT_RGBA: - default: - return size_t(getWidth() * getHeight() * 4); - break; - } - + return size_t(getWidth() * getHeight()) * getPixelSize(); } int GlyphData::getHeight() const @@ -133,22 +130,22 @@ int GlyphData::getBearingY() const int GlyphData::getMinX() const { - return this->getBearingX(); + return getBearingX(); } int GlyphData::getMinY() const { - return this->getHeight() - this->getBearingY(); + return getHeight() - getBearingY(); } int GlyphData::getMaxX() const { - return this->getBearingX() + this->getWidth(); + return getBearingX() + getWidth(); } int GlyphData::getMaxY() const { - return this->getBearingY(); + return getBearingY(); } GlyphData::Format GlyphData::getFormat() const @@ -168,8 +165,8 @@ bool GlyphData::getConstant(GlyphData::Format in, const char *&out) StringMap::Entry GlyphData::formatEntries[] = { - {"luminancealpha", GlyphData::FORMAT_LUMINANCE_ALPHA}, - {"rgba", GlyphData::FORMAT_RGBA}, + {"luminancealpha", FORMAT_LUMINANCE_ALPHA}, + {"rgba", FORMAT_RGBA}, }; StringMap GlyphData::formats(GlyphData::formatEntries, sizeof(GlyphData::formatEntries)); diff --git a/jni/love/src/modules/font/GlyphData.h b/jni/love/src/modules/font/GlyphData.h index 5f8b188a..a7011895 100644 --- a/jni/love/src/modules/font/GlyphData.h +++ b/jni/love/src/modules/font/GlyphData.h @@ -69,6 +69,16 @@ public: void *getData() const; size_t getSize() const; + /** + * Gets the data starting at a specific pixel in the glyph. + **/ + void *getData(int x, int y) const; + + /** + * Gets the size in bytes of each pixel in the glyph. + **/ + size_t getPixelSize() const; + /** * Gets the height of the glyph. **/ @@ -141,7 +151,7 @@ private: GlyphMetrics metrics; // Glyph texture data. - unsigned char *data; + uint8 *data; // The format the data's in. Format format; diff --git a/jni/love/src/modules/font/freetype/TrueTypeRasterizer.cpp b/jni/love/src/modules/font/freetype/TrueTypeRasterizer.cpp index 8fea1b64..1c67ef00 100644 --- a/jni/love/src/modules/font/freetype/TrueTypeRasterizer.cpp +++ b/jni/love/src/modules/font/freetype/TrueTypeRasterizer.cpp @@ -168,7 +168,11 @@ bool TrueTypeRasterizer::hasGlyph(uint32 glyph) const float TrueTypeRasterizer::getKerning(uint32 leftglyph, uint32 rightglyph) const { FT_Vector kerning = {}; - FT_Get_Kerning(face, leftglyph, rightglyph, FT_KERNING_DEFAULT, &kerning); + FT_Get_Kerning(face, + FT_Get_Char_Index(face, leftglyph), + FT_Get_Char_Index(face, rightglyph), + FT_KERNING_DEFAULT, + &kerning); return float(kerning.x >> 6); } diff --git a/jni/love/src/modules/graphics/Graphics.cpp b/jni/love/src/modules/graphics/Graphics.cpp index 44337d10..f726fc17 100644 --- a/jni/love/src/modules/graphics/Graphics.cpp +++ b/jni/love/src/modules/graphics/Graphics.cpp @@ -142,14 +142,14 @@ bool Graphics::getConstant(CompareMode in, const char *&out) return compareModes.find(in, out); } -bool Graphics::getConstant(const char *in, Support &out) +bool Graphics::getConstant(const char *in, Feature &out) { - return support.find(in, out); + return features.find(in, out); } -bool Graphics::getConstant(Support in, const char *&out) +bool Graphics::getConstant(Feature in, const char *&out) { - return support.find(in, out); + return features.find(in, out); } bool Graphics::getConstant(const char *in, SystemLimit &out) @@ -172,16 +172,6 @@ bool Graphics::getConstant(StackType in, const char *&out) return stackTypes.find(in, out); } -bool Graphics::getConstant(const char *in, StatType &out) -{ - return statTypes.find(in, out); -} - -bool Graphics::getConstant(StatType in, const char *&out) -{ - return statTypes.find(in, out); -} - StringMap::Entry Graphics::drawModeEntries[] = { { "line", DRAW_LINE }, @@ -263,14 +253,14 @@ StringMap::Entry Graphics::co StringMap Graphics::compareModes(Graphics::compareModeEntries, sizeof(Graphics::compareModeEntries)); -StringMap::Entry Graphics::supportEntries[] = +StringMap::Entry Graphics::featureEntries[] = { - { "multicanvasformats", SUPPORT_MULTI_CANVAS_FORMATS }, - { "clampzero", SUPPORT_CLAMP_ZERO }, - { "lighten", SUPPORT_LIGHTEN }, + { "multicanvasformats", FEATURE_MULTI_CANVAS_FORMATS }, + { "clampzero", FEATURE_CLAMP_ZERO }, + { "lighten", FEATURE_LIGHTEN }, }; -StringMap Graphics::support(Graphics::supportEntries, sizeof(Graphics::supportEntries)); +StringMap Graphics::features(Graphics::featureEntries, sizeof(Graphics::featureEntries)); StringMap::Entry Graphics::systemLimitEntries[] = { @@ -290,17 +280,5 @@ StringMap::Entry Graphics::stackT StringMap Graphics::stackTypes(Graphics::stackTypeEntries, sizeof(Graphics::stackTypeEntries)); -StringMap::Entry Graphics::statTypeEntries[] = -{ - { "drawcalls", STAT_DRAW_CALLS }, - { "canvasswitches", STAT_CANVAS_SWITCHES }, - { "canvases", STAT_CANVASES }, - { "images", STAT_IMAGES }, - { "fonts", STAT_FONTS }, - { "texturememory", STAT_TEXTURE_MEMORY }, -}; - -StringMap Graphics::statTypes(Graphics::statTypeEntries, sizeof(Graphics::statTypeEntries)); - } // graphics } // love diff --git a/jni/love/src/modules/graphics/Graphics.h b/jni/love/src/modules/graphics/Graphics.h index eb37c4d0..06e55db5 100644 --- a/jni/love/src/modules/graphics/Graphics.h +++ b/jni/love/src/modules/graphics/Graphics.h @@ -136,12 +136,12 @@ public: COMPARE_MAX_ENUM }; - enum Support + enum Feature { - SUPPORT_MULTI_CANVAS_FORMATS, - SUPPORT_CLAMP_ZERO, - SUPPORT_LIGHTEN, - SUPPORT_MAX_ENUM + FEATURE_MULTI_CANVAS_FORMATS, + FEATURE_CLAMP_ZERO, + FEATURE_LIGHTEN, + FEATURE_MAX_ENUM }; enum Renderer @@ -167,17 +167,6 @@ public: STACK_MAX_ENUM }; - enum StatType - { - STAT_DRAW_CALLS, - STAT_CANVAS_SWITCHES, - STAT_CANVASES, - STAT_IMAGES, - STAT_FONTS, - STAT_TEXTURE_MEMORY, - STAT_MAX_ENUM - }; - struct RendererInfo { std::string name; @@ -190,6 +179,7 @@ public: { int drawCalls; int canvasSwitches; + int shaderSwitches; int canvases; int images; int fonts; @@ -291,8 +281,8 @@ public: static bool getConstant(const char *in, CompareMode &out); static bool getConstant(CompareMode in, const char *&out); - static bool getConstant(const char *in, Support &out); - static bool getConstant(Support in, const char *&out); + static bool getConstant(const char *in, Feature &out); + static bool getConstant(Feature in, const char *&out); static bool getConstant(const char *in, SystemLimit &out); static bool getConstant(SystemLimit in, const char *&out); @@ -300,9 +290,6 @@ public: static bool getConstant(const char *in, StackType &out); static bool getConstant(StackType in, const char *&out); - static bool getConstant(const char *in, StatType &out); - static bool getConstant(StatType in, const char *&out); - private: static StringMap::Entry drawModeEntries[]; @@ -329,8 +316,8 @@ private: static StringMap::Entry compareModeEntries[]; static StringMap compareModes; - static StringMap::Entry supportEntries[]; - static StringMap support; + static StringMap::Entry featureEntries[]; + static StringMap features; static StringMap::Entry systemLimitEntries[]; static StringMap systemLimits; @@ -338,9 +325,6 @@ private: static StringMap::Entry stackTypeEntries[]; static StringMap stackTypes; - static StringMap::Entry statTypeEntries[]; - static StringMap statTypes; - }; // Graphics } // graphics diff --git a/jni/love/src/modules/graphics/ParticleSystem.cpp b/jni/love/src/modules/graphics/ParticleSystem.cpp index 377d5e14..fdb445fc 100644 --- a/jni/love/src/modules/graphics/ParticleSystem.cpp +++ b/jni/love/src/modules/graphics/ParticleSystem.cpp @@ -242,6 +242,7 @@ void ParticleSystem::initParticle(Particle *p, float t) p->position = pos; + float rand_x, rand_y; switch (areaSpreadDistribution) { case DISTRIBUTION_UNIFORM: @@ -252,6 +253,12 @@ void ParticleSystem::initParticle(Particle *p, float t) p->position.x += (float) rng.randomNormal(areaSpread.getX()); p->position.y += (float) rng.randomNormal(areaSpread.getY()); break; + case DISTRIBUTION_ELLIPSE: + rand_x = (float) rng.random(-1, 1); + rand_y = (float) rng.random(-1, 1); + p->position.x += areaSpread.getX() * (rand_x * sqrt(1 - 0.5f*pow(rand_y, 2))); + p->position.y += areaSpread.getY() * (rand_y * sqrt(1 - 0.5f*pow(rand_x, 2))); + break; case DISTRIBUTION_NONE: default: break; @@ -437,6 +444,9 @@ void ParticleSystem::setEmissionRate(float rate) if (rate < 0.0f) throw love::Exception("Invalid emission rate"); emissionRate = rate; + + // Prevent an explosion when dramatically increasing the rate + emitCounter = std::min(emitCounter, 1.0f/rate); } float ParticleSystem::getEmissionRate() const @@ -932,9 +942,6 @@ void ParticleSystem::update(float dt) addParticle(1.0f - (emitCounter - rate) / total); emitCounter -= rate; } - /*int particles = (int)(emissionRate * dt); - for (int i = 0; i != particles; i++) - add();*/ life -= dt; if (lifetime != -1 && life < 0) @@ -969,6 +976,7 @@ StringMap ParticleSystem::distributions(ParticleSystem::distributionsEntries, sizeof(ParticleSystem::distributionsEntries)); diff --git a/jni/love/src/modules/graphics/ParticleSystem.h b/jni/love/src/modules/graphics/ParticleSystem.h index cae0307d..b95941c3 100644 --- a/jni/love/src/modules/graphics/ParticleSystem.h +++ b/jni/love/src/modules/graphics/ParticleSystem.h @@ -46,13 +46,14 @@ class ParticleSystem : public Drawable { public: /** - * Type of distribution new particles are drawn from: None, uniform, normal. + * Type of distribution new particles are drawn from: None, uniform, normal, ellipse. */ enum AreaSpreadDistribution { DISTRIBUTION_NONE, DISTRIBUTION_UNIFORM, DISTRIBUTION_NORMAL, + DISTRIBUTION_ELLIPSE, DISTRIBUTION_MAX_ENUM }; diff --git a/jni/love/src/modules/graphics/Quad.cpp b/jni/love/src/modules/graphics/Quad.cpp index 9a0ebf85..2bc656c9 100644 --- a/jni/love/src/modules/graphics/Quad.cpp +++ b/jni/love/src/modules/graphics/Quad.cpp @@ -79,6 +79,16 @@ Quad::Viewport Quad::getViewport() const return viewport; } +double Quad::getTextureWidth() const +{ + return sw; +} + +double Quad::getTextureHeight() const +{ + return sh; +} + const Vertex *Quad::getVertices() const { return vertices; diff --git a/jni/love/src/modules/graphics/Quad.h b/jni/love/src/modules/graphics/Quad.h index 15220e49..26e06f3d 100644 --- a/jni/love/src/modules/graphics/Quad.h +++ b/jni/love/src/modules/graphics/Quad.h @@ -47,6 +47,9 @@ public: void setViewport(const Viewport &v); Viewport getViewport() const; + double getTextureWidth() const; + double getTextureHeight() const; + const Vertex *getVertices() const; private: diff --git a/jni/love/src/modules/graphics/opengl/Canvas.cpp b/jni/love/src/modules/graphics/opengl/Canvas.cpp index b58420f3..2f704c9f 100644 --- a/jni/love/src/modules/graphics/opengl/Canvas.cpp +++ b/jni/love/src/modules/graphics/opengl/Canvas.cpp @@ -352,7 +352,7 @@ bool Canvas::setWrap(const Texture::Wrap &w) wrap = w; if ((GLAD_ES_VERSION_2_0 && !(GLAD_ES_VERSION_3_0 || GLAD_OES_texture_npot)) - && (width != next_p2(width) || height != next_p2(height))) + && (width != nextP2(width) || height != nextP2(height))) { if (wrap.s != WRAP_CLAMP || wrap.t != WRAP_CLAMP) success = false; @@ -501,13 +501,15 @@ void Canvas::startGrab() gl.setFramebufferSRGB(false); } - if (attachedCanvases.size() == 0) - return; + if (attachedCanvases.size() > 0) + { + // Make sure the FBO is only using a single draw buffer. + // GLES3 only has glDrawBuffers, so we avoid using glDrawBuffer. + const GLenum buffers[] = {GL_COLOR_ATTACHMENT0}; + glDrawBuffers(1, buffers); - // Make sure the FBO is only using a single draw buffer. - glDrawBuffer(GL_COLOR_ATTACHMENT0); - - attachedCanvases.clear(); + attachedCanvases.clear(); + } } void Canvas::stopGrab(bool switchingToOtherCanvas) @@ -521,7 +523,8 @@ void Canvas::stopGrab(bool switchingToOtherCanvas) // Make sure the canvas texture is up to date if we're using MSAA. resolveMSAA(false); - gl.matrices.projection.pop_back(); + if (gl.matrices.projection.size() > 1) + gl.matrices.projection.pop_back(); if (!switchingToOtherCanvas) { @@ -552,14 +555,18 @@ bool Canvas::checkCreateStencil() gl.bindFramebuffer(GL_FRAMEBUFFER, fbo); GLenum format = GL_STENCIL_INDEX8; - GLenum attachment = GL_STENCIL_ATTACHMENT; + std::vector attachments = {GL_STENCIL_ATTACHMENT}; // Prefer a combined depth/stencil buffer. - if (GLAD_ES_VERSION_3_0 || GLAD_VERSION_3_0 || GLAD_ARB_framebuffer_object - || GLAD_EXT_packed_depth_stencil || GLAD_OES_packed_depth_stencil) + if (GLAD_ES_VERSION_3_0 || GLAD_VERSION_3_0 || GLAD_ARB_framebuffer_object) { format = GL_DEPTH24_STENCIL8; - attachment = GL_DEPTH_STENCIL_ATTACHMENT; + attachments = {GL_DEPTH_STENCIL_ATTACHMENT}; + } + else if (GLAD_EXT_packed_depth_stencil || GLAD_OES_packed_depth_stencil) + { + format = GL_DEPTH24_STENCIL8; + attachments = {GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT}; } glGenRenderbuffers(1, &depth_stencil); @@ -570,8 +577,9 @@ bool Canvas::checkCreateStencil() else glRenderbufferStorage(GL_RENDERBUFFER, format, width, height); - // Attach the stencil buffer to the framebuffer object. - glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, depth_stencil); + // Attach the buffer to the framebuffer object. + for (GLenum attachment : attachments) + glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, depth_stencil); glBindRenderbuffer(GL_RENDERBUFFER, 0); diff --git a/jni/love/src/modules/graphics/opengl/Font.cpp b/jni/love/src/modules/graphics/opengl/Font.cpp index 5e5e071e..867b70e3 100644 --- a/jni/love/src/modules/graphics/opengl/Font.cpp +++ b/jni/love/src/modules/graphics/opengl/Font.cpp @@ -25,6 +25,7 @@ #include "common/math.h" #include "common/Matrix.h" +#include "graphics/Graphics.h" #include #include @@ -112,12 +113,36 @@ Font::TextureSize Font::getNextTextureSize() const return size; } +GLenum Font::getTextureFormat(FontType fontType, GLenum *internalformat) const +{ + GLenum format = fontType == FONT_TRUETYPE ? GL_LUMINANCE_ALPHA : GL_RGBA; + GLenum iformat = fontType == FONT_TRUETYPE ? GL_LUMINANCE8_ALPHA8 : GL_RGBA8; + + if (format == GL_RGBA && isGammaCorrect()) + { + // In ES2, the internalformat and format params of TexImage must match. + // ES3 doesn't allow "GL_SRGB_ALPHA" as the internal format. But it also + // requires GL_LUMINANCE_ALPHA rather than GL_LUMINANCE8_ALPHA8 as the + // internal format, for LA. + if (GLAD_ES_VERSION_2_0 && !GLAD_ES_VERSION_3_0) + format = iformat = GL_SRGB_ALPHA; + else + iformat = GL_SRGB8_ALPHA8; + } + else if (GLAD_ES_VERSION_2_0) + iformat = format; + + if (internalformat != nullptr) + *internalformat = iformat; + + return format; +} + void Font::createTexture() { OpenGL::TempDebugGroup debuggroup("Font create texture"); - GLenum format = type == FONT_TRUETYPE ? GL_LUMINANCE_ALPHA : GL_RGBA; - size_t bpp = format == GL_LUMINANCE_ALPHA ? 2 : 4; + size_t bpp = type == FONT_TRUETYPE ? 2 : 4; size_t prevmemsize = textureMemorySize; if (prevmemsize > 0) @@ -151,13 +176,8 @@ void Font::createTexture() glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - GLenum internalformat = type == FONT_TRUETYPE ? GL_LUMINANCE8_ALPHA8 : GL_RGBA8; - - // In GLES2, the internalformat and format params of TexImage have to match. - // There is still no GL_LUMINANCE8_ALPHA8 in GLES3, so we have to use - // GL_LUMINANCE_ALPHA even on ES3. - if (GLAD_ES_VERSION_2_0) - internalformat = format; + GLenum internalformat = GL_RGBA; + GLenum format = getTextureFormat(type, &internalformat); // Initialize the texture with transparent black. std::vector emptydata(size.width * size.height * bpp, 0); @@ -232,7 +252,7 @@ love::font::GlyphData *Font::getRasterizerGlyphData(uint32 glyph) const Font::Glyph &Font::addGlyph(uint32 glyph) { - love::font::GlyphData *gd = getRasterizerGlyphData(glyph); + StrongRef gd(getRasterizerGlyphData(glyph), Acquire::NORETAIN); int w = gd->getWidth(); int h = gd->getHeight(); @@ -244,18 +264,15 @@ const Font::Glyph &Font::addGlyph(uint32 glyph) textureY += rowHeight; rowHeight = TEXTURE_PADDING; } + if (textureY + h + TEXTURE_PADDING > textureHeight) { // totally out of space - new texture! - try - { - createTexture(); - } - catch (love::Exception &) - { - gd->release(); - throw; - } + createTexture(); + + // Makes sure the above code for checking if the glyph can fit at + // the current position in the texture is run again for this glyph. + return addGlyph(glyph); } Glyph g; @@ -268,14 +285,12 @@ const Font::Glyph &Font::addGlyph(uint32 glyph) // don't waste space for empty glyphs. also fixes a divide by zero bug with ATI drivers if (w > 0 && h > 0) { - const GLuint t = textures.back(); + GLenum format = getTextureFormat(type); + g.texture = textures.back(); - gl.bindTexture(t); + gl.bindTexture(g.texture); glTexSubImage2D(GL_TEXTURE_2D, 0, textureX, textureY, w, h, - (type == FONT_TRUETYPE ? GL_LUMINANCE_ALPHA : GL_RGBA), - GL_UNSIGNED_BYTE, gd->getData()); - - g.texture = t; + format, GL_UNSIGNED_BYTE, gd->getData()); double tX = (double) textureX, tY = (double) textureY; double tWidth = (double) textureWidth, tHeight = (double) textureHeight; @@ -300,18 +315,12 @@ const Font::Glyph &Font::addGlyph(uint32 glyph) g.vertices[i].x += gd->getBearingX(); g.vertices[i].y -= gd->getBearingY(); } + + textureX += w + TEXTURE_PADDING; + rowHeight = std::max(rowHeight, h + TEXTURE_PADDING); } - if (w > 0) - textureX += (w + TEXTURE_PADDING); - - if (h > 0) - rowHeight = std::max(rowHeight, h + TEXTURE_PADDING); - - gd->release(); - const auto p = glyphs.insert(std::make_pair(glyph, g)); - return p.first->second; } @@ -378,6 +387,11 @@ void Font::getCodepointsFromString(const std::vector &strs, Color for (const ColoredString &cstr : strs) { + // No need to add the color if the string is empty anyway, and the code + // further on assumes no two colors share the same starting position. + if (cstr.str.size() == 0) + continue; + IndexedColor c = {cstr.color, (int) codepoints.cps.size()}; codepoints.colors.push_back(c); diff --git a/jni/love/src/modules/graphics/opengl/Font.h b/jni/love/src/modules/graphics/opengl/Font.h index d37a7005..f457f488 100644 --- a/jni/love/src/modules/graphics/opengl/Font.h +++ b/jni/love/src/modules/graphics/opengl/Font.h @@ -195,7 +195,7 @@ public: uint32 getTextureCacheID() const; static bool getConstant(const char *in, AlignMode &out); - static bool getConstant(AlignMode in, const char *&out); + static bool getConstant(AlignMode in, const char *&out); static int fontCount; @@ -222,6 +222,7 @@ private: }; TextureSize getNextTextureSize() const; + GLenum getTextureFormat(FontType fontType, GLenum *internalformat = nullptr) const; void createTexture(); love::font::GlyphData *getRasterizerGlyphData(uint32 glyph); const Glyph &addGlyph(uint32 glyph); diff --git a/jni/love/src/modules/graphics/opengl/GLBuffer.cpp b/jni/love/src/modules/graphics/opengl/GLBuffer.cpp index 6658e8fd..8c7c482c 100644 --- a/jni/love/src/modules/graphics/opengl/GLBuffer.cpp +++ b/jni/love/src/modules/graphics/opengl/GLBuffer.cpp @@ -58,12 +58,10 @@ GLBuffer::GLBuffer(size_t size, const void *data, GLenum target, GLenum usage, u if (data != nullptr) memcpy(memory_map, data, size); - bool ok = load(data != nullptr); - - if (!ok) + if (!load(data != nullptr)) { delete[] memory_map; - throw love::Exception("Could not load VBO."); + throw love::Exception("Could not load vertex buffer (out of VRAM?)"); } } @@ -221,13 +219,16 @@ bool GLBuffer::load(bool restore) GLBuffer::Bind bind(*this); + while (glGetError() != GL_NO_ERROR) + /* Clear the error buffer. */; + // Copy the old buffer only if 'restore' was requested. const GLvoid *src = restore ? memory_map : nullptr; // Note that if 'src' is '0', no data will be copied. glBufferData(getTarget(), (GLsizeiptr) getSize(), src, getUsage()); - return true; + return (glGetError() == GL_NO_ERROR); } void GLBuffer::unload() @@ -278,7 +279,7 @@ QuadIndices::QuadIndices(size_t size) } catch (std::bad_alloc &) { - delete[] newbuffer; + delete newbuffer; delete[] newindices; throw love::Exception("Out of memory."); } diff --git a/jni/love/src/modules/graphics/opengl/Graphics.cpp b/jni/love/src/modules/graphics/opengl/Graphics.cpp index 5ab7608e..ebc8a135 100644 --- a/jni/love/src/modules/graphics/opengl/Graphics.cpp +++ b/jni/love/src/modules/graphics/opengl/Graphics.cpp @@ -203,11 +203,10 @@ void Graphics::checkSetDefaultFont() if (!fontmodule) throw love::Exception("Font module has not been loaded."); - StrongRef r(fontmodule->newTrueTypeRasterizer(12, font::TrueTypeRasterizer::HINTING_NORMAL)); - r->release(); + auto hinting = font::TrueTypeRasterizer::HINTING_NORMAL; + StrongRef r(fontmodule->newTrueTypeRasterizer(12, hinting), Acquire::NORETAIN); - defaultFont.set(newFont(r.get())); - defaultFont->release(); + defaultFont.set(newFont(r.get()), Acquire::NORETAIN); } states.back().font.set(defaultFont.get()); @@ -253,8 +252,6 @@ bool Graphics::setMode(int width, int height) created = true; - setViewportSize(width, height); - // Enable blending glEnable(GL_BLEND); @@ -311,6 +308,8 @@ bool Graphics::setMode(int width, int height) if (quadIndices == nullptr) quadIndices = new QuadIndices(20); + setViewportSize(width, height); + // Restore the graphics state. restoreState(states.back()); @@ -318,18 +317,20 @@ bool Graphics::setMode(int width, int height) pixelSizeStack.reserve(5); pixelSizeStack.push_back(1); + int gammacorrect = isGammaCorrect() ? 1 : 0; + // We always need a default shader. if (!Shader::defaultShader) { Renderer renderer = GLAD_ES_VERSION_2_0 ? RENDERER_OPENGLES : RENDERER_OPENGL; - Shader::defaultShader = newShader(Shader::defaultCode[renderer]); + Shader::defaultShader = newShader(Shader::defaultCode[renderer][gammacorrect]); } // and a default video shader. if (!Shader::defaultVideoShader) { Renderer renderer = GLAD_ES_VERSION_2_0 ? RENDERER_OPENGLES : RENDERER_OPENGL; - Shader::defaultVideoShader = newShader(Shader::defaultVideoCode[renderer]); + Shader::defaultVideoShader = newShader(Shader::defaultVideoCode[renderer][gammacorrect]); } // A shader should always be active, but the default shader shouldn't be @@ -451,8 +452,8 @@ void Graphics::clear(Colorf c) { // This seems to be enough to fix the bug for me. Other methods I've // tried (e.g. dummy draws) don't work in all cases. - glUseProgram(0); - glUseProgram(Shader::current->getProgram()); + gl.useProgram(0); + gl.useProgram(Shader::current->getProgram()); } } @@ -529,8 +530,8 @@ void Graphics::clear(const std::vector &colors) { // This seems to be enough to fix the bug for me. Other methods I've // tried (e.g. dummy draws) don't work in all cases. - glUseProgram(0); - glUseProgram(Shader::current->getProgram()); + gl.useProgram(0); + gl.useProgram(Shader::current->getProgram()); } } @@ -609,6 +610,7 @@ void Graphics::present() // Reset the per-frame stat counts. gl.stats.drawCalls = 0; gl.stats.framebufferBinds = 0; + gl.stats.shaderSwitches = 0; } int Graphics::getWidth() const @@ -1106,7 +1108,7 @@ void Graphics::setBlendMode(BlendMode mode, BlendAlpha alphamode) if (mode == BLEND_LIGHTEN || mode == BLEND_DARKEN) { - if (!isSupported(SUPPORT_LIGHTEN)) + if (!isSupported(FEATURE_LIGHTEN)) throw love::Exception("The 'lighten' and 'darken' blend modes are not supported on this system."); } @@ -1652,6 +1654,7 @@ Graphics::Stats Graphics::getStats() const stats.drawCalls = gl.stats.drawCalls; stats.canvasSwitches = gl.stats.framebufferBinds; + stats.shaderSwitches = gl.stats.shaderSwitches; stats.canvases = Canvas::canvasCount; stats.images = Image::imageCount; stats.fonts = Font::fontCount; @@ -1662,13 +1665,10 @@ Graphics::Stats Graphics::getStats() const double Graphics::getSystemLimit(SystemLimit limittype) const { - GLfloat limits[2]; - switch (limittype) { case Graphics::LIMIT_POINT_SIZE: - glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, limits); - return (double) limits[1]; + return (double) gl.getMaxPointSize(); case Graphics::LIMIT_TEXTURE_SIZE: return (double) gl.getMaxTextureSize(); case Graphics::LIMIT_MULTI_CANVAS: @@ -1680,15 +1680,15 @@ double Graphics::getSystemLimit(SystemLimit limittype) const } } -bool Graphics::isSupported(Support feature) const +bool Graphics::isSupported(Feature feature) const { switch (feature) { - case SUPPORT_MULTI_CANVAS_FORMATS: + case FEATURE_MULTI_CANVAS_FORMATS: return Canvas::isMultiFormatMultiCanvasSupported(); - case SUPPORT_CLAMP_ZERO: + case FEATURE_CLAMP_ZERO: return gl.isClampZeroTextureWrapSupported(); - case SUPPORT_LIGHTEN: + case FEATURE_LIGHTEN: return GLAD_VERSION_1_4 || GLAD_ES_VERSION_3_0 || GLAD_EXT_blend_minmax; default: return false; diff --git a/jni/love/src/modules/graphics/opengl/Graphics.h b/jni/love/src/modules/graphics/opengl/Graphics.h index f1103354..993e62cb 100644 --- a/jni/love/src/modules/graphics/opengl/Graphics.h +++ b/jni/love/src/modules/graphics/opengl/Graphics.h @@ -468,7 +468,7 @@ public: /** * Gets whether a graphics feature is supported on this system. **/ - bool isSupported(Support feature) const; + bool isSupported(Feature feature) const; void push(StackType type = STACK_TRANSFORM); void pop(); diff --git a/jni/love/src/modules/graphics/opengl/Image.cpp b/jni/love/src/modules/graphics/opengl/Image.cpp index 43190b3d..ab4a4a37 100644 --- a/jni/love/src/modules/graphics/opengl/Image.cpp +++ b/jni/love/src/modules/graphics/opengl/Image.cpp @@ -133,7 +133,11 @@ Image::Image(const std::vector &compressedda if (compresseddata[0]->getMipmapCount() == 1) this->flags.mipmaps = false; else - throw love::Exception("Image cannot have mipmaps: compressed image data does not have all required mipmap levels."); + { + throw love::Exception("Image cannot have mipmaps: compressed image data does not have all required mipmap levels (expected %d, got %d)", + getMipmapCount(width, height), + compresseddata[0]->getMipmapCount()); + } } for (const auto &cd : compresseddata) @@ -217,8 +221,8 @@ void Image::loadDefaultTexture() setFilter(filter); // A nice friendly checkerboard to signify invalid textures... - GLubyte px[] = {0xFF,0xFF,0xFF,0xFF, 0xFF,0xC0,0xC0,0xFF, - 0xFF,0xC0,0xC0,0xFF, 0xFF,0xFF,0xFF,0xFF}; + GLubyte px[] = {0xFF,0xFF,0xFF,0xFF, 0xFF,0xA0,0xA0,0xFF, + 0xFF,0xA0,0xA0,0xFF, 0xFF,0xFF,0xFF,0xFF}; glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, px); } @@ -308,7 +312,7 @@ bool Image::loadVolatile() // NPOT textures don't support mipmapping without full NPOT support. if ((GLAD_ES_VERSION_2_0 && !(GLAD_ES_VERSION_3_0 || GLAD_OES_texture_npot)) - && (width != next_p2(width) || height != next_p2(height))) + && (width != nextP2(width) || height != nextP2(height))) { flags.mipmaps = false; filter.mipmap = FILTER_NONE; @@ -519,7 +523,7 @@ bool Image::setWrap(const Texture::Wrap &w) wrap = w; if ((GLAD_ES_VERSION_2_0 && !(GLAD_ES_VERSION_3_0 || GLAD_OES_texture_npot)) - && (width != next_p2(width) || height != next_p2(height))) + && (width != nextP2(width) || height != nextP2(height))) { if (wrap.s != WRAP_CLAMP || wrap.t != WRAP_CLAMP) success = false; diff --git a/jni/love/src/modules/graphics/opengl/OpenGL.cpp b/jni/love/src/modules/graphics/opengl/OpenGL.cpp index 42319a29..bb084993 100644 --- a/jni/love/src/modules/graphics/opengl/OpenGL.cpp +++ b/jni/love/src/modules/graphics/opengl/OpenGL.cpp @@ -289,6 +289,10 @@ void OpenGL::initMaxValues() maxRenderbufferSamples = 0; glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxTextureUnits); + + GLfloat limits[2]; + glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, limits); + maxPointSize = limits[1]; } void OpenGL::initMatrices() @@ -491,6 +495,12 @@ void OpenGL::bindFramebuffer(GLenum target, GLuint framebuffer) ++stats.framebufferBinds; } +void OpenGL::useProgram(GLuint program) +{ + glUseProgram(program); + ++stats.shaderSwitches; +} + GLuint OpenGL::getDefaultFBO() const { #ifdef LOVE_IOS @@ -656,6 +666,11 @@ int OpenGL::getMaxTextureUnits() const return maxTextureUnits; } +float OpenGL::getMaxPointSize() const +{ + return maxPointSize; +} + void OpenGL::updateTextureMemorySize(size_t oldsize, size_t newsize) { int64 memsize = (int64) stats.textureMemory + ((int64) newsize - (int64) oldsize); diff --git a/jni/love/src/modules/graphics/opengl/OpenGL.h b/jni/love/src/modules/graphics/opengl/OpenGL.h index 7ec94093..8b89f018 100644 --- a/jni/love/src/modules/graphics/opengl/OpenGL.h +++ b/jni/love/src/modules/graphics/opengl/OpenGL.h @@ -167,6 +167,7 @@ public: size_t textureMemory; int drawCalls; int framebufferBinds; + int shaderSwitches; } stats; struct Bugs @@ -305,6 +306,11 @@ public: **/ void bindFramebuffer(GLenum target, GLuint framebuffer); + /** + * Calls glUseProgram. + **/ + void useProgram(GLuint program); + /** * This will usually be 0 (system drawable), but some platforms require a * non-zero FBO for rendering. @@ -377,6 +383,12 @@ public: **/ int getMaxTextureUnits() const; + /** + * Returns the maximum point size. + **/ + float getMaxPointSize() const; + + void updateTextureMemorySize(size_t oldsize, size_t newsize); /** @@ -408,6 +420,7 @@ private: int maxRenderTargets; int maxRenderbufferSamples; int maxTextureUnits; + float maxPointSize; Vendor vendor; diff --git a/jni/love/src/modules/graphics/opengl/Shader.cpp b/jni/love/src/modules/graphics/opengl/Shader.cpp index f6ff898a..16aff824 100644 --- a/jni/love/src/modules/graphics/opengl/Shader.cpp +++ b/jni/love/src/modules/graphics/opengl/Shader.cpp @@ -66,8 +66,8 @@ Shader *Shader::current = nullptr; Shader *Shader::defaultShader = nullptr; Shader *Shader::defaultVideoShader = nullptr; -Shader::ShaderSource Shader::defaultCode[Graphics::RENDERER_MAX_ENUM]; -Shader::ShaderSource Shader::defaultVideoCode[Graphics::RENDERER_MAX_ENUM]; +Shader::ShaderSource Shader::defaultCode[Graphics::RENDERER_MAX_ENUM][2]; +Shader::ShaderSource Shader::defaultVideoCode[Graphics::RENDERER_MAX_ENUM][2]; std::vector Shader::textureCounters; @@ -181,7 +181,7 @@ void Shader::mapActiveUniforms() GLint activeprogram = 0; glGetIntegerv(GL_CURRENT_PROGRAM, &activeprogram); - glUseProgram(program); + gl.useProgram(program); GLint numuniforms; glGetProgramiv(program, GL_ACTIVE_UNIFORMS, &numuniforms); @@ -192,13 +192,15 @@ void Shader::mapActiveUniforms() for (int i = 0; i < numuniforms; i++) { GLsizei namelen = 0; - Uniform u = {}; + GLenum gltype = 0; + UniformInfo u = {}; - glGetActiveUniform(program, (GLuint) i, bufsize, &namelen, &u.count, &u.type, cname); + glGetActiveUniform(program, (GLuint) i, bufsize, &namelen, &u.count, &gltype, cname); u.name = std::string(cname, (size_t) namelen); u.location = glGetUniformLocation(program, u.name.c_str()); - u.baseType = getUniformBaseType(u.type); + u.baseType = getUniformBaseType(gltype); + u.components = getUniformTypeSize(gltype); // Initialize all samplers to 0. Both GLSL and GLSL ES are supposed to // do this themselves, but some Android devices (galaxy tab 3 and 4) @@ -223,7 +225,7 @@ void Shader::mapActiveUniforms() uniforms[u.name] = u; } - glUseProgram(activeprogram); + gl.useProgram(activeprogram); } bool Shader::loadVolatile() @@ -250,9 +252,10 @@ bool Shader::loadVolatile() std::vector shaderids; - const ShaderSource *defaults = &defaultCode[Graphics::RENDERER_OPENGL]; + bool gammacorrect = graphics::isGammaCorrect(); + const ShaderSource *defaults = &defaultCode[Graphics::RENDERER_OPENGL][gammacorrect ? 1 : 0]; if (GLAD_ES_VERSION_2_0) - defaults = &defaultCode[Graphics::RENDERER_OPENGLES]; + defaults = &defaultCode[Graphics::RENDERER_OPENGLES][gammacorrect ? 1 : 0]; // The shader program must have both vertex and pixel shader stages. const std::string &vertexcode = shaderSource.vertex.empty() ? defaults->vertex : shaderSource.vertex; @@ -333,7 +336,7 @@ bool Shader::loadVolatile() void Shader::unloadVolatile() { if (current == this) - glUseProgram(0); + gl.useProgram(0); if (program != 0) { @@ -405,23 +408,23 @@ void Shader::attach(bool temporary) { if (current != this) { - glUseProgram(program); + gl.useProgram(program); current = this; // retain/release happens in Graphics::setShader. - } - if (!temporary) - { - // make sure all sent textures are properly bound to their respective texture units - // note: list potentially contains texture ids of deleted/invalid textures! - for (size_t i = 0; i < activeTexUnits.size(); ++i) + if (!temporary) { - if (activeTexUnits[i] > 0) - gl.bindTextureToUnit(activeTexUnits[i], i + 1, false); - } + // make sure all sent textures are properly bound to their respective texture units + // note: list potentially contains texture ids of deleted/invalid textures! + for (size_t i = 0; i < activeTexUnits.size(); ++i) + { + if (activeTexUnits[i] > 0) + gl.bindTextureToUnit(activeTexUnits[i], i + 1, false); + } - // We always want to use texture unit 0 for everyhing else. - gl.setTextureUnit(0); + // We always want to use texture unit 0 for everyhing else. + gl.setTextureUnit(0); + } } } @@ -436,135 +439,114 @@ void Shader::detach() } if (current != nullptr) - glUseProgram(0); + gl.useProgram(0); current = nullptr; } -const Shader::Uniform &Shader::getUniform(const std::string &name) const +const Shader::UniformInfo *Shader::getUniformInfo(const std::string &name) const { - std::map::const_iterator it = uniforms.find(name); + const auto it = uniforms.find(name); if (it == uniforms.end()) - throw love::Exception("Variable '%s' does not exist.\n" - "A common error is to define but not use the variable.", name.c_str()); + return nullptr; - return it->second; + return &(it->second); } -void Shader::checkSetUniformError(const Uniform &u, int size, int count, UniformType sendtype) const +void Shader::sendInts(const UniformInfo *info, const int *vec, int count) { - if (!program) - throw love::Exception("No active shader program."); + if (info->baseType != UNIFORM_INT && info->baseType != UNIFORM_BOOL) + return; - int realsize = getUniformTypeSize(u.type); - - if (size != realsize) - throw love::Exception("Value size of %d does not match variable size of %d.", size, realsize); - - if ((u.count == 1 && count > 1) || count < 0) - throw love::Exception("Invalid number of values (expected %d, got %d).", u.count, count); - - if (u.baseType == UNIFORM_SAMPLER && sendtype != u.baseType) - throw love::Exception("Cannot send a value of this type to an Image variable."); - - if ((sendtype == UNIFORM_FLOAT && u.baseType == UNIFORM_INT) || (sendtype == UNIFORM_INT && u.baseType == UNIFORM_FLOAT)) - throw love::Exception("Cannot convert between float and int."); -} - -void Shader::sendInt(const std::string &name, int size, const GLint *vec, int count) -{ TemporaryAttacher attacher(this); - const Uniform &u = getUniform(name); - checkSetUniformError(u, size, count, UNIFORM_INT); + int location = info->location; - switch (size) + switch (info->components) { case 4: - glUniform4iv(u.location, count, vec); + glUniform4iv(location, count, vec); break; case 3: - glUniform3iv(u.location, count, vec); + glUniform3iv(location, count, vec); break; case 2: - glUniform2iv(u.location, count, vec); + glUniform2iv(location, count, vec); break; case 1: default: - glUniform1iv(u.location, count, vec); + glUniform1iv(location, count, vec); break; } } -void Shader::sendFloat(const std::string &name, int size, const GLfloat *vec, int count) +void Shader::sendFloats(const UniformInfo *info, const float *vec, int count) { + if (info->baseType != UNIFORM_FLOAT && info->baseType != UNIFORM_BOOL) + return; + TemporaryAttacher attacher(this); - const Uniform &u = getUniform(name); - checkSetUniformError(u, size, count, UNIFORM_FLOAT); + int location = info->location; - switch (size) + switch (info->components) { case 4: - glUniform4fv(u.location, count, vec); + glUniform4fv(location, count, vec); break; case 3: - glUniform3fv(u.location, count, vec); + glUniform3fv(location, count, vec); break; case 2: - glUniform2fv(u.location, count, vec); + glUniform2fv(location, count, vec); break; case 1: default: - glUniform1fv(u.location, count, vec); + glUniform1fv(location, count, vec); break; } } -void Shader::sendMatrix(const std::string &name, int size, const GLfloat *m, int count) +void Shader::sendMatrices(const UniformInfo *info, const float *m, int count) { + if (info->baseType != UNIFORM_MATRIX) + return; + TemporaryAttacher attacher(this); - if (size < 2 || size > 4) - { - throw love::Exception("Invalid matrix size: %dx%d " - "(can only set 2x2, 3x3 or 4x4 matrices.)", size,size); - } + int location = info->location; - const Uniform &u = getUniform(name); - checkSetUniformError(u, size, count, UNIFORM_FLOAT); - - switch (size) + switch (info->components) { case 4: - glUniformMatrix4fv(u.location, count, GL_FALSE, m); + glUniformMatrix4fv(location, count, GL_FALSE, m); break; case 3: - glUniformMatrix3fv(u.location, count, GL_FALSE, m); + glUniformMatrix3fv(location, count, GL_FALSE, m); break; case 2: default: - glUniformMatrix2fv(u.location, count, GL_FALSE, m); + glUniformMatrix2fv(location, count, GL_FALSE, m); break; } } -void Shader::sendTexture(const std::string &name, Texture *texture) +void Shader::sendTexture(const UniformInfo *info, Texture *texture) { + if (info->baseType != UNIFORM_SAMPLER) + return; + GLuint gltex = *(GLuint *) texture->getHandle(); TemporaryAttacher attacher(this); - int texunit = getTextureUnit(name); - - const Uniform &u = getUniform(name); - checkSetUniformError(u, 1, 1, UNIFORM_SAMPLER); + int texunit = getTextureUnit(info->name); // bind texture to assigned texture unit and send uniform to shader program gl.bindTextureToUnit(gltex, texunit, true); - glUniform1i(u.location, texunit); + glUniform1i(info->location, texunit); // increment global shader texture id counter for this texture unit, if we haven't already if (activeTexUnits[texunit-1] == 0) @@ -573,7 +555,7 @@ void Shader::sendTexture(const std::string &name, Texture *texture) // store texture id so it can be re-bound to the proper texture unit later activeTexUnits[texunit-1] = gltex; - retainObject(name, texture); + retainObject(info->name, texture); } void Shader::retainObject(const std::string &name, Object *object) @@ -631,9 +613,12 @@ Shader::UniformType Shader::getExternVariable(const std::string &name, int &comp return UNIFORM_UNKNOWN; } - components = getUniformTypeSize(it->second.type); + components = it->second.components; count = (int) it->second.count; + // Legacy support. This whole function is gone in 0.11 anyway. + if (it->second.baseType == UNIFORM_MATRIX) + return UNIFORM_FLOAT; return it->second.baseType; } @@ -893,6 +878,7 @@ Shader::UniformType Shader::getUniformBaseType(GLenum type) const case GL_FLOAT_VEC2: case GL_FLOAT_VEC3: case GL_FLOAT_VEC4: + return UNIFORM_FLOAT; case GL_FLOAT_MAT2: case GL_FLOAT_MAT3: case GL_FLOAT_MAT4: @@ -902,7 +888,7 @@ Shader::UniformType Shader::getUniformBaseType(GLenum type) const case GL_FLOAT_MAT3x4: case GL_FLOAT_MAT4x2: case GL_FLOAT_MAT4x3: - return UNIFORM_FLOAT; + return UNIFORM_MATRIX; case GL_BOOL: case GL_BOOL_VEC2: case GL_BOOL_VEC3: @@ -962,6 +948,7 @@ StringMap Shader::stageNames(Shader StringMap::Entry Shader::uniformTypeEntries[] = { {"float", Shader::UNIFORM_FLOAT}, + {"matrix", Shader::UNIFORM_MATRIX}, {"int", Shader::UNIFORM_INT}, {"bool", Shader::UNIFORM_BOOL}, {"image", Shader::UNIFORM_SAMPLER}, diff --git a/jni/love/src/modules/graphics/opengl/Shader.h b/jni/love/src/modules/graphics/opengl/Shader.h index 042a696d..1fad3973 100644 --- a/jni/love/src/modules/graphics/opengl/Shader.h +++ b/jni/love/src/modules/graphics/opengl/Shader.h @@ -74,6 +74,7 @@ public: enum UniformType { UNIFORM_FLOAT, + UNIFORM_MATRIX, UNIFORM_INT, UNIFORM_BOOL, UNIFORM_SAMPLER, @@ -87,6 +88,15 @@ public: std::string pixel; }; + struct UniformInfo + { + int location; + int count; + int components; + UniformType baseType; + std::string name; + }; + // Pointer to currently active Shader. static Shader *current; @@ -95,8 +105,8 @@ public: static Shader *defaultVideoShader; // Default shader code (a shader is always required internally.) - static ShaderSource defaultCode[Graphics::RENDERER_MAX_ENUM]; - static ShaderSource defaultVideoCode[Graphics::RENDERER_MAX_ENUM]; + static ShaderSource defaultCode[Graphics::RENDERER_MAX_ENUM][2]; + static ShaderSource defaultVideoCode[Graphics::RENDERER_MAX_ENUM][2]; /** * Creates a new Shader using a list of source codes. @@ -128,44 +138,12 @@ public: **/ std::string getWarnings() const; - /** - * Send at least one integer or int-vector value to this Shader as a uniform. - * - * @param name The name of the uniform variable in the source code. - * @param size Number of elements in each vector to send. - * A value of 1 indicates a single-component vector (an int). - * @param vec Pointer to the integer or int-vector values. - * @param count Number of integer or int-vector values. - **/ - void sendInt(const std::string &name, int size, const GLint *vec, int count); + const UniformInfo *getUniformInfo(const std::string &name) const; - /** - * Send at least one float or vector value to this Shader as a uniform. - * - * @param name The name of the uniform variable in the source code. - * @param size Number of elements in each vector to send. - * A value of 1 indicates a single-component vector (a float). - * @param vec Pointer to the float or float-vector values. - * @param count Number of float or float-vector values. - **/ - void sendFloat(const std::string &name, int size, const GLfloat *vec, int count); - - /** - * Send at least one matrix to this Shader as a uniform. - * - * @param name The name of the uniform variable in the source code. - * @param size Number of rows/columns in the matrix. - * @param m Pointer to the first element of the first matrix. - * @param count Number of matrices to send. - **/ - void sendMatrix(const std::string &name, int size, const GLfloat *m, int count); - - /** - * Send a texture to this Shader as a uniform. - * - * @param name The name of the uniform variable in the source code. - **/ - void sendTexture(const std::string &name, Texture *texture); + void sendInts(const UniformInfo *info, const int *vec, int count); + void sendFloats(const UniformInfo *info, const float *vec, int count); + void sendMatrices(const UniformInfo *info, const float *m, int count); + void sendTexture(const UniformInfo *info, Texture *texture); /** * Gets the type, number of components, and number of array elements of @@ -199,6 +177,17 @@ public: return program; } + template + T *getScratchBuffer(size_t count) + { + size_t bytes = sizeof(T) * count; + + if (scratchBuffer.size() < bytes) + scratchBuffer.resize(bytes); + + return (T *) scratchBuffer.data(); + } + static std::string getGLSLVersion(); static bool isSupported(); @@ -210,24 +199,11 @@ public: private: - // Represents a single uniform/extern shader variable. - struct Uniform - { - GLint location; - GLint count; - GLenum type; - UniformType baseType; - std::string name; - }; - // Map active uniform names to their locations. void mapActiveUniforms(); - const Uniform &getUniform(const std::string &name) const; - int getUniformTypeSize(GLenum type) const; UniformType getUniformBaseType(GLenum type) const; - void checkSetUniformError(const Uniform &u, int size, int count, UniformType sendtype) const; GLuint compileCode(ShaderStage stage, const std::string &code); @@ -256,7 +232,7 @@ private: std::map attributes; // Uniform location buffer map - std::map uniforms; + std::map uniforms; // Texture unit pool for setting images std::map texUnitPool; // texUnitPool[name] = textureunit @@ -276,6 +252,8 @@ private: GLuint videoTextureUnits[3]; + std::vector scratchBuffer; + // Counts total number of textures bound to each texture unit in all shaders static std::vector textureCounters; diff --git a/jni/love/src/modules/graphics/opengl/SpriteBatch.cpp b/jni/love/src/modules/graphics/opengl/SpriteBatch.cpp index 7c5f4fc6..6982725e 100644 --- a/jni/love/src/modules/graphics/opengl/SpriteBatch.cpp +++ b/jni/love/src/modules/graphics/opengl/SpriteBatch.cpp @@ -162,14 +162,18 @@ void SpriteBatch::setBufferSize(int newsize) size_t vertex_size = sizeof(Vertex) * 4 * newsize; GLBuffer *new_array_buf = nullptr; + int new_next = std::min(next, newsize); + try { new_array_buf = new GLBuffer(vertex_size, nullptr, array_buf->getTarget(), array_buf->getUsage(), array_buf->getMapFlags()); - // Copy as much of the old data into the new GLBuffer as can fit. GLBuffer::Bind bind(*new_array_buf); - void *new_data = new_array_buf->map(); - memcpy(new_data, old_data, sizeof(Vertex) * 4 * std::min(newsize, size)); + + // Copy as much of the old data into the new GLBuffer as can fit. + size_t copy_size = sizeof(Vertex) * 4 * new_next; + memcpy(new_array_buf->map(), old_data, copy_size); + new_array_buf->setMappedRangeModified(0, copy_size); quad_indices = QuadIndices(newsize); } @@ -185,7 +189,7 @@ void SpriteBatch::setBufferSize(int newsize) array_buf = new_array_buf; size = newsize; - next = std::min(next, newsize); + next = new_next; } int SpriteBatch::getBufferSize() const diff --git a/jni/love/src/modules/graphics/opengl/Text.cpp b/jni/love/src/modules/graphics/opengl/Text.cpp index 8b66fafa..79deac7f 100644 --- a/jni/love/src/modules/graphics/opengl/Text.cpp +++ b/jni/love/src/modules/graphics/opengl/Text.cpp @@ -129,6 +129,7 @@ void Text::addTextData(const TextData &t) { voffset = 0; draw_commands.clear(); + text_data.clear(); } uploadVertices(vertices, voffset); diff --git a/jni/love/src/modules/graphics/opengl/wrap_Graphics.cpp b/jni/love/src/modules/graphics/opengl/wrap_Graphics.cpp index 30097a50..7c0a5846 100644 --- a/jni/love/src/modules/graphics/opengl/wrap_Graphics.cpp +++ b/jni/love/src/modules/graphics/opengl/wrap_Graphics.cpp @@ -1346,52 +1346,45 @@ int w_getShader(lua_State *L) int w_setDefaultShaderCode(lua_State *L) { luaL_checktype(L, 1, LUA_TTABLE); + luaL_checktype(L, 2, LUA_TTABLE); - lua_getfield(L, 1, "opengl"); - lua_rawgeti(L, -1, 1); - lua_rawgeti(L, -2, 2); - lua_rawgeti(L, -3, 3); + for (int i = 0; i < 2; i++) + { + for (int renderer = 0; renderer < Graphics::RENDERER_MAX_ENUM; renderer++) + { + const char *lang = renderer == Graphics::RENDERER_OPENGLES ? "glsles" : "glsl"; - Shader::ShaderSource openglcode; - openglcode.vertex = luax_checkstring(L, -3); - openglcode.pixel = luax_checkstring(L, -2); + lua_getfield(L, i + 1, lang); - Shader::ShaderSource openglVideocode; - openglVideocode.vertex = luax_checkstring(L, -3); - openglVideocode.pixel = luax_checkstring(L, -1); + lua_getfield(L, -1, "vertex"); + lua_getfield(L, -2, "pixel"); + lua_getfield(L, -3, "videopixel"); - lua_pop(L, 4); + Shader::ShaderSource code; + code.vertex = luax_checkstring(L, -3); + code.pixel = luax_checkstring(L, -2); - lua_getfield(L, 1, "opengles"); - lua_rawgeti(L, -1, 1); - lua_rawgeti(L, -2, 2); - lua_rawgeti(L, -3, 3); + Shader::ShaderSource videocode; + videocode.vertex = luax_checkstring(L, -3); + videocode.pixel = luax_checkstring(L, -1); - Shader::ShaderSource openglescode; - openglescode.vertex = luax_checkstring(L, -3); - openglescode.pixel = luax_checkstring(L, -2); + lua_pop(L, 4); - Shader::ShaderSource openglesVideocode; - openglesVideocode.vertex = luax_checkstring(L, -3); - openglesVideocode.pixel = luax_checkstring(L, -1); - - lua_pop(L, 4); - - Shader::defaultCode[Graphics::RENDERER_OPENGL] = openglcode; - Shader::defaultCode[Graphics::RENDERER_OPENGLES] = openglescode; - Shader::defaultVideoCode[Graphics::RENDERER_OPENGL] = openglVideocode; - Shader::defaultVideoCode[Graphics::RENDERER_OPENGLES] = openglesVideocode; + Shader::defaultCode[renderer][i] = code; + Shader::defaultVideoCode[renderer][i] = videocode; + } + } return 0; } int w_getSupported(lua_State *L) { - lua_createtable(L, 0, (int) Graphics::SUPPORT_MAX_ENUM); + lua_createtable(L, 0, (int) Graphics::FEATURE_MAX_ENUM); - for (int i = 0; i < (int) Graphics::SUPPORT_MAX_ENUM; i++) + for (int i = 0; i < (int) Graphics::FEATURE_MAX_ENUM; i++) { - Graphics::Support feature = (Graphics::Support) i; + auto feature = (Graphics::Feature) i; const char *name = nullptr; if (!Graphics::getConstant(feature, name)) @@ -1480,33 +1473,28 @@ int w_getStats(lua_State *L) { Graphics::Stats stats = instance()->getStats(); - lua_createtable(L, 0, (int) Graphics::STAT_MAX_ENUM); + lua_createtable(L, 0, 7); - const char *sname = nullptr; - - Graphics::getConstant(Graphics::STAT_DRAW_CALLS, sname); lua_pushinteger(L, stats.drawCalls); - lua_setfield(L, -2, sname); + lua_setfield(L, -2, "drawcalls"); - Graphics::getConstant(Graphics::STAT_CANVAS_SWITCHES, sname); lua_pushinteger(L, stats.canvasSwitches); - lua_setfield(L, -2, sname); + lua_setfield(L, -2, "canvasswitches"); + + lua_pushinteger(L, stats.shaderSwitches); + lua_setfield(L, -2, "shaderswitches"); - Graphics::getConstant(Graphics::STAT_CANVASES, sname); lua_pushinteger(L, stats.canvases); - lua_setfield(L, -2, sname); + lua_setfield(L, -2, "canvases"); - Graphics::getConstant(Graphics::STAT_IMAGES, sname); lua_pushinteger(L, stats.images); - lua_setfield(L, -2, sname); + lua_setfield(L, -2, "images"); - Graphics::getConstant(Graphics::STAT_FONTS, sname); lua_pushinteger(L, stats.fonts); - lua_setfield(L, -2, sname); + lua_setfield(L, -2, "fonts"); - Graphics::getConstant(Graphics::STAT_TEXTURE_MEMORY, sname); - lua_pushnumber(L, (lua_Number) stats.textureMemory); - lua_setfield(L, -2, sname); + lua_pushinteger(L, stats.textureMemory); + lua_setfield(L, -2, "texturememory"); return 1; } diff --git a/jni/love/src/modules/graphics/opengl/wrap_Graphics.lua b/jni/love/src/modules/graphics/opengl/wrap_Graphics.lua index b92cb40b..4beed478 100644 --- a/jni/love/src/modules/graphics/opengl/wrap_Graphics.lua +++ b/jni/love/src/modules/graphics/opengl/wrap_Graphics.lua @@ -23,6 +23,7 @@ misrepresented as being the original software. --]] local table_concat = table.concat +local ipairs = ipairs -- SHADERS @@ -139,6 +140,8 @@ varying vec4 VaryingColor; uniform mediump float love_PointSize; #endif]], + FUNCTIONS = "", + FOOTER = [[ void main() { VaryingTexCoord = VertexTexCoord; @@ -210,33 +213,21 @@ void main() { }]], } -local function createVertexCode(vertexcode, lang) - local vertexcodes = { +local function createShaderStageCode(stage, code, lang, gammacorrect, multicanvas) + stage = stage:upper() + local lines = { lang == "glsles" and GLSL.VERSION_ES or GLSL.VERSION, GLSL.SYNTAX, - love.graphics.isGammaCorrect() and "#define LOVE_GAMMA_CORRECT 1" or "", - GLSL.VERTEX.HEADER, GLSL.UNIFORMS, + gammacorrect and "#define LOVE_GAMMA_CORRECT 1" or "", + GLSL[stage].HEADER, + GLSL.UNIFORMS, GLSL.FUNCTIONS, + GLSL[stage].FUNCTIONS, lang == "glsles" and "#line 1" or "#line 0", - vertexcode, - GLSL.VERTEX.FOOTER, + code, + multicanvas and GLSL[stage].FOOTER_MULTI_CANVAS or GLSL[stage].FOOTER, } - return table_concat(vertexcodes, "\n") -end - -local function createPixelCode(pixelcode, is_multicanvas, lang) - local pixelcodes = { - lang == "glsles" and GLSL.VERSION_ES or GLSL.VERSION, - GLSL.SYNTAX, - love.graphics.isGammaCorrect() and "#define LOVE_GAMMA_CORRECT 1" or "", - GLSL.PIXEL.HEADER, GLSL.UNIFORMS, - GLSL.FUNCTIONS, - GLSL.PIXEL.FUNCTIONS, - lang == "glsles" and "#line 1" or "#line 0", - pixelcode, - is_multicanvas and GLSL.PIXEL.FOOTER_MULTI_CANVAS or GLSL.PIXEL.FOOTER, - } - return table_concat(pixelcodes, "\n") + return table_concat(lines, "\n") end local function isVertexCode(code) @@ -258,11 +249,6 @@ function love.graphics._shaderCodeToGLSL(arg1, arg2) local vertexcode, pixelcode local is_multicanvas = false -- whether pixel code has "effects" function instead of "effect" - local lang = "glsl" - if (love.graphics.getRendererInfo()) == "OpenGL ES" then - lang = "glsles" - end - if arg1 then if isVertexCode(arg1) then vertexcode = arg1 -- first arg contains vertex shader code @@ -287,11 +273,18 @@ function love.graphics._shaderCodeToGLSL(arg1, arg2) end end + local lang = "glsl" + if love.graphics.getRendererInfo() == "OpenGL ES" then + lang = "glsles" + end + + local gammacorrect = love.graphics.isGammaCorrect() + if vertexcode then - vertexcode = createVertexCode(vertexcode, lang) + vertexcode = createShaderStageCode("VERTEX", vertexcode, lang, gammacorrect) end if pixelcode then - pixelcode = createPixelCode(pixelcode, is_multicanvas, lang) + pixelcode = createShaderStageCode("PIXEL", pixelcode, lang, gammacorrect, is_multicanvas) end return vertexcode, pixelcode @@ -339,32 +332,37 @@ vec4 effect(mediump vec4 vcolor, Image tex, vec2 texcoord, vec2 pixcoord) { }]], } -local defaults = { - opengl = { - createVertexCode(defaultcode.vertex, "glsl"), - createPixelCode(defaultcode.pixel, false, "glsl"), - createPixelCode(defaultcode.videopixel, false, "glsl"), - }, - opengles = { - createVertexCode(defaultcode.vertex, "glsles"), - createPixelCode(defaultcode.pixel, false, "glsles"), - createPixelCode(defaultcode.videopixel, false, "glsles"), - }, -} +local defaults = {} +local defaults_gammacorrect = {} -love.graphics._setDefaultShaderCode(defaults) +for _, lang in ipairs{"glsl", "glsles"} do + for _, gammacorrect in ipairs{false, true} do + local t = gammacorrect and defaults_gammacorrect or defaults + t[lang] = { + vertex = createShaderStageCode("VERTEX", defaultcode.vertex, lang, gammacorrect), + pixel = createShaderStageCode("PIXEL", defaultcode.pixel, lang, gammacorrect, false), + videopixel = createShaderStageCode("PIXEL", defaultcode.videopixel, lang, gammacorrect, false), + } + end +end + +love.graphics._setDefaultShaderCode(defaults, defaults_gammacorrect) function love.graphics.newVideo(file, loadaudio) local video = love.graphics._newVideo(file) local source, success - if loadaudio ~= false then + if loadaudio ~= false and love.audio then success, source = pcall(love.audio.newSource, video:getStream():getFilename()) end if success then video:setSource(source) elseif loadaudio == true then - error("Video had no audio track", 2) + if love.audio then + error("Video had no audio track", 2) + else + error("love.audio was not loaded", 2) + end else video:getStream():setSync() end diff --git a/jni/love/src/modules/graphics/opengl/wrap_Shader.cpp b/jni/love/src/modules/graphics/opengl/wrap_Shader.cpp index fa5d94ba..e13cc792 100644 --- a/jni/love/src/modules/graphics/opengl/wrap_Shader.cpp +++ b/jni/love/src/modules/graphics/opengl/wrap_Shader.cpp @@ -23,7 +23,6 @@ #include "math/MathModule.h" #include -#include #include #include @@ -42,137 +41,51 @@ Shader *luax_checkshader(lua_State *L, int idx) int w_Shader_getWarnings(lua_State *L) { Shader *shader = luax_checkshader(L, 1); - lua_pushstring(L, shader->getWarnings().c_str()); + std::string warnings = shader->getWarnings(); + lua_pushstring(L, warnings.c_str()); return 1; } -template -static T *_getScalars(lua_State *L, int count, size_t &dimension) +static int _getCount(lua_State *L, int startidx, const Shader::UniformInfo *info) { - dimension = 1; - T *values = new T[count]; - - for (int i = 0; i < count; ++i) - { - if (lua_isnumber(L, 3 + i)) - values[i] = static_cast(lua_tonumber(L, 3 + i)); - else if (lua_isboolean(L, 3 + i)) - values[i] = static_cast(lua_toboolean(L, 3 + i)); - else - { - delete[] values; - luax_typerror(L, 3 + i, "number or boolean"); - return 0; - } - } - - return values; + return std::min(std::max(lua_gettop(L) - startidx, 1), info->count); } template -static T *_getVectors(lua_State *L, int count, size_t &dimension) +static T *_getNumbers(lua_State *L, int startidx, Shader *shader, int components, int count) { - dimension = luax_objlen(L, 3); - T *values = new T[count * dimension]; + T *values = shader->getScratchBuffer(components * count); - for (int i = 0; i < count; ++i) + if (components == 1) { - if (!lua_istable(L, 3 + i)) + for (int i = 0; i < count; ++i) + values[i] = (T) luaL_checknumber(L, startidx + i); + } + else + { + for (int i = 0; i < count; i++) { - delete[] values; - luax_typerror(L, 3 + i, "table"); - return 0; - } - if (luax_objlen(L, 3 + i) != dimension) - { - delete[] values; - luaL_error(L, "Error in argument %d: Expected table size %d, got %d.", - 3+i, dimension, luax_objlen(L, 3+i)); - return 0; - } + luaL_checktype(L, startidx + i, LUA_TTABLE); - for (int k = 1; k <= (int) dimension; ++k) - { - lua_rawgeti(L, 3 + i, k); - if (lua_isnumber(L, -1)) - values[i * dimension + k - 1] = static_cast(lua_tonumber(L, -1)); - else if (lua_isboolean(L, -1)) - values[i * dimension + k - 1] = static_cast(lua_toboolean(L, -1)); - else + for (int k = 1; k <= components; k++) { - delete[] values; - luax_typerror(L, -1, "number or boolean"); - return 0; + lua_rawgeti(L, startidx + i, k); + values[i * components + k - 1] = (T) luaL_checknumber(L, -1); } + + lua_pop(L, components); } - lua_pop(L, int(dimension)); } return values; } -int w_Shader_sendInt(lua_State *L) +int w_Shader_sendFloats(lua_State *L, int startidx, Shader *shader, const Shader::UniformInfo *info, bool colors) { - Shader *shader = luax_checkshader(L, 1); - const char *name = luaL_checkstring(L, 2); - int count = lua_gettop(L) - 2; + int count = _getCount(L, startidx, info); + int components = info->components; - if (count < 1) - return luaL_error(L, "No variable to send."); - - int *values = 0; - size_t dimension = 1; - - if (lua_isnumber(L, 3) || lua_isboolean(L, 3)) - values = _getScalars(L, count, dimension); - else if (lua_istable(L, 3)) - values = _getVectors(L, count, dimension); - else - return luax_typerror(L, 3, "number, boolean, or table"); - - if (!values) - return luaL_error(L, "Error in arguments."); - - bool should_error = false; - try - { - shader->sendInt(name, (int) dimension, values, count); - } - catch (love::Exception &e) - { - should_error = true; - lua_pushstring(L, e.what()); - } - - delete[] values; - - if (should_error) - return luaL_error(L, "%s", lua_tostring(L, -1)); - - return 0; -} - -static int w__Shader_sendFloat(lua_State *L, bool colors) -{ - Shader *shader = luax_checkshader(L, 1); - const char *name = luaL_checkstring(L, 2); - int count = lua_gettop(L) - 2; - - if (count < 1) - return luaL_error(L, "No variable to send."); - - float *values = nullptr; - size_t dimension = 1; - - if (lua_isnumber(L, 3) || lua_isboolean(L, 3)) - values = _getScalars(L, count, dimension); - else if (lua_istable(L, 3)) - values = _getVectors(L, count, dimension); - else - return luax_typerror(L, 3, "number, boolean, or table"); - - if (!values) - return luaL_error(L, "Error in arguments."); + float *values = _getNumbers(L, startidx, shader, components, count); if (colors) { @@ -181,119 +94,94 @@ static int w__Shader_sendFloat(lua_State *L, bool colors) for (int i = 0; i < count; i++) { - for (int j = 0; j < (int) dimension; j++) + for (int j = 0; j < components; j++) { // the fourth component (alpha) is always already linear, if it exists. if (gammacorrect && j < 3) - values[i * dimension + j] = m.gammaToLinear(values[i * dimension + j] / 255.0f); + values[i * components + j] = m.gammaToLinear(values[i * components + j] / 255.0f); else - values[i * dimension + j] /= 255.0f; + values[i * components + j] /= 255.0f; } } } - bool should_error = false; - try - { - shader->sendFloat(name, (int) dimension, values, count); - } - catch (love::Exception &e) - { - should_error = true; - lua_pushstring(L, e.what()); - } - - delete[] values; - - if (should_error) - return luaL_error(L, "%s", lua_tostring(L, -1)); - + luax_catchexcept(L, [&]() { shader->sendFloats(info, values, count); }); return 0; } -int w_Shader_sendFloat(lua_State *L) +int w_Shader_sendInts(lua_State *L, int startidx, Shader *shader, const Shader::UniformInfo *info) { - return w__Shader_sendFloat(L, false); + int count = _getCount(L, startidx, info); + int *values = _getNumbers(L, startidx, shader, info->components, count); + luax_catchexcept(L, [&]() { shader->sendInts(info, values, count); }); + return 0; } -int w_Shader_sendColor(lua_State *L) +int w_Shader_sendBooleans(lua_State *L, int startidx, Shader *shader, const Shader::UniformInfo *info) { - return w__Shader_sendFloat(L, true); -} + int count = _getCount(L, startidx, info); + int components = info->components; -int w_Shader_sendMatrix(lua_State *L) -{ - int count = lua_gettop(L) - 2; - Shader *shader = luax_checkshader(L, 1); - const char *name = luaL_checkstring(L, 2); + // We have to send booleans as ints or floats. + float *values = shader->getScratchBuffer(components * count); - if (!lua_istable(L, 3)) - return luax_typerror(L, 3, "matrix table"); - - int dimension = 0; - - lua_rawgeti(L, 3, 1); - if (lua_istable(L, -1)) - dimension = (int) luax_objlen(L, 3); - lua_pop(L, 1); - - if (dimension == 0) + if (components == 1) { - lua_getfield(L, 3, "dimension"); + for (int i = 0; i < count; i++) + { + luaL_checktype(L, startidx + i, LUA_TBOOLEAN); + values[i] = (float) lua_toboolean(L, startidx + i); + } + } + else + { + for (int i = 0; i < count; i++) + { + luaL_checktype(L, startidx + i, LUA_TTABLE); - if (!lua_isnoneornil(L, -1)) - dimension = (int) lua_tointeger(L, -1); - else - dimension = (int) sqrtf((float) luax_objlen(L, 3)); + for (int k = 1; k <= components; k++) + { + lua_rawgeti(L, startidx + i, k); + luaL_checktype(L, -1, LUA_TBOOLEAN); + values[i * components + k - 1] = (float) lua_toboolean(L, -1); + } - lua_pop(L, 1); + lua_pop(L, components); + } } - if (dimension < 2 || dimension > 4) - return luaL_error(L, "Invalid matrix size: %dx%d (only 2x2, 3x3 and 4x4 matrices are supported).", - dimension, dimension); + luax_catchexcept(L, [&]() { shader->sendFloats(info, values, count); }); + return 0; +} - float *values = new float[dimension * dimension * count]; +int w_Shader_sendMatrices(lua_State *L, int startidx, Shader *shader, const Shader::UniformInfo *info) +{ + int count = _getCount(L, startidx, info); + int dimension = info->components; + int elements = dimension * dimension; - for (int i = 0; i < count; ++i) + float *values = shader->getScratchBuffer(elements * count); + + for (int i = 0; i < count; i++) { - int other_dimension = 0; + luaL_checktype(L, startidx + i, LUA_TTABLE); - lua_rawgeti(L, 3+i, 1); + lua_rawgeti(L, startidx + i, 1); bool table_of_tables = lua_istable(L, -1); - - if (table_of_tables) - other_dimension = luax_objlen(L, -1); - lua_pop(L, 1); - if (!table_of_tables) - other_dimension = (int) sqrtf((float) luax_objlen(L, 3+i)); - - if (other_dimension != dimension) - { - // You unlock this door with the key of imagination. Beyond it is - // another dimension: a dimension of sound, a dimension of sight, - // a dimension of mind. You're moving into a land of both shadow - // and substance, of things and ideas. You've just crossed over - // into... the Twilight Zone. - delete[] values; - return luaL_error(L, "Invalid matrix size at argument %d: Expected size %dx%d, got %dx%d.", - 3+i, dimension, dimension, other_dimension, other_dimension); - } - if (table_of_tables) { int n = 0; for (int j = 1; j <= dimension; j++) { - lua_rawgeti(L, 3+i, j); + lua_rawgeti(L, startidx + i, j); for (int k = 1; k <= dimension; k++) { lua_rawgeti(L, -k, k); - values[i * dimension * dimension + n] = (float) lua_tonumber(L, -1); + values[i * elements + n] = (float) luaL_checknumber(L, -1); n++; } @@ -302,71 +190,69 @@ int w_Shader_sendMatrix(lua_State *L) } else { - for (int k = 1; k <= dimension*dimension; k++) + for (int k = 1; k <= elements; k++) { - lua_rawgeti(L, 3+i, k); - values[i * dimension * dimension + k - 1] = (float) lua_tonumber(L, -1); + lua_rawgeti(L, startidx + i, k); + values[i * elements + (k - 1)] = (float) luaL_checknumber(L, -1); } - lua_pop(L, dimension*dimension); + lua_pop(L, elements); } } - luax_catchexcept(L, - [&]() { shader->sendMatrix(name, dimension, values, count); }, - [&](bool) { delete[] values; } - ); - + shader->sendMatrices(info, values, count); return 0; } -int w_Shader_sendTexture(lua_State *L) +int w_Shader_sendTexture(lua_State *L, int startidx, Shader *shader, const Shader::UniformInfo *info) { - Shader *shader = luax_checkshader(L, 1); - const char *name = luaL_checkstring(L, 2); - Texture *texture = luax_checktexture(L, 3); - - luax_catchexcept(L, [&](){ shader->sendTexture(name, texture); }); + // We don't support arrays of textures (yet). + Texture *texture = luax_checktexture(L, startidx); + luax_catchexcept(L, [&]() { shader->sendTexture(info, texture); }); return 0; } int w_Shader_send(lua_State *L) { - int ttype = lua_type(L, 3); - Proxy *p = nullptr; + Shader *shader = luax_checkshader(L, 1); + const char *name = luaL_checkstring(L, 2); - switch (ttype) + const Shader::UniformInfo *info = shader->getUniformInfo(name); + if (info == nullptr) + return luaL_error(L, "Shader uniform '%s' does not exist.\nA common error is to define but not use the variable.", name); + + int startidx = 3; + + switch (info->baseType) { - case LUA_TNUMBER: - case LUA_TBOOLEAN: - // Scalar float/boolean. - return w_Shader_sendFloat(L); - break; - case LUA_TUSERDATA: - // Texture (Image or Canvas). - p = (Proxy *) lua_touserdata(L, 3); - - if (typeFlags[p->type][GRAPHICS_TEXTURE_ID]) - return w_Shader_sendTexture(L); - - break; - case LUA_TTABLE: - // Vector or Matrix. - lua_rawgeti(L, 3, 1); - ttype = lua_type(L, -1); - lua_pop(L, 1); - - if (ttype == LUA_TNUMBER || ttype == LUA_TBOOLEAN) - return w_Shader_sendFloat(L); - else if (ttype == LUA_TTABLE) - return w_Shader_sendMatrix(L); - - break; + case Shader::UNIFORM_FLOAT: + return w_Shader_sendFloats(L, startidx, shader, info, false); + case Shader::UNIFORM_MATRIX: + return w_Shader_sendMatrices(L, startidx, shader, info); + case Shader::UNIFORM_INT: + return w_Shader_sendInts(L, startidx, shader, info); + case Shader::UNIFORM_BOOL: + return w_Shader_sendBooleans(L, startidx, shader, info); + case Shader::UNIFORM_SAMPLER: + return w_Shader_sendTexture(L, startidx, shader, info); default: - break; + return luaL_error(L, "Unknown variable type for shader uniform '%s", name); } +} - return luaL_argerror(L, 3, "number, boolean, table, image, or canvas expected"); +int w_Shader_sendColors(lua_State *L) +{ + Shader *shader = luax_checkshader(L, 1); + const char *name = luaL_checkstring(L, 2); + + const Shader::UniformInfo *info = shader->getUniformInfo(name); + if (info == nullptr) + return luaL_error(L, "Shader uniform '%s' does not exist.\nA common error is to define but not use the variable.", name); + + if (info->baseType != Shader::UNIFORM_FLOAT || info->components < 3) + return luaL_error(L, "sendColor can only be used on vec3 or vec4 uniforms."); + + return w_Shader_sendFloats(L, 3, shader, info, true); } int w_Shader_getExternVariable(lua_State *L) @@ -404,13 +290,13 @@ int w_Shader_getExternVariable(lua_State *L) static const luaL_Reg w_Shader_functions[] = { { "getWarnings", w_Shader_getWarnings }, - { "sendInt", w_Shader_sendInt }, - { "sendBoolean", w_Shader_sendInt }, - { "sendFloat", w_Shader_sendFloat }, - { "sendColor", w_Shader_sendColor }, - { "sendMatrix", w_Shader_sendMatrix }, - { "sendTexture", w_Shader_sendTexture }, + { "sendInt", w_Shader_send }, + { "sendBoolean", w_Shader_send }, + { "sendFloat", w_Shader_send }, + { "sendMatrix", w_Shader_send }, + { "sendTexture", w_Shader_send }, { "send", w_Shader_send }, + { "sendColor", w_Shader_sendColors }, { "getExternVariable", w_Shader_getExternVariable }, { 0, 0 } }; diff --git a/jni/love/src/modules/graphics/wrap_Quad.cpp b/jni/love/src/modules/graphics/wrap_Quad.cpp index 2552bc4f..d6464b95 100644 --- a/jni/love/src/modules/graphics/wrap_Quad.cpp +++ b/jni/love/src/modules/graphics/wrap_Quad.cpp @@ -64,10 +64,21 @@ int w_Quad_getViewport(lua_State *L) return 4; } +int w_Quad_getTextureDimensions(lua_State *L) +{ + Quad *quad = luax_checkquad(L, 1); + double sw = quad->getTextureWidth(); + double sh = quad->getTextureHeight(); + lua_pushnumber(L, sw); + lua_pushnumber(L, sh); + return 2; +} + static const luaL_Reg w_Quad_functions[] = { { "setViewport", w_Quad_setViewport }, { "getViewport", w_Quad_getViewport }, + { "getTextureDimensions", w_Quad_getTextureDimensions }, { 0, 0 } }; diff --git a/jni/love/src/modules/image/magpie/ImageData.cpp b/jni/love/src/modules/image/magpie/ImageData.cpp index 79fa2651..b4af00ad 100644 --- a/jni/love/src/modules/image/magpie/ImageData.cpp +++ b/jni/love/src/modules/image/magpie/ImageData.cpp @@ -124,10 +124,7 @@ void ImageData::decode(love::filesystem::FileData *data) // The decoder *must* output a 32 bits-per-pixel image. if (decodedimage.size != decodedimage.width*decodedimage.height*sizeof(pixel)) { - if (decodeHandler) - decodeHandler->free(decodedimage.data); - else - delete[] decodedimage.data; + decoder->free(decodedimage.data); throw love::Exception("Could not convert image!"); } diff --git a/jni/love/src/modules/image/magpie/KTXHandler.cpp b/jni/love/src/modules/image/magpie/KTXHandler.cpp index 70de4b0e..9207895f 100644 --- a/jni/love/src/modules/image/magpie/KTXHandler.cpp +++ b/jni/love/src/modules/image/magpie/KTXHandler.cpp @@ -67,6 +67,7 @@ enum KTXGLInternalFormat { KTX_GL_ETC1_RGB8_OES = 0x8D64, + // ETC2 and EAC. KTX_GL_COMPRESSED_R11_EAC = 0x9270, KTX_GL_COMPRESSED_SIGNED_R11_EAC = 0x9271, KTX_GL_COMPRESSED_RG11_EAC = 0x9272, @@ -78,17 +79,33 @@ enum KTXGLInternalFormat KTX_GL_COMPRESSED_RGBA8_ETC2_EAC = 0x9278, KTX_GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279, - // I don't know if any KTX file contains PVR data, but why not support it. + // PVRTC1. KTX_GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00, KTX_GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01, KTX_GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02, KTX_GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03, - // Same with DXT1/3/5. - KTX_GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0, - KTX_GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2, - KTX_GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3, + // DXT1, DXT3, and DXT5. + KTX_GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0, + KTX_GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2, + KTX_GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3, + KTX_GL_COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C, + KTX_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E, + KTX_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F, + // BC4 and BC5. + KTX_GL_COMPRESSED_RED_RGTC1 = 0x8DBB, + KTX_GL_COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC, + KTX_GL_COMPRESSED_RG_RGTC2 = 0x8DBD, + KTX_GL_COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE, + + // BC6 and BC7. + KTX_GL_COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C, + KTX_GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D, + KTX_GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E, + KTX_GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F, + + // ASTC. KTX_GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0, KTX_GL_COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1, KTX_GL_COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2, @@ -129,6 +146,8 @@ CompressedImageData::Format convertFormat(uint32 glformat, bool &sRGB) { case KTX_GL_ETC1_RGB8_OES: return CompressedImageData::FORMAT_ETC1; + + // EAC and ETC2. case KTX_GL_COMPRESSED_R11_EAC: return CompressedImageData::FORMAT_EAC_R; case KTX_GL_COMPRESSED_SIGNED_R11_EAC: @@ -152,6 +171,8 @@ CompressedImageData::Format convertFormat(uint32 glformat, bool &sRGB) case KTX_GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: sRGB = true; return CompressedImageData::FORMAT_ETC2_RGBA; + + // PVRTC. case KTX_GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: return CompressedImageData::FORMAT_PVR1_RGB4; case KTX_GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG: @@ -160,12 +181,42 @@ CompressedImageData::Format convertFormat(uint32 glformat, bool &sRGB) return CompressedImageData::FORMAT_PVR1_RGBA4; case KTX_GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: return CompressedImageData::FORMAT_PVR1_RGBA2; + + // DXT. + case KTX_GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: + sRGB = true; case KTX_GL_COMPRESSED_RGB_S3TC_DXT1_EXT: return CompressedImageData::FORMAT_DXT1; + case KTX_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: + sRGB = true; case KTX_GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: return CompressedImageData::FORMAT_DXT3; + case KTX_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: + sRGB = true; case KTX_GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: return CompressedImageData::FORMAT_DXT5; + + // BC4 and BC5. + case KTX_GL_COMPRESSED_RED_RGTC1: + return CompressedImageData::FORMAT_BC4; + case KTX_GL_COMPRESSED_SIGNED_RED_RGTC1: + return CompressedImageData::FORMAT_BC4s; + case KTX_GL_COMPRESSED_RG_RGTC2: + return CompressedImageData::FORMAT_BC5; + case KTX_GL_COMPRESSED_SIGNED_RG_RGTC2: + return CompressedImageData::FORMAT_BC5s; + + // BC6 and BC7. + case KTX_GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: + sRGB = true; + case KTX_GL_COMPRESSED_RGBA_BPTC_UNORM: + return CompressedImageData::FORMAT_BC7; + case KTX_GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: + return CompressedImageData::FORMAT_BC6Hs; + case KTX_GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: + return CompressedImageData::FORMAT_BC6H; + + // ASTC. case KTX_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: sRGB = true; case KTX_GL_COMPRESSED_RGBA_ASTC_4x4_KHR: diff --git a/jni/love/src/modules/image/magpie/STBHandler.cpp b/jni/love/src/modules/image/magpie/STBHandler.cpp index ac4ed76b..72ea4aa7 100644 --- a/jni/love/src/modules/image/magpie/STBHandler.cpp +++ b/jni/love/src/modules/image/magpie/STBHandler.cpp @@ -75,7 +75,12 @@ FormatHandler::DecodedImage STBHandler::decode(love::filesystem::FileData *data) &comp, 4); if (img.data == nullptr || img.width <= 0 || img.height <= 0) - throw love::Exception("Could not decode image with stb_image."); + { + const char *err = stbi_failure_reason(); + if (err == nullptr) + err = "unknown error"; + throw love::Exception("Could not decode image with stb_image (%s).", err); + } img.size = img.width * img.height * 4; diff --git a/jni/love/src/modules/image/wrap_Image.cpp b/jni/love/src/modules/image/wrap_Image.cpp index 8a86879c..e8c0f161 100644 --- a/jni/love/src/modules/image/wrap_Image.cpp +++ b/jni/love/src/modules/image/wrap_Image.cpp @@ -68,19 +68,24 @@ int w_newImageData(lua_State *L) t->release(); return 1; } + else if (filesystem::luax_cangetfiledata(L, 1)) // Case 2: File(Data). + { + filesystem::FileData *data = love::filesystem::luax_getfiledata(L, 1); - // Case 2: File(Data). - love::filesystem::FileData *data = love::filesystem::luax_getfiledata(L, 1); + ImageData *t = nullptr; + luax_catchexcept(L, + [&]() { t = instance()->newImageData(data); }, + [&](bool) { data->release(); } + ); - ImageData *t = nullptr; - luax_catchexcept(L, - [&]() { t = instance()->newImageData(data); }, - [&](bool) { data->release(); } - ); - - luax_pushtype(L, IMAGE_IMAGE_DATA_ID, t); - t->release(); - return 1; + luax_pushtype(L, IMAGE_IMAGE_DATA_ID, t); + t->release(); + return 1; + } + else + { + return luax_typerror(L, 1, "value"); + } } int w_newCompressedData(lua_State *L) diff --git a/jni/love/src/modules/image/wrap_ImageData.cpp b/jni/love/src/modules/image/wrap_ImageData.cpp index e362d92a..4d1ec007 100644 --- a/jni/love/src/modules/image/wrap_ImageData.cpp +++ b/jni/love/src/modules/image/wrap_ImageData.cpp @@ -164,7 +164,7 @@ int w_ImageData__mapPixelUnsafe(lua_State *L) lua_pushvalue(L, 2); lua_pushnumber(L, x); lua_pushnumber(L, y); - pixel c = t->getPixel(x, y); + pixel c = t->getPixelUnsafe(x, y); lua_pushnumber(L, c.r); lua_pushnumber(L, c.g); lua_pushnumber(L, c.b); diff --git a/jni/love/src/modules/image/wrap_ImageData.lua b/jni/love/src/modules/image/wrap_ImageData.lua index 22fbc451..ddc0e7fd 100644 --- a/jni/love/src/modules/image/wrap_ImageData.lua +++ b/jni/love/src/modules/image/wrap_ImageData.lua @@ -27,6 +27,7 @@ local ImageData = ImageData_mt.__index local tonumber, assert, error = tonumber, assert, error local type, pcall = type, pcall +local floor = math.floor local function inside(x, y, w, h) return x >= 0 and x < w and y >= 0 and y < h @@ -126,6 +127,11 @@ function ImageData:_mapPixelUnsafe(func, ix, iy, iw, ih) local p = objectcache[self] local idw, idh = p.width, p.height + ix = floor(ix) + iy = floor(iy) + iw = floor(iw) + ih = floor(ih) + local pixels = p.pointer for y=iy, iy+ih-1 do @@ -144,6 +150,9 @@ function ImageData:getPixel(x, y) if type(x) ~= "number" then error("bad argument #1 to ImageData:getPixel (expected number)", 2) end if type(y) ~= "number" then error("bad argument #2 to ImageData:getPixel (expected number)", 2) end + x = floor(x) + y = floor(y) + local p = objectcache[self] if not inside(x, y, p.width, p.height) then error("Attempt to get out-of-range pixel!", 2) end @@ -161,6 +170,9 @@ function ImageData:setPixel(x, y, r, g, b, a) if type(x) ~= "number" then error("bad argument #1 to ImageData:setPixel (expected number)", 2) end if type(y) ~= "number" then error("bad argument #2 to ImageData:setPixel (expected number)", 2) end + x = floor(x) + y = floor(y) + if type(r) == "table" then local t = r r, g, b, a = t[1], t[2], t[3], t[4] diff --git a/jni/love/src/modules/joystick/wrap_Joystick.cpp b/jni/love/src/modules/joystick/wrap_Joystick.cpp index f02df825..32791d1c 100644 --- a/jni/love/src/modules/joystick/wrap_Joystick.cpp +++ b/jni/love/src/modules/joystick/wrap_Joystick.cpp @@ -105,8 +105,8 @@ int w_Joystick_getAxes(lua_State *L) Joystick *j = luax_checkjoystick(L, 1); std::vector axes = j->getAxes(); - for (size_t i = 0; i < axes.size(); i++) - lua_pushnumber(L, axes[i]); + for (float value : axes) + lua_pushnumber(L, value); return (int) axes.size(); } @@ -129,11 +129,29 @@ int w_Joystick_isDown(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); - luaL_checkinteger(L, 2); + bool istable = lua_istable(L, 2); + int num = istable ? (int) luax_objlen(L, 2) : (lua_gettop(L) - 1); + + if (num == 0) + luaL_checkinteger(L, 2); std::vector buttons; - for (int i = 2; i <= lua_gettop(L); i++) - buttons.push_back((int) luaL_checknumber(L, i) - 1); + buttons.reserve(num); + + if (istable) + { + for (int i = 0; i < num; i++) + { + lua_rawgeti(L, 2, i + 1); + buttons.push_back((int) luaL_checknumber(L, -1) - 1); + lua_pop(L, 1); + } + } + else + { + for (int i = 0; i < num; i++) + buttons.push_back((int) luaL_checknumber(L, i + 2) - 1); + } luax_pushboolean(L, j->isDown(buttons)); return 1; @@ -164,20 +182,43 @@ int w_Joystick_isGamepadDown(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); + bool istable = lua_istable(L, 2); + int num = istable ? (int) luax_objlen(L, 2) : (lua_gettop(L) - 1); + + if (num == 0) + luaL_checkstring(L, 2); + std::vector buttons; - buttons.reserve(lua_gettop(L) - 1); + buttons.reserve(num); - luaL_checkstring(L, 2); + Joystick::GamepadButton button; - for (int i = 2; i <= lua_gettop(L); i++) + if (istable) { - const char *str = luaL_checkstring(L, i); - Joystick::GamepadButton button; + for (int i = 0; i < num; i++) + { + lua_rawgeti(L, 2, i + 1); + const char *str = luaL_checkstring(L, -1); - if (!joystick::Joystick::getConstant(str, button)) - return luaL_error(L, "Invalid gamepad button: %s", str); + if (!joystick::Joystick::getConstant(str, button)) + return luaL_error(L, "Invalid gamepad button: %s", str); - buttons.push_back(button); + buttons.push_back(button); + + lua_pop(L, 1); + } + } + else + { + for (int i = 0; i < num; i++) + { + const char *str = luaL_checkstring(L, i + 2); + + if (!joystick::Joystick::getConstant(str, button)) + return luaL_error(L, "Invalid gamepad button: %s", str); + + buttons.push_back(button); + } } luax_pushboolean(L, j->isGamepadDown(buttons)); diff --git a/jni/love/src/modules/keyboard/wrap_Keyboard.cpp b/jni/love/src/modules/keyboard/wrap_Keyboard.cpp index 3b5b9ed1..647905b1 100644 --- a/jni/love/src/modules/keyboard/wrap_Keyboard.cpp +++ b/jni/love/src/modules/keyboard/wrap_Keyboard.cpp @@ -46,14 +46,30 @@ int w_hasKeyRepeat(lua_State *L) int w_isDown(lua_State *L) { Keyboard::Key k; - int num = lua_gettop(L); + + bool istable = lua_istable(L, 1); + int num = istable ? (int) luax_objlen(L, 1) : lua_gettop(L); + std::vector keylist; keylist.reserve(num); - for (int i = 0; i < num; i++) + if (istable) { - if (Keyboard::getConstant(luaL_checkstring(L, i+1), k)) - keylist.push_back(k); + for (int i = 0; i < num; i++) + { + lua_rawgeti(L, 1, i + 1); + if (Keyboard::getConstant(luaL_checkstring(L, -1), k)) + keylist.push_back(k); + lua_pop(L, 1); + } + } + else + { + for (int i = 0; i < num; i++) + { + if (Keyboard::getConstant(luaL_checkstring(L, i+1), k)) + keylist.push_back(k); + } } luax_pushboolean(L, instance()->isDown(keylist)); @@ -63,14 +79,30 @@ int w_isDown(lua_State *L) int w_isScancodeDown(lua_State *L) { Keyboard::Scancode scancode; - int num = lua_gettop(L); + + bool istable = lua_istable(L, 1); + int num = istable ? (int) luax_objlen(L, 1) : lua_gettop(L); + std::vector scancodelist; scancodelist.reserve(num); - for (int i = 0; i < num; i++) + if (istable) { - if (Keyboard::getConstant(luaL_checkstring(L, i+1), scancode)) - scancodelist.push_back(scancode); + for (int i = 0; i < num; i++) + { + lua_rawgeti(L, 1, i + 1); + if (Keyboard::getConstant(luaL_checkstring(L, -1), scancode)) + scancodelist.push_back(scancode); + lua_pop(L, 1); + } + } + else + { + for (int i = 0; i < num; i++) + { + if (Keyboard::getConstant(luaL_checkstring(L, i+1), scancode)) + scancodelist.push_back(scancode); + } } luax_pushboolean(L, instance()->isScancodeDown(scancodelist)); diff --git a/jni/love/src/modules/love/love.cpp b/jni/love/src/modules/love/love.cpp index 5aef3806..64d3d458 100644 --- a/jni/love/src/modules/love/love.cpp +++ b/jni/love/src/modules/love/love.cpp @@ -307,7 +307,9 @@ int luaopen_love(lua_State *L) lua_pushcfunction(L, w_love_isVersionCompatible); lua_setfield(L, -2, "isVersionCompatible"); -#ifdef LOVE_WINDOWS +#ifdef LOVE_WINDOWS_UWP + lua_pushstring(L, "UWP"); +#elif LOVE_WINDOWS lua_pushstring(L, "Windows"); #elif defined(LOVE_MACOSX) lua_pushstring(L, "OS X"); diff --git a/jni/love/src/modules/math/MathModule.cpp b/jni/love/src/modules/math/MathModule.cpp index 2493630d..0432edd7 100644 --- a/jni/love/src/modules/math/MathModule.cpp +++ b/jni/love/src/modules/math/MathModule.cpp @@ -29,20 +29,19 @@ #include using std::list; -using std::vector; -using love::Vertex; +using love::Vector; namespace { // check if an angle is oriented counter clockwise - inline bool is_oriented_ccw(const Vertex &a, const Vertex &b, const Vertex &c) + inline bool is_oriented_ccw(const Vector &a, const Vector &b, const Vector &c) { // return det(b-a, c-a) >= 0 return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) >= 0; } // check if a and b are on the same side of the line c->d - bool on_same_side(const Vertex &a, const Vertex &b, const Vertex &c, const Vertex &d) + bool on_same_side(const Vector &a, const Vector &b, const Vector &c, const Vector &d) { float px = d.x - c.x, py = d.y - c.y; // return det(p, a-c) * det(p, b-c) >= 0 @@ -52,18 +51,16 @@ namespace } // checks is p is contained in the triangle abc - inline bool point_in_triangle(const Vertex &p, const Vertex &a, const Vertex &b, const Vertex &c) + inline bool point_in_triangle(const Vector &p, const Vector &a, const Vector &b, const Vector &c) { return on_same_side(p,a, b,c) && on_same_side(p,b, a,c) && on_same_side(p,c, a,b); } // checks if any vertex in `vertices' is in the triangle abc. - bool any_point_in_triangle(const list &vertices, const Vertex &a, const Vertex &b, const Vertex &c) + bool any_point_in_triangle(const list &vertices, const Vector &a, const Vector &b, const Vector &c) { - list::const_iterator it, end = vertices.end(); - for (it = vertices.begin(); it != end; ++it) + for (const Vector *p : vertices) { - const Vertex *p = *it; if ((p != &a) && (p != &b) && (p != &c) && point_in_triangle(*p, a,b,c)) // oh god... return true; } @@ -71,7 +68,7 @@ namespace return false; } - inline bool is_ear(const Vertex &a, const Vertex &b, const Vertex &c, const list &vertices) + inline bool is_ear(const Vector &a, const Vector &b, const Vector &c, const list &vertices) { return is_oriented_ccw(a,b,c) && !any_point_in_triangle(vertices, a,b,c); } @@ -100,25 +97,25 @@ RandomGenerator *Math::newRandomGenerator() return new RandomGenerator(); } -BezierCurve *Math::newBezierCurve(const vector &points) +BezierCurve *Math::newBezierCurve(const std::vector &points) { return new BezierCurve(points); } -vector Math::triangulate(const vector &polygon) +std::vector Math::triangulate(const std::vector &polygon) { if (polygon.size() < 3) throw love::Exception("Not a polygon"); else if (polygon.size() == 3) - return vector(1, Triangle(polygon[0], polygon[1], polygon[2])); + return std::vector(1, Triangle(polygon[0], polygon[1], polygon[2])); // collect list of connections and record leftmost item to check if the polygon // has the expected winding - vector next_idx(polygon.size()), prev_idx(polygon.size()); + std::vector next_idx(polygon.size()), prev_idx(polygon.size()); size_t idx_lm = 0; for (size_t i = 0; i < polygon.size(); ++i) { - const Vertex &lm = polygon[idx_lm], &p = polygon[i]; + const love::Vector &lm = polygon[idx_lm], &p = polygon[i]; if (p.x < lm.x || (p.x == lm.x && p.y < lm.y)) idx_lm = i; next_idx[i] = i+1; @@ -132,7 +129,7 @@ vector Math::triangulate(const vector &polygon) next_idx.swap(prev_idx); // collect list of concave polygons - list concave_vertices; + list concave_vertices; for (size_t i = 0; i < polygon.size(); ++i) { if (!is_oriented_ccw(polygon[prev_idx[i]], polygon[i], polygon[next_idx[i]])) @@ -140,14 +137,14 @@ vector Math::triangulate(const vector &polygon) } // triangulation according to kong - vector triangles; + std::vector triangles; size_t n_vertices = polygon.size(); size_t current = 1, skipped = 0, next, prev; while (n_vertices > 3) { next = next_idx[current]; prev = prev_idx[current]; - const Vertex &a = polygon[prev], &b = polygon[current], &c = polygon[next]; + const Vector &a = polygon[prev], &b = polygon[current], &c = polygon[next]; if (is_ear(a,b,c, concave_vertices)) { triangles.push_back(Triangle(a,b,c)); @@ -170,7 +167,7 @@ vector Math::triangulate(const vector &polygon) return triangles; } -bool Math::isConvex(const std::vector &polygon) +bool Math::isConvex(const std::vector &polygon) { if (polygon.size() < 3) return false; diff --git a/jni/love/src/modules/math/MathModule.h b/jni/love/src/modules/math/MathModule.h index 66b4100b..ee4ffe6f 100644 --- a/jni/love/src/modules/math/MathModule.h +++ b/jni/love/src/modules/math/MathModule.h @@ -43,6 +43,14 @@ namespace love namespace math { +struct Triangle +{ + Triangle(const Vector &x, const Vector &y, const Vector &z) + : a(x), b(y), c(z) + {} + Vector a, b, c; +}; + class BezierCurve; class Math : public Module @@ -87,7 +95,7 @@ public: * @param polygon Polygon to triangulate. Must not intersect itself. * @return List of triangles the polygon is composed of. **/ - std::vector triangulate(const std::vector &polygon); + std::vector triangulate(const std::vector &polygon); /** * Checks whether a polygon is convex. @@ -95,7 +103,7 @@ public: * @param polygon Polygon to test. * @return True if the polygon is convex, false otherwise. **/ - bool isConvex(const std::vector &polygon); + bool isConvex(const std::vector &polygon); /** * Converts a value from the sRGB (gamma) colorspace to linear RGB. diff --git a/jni/love/src/modules/math/wrap_Math.cpp b/jni/love/src/modules/math/wrap_Math.cpp index 74c8a4bd..0453a153 100644 --- a/jni/love/src/modules/math/wrap_Math.cpp +++ b/jni/love/src/modules/math/wrap_Math.cpp @@ -119,7 +119,7 @@ int w_newBezierCurve(lua_State *L) int w_triangulate(lua_State *L) { - std::vector vertices; + std::vector vertices; if (lua_istable(L, 1)) { int top = (int) luax_objlen(L, 1); @@ -129,7 +129,7 @@ int w_triangulate(lua_State *L) lua_rawgeti(L, 1, i); lua_rawgeti(L, 1, i+1); - Vertex v; + Vector v; v.x = (float) luaL_checknumber(L, -2); v.y = (float) luaL_checknumber(L, -1); vertices.push_back(v); @@ -143,7 +143,7 @@ int w_triangulate(lua_State *L) vertices.reserve(top / 2); for (int i = 1; i <= top; i += 2) { - Vertex v; + Vector v; v.x = (float) luaL_checknumber(L, i); v.y = (float) luaL_checknumber(L, i+1); vertices.push_back(v); @@ -189,7 +189,7 @@ int w_triangulate(lua_State *L) int w_isConvex(lua_State *L) { - std::vector vertices; + std::vector vertices; if (lua_istable(L, 1)) { int top = (int) luax_objlen(L, 1); @@ -199,7 +199,7 @@ int w_isConvex(lua_State *L) lua_rawgeti(L, 1, i); lua_rawgeti(L, 1, i+1); - Vertex v; + love::Vector v; v.x = (float) luaL_checknumber(L, -2); v.y = (float) luaL_checknumber(L, -1); vertices.push_back(v); @@ -213,7 +213,7 @@ int w_isConvex(lua_State *L) vertices.reserve(top / 2); for (int i = 1; i <= top; i += 2) { - Vertex v; + love::Vector v; v.x = (float) luaL_checknumber(L, i); v.y = (float) luaL_checknumber(L, i+1); vertices.push_back(v); diff --git a/jni/love/src/modules/math/wrap_Math.lua b/jni/love/src/modules/math/wrap_Math.lua index 77ed4ce0..d45c5a76 100644 --- a/jni/love/src/modules/math/wrap_Math.lua +++ b/jni/love/src/modules/math/wrap_Math.lua @@ -88,7 +88,7 @@ function love_math.noise(x, y, z, w) return tonumber(ffifuncs.noise3(x, y, z)) elseif y ~= nil then return tonumber(ffifuncs.noise2(x, y)) - elseif x ~= nil then + else return tonumber(ffifuncs.noise1(x)) end end diff --git a/jni/love/src/modules/mouse/wrap_Mouse.cpp b/jni/love/src/modules/mouse/wrap_Mouse.cpp index 2d7f7dc2..90b8892a 100644 --- a/jni/love/src/modules/mouse/wrap_Mouse.cpp +++ b/jni/love/src/modules/mouse/wrap_Mouse.cpp @@ -142,12 +142,26 @@ int w_setPosition(lua_State *L) int w_isDown(lua_State *L) { - int num = lua_gettop(L); + bool istable = lua_istable(L, 1); + int num = istable ? (int) luax_objlen(L, 1) : lua_gettop(L); + std::vector buttons; buttons.reserve(num); - for (int i = 0; i < num; i++) - buttons.push_back((int) luaL_checknumber(L, i + 1)); + if (istable) + { + for (int i = 0; i < num; i++) + { + lua_rawgeti(L, 1, i + 1); + buttons.push_back((int) luaL_checknumber(L, -1)); + lua_pop(L, 1); + } + } + else + { + for (int i = 0; i < num; i++) + buttons.push_back((int) luaL_checknumber(L, i + 1)); + } luax_pushboolean(L, instance()->isDown(buttons)); return 1; diff --git a/jni/love/src/modules/physics/box2d/ChainShape.cpp b/jni/love/src/modules/physics/box2d/ChainShape.cpp index d55e3920..1b77d0cc 100644 --- a/jni/love/src/modules/physics/box2d/ChainShape.cpp +++ b/jni/love/src/modules/physics/box2d/ChainShape.cpp @@ -55,6 +55,12 @@ void ChainShape::setNextVertex(float x, float y) c->SetNextVertex(Physics::scaleDown(v)); } +void ChainShape::setNextVertex() +{ + b2ChainShape *c = (b2ChainShape *)shape; + c->m_hasNextVertex = false; +} + void ChainShape::setPreviousVertex(float x, float y) { if (loop) @@ -64,7 +70,43 @@ void ChainShape::setPreviousVertex(float x, float y) } b2Vec2 v(x, y); b2ChainShape *c = (b2ChainShape *)shape; - c->SetNextVertex(Physics::scaleDown(v)); + c->SetPrevVertex(Physics::scaleDown(v)); +} + +void ChainShape::setPreviousVertex() +{ + b2ChainShape *c = (b2ChainShape *)shape; + c->m_hasPrevVertex = false; +} + +bool ChainShape::getNextVertex(float &x, float &y) const +{ + b2ChainShape *c = (b2ChainShape *)shape; + + if (c->m_hasNextVertex) + { + b2Vec2 v = Physics::scaleUp(c->m_nextVertex); + x = v.x; + y = v.y; + return true; + } + + return false; +} + +bool ChainShape::getPreviousVertex(float &x, float &y) const +{ + b2ChainShape *c = (b2ChainShape *)shape; + + if (c->m_hasPrevVertex) + { + b2Vec2 v = Physics::scaleUp(c->m_prevVertex); + x = v.x; + y = v.y; + return true; + } + + return false; } EdgeShape *ChainShape::getChildEdge(int index) const diff --git a/jni/love/src/modules/physics/box2d/ChainShape.h b/jni/love/src/modules/physics/box2d/ChainShape.h index 9f53ca95..8b7a18f2 100644 --- a/jni/love/src/modules/physics/box2d/ChainShape.h +++ b/jni/love/src/modules/physics/box2d/ChainShape.h @@ -54,6 +54,7 @@ public: * @param y The y-coordinate of the vertex. **/ void setNextVertex(float x, float y); + void setNextVertex(); /** * Establish connectivity to a vertex that precedes @@ -62,6 +63,17 @@ public: * @param y The y-coordinate of the vertex. **/ void setPreviousVertex(float x, float y); + void setPreviousVertex(); + + /** + * Gets the vertex that follows the last vertex. + **/ + bool getNextVertex(float &x, float &y) const; + + /** + * Gets the vertex that precedes the first vertex. + **/ + bool getPreviousVertex(float &x, float &y) const; /** * Returns a child EdgeShape. diff --git a/jni/love/src/modules/physics/box2d/EdgeShape.cpp b/jni/love/src/modules/physics/box2d/EdgeShape.cpp index 47f427c9..8189b131 100644 --- a/jni/love/src/modules/physics/box2d/EdgeShape.cpp +++ b/jni/love/src/modules/physics/box2d/EdgeShape.cpp @@ -43,6 +43,64 @@ EdgeShape::~EdgeShape() { } +void EdgeShape::setNextVertex(float x, float y) +{ + b2EdgeShape *e = (b2EdgeShape *)shape; + b2Vec2 v(x, y); + e->m_vertex3 = Physics::scaleDown(v); + e->m_hasVertex3 = true; +} + +void EdgeShape::setNextVertex() +{ + b2EdgeShape *e = (b2EdgeShape *)shape; + e->m_hasVertex3 = false; +} + +bool EdgeShape::getNextVertex(float &x, float &y) const +{ + b2EdgeShape *e = (b2EdgeShape *)shape; + + if (e->m_hasVertex3) + { + b2Vec2 v = Physics::scaleUp(e->m_vertex3); + x = v.x; + y = v.y; + return true; + } + + return false; +} + +void EdgeShape::setPreviousVertex(float x, float y) +{ + b2EdgeShape *e = (b2EdgeShape *)shape; + b2Vec2 v(x, y); + e->m_vertex0 = Physics::scaleDown(v); + e->m_hasVertex0 = true; +} + +void EdgeShape::setPreviousVertex() +{ + b2EdgeShape *e = (b2EdgeShape *)shape; + e->m_hasVertex0 = false; +} + +bool EdgeShape::getPreviousVertex(float &x, float &y) const +{ + b2EdgeShape *e = (b2EdgeShape *)shape; + + if (e->m_hasVertex0) + { + b2Vec2 v = Physics::scaleUp(e->m_vertex0); + x = v.x; + y = v.y; + return true; + } + + return false; +} + int EdgeShape::getPoints(lua_State *L) { b2EdgeShape *e = (b2EdgeShape *)shape; diff --git a/jni/love/src/modules/physics/box2d/EdgeShape.h b/jni/love/src/modules/physics/box2d/EdgeShape.h index 86fd4e83..3e5184a2 100644 --- a/jni/love/src/modules/physics/box2d/EdgeShape.h +++ b/jni/love/src/modules/physics/box2d/EdgeShape.h @@ -47,6 +47,14 @@ public: virtual ~EdgeShape(); + void setNextVertex(float x, float y); + void setNextVertex(); + bool getNextVertex(float &x, float &y) const; + + void setPreviousVertex(float x, float y); + void setPreviousVertex(); + bool getPreviousVertex(float &x, float &y) const; + /** * Returns the transformed points of the edge shape. * This function is useful for debug drawing and such. diff --git a/jni/love/src/modules/physics/box2d/Fixture.cpp b/jni/love/src/modules/physics/box2d/Fixture.cpp index 49689a4b..7f0b31e2 100644 --- a/jni/love/src/modules/physics/box2d/Fixture.cpp +++ b/jni/love/src/modules/physics/box2d/Fixture.cpp @@ -193,16 +193,28 @@ int Fixture::getMask(lua_State *L) uint16 Fixture::getBits(lua_State *L) { // Get number of args. - int argc = lua_gettop(L); + bool istable = lua_istable(L, 1); + int argc = istable ? (int) luax_objlen(L, 1) : lua_gettop(L); // The new bitset. std::bitset<16> b; - for (int i = 1; i<=argc; i++) + for (int i = 1; i <= argc; i++) { - size_t bpos = (size_t)(lua_tointeger(L, i)-1); + size_t bpos = 0; + + if (istable) + { + lua_rawgeti(L, 1, i); + bpos = (size_t) (lua_tointeger(L, -1) - 1); + lua_pop(L, 1); + } + else + bpos = (size_t) (lua_tointeger(L, i) - 1); + if (bpos >= 16) luaL_error(L, "Values must be in range 1-16."); + b.set(bpos, true); } @@ -272,7 +284,8 @@ int Fixture::rayCast(lua_State *L) const int Fixture::getBoundingBox(lua_State *L) const { int childIndex = (int) luaL_optnumber(L, 1, 1) - 1; // Convert from 1-based index - b2AABB box = fixture->GetAABB(childIndex); + b2AABB box; + luax_catchexcept(L, [&]() { box = fixture->GetAABB(childIndex); }); box = Physics::scaleUp(box); lua_pushnumber(L, box.lowerBound.x); lua_pushnumber(L, box.lowerBound.y); diff --git a/jni/love/src/modules/physics/box2d/Joint.h b/jni/love/src/modules/physics/box2d/Joint.h index dd6be8e1..25823498 100644 --- a/jni/love/src/modules/physics/box2d/Joint.h +++ b/jni/love/src/modules/physics/box2d/Joint.h @@ -84,8 +84,8 @@ public: **/ Type getType() const; - Body *getBodyA() const; - Body *getBodyB() const; + virtual Body *getBodyA() const; + virtual Body *getBodyB() const; /** * Gets the anchor positions of the Joint in world diff --git a/jni/love/src/modules/physics/box2d/MouseJoint.cpp b/jni/love/src/modules/physics/box2d/MouseJoint.cpp index b037a9c7..96768e87 100644 --- a/jni/love/src/modules/physics/box2d/MouseJoint.cpp +++ b/jni/love/src/modules/physics/box2d/MouseJoint.cpp @@ -36,6 +36,9 @@ MouseJoint::MouseJoint(Body *body1, float x, float y) : Joint(body1) , joint(NULL) { + if (body1->getType() == Body::BODY_KINEMATIC) + throw love::Exception("Cannot attach a MouseJoint to a kinematic body"); + b2MouseJointDef def; def.bodyA = body1->world->getGroundBody(); @@ -91,6 +94,16 @@ float MouseJoint::getDampingRatio() const return joint->GetDampingRatio(); } +Body *MouseJoint::getBodyA() const +{ + return Joint::getBodyB(); +} + +Body *MouseJoint::getBodyB() const +{ + return nullptr; +} + } // box2d } // physics } // love diff --git a/jni/love/src/modules/physics/box2d/MouseJoint.h b/jni/love/src/modules/physics/box2d/MouseJoint.h index 803bf4b9..bf365e8d 100644 --- a/jni/love/src/modules/physics/box2d/MouseJoint.h +++ b/jni/love/src/modules/physics/box2d/MouseJoint.h @@ -95,6 +95,9 @@ public: **/ float getDampingRatio() const; + virtual Body *getBodyA() const; + virtual Body *getBodyB() const; + private: // The Box2D MouseJoint object. b2MouseJoint *joint; diff --git a/jni/love/src/modules/physics/box2d/Physics.cpp b/jni/love/src/modules/physics/box2d/Physics.cpp index 8673c1ad..e55be0c5 100644 --- a/jni/love/src/modules/physics/box2d/Physics.cpp +++ b/jni/love/src/modules/physics/box2d/Physics.cpp @@ -223,9 +223,14 @@ MouseJoint *Physics::newMouseJoint(Body *body, float x, float y) return new MouseJoint(body, x, y); } -RevoluteJoint *Physics::newRevoluteJoint(Body *body1, Body *body2, float x, float y, bool collideConnected) +RevoluteJoint *Physics::newRevoluteJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected) { - return new RevoluteJoint(body1, body2, x, y, collideConnected); + return new RevoluteJoint(body1, body2, xA, yA, xB, yB, collideConnected); +} + +RevoluteJoint *Physics::newRevoluteJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected, float referenceAngle) +{ + return new RevoluteJoint(body1, body2, xA, yA, xB, yB, collideConnected, referenceAngle); } PrismaticJoint *Physics::newPrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected) @@ -233,6 +238,11 @@ PrismaticJoint *Physics::newPrismaticJoint(Body *body1, Body *body2, float xA, f return new PrismaticJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected); } +PrismaticJoint *Physics::newPrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected, float referenceAngle) +{ + return new PrismaticJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected, referenceAngle); +} + PulleyJoint *Physics::newPulleyJoint(Body *body1, Body *body2, b2Vec2 groundAnchor1, b2Vec2 groundAnchor2, b2Vec2 anchor1, b2Vec2 anchor2, float ratio, bool collideConnected) { return new PulleyJoint(body1, body2, groundAnchor1, groundAnchor2, anchor1, anchor2, ratio, collideConnected); @@ -253,6 +263,11 @@ WeldJoint *Physics::newWeldJoint(Body *body1, Body *body2, float xA, float yA, f return new WeldJoint(body1, body2, xA, yA, xB, yB, collideConnected); } +WeldJoint *Physics::newWeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected, float referenceAngle) +{ + return new WeldJoint(body1, body2, xA, yA, xB, yB, collideConnected, referenceAngle); +} + WheelJoint *Physics::newWheelJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected) { return new WheelJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected); diff --git a/jni/love/src/modules/physics/box2d/Physics.h b/jni/love/src/modules/physics/box2d/Physics.h index 11350637..48089f5f 100644 --- a/jni/love/src/modules/physics/box2d/Physics.h +++ b/jni/love/src/modules/physics/box2d/Physics.h @@ -171,11 +171,16 @@ public: /** * Creates a new RevoluteJoint connecting body1 with body2. - * @param x Anchor along the x-axis. (World coordinates) - * @param y Anchor along the y-axis. (World coordinates) + * @param xA Anchor for body 1 along the x-axis. (World coordinates) + * @param yA Anchor for body 1 along the y-axis. (World coordinates) + * @param xB Anchor for body 2 along the x-axis. (World coordinates) + * @param yB Anchor for body 2 along the y-axis. (World coordinates) * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. + * @param referenceAngle The reference angle. **/ - RevoluteJoint *newRevoluteJoint(Body *body1, Body *body2, float x, float y, bool collideConnected); + RevoluteJoint *newRevoluteJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); + + RevoluteJoint *newRevoluteJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected, float referenceAngle); /** * Creates a new PrismaticJoint connecting body1 with body2. @@ -186,9 +191,12 @@ public: * @param ax The x-component of the world-axis. * @param ay The y-component of the world-axis. * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. + * @param referenceAngle The reference angle. **/ PrismaticJoint *newPrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected); + PrismaticJoint *newPrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected, float referenceAngle); + /** * Creates a new PulleyJoint connecting body1 with body2. * @param groundAnchor1 World ground-anchor for body1. @@ -226,9 +234,12 @@ public: * @param xB Anchor for body 2 along the x-axis. (World coordinates) * @param yB Anchor for body 2 along the y-axis. (World coordinates) * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. + * @param referenceAngle The reference angle. **/ WeldJoint *newWeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); + WeldJoint *newWeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected, float referenceAngle); + /** * Creates a new WheelJoint connecting body1 with body2. * @param xA Anchor for body 1 along the x-axis. (World coordinates) diff --git a/jni/love/src/modules/physics/box2d/PrismaticJoint.cpp b/jni/love/src/modules/physics/box2d/PrismaticJoint.cpp index cd56aa96..8ee1e108 100644 --- a/jni/love/src/modules/physics/box2d/PrismaticJoint.cpp +++ b/jni/love/src/modules/physics/box2d/PrismaticJoint.cpp @@ -37,18 +37,32 @@ PrismaticJoint::PrismaticJoint(Body *body1, Body *body2, float xA, float yA, flo , joint(NULL) { b2PrismaticJointDef def; + init(def, body1, body2, xA, yA, xB, yB, ax, ay, collideConnected); + joint = (b2PrismaticJoint *)createJoint(&def); +} +PrismaticJoint::PrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected, float referenceAngle) + : Joint(body1, body2) + , joint(NULL) +{ + b2PrismaticJointDef def; + init(def, body1, body2, xA, yA, xB, yB, ax, ay, collideConnected); + def.referenceAngle = referenceAngle; + joint = (b2PrismaticJoint *)createJoint(&def); +} + +PrismaticJoint::~PrismaticJoint() +{ +} + +void PrismaticJoint::init(b2PrismaticJointDef &def, Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected) +{ def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(xA,yA)), b2Vec2(ax,ay)); def.localAnchorB = body2->body->GetLocalPoint(Physics::scaleDown(b2Vec2(xB, yB))); def.lowerTranslation = 0.0f; def.upperTranslation = 100.0f; def.enableLimit = true; def.collideConnected = collideConnected; - joint = (b2PrismaticJoint *)createJoint(&def); -} - -PrismaticJoint::~PrismaticJoint() -{ } float PrismaticJoint::getJointTranslation() const @@ -138,6 +152,19 @@ int PrismaticJoint::getLimits(lua_State *L) return 2; } +int PrismaticJoint::getAxis(lua_State *L) +{ + b2Vec2 axis = joint->GetLocalAxisA(); + getBodyA()->getWorldVector(axis.x, axis.y, axis.x, axis.y); + lua_pushnumber(L, axis.x); + lua_pushnumber(L, axis.y); + return 2; +} + +float PrismaticJoint::getReferenceAngle() const +{ + return joint->GetReferenceAngle(); +} } // box2d } // physics diff --git a/jni/love/src/modules/physics/box2d/PrismaticJoint.h b/jni/love/src/modules/physics/box2d/PrismaticJoint.h index 5a34b2c8..dba1d4e7 100644 --- a/jni/love/src/modules/physics/box2d/PrismaticJoint.h +++ b/jni/love/src/modules/physics/box2d/PrismaticJoint.h @@ -44,6 +44,8 @@ public: **/ PrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected); + PrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected, float referenceAngle); + virtual ~PrismaticJoint(); /** @@ -134,10 +136,24 @@ public: **/ int getLimits(lua_State *L); + /** + * Gets the axis unit vector, relative to body1. + * @returns The X component of the axis unit vector. + * @returns The Y component of the axis unit vector. + **/ + int getAxis(lua_State *L); + + /** + * Gets the reference angle. + **/ + float getReferenceAngle() const; + private: // The Box2D prismatic joint object. b2PrismaticJoint *joint; + + void init(b2PrismaticJointDef &def, Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected); }; } // box2d diff --git a/jni/love/src/modules/physics/box2d/RevoluteJoint.cpp b/jni/love/src/modules/physics/box2d/RevoluteJoint.cpp index 513b1fa8..ba1e1e87 100644 --- a/jni/love/src/modules/physics/box2d/RevoluteJoint.cpp +++ b/jni/love/src/modules/physics/box2d/RevoluteJoint.cpp @@ -34,13 +34,22 @@ namespace physics namespace box2d { -RevoluteJoint::RevoluteJoint(Body *body1, Body *body2, float x, float y, bool collideConnected) +RevoluteJoint::RevoluteJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected) : Joint(body1, body2) , joint(NULL) { b2RevoluteJointDef def; - def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(x,y))); - def.collideConnected = collideConnected; + init(def, body1, body2, xA, yA, xB, yB, collideConnected); + joint = (b2RevoluteJoint *)createJoint(&def); +} + +RevoluteJoint::RevoluteJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected, float referenceAngle) + : Joint(body1, body2) + , joint(NULL) +{ + b2RevoluteJointDef def; + init(def, body1, body2, xA, yA, xB, yB, collideConnected); + def.referenceAngle = referenceAngle; joint = (b2RevoluteJoint *)createJoint(&def); } @@ -48,6 +57,13 @@ RevoluteJoint::~RevoluteJoint() { } +void RevoluteJoint::init(b2RevoluteJointDef &def, Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected) +{ + def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(xA,yA))); + def.localAnchorB = body2->body->GetLocalPoint(Physics::scaleDown(b2Vec2(xB, yB))); + def.collideConnected = collideConnected; +} + float RevoluteJoint::getJointAngle() const { return joint->GetJointAngle(); @@ -135,6 +151,11 @@ int RevoluteJoint::getLimits(lua_State *L) return 2; } +float RevoluteJoint::getReferenceAngle() const +{ + return joint->GetReferenceAngle(); +} + } // box2d } // physics } // love diff --git a/jni/love/src/modules/physics/box2d/RevoluteJoint.h b/jni/love/src/modules/physics/box2d/RevoluteJoint.h index d3412e3c..f54026be 100644 --- a/jni/love/src/modules/physics/box2d/RevoluteJoint.h +++ b/jni/love/src/modules/physics/box2d/RevoluteJoint.h @@ -42,7 +42,9 @@ public: /** * Creates a new RevoluteJoint connecting body1 and body2. **/ - RevoluteJoint(Body *body1, Body *body2, float x, float y, bool collideConnected); + RevoluteJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); + + RevoluteJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected, float referenceAngle); virtual ~RevoluteJoint(); @@ -134,10 +136,17 @@ public: **/ int getLimits(lua_State *L); + /** + * Gets the reference angle. + **/ + float getReferenceAngle() const; + private: // The Box2D revolute joint object. b2RevoluteJoint *joint; + + void init(b2RevoluteJointDef &def, Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); }; } // box2d diff --git a/jni/love/src/modules/physics/box2d/WeldJoint.cpp b/jni/love/src/modules/physics/box2d/WeldJoint.cpp index 51b6b9f5..bc21a28f 100644 --- a/jni/love/src/modules/physics/box2d/WeldJoint.cpp +++ b/jni/love/src/modules/physics/box2d/WeldJoint.cpp @@ -39,9 +39,17 @@ WeldJoint::WeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, flo , joint(NULL) { b2WeldJointDef def; - def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(xA,yA))); - def.localAnchorB = body2->body->GetLocalPoint(Physics::scaleDown(b2Vec2(xB, yB))); - def.collideConnected = collideConnected; + init(def, body1, body2, xA, yA, xB, yB, collideConnected); + joint = (b2WeldJoint *)createJoint(&def); +} + +WeldJoint::WeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected, float referenceAngle) + : Joint(body1, body2) + , joint(NULL) +{ + b2WeldJointDef def; + init(def, body1, body2, xA, yA, xB, yB, collideConnected); + def.referenceAngle = referenceAngle; joint = (b2WeldJoint *)createJoint(&def); } @@ -49,6 +57,13 @@ WeldJoint::~WeldJoint() { } +void WeldJoint::init(b2WeldJointDef &def, Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected) +{ + def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(xA,yA))); + def.localAnchorB = body2->body->GetLocalPoint(Physics::scaleDown(b2Vec2(xB, yB))); + def.collideConnected = collideConnected; +} + void WeldJoint::setFrequency(float hz) { joint->SetFrequency(hz); @@ -69,6 +84,11 @@ float WeldJoint::getDampingRatio() const return joint->GetDampingRatio(); } +float WeldJoint::getReferenceAngle() const +{ + return joint->GetReferenceAngle(); +} + } // box2d } // physics } // love diff --git a/jni/love/src/modules/physics/box2d/WeldJoint.h b/jni/love/src/modules/physics/box2d/WeldJoint.h index 8ddbb9c8..c3fa0a3d 100644 --- a/jni/love/src/modules/physics/box2d/WeldJoint.h +++ b/jni/love/src/modules/physics/box2d/WeldJoint.h @@ -43,6 +43,8 @@ public: **/ WeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); + WeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected, float referenceAngle); + virtual ~WeldJoint(); /** @@ -67,10 +69,17 @@ public: **/ float getDampingRatio() const; + /** + * Gets the reference angle. + **/ + float getReferenceAngle() const; + private: // The Box2D weld joint object. b2WeldJoint *joint; + + void init(b2WeldJointDef &def, Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); }; } // box2d diff --git a/jni/love/src/modules/physics/box2d/WheelJoint.cpp b/jni/love/src/modules/physics/box2d/WheelJoint.cpp index b28220ce..2670878c 100644 --- a/jni/love/src/modules/physics/box2d/WheelJoint.cpp +++ b/jni/love/src/modules/physics/box2d/WheelJoint.cpp @@ -113,6 +113,14 @@ float WheelJoint::getSpringDampingRatio() const return joint->GetSpringDampingRatio(); } +int WheelJoint::getAxis(lua_State *L) +{ + b2Vec2 axis = joint->GetLocalAxisA(); + getBodyA()->getWorldVector(axis.x, axis.y, axis.x, axis.y); + lua_pushnumber(L, axis.x); + lua_pushnumber(L, axis.y); + return 2; +} } // box2d } // physics diff --git a/jni/love/src/modules/physics/box2d/WheelJoint.h b/jni/love/src/modules/physics/box2d/WheelJoint.h index 7d1b4600..b08d2810 100644 --- a/jni/love/src/modules/physics/box2d/WheelJoint.h +++ b/jni/love/src/modules/physics/box2d/WheelJoint.h @@ -114,6 +114,13 @@ public: **/ float getSpringDampingRatio() const; + /** + * Gets the axis unit vector, relative to body1. + * @returns The X component of the axis unit vector. + * @returns The Y component of the axis unit vector. + **/ + int getAxis(lua_State *L); + private: // The Box2D wheel joint object. diff --git a/jni/love/src/modules/physics/box2d/wrap_ChainShape.cpp b/jni/love/src/modules/physics/box2d/wrap_ChainShape.cpp index 8cf7d8f8..a68e6677 100644 --- a/jni/love/src/modules/physics/box2d/wrap_ChainShape.cpp +++ b/jni/love/src/modules/physics/box2d/wrap_ChainShape.cpp @@ -37,18 +37,28 @@ ChainShape *luax_checkchainshape(lua_State *L, int idx) int w_ChainShape_setNextVertex(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); - float x = (float)luaL_checknumber(L, 2); - float y = (float)luaL_checknumber(L, 3); - luax_catchexcept(L, [&](){ c->setNextVertex(x, y); }); + if (lua_isnoneornil(L, 2)) + c->setNextVertex(); + else + { + float x = (float)luaL_checknumber(L, 2); + float y = (float)luaL_checknumber(L, 3); + luax_catchexcept(L, [&](){ c->setNextVertex(x, y); }); + } return 0; } int w_ChainShape_setPreviousVertex(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); - float x = (float)luaL_checknumber(L, 2); - float y = (float)luaL_checknumber(L, 3); - luax_catchexcept(L, [&](){ c->setPreviousVertex(x, y); }); + if (lua_isnoneornil(L, 2)) + c->setPreviousVertex(); + else + { + float x = (float)luaL_checknumber(L, 2); + float y = (float)luaL_checknumber(L, 3); + luax_catchexcept(L, [&](){ c->setPreviousVertex(x, y); }); + } return 0; } @@ -82,6 +92,32 @@ int w_ChainShape_getPoint(lua_State *L) return 2; } +int w_ChainShape_getNextVertex(lua_State *L) +{ + ChainShape *c = luax_checkchainshape(L, 1); + float x, y; + if (c->getNextVertex(x, y)) + { + lua_pushnumber(L, x); + lua_pushnumber(L, y); + return 2; + } + return 0; +} + +int w_ChainShape_getPreviousVertex(lua_State *L) +{ + ChainShape *c = luax_checkchainshape(L, 1); + float x, y; + if (c->getPreviousVertex(x, y)) + { + lua_pushnumber(L, x); + lua_pushnumber(L, y); + return 2; + } + return 0; +} + int w_ChainShape_getPoints(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); @@ -102,6 +138,8 @@ static const luaL_Reg w_ChainShape_functions[] = { { "setNextVertex", w_ChainShape_setNextVertex }, { "setPreviousVertex", w_ChainShape_setPreviousVertex }, + { "getNextVertex", w_ChainShape_getNextVertex }, + { "getPreviousVertex", w_ChainShape_getPreviousVertex }, { "getChildEdge", w_ChainShape_getChildEdge }, { "getVertexCount", w_ChainShape_getVertexCount }, { "getPoint", w_ChainShape_getPoint }, diff --git a/jni/love/src/modules/physics/box2d/wrap_EdgeShape.cpp b/jni/love/src/modules/physics/box2d/wrap_EdgeShape.cpp index 4dfceb32..53c8805c 100644 --- a/jni/love/src/modules/physics/box2d/wrap_EdgeShape.cpp +++ b/jni/love/src/modules/physics/box2d/wrap_EdgeShape.cpp @@ -32,6 +32,60 @@ EdgeShape *luax_checkedgeshape(lua_State *L, int idx) return luax_checktype(L, idx, PHYSICS_EDGE_SHAPE_ID); } +int w_EdgeShape_setNextVertex(lua_State *L) +{ + EdgeShape *t = luax_checkedgeshape(L, 1); + if (lua_isnoneornil(L, 2)) + t->setNextVertex(); + else + { + float x = (float)luaL_checknumber(L, 2); + float y = (float)luaL_checknumber(L, 3); + t->setNextVertex(x, y); + } + return 0; +} + +int w_EdgeShape_setPreviousVertex(lua_State *L) +{ + EdgeShape *t = luax_checkedgeshape(L, 1); + if (lua_isnoneornil(L, 2)) + t->setPreviousVertex(); + else + { + float x = (float)luaL_checknumber(L, 2); + float y = (float)luaL_checknumber(L, 3); + t->setPreviousVertex(x, y); + } + return 0; +} + +int w_EdgeShape_getNextVertex(lua_State *L) +{ + EdgeShape *t = luax_checkedgeshape(L, 1); + float x, y; + if (t->getNextVertex(x, y)) + { + lua_pushnumber(L, x); + lua_pushnumber(L, y); + return 2; + } + return 0; +} + +int w_EdgeShape_getPreviousVertex(lua_State *L) +{ + EdgeShape *t = luax_checkedgeshape(L, 1); + float x, y; + if (t->getPreviousVertex(x, y)) + { + lua_pushnumber(L, x); + lua_pushnumber(L, y); + return 2; + } + return 0; +} + int w_EdgeShape_getPoints(lua_State *L) { EdgeShape *t = luax_checkedgeshape(L, 1); @@ -41,6 +95,10 @@ int w_EdgeShape_getPoints(lua_State *L) static const luaL_Reg w_EdgeShape_functions[] = { + { "setNextVertex", w_EdgeShape_setNextVertex }, + { "setPreviousVertex", w_EdgeShape_setPreviousVertex }, + { "getNextVertex", w_EdgeShape_getNextVertex }, + { "getPreviousVertex", w_EdgeShape_getPreviousVertex }, { "getPoints", w_EdgeShape_getPoints }, { 0, 0 } }; diff --git a/jni/love/src/modules/physics/box2d/wrap_Fixture.cpp b/jni/love/src/modules/physics/box2d/wrap_Fixture.cpp index da045c54..6074c256 100644 --- a/jni/love/src/modules/physics/box2d/wrap_Fixture.cpp +++ b/jni/love/src/modules/physics/box2d/wrap_Fixture.cpp @@ -118,8 +118,8 @@ int w_Fixture_getBody(lua_State *L) int w_Fixture_getShape(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); - Shape *shape = t->getShape(); - if (shape == 0) + StrongRef shape(t->getShape(), Acquire::NORETAIN); + if (shape.get() == nullptr) return 0; switch (shape->getType()) { @@ -139,7 +139,6 @@ int w_Fixture_getShape(lua_State *L) luax_pushtype(L, PHYSICS_SHAPE_ID, shape); break; } - shape->release(); return 1; } diff --git a/jni/love/src/modules/physics/box2d/wrap_Physics.cpp b/jni/love/src/modules/physics/box2d/wrap_Physics.cpp index ef6327c6..27dc7101 100644 --- a/jni/love/src/modules/physics/box2d/wrap_Physics.cpp +++ b/jni/love/src/modules/physics/box2d/wrap_Physics.cpp @@ -215,12 +215,27 @@ int w_newRevoluteJoint(lua_State *L) { Body *body1 = luax_checkbody(L, 1); Body *body2 = luax_checkbody(L, 2); - float x = (float)luaL_checknumber(L, 3); - float y = (float)luaL_checknumber(L, 4); - bool collideConnected = luax_optboolean(L, 5, false); + float xA = (float)luaL_checknumber(L, 3); + float yA = (float)luaL_checknumber(L, 4); + float xB, yB; + bool collideConnected; + float referenceAngle = 0.0f; + if (lua_gettop(L) >= 6) + { + xB = (float)luaL_checknumber(L, 5); + yB = (float)luaL_checknumber(L, 6); + collideConnected = luax_optboolean(L, 7, false); + referenceAngle = (float)luaL_optnumber(L, 8, referenceAngle); + } + else + { + xB = xA; + yB = yA; + collideConnected = luax_optboolean(L, 5, false); + } RevoluteJoint *j; luax_catchexcept(L, [&]() { - j = instance()->newRevoluteJoint(body1, body2, x, y, collideConnected); + j = instance()->newRevoluteJoint(body1, body2, xA, yA, xB, yB, collideConnected, referenceAngle); }); luax_pushtype(L, PHYSICS_REVOLUTE_JOINT_ID, j); j->release(); @@ -235,6 +250,7 @@ int w_newPrismaticJoint(lua_State *L) float yA = (float)luaL_checknumber(L, 4); float xB, yB, ax, ay; bool collideConnected; + float referenceAngle = 0.0f; if (lua_gettop(L) >= 8) { xB = (float)luaL_checknumber(L, 5); @@ -242,6 +258,7 @@ int w_newPrismaticJoint(lua_State *L) ax = (float)luaL_checknumber(L, 7); ay = (float)luaL_checknumber(L, 8); collideConnected = luax_optboolean(L, 9, false); + referenceAngle = (float)luaL_optnumber(L, 10, referenceAngle); } else { @@ -253,7 +270,7 @@ int w_newPrismaticJoint(lua_State *L) } PrismaticJoint *j; luax_catchexcept(L, [&]() { - j = instance()->newPrismaticJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected); + j = instance()->newPrismaticJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected, referenceAngle); }); luax_pushtype(L, PHYSICS_PRISMATIC_JOINT_ID, j); j->release(); @@ -337,11 +354,13 @@ int w_newWeldJoint(lua_State *L) float yA = (float)luaL_checknumber(L, 4); float xB, yB; bool collideConnected; + float referenceAngle = 0.0f; if (lua_gettop(L) >= 6) { xB = (float)luaL_checknumber(L, 5); yB = (float)luaL_checknumber(L, 6); collideConnected = luax_optboolean(L, 7, false); + referenceAngle = (float)luaL_optnumber(L, 8, referenceAngle); } else { @@ -351,7 +370,7 @@ int w_newWeldJoint(lua_State *L) } WeldJoint *j; luax_catchexcept(L, [&]() { - j = instance()->newWeldJoint(body1, body2, xA, yA, xB, yB, collideConnected); + j = instance()->newWeldJoint(body1, body2, xA, yA, xB, yB, collideConnected, referenceAngle); }); luax_pushtype(L, PHYSICS_WELD_JOINT_ID, j); j->release(); diff --git a/jni/love/src/modules/physics/box2d/wrap_PrismaticJoint.cpp b/jni/love/src/modules/physics/box2d/wrap_PrismaticJoint.cpp index abd1895b..a8c07331 100644 --- a/jni/love/src/modules/physics/box2d/wrap_PrismaticJoint.cpp +++ b/jni/love/src/modules/physics/box2d/wrap_PrismaticJoint.cpp @@ -164,6 +164,20 @@ int w_PrismaticJoint_getLimits(lua_State *L) return t->getLimits(L); } +int w_PrismaticJoint_getAxis(lua_State *L) +{ + PrismaticJoint *t = luax_checkprismaticjoint(L, 1); + lua_remove(L, 1); + return t->getAxis(L); +} + +int w_PrismaticJoint_getReferenceAngle(lua_State *L) +{ + PrismaticJoint *t = luax_checkprismaticjoint(L, 1); + lua_pushnumber(L, t->getReferenceAngle()); + return 1; +} + static const luaL_Reg w_PrismaticJoint_functions[] = { { "getJointTranslation", w_PrismaticJoint_getJointTranslation }, @@ -183,6 +197,8 @@ static const luaL_Reg w_PrismaticJoint_functions[] = { "getLowerLimit", w_PrismaticJoint_getLowerLimit }, { "getUpperLimit", w_PrismaticJoint_getUpperLimit }, { "getLimits", w_PrismaticJoint_getLimits }, + { "getAxis", w_PrismaticJoint_getAxis }, + { "getReferenceAngle", w_PrismaticJoint_getReferenceAngle }, { 0, 0 } }; diff --git a/jni/love/src/modules/physics/box2d/wrap_RevoluteJoint.cpp b/jni/love/src/modules/physics/box2d/wrap_RevoluteJoint.cpp index 9716e994..10ef1058 100644 --- a/jni/love/src/modules/physics/box2d/wrap_RevoluteJoint.cpp +++ b/jni/love/src/modules/physics/box2d/wrap_RevoluteJoint.cpp @@ -164,6 +164,13 @@ int w_RevoluteJoint_getLimits(lua_State *L) return t->getLimits(L); } +int w_RevoluteJoint_getReferenceAngle(lua_State *L) +{ + RevoluteJoint *t = luax_checkrevolutejoint(L, 1); + lua_pushnumber(L, t->getReferenceAngle()); + return 1; +} + static const luaL_Reg w_RevoluteJoint_functions[] = { { "getJointAngle", w_RevoluteJoint_getJointAngle }, @@ -183,6 +190,7 @@ static const luaL_Reg w_RevoluteJoint_functions[] = { "getLowerLimit", w_RevoluteJoint_getLowerLimit }, { "getUpperLimit", w_RevoluteJoint_getUpperLimit }, { "getLimits", w_RevoluteJoint_getLimits }, + { "getReferenceAngle", w_RevoluteJoint_getReferenceAngle }, { 0, 0 } }; diff --git a/jni/love/src/modules/physics/box2d/wrap_WeldJoint.cpp b/jni/love/src/modules/physics/box2d/wrap_WeldJoint.cpp index 6b9ed8e7..92efc52a 100644 --- a/jni/love/src/modules/physics/box2d/wrap_WeldJoint.cpp +++ b/jni/love/src/modules/physics/box2d/wrap_WeldJoint.cpp @@ -65,12 +65,20 @@ int w_WeldJoint_getDampingRatio(lua_State *L) return 1; } +int w_WeldJoint_getReferenceAngle(lua_State *L) +{ + WeldJoint *t = luax_checkweldjoint(L, 1); + lua_pushnumber(L, t->getReferenceAngle()); + return 1; +} + static const luaL_Reg w_WeldJoint_functions[] = { { "setFrequency", w_WeldJoint_setFrequency }, { "getFrequency", w_WeldJoint_getFrequency }, { "setDampingRatio", w_WeldJoint_setDampingRatio }, { "getDampingRatio", w_WeldJoint_getDampingRatio }, + { "getReferenceAngle", w_WeldJoint_getReferenceAngle }, { 0, 0 } }; diff --git a/jni/love/src/modules/physics/box2d/wrap_WheelJoint.cpp b/jni/love/src/modules/physics/box2d/wrap_WheelJoint.cpp index 5ec454a7..4a6ee66b 100644 --- a/jni/love/src/modules/physics/box2d/wrap_WheelJoint.cpp +++ b/jni/love/src/modules/physics/box2d/wrap_WheelJoint.cpp @@ -132,6 +132,13 @@ int w_WheelJoint_getSpringDampingRatio(lua_State *L) return 1; } +int w_WheelJoint_getAxis(lua_State *L) +{ + WheelJoint *t = luax_checkwheeljoint(L, 1); + lua_remove(L, 1); + return t->getAxis(L); +} + static const luaL_Reg w_WheelJoint_functions[] = { { "getJointTranslation", w_WheelJoint_getJointTranslation }, @@ -147,6 +154,7 @@ static const luaL_Reg w_WheelJoint_functions[] = { "getSpringFrequency", w_WheelJoint_getSpringFrequency }, { "setSpringDampingRatio", w_WheelJoint_setSpringDampingRatio }, { "getSpringDampingRatio", w_WheelJoint_getSpringDampingRatio }, + { "getAxis", w_WheelJoint_getAxis }, { 0, 0 } }; diff --git a/jni/love/src/modules/sound/lullaby/Mpg123Decoder.cpp b/jni/love/src/modules/sound/lullaby/Mpg123Decoder.cpp index 96f5d2ef..af4d22e5 100644 --- a/jni/love/src/modules/sound/lullaby/Mpg123Decoder.cpp +++ b/jni/love/src/modules/sound/lullaby/Mpg123Decoder.cpp @@ -24,6 +24,8 @@ #include +#ifndef LOVE_NOMPG123 + namespace love { namespace sound @@ -286,3 +288,5 @@ double Mpg123Decoder::getDuration() } // lullaby } // sound } // love + +#endif // LOVE_NOMPG123 diff --git a/jni/love/src/modules/sound/lullaby/Mpg123Decoder.h b/jni/love/src/modules/sound/lullaby/Mpg123Decoder.h index 81fa1d24..edb3b139 100644 --- a/jni/love/src/modules/sound/lullaby/Mpg123Decoder.h +++ b/jni/love/src/modules/sound/lullaby/Mpg123Decoder.h @@ -25,6 +25,8 @@ #include "common/Data.h" #include "Decoder.h" +#ifndef LOVE_NOMPG123 + // libmpg123 #ifdef LOVE_APPLE_USE_FRAMEWORKS #include @@ -88,4 +90,6 @@ private: } // sound } // love +#endif // LOVE_NOMPG123 + #endif // LOVE_SOUND_LULLABY_LIBMPG123_DECODER_H diff --git a/jni/love/src/modules/sound/wrap_SoundData.lua b/jni/love/src/modules/sound/wrap_SoundData.lua index 803a9a2d..e7448239 100644 --- a/jni/love/src/modules/sound/wrap_SoundData.lua +++ b/jni/love/src/modules/sound/wrap_SoundData.lua @@ -35,6 +35,7 @@ local status, ffi = pcall(require, "ffi") if not status then return end local tonumber, assert, error = tonumber, assert, error +local floor = math.floor local float = ffi.typeof("float") local datatypes = {ffi.typeof("uint8_t *"), ffi.typeof("int16_t *")} @@ -77,6 +78,8 @@ local objectcache = setmetatable({}, { function SoundData:getSample(i) if type(i) ~= "number" then error("bad argument #1 to SoundData:getSample (expected number)", 2) end + i = floor(i) + local p = objectcache[self] if not (i >= 0 and i < p.size/p.bytedepth) then @@ -96,6 +99,8 @@ function SoundData:setSample(i, sample) if type(i) ~= "number" then error("bad argument #1 to SoundData:setSample (expected number)", 2) end if type(sample) ~= "number" then error("bad argument #2 to SoundData:setSample (expected number)", 2) end + i = floor(i) + local p = objectcache[self] if not (i >= 0 and i < p.size/p.bytedepth) then diff --git a/jni/love/src/modules/system/System.cpp b/jni/love/src/modules/system/System.cpp index 61e2ef74..5ad39118 100755 --- a/jni/love/src/modules/system/System.cpp +++ b/jni/love/src/modules/system/System.cpp @@ -26,20 +26,35 @@ #include #elif defined(LOVE_IOS) #include "common/ios.h" -#elif defined(LOVE_ANDROID) -#include "common/android.h" -#elif defined(LOVE_LINUX) -#include -//#include -//#include +#elif defined(LOVE_LINUX) || defined(LOVE_ANDROID) #include #include +#include #elif defined(LOVE_WINDOWS) #include "common/utf8.h" #include #include #pragma comment(lib, "shell32.lib") #endif +#if defined(LOVE_ANDROID) +#include "common/android.h" +#elif defined(LOVE_LINUX) +#include +#endif + +#if defined(LOVE_LINUX) +static void sigchld_handler(int sig) +{ + // Because waitpid can set errno, we need to save it. + auto old = errno; + + // Reap whilst there are children waiting to be reaped. + while (waitpid(-1, nullptr, WNOHANG) > 0) + ; + + errno = old; +} +#endif namespace love { @@ -50,12 +65,14 @@ System::System() { #if defined(LOVE_LINUX) // Enable automatic cleanup of zombie processes + // NOTE: We're using our own handler, instead of SA_NOCLDWAIT because the + // latter breaks wait, and thus os.execute. + // NOTE: This isn't perfect, due to multithreading our SIGCHLD can happen + // on a different thread than the one calling wait(), thus causing a race. struct sigaction act = {0}; sigemptyset(&act.sa_mask); - act.sa_handler = SIG_DFL; - act.sa_flags = SA_NOCLDWAIT; - - // Requires linux 2.6 or higher, so anything remotely modern + act.sa_handler = sigchld_handler; + act.sa_flags = SA_RESTART; sigaction(SIGCHLD, &act, nullptr); #endif } @@ -66,6 +83,8 @@ std::string System::getOS() const return "OS X"; #elif defined(LOVE_IOS) return "iOS"; +#elif defined(LOVE_WINDOWS_UWP) + return "UWP"; #elif defined(LOVE_WINDOWS) return "Windows"; #elif defined(LOVE_ANDROID) @@ -130,12 +149,24 @@ bool System::openURL(const std::string &url) const // Unicode-aware WinAPI functions don't accept UTF-8, so we need to convert. std::wstring wurl = to_widestr(url); - HINSTANCE result = ShellExecuteW(nullptr, - L"open", - wurl.c_str(), - nullptr, - nullptr, - SW_SHOW); + HINSTANCE result = 0; + +#if defined(LOVE_WINDOWS_UWP) + + Platform::String^ urlString = ref new Platform::String(wurl.c_str()); + auto uwpUri = ref new Windows::Foundation::Uri(urlString); + Windows::System::Launcher::LaunchUriAsync(uwpUri); + +#else + + result = ShellExecuteW(nullptr, + L"open", + wurl.c_str(), + nullptr, + nullptr, + SW_SHOW); + +#endif return (int) result > 32; diff --git a/jni/love/src/modules/thread/Channel.cpp b/jni/love/src/modules/thread/Channel.cpp index e86d018b..8d618017 100644 --- a/jni/love/src/modules/thread/Channel.cpp +++ b/jni/love/src/modules/thread/Channel.cpp @@ -58,12 +58,17 @@ Channel *Channel::getChannel(const std::string &name) if (!namedChannelMutex) namedChannelMutex = newMutex(); - Lock l(namedChannelMutex); - if (!namedChannels.count(name)) - namedChannels[name] = new Channel(name); - else - namedChannels[name]->retain(); + Lock lock(namedChannelMutex); + auto it = namedChannels.find(name); + + if (it != namedChannels.end()) + { + it->second->retain(); + return it->second; + } + + namedChannels[name] = new Channel(name); return namedChannels[name]; } @@ -72,8 +77,6 @@ Channel::Channel() , sent(0) , received(0) { - mutex = newMutex(); - cond = newConditional(); } Channel::Channel(const std::string &name) @@ -82,32 +85,20 @@ Channel::Channel(const std::string &name) , sent(0) , received(0) { - mutex = newMutex(); - cond = newConditional(); } Channel::~Channel() { - while (!queue.empty()) - { - queue.front()->release(); - queue.pop(); - } - - delete mutex; - delete cond; - if (named) + { + Lock l(namedChannelMutex); namedChannels.erase(name); + } } -unsigned long Channel::push(Variant *var) +unsigned long Channel::push(const Variant &var) { - if (!var) - return 0; - Lock l(mutex); - var->retain(); // Keep a reference to ourselves // if we're non-empty and named. @@ -120,11 +111,8 @@ unsigned long Channel::push(Variant *var) return ++sent; } -void Channel::supply(Variant *var) +void Channel::supply(const Variant &var) { - if (!var) - return; - Lock l(mutex); unsigned long id = push(var); @@ -132,13 +120,14 @@ void Channel::supply(Variant *var) cond->wait(mutex); } -Variant *Channel::pop() +bool Channel::pop(Variant *var) { Lock l(mutex); - if (queue.empty()) - return 0; - Variant *var = queue.front(); + if (queue.empty()) + return false; + + *var = queue.front(); queue.pop(); received++; @@ -149,28 +138,26 @@ Variant *Channel::pop() if (named && queue.empty()) release(); - return var; -} // NOTE: Returns a retained Variant - -Variant *Channel::demand() -{ - Variant *var; - Lock l(mutex); - while (!(var = pop())) - cond->wait(mutex); - - return var; + return true; } -Variant *Channel::peek() +void Channel::demand(Variant *var) { Lock l(mutex); - if (queue.empty()) - return 0; - Variant *var = queue.front(); - var->retain(); - return var; + while (!pop(var)) + cond->wait(mutex); +} + +bool Channel::peek(Variant *var) +{ + Lock l(mutex); + + if (queue.empty()) + return false; + + *var = queue.front(); + return true; } int Channel::getCount() @@ -188,10 +175,7 @@ void Channel::clear() return; while (!queue.empty()) - { - queue.front()->release(); queue.pop(); - } // Finish all the supply waits received = sent; @@ -213,22 +197,5 @@ void Channel::unlockMutex() mutex->unlock(); } -void Channel::retain() -{ - EmptyLock l; - if (named) - l.setLock(namedChannelMutex); - - Object::retain(); -} - -void Channel::release() -{ - EmptyLock l; - if (named) - l.setLock(namedChannelMutex); - - Object::release(); -} } // thread } // love diff --git a/jni/love/src/modules/thread/Channel.h b/jni/love/src/modules/thread/Channel.h index d034ef09..b257415a 100644 --- a/jni/love/src/modules/thread/Channel.h +++ b/jni/love/src/modules/thread/Channel.h @@ -37,8 +37,6 @@ namespace thread class Channel : public love::Object { // FOR WRAPPER USE ONLY -friend void retainVariant(Channel *, Variant *); -friend void releaseVariant(Channel *, Variant *); friend int w_Channel_performAtomic(lua_State *); public: @@ -48,26 +46,23 @@ public: static Channel *getChannel(const std::string &name); - unsigned long push(Variant *var); - void supply(Variant *var); // blocking push - Variant *pop(); - Variant *demand(); // blocking pop - Variant *peek(); + unsigned long push(const Variant &var); + void supply(const Variant &var); // blocking push + bool pop(Variant *var); + void demand(Variant *var); // blocking pop + bool peek(Variant *var); int getCount(); void clear(); - void retain(); - void release(); - private: Channel(const std::string &name); void lockMutex(); void unlockMutex(); - Mutex *mutex; - Conditional *cond; - std::queue queue; + MutexRef mutex; + ConditionalRef cond; + std::queue queue; bool named; std::string name; diff --git a/jni/love/src/modules/thread/LuaThread.cpp b/jni/love/src/modules/thread/LuaThread.cpp index c61594fd..d7150a31 100644 --- a/jni/love/src/modules/thread/LuaThread.cpp +++ b/jni/love/src/modules/thread/LuaThread.cpp @@ -33,23 +33,16 @@ namespace thread LuaThread::LuaThread(const std::string &name, love::Data *code) : code(code) , name(name) - , args(nullptr) - , nargs(0) { threadName = name; } LuaThread::~LuaThread() { - // No args should still exist at this point, - // but you never know. - for (int i = 0; i < nargs; ++i) - args[i]->release(); } void LuaThread::threadFunction() { - this->retain(); error.clear(); lua_State *L = luaL_newstate(); @@ -74,16 +67,12 @@ void LuaThread::threadFunction() error = luax_tostring(L, -1); else { - int pushedargs = nargs; - for (int i = 0; i < nargs; ++i) - { - args[i]->toLua(L); - args[i]->release(); - } - // Set both args and nargs to nil, prevents the deconstructor from - // accessing it again. - nargs = 0; - args = nullptr; + int pushedargs = (int) args.size(); + + for (int i = 0; i < pushedargs; i++) + args[i].toLua(L); + + args.clear(); if (lua_pcall(L, pushedargs, 0, 0) != 0) error = luax_tostring(L, -1); @@ -93,18 +82,11 @@ void LuaThread::threadFunction() if (!error.empty()) onError(); - - this->release(); } -bool LuaThread::start(Variant **args, int nargs) +bool LuaThread::start(const std::vector &args) { - for (int i = 0; i < this->nargs; ++i) - this->args[i]->release(); - this->args = args; - this->nargs = nargs; - return Threadable::start(); } @@ -126,18 +108,13 @@ void LuaThread::onError() p.type = THREAD_THREAD_ID; p.object = this; - std::vector> vargs = { - new Variant(THREAD_THREAD_ID, &p), - new Variant(error.c_str(), error.length()) + std::vector vargs = { + Variant(p.type, &p), + Variant(error.c_str(), error.length()) }; - event::Message *msg = new event::Message("threaderror", vargs); - - for (const StrongRef &v : vargs) - v->release(); - + StrongRef msg(new event::Message("threaderror", vargs), Acquire::NORETAIN); eventmodule->push(msg); - msg->release(); } } // thread diff --git a/jni/love/src/modules/thread/LuaThread.h b/jni/love/src/modules/thread/LuaThread.h index be8c1b84..169dce6f 100644 --- a/jni/love/src/modules/thread/LuaThread.h +++ b/jni/love/src/modules/thread/LuaThread.h @@ -23,6 +23,7 @@ // STL #include +#include // LOVE #include "common/Data.h" @@ -35,16 +36,16 @@ namespace love namespace thread { -class LuaThread : public love::Object, public Threadable +class LuaThread : public Threadable { public: LuaThread(const std::string &name, love::Data *code); - ~LuaThread(); + virtual ~LuaThread(); void threadFunction(); const std::string &getError() const; - bool start(Variant **args, int nargs); + bool start(const std::vector &args); private: @@ -54,8 +55,7 @@ private: std::string name; std::string error; - Variant **args; - int nargs; + std::vector args; }; // LuaThread diff --git a/jni/love/src/modules/thread/ThreadModule.cpp b/jni/love/src/modules/thread/ThreadModule.cpp index c3b30277..32a6c30e 100644 --- a/jni/love/src/modules/thread/ThreadModule.cpp +++ b/jni/love/src/modules/thread/ThreadModule.cpp @@ -27,8 +27,7 @@ namespace thread LuaThread *ThreadModule::newThread(const std::string &name, love::Data *data) { - LuaThread *lt = new LuaThread(name, data); - return lt; + return new LuaThread(name, data); } Channel *ThreadModule::newChannel() diff --git a/jni/love/src/modules/thread/sdl/Thread.cpp b/jni/love/src/modules/thread/sdl/Thread.cpp index 74b34998..f775f748 100644 --- a/jni/love/src/modules/thread/sdl/Thread.cpp +++ b/jni/love/src/modules/thread/sdl/Thread.cpp @@ -29,19 +29,15 @@ namespace sdl Thread::Thread(Threadable *t) : t(t) , running(false) - , thread(0) + , thread(nullptr) { } Thread::~Thread() { - if (!running) // Clean up handle - wait(); - /* - if (running) - wait(); - FIXME: Needed for proper thread cleanup - */ + // Clean up handle + if (thread) + SDL_DetachThread(thread); } bool Thread::start() @@ -50,9 +46,9 @@ bool Thread::start() if (running) return false; if (thread) // Clean old handle up - SDL_WaitThread(thread, 0); + SDL_WaitThread(thread, nullptr); thread = SDL_CreateThread(thread_runner, t->getThreadName(), this); - running = (thread != 0); + running = (thread != nullptr); return running; } @@ -63,10 +59,10 @@ void Thread::wait() if (!thread) return; } - SDL_WaitThread(thread, 0); + SDL_WaitThread(thread, nullptr); Lock l(mutex); running = false; - thread = 0; + thread = nullptr; } bool Thread::isRunning() @@ -78,9 +74,16 @@ bool Thread::isRunning() int Thread::thread_runner(void *data) { Thread *self = (Thread *) data; // some compilers don't like 'this' + self->t->retain(); + self->t->threadFunction(); - Lock l(self->mutex); - self->running = false; + + { + Lock l(self->mutex); + self->running = false; + } + + self->t->release(); return 0; } } // sdl diff --git a/jni/love/src/modules/thread/threads.cpp b/jni/love/src/modules/thread/threads.cpp index cf20e534..ad5f314f 100644 --- a/jni/love/src/modules/thread/threads.cpp +++ b/jni/love/src/modules/thread/threads.cpp @@ -43,7 +43,7 @@ Lock::~Lock() } EmptyLock::EmptyLock() - : mutex(0) + : mutex(nullptr) { } @@ -119,5 +119,30 @@ MutexRef::operator Mutex*() const return mutex; } +Mutex *MutexRef::operator->() const +{ + return mutex; +} + +ConditionalRef::ConditionalRef() + : conditional(newConditional()) +{ +} + +ConditionalRef::~ConditionalRef() +{ + delete conditional; +} + +ConditionalRef::operator Conditional*() const +{ + return conditional; +} + +Conditional *ConditionalRef::operator->() const +{ + return conditional; +} + } // thread } // love diff --git a/jni/love/src/modules/thread/threads.h b/jni/love/src/modules/thread/threads.h index ff7b01e4..0039f708 100644 --- a/jni/love/src/modules/thread/threads.h +++ b/jni/love/src/modules/thread/threads.h @@ -76,7 +76,7 @@ private: Mutex *mutex; }; -class Threadable +class Threadable : public love::Object { public: Threadable(); @@ -103,11 +103,25 @@ public: ~MutexRef(); operator Mutex*() const; + Mutex *operator->() const; private: Mutex *mutex; }; +class ConditionalRef +{ +public: + ConditionalRef(); + ~ConditionalRef(); + + operator Conditional*() const; + Conditional *operator->() const; + +private: + Conditional *conditional; +}; + Mutex *newMutex(); Conditional *newConditional(); Thread *newThread(Threadable *t); diff --git a/jni/love/src/modules/thread/wrap_Channel.cpp b/jni/love/src/modules/thread/wrap_Channel.cpp index 0885e319..778786de 100644 --- a/jni/love/src/modules/thread/wrap_Channel.cpp +++ b/jni/love/src/modules/thread/wrap_Channel.cpp @@ -25,20 +25,6 @@ namespace love namespace thread { -void retainVariant(Channel *c, Variant *v) -{ - c->lockMutex(); - v->retain(); - c->unlockMutex(); -} - -void releaseVariant(Channel *c, Variant *v) -{ - c->lockMutex(); - v->release(); - c->unlockMutex(); -} - Channel *luax_checkchannel(lua_State *L, int idx) { return luax_checktype(L, idx, THREAD_CHANNEL_ID); @@ -47,34 +33,29 @@ Channel *luax_checkchannel(lua_State *L, int idx) int w_Channel_push(lua_State *L) { Channel *c = luax_checkchannel(L, 1); - Variant *var = lua_isnoneornil(L, 2) ? 0 : Variant::fromLua(L, 2); - if (!var) + Variant var = Variant::fromLua(L, 2); + if (var.getType() == Variant::UNKNOWN) return luaL_argerror(L, 2, "boolean, number, string, love type, or flat table expected"); c->push(var); - releaseVariant(c, var); return 0; } int w_Channel_supply(lua_State *L) { Channel *c = luax_checkchannel(L, 1); - Variant *var = lua_isnoneornil(L, 2) ? 0 : Variant::fromLua(L, 2); - if (!var) + Variant var = Variant::fromLua(L, 2); + if (var.getType() == Variant::UNKNOWN) return luaL_argerror(L, 2, "boolean, number, string, love type, or flat table expected"); c->supply(var); - releaseVariant(c, var); return 0; } int w_Channel_pop(lua_State *L) { Channel *c = luax_checkchannel(L, 1); - Variant *var = c->pop(); - if (var) - { - var->toLua(L); - releaseVariant(c, var); - } + Variant var; + if (c->pop(&var)) + var.toLua(L); else lua_pushnil(L); return 1; @@ -83,21 +64,18 @@ int w_Channel_pop(lua_State *L) int w_Channel_demand(lua_State *L) { Channel *c = luax_checkchannel(L, 1); - Variant *var = c->demand(); - var->toLua(L); - releaseVariant(c, var); + Variant var; + c->demand(&var); + var.toLua(L); return 1; } int w_Channel_peek(lua_State *L) { Channel *c = luax_checkchannel(L, 1); - Variant *var = c->peek(); - if (var) - { - var->toLua(L); - releaseVariant(c, var); - } + Variant var; + if (c->peek(&var)) + var.toLua(L); else lua_pushnil(L); return 1; diff --git a/jni/love/src/modules/thread/wrap_LuaThread.cpp b/jni/love/src/modules/thread/wrap_LuaThread.cpp index ee2e4d6a..fefe06f1 100644 --- a/jni/love/src/modules/thread/wrap_LuaThread.cpp +++ b/jni/love/src/modules/thread/wrap_LuaThread.cpp @@ -33,26 +33,21 @@ LuaThread *luax_checkthread(lua_State *L, int idx) int w_Thread_start(lua_State *L) { LuaThread *t = luax_checkthread(L, 1); + std::vector args; int nargs = lua_gettop(L) - 1; - Variant **args = 0; - if (nargs > 0) + for (int i = 0; i < nargs; ++i) { - args = new Variant*[nargs]; - for (int i = 0; i < nargs; ++i) + args.push_back(Variant::fromLua(L, i+2)); + + if (args.back().getType() == Variant::UNKNOWN) { - args[i] = Variant::fromLua(L, i+2); - if (!args[i]) - { - for (int j = i; j >= 0; j--) - delete args[j]; - delete[] args; - return luaL_argerror(L, i+2, "boolean, number, string, love type, or flat table expected"); - } + args.clear(); + return luaL_argerror(L, i+2, "boolean, number, string, love type, or flat table expected"); } } - luax_pushboolean(L, t->start(args, nargs)); + luax_pushboolean(L, t->start(args)); return 1; } diff --git a/jni/love/src/modules/timer/Timer.cpp b/jni/love/src/modules/timer/Timer.cpp index 4cd4aaea..ce5cc730 100644 --- a/jni/love/src/modules/timer/Timer.cpp +++ b/jni/love/src/modules/timer/Timer.cpp @@ -21,6 +21,7 @@ // LOVE #include "common/config.h" #include "common/int.h" +#include "common/delay.h" #include "Timer.h" #if defined(LOVE_WINDOWS) @@ -85,6 +86,12 @@ void Timer::step() } } +void Timer::sleep(double seconds) const +{ + if (seconds > 0) + love::sleep((unsigned int)(seconds*1000)); +} + double Timer::getDelta() const { return dt; @@ -114,7 +121,7 @@ double Timer::getTimerPeriod() return 0; } -double Timer::getTimeSinceEpoch() +double Timer::getTime() { // The timer period (reciprocal of the frequency.) static const double timerPeriod = getTimerPeriod(); @@ -145,10 +152,5 @@ double Timer::getTimeSinceEpoch() #endif } -double Timer::getTime() const -{ - return getTimeSinceEpoch(); -} - } // timer } // love diff --git a/jni/love/src/modules/timer/Timer.h b/jni/love/src/modules/timer/Timer.h index 3d9eda13..760b9d8c 100644 --- a/jni/love/src/modules/timer/Timer.h +++ b/jni/love/src/modules/timer/Timer.h @@ -50,7 +50,7 @@ public: * usually 1ms. * @param seconds The number of seconds to sleep for. **/ - virtual void sleep(double seconds) const = 0; + virtual void sleep(double seconds) const; /** * Gets the time between the last two frames, assuming step is called @@ -76,8 +76,7 @@ public: * and increases monotonically. * @return The time (in seconds) **/ - virtual double getTime() const; - static double getTimeSinceEpoch(); + static double getTime(); private: diff --git a/jni/love/src/modules/timer/sdl/Timer.cpp b/jni/love/src/modules/timer/sdl/Timer.cpp index fb433fc8..7a6f9ff3 100644 --- a/jni/love/src/modules/timer/sdl/Timer.cpp +++ b/jni/love/src/modules/timer/sdl/Timer.cpp @@ -20,10 +20,6 @@ // LOVE #include "Timer.h" -#include "common/delay.h" - -// SDL -#include namespace love { @@ -34,15 +30,12 @@ namespace sdl Timer::Timer() { - // Init the SDL timer system (needed for SDL_Delay.) - if (SDL_InitSubSystem(SDL_INIT_TIMER) < 0) - throw love::Exception("Could not initialize SDL timer subsystem (%s)", SDL_GetError()); + // We don't need to initialize the SDL timer subsystem for SDL_Delay to + // function - and doing so causes SDL to create a worker thread. } Timer::~Timer() { - // Quit SDL timer. - SDL_QuitSubSystem(SDL_INIT_TIMER); } const char *Timer::getName() const @@ -50,12 +43,6 @@ const char *Timer::getName() const return "love.timer.sdl"; } -void Timer::sleep(double seconds) const -{ - if (seconds > 0) - delay((unsigned int)(seconds*1000)); -} - } // sdl } // timer } // love diff --git a/jni/love/src/modules/timer/sdl/Timer.h b/jni/love/src/modules/timer/sdl/Timer.h index 95571d7c..cd5e2ea1 100644 --- a/jni/love/src/modules/timer/sdl/Timer.h +++ b/jni/love/src/modules/timer/sdl/Timer.h @@ -37,11 +37,8 @@ public: Timer(); virtual ~Timer(); - const char *getName() const override; - void sleep(double seconds) const override; - }; // Timer } // sdl diff --git a/jni/love/src/modules/video/theora/Video.cpp b/jni/love/src/modules/video/theora/Video.cpp index 9e1188b6..2daa6e95 100644 --- a/jni/love/src/modules/video/theora/Video.cpp +++ b/jni/love/src/modules/video/theora/Video.cpp @@ -71,6 +71,7 @@ void Worker::addStream(VideoStream *stream) { love::thread::Lock l(mutex); streams.push_back(stream); + cond->broadcast(); } void Worker::stop() @@ -78,6 +79,7 @@ void Worker::stop() { love::thread::Lock l(mutex); stopping = true; + cond->broadcast(); } owner->wait(); @@ -85,35 +87,39 @@ void Worker::stop() void Worker::threadFunction() { - double lastFrame = love::timer::Timer::getTimeSinceEpoch(); + double lastFrame = love::timer::Timer::getTime(); + while (true) { - double curFrame = love::timer::Timer::getTimeSinceEpoch(); + love::sleep(2); + + love::thread::Lock l(mutex); + + while (!stopping && streams.empty()) + { + cond->wait(mutex); + lastFrame = love::timer::Timer::getTime(); + } + + if (stopping) + return; + + double curFrame = love::timer::Timer::getTime(); double dt = curFrame-lastFrame; lastFrame = curFrame; + for (auto it = streams.begin(); it != streams.end(); ++it) { - love::thread::Lock l(mutex); - - if (stopping) - return; - - for (auto it = streams.begin(); it != streams.end(); ++it) + VideoStream *stream = *it; + if (stream->getReferenceCount() == 1) { - VideoStream *stream = *it; - if (stream->getReferenceCount() == 1) - { - // We're the only ones left - streams.erase(it); - break; - } - - stream->threadedFillBackBuffer(dt); + // We're the only ones left + streams.erase(it); + break; } - } - // sleep - love::delay(2); + stream->threadedFillBackBuffer(dt); + } } } diff --git a/jni/love/src/modules/video/theora/Video.h b/jni/love/src/modules/video/theora/Video.h index 741dc058..05ed0684 100644 --- a/jni/love/src/modules/video/theora/Video.h +++ b/jni/love/src/modules/video/theora/Video.h @@ -43,7 +43,7 @@ class Video : public love::video::Video { public: Video(); - ~Video(); + virtual ~Video(); // Implements Module virtual const char *getName() const; @@ -58,7 +58,7 @@ class Worker : public love::thread::Threadable { public: Worker(); - ~Worker(); + virtual ~Worker(); // Implements Threadable void threadFunction(); @@ -68,10 +68,13 @@ public: void stop(); private: - std::vector> streams; - love::thread::MutexRef mutex; - volatile bool stopping; + std::vector> streams; + + love::thread::MutexRef mutex; + love::thread::ConditionalRef cond; + + bool stopping; }; // Worker } // theora diff --git a/jni/love/src/modules/video/theora/VideoStream.cpp b/jni/love/src/modules/video/theora/VideoStream.cpp index 0b6e91e3..4d3d3354 100644 --- a/jni/love/src/modules/video/theora/VideoStream.cpp +++ b/jni/love/src/modules/video/theora/VideoStream.cpp @@ -64,8 +64,7 @@ VideoStream::VideoStream(love::filesystem::File *file) throw ex; } - frameSync = new DeltaSync(); - frameSync->release(); + frameSync.set(new DeltaSync(), Acquire::NORETAIN); } VideoStream::~VideoStream() @@ -152,12 +151,12 @@ bool VideoStream::readPacket(bool mustSucceed) while (ogg_stream_packetout(&stream, &packet) != 1) { - // We need to read another page, but there is none, we're at the end - if (ogg_page_eos(&page) && !mustSucceed) - return eos = true; - do { + // We need to read another page, but there is none, we're at the end + if (ogg_page_eos(&page) && !mustSucceed) + return eos = true; + readPage(); } while (ogg_page_serialno(&page) != videoSerial); diff --git a/jni/love/src/modules/window/Window.h b/jni/love/src/modules/window/Window.h index 54e5b924..307adadc 100644 --- a/jni/love/src/modules/window/Window.h +++ b/jni/love/src/modules/window/Window.h @@ -143,6 +143,8 @@ public: virtual void minimize() = 0; virtual void maximize() = 0; + virtual bool isMaximized() const = 0; + // default no-op implementation virtual void swapBuffers(); @@ -151,9 +153,6 @@ public: virtual bool isVisible() const = 0; - virtual void setMouseVisible(bool visible) = 0; - virtual bool getMouseVisible() const = 0; - virtual void setMouseGrab(bool grab) = 0; virtual bool isMouseGrabbed() const = 0; diff --git a/jni/love/src/modules/window/sdl/Window.cpp b/jni/love/src/modules/window/sdl/Window.cpp index 2b66608e..d3d72787 100644 --- a/jni/love/src/modules/window/sdl/Window.cpp +++ b/jni/love/src/modules/window/sdl/Window.cpp @@ -229,7 +229,14 @@ bool Window::createWindowAndContext(int x, int y, int w, int h, Uint32 windowfla }; // OpenGL ES 3+ contexts are only properly supported in SDL 2.0.4+. - if (hasSDL203orEarlier) + bool removeES3 = hasSDL203orEarlier; + + // While UWP SDL is above 2.0.4, it still doesn't support OpenGL ES 3+ +#ifdef LOVE_WINDOWS_UWP + removeES3 = true; +#endif + + if (removeES3) { auto it = attribslist.begin(); while (it != attribslist.end()) @@ -478,14 +485,14 @@ bool Window::setWindow(int width, int height, WindowSettings *settings) SDL_GL_SetSwapInterval(f.vsync ? 1 : 0); - updateSettings(f); + updateSettings(f, false); auto gfx = Module::getInstance(Module::M_GRAPHICS); if (gfx != nullptr) gfx->setMode(pixelWidth, pixelHeight); #ifdef LOVE_ANDROID - love::android::setImmersive(f.fullscreen); + love::android::setImmersive(f.fullscreen); #endif return true; @@ -508,7 +515,7 @@ bool Window::onSizeChanged(int width, int height) return true; } -void Window::updateSettings(const WindowSettings &newsettings) +void Window::updateSettings(const WindowSettings &newsettings, bool updateGraphicsViewport) { Uint32 wflags = SDL_GetWindowFlags(window); @@ -568,13 +575,21 @@ void Window::updateSettings(const WindowSettings &newsettings) // May be 0 if the refresh rate can't be determined. settings.refreshrate = (double) dmode.refresh_rate; + + if (updateGraphicsViewport) + { + // Update the viewport size now instead of waiting for event polling. + auto gfx = Module::getInstance(Module::M_GRAPHICS); + if (gfx != nullptr) + gfx->setViewportSize(pixelWidth, pixelHeight); + } } void Window::getWindow(int &width, int &height, WindowSettings &newsettings) { // The window might have been modified (moved, resized, etc.) by the user. if (window) - updateSettings(settings); + updateSettings(settings, true); width = windowWidth; height = windowHeight; @@ -641,17 +656,12 @@ bool Window::setFullscreen(bool fullscreen, Window::FullscreenType fstype) if (SDL_SetWindowFullscreen(window, sdlflags) == 0) { SDL_GL_MakeCurrent(window, context); - updateSettings(newsettings); + updateSettings(newsettings, true); // Apparently this gets un-set when we exit fullscreen (at least in OS X). if (!fullscreen) SDL_SetWindowMinimumSize(window, settings.minwidth, settings.minheight); - // Update the viewport size now instead of waiting for event polling. - auto gfx = Module::getInstance(Module::M_GRAPHICS); - if (gfx != nullptr) - gfx->setViewportSize(pixelWidth, pixelHeight); - return true; } @@ -850,7 +860,15 @@ void Window::minimize() void Window::maximize() { if (window != nullptr) + { SDL_MaximizeWindow(window); + updateSettings(settings, true); + } +} + +bool Window::isMaximized() const +{ + return window != nullptr && (SDL_GetWindowFlags(window) & SDL_WINDOW_MAXIMIZED); } void Window::swapBuffers() @@ -873,16 +891,6 @@ bool Window::isVisible() const return window && (SDL_GetWindowFlags(window) & SDL_WINDOW_SHOWN) != 0; } -void Window::setMouseVisible(bool visible) -{ - SDL_ShowCursor(visible ? SDL_ENABLE : SDL_DISABLE); -} - -bool Window::getMouseVisible() const -{ - return (SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE); -} - void Window::setMouseGrab(bool grab) { mouseGrabbed = grab; @@ -1019,7 +1027,7 @@ int Window::showMessageBox(const MessageBoxData &data) void Window::requestAttention(bool continuous) { -#if defined(LOVE_WINDOWS) +#if defined(LOVE_WINDOWS) && !defined(LOVE_WINDOWS_UWP) if (hasFocus()) return; diff --git a/jni/love/src/modules/window/sdl/Window.h b/jni/love/src/modules/window/sdl/Window.h index b459a217..f920f853 100644 --- a/jni/love/src/modules/window/sdl/Window.h +++ b/jni/love/src/modules/window/sdl/Window.h @@ -76,6 +76,8 @@ public: void minimize(); void maximize(); + bool isMaximized() const; + void swapBuffers(); bool hasFocus() const; @@ -83,9 +85,6 @@ public: bool isVisible() const; - void setMouseVisible(bool visible); - bool getMouseVisible() const; - void setMouseGrab(bool grab); bool isMouseGrabbed() const; @@ -125,7 +124,7 @@ private: bool createWindowAndContext(int x, int y, int w, int h, Uint32 windowflags, int msaa); // Update the saved window settings based on the window's actual state. - void updateSettings(const WindowSettings &newsettings); + void updateSettings(const WindowSettings &newsettings, bool updateGraphicsViewport); SDL_MessageBoxFlags convertMessageBoxType(MessageBoxType type) const; diff --git a/jni/love/src/modules/window/wrap_Window.cpp b/jni/love/src/modules/window/wrap_Window.cpp index c7a7a149..48ae7af3 100644 --- a/jni/love/src/modules/window/wrap_Window.cpp +++ b/jni/love/src/modules/window/wrap_Window.cpp @@ -432,6 +432,12 @@ int w_maximize(lua_State *) return 0; } +int w_isMaximized(lua_State *L) +{ + luax_pushboolean(L, instance()->isMaximized()); + return 0; +} + int w_showMessageBox(lua_State *L) { Window::MessageBoxData data = {}; @@ -533,6 +539,7 @@ static const luaL_Reg functions[] = { "fromPixels", w_fromPixels }, { "minimize", w_minimize }, { "maximize", w_maximize }, + { "isMaximized", w_isMaximized }, { "showMessageBox", w_showMessageBox }, { "requestAttention", w_requestAttention }, { 0, 0 } diff --git a/jni/love/src/scripts/auto.lua b/jni/love/src/scripts/auto.lua index 351ced94..d4fb77be 100644 --- a/jni/love/src/scripts/auto.lua +++ b/jni/love/src/scripts/auto.lua @@ -108,8 +108,14 @@ end for i, v in ipairs(arg) do --run the auto function for every argument --but do it with pcall, to catch errors - v = v:gsub("%.lua$", ""):gsub("^(.+)/", "") -- normalize input - local ok, err = pcall(auto, v) + local ok, err = true + v = v:gsub("^scripts/", "") + if v:match("/") then + ok, err = false, "not in scripts directory" + else + v = v:gsub("%.lua$", "") -- normalize input + ok, err = pcall(auto, v) + end if not ok then --inform people we've failed print(v .. ": " .. err) diff --git a/jni/love/src/scripts/boot.lua b/jni/love/src/scripts/boot.lua index 45baa5b4..552827e1 100644 --- a/jni/love/src/scripts/boot.lua +++ b/jni/love/src/scripts/boot.lua @@ -239,8 +239,9 @@ function love.createhandlers() if love.directorydropped then return love.directorydropped(dir) end end, lowmemory = function () + if love.lowmemory then love.lowmemory() end + collectgarbage() collectgarbage() - if love.lowmemory then return love.lowmemory() end end, }, { __index = function(self, name) @@ -678,5 +679,5 @@ return function() local result, retval = xpcall(love.run, deferErrhand) if not result then return 1 end - return tonumber(retval) or 0 + return retval == nil and 0 or retval end diff --git a/jni/love/src/scripts/boot.lua.h b/jni/love/src/scripts/boot.lua.h index 10527331..90d13adf 100644 --- a/jni/love/src/scripts/boot.lua.h +++ b/jni/love/src/scripts/boot.lua.h @@ -455,11 +455,13 @@ const unsigned char boot_lua[] = 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x77, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x0a, + 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6c, 0x6f, 0x77, 0x6d, 0x65, 0x6d, 0x6f, + 0x72, 0x79, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6c, 0x6f, 0x77, 0x6d, 0x65, + 0x6d, 0x6f, 0x72, 0x79, 0x28, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, + 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x28, + 0x29, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x28, 0x29, 0x0a, - 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6c, 0x6f, 0x77, 0x6d, 0x65, 0x6d, 0x6f, - 0x72, 0x79, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, - 0x65, 0x2e, 0x6c, 0x6f, 0x77, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x28, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x7d, 0x2c, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x5f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, @@ -1232,8 +1234,9 @@ const unsigned char boot_lua[] = 0x72, 0x75, 0x6e, 0x2c, 0x20, 0x64, 0x65, 0x66, 0x65, 0x72, 0x45, 0x72, 0x72, 0x68, 0x61, 0x6e, 0x64, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x20, 0x65, 0x6e, 0x64, 0x0a, - 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x6f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x28, 0x72, - 0x65, 0x74, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x0a, + 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x3d, 0x20, + 0x6e, 0x69, 0x6c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x30, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x76, 0x61, + 0x6c, 0x0a, 0x65, 0x6e, 0x64, 0x0a, }; // [boot.lua] } // love